From 9fb0c318fb3f5f5040b643949fb63ebe636b313e Mon Sep 17 00:00:00 2001 From: Daniel Widgren Date: Thu, 28 May 2026 06:44:05 +0200 Subject: [PATCH] feat: feed repo triage context to every agent Prepend a shared repository-context preamble to every triage run so the agents decide with project-specific rules and richer signal instead of generic hard-coded prompts. - triagebot_config: read a triage-policy file at startup into persistent_term (bundled priv/TRIAGE.md, overridable via TRIAGEBOT_POLICY_PATH); triage_policy/0 + refresh_triage_policy/0. - triagebot_context: builds the run input (policy + label taxonomy + the issue enriched with author_association, reactions, comments, milestone, assignees from the raw GitHub payload). The label taxonomy now reaches every agent, not just the label_proposer. - slim triagebot_label_proposer to read labels from the shared context; nudge classifier + scoper to follow the policy and contributor signal. - priv/TRIAGE.md: starter policy tuned for the gakudan repo. --- README.md | 26 +- doc/.build | 25 + doc/404.html | 141 +++++ doc/api-reference.html | 262 ++++++++ doc/dist/html-HBZYRXZS.js | 210 +++++++ doc/dist/html-erlang-7YNYEB7F.css | 6 + doc/dist/lato-latin-400-normal-W7754I4D.woff2 | Bin 0 -> 23580 bytes doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 | Bin 0 -> 23040 bytes .../lato-latin-ext-400-normal-N27NCBWW.woff2 | Bin 0 -> 5472 bytes .../lato-latin-ext-700-normal-Q2L5DVMW.woff2 | Bin 0 -> 5368 bytes doc/dist/remixicon-QPNJX265.woff2 | Bin 0 -> 2096 bytes doc/dist/search_data-4AA356A9.js | 1 + doc/dist/sidebar_items-463C534A.js | 1 + doc/index.html | 10 + doc/search.html | 139 +++++ doc/triagebot.epub | Bin 0 -> 23293 bytes doc/triagebot_classifier.html | 281 +++++++++ doc/triagebot_config.html | 560 ++++++++++++++++++ doc/triagebot_context.html | 304 ++++++++++ doc/triagebot_dashboard_auth.html | 210 +++++++ doc/triagebot_dup_detector.html | 281 +++++++++ doc/triagebot_label_proposer.html | 282 +++++++++ doc/triagebot_repo_context_tool.html | 234 ++++++++ doc/triagebot_runner.html | 246 ++++++++ doc/triagebot_scoper.html | 281 +++++++++ doc/triagebot_search_tool.html | 232 ++++++++ doc/triagebot_summariser.html | 281 +++++++++ doc/triagebot_webhook_controller.html | 207 +++++++ priv/TRIAGE.md | 69 +++ src/agents/triagebot_classifier.erl | 6 +- src/agents/triagebot_label_proposer.erl | 75 +-- src/agents/triagebot_scoper.erl | 5 +- src/triagebot_config.erl | 67 +++ src/triagebot_context.erl | 162 +++++ src/triagebot_runner.erl | 28 +- test/triagebot_agents_SUITE.erl | 27 - test/triagebot_context_SUITE.erl | 132 +++++ 37 files changed, 4679 insertions(+), 112 deletions(-) create mode 100644 doc/.build create mode 100644 doc/404.html create mode 100644 doc/api-reference.html create mode 100644 doc/dist/html-HBZYRXZS.js create mode 100644 doc/dist/html-erlang-7YNYEB7F.css create mode 100644 doc/dist/lato-latin-400-normal-W7754I4D.woff2 create mode 100644 doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 create mode 100644 doc/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 create mode 100644 doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 create mode 100644 doc/dist/remixicon-QPNJX265.woff2 create mode 100644 doc/dist/search_data-4AA356A9.js create mode 100644 doc/dist/sidebar_items-463C534A.js create mode 100644 doc/index.html create mode 100644 doc/search.html create mode 100644 doc/triagebot.epub create mode 100644 doc/triagebot_classifier.html create mode 100644 doc/triagebot_config.html create mode 100644 doc/triagebot_context.html create mode 100644 doc/triagebot_dashboard_auth.html create mode 100644 doc/triagebot_dup_detector.html create mode 100644 doc/triagebot_label_proposer.html create mode 100644 doc/triagebot_repo_context_tool.html create mode 100644 doc/triagebot_runner.html create mode 100644 doc/triagebot_scoper.html create mode 100644 doc/triagebot_search_tool.html create mode 100644 doc/triagebot_summariser.html create mode 100644 doc/triagebot_webhook_controller.html create mode 100644 priv/TRIAGE.md create mode 100644 src/triagebot_context.erl create mode 100644 test/triagebot_context_SUITE.erl diff --git a/README.md b/README.md index e295979..2ce5c64 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,26 @@ Optional: | `TRIAGEBOT_PORT` | `8080` | Nova HTTP listener | | `TRIAGEBOT_METRICS_PORT` | `9568` | Prometheus /metrics; set to `""` to disable | | `TRIAGEBOT_AGENT_MODEL` | per-backend | Override agent model | +| `TRIAGEBOT_POLICY_PATH` | `priv/TRIAGE.md` | Filesystem path to the triage-policy file fed to every agent | + +### Triage policy + +Every triage run is fed a shared **repository triage context** before the +issue: the contents of a triage-policy file plus the repo's label +taxonomy. The policy teaches the agents how *this* project triages - +what the categories mean, the severity rubric, which labels to use, +escalation rules - and agents follow it where it conflicts with their +built-in defaults. + +The policy ships in the release at `priv/TRIAGE.md`; edit that file and +redeploy, or point `TRIAGEBOT_POLICY_PATH` at another file. A missing +file is fine - agents fall back to their built-in defaults. To reload +without a redeploy, call `triagebot_config:refresh_triage_policy()` from +a remote shell. + +Each issue also carries its high-signal GitHub fields into the context: +contributor association (e.g. `FIRST_TIME_CONTRIBUTOR`), reaction count, +comment count, milestone, and assignees. ### 3. Local development with PAT @@ -141,8 +161,10 @@ That's it. - Spawn-and-forget async (BEAM process per webhook) so the response returns 202 immediately while triage runs in the background - GitHub App or PAT auth (via `gakudan_tickets_github` v0.1.2+) -- Repo-context awareness: classifier + scoper can read repo files; - label_proposer picks from the repo's actual label taxonomy +- Repo-context awareness: a bundled triage policy (`priv/TRIAGE.md`) + + the repo's actual label taxonomy + each issue's contributor/reaction/ + milestone signals are fed to every agent; classifier + scoper can also + read repo files on demand - Prometheus `/metrics` via `gakudan_metrics` - 20-case CT suite covering the runner helpers, agent callbacks, tool shapes, and dynamic prompt building diff --git a/doc/.build b/doc/.build new file mode 100644 index 0000000..7ef757f --- /dev/null +++ b/doc/.build @@ -0,0 +1,25 @@ +404.html +api-reference.html +dist/html-HBZYRXZS.js +dist/html-erlang-7YNYEB7F.css +dist/lato-latin-400-normal-W7754I4D.woff2 +dist/lato-latin-700-normal-2XVSBPG4.woff2 +dist/lato-latin-ext-400-normal-N27NCBWW.woff2 +dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 +dist/remixicon-QPNJX265.woff2 +dist/search_data-4AA356A9.js +dist/sidebar_items-463C534A.js +index.html +search.html +triagebot_classifier.html +triagebot_config.html +triagebot_context.html +triagebot_dashboard_auth.html +triagebot_dup_detector.html +triagebot_label_proposer.html +triagebot_repo_context_tool.html +triagebot_runner.html +triagebot_scoper.html +triagebot_search_tool.html +triagebot_summariser.html +triagebot_webhook_controller.html diff --git a/doc/404.html b/doc/404.html new file mode 100644 index 0000000..6a02443 --- /dev/null +++ b/doc/404.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + 404 — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +

+ Page not found +

+ +

Sorry, but the page you were trying to get to, does not exist. You +may want to try searching this site using the sidebar + + or using our API Reference page + +to find what you were looking for.

+ +
+
+
+ + + diff --git a/doc/api-reference.html b/doc/api-reference.html new file mode 100644 index 0000000..2286848 --- /dev/null +++ b/doc/api-reference.html @@ -0,0 +1,262 @@ + + + + + + + + + + + API Reference — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

API Reference triagebot v#0.1.13

+ +
+ +
+

Modules

+
+
+ + +

First agent in the triage pipeline. Reads the issue body and emits a +classification line.

+ +
+
+ + +

Runtime configuration for triagebot, sourced from env vars.

+ +
+
+ + +

Builds the run input sent to the gakudan triage pipeline.

+ +
+
+ + +

HTTP Basic auth gate for the triagebot live dashboard.

+ +
+
+ + +

Third agent. Uses the search_issues tool to look for likely duplicates +of the current issue.

+ +
+
+ + +

Fourth agent. Reads the issue + all prior triage turns and proposes a +set of labels, drawn from the repo's label taxonomy in the shared +repository triage context.

+ +
+
+ + +

gakudan tool that fetches a file from the configured GitHub repo, +giving the triage agents a way to ground themselves in repo-specific +context (CLAUDE.md, README.md, CONTRIBUTING.md, the file an +issue links to, etc.).

+ +
+
+ + +

Bridges a verified webhook event to a gakudan triage run.

+ +
+
+ + +

Second agent. Reads the issue + classifier output and assesses severity +and scope.

+ +
+
+ + +

gakudan tool that searches the configured GitHub repo for issues +matching a query, returning a short text summary the LLM can read.

+ +
+
+ + +

Fifth and final agent. Reads everything above and produces the comment +that gets posted to the issue.

+ +
+
+ + +

Nova controller for GitHub webhook deliveries.

+ +
+ +
+
+ + +
+ +
+
+
+ + + diff --git a/doc/dist/html-HBZYRXZS.js b/doc/dist/html-HBZYRXZS.js new file mode 100644 index 0000000..632e4a0 --- /dev/null +++ b/doc/dist/html-HBZYRXZS.js @@ -0,0 +1,210 @@ +(()=>{var Ss=Object.create;var Un=Object.defineProperty;var ks=Object.getOwnPropertyDescriptor;var Ls=Object.getOwnPropertyNames;var Ts=Object.getPrototypeOf,_s=Object.prototype.hasOwnProperty;var L=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ps=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ls(e))!_s.call(t,i)&&i!==n&&Un(t,i,{get:()=>e[i],enumerable:!(r=ks(e,i))||r.enumerable});return t};var Y=(t,e,n)=>(n=t!=null?Ss(Ts(t)):{},Ps(e||!t||!t.__esModule?Un(n,"default",{value:t,enumerable:!0}):n,t));var fr=L((dc,hr)=>{var dr="Expected a function",ur=NaN,Hs="[object Symbol]",Ns=/^\s+|\s+$/g,Ds=/^[-+]0x[0-9a-f]+$/i,Bs=/^0b[01]+$/i,Qs=/^0o[0-7]+$/i,qs=parseInt,Fs=typeof global=="object"&&global&&global.Object===Object&&global,Vs=typeof self=="object"&&self&&self.Object===Object&&self,$s=Fs||Vs||Function("return this")(),Us=Object.prototype,js=Us.toString,Ws=Math.max,zs=Math.min,Ht=function(){return $s.Date.now()};function Gs(t,e,n){var r,i,s,o,a,l,u=0,c=!1,d=!1,h=!0;if(typeof t!="function")throw new TypeError(dr);e=cr(e)||0,Ve(n)&&(c=!!n.leading,d="maxWait"in n,s=d?Ws(cr(n.maxWait)||0,e):s,h="trailing"in n?!!n.trailing:h);function p(k){var I=r,$=i;return r=i=void 0,u=k,o=t.apply($,I),o}function g(k){return u=k,a=setTimeout(w,e),c?p(k):o}function m(k){var I=k-l,$=k-u,ee=e-I;return d?zs(ee,s-$):ee}function v(k){var I=k-l,$=k-u;return l===void 0||I>=e||I<0||d&&$>=s}function w(){var k=Ht();if(v(k))return x(k);a=setTimeout(w,m(k))}function x(k){return a=void 0,h&&r?p(k):(r=i=void 0,o)}function P(){a!==void 0&&clearTimeout(a),u=0,r=l=i=a=void 0}function Q(){return a===void 0?o:x(Ht())}function V(){var k=Ht(),I=v(k);if(r=arguments,i=this,l=k,I){if(a===void 0)return g(l);if(d)return a=setTimeout(w,e),p(l)}return a===void 0&&(a=setTimeout(w,e)),o}return V.cancel=P,V.flush=Q,V}function Ks(t,e,n){var r=!0,i=!0;if(typeof t!="function")throw new TypeError(dr);return Ve(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Gs(t,e,{leading:r,maxWait:e,trailing:i})}function Ve(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function Ys(t){return!!t&&typeof t=="object"}function Js(t){return typeof t=="symbol"||Ys(t)&&js.call(t)==Hs}function cr(t){if(typeof t=="number")return t;if(Js(t))return ur;if(Ve(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Ve(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(Ns,"");var n=Bs.test(t);return n||Qs.test(t)?qs(t.slice(2),n?2:8):Ds.test(t)?ur:+t}hr.exports=Ks});var q=L(N=>{"use strict";N.__esModule=!0;N.extend=Tr;N.indexOf=co;N.escapeExpression=ho;N.isEmpty=fo;N.createFrame=po;N.blockParams=mo;N.appendContextPath=go;var oo={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},ao=/[&<>"'`=]/g,lo=/[&<>"'`=]/;function uo(t){return oo[t]}function Tr(t){for(var e=1;e{"use strict";We.__esModule=!0;var Wt=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function zt(t,e){var n=e&&e.loc,r=void 0,i=void 0,s=void 0,o=void 0;n&&(r=n.start.line,i=n.end.line,s=n.start.column,o=n.end.column,t+=" - "+r+":"+s);for(var a=Error.prototype.constructor.call(this,t),l=0;l{"use strict";ze.__esModule=!0;var Gt=q();ze.default=function(t){t.registerHelper("blockHelperMissing",function(e,n){var r=n.inverse,i=n.fn;if(e===!0)return i(this);if(e===!1||e==null)return r(this);if(Gt.isArray(e))return e.length>0?(n.ids&&(n.ids=[n.name]),t.helpers.each(e,n)):r(this);if(n.data&&n.ids){var s=Gt.createFrame(n.data);s.contextPath=Gt.appendContextPath(n.data.contextPath,n.name),n={data:s}}return i(e,n)})};Or.exports=ze.default});var Cr=L((Ge,Ir)=>{"use strict";Ge.__esModule=!0;function vo(t){return t&&t.__esModule?t:{default:t}}var be=q(),yo=X(),wo=vo(yo);Ge.default=function(t){t.registerHelper("each",function(e,n){if(!n)throw new wo.default("Must pass iterator to #each");var r=n.fn,i=n.inverse,s=0,o="",a=void 0,l=void 0;n.data&&n.ids&&(l=be.appendContextPath(n.data.contextPath,n.ids[0])+"."),be.isFunction(e)&&(e=e.call(this)),n.data&&(a=be.createFrame(n.data));function u(g,m,v){a&&(a.key=g,a.index=m,a.first=m===0,a.last=!!v,l&&(a.contextPath=l+g)),o=o+r(e[g],{data:a,blockParams:be.blockParams([e[g],g],[l+g,null])})}if(e&&typeof e=="object")if(be.isArray(e))for(var c=e.length;s{"use strict";Ke.__esModule=!0;function bo(t){return t&&t.__esModule?t:{default:t}}var Eo=X(),xo=bo(Eo);Ke.default=function(t){t.registerHelper("helperMissing",function(){if(arguments.length!==1)throw new xo.default('Missing helper: "'+arguments[arguments.length-1].name+'"')})};Rr.exports=Ke.default});var Br=L((Ye,Dr)=>{"use strict";Ye.__esModule=!0;function So(t){return t&&t.__esModule?t:{default:t}}var Hr=q(),ko=X(),Nr=So(ko);Ye.default=function(t){t.registerHelper("if",function(e,n){if(arguments.length!=2)throw new Nr.default("#if requires exactly one argument");return Hr.isFunction(e)&&(e=e.call(this)),!n.hash.includeZero&&!e||Hr.isEmpty(e)?n.inverse(this):n.fn(this)}),t.registerHelper("unless",function(e,n){if(arguments.length!=2)throw new Nr.default("#unless requires exactly one argument");return t.helpers.if.call(this,e,{fn:n.inverse,inverse:n.fn,hash:n.hash})})};Dr.exports=Ye.default});var qr=L((Je,Qr)=>{"use strict";Je.__esModule=!0;Je.default=function(t){t.registerHelper("log",function(){for(var e=[void 0],n=arguments[arguments.length-1],r=0;r{"use strict";Xe.__esModule=!0;Xe.default=function(t){t.registerHelper("lookup",function(e,n,r){return e&&r.lookupProperty(e,n)})};Fr.exports=Xe.default});var Ur=L((Ze,$r)=>{"use strict";Ze.__esModule=!0;function Lo(t){return t&&t.__esModule?t:{default:t}}var Ee=q(),To=X(),_o=Lo(To);Ze.default=function(t){t.registerHelper("with",function(e,n){if(arguments.length!=2)throw new _o.default("#with requires exactly one argument");Ee.isFunction(e)&&(e=e.call(this));var r=n.fn;if(Ee.isEmpty(e))return n.inverse(this);var i=n.data;return n.data&&n.ids&&(i=Ee.createFrame(n.data),i.contextPath=Ee.appendContextPath(n.data.contextPath,n.ids[0])),r(e,{data:i,blockParams:Ee.blockParams([e],[i&&i.contextPath])})})};$r.exports=Ze.default});var Kt=L(et=>{"use strict";et.__esModule=!0;et.registerDefaultHelpers=Vo;et.moveHelperToHooks=$o;function se(t){return t&&t.__esModule?t:{default:t}}var Po=Ar(),Oo=se(Po),Ao=Cr(),Io=se(Ao),Co=Mr(),Ro=se(Co),Mo=Br(),Ho=se(Mo),No=qr(),Do=se(No),Bo=Vr(),Qo=se(Bo),qo=Ur(),Fo=se(qo);function Vo(t){Oo.default(t),Io.default(t),Ro.default(t),Ho.default(t),Do.default(t),Qo.default(t),Fo.default(t)}function $o(t,e,n){t.helpers[e]&&(t.hooks[e]=t.helpers[e],n||delete t.helpers[e])}});var Wr=L((tt,jr)=>{"use strict";tt.__esModule=!0;var Uo=q();tt.default=function(t){t.registerDecorator("inline",function(e,n,r,i){var s=e;return n.partials||(n.partials={},s=function(o,a){var l=r.partials;r.partials=Uo.extend({},l,n.partials);var u=e(o,a);return r.partials=l,u}),n.partials[i.args[0]]=i.fn,s})};jr.exports=tt.default});var zr=L(Yt=>{"use strict";Yt.__esModule=!0;Yt.registerDefaultDecorators=Go;function jo(t){return t&&t.__esModule?t:{default:t}}var Wo=Wr(),zo=jo(Wo);function Go(t){zo.default(t)}});var Jt=L((nt,Gr)=>{"use strict";nt.__esModule=!0;var Ko=q(),fe={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(e){if(typeof e=="string"){var n=Ko.indexOf(fe.methodMap,e.toLowerCase());n>=0?e=n:e=parseInt(e,10)}return e},log:function(e){if(e=fe.lookupLevel(e),typeof console<"u"&&fe.lookupLevel(fe.level)<=e){var n=fe.methodMap[e];console[n]||(n="log");for(var r=arguments.length,i=Array(r>1?r-1:0),s=1;s{"use strict";Xt.__esModule=!0;Xt.createNewLookupObject=Jo;var Yo=q();function Jo(){for(var t=arguments.length,e=Array(t),n=0;n{"use strict";xe.__esModule=!0;xe.createProtoAccessControl=ta;xe.resultIsAllowed=na;xe.resetLoggedProperties=ia;function Xo(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var Yr=Kr(),Zo=Jt(),ea=Xo(Zo),rt=Object.create(null);function ta(t){var e=Object.create(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var n=Object.create(null);return n.__proto__=!1,{properties:{whitelist:Yr.createNewLookupObject(n,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:Yr.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}}function na(t,e,n){return Jr(typeof t=="function"?e.methods:e.properties,n)}function Jr(t,e){return t.whitelist[e]!==void 0?t.whitelist[e]===!0:t.defaultValue!==void 0?t.defaultValue:(ra(e),!1)}function ra(t){rt[t]!==!0&&(rt[t]=!0,ea.log("error",'Handlebars: Access has been denied to resolve the property "'+t+`" because it is not an "own property" of its parent. +You can add a runtime option to disable the check or this warning: +See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`))}function ia(){Object.keys(rt).forEach(function(t){delete rt[t]})}});var rn=L(U=>{"use strict";U.__esModule=!0;U.HandlebarsEnvironment=nn;function Xr(t){return t&&t.__esModule?t:{default:t}}var oe=q(),sa=X(),en=Xr(sa),oa=Kt(),aa=zr(),la=Jt(),it=Xr(la),ua=Zt(),ca="4.7.7";U.VERSION=ca;var da=8;U.COMPILER_REVISION=da;var ha=7;U.LAST_COMPATIBLE_COMPILER_REVISION=ha;var fa={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};U.REVISION_CHANGES=fa;var tn="[object Object]";function nn(t,e,n){this.helpers=t||{},this.partials=e||{},this.decorators=n||{},oa.registerDefaultHelpers(this),aa.registerDefaultDecorators(this)}nn.prototype={constructor:nn,logger:it.default,log:it.default.log,registerHelper:function(e,n){if(oe.toString.call(e)===tn){if(n)throw new en.default("Arg not supported with multiple helpers");oe.extend(this.helpers,e)}else this.helpers[e]=n},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,n){if(oe.toString.call(e)===tn)oe.extend(this.partials,e);else{if(typeof n>"u")throw new en.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=n}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,n){if(oe.toString.call(e)===tn){if(n)throw new en.default("Arg not supported with multiple decorators");oe.extend(this.decorators,e)}else this.decorators[e]=n},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function(){ua.resetLoggedProperties()}};var pa=it.default.log;U.log=pa;U.createFrame=oe.createFrame;U.logger=it.default});var ei=L((st,Zr)=>{"use strict";st.__esModule=!0;function sn(t){this.string=t}sn.prototype.toString=sn.prototype.toHTML=function(){return""+this.string};st.default=sn;Zr.exports=st.default});var ti=L(on=>{"use strict";on.__esModule=!0;on.wrapHelper=ma;function ma(t,e){if(typeof t!="function")return t;var n=function(){var i=arguments[arguments.length-1];return arguments[arguments.length-1]=e(i),t.apply(this,arguments)};return n}});var oi=L(Z=>{"use strict";Z.__esModule=!0;Z.checkRevision=Ea;Z.template=xa;Z.wrapProgram=ot;Z.resolvePartial=Sa;Z.invokePartial=ka;Z.noop=ii;function ga(t){return t&&t.__esModule?t:{default:t}}function va(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var ya=q(),z=va(ya),wa=X(),G=ga(wa),K=rn(),ni=Kt(),ba=ti(),ri=Zt();function Ea(t){var e=t&&t[0]||1,n=K.COMPILER_REVISION;if(!(e>=K.LAST_COMPATIBLE_COMPILER_REVISION&&e<=K.COMPILER_REVISION))if(e{"use strict";at.__esModule=!0;at.default=function(t){var e=typeof global<"u"?global:window,n=e.Handlebars;t.noConflict=function(){return e.Handlebars===t&&(e.Handlebars=n),t}};ai.exports=at.default});var ae=L((lt,hi)=>{"use strict";lt.__esModule=!0;function ln(t){return t&&t.__esModule?t:{default:t}}function un(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}var Pa=rn(),ui=un(Pa),Oa=ei(),Aa=ln(Oa),Ia=X(),Ca=ln(Ia),Ra=q(),an=un(Ra),Ma=oi(),ci=un(Ma),Ha=li(),Na=ln(Ha);function di(){var t=new ui.HandlebarsEnvironment;return an.extend(t,ui),t.SafeString=Aa.default,t.Exception=Ca.default,t.Utils=an,t.escapeExpression=an.escapeExpression,t.VM=ci,t.template=function(e){return ci.template(e,t)},t}var Se=di();Se.create=di;Na.default(Se);Se.default=Se;lt.default=Se;hi.exports=lt.default});var Vi=L((qi,Fi)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var c=t.utils.clone(n)||{};c.position=[a,u],c.index=s.length,s.push(new t.Token(r.slice(a,o),c))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?c+=2:a==l&&(n+=r[u+1]*i[c+1],u+=2,c+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c=s.str.charAt(0),d=s.str.charAt(1),h;d in s.node.edges?h=s.node.edges[d]:(h=new t.TokenSet,s.node.edges[d]=h),s.str.length==1&&(h.final=!0),i.push({node:h,editsRemaining:s.editsRemaining-1,str:c+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof qi=="object"?Fi.exports=n():e.lunr=n()}(this,function(){return t})})()});var ie={plain:"plain",function:"function",module:"module"},Os=[{href:"typespecs.html#basic-types",hint:{kind:ie.plain,description:"Basic type"}},{href:"typespecs.html#literals",hint:{kind:ie.plain,description:"Literal"}},{href:"typespecs.html#built-in-types",hint:{kind:ie.plain,description:"Built-in type"}}],Me={cancelHintFetching:null};function jn(t){if(zn(t))return!0;let e=/#.*\//;return t.includes("#")&&!e.test(t)?!1:t.includes(".html")}function Wn(t){let e=zn(t);return e?Promise.resolve(e):As(t)}function zn(t){let e=Os.find(n=>t.includes(n.href));return e?e.hint:null}function As(t){let e=t.replace(".html",".html?hint=true");return new Promise((n,r)=>{let i=document.createElement("iframe");i.setAttribute("src",e),i.style.display="none";function s(a){let{href:l,hint:u}=a.data;e===l&&(o(),n(u))}Me.cancelHintFetching=()=>{o(),r(new Error("cancelled"))};function o(){i.remove(),window.removeEventListener("message",s),Me.cancelHintFetching=null}window.addEventListener("message",s),document.body.appendChild(i)})}function Gn(){Me.cancelHintFetching&&Me.cancelHintFetching()}function Kn(t){let n=t.querySelector("h1").textContent,r=t.querySelector(".docstring > p"),i=r?r.innerHTML:"";return{kind:ie.function,title:n.trim(),description:i.trim()}}function Yn(t){let n=t.querySelector("h1 > span").textContent,r=t.querySelector("#moduledoc p"),i=r?r.innerHTML:"";return{kind:ie.module,title:n.trim(),description:i.trim()}}var f=document.querySelector.bind(document),C=document.querySelectorAll.bind(document);function Jn(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Ne(t){return String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function De(){return document.getElementById("main").dataset.type}var He=["H1","H2","H3","H4","H5","H6"];function Xn(t=!1){let e=window.location.hash.replace(/^#/,"");if(!e)return t?document.getElementById("top-content"):null;let n=document.getElementById(e);if(!n)return null;if(n.matches(".detail"))return n;if(He.includes(n.tagName))return Tt(n);let r=Is(n);return r||document.getElementById("top-content")}function Is(t){let e=t.previousElementSibling;for(;e;){if(He.includes(e.tagName))return Tt(e);e=e.previousElementSibling}let n=t.parentNode;for(;n;){for(e=n.previousElementSibling;e;){if(He.includes(e.tagName))return Tt(e);e=e.previousElementSibling}n=n.parentNode}return null}function Tt(t){let e=document.createElement("div"),n=[t],r=t;for(;(r=r.nextSibling)&&!(He.includes(r.tagName)&&r.tagName<=t.tagName);)n.push(r);return e.append(...n),e}function Zn(t){return new URLSearchParams(window.location.search).get(t)}function _t(t){return fetch(t).then(e=>e.ok).catch(()=>!1)}function he(t){return!t||t.trim()===""}function er(t,e){let n;return function(...i){clearTimeout(n),n=setTimeout(()=>{n=null,t(...i)},e)}}function Be(){return document.head.querySelector("meta[name=project][content]").content}function Qe(){return document.documentElement.classList.contains("apple-os")}function E(t,e,n){let r=document.createElement(t);for(let i in e)e[i]!=null&&r.setAttribute(i,e[i]);return n&&r.replaceChildren(...n),r}var Cs=new URLSearchParams(window.location.search),Rs=window.self!==window.parent,Pt=Rs&&Cs.has("hint"),R=Pt;function qe(){return window.sidebarNodes||{}}function tr(){return window.versionNodes||[]}if(Pt&&R){let t=Xn(),e=t?Kn(t):["modules","tasks"].includes(De())?Yn(f(".content-inner")):null;if(e){let n={hint:{...e,version:Be()},href:window.location.href};window.parent.postMessage(n,"*")}f(".content-inner")?.replaceChildren()}var Ot="ex_doc:settings",nr="dark",At="system",It="dark",Ct="light";var Ms={tooltips:!0,theme:null,livebookUrl:null},Rt=class{constructor(){this._subscribers=[],this._settings=Ms,this._loadSettings()}get(){return this._settings}update(e){let n=this._settings;this._settings={...this._settings,...e},this._subscribers.forEach(r=>r(this._settings,n)),this._storeSettings()}getAndSubscribe(e){this._subscribers.push(e),e(this._settings)}_loadSettings(){try{let e=localStorage.getItem(Ot);if(e){let n=JSON.parse(e);this._settings={...this._settings,...n}}this._loadSettingsLegacy()}catch(e){console.error(`Failed to load settings: ${e}`)}}_storeSettings(){try{this._storeSettingsLegacy(),localStorage.setItem(Ot,JSON.stringify(this._settings))}catch(e){console.error(`Failed to persist settings: ${e}`)}}_loadSettingsLegacy(){localStorage.getItem("tooltipsDisabled")!==null&&(this._settings={...this._settings,tooltips:!1}),localStorage.getItem("night-mode")==="true"&&(this._settings={...this._settings,nightMode:!0}),this._settings.nightMode===!0&&(this._settings={...this._settings,theme:"dark"})}_storeSettingsLegacy(){this._settings.tooltips?localStorage.removeItem("tooltipsDisabled"):localStorage.setItem("tooltipsDisabled","true"),this._settings.nightMode!==null?localStorage.setItem("night-mode",this._settings.nightMode===!0?"true":"false"):localStorage.removeItem("night-mode"),this._settings.theme!==null?(localStorage.setItem("night-mode",this._settings.theme==="dark"?"true":"false"),this._settings.nightMode=this._settings.theme==="dark"):(delete this._settings.nightMode,localStorage.removeItem("night-mode"))}},M=new Rt;var rr=!1,Fe=null,J=null;function ir(t){rr||(rr=!0,J=document.getElementById("toast"),J?.addEventListener("click",()=>{clearTimeout(Fe),J.classList.remove("show")})),J&&(clearTimeout(Fe),J.innerText=t,J.classList.add("show"),Fe=setTimeout(()=>{J.classList.remove("show"),Fe=setTimeout(function(){J.innerText=""},1e3)},5e3))}var Mt=[At,It,Ct],sr=window.matchMedia("(prefers-color-scheme: dark)");M.getAndSubscribe(or);sr.addEventListener("change",or);function or(){let t=lr(),e=t===It||t!==Ct&&sr.matches;document.body.classList.toggle(nr,e)}function ar(){let t=Mt[Mt.indexOf(lr())+1]||Mt[0];M.update({theme:t}),ir(`Set theme to "${t}"`)}function lr(){return new URLSearchParams(window.location.search).get("theme")||M.get().theme||At}var Er=Y(fr());var Nt="sidebar_state",Dt="closed",pr="open",mr="sidebar_width";var $e="sidebar-open",Ue="sidebar-transition";var gr=!1;function vr(){if(gr)return;gr=!0;let t=document.getElementById("sidebar-list-nav");if(!t)return;let e=De(),n={extras:t.dataset.extras||"Pages",modules:"Modules",tasks:'Mix Tasks'};Object.entries(n).forEach(([r,i])=>{let s=qe()[r];if(!s?.length)return;let o=`${r}-list-tab-button`,a=`${r}-tab-panel`,l=r===e,u=E("button",{id:o,role:"tab",tabindex:l?0:-1,"aria-selected":l||void 0,"aria-controls":a});u.innerHTML=i,u.addEventListener("keydown",eo),u.addEventListener("click",to),t.appendChild(E("li",{},[u]));let c=E("ul",{class:"full-list"});c.addEventListener("click",no);let d=E("div",{id:a,class:"sidebar-tabpanel",role:"tabpanel","aria-labelledby":o,hidden:l?void 0:""},[c]);document.getElementById("sidebar").appendChild(d);let h="",p,g;c.replaceChildren(...s.flatMap(m=>{let v=[],w=Array.isArray(m.headers),x=w?void 0:"no",P=m?.url||`${m.id}.html`;return m.group!==h&&(v.push(E("li",{class:"group",translate:x},[m.group])),h=m.group,p=void 0),m.nested_context&&m.nested_context!==p?(p=m.nested_context,g!==p&&v.push(E("li",{class:"nesting-context",translate:"no","aria-hidden":!0},[p]))):g=m.title,v.push(E("li",{},[E("a",{href:P,translate:x},[m.nested_title||m.title,m.url?E("i",{class:"external-link ri-external-link-line"}):null].filter(Boolean)),...Qt(`node-${m.id}-headers`,w?Xs(m):Zs(m))])),v}))}),Bt(),requestAnimationFrame(yr),window.addEventListener("hashchange",Bt),window.addEventListener("exdoc:loaded",Bt)}function Qt(t,e){return e.length?[E("button",{"aria-label":"expand","aria-expanded":!1,"aria-controls":t}),E("ul",{id:t},e)]:[]}function Xs(t){return t.headers.map(({id:e,anchor:n})=>E("li",{},[E("a",{href:`${t.id}.html#${n}`},[e])]))}function Zs(t){let e=[];return t.sections?.length&&e.push(E("li",{},[E("a",{href:`${t.id}.html#content`},["Sections"]),...Qt(`${t.id}-sections-list`,t.sections.map(({id:n,anchor:r})=>E("li",{},[E("a",{href:`${t.id}.html#${r}`},[n])])))])),t.nodeGroups&&(e.push(E("li",{},[E("a",{href:`${t.id}.html#summary`},["Summary"])])),e.push(...t.nodeGroups.map(({key:n,name:r,nodes:i})=>E("li",{},[E("a",{href:`${t.id}.html#${n}`},[r]),...Qt(`node-${t.id}-group-${n}-list`,i.map(({anchor:s,title:o,id:a})=>E("li",{},[E("a",{href:`${t.id}.html#${s}`,title:o,translate:"no"},[a])])))])))),e}function qt(t){let e=document.getElementById("sidebar-list-nav").querySelector("[aria-selected]");e!==t&&(e&&(e.removeAttribute("aria-selected"),e.setAttribute("tabindex","-1"),document.getElementById(e.getAttribute("aria-controls")).setAttribute("hidden","hidden")),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0"),document.getElementById(t.getAttribute("aria-controls")).removeAttribute("hidden"))}function yr(){f("#sidebar [role=tabpanel]:not([hidden]) a[aria-selected]")?.scrollIntoView()}function Bt(){let t=document.getElementById("sidebar"),{pathname:e,hash:n}=window.location,r=e.split("/").pop().replace(/\.html$/,"")+".html",i=t.querySelector(`li a[href="${r+n}"]`)||t.querySelector(`li a[href="${r}"]`);if(!i)return;t.querySelectorAll(".full-list a[aria-selected]").forEach(o=>{o.removeAttribute("aria-selected")}),t.querySelectorAll(".full-list button[aria-expanded=true]").forEach(o=>{o.setAttribute("aria-expanded",!1)});let s=i.parentElement;for(;s;){if(s.tagName==="LI"){let o=s.firstChild;o.setAttribute("aria-selected",o.getAttribute("href")===r?"page":"true");let a=o.nextSibling;a?.tagName==="BUTTON"&&a.setAttribute("aria-expanded",!0)}else if(s.role==="tabpanel"){s.hasAttribute("hidden")&&qt(document.getElementById(s.getAttribute("aria-labelledby")));break}s=s.parentElement}}function eo(t){if(!["ArrowRight","ArrowLeft"].includes(t.key))return;let e=Array.from(C('#sidebar-list-nav [role="tab"]')),r=e.indexOf(t.currentTarget)+(t.key==="ArrowRight"?1:-1),i=e.at(r%e.length);qt(i),i.focus()}function to(t){qt(t.currentTarget),yr()}function no(t){let e=t.target;e.tagName==="BUTTON"&&e.setAttribute("aria-expanded",e.getAttribute("aria-expanded")==="false")}var io=300,xr=".sidebar-toggle",Ft=window.matchMedia(`screen and (max-width: ${768}px)`);if(!R){window.addEventListener("exdoc:loaded",wr);let t=document.getElementById("sidebar"),e=f(xr);e.addEventListener("click",je),document.body.addEventListener("click",i=>{Ft.matches&&Vt()&&!t.contains(i.target)&&!e.contains(i.target)&&je()});let n=window.innerWidth;window.addEventListener("resize",(0,Er.default)(()=>{n!==window.innerWidth&&(n=window.innerWidth,wr())},100));let r=new ResizeObserver(([i])=>{if(!i)return;let s=i.contentRect.width;sessionStorage.setItem(mr,s),document.body.style.setProperty("--sidebarWidth",`${s}px`)});t.addEventListener("mousedown",()=>r.observe(t)),t.addEventListener("mouseup",()=>r.unobserve(t)),window.addEventListener("hashchange",so)}function wr(){let e=sessionStorage.getItem(Nt)!==Dt&&!Ft.matches;kr(e)}function je(){let t=!Vt();return sessionStorage.setItem(Nt,t?pr:Dt),$t(t)}function Vt(){return document.body.classList.contains($e)}function Sr(){return document.body.classList.contains($e)&&!document.body.classList.contains(Ue)}function kr(t){t&&vr(),document.body.classList.toggle($e,t),f(xr).setAttribute("aria-expanded",t?"true":"false")}var br;function $t(t){return new Promise(e=>{document.body.classList.add(Ue),document.body.scrollTop,kr(t),clearTimeout(br),br=setTimeout(()=>{document.body.classList.remove(Ue),e()},io)})}function Lr(){return $t(!0)}function so(){Ft.matches&&Vt()&&$t(!1)}var fi=Y(ae());var cn=Y(ae());cn.registerHelper("isArray",function(t,e){return Array.isArray(t)?e.fn(this):e.inverse(this)});cn.registerHelper("isNonEmptyArray",function(t,e){return Array.isArray(t)&&t.length>0?e.fn(this):e.inverse(this)});var pi=fi.template({1:function(t,e,n,r,i){var s,o,a=e??(t.nullContext||{}),l=t.hooks.helperMissing,u="function",c=t.escapeExpression,d=t.lookupProperty||function(h,p){if(Object.prototype.hasOwnProperty.call(h,p))return h[p]};return' +`},2:function(t,e,n,r,i){return" selected disabled"},4:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return` +`},compiler:[8,">= 4.3.0"],main:function(t,e,n,r,i){var s,o=e??(t.nullContext||{}),a=t.lookupProperty||function(l,u){if(Object.prototype.hasOwnProperty.call(l,u))return l[u]};return`
+ +`+((s=a(n,"if").call(o,e!=null?a(e,"latestVersion"):e,{name:"if",hash:{},fn:t.program(4,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:19,column:9}}}))!=null?s:"")+`
+`},useData:!0});var Da=".sidebar-projectVersion",mi=".sidebar-projectVersion select",Ba=".sidebar-staleVersion a";if(!R){let t=tr(),e=f(Da);if(t.length>0||!e){let n=e.textContent.trim(),i=(t.some(u=>u.version===n)?t:[{version:n,url:"#"},...t]).map(u=>({...u,isCurrentVersion:u.version===n})),s=t.find(u=>u.latest),o=s?.version!==n&&!n.includes("-")?s?.url:null;e.innerHTML=pi({nodes:i,latestVersion:o});let a=f(mi);a.addEventListener("change",qa),Qa(a);let l=f(Ba);l&&l.addEventListener("click",Fa)}}function Qa(t){let e=document.createElement("span");e.style.visibility="hidden",e.style.position="absolute",e.style.whiteSpace="nowrap",e.style.font=window.getComputedStyle(t).font,e.textContent=t.options[t.selectedIndex].text,document.body.appendChild(e),t.style.width=`${e.offsetWidth+20}px`,document.body.removeChild(e)}function qa(t){let e=t.target.value,n=window.location.pathname.split("/").pop()+window.location.hash,r=`${e}/${n}`;_t(r).then(i=>{i?window.location.href=r:window.location.href=e})}function Fa(t){let e=this.href,n=window.location.pathname.split("/").pop()+window.location.hash,r=`${e}/${n}`;t.preventDefault(),_t(r).then(i=>{i?window.location.href=r:window.location.href=e})}function dn(){let t=f(mi);t&&(t.focus(),t.addEventListener("keydown",e=>{(e.key==="Escape"||e.key==="v")&&(e.preventDefault(),t.blur())}),navigator.userActivation.isActive&&"showPicker"in HTMLSelectElement.prototype&&t.showPicker())}var Va="content",$a="tabs-open",Ua="tabs-close",ja="H3",Wa="tabset";window.addEventListener("exdoc:loaded",za);function za(){let t=[],e=[],n=document.createNodeIterator(document.getElementById(Va),NodeFilter.SHOW_COMMENT,i=>i.nodeValue.trim()===$a?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT),r;for(;r=n.nextNode();){let i=[];t.push([r,i]);let s,o=r;for(;o=o.nextSibling;)if(o.nodeName===ja){s=[];let a=o.querySelector(".text")?.childNodes||o.childNodes;i.push([a,s]),e.push(o)}else if(o.nodeName==="#comment"&&o.nodeValue.trim()===Ua){e.push(o);break}else s&&s.push(o)}t.forEach(([i,s],o)=>{let a=E("div",{class:Wa});i.parentNode.replaceChild(a,i);let l=E("div",{role:"tablist",class:"tabset-tablist"});a.appendChild(l),s.forEach(([u,c],d)=>{let h=d===0,p=`tab-${o}-${d}`,g=`tabpanel-${o}-${d}`,m=E("button",{role:"tab",id:p,class:"tabset-tab",tabindex:h?0:-1,"aria-selected":h,"aria-controls":g},u);m.addEventListener("click",Ga),m.addEventListener("keydown",Ka),l.appendChild(m);let v=E("div",{role:"tabpanel",id:g,class:"tabset-panel",hidden:h?void 0:"","aria-labelledby":p},c);a.appendChild(v)})}),e.forEach(i=>{i.parentNode.removeChild(i)})}function Ga(t){vi(t.currentTarget)}function Ka(t){if(gi[t.code]){t.preventDefault();let e=[...t.currentTarget.parentNode.childNodes],n=e.indexOf(t.currentTarget),r=gi[t.code](n,e.length);vi(e.at(r%e.length))}}var gi={ArrowLeft:t=>t-1,ArrowRight:t=>t+1,Home:()=>0,End:(t,e)=>e-1};function vi(t){let e=t.parentNode.querySelector("[aria-selected=true]");if(e===t)return;e.setAttribute("aria-selected","false"),e.tabIndex=-1,t.setAttribute("aria-selected","true"),t.tabIndex=0,t.focus();let n=document.getElementById(e.getAttribute("aria-controls"));n.setAttribute("hidden",""),n.tabIndex=-1;let r=document.getElementById(t.getAttribute("aria-controls"));r.removeAttribute("hidden"),r.tabIndex=0}window.addEventListener("exdoc:loaded",Ya);function Ya(){let t=window.location.pathname.replace(/(\.html)?$/,".livemd"),e=encodeURIComponent(new URL(t,window.location.href).toString());M.getAndSubscribe(({livebookUrl:n})=>{let r=n?`${n}/import?url=${e}`:`https://livebook.dev/run?url=${e}`;for(let i of C(".livebook-badge"))i.href=r})}var Ja="hll";window.addEventListener("exdoc:loaded",Xa);function Xa(){C("[data-group-id]").forEach(t=>{t.addEventListener("mouseenter",yi),t.addEventListener("mouseleave",yi)})}function yi(t){let e=t.currentTarget,n=t.type==="mouseenter",r=e.getAttribute("data-group-id");e.parentElement.querySelectorAll(`[data-group-id="${r}"]`).forEach(i=>{i.classList.toggle(Ja,n)})}var j={module:"module",moduleChild:"module-child",mixTask:"mix-task",extra:"extra",section:"section"},Za=10;function bi(t,e=null){let n=e||window.autocompleteLimit||Za;if(he(t))return[];let r=qe(),i=[...hn(r.modules,t,j.module,"module"),...el(r.modules,t,j.moduleChild),...hn(r.tasks,t,j.mixTask,"mix task"),...hn(r.extras,t,j.extra,"page"),...fn(r.modules,t,j.section,"module"),...fn(r.tasks,t,j.section,"mix task"),...fn(r.extras,t,j.section,"page")].filter(s=>s!==null);return al(i).slice(0,n)}function hn(t,e,n,r){return t.map(i=>i.searchData?null:nl(i,e,n,r))}function el(t,e,n){return t.filter(r=>r.nodeGroups).flatMap(r=>r.nodeGroups.flatMap(({key:i,nodes:s})=>{let o=ol(i);return s.map(a=>rl(a,r.id,e,n,o)||sl(a,r.id,e,n,o))}))}function fn(t,e,n,r){return t.flatMap(i=>tl(i).map(s=>il(i,s,e,n,r)))}function tl(t){return t.searchData?t.searchData:(t.sections||[]).concat(t.headers||[])}function nl(t,e,n,r){return ct(t.title,e)?{link:`${t.id}.html`,title:ft(t.title,e),description:null,matchQuality:dt(t.title,e),deprecated:t.deprecated,labels:[r],category:n}:null}function rl(t,e,n,r,i){return ct(t.id,n)?{link:`${e}.html#${t.anchor}`,title:ft(t.id,n),labels:[i],description:e,matchQuality:dt(t.id,n),deprecated:t.deprecated,category:r}:null}function il(t,e,n,r,i){if(!Ei(e.id,n))return null;let s;return e.anchor===""?s=`${t.id}.html`:s=`${t.id}.html#${e.anchor}`,{link:s,title:ft(e.id,n),description:t.title,matchQuality:dt(e.id,n),labels:e.labels||[i,"section"],category:r}}function sl(t,e,n,r,i){let s=`${e}.${t.id}`,o=`${e}:${t.id}`,a,l;if(ct(s,n))a=s,l=/\./g;else if(ct(o,n))a=o,l=/:/g;else return null;let u=n.replace(l," ");return Ei(t.id,u)?{link:`${e}.html#${t.anchor}`,title:ft(t.id,u),label:i,description:e,matchQuality:dt(a,n),deprecated:t.deprecated,category:r}:null}function ol(t){switch(t){case"callbacks":return"callback";case"types":return"type";default:return"function"}}function al(t){return t.slice().sort((e,n)=>e.matchQuality!==n.matchQuality?n.matchQuality-e.matchQuality:wi(e.category)-wi(n.category))}function wi(t){switch(t){case j.module:return 1;case j.moduleChild:return 2;case j.mixTask:return 3;default:return 4}}function Ei(t,e){return ht(e).some(r=>xi(t,r))}function ct(t,e){return ht(e).every(r=>xi(t,r))}function xi(t,e){return t.toLowerCase().includes(e.toLowerCase())}function dt(t,e){let n=ht(e),i=n.map(o=>o.length).reduce((o,a)=>o+a,0)/t.length,s=ll(t,n[0])?1:0;return i+s}function ll(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}function ht(t){return t.trim().split(/\s+/)}function ft(t,e){let n=ht(e).sort((r,i)=>i.length-r.length);return ut(t,n)}function ut(t,e){if(e.length===0)return t;let[n,...r]=e,i=t.match(new RegExp(`(.*)(${Jn(n)})(.*)`,"i"));if(i){let[,s,o,a]=i;return ut(s,e)+""+Ne(o)+""+ut(a,e)}else return ut(t,r)}var Si=Y(ae());var ki=Si.template({1:function(t,e,n,r,i){return` Autocompletion results within this project +`},3:function(t,e,n,r,i){return` No autocompletion results within this project +`},5:function(t,e,n,r,i){var s,o,a=e??(t.nullContext||{}),l=t.hooks.helperMissing,u="function",c=t.escapeExpression,d=t.lookupProperty||function(h,p){if(Object.prototype.hasOwnProperty.call(h,p))return h[p]};return' + `+((s=(o=(o=d(n,"title")||(e!=null?d(e,"title"):e))!=null?o:l,typeof o===u?o.call(a,{name:"title",hash:{},data:i,loc:{start:{line:19,column:44},end:{line:19,column:55}}}):o))!=null?s:"")+` +`+((s=d(n,"if").call(a,e!=null?d(e,"description"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:20,column:8},end:{line:23,column:15}}}))!=null?s:"")+((s=d(n,"if").call(a,e!=null?d(e,"deprecated"):e,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.noop,data:i,loc:{start:{line:24,column:8},end:{line:26,column:15}}}))!=null?s:"")+((s=d(n,"each").call(a,e!=null?d(e,"labels"):e,{name:"each",hash:{},fn:t.program(10,i,0),inverse:t.noop,data:i,loc:{start:{line:27,column:8},end:{line:29,column:17}}}))!=null?s:"")+` +`},6:function(t,e,n,r,i){var s,o,a=t.lookupProperty||function(l,u){if(Object.prototype.hasOwnProperty.call(l,u))return l[u]};return` + `+((s=(o=(o=a(n,"description")||(e!=null?a(e,"description"):e))!=null?o:t.hooks.helperMissing,typeof o=="function"?o.call(e??(t.nullContext||{}),{name:"description",hash:{},data:i,loc:{start:{line:22,column:49},end:{line:22,column:66}}}):o))!=null?s:"")+` +`},8:function(t,e,n,r,i){return` deprecated +`},10:function(t,e,n,r,i){return' '+t.escapeExpression(t.lambda(e,e))+` +`},compiler:[8,">= 4.3.0"],main:function(t,e,n,r,i){var s,o=e??(t.nullContext||{}),a=t.lookupProperty||function(l,u){if(Object.prototype.hasOwnProperty.call(l,u))return l[u]};return`
+
+
+
+ +`+((s=a(n,"if").call(o,(s=e!=null?a(e,"suggestions"):e)!=null?a(s,"length"):s,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(3,i,0),data:i,loc:{start:{line:6,column:8},end:{line:10,column:15}}}))!=null?s:"")+` + + Press RETURN for full-text search + +
+
+`+((s=a(n,"each").call(o,e!=null?a(e,"suggestions"):e,{name:"each",hash:{},fn:t.program(5,i,0),inverse:t.noop,data:i,loc:{start:{line:17,column:6},end:{line:31,column:15}}}))!=null?s:"")+`
+
+
+`},useData:!0});var pe=".autocomplete",pn=".autocomplete-suggestions",Li=".autocomplete-suggestion",W={autocompleteSuggestions:[],selectedIdx:-1};function ul(){f(pe).classList.add("shown")}function mn(){f(pe).classList.remove("shown")}function Ti(){return f(pe).classList.contains("shown")}function gn(t){W.autocompleteSuggestions=bi(t),W.selectedIdx=-1,he(t)?mn():(cl({term:t,suggestions:W.autocompleteSuggestions}),pt(0),ul())}function cl({term:t,suggestions:e}){let n=ki({suggestions:e,term:t}),r=f(pe);r.innerHTML=n}function _i(){return W.selectedIdx===-1?null:W.autocompleteSuggestions[W.selectedIdx]}function pt(t){dl(hl(t))}function dl(t){W.selectedIdx=t;let e=f(pn),n=f(`${Li}.selected`),r=f(`${Li}[data-index="${W.selectedIdx}"]`);n&&n.classList.remove("selected"),r?(r.classList.add("selected"),r.scrollIntoView({block:"nearest"})):e&&(e.scrollTop=0)}function hl(t){let e=W.autocompleteSuggestions.length+1;return(W.selectedIdx+t+1+e)%e-1}var me="form.search-bar input",fl="form.search-bar .search-close-button",pl=".engine-selector",Le=".engine-button",Te=".engine-dropdown",vt=null;R||window.addEventListener("exdoc:loaded",ml);function ml(){gl(),wl(),yl()}function gl(){let t=document.querySelectorAll(".engine-option");if(t.length===0){vt="search.html?q=";return}let e=window.location.pathname;if(e.endsWith("/search.html")||e.endsWith("/search")){let n=Array.from(t).find(r=>r.dataset.engineUrl.startsWith("search.html"));if(n){Ii(n);return}}vt=t[0].dataset.engineUrl}function Ii(t){vt=t.dataset.engineUrl;let n=f(Le)?.querySelector(".engine-name");n&&(n.textContent=t.querySelector(".name").textContent),f(Te)?.querySelectorAll(".engine-option").forEach(i=>{i.setAttribute("aria-checked",i===t?"true":"false")})}function Pi(){let t=f(Le),e=f(Te);if(!t||!e)return;t.getAttribute("aria-expanded")==="true"?ke():vl()}function vl(){let t=f(Le),e=f(Te);if(!t||!e)return;t.setAttribute("aria-expanded","true"),e.removeAttribute("hidden"),e.querySelector(".engine-option")?.focus()}function ke(){let t=f(Le),e=f(Te);!t||!e||(t.setAttribute("aria-expanded","false"),e.setAttribute("hidden",""))}function Ci(t){let e=f(me);e.value=t}function Ri(){let t=f(me);document.body.classList.add("search-focused"),t.focus()}function yl(){let t=f(me),e=parseInt(document.querySelector('meta[name="exdoc:autocomplete-limit"]')?.content);e&&(window.autocompleteLimit=e),t.setAttribute("autocomplete-limit",e)}function wl(){let t=f(me);if(document.querySelector('meta[name="exdoc:autocomplete"][content="off"]'))return t.addEventListener("keydown",r=>{r.key==="Enter"&&Oi(r)}),!0;t.addEventListener("keydown",r=>{let i=Qe();r.key==="Escape"?(mt(),t.blur()):r.key==="Enter"?Oi(r):r.key==="ArrowUp"||i&&r.ctrlKey&&r.key==="p"?(pt(-1),r.preventDefault()):(r.key==="ArrowDown"||i&&r.ctrlKey&&r.key==="n")&&(pt(1),r.preventDefault())}),t.addEventListener("input",r=>{gn(r.target.value)}),t.addEventListener("focus",r=>{document.body.classList.contains("search-focused")||(document.body.classList.add("search-focused"),gn(r.target.value))}),t.addEventListener("blur",r=>{let i=r.relatedTarget,s=f(pn);if(i&&s&&s.contains(i))return setTimeout(()=>{Ti()&&t.focus()},1e3),null;gt()}),f(pe).addEventListener("click",r=>{r.shiftKey||r.ctrlKey?t.focus():(mt(),gt())}),f(fl).addEventListener("click",r=>{mt(),gt(),t.blur()});let e=f(Le);e&&(e.addEventListener("click",r=>{r.stopPropagation(),Pi()}),e.addEventListener("keydown",r=>{r.key==="Enter"||r.key===" "?(r.preventDefault(),Pi()):r.key==="Escape"&&ke()})),document.addEventListener("click",r=>{let i=f(pl);i&&!i.contains(r.target)&&ke()});let n=f(Te);n&&(n.querySelectorAll(".engine-option").forEach(r=>{r.addEventListener("click",()=>{Ii(r),ke()})}),n.addEventListener("keydown",r=>{let i=Array.from(n.querySelectorAll(".engine-option")),s=i.indexOf(document.activeElement);if(r.key==="ArrowDown"){r.preventDefault();let o=(s+1)%i.length;i[o]?.focus()}else if(r.key==="ArrowUp"){r.preventDefault();let o=(s-1+i.length)%i.length;i[o]?.focus()}else r.key==="Escape"?(r.preventDefault(),ke(),e?.focus()):(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),document.activeElement?.click())}))}function Oi(t){let e=f(me),n=t.shiftKey||t.ctrlKey,r=_i();t.preventDefault();let i=n?"_blank":"_self",s=document.createElement("a");s.setAttribute("target",i),r?s.setAttribute("href",r.link):s.setAttribute("href",`${vt}${encodeURIComponent(e.value)}`),s.click(),n||(mt(),gt())}function mt(){let t=f(me);t.value=""}function gt(){document.body.classList.remove("search-focused"),mn()}var vn,Ai=2;window.addEventListener("scroll",function(){let t=window.scrollY;if(vn!==void 0){let e=t-vn;t===0||e>Ai?document.body.classList.remove("scroll-sticky"):t>0&&-e>Ai&&document.body.classList.add("scroll-sticky")}vn=Math.max(0,t)},!1);var Mi=Y(ae());var Hi=Mi.template({1:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return`
+ `+t.escapeExpression(t.lambda((s=e!=null?o(e,"hint"):e)!=null?o(s,"description"):s,e))+` +
+`},3:function(t,e,n,r,i){var s,o=t.lambda,a=t.escapeExpression,l=t.lookupProperty||function(u,c){if(Object.prototype.hasOwnProperty.call(u,c))return u[c]};return`
+

+ `+a(o((s=e!=null?l(e,"hint"):e)!=null?l(s,"title"):s,e))+` +
`+a(o((s=e!=null?l(e,"hint"):e)!=null?l(s,"version"):s,e))+`
+

+
+`+((s=l(n,"if").call(e??(t.nullContext||{}),(s=e!=null?l(e,"hint"):e)!=null?l(s,"description"):s,{name:"if",hash:{},fn:t.program(4,i,0),inverse:t.noop,data:i,loc:{start:{line:12,column:2},end:{line:16,column:9}}}))!=null?s:"")},4:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return`
+ `+((s=t.lambda((s=e!=null?o(e,"hint"):e)!=null?o(s,"description"):s,e))!=null?s:"")+` +
+`},compiler:[8,">= 4.3.0"],main:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return(s=o(n,"if").call(e??(t.nullContext||{}),e!=null?o(e,"isPlain"):e,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(3,i,0),data:i,loc:{start:{line:1,column:0},end:{line:17,column:7}}}))!=null?s:""},useData:!0});var bl='
',El='.content a:not([data-no-tooltip=""])',yn=".tooltip",Ni=".tooltip .tooltip-body",Di="body .content-inner",xl="#content",Bi="tooltip-shown",_e=10,Sl=_e*4,kl=768,Ll=450,Tl=100,le={currentLinkElement:null,hoverDelayTimeout:null};window.addEventListener("exdoc:loaded",_l);function _l(){C(El).forEach(t=>{Pl(t)&&(t.addEventListener("mouseenter",Al),t.addEventListener("mouseleave",Cl))})}function Pl(t){return!(Ol(t.href)||!jn(t.href))}function Ol(t){let e=t.replace(xl,"");return window.location.href.split("#")[0]===e}function Al(t){if(window.innerWidth{Wn(e.href).then(Il).catch(()=>{})},Tl)}function Il(t){let e=Hi({isPlain:t.kind===ie.plain,hint:t}),n=f(Ni);n||(f(Di).insertAdjacentHTML("beforeend",bl),n=f(Ni)),n.innerHTML=e,Rl(),f(yn).classList.add(Bi)}function Cl(){le.currentLinkElement&&(clearTimeout(le.hoverDelayTimeout),Gn(),le.currentLinkElement=null,f(yn)?.classList.remove(Bi))}function Rl(){if(!le.currentLinkElement)return;let t=f(yn),e=le.currentLinkElement.getBoundingClientRect(),n=f(Di).getBoundingClientRect(),r=t.getBoundingClientRect(),i=Ml(e,n);if(e.left+r.width+_e code:first-child):not(:has(.copy-button))").forEach(t=>{if(!wn){let r=document.createElement("div");r.innerHTML=Qi,wn=r.firstChild}let e=wn.cloneNode(!0);t.appendChild(e);let n;e.addEventListener("click",()=>{clearTimeout(n);let r=Array.from(t.querySelectorAll("code > *:not(.unselectable)")).map(i=>i.textContent).join("");navigator.clipboard.writeText(r),e.classList.add("clicked"),e.disabled=!0,n=setTimeout(()=>{e.classList.remove("clicked"),e.disabled=!1},3e3)})})}var F=Y(Vi());var $i=Y(ae());var Ui=$i.template({1:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return" Search results for "+t.escapeExpression((s=(s=o(n,"value")||(e!=null?o(e,"value"):e))!=null?s:t.hooks.helperMissing,typeof s=="function"?s.call(e??(t.nullContext||{}),{name:"value",hash:{},data:i,loc:{start:{line:3,column:27},end:{line:3,column:36}}}):s))+` +`},3:function(t,e,n,r,i){return` Invalid search +`},5:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return(s=o(n,"each").call(e??(t.nullContext||{}),e!=null?o(e,"results"):e,{name:"each",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:2},end:{line:21,column:11}}}))!=null?s:""},6:function(t,e,n,r,i){var s,o=t.lambda,a=t.escapeExpression,l=t.lookupProperty||function(u,c){if(Object.prototype.hasOwnProperty.call(u,c))return u[c]};return`
+

+ + `+a(o(e!=null?l(e,"title"):e,e))+" ("+a(o(e!=null?l(e,"type"):e,e))+`) + +

+`+((s=l(n,"each").call(e??(t.nullContext||{}),e!=null?l(e,"excerpts"):e,{name:"each",hash:{},fn:t.program(7,i,0),inverse:t.noop,data:i,loc:{start:{line:17,column:8},end:{line:19,column:17}}}))!=null?s:"")+`
+`},7:function(t,e,n,r,i){var s;return'

'+((s=t.lambda(e,e))!=null?s:"")+`

+`},9:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return((s=(o(n,"isArray")||e&&o(e,"isArray")||t.hooks.helperMissing).call(e??(t.nullContext||{}),e!=null?o(e,"results"):e,{name:"isArray",hash:{},fn:t.program(10,i,0),inverse:t.program(12,i,0),data:i,loc:{start:{line:23,column:2},end:{line:29,column:14}}}))!=null?s:"")+` +

The search functionality is full-text based. Here are some tips:

+ +
    +
  • Multiple words (such as foo bar) are searched as OR
  • +
  • Use * anywhere (such as fo*) as wildcard
  • +
  • Use + before a word (such as +foo) to make its presence required
  • +
  • Use - before a word (such as -foo) to make its absence required
  • +
  • Use : to search on a particular field (such as field:word). The available fields are title, doc and type
  • +
  • Use WORD^NUMBER (such as foo^2) to boost the given word
  • +
  • Use WORD~NUMBER (such as foo~2) to do a search with edit distance on word
  • +
+ +

To quickly go to a module, type, or function, use the autocompletion feature in the sidebar search.

+`},10:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return"

Sorry, we couldn't find anything for "+t.escapeExpression((s=(s=o(n,"value")||(e!=null?o(e,"value"):e))!=null?s:t.hooks.helperMissing,typeof s=="function"?s.call(e??(t.nullContext||{}),{name:"value",hash:{},data:i,loc:{start:{line:24,column:48},end:{line:24,column:57}}}):s))+`.

+`},12:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return(s=o(n,"if").call(e??(t.nullContext||{}),e!=null?o(e,"value"):e,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(15,i,0),data:i,loc:{start:{line:25,column:2},end:{line:29,column:2}}}))!=null?s:""},13:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return"

Invalid search: "+t.escapeExpression((s=(s=o(n,"errorMessage")||(e!=null?o(e,"errorMessage"):e))!=null?s:t.hooks.helperMissing,typeof s=="function"?s.call(e??(t.nullContext||{}),{name:"errorMessage",hash:{},data:i,loc:{start:{line:26,column:23},end:{line:26,column:39}}}):s))+`.

+`},15:function(t,e,n,r,i){return`

Please type something into the search bar to perform a search.

+ `},compiler:[8,">= 4.3.0"],main:function(t,e,n,r,i){var s,o=e??(t.nullContext||{}),a=t.lookupProperty||function(l,u){if(Object.prototype.hasOwnProperty.call(l,u))return l[u]};return`

+`+((s=a(n,"if").call(o,e!=null?a(e,"value"):e,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(3,i,0),data:i,loc:{start:{line:2,column:2},end:{line:6,column:9}}}))!=null?s:"")+`

+ +`+((s=(a(n,"isNonEmptyArray")||e&&a(e,"isNonEmptyArray")||t.hooks.helperMissing).call(o,e!=null?a(e,"results"):e,{name:"isNonEmptyArray",hash:{},fn:t.program(5,i,0),inverse:t.program(9,i,0),data:i,loc:{start:{line:9,column:0},end:{line:44,column:20}}}))!=null?s:"")},useData:!0});var Nl="#search";F.default.tokenizer.separator=/\s+/;F.default.QueryLexer.termSeparator=/\s+/;F.default.Pipeline.registerFunction(zi,"docTokenSplitter");F.default.Pipeline.registerFunction(Gi,"docTrimmer");window.addEventListener("exdoc:loaded",Dl);function Dl(){let t=window.location.pathname;if(t.endsWith("/search.html")||t.endsWith("/search")){let e=Zn("q");Bl(e)}}async function Bl(t){if(he(t))bn({value:t});else{Ci(t);let e=await Ql();try{let n=t.replaceAll(/(\B|\\):/g,"\\:"),r=Kl(e.search(n));bn({value:t,results:r})}catch(n){bn({value:t,errorMessage:n.message})}}}function bn({value:t,results:e,errorMessage:n}){let r=f(Nl),i=Ui({value:t,results:e,errorMessage:n});r.innerHTML=i}async function Ql(){let t=await ql();if(t)return t;let e=Wl();return Fl(e),e}async function ql(){try{let t=sessionStorage.getItem(Wi());if(t){let e=await $l(t);return F.default.Index.load(e)}else return null}catch(t){return console.error("Failed to load index: ",t),null}}async function Fl(t){try{let e=await Vl(t);sessionStorage.setItem(Wi(),e)}catch(e){console.error("Failed to save index: ",e)}}async function Vl(t){let e=new Blob([JSON.stringify(t)],{type:"application/json"}).stream().pipeThrough(new window.CompressionStream("gzip")),r=await(await new Response(e).blob()).arrayBuffer();return Ul(r)}async function $l(t){let e=new Blob([jl(t)],{type:"application/json"}).stream().pipeThrough(new window.DecompressionStream("gzip")),n=await new Response(e).text();return JSON.parse(n)}function Ul(t){let e="",n=new Uint8Array(t),r=n.byteLength;for(let i=0;i{this.add(t)})})}function zl(t){t.pipeline.before(F.default.stemmer,zi)}function zi(t){let e=[t],n=/\/\d+$/,r=/\:|\./,i=t.toString();if(i.replace(/^[.,;?!]+|[.,;]+$/g,""),i.startsWith("`")&&i.endsWith("`")&&(i=i.slice(1,-1)),n.test(i)){let o=t.toString().replace(n,"");e.push(t.clone().update(()=>o));let a=o.split(r);if(a.length>1){for(let u of a)e.push(t.clone().update(()=>u));let l=t.toString().split(r);e.push(t.clone().update(()=>l[l.length-1]))}i=a[a.length-1]}else i.startsWith("@")?(i=i.substring(1),e.push(t.clone().update(()=>i))):i.startsWith(":")&&(i=i.substring(1),e.push(t.clone().update(()=>i)));let s=i.split(/\_|\-/);if(s.length>1)for(let o of s)e.push(t.clone().update(()=>o));return e}function Gl(t){t.pipeline.before(F.default.stemmer,Gi)}function Gi(t){return t.update(function(e){return e.replace(/^[^@:\w]+/,"").replace(/[^\?\!\w]+$/,"")})}function Kl(t){return t.filter(e=>ji(e.ref)).map(e=>{let n=ji(e.ref),r=e.matchData.metadata;return{...n,metadata:r,excerpts:Yl(n,r)}})}function ji(t){return searchData.items.find(e=>e.ref===t)||null}function Yl(t,e){let{doc:n}=t,r=Object.keys(e);return[Jl(n,r)]}function Jl(t,e){let r=t.split(`\r +\r +`).flatMap(a=>a.split(` + +`)),i;r.length>=2?r[0].trim().startsWith("#")?i=r[1]:i=r[0]:r.length===1?i=r[0]:i=t;let s;i.length>200?s=i.slice(0,200)+"...":s=i;let o=Ne(s);for(let a of e){if(a.trim()==="")continue;let l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),u=new RegExp(l,"gi");o=o.replace(u,c=>`${c}`)}return o}var Ki='';var Xl='button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',H=null,Sn=null,En=null,xn=!1;function Zl(){H||(document.body.insertAdjacentHTML("beforeend",Ki),H=f(".modal"),H.addEventListener("keydown",t=>{t.key==="Escape"&&ue()}),H.querySelector(".modal-close").addEventListener("click",ue),H.addEventListener("click",t=>{t.target===H&&ue()}))}function Yi(t){if(!xn)if(H.contains(t.target))En=t.target;else{xn=!0;let e=H.querySelectorAll(Xl);En===e[0]?e[e.length-1].focus():e[0].focus(),xn=!1,En=document.activeElement}}function yt({title:t,body:e}){Zl(),Sn=document.activeElement,document.addEventListener("focus",Yi,!0),H.querySelector(".modal-title").innerHTML=t,H.querySelector(".modal-body").innerHTML=e,H.classList.add("shown"),H.focus()}function ue(){H?.classList.remove("shown"),document.removeEventListener("focus",Yi,!0),Sn?.focus(),Sn=null}function Ji(){return Boolean(H?.classList.contains("shown"))}var Xi='
';var eu="https://hexdocs.pm/%%",tu="https://www.erlang.org/doc/apps/%%",nu="https://hex.pm/api/packages?search=name:%%*",ru=".display-quick-switch",es="#quick-switch-input",ts="#quick-switch-results",iu=300,su=9,ns=["erts","asn1","common_test","compiler","crypto","debugger","dialyzer","diameter","edoc","eldap","erl_interface","et","eunit","ftp","inets","jinterface","kernel","megaco","mnesia","observer","odbc","os_mon","parsetools","public_key","reltool","runtime_tools","sasl","snmp","ssh","ssl","stdlib","syntax_tools","tftp","tools","wx","xmerl"],ou=["elixir","eex","ex_unit","hex","iex","logger","mix"].concat(ns).map(t=>({name:t})),rs=2,D={autocompleteResults:[],selectedIdx:null};R||window.addEventListener("exdoc:loaded",au);function au(){C(ru).forEach(t=>{t.addEventListener("click",Ln)})}function lu(t){if(t.key==="Enter"){let e=t.target.value;cu(e),t.preventDefault()}else t.key==="ArrowUp"?(Zi(-1),t.preventDefault()):t.key==="ArrowDown"&&(Zi(1),t.preventDefault())}function uu(t){let e=t.target.value;if(e.lengthn.json()).then(n=>{Array.isArray(n)&&(D.autocompleteResults=pu(t,n),D.selectedIdx=null,f(es).value.length>=rs&&fu(D.autocompleteResults))})}function fu(t){f(ts).replaceChildren(...t.map(({name:e},n)=>{let r=E("div",{class:"quick-switch-result","data-index":n},[e]);return r.addEventListener("click",()=>kn(e)),r}))}function pu(t,e){return ou.concat(e).filter(n=>n.name.toLowerCase().includes(t.toLowerCase())).filter(n=>n.releases===void 0||n.releases[0].has_docs===!0).slice(0,su)}function Zi(t){D.selectedIdx=mu(t);let e=f(".quick-switch-result.selected"),n=f(`.quick-switch-result[data-index="${D.selectedIdx}"]`);e&&e.classList.remove("selected"),n&&n.classList.add("selected")}function mu(t){let e=D.autocompleteResults.length;if(D.selectedIdx===null){if(t>=0)return 0;if(t<0)return e-1}return(D.selectedIdx+t+e)%e}var gu="#settings-modal-content",Pn=[{key:"c",description:"Toggle sidebar",action:je},{key:"n",description:"Cycle themes",action:ar},{key:"s",description:"Focus search bar",displayAs:"/ or s",action:Tn},{key:"/",action:Tn},{key:"k",hasModifier:!0,action:Tn},{key:"v",description:"Open/focus version select",action:wu},{key:"g",description:"Go to package docs",displayAs:"g",action:Ln},{key:"?",displayAs:"?",description:"Bring up this modal",action:bu}],_n={shortcutBeingPressed:null};R||(document.addEventListener("keydown",vu),document.addEventListener("keyup",yu));function vu(t){if(_n.shortcutBeingPressed||t.target.matches("input, select, textarea"))return;let e=Pn.find(n=>n.hasModifier?Qe()&&t.metaKey||t.ctrlKey?n.key===t.key:!1:t.ctrlKey||t.metaKey||t.altKey?!1:n.key===t.key);e&&(_n.shortcutBeingPressed=e,t.preventDefault(),e.action(t))}function yu(t){_n.shortcutBeingPressed=null}function Tn(t){ue(),Ri()}function wu(){ue(),Sr()?dn():Lr().then(dn)}function bu(){Eu()?ue():On()}function Eu(){return Ji()&&f(gu)}var is=Y(ae());var ss=is.template({1:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return(s=o(n,"if").call(e??(t.nullContext||{}),e!=null?o(e,"description"):e,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.noop,data:i,loc:{start:{line:40,column:6},end:{line:53,column:13}}}))!=null?s:""},2:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return`
+
+ `+t.escapeExpression(t.lambda(e!=null?o(e,"description"):e,e))+` +
+
+`+((s=o(n,"if").call(e??(t.nullContext||{}),e!=null?o(e,"displayAs"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:46,column:12},end:{line:50,column:19}}}))!=null?s:"")+`
+
+`},3:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return" "+((s=t.lambda(e!=null?o(e,"displayAs"):e,e))!=null?s:"")+` +`},5:function(t,e,n,r,i){var s=t.lookupProperty||function(o,a){if(Object.prototype.hasOwnProperty.call(o,a))return o[a]};return" "+t.escapeExpression(t.lambda(e!=null?s(e,"key"):e,e))+` +`},compiler:[8,">= 4.3.0"],main:function(t,e,n,r,i){var s,o=t.lookupProperty||function(a,l){if(Object.prototype.hasOwnProperty.call(a,l))return a[l]};return`
+
+ + + + +
+ +
+`},useData:!0});var xu=".display-settings",Su="#settings-modal-content",An="#modal-settings-tab",In="#modal-keyboard-shortcuts-tab",as="#settings-content",ls="#keyboard-shortcuts-content",ku=[{title:"Settings",id:"modal-settings-tab"},{title:"Keyboard shortcuts",id:"modal-keyboard-shortcuts-tab"}];window.addEventListener("exdoc:loaded",Lu);function Lu(){C(xu).forEach(t=>{t.addEventListener("click",On)})}function os(){f(In).classList.remove("active"),f(An).classList.add("active"),f(as).classList.remove("hidden"),f(ls).classList.add("hidden")}function Tu(){f(In).classList.add("active"),f(An).classList.remove("active"),f(ls).classList.remove("hidden"),f(as).classList.add("hidden")}function On(){yt({title:ku.map(({id:s,title:o})=>``).join(""),body:ss({shortcuts:Pn})});let t=f(Su),e=t.querySelector('[name="theme"]'),n=t.querySelector('[name="tooltips"]'),r=t.querySelector('[name="direct_livebook_url"]'),i=t.querySelector('[name="livebook_url"]');M.getAndSubscribe(s=>{e.value=s.theme||"system",n.checked=s.tooltips,s.livebookUrl===null?(r.checked=!1,i.classList.add("hidden"),i.tabIndex=-1):(r.checked=!0,i.classList.remove("hidden"),i.tabIndex=0,i.value=s.livebookUrl)}),e.addEventListener("change",s=>{M.update({theme:s.target.value})}),n.addEventListener("change",s=>{M.update({tooltips:s.target.checked})}),r.addEventListener("change",s=>{let o=s.target.checked?i.value:null;M.update({livebookUrl:o})}),i.addEventListener("input",s=>{M.update({livebookUrl:s.target.value})}),f(An).addEventListener("click",s=>{os()}),f(In).addEventListener("click",s=>{Tu()}),os()}var Cn=new WeakMap;function Rn(t,e,n,r){if(!t&&!Cn.has(e))return!1;let i=Cn.get(e)??new WeakMap;Cn.set(e,i);let s=i.get(n)??new Set;i.set(n,s);let o=s.has(r);return t?s.add(r):s.delete(r),o&&t}function _u(t,e){let n=t.target;if(n instanceof Text&&(n=n.parentElement),n instanceof Element&&t.currentTarget instanceof Element){let r=n.closest(e);if(r&&t.currentTarget.contains(r))return r}}function Pu(t,e,n,r={}){let{signal:i,base:s=document}=r;if(i?.aborted)return;let{once:o,...a}=r,l=s instanceof Document?s.documentElement:s,u=Boolean(typeof r=="object"?r.capture:r),c=p=>{let g=_u(p,String(t));if(g){let m=Object.assign(p,{delegateTarget:g});n.call(l,m),o&&(l.removeEventListener(e,c,a),Rn(!1,l,n,d))}},d=JSON.stringify({selector:t,type:e,capture:u});Rn(!0,l,n,d)||l.addEventListener(e,c,a),i?.addEventListener("abort",()=>{Rn(!1,l,n,d)})}var wt=Pu;function O(){return O=Object.assign?Object.assign.bind():function(t){for(var e=1;eString(t).toLowerCase().replace(/[\s/_.]+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+|-+$/g,"")||e||"",Oe=({hash:t}={})=>window.location.pathname+window.location.search+(t?window.location.hash:""),Ou=(t,e={})=>{let n=O({url:t=t||Oe({hash:!0}),random:Math.random(),source:"swup"},e);window.history.pushState(n,"",t)},Pe=(t=null,e={})=>{t=t||Oe({hash:!0});let n=O({},window.history.state||{},{url:t,random:Math.random(),source:"swup"},e);window.history.replaceState(n,"",t)},Au=(t,e,n,r)=>{let i=new AbortController;return r=O({},r,{signal:i.signal}),wt(t,e,n,r),{destroy:()=>i.abort()}},A=class extends URL{constructor(e,n=document.baseURI){super(e.toString(),n),Object.setPrototypeOf(this,A.prototype)}get url(){return this.pathname+this.search}static fromElement(e){let n=e.getAttribute("href")||e.getAttribute("xlink:href")||"";return new A(n)}static fromUrl(e){return new A(e)}};var ge=class extends Error{constructor(e,n){super(e),this.url=void 0,this.status=void 0,this.aborted=void 0,this.timedOut=void 0,this.name="FetchError",this.url=n.url,this.status=n.status,this.aborted=n.aborted||!1,this.timedOut=n.timedOut||!1}};async function Iu(t,e={}){var n;t=A.fromUrl(t).url;let{visit:r=this.visit}=e,i=O({},this.options.requestHeaders,e.headers),s=(n=e.timeout)!=null?n:this.options.timeout,o=new AbortController,{signal:a}=o;e=O({},e,{headers:i,signal:a});let l,u=!1,c=null;s&&s>0&&(c=setTimeout(()=>{u=!0,o.abort("timeout")},s));try{l=await this.hooks.call("fetch:request",r,{url:t,options:e},(v,{url:w,options:x})=>fetch(w,x)),c&&clearTimeout(c)}catch(v){throw u?(this.hooks.call("fetch:timeout",r,{url:t}),new ge(`Request timed out: ${t}`,{url:t,timedOut:u})):v?.name==="AbortError"||a.aborted?new ge(`Request aborted: ${t}`,{url:t,aborted:!0}):v}let{status:d,url:h}=l,p=await l.text();if(d===500)throw this.hooks.call("fetch:error",r,{status:d,response:l,url:h}),new ge(`Server error: ${h}`,{status:d,url:h});if(!p)throw new ge(`Empty response: ${h}`,{status:d,url:h});let{url:g}=A.fromUrl(h),m={url:g,html:p};return!r.cache.write||e.method&&e.method!=="GET"||t!==g||this.cache.set(m.url,m),m}var Hn=class{constructor(e){this.swup=void 0,this.pages=new Map,this.swup=e}get size(){return this.pages.size}get all(){let e=new Map;return this.pages.forEach((n,r)=>{e.set(r,O({},n))}),e}has(e){return this.pages.has(this.resolve(e))}get(e){let n=this.pages.get(this.resolve(e));return n&&O({},n)}set(e,n){n=O({},n,{url:e=this.resolve(e)}),this.pages.set(e,n),this.swup.hooks.callSync("cache:set",void 0,{page:n})}update(e,n){e=this.resolve(e);let r=O({},this.get(e),n,{url:e});this.pages.set(e,r)}delete(e){this.pages.delete(this.resolve(e))}clear(){this.pages.clear(),this.swup.hooks.callSync("cache:clear",void 0,void 0)}prune(e){this.pages.forEach((n,r)=>{e(r,n)&&this.delete(r)})}resolve(e){let{url:n}=A.fromUrl(e);return this.swup.resolveUrl(n)}},Nn=(t,e=document)=>e.querySelector(t),Qn=(t,e=document)=>Array.from(e.querySelectorAll(t)),fs=()=>new Promise(t=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{t()})})});function ps(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}function Cu(t,e=[]){return new Promise((n,r)=>{let i=t(...e);ps(i)?i.then(n,r):n(i)})}function us(t,e){let n=t?.closest(`[${e}]`);return n!=null&&n.hasAttribute(e)?n?.getAttribute(e)||!0:void 0}var Dn=class{constructor(e){this.swup=void 0,this.swupClasses=["to-","is-changing","is-rendering","is-popstate","is-animating","is-leaving"],this.swup=e}get selectors(){let{scope:e}=this.swup.visit.animation;return e==="containers"?this.swup.visit.containers:e==="html"?["html"]:Array.isArray(e)?e:[]}get selector(){return this.selectors.join(",")}get targets(){return this.selector.trim()?Qn(this.selector):[]}add(...e){this.targets.forEach(n=>n.classList.add(...e))}remove(...e){this.targets.forEach(n=>n.classList.remove(...e))}clear(){this.targets.forEach(e=>{let n=e.className.split(" ").filter(r=>this.isSwupClass(r));e.classList.remove(...n)})}isSwupClass(e){return this.swupClasses.some(n=>e.startsWith(n))}},xt=class{constructor(e,n){this.id=void 0,this.state=void 0,this.from=void 0,this.to=void 0,this.containers=void 0,this.animation=void 0,this.trigger=void 0,this.cache=void 0,this.history=void 0,this.scroll=void 0,this.meta=void 0;let{to:r,from:i,hash:s,el:o,event:a}=n;this.id=Math.random(),this.state=1,this.from={url:i??e.location.url,hash:e.location.hash},this.to={url:r,hash:s},this.containers=e.options.containers,this.animation={animate:!0,wait:!1,name:void 0,native:e.options.native,scope:e.options.animationScope,selector:e.options.animationSelector},this.trigger={el:o,event:a},this.cache={read:e.options.cache,write:e.options.cache},this.history={action:"push",popstate:!1,direction:void 0},this.scroll={reset:!0,target:void 0},this.meta={}}advance(e){this.state=7}};function Ru(t){return new xt(this,t)}var Bn=class{constructor(e){this.swup=void 0,this.registry=new Map,this.hooks=["animation:out:start","animation:out:await","animation:out:end","animation:in:start","animation:in:await","animation:in:end","animation:skip","cache:clear","cache:set","content:replace","content:scroll","enable","disable","fetch:request","fetch:error","fetch:timeout","history:popstate","link:click","link:self","link:anchor","link:newtab","page:load","page:view","scroll:top","scroll:anchor","visit:start","visit:transition","visit:abort","visit:end"],this.swup=e,this.init()}init(){this.hooks.forEach(e=>this.create(e))}create(e){this.registry.has(e)||this.registry.set(e,new Map)}exists(e){return this.registry.has(e)}get(e){let n=this.registry.get(e);if(n)return n;console.error(`Unknown hook '${e}'`)}clear(){this.registry.forEach(e=>e.clear())}on(e,n,r={}){let i=this.get(e);if(!i)return console.warn(`Hook '${e}' not found.`),()=>{};let s=O({},r,{id:i.size+1,hook:e,handler:n});return i.set(n,s),()=>this.off(e,n)}before(e,n,r={}){return this.on(e,n,O({},r,{before:!0}))}replace(e,n,r={}){return this.on(e,n,O({},r,{replace:!0}))}once(e,n,r={}){return this.on(e,n,O({},r,{once:!0}))}off(e,n){let r=this.get(e);r&&n?r.delete(n)||console.warn(`Handler for hook '${e}' not found.`):r&&r.clear()}async call(e,n,r,i){let[s,o,a]=this.parseCallArgs(e,n,r,i),{before:l,handler:u,after:c}=this.getHandlers(e,a);await this.run(l,s,o);let[d]=await this.run(u,s,o,!0);return await this.run(c,s,o),this.dispatchDomEvent(e,s,o),d}callSync(e,n,r,i){let[s,o,a]=this.parseCallArgs(e,n,r,i),{before:l,handler:u,after:c}=this.getHandlers(e,a);this.runSync(l,s,o);let[d]=this.runSync(u,s,o,!0);return this.runSync(c,s,o),this.dispatchDomEvent(e,s,o),d}parseCallArgs(e,n,r,i){return n instanceof xt||typeof n!="object"&&typeof r!="function"?[n,r,i]:[void 0,n,r]}async run(e,n=this.swup.visit,r,i=!1){let s=[];for(let{hook:o,handler:a,defaultHandler:l,once:u}of e)if(n==null||!n.done){u&&this.off(o,a);try{let c=await Cu(a,[n,r,l]);s.push(c)}catch(c){if(i)throw c;console.error(`Error in hook '${o}':`,c)}}return s}runSync(e,n=this.swup.visit,r,i=!1){let s=[];for(let{hook:o,handler:a,defaultHandler:l,once:u}of e)if(n==null||!n.done){u&&this.off(o,a);try{let c=a(n,r,l);s.push(c),ps(c)&&console.warn(`Swup will not await Promises in handler for synchronous hook '${o}'.`)}catch(c){if(i)throw c;console.error(`Error in hook '${o}':`,c)}}return s}getHandlers(e,n){let r=this.get(e);if(!r)return{found:!1,before:[],handler:[],after:[],replaced:!1};let i=Array.from(r.values()),s=this.sortRegistrations,o=i.filter(({before:d,replace:h})=>d&&!h).sort(s),a=i.filter(({replace:d})=>d).filter(d=>!0).sort(s),l=i.filter(({before:d,replace:h})=>!d&&!h).sort(s),u=a.length>0,c=[];if(n&&(c=[{id:0,hook:e,handler:n}],u)){let d=a.length-1,{handler:h,once:p}=a[d],g=m=>{let v=a[m-1];return v?(w,x)=>v.handler(w,x,g(m-1)):n};c=[{id:0,hook:e,once:p,handler:h,defaultHandler:g(d)}]}return{found:!0,before:o,handler:c,after:l,replaced:u}}sortRegistrations(e,n){var r,i;return((r=e.priority)!=null?r:0)-((i=n.priority)!=null?i:0)||e.id-n.id||0}dispatchDomEvent(e,n,r){if(n!=null&&n.done)return;let i={hook:e,args:r,visit:n||this.swup.visit};document.dispatchEvent(new CustomEvent("swup:any",{detail:i,bubbles:!0})),document.dispatchEvent(new CustomEvent(`swup:${e}`,{detail:i,bubbles:!0}))}parseName(e){let[n,...r]=e.split(".");return[n,r.reduce((i,s)=>O({},i,{[s]:!0}),{})]}},Mu=t=>{if(t&&t.charAt(0)==="#"&&(t=t.substring(1)),!t)return null;let e=decodeURIComponent(t),n=document.getElementById(t)||document.getElementById(e)||Nn(`a[name='${CSS.escape(t)}']`)||Nn(`a[name='${CSS.escape(e)}']`);return n||t!=="top"||(n=document.body),n},bt="transition",Mn="animation";async function Hu({selector:t,elements:e}){if(t===!1&&!e)return;let n=[];if(e)n=Array.from(e);else if(t&&(n=Qn(t,document.body),!n.length))return void console.warn(`[swup] No elements found matching animationSelector \`${t}\``);let r=n.map(i=>function(s){let{type:o,timeout:a,propCount:l}=function(u){let c=window.getComputedStyle(u),d=Et(c,`${bt}Delay`),h=Et(c,`${bt}Duration`),p=cs(d,h),g=Et(c,`${Mn}Delay`),m=Et(c,`${Mn}Duration`),v=cs(g,m),w=Math.max(p,v),x=w>0?p>v?bt:Mn:null;return{type:x,timeout:w,propCount:x?x===bt?h.length:m.length:0}}(s);return!(!o||!a)&&new Promise(u=>{let c=`${o}end`,d=performance.now(),h=0,p=()=>{s.removeEventListener(c,g),u()},g=m=>{m.target===s&&((performance.now()-d)/1e3=l&&p())};setTimeout(()=>{h0?await Promise.all(r):t&&console.warn(`[swup] No CSS animation duration defined on elements matching \`${t}\``)}function Et(t,e){return(t[e]||"").split(", ")}function cs(t,e){for(;t.lengthds(n)+ds(t[r])))}function ds(t){return 1e3*parseFloat(t)}function Nu(t,e={},n={}){if(typeof t!="string")throw new Error("swup.navigate() requires a URL parameter");if(this.shouldIgnoreVisit(t,{el:n.el,event:n.event}))return void window.location.assign(t);let{url:r,hash:i}=A.fromUrl(t),s=this.createVisit(O({},n,{to:r,hash:i}));this.performNavigation(s,e)}async function Du(t,e={}){if(this.navigating){if(this.visit.state>=6)return t.state=2,void(this.onVisitEnd=()=>this.performNavigation(t,e));await this.hooks.call("visit:abort",this.visit,void 0),delete this.visit.to.document,this.visit.state=8}this.navigating=!0,this.visit=t;let{el:n}=t.trigger;e.referrer=e.referrer||this.location.url,e.animate===!1&&(t.animation.animate=!1),t.animation.animate||this.classes.clear();let r=e.history||us(n,"data-swup-history");typeof r=="string"&&["push","replace"].includes(r)&&(t.history.action=r);let i=e.animation||us(n,"data-swup-animation");var s,o;typeof i=="string"&&(t.animation.name=i),t.meta=e.meta||{},typeof e.cache=="object"?(t.cache.read=(s=e.cache.read)!=null?s:t.cache.read,t.cache.write=(o=e.cache.write)!=null?o:t.cache.write):e.cache!==void 0&&(t.cache={read:!!e.cache,write:!!e.cache}),delete e.cache;try{await this.hooks.call("visit:start",t,void 0),t.state=3;let a=this.hooks.call("page:load",t,{options:e},async(u,c)=>{let d;return u.cache.read&&(d=this.cache.get(u.to.url)),c.page=d||await this.fetchPage(u.to.url,c.options),c.cache=!!d,c.page});a.then(({html:u})=>{t.advance(5),t.to.html=u,t.to.document=new DOMParser().parseFromString(u,"text/html")});let l=t.to.url+t.to.hash;if(t.history.popstate||(t.history.action==="replace"||t.to.url===this.location.url?Pe(l):(this.currentHistoryIndex++,Ou(l,{index:this.currentHistoryIndex}))),this.location=A.fromUrl(l),t.history.popstate&&this.classes.add("is-popstate"),t.animation.name&&this.classes.add(`to-${hs(t.animation.name)}`),t.animation.wait&&await a,t.done||(await this.hooks.call("visit:transition",t,void 0,async()=>{if(!t.animation.animate)return await this.hooks.call("animation:skip",void 0),void await this.renderPage(t,await a);t.advance(4),await this.animatePageOut(t),t.animation.native&&document.startViewTransition?await document.startViewTransition(async()=>await this.renderPage(t,await a)).finished:await this.renderPage(t,await a),await this.animatePageIn(t)}),t.done))return;await this.hooks.call("visit:end",t,void 0,()=>this.classes.clear()),t.state=7,this.navigating=!1,this.onVisitEnd&&(this.onVisitEnd(),this.onVisitEnd=void 0)}catch(a){if(!a||a!=null&&a.aborted)return void(t.state=8);t.state=9,console.error(a),this.options.skipPopStateHandling=()=>(window.location.assign(t.to.url+t.to.hash),!0),window.history.back()}finally{delete t.to.document}}var Bu=async function(t){await this.hooks.call("animation:out:start",t,void 0,()=>{this.classes.add("is-changing","is-animating","is-leaving")}),await this.hooks.call("animation:out:await",t,{skip:!1},(e,{skip:n})=>{if(!n)return this.awaitAnimations({selector:e.animation.selector})}),await this.hooks.call("animation:out:end",t,void 0)},Qu=function(t){var e;let n=t.to.document;if(!n)return!1;let r=((e=n.querySelector("title"))==null?void 0:e.innerText)||"";document.title=r;let i=Qn('[data-swup-persist]:not([data-swup-persist=""])'),s=t.containers.map(o=>{let a=document.querySelector(o),l=n.querySelector(o);return a&&l?(a.replaceWith(l.cloneNode(!0)),!0):(a||console.warn(`[swup] Container missing in current document: ${o}`),l||console.warn(`[swup] Container missing in incoming document: ${o}`),!1)}).filter(Boolean);return i.forEach(o=>{let a=o.getAttribute("data-swup-persist"),l=Nn(`[data-swup-persist="${a}"]`);l&&l!==o&&l.replaceWith(o)}),s.length===t.containers.length},qu=function(t){let e={behavior:"auto"},{target:n,reset:r}=t.scroll,i=n??t.to.hash,s=!1;return i&&(s=this.hooks.callSync("scroll:anchor",t,{hash:i,options:e},(o,{hash:a,options:l})=>{let u=this.getAnchorElement(a);return u&&u.scrollIntoView(l),!!u})),r&&!s&&(s=this.hooks.callSync("scroll:top",t,{options:e},(o,{options:a})=>(window.scrollTo(O({top:0,left:0},a)),!0))),s},Fu=async function(t){if(t.done)return;let e=this.hooks.call("animation:in:await",t,{skip:!1},(n,{skip:r})=>{if(!r)return this.awaitAnimations({selector:n.animation.selector})});await fs(),await this.hooks.call("animation:in:start",t,void 0,()=>{this.classes.remove("is-animating")}),await e,await this.hooks.call("animation:in:end",t,void 0)},Vu=async function(t,e){if(t.done)return;t.advance(6);let{url:n}=e;this.isSameResolvedUrl(Oe(),n)||(Pe(n),this.location=A.fromUrl(n),t.to.url=this.location.url,t.to.hash=this.location.hash),await this.hooks.call("content:replace",t,{page:e},(r,{})=>{if(this.classes.remove("is-leaving"),r.animation.animate&&this.classes.add("is-rendering"),!this.replaceContent(r))throw new Error("[swup] Container mismatch, aborting");r.animation.animate&&(this.classes.add("is-changing","is-animating","is-rendering"),r.animation.name&&this.classes.add(`to-${hs(r.animation.name)}`))}),await this.hooks.call("content:scroll",t,void 0,()=>this.scrollToContent(t)),await this.hooks.call("page:view",t,{url:this.location.url,title:document.title})},$u=function(t){var e;if(e=t,Boolean(e?.isSwupPlugin)){if(t.swup=this,!t._checkRequirements||t._checkRequirements())return t._beforeMount&&t._beforeMount(),t.mount(),this.plugins.push(t),this.plugins}else console.error("Not a swup plugin instance",t)};function Uu(t){let e=this.findPlugin(t);if(e)return e.unmount(),e._afterUnmount&&e._afterUnmount(),this.plugins=this.plugins.filter(n=>n!==e),this.plugins;console.error("No such plugin",e)}function ju(t){return this.plugins.find(e=>e===t||e.name===t||e.name===`Swup${String(t)}`)}function Wu(t){if(typeof this.options.resolveUrl!="function")return console.warn("[swup] options.resolveUrl expects a callback function."),t;let e=this.options.resolveUrl(t);return e&&typeof e=="string"?e.startsWith("//")||e.startsWith("http")?(console.warn("[swup] options.resolveUrl needs to return a relative url"),t):e:(console.warn("[swup] options.resolveUrl needs to return a url"),t)}function zu(t,e){return this.resolveUrl(t)===this.resolveUrl(e)}var Gu={animateHistoryBrowsing:!1,animationSelector:'[class*="transition-"]',animationScope:"html",cache:!0,containers:["#swup"],hooks:{},ignoreVisit:(t,{el:e}={})=>!(e==null||!e.closest("[data-no-swup]")),linkSelector:"a[href]",linkToSelf:"scroll",native:!1,plugins:[],resolveUrl:t=>t,requestHeaders:{"X-Requested-With":"swup",Accept:"text/html, application/xhtml+xml"},skipPopStateHandling:t=>{var e;return((e=t.state)==null?void 0:e.source)!=="swup"},timeout:0},St=class{get currentPageUrl(){return this.location.url}constructor(e={}){var n,r;this.version="4.8.1",this.options=void 0,this.defaults=Gu,this.plugins=[],this.visit=void 0,this.cache=void 0,this.hooks=void 0,this.classes=void 0,this.location=A.fromUrl(window.location.href),this.currentHistoryIndex=void 0,this.clickDelegate=void 0,this.navigating=!1,this.onVisitEnd=void 0,this.use=$u,this.unuse=Uu,this.findPlugin=ju,this.log=()=>{},this.navigate=Nu,this.performNavigation=Du,this.createVisit=Ru,this.delegateEvent=Au,this.fetchPage=Iu,this.awaitAnimations=Hu,this.renderPage=Vu,this.replaceContent=Qu,this.animatePageIn=Fu,this.animatePageOut=Bu,this.scrollToContent=qu,this.getAnchorElement=Mu,this.getCurrentUrl=Oe,this.resolveUrl=Wu,this.isSameResolvedUrl=zu,this.options=O({},this.defaults,e),this.handleLinkClick=this.handleLinkClick.bind(this),this.handlePopState=this.handlePopState.bind(this),this.cache=new Hn(this),this.classes=new Dn(this),this.hooks=new Bn(this),this.visit=this.createVisit({to:""}),this.currentHistoryIndex=(n=(r=window.history.state)==null?void 0:r.index)!=null?n:1,this.enable()}async enable(){var e;let{linkSelector:n}=this.options;this.clickDelegate=this.delegateEvent(n,"click",this.handleLinkClick),window.addEventListener("popstate",this.handlePopState),this.options.animateHistoryBrowsing&&(window.history.scrollRestoration="manual"),this.options.native=this.options.native&&!!document.startViewTransition,this.options.plugins.forEach(r=>this.use(r));for(let[r,i]of Object.entries(this.options.hooks)){let[s,o]=this.hooks.parseName(r);this.hooks.on(s,i,o)}((e=window.history.state)==null?void 0:e.source)!=="swup"&&Pe(null,{index:this.currentHistoryIndex}),await fs(),await this.hooks.call("enable",void 0,void 0,()=>{let r=document.documentElement;r.classList.add("swup-enabled"),r.classList.toggle("swup-native",this.options.native)})}async destroy(){this.clickDelegate.destroy(),window.removeEventListener("popstate",this.handlePopState),this.cache.clear(),this.options.plugins.forEach(e=>this.unuse(e)),await this.hooks.call("disable",void 0,void 0,()=>{let e=document.documentElement;e.classList.remove("swup-enabled"),e.classList.remove("swup-native")}),this.hooks.clear()}shouldIgnoreVisit(e,{el:n,event:r}={}){let{origin:i,url:s,hash:o}=A.fromUrl(e);return i!==window.location.origin||!(!n||!this.triggerWillOpenNewWindow(n))||!!this.options.ignoreVisit(s+o,{el:n,event:r})}handleLinkClick(e){let n=e.delegateTarget,{href:r,url:i,hash:s}=A.fromElement(n);if(this.shouldIgnoreVisit(r,{el:n,event:e}))return;if(this.navigating&&i===this.visit.to.url)return void e.preventDefault();let o=this.createVisit({to:i,hash:s,el:n,event:e});e.metaKey||e.ctrlKey||e.shiftKey||e.altKey?this.hooks.callSync("link:newtab",o,{href:r}):e.button===0&&this.hooks.callSync("link:click",o,{el:n,event:e},()=>{var a;let l=(a=o.from.url)!=null?a:"";e.preventDefault(),i&&i!==l?this.isSameResolvedUrl(i,l)||this.performNavigation(o):s?this.hooks.callSync("link:anchor",o,{hash:s},()=>{Pe(i+s),this.scrollToContent(o)}):this.hooks.callSync("link:self",o,void 0,()=>{this.options.linkToSelf==="navigate"?this.performNavigation(o):(Pe(i),this.scrollToContent(o))})})}handlePopState(e){var n,r,i,s;let o=(n=(r=e.state)==null?void 0:r.url)!=null?n:window.location.href;if(this.options.skipPopStateHandling(e)||this.isSameResolvedUrl(Oe(),this.location.url))return;let{url:a,hash:l}=A.fromUrl(o),u=this.createVisit({to:a,hash:l,event:e});u.history.popstate=!0;let c=(i=(s=e.state)==null?void 0:s.index)!=null?i:0;c&&c!==this.currentHistoryIndex&&(u.history.direction=c-this.currentHistoryIndex>0?"forwards":"backwards",this.currentHistoryIndex=c),u.animation.animate=!1,u.scroll.reset=!1,u.scroll.target=!1,this.options.animateHistoryBrowsing&&(u.animation.animate=!0,u.scroll.reset=!0),this.hooks.callSync("history:popstate",u,{event:e},()=>{this.performNavigation(u)})}triggerWillOpenNewWindow(e){return!!e.matches('[download], [target="_blank"]')}};function Ae(){return Ae=Object.assign?Object.assign.bind():function(t){for(var e=1;eString(t).split(".").map(e=>String(parseInt(e||"0",10))).concat(["0","0"]).slice(0,3).join("."),ve=class{constructor(){this.isSwupPlugin=!0,this.swup=void 0,this.version=void 0,this.requires={},this.handlersToUnregister=[]}mount(){}unmount(){this.handlersToUnregister.forEach(e=>e()),this.handlersToUnregister=[]}_beforeMount(){if(!this.name)throw new Error("You must define a name of plugin when creating a class.")}_afterUnmount(){}_checkRequirements(){return typeof this.requires!="object"||Object.entries(this.requires).forEach(([e,n])=>{if(!function(r,i,s){let o=function(a,l){var u;if(a==="swup")return(u=l.version)!=null?u:"";{var c;let d=l.findPlugin(a);return(c=d?.version)!=null?c:""}}(r,s);return!!o&&((a,l)=>l.every(u=>{let[,c,d]=u.match(/^([\D]+)?(.*)$/)||[];var h,p;return((g,m)=>{let v={"":w=>w===0,">":w=>w>0,">=":w=>w>=0,"<":w=>w<0,"<=":w=>w<=0};return(v[m]||v[""])(g)})((p=d,h=ms(h=a),p=ms(p),h.localeCompare(p,void 0,{numeric:!0})),c||">=")}))(o,i)}(e,n=Array.isArray(n)?n:[n],this.swup)){let r=`${e} ${n.join(", ")}`;throw new Error(`Plugin version mismatch: ${this.name} requires ${r}`)}}),!0}on(e,n,r={}){var i;n=!(i=n).name.startsWith("bound ")||i.hasOwnProperty("prototype")?n.bind(this):n;let s=this.swup.hooks.on(e,n,r);return this.handlersToUnregister.push(s),s}once(e,n,r={}){return this.on(e,n,Ae({},r,{once:!0}))}before(e,n,r={}){return this.on(e,n,Ae({},r,{before:!0}))}replace(e,n,r={}){return this.on(e,n,Ae({},r,{replace:!0}))}off(e,n){return this.swup.hooks.off(e,n)}};(function(){if(!(typeof window>"u"||typeof document>"u"||typeof HTMLElement>"u")){var t=!1;try{var e=document.createElement("div");e.addEventListener("focus",function(s){s.preventDefault(),s.stopPropagation()},!0),e.focus(Object.defineProperty({},"preventScroll",{get:function(){if(navigator&&typeof navigator.userAgent<"u"&&navigator.userAgent&&navigator.userAgent.match(/Edge\/1[7-8]/))return t=!1;t=!0}}))}catch{}if(HTMLElement.prototype.nativeFocus===void 0&&!t){HTMLElement.prototype.nativeFocus=HTMLElement.prototype.focus;var n=function(s){for(var o=s.parentNode,a=[],l=document.scrollingElement||document.documentElement;o&&o!==l;)(o.offsetHeightn.replace(`{${r}}`,e[r]||""),t||"")}var Fn=class{constructor(){var e;this.id="swup-announcer",this.style="position:absolute;top:0;left:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;word-wrap:normal;width:1px;height:1px;",this.region=void 0,this.region=(e=this.getRegion())!=null?e:this.createRegion()}getRegion(){return document.getElementById(this.id)}createRegion(){let e=function(n){let r=document.createElement("template");return r.innerHTML=n,r.content.children[0]}(`

`);return document.body.appendChild(e),e}announce(e,n=0){return new Promise(r=>{setTimeout(()=>{this.region.textContent===e&&(e=`${e}.`),this.region.textContent="",this.region.textContent=e,r()},n)})}};function vs(t){let e;if(e=typeof t=="string"?document.querySelector(t):t,!(e instanceof HTMLElement))return;let n=e.getAttribute("tabindex");e.setAttribute("tabindex","-1"),e.focus({preventScroll:!0}),n!==null&&e.setAttribute("tabindex",n)}var kt=class extends ve{constructor(e={}){super(),this.name="SwupA11yPlugin",this.requires={swup:">=4"},this.defaults={headingSelector:"h1",respectReducedMotion:!0,autofocus:!1,announcements:{visit:"Navigated to: {title}",url:"New page at {url}"}},this.options=void 0,this.announcer=void 0,this.announcementDelay=100,this.rootSelector="body",this.handleAnchorScroll=(n,{hash:r})=>{let i=this.swup.getAnchorElement(r);i instanceof HTMLElement&&vs(i)},this.options=qn({},this.defaults,e),this.announcer=new Fn}mount(){this.swup.hooks.create("content:announce"),this.swup.hooks.create("content:focus"),this.before("visit:start",this.prepareVisit),this.on("visit:start",this.markAsBusy),this.on("visit:end",this.unmarkAsBusy),this.on("visit:end",this.focusContent),this.on("visit:end",this.announceContent),this.on("scroll:anchor",this.handleAnchorScroll),this.before("visit:start",this.disableAnimations),this.before("link:self",this.disableAnimations),this.before("link:anchor",this.disableAnimations),this.swup.announce=this.announce.bind(this)}unmount(){this.swup.announce=void 0}async announce(e){await this.announcer.announce(e)}markAsBusy(){document.documentElement.setAttribute("aria-busy","true")}unmarkAsBusy(){document.documentElement.removeAttribute("aria-busy")}prepareVisit(e){e.a11y={announce:void 0,focus:this.rootSelector}}announceContent(e){this.swup.hooks.callSync("content:announce",e,void 0,n=>{n.a11y.announce===void 0&&(n.a11y.announce=this.getPageAnnouncement()),n.a11y.announce&&this.announcer.announce(n.a11y.announce,this.announcementDelay)})}focusContent(e){this.swup.hooks.callSync("content:focus",e,void 0,n=>{n.a11y.focus&&(this.options.autofocus&&function(){let r=function(){let i=document.querySelector("body [autofocus]");if(i&&!i.closest('[inert], [aria-disabled], [aria-hidden="true"]'))return i}();return!!r&&(r!==document.activeElement&&r.focus(),!0)}()===!0||vs(n.a11y.focus))})}getPageAnnouncement(){let{headingSelector:e,announcements:n}=this.options;return function({headingSelector:r="h1",announcements:i={}}){var s,o;let a=document.documentElement.lang||"*",{href:l,url:u,pathname:c}=A.fromUrl(window.location.href),d=(s=(o=i[a])!=null?o:i["*"])!=null?s:i;if(typeof d!="object")return;let h=document.querySelector(r);h||console.warn(`SwupA11yPlugin: No main heading (${r}) found on new page`);let p=h?.getAttribute("aria-label")||h?.textContent||document.title||gs(d.url,{href:l,url:u,path:c});return gs(d.visit,{title:p,href:l,url:u,path:c})}({headingSelector:e,announcements:n})}disableAnimations(e){this.options.respectReducedMotion&&window.matchMedia("(prefers-reduced-motion: reduce)").matches&&(e.animation.animate=!1,e.scroll.animate=!1)}};function Vn(){return Vn=Object.assign?Object.assign.bind():function(t){for(var e=1;e{let a=Math.random()*this.trickleValue;this.setValue(this.value+a)},e!==void 0&&(this.className=String(e)),n!==void 0&&(this.styleAttr=String(n)),r!==void 0&&(this.animationDuration=Number(r)),i!==void 0&&(this.minValue=Number(i)),s!==void 0&&(this.initialValue=Number(s)),o!==void 0&&(this.trickleValue=Number(o)),this.styleElement=this.createStyleElement(),this.progressElement=this.createProgressElement()}get defaultStyles(){return` + .${this.className} { + position: fixed; + display: block; + top: 0; + left: 0; + width: 100%; + height: 3px; + background-color: black; + z-index: 9999; + transition: + transform ${this.animationDuration}ms ease-out, + opacity ${this.animationDuration/2}ms ${this.animationDuration/2}ms ease-in; + transform: translate3d(0, 0, 0) scaleX(var(--progress, 0)); + transform-origin: 0; + } + `}show(){this.visible||(this.visible=!0,this.installStyleElement(),this.installProgressElement(),this.startTrickling())}hide(){this.visible&&!this.hiding&&(this.hiding=!0,this.fadeProgressElement(()=>{this.uninstallProgressElement(),this.stopTrickling(),this.visible=!1,this.hiding=!1}))}setValue(e){this.value=Math.min(1,Math.max(this.minValue,e)),this.refresh()}installStyleElement(){document.head.prepend(this.styleElement)}installProgressElement(){this.progressElement.style.setProperty("--progress",String(0)),this.progressElement.style.opacity="1",document.body.prepend(this.progressElement),this.progressElement.scrollTop=0,this.setValue(Math.random()*this.initialValue)}fadeProgressElement(e){this.progressElement.style.opacity="0",setTimeout(e,1.5*this.animationDuration)}uninstallProgressElement(){this.progressElement.remove()}startTrickling(){this.trickleInterval||(this.trickleInterval=window.setInterval(this.trickle,this.animationDuration))}stopTrickling(){window.clearInterval(this.trickleInterval),delete this.trickleInterval}refresh(){requestAnimationFrame(()=>{this.progressElement.style.setProperty("--progress",String(this.value))})}createStyleElement(){let e=document.createElement("style");return this.styleAttr.split(" ").forEach(n=>e.setAttribute(n,"")),e.textContent=this.defaultStyles,e}createProgressElement(){let e=document.createElement("div");return e.className=this.className,e.setAttribute("aria-hidden","true"),e}},Lt=class extends ve{constructor(e={}){super(),this.name="SwupProgressPlugin",this.defaults={className:"swup-progress-bar",delay:300,transition:300,minValue:.1,initialValue:.25,finishAnimation:!0},this.options=void 0,this.progressBar=void 0,this.showProgressBarTimeout=void 0,this.hideProgressBarTimeout=void 0,this.options=Vn({},this.defaults,e);let{className:n,minValue:r,initialValue:i,transition:s}=this.options;this.progressBar=new $n({className:n,minValue:r,initialValue:i,animationDuration:s})}mount(){this.on("visit:start",this.startShowingProgress),this.on("page:view",this.stopShowingProgress)}startShowingProgress(){this.progressBar.setValue(0),this.showProgressBarAfterDelay()}stopShowingProgress(){this.progressBar.setValue(1),this.options.finishAnimation?this.finishAnimationAndHideProgressBar():this.hideProgressBar()}showProgressBar(){this.cancelHideProgressBarTimeout(),this.progressBar.show()}showProgressBarAfterDelay(){this.cancelShowProgressBarTimeout(),this.cancelHideProgressBarTimeout(),this.showProgressBarTimeout=window.setTimeout(this.showProgressBar.bind(this),this.options.delay)}hideProgressBar(){this.cancelShowProgressBarTimeout(),this.progressBar.hide()}finishAnimationAndHideProgressBar(){this.cancelShowProgressBarTimeout(),this.hideProgressBarTimeout=window.setTimeout(this.hideProgressBar.bind(this),this.options.transition)}cancelShowProgressBarTimeout(){window.clearTimeout(this.showProgressBarTimeout),delete this.showProgressBarTimeout}cancelHideProgressBarTimeout(){window.clearTimeout(this.hideProgressBarTimeout),delete this.hideProgressBarTimeout}};var ys=()=>{window.dispatchEvent(new Event("exdoc:loaded"))},Ku=(t,{page:e})=>{//i.test(e.html)&&(t.abort(),window.location.reload())};window.addEventListener("DOMContentLoaded",ys);!R&&window.location.protocol!=="file:"&&new St({animationSelector:!1,containers:["#main"],ignoreVisit:t=>{let e=t.split("#")[0];return e===window.location.pathname||e===window.location.pathname+".html"},linkSelector:'a[href]:not([href^="/"]):not([href^="http"])',hooks:{"page:load":Ku,"page:view":ys},plugins:[new kt,new Lt({delay:500})]});})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/doc/dist/html-erlang-7YNYEB7F.css b/doc/dist/html-erlang-7YNYEB7F.css new file mode 100644 index 0000000..5b1e7e8 --- /dev/null +++ b/doc/dist/html-erlang-7YNYEB7F.css @@ -0,0 +1,6 @@ +:root{--main: hsl(0, 100%, 44%);--mainDark: hsl(0, 100%, 34%);--mainDarkest: hsl(0, 100%, 24%);--mainLight: hsl(0, 100%, 64%);--mainLightest: hsl(0, 100%, 74%);--searchBarFocusColor: hsl(0, 100%, 50%);--searchBarBorderColor: rgb(255, 71, 71, .1);--link-color: hsl(212, 96%, 45%);--link-visited-color: hsl(212, 96%, 40%)}body.dark{--link-color: hsl(212, 56%, 72%);--link-visited-color: hsl(212, 56%, 67%)}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:400;src:url(./lato-latin-ext-400-normal-N27NCBWW.woff2) format("woff2"),url(./lato-all-400-normal-MNITWADU.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:400;src:url(./lato-latin-400-normal-W7754I4D.woff2) format("woff2"),url(./lato-all-400-normal-MNITWADU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:700;src:url(./lato-latin-ext-700-normal-Q2L5DVMW.woff2) format("woff2"),url(./lato-all-700-normal-XMT5XFBS.woff) format("woff");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lato;font-style:normal;font-display:swap;font-weight:700;src:url(./lato-latin-700-normal-2XVSBPG4.woff2) format("woff2"),url(./lato-all-700-normal-XMT5XFBS.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--content-width: 949px;--content-gutter: 60px;--borderRadius-lg: 14px;--borderRadius-base: 8px;--borderRadius-sm: 3px;--navTabBorderWidth: 2px;--sansFontFamily: "Lato", system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--monoFontFamily: ui-monospace, SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;--baseLineHeight: 1.5em;--gray10: hsl(207, 43%, 98.5%);--gray25: hsl(207, 43%, 98%);--gray50: hsl(207, 43%, 96%);--gray100: hsl(212, 33%, 91%);--gray200: hsl(210, 29%, 88%);--gray300: hsl(210, 26%, 76%);--gray400: hsl(210, 21%, 64%);--gray450: hsl(210, 21%, 49%);--gray500: hsl(210, 21%, 34%);--gray600: hsl(210, 27%, 26%);--gray650: hsl(211, 32%, 22%);--gray700: hsl(212, 35%, 17%);--gray750: hsl(214, 46%, 14%);--gray800: hsl(216, 52%, 11%);--gray800-opacity-0: hsla(216, 52%, 11%, 0%);--gray850: hsl(216, 63%, 8%);--gray900: hsl(218, 73%, 4%);--gray900-opacity-50: hsla(218, 73%, 4%, 50%);--gray900-opacity-0: hsla(218, 73%, 4%, 0%);--coldGrayFaint: hsl(240, 5%, 97%);--coldGrayLight: hsl(240, 5%, 88%);--coldGray-lightened-10: hsl(240, 5%, 56%);--coldGray: hsl(240, 5%, 46%);--coldGray-opacity-10: hsla(240, 5%, 46%, 10%);--coldGrayDark: hsl(240, 5%, 28%);--coldGrayDim: hsl(240, 5%, 18%);--yellowLight: hsl(43, 100%, 95%);--yellowDark: hsl(44, 100%, 15%);--yellow: hsl(60, 100%, 43%);--green-lightened-10: hsl(90, 100%, 45%);--green: hsl(90, 100%, 35%);--white: hsl(0, 0%, 100%);--white-opacity-80: hsla(0, 0%, 100%, 80%);--white-opacity-50: hsla(0, 0%, 100%, 50%);--white-opacity-10: hsla(0, 0%, 100%, 10%);--white-opacity-0: hsla(0, 0%, 100%, 0%);--black: hsl(0, 0%, 0%);--black-opacity-80: hsla(0, 0%, 0%, 80%);--black-opacity-50: hsla(0, 0%, 0%, 50%);--black-opacity-30: hsla(0, 0%, 0%, 30%);--black-opacity-10: hsla(0, 0%, 0%, 10%);--black-opacity-0: hsla(0, 0%, 0%, 10%);--orangeDark: hsl(30, 90%, 40%);--orangeLight: hsl(30, 80%, 50%);--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--transition-duration: .15s;--transition-timing: cubic-bezier(.4, 0, .2, 1);--transition-all: all var(--transition-duration) var(--transition-timing);--transition-colors: color var(--transition-duration) var(--transition-timing), background-color var(--transition-duration) var(--transition-timing), border-color var(--transition-duration) var(--transition-timing), text-decoration-color var(--transition-duration) var(--transition-timing), fill var(--transition-duration) var(--transition-timing), stroke var(--transition-duration) var(--transition-timing);--transition-opacity: opacity var(--transition-duration) var(--transition-timing)}@media screen and (max-width: 768px){:root{--content-width: 100%;--content-gutter: 20px}}option{background-color:var(--sidebarBackground)}:root{--background: var(--white);--contrast: var(--black);--textBody: var(--gray800);--textHeaders: var(--gray900);--textDetailAccent: var(--mainLight);--textDetailBackground: var(--coldGrayFaint);--iconAction: var(--coldGray);--iconActionHover: var(--gray800);--blockquoteBackground: var(--coldGrayFaint);--blockquoteBorder: var(--coldGrayLight);--tableHeadBorder: var(--gray100);--tableBodyBorder: var(--gray50);--warningHue: 34;--errorHue: 7;--infoHue: 206;--neutralHue: 212;--tipHue: 142;--admMixCol: var(--gray100);--admMixAmt: 25%;--warningBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--warningHue), 100%, 96%) 100%);--warningHeading: hsl(var(--warningHue), 95%, 38%);--errorBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--errorHue), 85%, 96%) 100%);--errorHeading: hsl(var(--errorHue), 80%, 40%);--infoBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--infoHue), 90%, 96%) 100%);--infoHeading: hsl(var(--infoHue), 60%, 30%);--neutralBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--neutralHue), 40%, 93%) 100%);--neutralHeading: hsl(var(--neutralHue), 35%, 30%);--tipBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--tipHue), 40%, 93%) 100%);--tipHeading: hsl(var(--tipHue), 55%, 25%);--fnSpecAttr: var(--coldGray);--fnDeprecated: var(--yellowLight);--blink: var(--yellowLight);--codeBackground: var(--gray10);--codeBorder: var(--gray100);--codeScrollThumb: var(--gray400);--codeScrollBackground: var(--codeBorder);--admCodeBackground: var(--white-opacity-80);--admCodeBorder: var(--black-opacity-10);--admCodeColor: var(--black);--tabBorder: var(--gray300);--tabBorderTop: var(--gray100);--tabShadow: var(--gray25);--bottomActionsBtnBorder: var(--black-opacity-10);--bottomActionsBtnTitle: var(--mainDark);--modalBackground: var(--white);--settingsInput: var(--gray500);--settingsInputBackground: var(--white);--settingsInputBorder: var(--gray300);--settingsSectionBorder: var(--gray300);--quickSwitchInput: var(--gray500);--quickSwitchContour: var(--coldGray);--success: var(--green);--progressBarColor: var(--gray400);--sidebarAccentMain: var(--black);--sidebarBackground: var(--gray50);--sidebarHeader: var(--gray100);--sidebarMuted: var(--gray800);--sidebarHover: var(--black);--sidebarStaleVersion: var(--orangeDark);--sidebarSubheadings: var(--gray500);--sidebarItem: var(--black);--sidebarInactiveItemBorder: var(--gray500);--sidebarInactiveItemMarker: var(--gray200);--sidebarLanguageAccentBar: var(--mainDark);--sidebarActiveItem: var(--mainDarkest);--searchBarBorder: var(--gray200);--searchAccentMain: var(--gray600);--searchLanguageAccentBar: var(--main);--searchSearch: var(--white);--autocompleteBorder: rgba(3, 9, 19, .1);--autocompletePreview: var(--gray25);--autocompleteSelected: var(--gray25);--autocompleteHover: var(--gray50);--autocompleteBackground: var(--white);--suggestionBorder: var(--gray200);--autocompleteResults: var(--gray600);--autocompleteResultsBold: var(--gray800);--autocompleteLabelBack: var(--gray100);--autocompleteLabelFont: var(--gray600)}body.dark{--background: var(--gray900);--contrast: var(--white);--textBody: var(--gray200);--textHeaders: var(--gray100);--textDetailAccent: var(--mainLight);--textDetailBackground: var(--gray700);--iconAction: var(--coldGray-lightened-10);--iconActionHover: var(--white);--blockquoteBackground: var(--coldGray-opacity-10);--blockquoteBorder: var(--coldGrayDim);--tableHeadBorder: var(--gray600);--tableBodyBorder: var(--gray700);--warningHue: 34;--errorHue: 7;--infoHue: 206;--neutralHue: 212;--tipHue: 142;--admMixCol: var(--gray900);--admMixAmt: 40%;--warningBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--warningHue), 40%, 14%) 100%);--warningHeading: hsl(var(--warningHue), 100%, 50%);--errorBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--errorHue), 40%, 14%) 100%);--errorHeading: hsl(var(--errorHue), 100%, 52%);--infoBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--infoHue), 60%, 15%) 100%);--infoHeading: hsl(var(--infoHue), 100%, 52%);--neutralBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--neutralHue), 40%, 14%) 100%);--neutralHeading: hsl(var(--neutralHue), 50%, 80%);--tipBackground: color-mix(in xyz, var(--admMixCol) var(--admMixAmt), hsl(var(--tipHue), 40%, 14%) 100%);--tipHeading: hsl(var(--tipHue), 55%, 48%);--fnSpecAttr: var(--gray400);--fnDeprecated: var(--yellowDark);--blink: var(--gray600);--codeBackground: var(--gray800);--codeBorder: var(--gray650);--codeScrollThumb: var(--gray500);--codeScrollBackground: var(--codeBorder);--admCodeBackground: var(--black-opacity-30);--admCodeBorder: var(--white-opacity-10);--admCodeColor: var(--gray100);--tabBorder: var(--gray700);--tabBorderTop: var(--gray700);--tabShadow: var(--black);--bottomActionsBtnBorder: var(--white-opacity-10);--bottomActionsBtnTitle: var(--mainLightest);--modalBackground: var(--gray800);--settingsInput: var(--white);--settingsInputBackground: var(--gray700);--settingsInputBorder: var(--gray700);--settingsSectionBorder: var(--gray700);--quickSwitchInput: var(--gray300);--quickSwitchContour: var(--gray500);--success: var(--green-lightened-10);--progressBarColor: var(--gray300);--sidebarAccentMain: var(--gray50);--sidebarBackground: var(--gray800);--sidebarHeader: var(--gray700);--sidebarMuted: var(--gray300);--sidebarHover: var(--white);--sidebarStaleVersion: var(--orangeLight);--sidebarSubheadings: var(--gray400);--sidebarItem: var(--gray200);--sidebarInactiveItemBorder: var(--gray400);--sidebarInactiveItemMarker: var(--gray600);--sidebarLanguageAccentBar: var(--mainLight);--sidebarActiveItem: var(--mainLightest);--searchBarBorder: var(--gray500);--searchAccentMain: var(--gray300);--searchSearch: var(--gray900);--autocompleteBorder: rgba(28,42,60,.75);--autocompletePreview: var(--gray750);--autocompleteSelected: var(--gray750);--autocompleteHover: var(--gray700);--autocompleteBackground: var(--gray800);--suggestionBorder: var(--gray600);--autocompleteResults: var(--gray200);--autocompleteResultsBold: var(--gray100);--autocompleteLabelBack: var(--gray600);--autocompleteLabelFont: rgba(255, 255, 255, .8)}:root:has(body.dark){color-scheme:dark}*,:before,:after{box-sizing:border-box}html{font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";line-height:1.15;-webkit-text-size-adjust:100%;tab-size:4}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:currentcolor}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}@font-face{font-family:remixicon;src:url(./remixicon-QPNJX265.woff2) format("woff2");font-display:swap}[class^=ri-],[class*=" ri-"],.remix-icon{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--icon-arrow-up-s: "\ea78";--icon-arrow-down-s: "\ea4e";--icon-arrow-right-s: "\ea6e";--icon-add: "\ea13";--icon-subtract: "\f1af";--icon-error-warning: "\eca1";--icon-external-link-line: "\ecaf";--icon-information: "\ee59";--icon-alert: "\ea21";--icon-double-quotes-l: "\ec51";--icon-link-m: "\eeaf";--icon-close-line: "\eb99";--icon-code-s-slash-line: "\ebad";--icon-menu-line: "\ef3e";--icon-search-2-line: "\f0cd";--icon-settings-3-line: "\f0e6";--icon-printer-line: "\f029"}.ri-lg{font-size:1.3333em;line-height:.75em;vertical-align:-.0667em}.ri-settings-3-line:before{content:var(--icon-settings-3-line)}.ri-add-line:before{content:var(--icon-add)}.ri-subtract-line:before{content:var(--icon-subtract)}.ri-arrow-up-s-line:before{content:var(--icon-arrow-up-s)}.ri-arrow-down-s-line:before{content:var(--icon-arrow-down-s)}.ri-arrow-right-s-line:before{content:var(--icon-arrow-right-s)}.ri-external-link-line:before{content:var(--icon-external-link-line)}.ri-search-2-line:before{content:var(--icon-search-2-line)}.ri-menu-line:before{content:var(--icon-menu-line)}.ri-close-line:before{content:var(--icon-close-line)}.ri-link-m:before{content:var(--icon-link-m)}.ri-code-s-slash-line:before{content:var(--icon-code-s-slash-line)}.ri-error-warning-line:before{content:var(--icon-error-warning)}.ri-information-line:before{content:var(--icon-information)}.ri-alert-line:before{content:var(--icon-alert)}.ri-double-quotes-l:before{content:var(--icon-double-quotes-l)}.ri-printer-line:before{content:var(--icon-printer-line)}html,body{box-sizing:border-box;height:100%;width:100%}body{--sidebarWidth: 300px;--sidebarMinWidth: 300px;--sidebarTransitionDuration: .3s;background-color:var(--background);color:var(--textBody);font-size:var(--text-md);line-height:1.6875em;outline:none!important}*,*:before,*:after{box-sizing:inherit}.body-wrapper{display:flex;height:100%}.sidebar{display:none;flex-direction:column;width:var(--sidebarWidth);min-width:var(--sidebarMinWidth);max-width:50vw;height:100%;position:fixed;top:0;left:calc(-1 * var(--sidebarWidth));z-index:100;resize:horizontal}.sidebar-button{padding:20px 12px 18px 19px;position:fixed;z-index:200;top:0;left:0;will-change:transform;transform:translate(0)}.content{left:0;width:100%;height:100%;position:absolute}.content .content-inner{container:content / inline-size;max-width:var(--content-width);min-height:100%;margin:0 auto;padding:0 var(--content-gutter) 10px}.content-inner:focus{outline:none}.sidebar-transition .sidebar,.sidebar-transition .sidebar-button,.sidebar-transition .content{transition:all var(--sidebarTransitionDuration) ease-in-out allow-discrete}.sidebar-open .sidebar,.sidebar-transition .sidebar{display:flex}.sidebar-open .sidebar{left:0}.sidebar-open .sidebar-button{transform:translate(calc(var(--sidebarWidth) - 100%))}.sidebar-open .content{width:calc(100% - var(--sidebarWidth));left:var(--sidebarWidth)}@media screen and (max-width: 768px){.sidebar-open .content{left:0;width:100%}.sidebar{max-width:90vw}body:not(.sidebar-open) .sidebar-button{position:absolute}}.swup-progress-bar{height:2px;background-color:var(--progressBarColor)}.sidebar{--sidebarFontSize: 16px;--sidebarLineHeight: 20px;font-family:var(--sansFontFamily);font-size:var(--sidebarFontSize);line-height:var(--sidebarLineHeight);background-color:var(--sidebarBackground);color:var(--sidebarAccentMain);overflow:hidden;& .sidebar-tabpanel{scrollbar-width:thin}}.apple-os .sidebar{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.sidebar ul{list-style:none}.sidebar ul li{margin:0;padding:0 10px}.sidebar a{color:var(--sidebarAccentMain);text-decoration:none;transition:var(--transition-colors)}.sidebar a:hover{color:var(--sidebarHover)}.sidebar .external-link{margin-left:2.5px}.sidebar .sidebar-header{background-color:var(--sidebarHeader);width:100%}.sidebar .sidebar-projectInfo{display:flex;justify-content:start;align-items:center;gap:8px;margin:8px 34px 12px 14px}.sidebar .sidebar-projectInfo>div{flex:1}.sidebar .sidebar-projectImage{align-self:flex-end}.sidebar .sidebar-projectImage img{display:block;max-width:48px;max-height:48px}.sidebar .sidebar-projectName{font-weight:700;font-size:var(--text-xl);line-height:24px;color:var(--sidebarAccentMain);margin:0;padding:0;word-wrap:break-word;display:block;width:calc(100% - 12px)}.sidebar .sidebar-projectVersion{display:block;position:relative;margin:0;padding:0;font-size:var(--sidebarFontSize);line-height:var(--sidebarLineHeight);color:var(--sidebarMuted);width:calc(100% - 12px)}.sidebar .sidebar-projectVersion form{display:flex}.sidebar .sidebar-projectVersion select{cursor:pointer;position:relative;margin:0;padding:0 0 0 10px;border:none;-webkit-appearance:none;appearance:none;background-color:transparent;color:var(--sidebarMuted);z-index:2}.sidebar .sidebar-projectVersion option{color:initial}.sidebar .sidebar-projectVersionsCaret{position:absolute;left:0;top:2px;z-index:1;font-size:8px;color:var(--sidebarMuted)}.sidebar .sidebar-projectVersion select::-ms-expand{display:none}.sidebar .sidebar-staleVersion{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--sidebarStaleVersion)}.sidebar .sidebar-staleVersion>a{color:var(--sidebarStaleVersion);font-weight:400}.sidebar .sidebar-staleIcon{font-size:var(--text-lg);line-height:0}.sidebar .sidebar-list-nav{display:flex;margin:0;padding:0;overflow:auto;scrollbar-width:thin}.sidebar .sidebar-list-nav :is(li,li button){text-transform:uppercase;letter-spacing:.02em;font-size:var(--text-sm);color:var(--sidebarSubheadings);white-space:nowrap}.sidebar .sidebar-list-nav li{display:inline-block;padding:0}.sidebar .sidebar-list-nav button{background:none;border:0;border-radius:0;-webkit-appearance:none;text-align:inherit;color:inherit;font-weight:inherit;cursor:pointer;display:inline-block;line-height:27px;padding:4px 14px;transition:var(--transition-all)}.sidebar .sidebar-list-nav button{border-bottom:var(--navTabBorderWidth) solid transparent}.sidebar .sidebar-list-nav button:not([aria-selected]):hover{border-bottom:var(--navTabBorderWidth) solid var(--sidebarInactiveItemBorder);color:var(--sidebarAccentMain);transition:var(--transition-all)}.sidebar .sidebar-list-nav button[aria-selected]{border-bottom:var(--navTabBorderWidth) solid var(--sidebarLanguageAccentBar);color:var(--sidebarAccentMain)}.sidebar .sidebar-tabpanel{flex:1 1 .01%;overflow-y:auto;overscroll-behavior:contain;position:relative;-webkit-overflow-scrolling:touch;padding-top:12px;scroll-padding-top:40px}.sidebar .full-list{margin:0;padding:0 0 20px;position:relative}.sidebar .full-list :is(li,a){display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.sidebar .full-list li{padding:0;line-height:27px}.sidebar .full-list li.group{text-transform:uppercase;font-weight:700;font-size:.8em;margin:1.5em 0 0;line-height:1.8em;color:var(--sidebarSubheadings);padding-left:15px}.sidebar .full-list li.nesting-context{font-weight:700;font-size:.9em;line-height:1.8em;color:var(--sidebarSubheadings);margin-top:10px;padding-left:15px}.sidebar .full-list a{margin-right:30px;padding:3px 0 3px 12px;border-left:var(--navTabBorderWidth) solid transparent;color:var(--sidebarItem)}.sidebar .full-list a[aria-selected]{color:var(--sidebarActiveItem)}.sidebar .full-list button{appearance:none;background-color:transparent;border:0;padding:0;cursor:pointer;color:inherit;width:20px;text-align:center;font-size:calc(1.2 * var(--sidebarFontSize));line-height:var(--sidebarLineHeight);position:absolute;display:block;right:10px;transform:translateY(-100%)}.sidebar .full-list a[aria-selected]+button{color:var(--sidebarActiveItem)}.sidebar .full-list button:after{font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:var(--icon-arrow-down-s)}.sidebar .full-list button[aria-expanded=true]:after{content:var(--icon-arrow-up-s)}.sidebar .full-list ul{display:none;margin:10px 0 10px 10px;padding:0}.sidebar .full-list button[aria-expanded=true]+ul{display:block}.sidebar .full-list>li>a{height:27px;line-height:var(--sidebarLineHeight)}.sidebar .full-list>li>a:hover{border-left-color:var(--sidebarLanguageAccentBar)}.sidebar .full-list>li>a[aria-selected]{border-left-color:var(--sidebarLanguageAccentBar)}.sidebar .full-list>li:last-child{margin-bottom:30px}.sidebar .full-list>li.group:first-child{margin-top:0}.sidebar .full-list>li>ul>li:not(:has(li a[aria-selected=true]))>a[aria-selected=true]:before,.sidebar .full-list>li>ul>li>a:hover:before{content:"\2022";position:absolute;margin-left:-15px;color:var(--sidebarActiveItem)}.sidebar .full-list ul li{line-height:var(--sidebarFontSize);padding:0 8px}.sidebar .full-list ul a{padding-left:15px;height:24px}.sidebar .full-list ul button{font-size:var(--sidebarFontSize)}.sidebar .full-list ul button:after{content:var(--icon-add)}.sidebar .full-list ul button[aria-expanded=true]:after{content:var(--icon-subtract)}.sidebar .full-list ul ul{margin:9px 0 9px 10px}.sidebar .full-list ul ul li{height:20px;color:var(--sidebarAccentMain)}.sidebar .full-list ul ul a{border-left:1px solid var(--sidebarInactiveItemMarker);padding:0 10px;height:20px}.sidebar .full-list ul ul a:hover{border-color:var(--sidebarLanguageAccentBar)}.sidebar .full-list ul ul a[aria-selected]{color:var(--sidebarActiveItem);border-color:var(--sidebarLanguageAccentBar)}.sidebar-button{cursor:pointer;background-color:transparent;border:none;font-size:var(--sidebarFontSize);color:var(--sidebarAccentMain)}.sidebar-button:hover{color:var(--sidebarHover)}body:not(.sidebar-open) .sidebar-button{color:var(--contrast)}@media screen and (max-height: 500px){.sidebar{overflow-y:auto}.sidebar .full-list{overflow:visible}}.top-search{background-color:var(--background);top:0;z-index:99;position:relative;width:100%;padding:10px 0}.search-settings{display:flex;column-gap:12px;align-items:center;width:100%;position:relative}.search-bar{border:1px solid var(--searchBarBorder);border-radius:var(--borderRadius-base);height:40px;position:relative;width:100%}.top-search .search-bar .search-input{background-color:var(--searchSearch);border:1px solid transparent;border-radius:var(--borderRadius-base);color:var(--searchAccentMain);position:relative;height:38px;padding:8px 40px 8px 12px;width:100%;transition:var(--transition-all)}.top-search .search-bar .search-input::placeholder{color:var(--searchAccentMain);opacity:.5}.top-search .search-bar .search-input:focus{border:1px solid var(--searchBarFocusColor);border-radius:calc(var(--borderRadius-base) - 1px);position:relative}.top-search .search-bar .search-label{position:relative}.top-search .search-bar .search-input-wrapper{position:relative;display:flex;align-items:center}.top-search .search-settings .engine-selector{position:relative}.top-search .search-settings .engine-selector[data-multiple=false]{display:none}.top-search .search-settings .engine-selector[data-multiple=false] .engine-button{cursor:default}.top-search .search-settings .engine-selector[data-multiple=false] .engine-button .ri-arrow-down-s-line{display:none}.top-search .search-settings .engine-button{display:flex;align-items:center;gap:6px;background-color:var(--autocompleteHover);border:none;color:var(--searchAccentMain);cursor:pointer;font-size:var(--text-sm);padding:8px 12px;border-radius:var(--borderRadius-base);transition:var(--transition-all);height:40px}.top-search .search-settings .engine-button:hover,.top-search .search-settings .engine-button[aria-expanded=true]{background-color:var(--autocompleteSelected)}.top-search .search-settings .engine-name{font-size:var(--text-sm);white-space:nowrap}.top-search .search-settings .engine-dropdown{position:absolute;top:calc(100% + 10px);right:0;min-width:200px;max-width:50vh;width:max-content;background-color:var(--autocompleteBackground);border-radius:var(--borderRadius-base);box-shadow:0 4px 12px #0003;z-index:200}.top-search .search-settings .engine-dropdown[hidden]{display:none}.top-search .search-settings .engine-option{display:block;width:100%;text-align:left;background-color:transparent;border:0;color:var(--textHeaders);cursor:pointer;padding:10px 12px;transition:var(--transition-colors)}.top-search .search-settings .engine-option:hover{background-color:var(--autocompleteHover)}.top-search .search-settings .engine-option:focus{border-left:2px solid var(--main);padding-left:10px;background-color:var(--autocompleteHover);outline:none}.top-search .search-settings .engine-option[aria-checked=true]{background-color:var(--autocompleteSelected)}.top-search .search-settings .engine-option .name{display:block;font-size:var(--text-sm);font-weight:500;margin-bottom:2px}.top-search .search-settings .engine-option .help{display:block;font-size:var(--text-xs);opacity:.7}.top-search .search-bar .search-close-button{font-size:var(--text-md);color:var(--searchAccentMain);background-color:transparent;border:none;cursor:pointer;margin:0;opacity:.5;padding:5px;transform:scaleY(0);transition:var(--transition-all);display:flex;align-items:center;position:absolute;right:0;top:50%;transform:translateY(-50%) scaleY(0)}.top-search .search-bar .search-close-button:hover{opacity:.7}.top-search .search-settings button.icon-settings{display:flex;align-items:center;justify-content:flex-end}.top-search .search-settings .icon-settings{font-size:var(--text-xl);float:right;color:var(--iconAction);text-decoration:none;border:none;transition:color .3s ease-in-out;background-color:transparent;cursor:pointer;padding:0}.top-search .search-settings .icon-settings:hover{color:var(--iconActionHover)}.top-search .search-settings .icon-settings:visited{color:var(--iconAction)}@media screen and (max-width: 768px){.top-search{padding-left:calc(var(--content-gutter) + 36px);padding-right:var(--content-gutter);margin-left:calc(-1 * var(--content-gutter));margin-right:calc(-1 * var(--content-gutter));width:calc(2 * var(--content-gutter) + 100%)}.search-settings{width:100%;box-sizing:border-box}.top-search .search-settings .engine-name{display:none}}body.search-focused .search-bar .search-close-button{transform:translateY(-50%) scaleY(1);transition:var(--transition-all)}@media screen and (hover: hover){body.search-focused .top-search{position:sticky!important}body.search-focused .sidebar-button{position:fixed!important}}@media screen and (hover: none){body.scroll-sticky .top-search{position:sticky!important}body.scroll-sticky .sidebar-button{position:fixed!important}}*:focus,button:focus,[type=button]:focus,[type=reset]:focus,[type=submit]:focus{outline:2px solid var(--main);outline-offset:-2px}*:focus:not(:focus-visible),button:focus:not(:focus-visible),[type=button]:focus:not(:focus-visible),[type=reset]:focus:not(:focus-visible),[type=submit]:focus:not(:focus-visible){outline:0}input[type=text],input[type=number],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=time],input[type=url],input[type=week],textarea{outline:0}.content-inner{font-size:1em;line-height:1.6875em;position:relative;background-color:var(--background);color:var(--textBody)}.content-inner .heading-with-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px}.content-inner .heading-with-actions>*:not(h1){flex-shrink:0}.content-inner .heading-with-actions h1{flex-grow:1;justify-self:flex-start;max-width:100%;margin:0;overflow-wrap:break-word}.content-inner .heading-with-actions .icon-action{width:20px;height:20px;display:flex;justify-content:center;align-items:center;font-weight:400}.content-inner .heading-with-actions.top-heading .icon-action{font-size:1.2rem}@container content (width > 600px){.content-inner .heading-with-actions.top-heading{flex-wrap:nowrap;align-items:flex-start;& h1{padding-right:32px}& .icon-action{padding-top:1.7rem}}}.content-inner .top-heading{padding-top:1rem}.content-inner :is(h1,h2,h3,h4,h5,h6){font-family:var(--sansFontFamily);font-weight:700;line-height:1.5em;word-wrap:break-word;color:var(--textHeaders)}.content-inner h1{font-size:2em;margin:.5em 0}.content-inner h1.section-heading{margin:1.5em 0 .5em}.content-inner div.group-description{margin:0 0 3em}.content-inner h1 small{font-weight:400}.content-inner h2{font-size:1.6em;padding-top:1em;margin-bottom:.5em}.content-inner h3{font-size:1.375em;margin:1em 0 .5em}.content-inner li+li{margin-top:.25em}.content-inner :is(a,.a-main){color:var(--link-color);text-decoration:underline;text-decoration-skip-ink:auto}.content-inner :is(a:visited,.a-main:visited){color:var(--link-visited-color)}.content-inner .icon-action{color:var(--iconAction);text-decoration:none;border:none;transition:var(--transition-colors);background-color:transparent;cursor:pointer}.content-inner .icon-action:hover{color:var(--iconActionHover)}.content-inner .icon-action:visited{color:var(--iconAction)}.content-inner .livebook-badge-container{display:flex}.content-inner a.livebook-badge{display:inline-flex}.content-inner .note{color:var(--iconAction);font-size:var(--text-xs);font-weight:400}.content-inner{& :is(blockquote,section.admonition){position:relative;margin:1.5625em 0;padding:0 1.2rem;overflow:auto;border-radius:var(--borderRadius-base);& :is(code,pre code){background-color:var(--admCodeBackground);border:1px solid var(--admCodeBorder);color:var(--admCodeColor)}& :is(a,a:visited){color:inherit}& :is(h1,h2,h3,h4,h5,h6):first-child{padding-bottom:1em;border-bottom:2px solid hsl(from currentColor h s l / 15%)}& p:last-child{padding-bottom:1em;margin-bottom:0}}& blockquote{border-left:3px solid var(--blockquoteBorder);background-color:var(--blockquoteBackground)}}@media print{.content-inner :is(blockquote,section.admonition){border:2px solid hsl(from var(--textBody) h s l / 15%);& :is(code,pre code){border-color:var(--gray400)}& pre code.makeup{white-space:break-spaces;break-inside:avoid}}}.content-inner table{margin:2em 0;border-collapse:collapse;display:block;overflow:auto}.content-inner th{text-align:left;font-family:var(--sansFontFamily);font-weight:700;padding-bottom:.5em;white-space:nowrap}.content-inner thead tr{border-bottom:1px solid var(--tableHeadBorder)}.content-inner tbody tr{border-bottom:1px solid var(--tableBodyBorder)}.content-inner tbody tr:last-child{border-bottom:none}.content-inner tr{vertical-align:bottom;height:2.5em}.content-inner :is(td,th){padding:.25em .25em .25em 1em;line-height:2em;vertical-align:top}.content-inner .section-heading{--icon-size: 16px;--icon-spacing: 5px;display:grid;grid-template:1fr / 1fr}@media screen and (max-width: 768px){.content-inner .section-heading{--icon-spacing: 2px}}.content-inner .section-heading>:is(.hover-link,.text){grid-row:1;grid-column:1}.content-inner .section-heading .hover-link{text-decoration:none}.content-inner .section-heading i{font-size:var(--icon-size);color:var(--mainLight);top:-2px;margin-left:calc(-1 * (var(--icon-size) + var(--icon-spacing)));padding-right:var(--icon-spacing);position:relative;opacity:0}.content-inner :is(blockquote,section.admonition) .section-heading i{display:none}.content-inner .section-heading:is(:hover,:focus,:target) i{opacity:1}.content-inner .app-vsn{display:none!important;font-size:.6em;line-height:1.5em}@media screen and (max-width: 768px){.content-inner .app-vsn{display:block!important}}.content-inner img{max-width:100%}@media screen and (max-width: 768px){.content-inner :is(ol,ul){padding-left:calc(1.5 * var(--content-gutter))}}.content-inner section.admonition{border-radius:var(--borderRadius-base)}.content-inner section.admonition>.admonition-title{color:var(--contrast);padding-left:2.2rem;font-weight:700;font-style:normal}.content-inner section.admonition>.admonition-title:before{color:var(--contrast);position:absolute;left:1rem;font-size:1.8rem;font-family:remixicon;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.content-inner section.admonition{& .admonition-title:before{content:var(--icon-error-warning)}&.warning{background-color:var(--warningBackground);& .admonition-title{&,&:before{color:var(--warningHeading)}}}&.error{background-color:var(--errorBackground);& .admonition-title{&,&:before{color:var(--errorHeading)}}}&.info{background-color:var(--infoBackground);& .admonition-title{&,&:before{color:var(--infoHeading)}}}&.neutral{background-color:var(--neutralBackground);& .admonition-title{&,&:before{content:var(--icon-double-quotes-l);color:var(--neutralHeading)}}}&.tip{background-color:var(--tipBackground);& .admonition-title{&,&:before{color:var(--tipHeading)}}}}@media print{.content-inner section.admonition{&.warning{border-color:hsl(from var(--warningHeading) h s l / 15%);& .admonition-title{&,&:before{color:hsl(var(--warningHue),90%,40%)}}}&.error{border-color:hsl(from var(--errorHeading) h s l / 15%);& .admonition-title{&,&:before{color:hsl(var(--errorHue),80%,40%)}}}&.info{border-color:hsl(from var(--infoHeading) h s l / 15%);& .admonition-title{&,&:before{color:hsl(var(--infoHue),80%,40%)}}}&.neutral{border-color:hsl(from var(--neutralHeading) h s l / 15%);& .admonition-title{&,&:before{color:hsl(var(--neutralHue),30%,40%)}}}&.tip{border-color:hsl(from var(--tipHeading) h s l / 15%);& .admonition-title{&,&:before{color:hsl(var(--tipHue),50%,40%)}}}}}.content-inner section.admonition>.admonition-title code{margin:0 .5ch}@media screen and (max-width: 768px){.content-inner section.admonition{margin-left:calc(-1 * var(--content-gutter));margin-right:calc(-1 * var(--content-gutter));padding-left:var(--content-gutter);padding-right:var(--content-gutter);border-radius:0}}.content-inner .summary h2 a{text-decoration:none;border:none;color:var(--textHeaders)!important}.content-inner .summary span.deprecated{color:var(--darkDeprecated);font-weight:400}.content-inner .summary .summary-row .summary-signature{font-family:var(--monoFontFamily);font-size:13px;font-weight:700}.content-inner .summary .summary-row .summary-signature a{text-decoration:none;border:none}.content-inner .summary .summary-row .summary-synopsis{padding:0 1.2em;margin:0 0 .5em}.content-inner .summary .summary-row .summary-synopsis p{margin:0;padding:0}@font-face{font-family:Consolas;src:local("Consolas");size-adjust:110%}.content-inner.content-inner :is(a:has(code,img),pre a){color:var(--link-color);text-shadow:none;text-decoration:none;background-image:none}.content-inner.content-inner :is(a:has(code,img),pre a):is(:visited,:active,:focus,:hover){color:var(--link-visited-color)}.content-inner strong>code{font-weight:700}.content-inner code{font-family:var(--monoFontFamily);font-style:normal;line-height:24px;font-weight:400;font-size:var(--text-sm);background-color:var(--codeBackground);vertical-align:baseline;border-radius:var(--borderRadius-sm);padding:.1em .2em;border:1px solid var(--codeBorder);text-transform:none}.content-inner code.inline{border-radius:var(--borderRadius-sm);word-wrap:break-word}.content-inner pre{margin:var(--baseLineHeight) 0}.content-inner pre code{display:block;overflow-x:auto;white-space:inherit;padding:1em;scrollbar-width:thin}.content-inner pre code.output{margin:0 12px;max-height:400px;overflow:auto}.content-inner pre code.output+.copy-button{margin-right:12px}.content-inner pre code.output:before{content:"Output";display:block;position:absolute;top:-16px;left:12px;padding:2px 4px;font-size:var(--text-xs);font-family:var(--monoFontFamily);line-height:1;color:var(--textHeaders);background-color:var(--codeBackground);border:1px solid var(--codeBorder);border-bottom:0;border-radius:2px}@media screen and (max-width: 768px){.content-inner>pre:has(code),.content-inner section>pre:has(code){margin-left:calc(-1 * var(--content-gutter));margin-right:calc(-1 * var(--content-gutter))}.content-inner>pre code,.content-inner section>pre code{padding-left:var(--content-gutter);padding-right:var(--content-gutter);border-radius:0;border-left-width:0;border-right-width:0}}@keyframes blink-background{0%,to{background-color:var(--textDetailBackground)}50%{background-color:var(--blink)}}.content-inner .detail:target .detail-header{animation-duration:.55s;animation-name:blink-background;animation-iteration-count:1;animation-timing-function:ease-in-out}.content-inner .detail-header{margin:1em 0;padding:.5em .85em .5em 1em;background-color:var(--textDetailBackground);border-left:3px solid var(--textDetailAccent);font-size:1em;font-family:var(--monoFontFamily);position:relative}.content-inner .detail-header .signature{font-family:var(--monoFontFamily);font-size:13px;font-weight:700;line-height:2em}.content-inner .detail-header:hover a.detail-link,.content-inner .detail-header a.detail-link:focus{opacity:1;text-decoration:none}.content-inner .detail-header a.detail-link{transition:var(--transition-opacity);position:absolute;top:0;left:0;display:block;opacity:0;padding:.6em;line-height:1.5em;margin-left:-2.5em;text-decoration:none;border:none}@media screen and (max-width: 768px){.content-inner .detail-header a.detail-link{margin-left:-30px}}.content-inner .specs pre{font-family:var(--monoFontFamily);font-size:var(--text-xs);font-style:normal;line-height:24px;white-space:pre-wrap;margin:0;padding:0}.content-inner .specs .attribute{color:var(--fnSpecAttr)}.content-inner .docstring{margin:1.2em 0 3em 1.2em}@media screen and (max-width: 768px){.content-inner .docstring{margin-left:0}}.content-inner .docstring:is(h2,h3,h4,h5){font-weight:700}.content-inner .docstring h2{font-size:1.1em}.content-inner .docstring h3{font-size:1em}.content-inner .docstring h4{font-size:.95em}.content-inner .docstring h5{font-size:.9em}.content-inner div.deprecated{display:block;padding:1em;background-color:var(--fnDeprecated);border-radius:var(--borderRadius-sm);margin:var(--baseLineHeight) 0}.content-inner .footer{margin:4em auto 1em;text-align:center;font-size:var(--text-sm)}.content-inner .footer .line{display:inline-block}.content-inner .footer .footer-button{background-color:transparent;border:0;cursor:pointer;padding:0 4px}.content-inner .footer .footer-hex-package{margin-right:4px}.content-inner .bottom-actions{display:flex;justify-content:space-between;margin-top:7em;gap:12px}.bottom-actions-item{flex:1 1 0%}.content-inner .bottom-actions .bottom-actions-button{display:flex;text-decoration:none;flex-direction:column;border-radius:var(--borderRadius-sm);border:1px solid var(--bottomActionsBtnBorder);padding:12px 16px;min-width:150px;transition:var(--transition-all)}.content-inner .bottom-actions .bottom-actions-button:hover{border-color:var(--mainLight)}.content-inner .bottom-actions .bottom-actions-button .subheader{font-size:.8em;color:var(--textHeaders);white-space:nowrap}.content-inner .bottom-actions .bottom-actions-button .title{color:var(--bottomActionsBtnTitle)}.content-inner .bottom-actions .bottom-actions-button[rel=prev]{text-align:start}.content-inner .bottom-actions .bottom-actions-button[rel=next]{text-align:end}@media screen and (max-width: 768px){.content-inner .bottom-actions{flex-direction:column-reverse}}.page-cheatmd .content-inner{--horizontal-space: 1.5em;--vertical-space: 1em}@media (max-width: 600px){.page-cheatmd .content-inner{--horizontal-space: 1em;--vertical-space: .75em}}.page-cheatmd .content-inner{max-width:1200px}.page-cheatmd .content-inner h1{margin-bottom:var(--vertical-space)}.page-cheatmd .content-inner h2{margin:var(--vertical-space) 0;column-span:all;color:var(--gray700);font-weight:500}.dark .page-cheatmd .content-inner h2{color:var(--gray200)}.page-cheatmd .content-inner h3{margin:0 0 1em;font-weight:400}.page-cheatmd .content-inner section.h3{min-width:300px;margin:0;padding:0 0 calc(var(--vertical-space) * 2) 0;break-inside:avoid}.page-cheatmd .content-inner h3 .text{overflow:hidden}.page-cheatmd .content-inner h3 .text:after{content:"";margin-left:calc(var(--horizontal-space) / 2);vertical-align:baseline;display:inline-block;width:100%;height:1px;margin-right:-100%;margin-bottom:5px;background-color:var(--codeBorder)}.page-cheatmd .content-inner h4{display:block;margin:0;padding:.25em var(--horizontal-space);font-weight:400;background:var(--gray100);color:#567;border:solid 1px 1px 0 1px var(--gray100)}.dark .page-cheatmd .content-inner h4{background:#192f50;color:var(--textBody);border:1px solid #192f50;border-bottom:0}.page-cheatmd .content-inner .h2 p{margin:0;display:block;background:var(--gray50);padding:var(--vertical-space) var(--horizontal-space)}.dark .page-cheatmd .content-inner .h2 p{background:var(--gray700)}.page-cheatmd .content-inner .h2 p>code{color:#eb5757;border-radius:var(--borderRadius-sm);padding:.2em .4em}.page-cheatmd .content-inner pre code{padding:var(--vertical-space) var(--horizontal-space)}.page-cheatmd .content-inner .h2 pre{margin:0}.page-cheatmd .content-inner .h2 pre+pre{margin-top:-1px}.page-cheatmd .content-inner pre.wrap{white-space:break-spaces}@media screen and (max-width: 768px){.page-cheatmd .content-inner pre code{border-left-width:1px!important;border-right-width:1px!important}}.page-cheatmd .content-inner .h2 table{display:table;box-sizing:border-box;width:100%;border-collapse:collapse;margin:0}.page-cheatmd .content-inner .h2 th{padding:var(--vertical-space) var(--horizontal-space);line-height:inherit;margin-bottom:-1px;vertical-align:middle;border-bottom:1px solid var(--codeBorder)}.page-cheatmd .content-inner .h2 td{padding:var(--vertical-space) var(--horizontal-space);border:0;border-bottom:1px solid var(--codeBorder)}.page-cheatmd .content-inner .h2 tr:first-child{border-top:1px solid var(--codeBorder)}.page-cheatmd .content-inner .h2 td code{color:#eb5757;border-radius:var(--borderRadius-sm);padding:.2em .4em}.page-cheatmd .content-inner .h2 thead{background-color:var(--gray50)}.dark .page-cheatmd .content-inner .h2 thead{background-color:var(--gray700)}.page-cheatmd .content-inner .h2 tbody{background-color:var(--codeBackground)}.page-cheatmd .content-inner .h2 :is(ul,ol){margin:0;padding:0}.page-cheatmd .content-inner .h2 li{list-style-position:inside;padding:.5em var(--horizontal-space);line-height:2em;vertical-align:middle;background-color:var(--codeBackground);border-bottom:1px solid var(--codeBorder);margin-top:0}.page-cheatmd .content-inner .h2 :is(ul,ol)+pre code{border-top:0}.page-cheatmd .content-inner .h2 li>code{color:#eb5757;border-radius:var(--borderRadius-sm);padding:.2em .4em}.page-cheatmd .content-inner section.width-50{display:block;width:50%;margin:0}.page-cheatmd .content-inner section.width-50>section>table{width:100%}.page-cheatmd .content-inner section:is(.col-2,.col-2-left,.col-3){column-gap:40px}.page-cheatmd .content-inner section.col-2{column-count:2;height:auto}.page-cheatmd .content-inner section.col-2-left{display:grid;grid-template-columns:calc(100% / 3) auto}.page-cheatmd .content-inner section.col-2-left>h2{grid-column-end:span 2}.page-cheatmd .content-inner section.col-3{column-count:3;height:auto}.page-cheatmd .content-inner section.list-4>ul{display:flex;flex-wrap:wrap}.page-cheatmd .content-inner section.list-4>ul>li{flex:0 0 25%}.page-cheatmd .content-inner section.list-6>ul{display:flex;flex-wrap:wrap}.page-cheatmd .content-inner section.list-6>ul>li{flex:0 0 calc(100% / 6)}@media screen and (max-width: 1400px){.page-cheatmd .content-inner section.col-3{column-count:2}.page-cheatmd .content-inner section.col-2-left{display:flex;flex-direction:column}}@media screen and (max-width: 1200px){.page-cheatmd .content-inner section:is(.col-2,.col-3){display:flex;flex-direction:column}.page-cheatmd .content-inner section.list-6>ul>li{flex:0 0 25%}}@media screen and (max-width: 1000px){.page-cheatmd .content-inner section:is(.list-4,.list-6)>ul>li{flex:0 0 calc(100% / 3)}}@media screen and (max-width: 600px){.page-cheatmd .content-inner section:is(.list-4,.list-6)>ul>li{flex:0 0 50%}.page-cheatmd .content-inner section.width-50{width:100%}}#search{min-height:200px;position:relative}#search .loading{height:64px;width:64px;position:absolute;top:50%;left:calc(50% - 32px)}#search .loading div{box-sizing:border-box;display:block;position:absolute;width:51px;height:51px;margin:6px;border:6px solid var(--coldGray);border-radius:50%;animation:loading 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:var(--coldGray) transparent transparent transparent}#search .loading div:nth-child(1){animation-delay:-.45s}#search .loading div:nth-child(2){animation-delay:-.3s}#search .loading div:nth-child(3){animation-delay:-.15s}@keyframes loading{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#search .result{margin:2em 0}#search .result p{margin:0}#search .result-id{font-size:1.4em;margin:0}#search .result-id a{text-decoration:none;color:var(--textHeaders);transition:var(--transition-colors)}#search .result-id a:is(:visited,:active){color:var(--textHeaders)}#search .result-id a:is(:hover,:focus){color:var(--main)}#search :is(.result-id,.result-elem) em{font-style:normal;color:var(--main)}#search .result-id small{font-weight:400}@keyframes keyboard-shortcuts-show{0%{opacity:0}to{opacity:1}}.modal{animation-duration:.15s;animation-name:keyboard-shortcuts-show;animation-iteration-count:1;animation-timing-function:ease-in-out;display:none;background-color:#000000bf;position:fixed;inset:0;z-index:300}.modal.shown{display:block}.modal .modal-contents{margin:75px auto 0;max-width:500px;background-color:var(--modalBackground);border-radius:var(--borderRadius-sm);box-shadow:2px 2px 8px #0003;padding:25px 35px 35px}@media screen and (max-width: 768px){.modal .modal-contents{padding:20px}}.modal .modal-header{display:flex;align-items:start}.modal .modal-title{display:inline-block;flex-grow:1;font-size:1.2rem;font-weight:700;margin-bottom:20px}.modal .modal-title button{border:none;background-color:transparent;color:var(--textHeaders);font-weight:700;margin-right:30px;padding-left:0;text-align:left;transition:var(--transition-colors)}.modal .modal-title button:hover{color:var(--main);cursor:pointer}.modal .modal-title button.active{color:var(--main)}.modal .modal-close{cursor:pointer;display:block;font-size:1.5rem;margin:-8px -8px 0 0;padding:8px;opacity:.7;background-color:transparent;color:var(--textHeaders);border:none;transition:var(--transition-opacity)}.modal .modal-close:hover{opacity:1}#keyboard-shortcuts-content dl.shortcut-row{display:flex;align-items:center;justify-content:space-between;margin:0;padding:6px 0 8px;border-bottom:1px solid var(--settingsSectionBorder)}#keyboard-shortcuts-content dl.shortcut-row:last-of-type{border-bottom-style:none}#keyboard-shortcuts-content dl.shortcut-row:first-child{padding-top:0}#keyboard-shortcuts-content :is(.shortcut-keys,.shortcut-description){display:inline-block}#keyboard-shortcuts-content kbd>kbd{background-color:var(--settingsInputBorder);color:var(--contrast);border-radius:var(--borderRadius-sm);font-family:inherit;font-weight:700;display:inline-block;line-height:1;padding:4px 7px 6px;min-width:26px;text-align:center;font-size:var(--text-sm)}#keyboard-shortcuts-content :is(.shortcut-keys,.shortcut-description){margin:0}#quick-switch-modal-body{width:100%;position:relative}#quick-switch-modal-body .ri-search-2-line{position:absolute;left:0;top:0;padding:4px 10px;color:var(--quickSwitchContour);font-weight:700}#quick-switch-modal-body #quick-switch-input{width:100%;padding:8px 6px 8px 38px;border:none;color:var(--quickSwitchInput);background-color:transparent;border-bottom:1px solid var(--quickSwitchContour);box-sizing:border-box;transition:all .12s ease-out}#quick-switch-modal-body #quick-switch-results{margin:0}#quick-switch-modal-body .quick-switch-result{padding:2px 5px;border-bottom:1px dotted var(--quickSwitchContour);transition:all .12s ease-out}#quick-switch-modal-body .quick-switch-result:last-child{border-bottom:none}#quick-switch-modal-body .quick-switch-result:hover{cursor:pointer}#quick-switch-modal-body .quick-switch-result:is(:hover,.selected){border-left:4px solid var(--main);background-color:var(--codeBackground)}.autocomplete{display:none;position:absolute;width:calc(100% - 32px);top:55px}.autocomplete .triangle{width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;border-bottom:12px solid var(--autocompleteBackground);position:absolute;top:8px;left:26px;transform:translate(-50%);z-index:100;background-color:transparent}.autocomplete-results{margin:0;padding:15px 20px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;color:var(--autocompleteResults);font-family:var(--sansFontFamily);font-weight:300;font-size:.9rem;font-style:italic}.autocomplete-results .query{margin-right:auto}.autocomplete-results .bold{color:var(--autocompleteResultsBold);font-weight:400}.autocomplete.shown{display:block}.autocomplete-container{position:absolute;top:5px;width:100%;z-index:200}.autocomplete-suggestions{background-color:var(--autocompleteBackground);border-radius:var(--borderRadius-base);box-shadow:0 4px 12px #0003;overflow-y:auto;max-height:450px;white-space:normal;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-width:thin}.autocomplete-suggestion{color:var(--textHeaders)!important;display:block;padding:12px 20px;text-decoration:none!important;transition:var(--transition-colors);border-top:1px solid var(--suggestionBorder);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.autocomplete-suggestion.selected{background-color:var(--autocompleteSelected)}.autocomplete-suggestion:hover{background-color:var(--autocompleteHover)}.autocomplete-suggestion em{font-style:normal;font-weight:700}.autocomplete-suggestion .separator{opacity:.4;margin:0 2px}.autocomplete-suggestion .description{opacity:.6}.autocomplete-suggestion .label{background-color:var(--autocompleteLabelBack);opacity:.6;color:var(--autocompleteLabelFont);padding:4px 8px;border-radius:4px;margin-left:5px;text-transform:uppercase;font-family:var(--sansFontFamily);font-size:.7rem}@media screen and (hover: none){.autocomplete-results .press-return{display:none!important}}.tooltip{box-shadow:0 0 10px var(--black-opacity-10);max-height:300px;max-width:500px;padding:0;position:absolute;pointer-events:none;margin:0;z-index:99;top:0;left:0;visibility:hidden;transform:translateY(20px);opacity:0;transition:.2s visibility ease-out,.2s transform ease-out,.2s opacity ease-out}.tooltip.tooltip-shown{visibility:visible;transform:translateY(0);opacity:1}.tooltip .tooltip-body{border:1px solid var(--codeBorder);border-radius:var(--borderRadius-sm);overflow:auto}.tooltip .tooltip-body .signature{min-width:320px;width:100%;line-height:1em}.tooltip .tooltip-body .detail-header{border-left:0;margin-bottom:0;margin-top:0}.tooltip .tooltip-body .docstring{background-color:var(--background);padding:1.2em;margin:0;width:498px}.tooltip .tooltip-body .docstring-plain{max-width:498px;width:auto}.tooltip .tooltip-body .version-info{float:right;font-family:var(--monoFontFamily);font-weight:400;opacity:.3;padding-left:.3em}pre{position:relative}pre:hover .copy-button,pre .copy-button:focus{opacity:1}.copy-button{display:flex;opacity:0;position:absolute;top:7px;right:8px;padding:8px;background-color:transparent;backdrop-filter:blur(8px);border-radius:var(--borderRadius-sm);border:1px solid var(--codeBorder);cursor:pointer;transition:var(--transition-all);font-size:var(--text-sm);line-height:24px;color:currentColor;& svg[aria-live=polite]{display:none}}.copy-button svg{opacity:.5;transition:var(--transition-all)}pre .copy-button:hover svg,pre .copy-button:focus-visible svg{opacity:1}.copy-button svg{width:20px}.copy-button.clicked{opacity:1;color:var(--success);& svg[aria-live=polite]{display:block}}.copy-button.clicked svg{display:none;color:currentColor}#settings-modal-content{margin-top:10px}#settings-modal-content .hidden{display:none}#settings-modal-content .input{box-sizing:border-box;width:80%;padding:8px;font-size:var(--text-sm);background-color:var(--settingsInputBackground);color:var(--settingsInput);border:1px solid var(--settingsInputBorder);border-radius:var(--borderRadius-base);transition:var(--transition-all)}#settings-modal-content .input:focus{border-color:var(--main)}#settings-modal-content .input::placeholder{color:var(--gray400)}#settings-modal-content .switch-button-container{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--settingsSectionBorder);padding:10px 0}#settings-modal-content .switch-button-container:first-of-type{border-top-style:none;padding-top:0}#settings-modal-content .switch-button-container>div>span{font-size:var(--text-md)}#settings-modal-content .switch-button-container>div>p{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:var(--text-sm);line-height:1.4;margin:0;padding-bottom:6px;padding-right:10px}#settings-modal-content .switch-button{position:relative;display:inline-block;flex-shrink:0;width:40px;height:20px;user-select:none;transition:var(--transition-all)}#settings-modal-content .switch-button__checkbox{appearance:none;position:absolute;display:block;width:20px;height:20px;border-radius:1000px;background-color:#91a4b7;border:3px solid #e5edf5;cursor:pointer;transition:var(--transition-all)}#settings-modal-content .switch-button__bg{display:block;width:100%;height:100%;border-radius:1000px;background-color:#e5edf5;cursor:pointer;transition:var(--transition-all)}#settings-modal-content .switch-button__checkbox:checked{background-color:#fff;border-color:var(--main);transform:translate(100%)}#settings-modal-content .switch-button__checkbox:checked+.switch-button__bg{background-color:var(--main)}#settings-modal-content .switch-button__checkbox:focus{outline:0}#settings-modal-content .switch-button__checkbox:focus+.switch-button__bg{outline:2px solid var(--main);outline-offset:2px}#settings-modal-content .switch-button__checkbox:focus:not(:focus-visible)+.switch-button__bg{outline:0}#settings-modal-content .settings-select{cursor:pointer;position:relative;border:none;background-color:transparent;color:var(--textBody)}#settings-modal-content .settings-select option{color:initial}#toast{visibility:hidden;opacity:0;position:fixed;z-index:1;left:50%;bottom:1rem;min-width:3rem;margin:0 -1.2rem;padding:.7rem 1.2rem;text-align:center;font-weight:700;border-radius:var(--borderRadius-base);border:1px solid var(--codeBorder);background-color:var(--codeBackground);color:var(--textBody);transition:opacity .4s ease-in-out,transform .3s ease-out;cursor:default}#toast.show{visibility:visible;opacity:1;transform:translateY(-.75rem)}@media (prefers-reduced-motion: reduce){#toast{transition:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;user-select:none}@media print{.body-wrapper{display:block}.sidebar,.sidebar-button,.top-search{display:none}.content{padding-left:0;overflow:visible;left:0;width:100%}.summary-row{break-inside:avoid}#toast{display:none}.content-inner{padding:0}.content-inner .section-heading a.hover-link,.content-inner button.icon-action,.content-inner a.icon-action,.content-inner .bottom-actions{display:none}.footer p:first-of-type{display:none}.content-inner pre code.makeup{white-space:break-spaces;break-inside:avoid}}@media print{.page-cheatmd .content-inner *{background-color:transparent!important;border-color:var(--gray400)!important}.page-cheatmd .content-inner{max-width:100%;width:100%;padding:0;font-size:.7em}.page-cheatmd .content-inner section:is(.col-2,.col-2-left,.col-3){column-gap:30px}.page-cheatmd .content-inner section.col-2{column-count:2}.page-cheatmd .content-inner section.col-2-left{display:grid}.page-cheatmd .content-inner section.col-3{column-count:3}.page-cheatmd .content-inner h1{margin-top:0;margin-bottom:.5em}.page-cheatmd .content-inner h2.section-heading{font-weight:700;margin-top:1em;column-span:all}.page-cheatmd .content-inner section.h2{break-inside:avoid}.page-cheatmd .content-inner h3{font-weight:700;color:var(--mainDark)}.page-cheatmd .content-inner h3:after{height:2px;background-color:var(--gray400)}.page-cheatmd .content-inner section.h3{min-width:300px;break-inside:avoid}.page-cheatmd .content-inner h4{padding:.5em 0;border:none;font-weight:700;color:#000}.page-cheatmd .content-inner .h2 p{padding-left:0;padding-right:0;border:none!important}.page-cheatmd .content-inner code{line-height:1.5em}.page-cheatmd .content-inner .h2 table{font-variant-numeric:tabular-nums;break-inside:avoid}.page-cheatmd .content-inner .h2 :is(th,td){vertical-align:top;padding-left:0;padding-right:0}.page-cheatmd .content-inner .h2 thead{border-style:solid none;border-width:1px}.page-cheatmd .content-inner .h2 tr{border-bottom:none}.page-cheatmd .content-inner .h2 th{font-weight:700}.page-cheatmd .content-inner .h2 li{padding-left:0;padding-right:0;vertical-align:middle;border-bottom:none}.page-cheatmd .content-inner pre:hover button.copy-button,.page-cheatmd .content-inner div.tooltip{display:none}.page-cheatmd .content-inner footer p:not(.built-using){display:none}}code.makeup .unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.makeup .hll{background-color:#ffc}.makeup .bp{color:#3465a4}.makeup .c,.makeup .c1,.makeup .ch,.makeup .cm,.makeup .cp,.makeup .cpf,.makeup .cs{color:#4d4d4d}.makeup .dl{color:#408200}.makeup .err{color:#a40000;border:#ef2929}.makeup .fm,.makeup .g{color:#4d4d4c}.makeup .gd{color:#a40000}.makeup .ge{color:#4d4d4c;font-style:italic}.makeup .gh{color:navy;font-weight:700}.makeup .gi{color:#00a000}.makeup .go{color:#4d4d4c;font-style:italic}.makeup .gp{color:#4d4d4d}.makeup .gr{color:#ef2929}.makeup .gs{color:#4d4d4c;font-weight:700}.makeup .gt{color:#a40000;font-weight:700}.makeup .gu{color:purple;font-weight:700}.makeup .il{color:#0000cf;font-weight:700}.makeup .k,.makeup .kc,.makeup .kd,.makeup .kn,.makeup .kp,.makeup .kr,.makeup .kt{color:#204a87}.makeup .l{color:#4d4d4c}.makeup .ld{color:#c00}.makeup .m,.makeup .mb,.makeup .mf,.makeup .mh,.makeup .mi,.makeup .mo{color:#2937ab}.makeup .n{color:#4d4d4c}.makeup .na{color:#8a7000}.makeup .nb{color:#204a87}.makeup .nc{color:#0000cf}.makeup .nd{color:#5c35cc;font-weight:700}.makeup .ne{color:#c00;font-weight:700}.makeup .nf{color:#b65800}.makeup .ni{color:#bc5400}.makeup .nl{color:#b65800}.makeup .nn{color:#4d4d4c}.makeup .no{color:#a06600}.makeup .nt{color:#204a87;font-weight:700}.makeup .nv,.makeup .nx{color:#4d4d4c}.makeup .o{color:#bc5400}.makeup .ow{color:#204a87}.makeup .p,.makeup .py{color:#4d4d4c}.makeup .s,.makeup .s1,.makeup .s2,.makeup .sa,.makeup .sb,.makeup .sc{color:#408200}.makeup .sd{color:#8f5902;font-style:italic}.makeup .se{color:#204a87}.makeup .sh{color:#408200}.makeup .si{color:#204a87}.makeup .sr{color:#c00}.makeup .ss{color:#a06600}.makeup .sx{color:#408200}.makeup .vc,.makeup .vg,.makeup .vi,.makeup .vm,.makeup .x{color:#4d4d4c}.dark .makeup{color:#dce1e6}.dark .makeup .hll{background-color:#49483e}.dark .makeup .bp{color:#dce1e6}.dark .makeup .c,.dark .makeup .c1,.dark .makeup .ch,.dark .makeup .cm,.dark .makeup .cp,.dark .makeup .cpf,.dark .makeup .cs{color:#969386}.dark .makeup .dl{color:#e6db74}.dark .makeup .err{color:#960050;background-color:#1e0010}.dark .makeup .fm{color:#a6e22e}.dark .makeup .gd{color:#ff5385}.dark .makeup .ge{font-style:italic}.dark .makeup .gi{color:#a6e22e}.dark .makeup .gp{color:#969386}.dark .makeup .gs{font-weight:700}.dark .makeup .gu{color:#969386}.dark .makeup .gt{color:#ff5385;font-weight:700}.dark .makeup .il{color:#ae81ff}.dark .makeup .k,.dark .makeup .kc,.dark .makeup .kd{color:#66d9ef}.dark .makeup .kn{color:#ff5385}.dark .makeup .kp,.dark .makeup .kr,.dark .makeup .kt{color:#66d9ef}.dark .makeup .l,.dark .makeup .ld,.dark .makeup .m,.dark .makeup .mb,.dark .makeup .mf,.dark .makeup .mh,.dark .makeup .mi,.dark .makeup .mo{color:#ae81ff}.dark .makeup .n{color:#dce1e6}.dark .makeup .na{color:#a6e22e}.dark .makeup .nb{color:#dce1e6}.dark .makeup .nc,.dark .makeup .nd,.dark .makeup .ne,.dark .makeup .nf{color:#a6e22e}.dark .makeup .ni,.dark .makeup .nl,.dark .makeup .nn{color:#dce1e6}.dark .makeup .no{color:#66d9ef}.dark .makeup .nt{color:#ff5385}.dark .makeup .nv{color:#dce1e6}.dark .makeup .nx{color:#a6e22e}.dark .makeup .o,.dark .makeup .ow{color:#ff5385}.dark .makeup .p,.dark .makeup .py{color:#dce1e6}.dark .makeup .s,.dark .makeup .s1,.dark .makeup .s2,.dark .makeup .sa,.dark .makeup .sb,.dark .makeup .sc,.dark .makeup .sd{color:#e6db74}.dark .makeup .se{color:#ae81ff}.dark .makeup .sh,.dark .makeup .si,.dark .makeup .sr,.dark .makeup .ss,.dark .makeup .sx{color:#e6db74}.dark .makeup .vc,.dark .makeup .vg,.dark .makeup .vi,.dark .makeup .vm{color:#dce1e6}.tabset{--borderWidth: 1px;--tabsetPadding: var(--baseLineHeight);margin:var(--baseLineHeight) 0;border:var(--borderWidth) solid var(--tabBorder);padding:0 var(--tabsetPadding);border-radius:var(--borderRadius-lg)}.tabset-tablist{display:flex;overflow:auto;scrollbar-width:thin;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:var(--tabBorderTop)}.tabset-tab{padding:1.1rem var(--tabsetPadding);font-family:var(--sansFontFamily);color:var(--textColor);margin-right:calc(-1 * var(--borderWidth));background-color:transparent;border:0;box-shadow:none;cursor:pointer;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;transition:var(--transition-all)}:hover.tabset-tab{border-bottom-color:var(--tabBorderTop);color:var(--textHeaders)}.tabset-tab[aria-selected=true]{border-bottom-color:var(--mainLight);color:var(--textHeaders)}.tabset-tab[aria-selected=true]:focus-visible{background-color:var(--mainLight);border-color:var(--mainLight);color:var(--white)}@media screen and (max-width: 768px){.tabset{--tabsetPadding: calc(var(--baseLineHeight) / 2)}.tabset-panel{padding-top:calc(var(--tabsetPadding) / 2);padding-bottom:calc(var(--tabsetPadding) / 2)}.tabset-panel pre,.tabset-panel blockquote,.tabset-panel section.admonition{margin-left:calc(-1 * var(--tabsetPadding))!important;margin-right:calc(-1 * var(--tabsetPadding))!important}.tabset-panel>pre code{border-left-width:0;border-right-width:0}}@media screen and (max-width: 768px){.tabset-panel>:is(:first-child){&:is(table){margin:.5em 0}}}@media screen and (min-width: 769px){.tabset-panel>:is(:first-child){&:is(blockquote,.admonition){margin-top:1.5em}&:is(p:has(img)){margin-top:1.25em}&:is(table){margin-top:.75em}}.tabset-panel>:is(:last-child){&:is(blockquote,.admonition){margin-bottom:1.5em}&:is(p:not(:has(img)),ul,ol){margin-bottom:1.25em}&:is(table){margin-bottom:.75em}}}body:not(.dark) .content-inner img[src*="#gh-dark-mode-only"],body.dark .content-inner img[src*="#gh-light-mode-only"]{display:none} +/*! Bundled license information: + +modern-normalize/modern-normalize.css: + (*! modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize *) +*/ diff --git a/doc/dist/lato-latin-400-normal-W7754I4D.woff2 b/doc/dist/lato-latin-400-normal-W7754I4D.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ff60934dd0ea9cdd93f961d2dfd1e158357f2a77 GIT binary patch literal 23580 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 QOFh<%JiLFgmWQ+r07g396aWAK literal 0 HcmV?d00001 diff --git a/doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 b/doc/dist/lato-latin-700-normal-2XVSBPG4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..11de83feaf0fb872c91fce89534fd4e2d8bbda28 GIT binary patch literal 23040 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 literal 0 HcmV?d00001 diff --git a/doc/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 b/doc/dist/lato-latin-ext-400-normal-N27NCBWW.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..edb9fa6f492362a9ab1f1d674b8f6e6f4e2085d0 GIT binary patch literal 5472 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 WhF)K4IGNT+hd8;|K8&%*Sz!P*WW1>W literal 0 HcmV?d00001 diff --git a/doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 b/doc/dist/lato-latin-ext-700-normal-Q2L5DVMW.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2c8aaa866eee8bee09ee05a9809c2fda7cd87bd1 GIT binary patch literal 5368 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 al + + + + triagebot v0.1.13 — Documentation + + + + + diff --git a/doc/search.html b/doc/search.html new file mode 100644 index 0000000..ac999ce --- /dev/null +++ b/doc/search.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + Search — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + + + + +
+
+
+ + + diff --git a/doc/triagebot.epub b/doc/triagebot.epub new file mode 100644 index 0000000000000000000000000000000000000000..6aa97af85890758df0c109e0b07a81015f3968c8 GIT binary patch literal 23293 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 literal 0 HcmV?d00001 diff --git a/doc/triagebot_classifier.html b/doc/triagebot_classifier.html new file mode 100644 index 0000000..7935757 --- /dev/null +++ b/doc/triagebot_classifier.html @@ -0,0 +1,281 @@ + + + + + + + + + + + triagebot_classifier — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_classifier + (triagebot v0.1.13) + +

+ +
+ + +
+

First agent in the triage pipeline. Reads the issue body and emits a +classification line.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ id() + +
+ +
+ +
+
+ model() + +
+ +
+ +
+ + +
+ +
+
+ tools() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

id()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

model()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

system_prompt()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

tools()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_config.html b/doc/triagebot_config.html new file mode 100644 index 0000000..d4ebe83 --- /dev/null +++ b/doc/triagebot_config.html @@ -0,0 +1,560 @@ + + + + + + + + + + + triagebot_config — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_config + (triagebot v0.1.13) + +

+ +
+ + +
+

Runtime configuration for triagebot, sourced from env vars.

Reads everything from the environment at startup, stashes the resolved +GitHub source_ref in persistent_term so the search tool (which runs +inside a turn-worker process spawned by gakudan) can read it without a +GenServer round-trip.

Required env vars:

  • TRIAGEBOT_WEBHOOK_SECRET GitHub webhook shared secret (HMAC)
  • TRIAGEBOT_REPO_OWNER e.g. "Taure"
  • TRIAGEBOT_REPO_NAME e.g. "gakudan"

GitHub auth (one of):

  • TRIAGEBOT_GITHUB_TOKEN (PAT mode)
  • TRIAGEBOT_GITHUB_APP_ID + TRIAGEBOT_GITHUB_APP_PRIVATE_KEY_PEM
    • TRIAGEBOT_GITHUB_INSTALLATION_ID (App mode)

LLM backend (one of):

  • ANTHROPIC_API_KEY
  • GEMINI_API_KEY

Optional:

  • TRIAGEBOT_PORT Nova listen port (default 8080)
  • TRIAGEBOT_METRICS_PORT Prometheus /metrics port (default 9568,
                            set to "" to disable)
  • TRIAGEBOT_AGENT_MODEL Override per-agent model (default
                            claude-sonnet-4-6 for Anthropic,
    +                        gemini-2.5-flash for Gemini)
  • TRIAGEBOT_POLICY_PATH Filesystem path to a triage-policy file
                            read at startup and fed to every agent.
    +                        Defaults to the bundled priv/TRIAGE.md so
    +                        the policy ships with the release. Absent
    +                        file is fine - agents fall back to their
    +                        built-in defaults.
+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+ port() + +
+ +
+ +
+ + +

Re-fetch the repo's labels from GitHub and update the cached value. +Useful from a remote shell when the repo's label taxonomy changes +between deploys.

+ +
+ +
+ + +

Re-fetch the triage-policy file from GitHub and update the cached value. +Useful from a remote shell when the policy changes between deploys.

+ +
+ +
+ + +

Return the configured repo's labels (as fetched at startup). Each +label is #{name, description, color}. Empty list if the fetch +failed - the agents fall back to their built-in vocabulary in that +case.

+ +
+ +
+
+ setup() + +
+ +
+ +
+ + +

Return the repo's triage-policy file contents (as fetched at startup), +or an empty binary if no policy file was found. The policy is fed to +every triage agent via the run input.

+ +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

agent_model()

+ + +
+
+ +
+ +
+ +
-spec agent_model() -> binary().
+ +
+ + +
+
+
+ +
+ + + +
+

github_source()

+ + +
+
+ +
+ +
+ +
-spec github_source() -> map().
+ +
+ + +
+
+
+ +
+ + + +
+

llm_backend_spec()

+ + +
+
+ +
+ +
+ +
-spec llm_backend_spec() -> {module(), map()}.
+ +
+ + +
+
+
+ +
+ + + +
+

metrics_port()

+ + +
+
+ +
+ +
+ +
-spec metrics_port() -> inet:port_number() | undefined.
+ +
+ + +
+
+
+ +
+ + + +
+

port()

+ + +
+
+ +
+ +
+ +
-spec port() -> inet:port_number().
+ +
+ + +
+
+
+ +
+ + + +
+

refresh_repo_labels()

+ + +
+
+ +
+ +
+ +
-spec refresh_repo_labels() -> ok | {error, term()}.
+ +
+ +

Re-fetch the repo's labels from GitHub and update the cached value. +Useful from a remote shell when the repo's label taxonomy changes +between deploys.

+
+
+
+ +
+ + + +
+

refresh_triage_policy()

+ + +
+
+ +
+ +
+ +
-spec refresh_triage_policy() -> ok | {error, term()}.
+ +
+ +

Re-fetch the triage-policy file from GitHub and update the cached value. +Useful from a remote shell when the policy changes between deploys.

+
+
+
+ +
+ + + +
+

repo_labels()

+ + +
+
+ +
+ +
+ +
-spec repo_labels() -> [#{name := binary(), description := binary(), color := binary()}].
+ +
+ +

Return the configured repo's labels (as fetched at startup). Each +label is #{name, description, color}. Empty list if the fetch +failed - the agents fall back to their built-in vocabulary in that +case.

+
+
+
+ +
+ + + +
+

setup()

+ + +
+
+ +
+ +
+ +
-spec setup() -> ok.
+ +
+ + +
+
+
+ +
+ + + +
+

triage_policy()

+ + +
+
+ +
+ +
+ +
-spec triage_policy() -> binary().
+ +
+ +

Return the repo's triage-policy file contents (as fetched at startup), +or an empty binary if no policy file was found. The policy is fed to +every triage agent via the run input.

+
+
+
+ +
+ + + +
+

webhook_secret()

+ + +
+
+ +
+ +
+ +
-spec webhook_secret() -> binary().
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_context.html b/doc/triagebot_context.html new file mode 100644 index 0000000..5c070d2 --- /dev/null +++ b/doc/triagebot_context.html @@ -0,0 +1,304 @@ + + + + + + + + + + + triagebot_context — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_context + (triagebot v0.1.13) + +

+ +
+ + +
+

Builds the run input sent to the gakudan triage pipeline.

The input is a single message every agent reads: a shared +repository-context preamble (the triage policy + the repo's label +taxonomy) followed by the issue itself, enriched with the high-signal +fields GitHub puts in the raw issue payload - contributor association, +reactions, comment count, milestone, and assignees.

Keeping the policy and label vocabulary here, in the shared input, means +they live in one place rather than being duplicated across every agent's +system prompt.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+ + +
+ +
+ + +
+ + + + + +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

build_input(Ticket)

+ + +
+
+ +
+ +
+ +
-spec build_input(gakudan_tickets:ticket()) -> binary().
+ +
+ + +
+
+
+ +
+ + + +
+

format_ticket(Ticket)

+ + +
+
+ +
+ +
+ +
-spec format_ticket(gakudan_tickets:ticket()) -> binary().
+ +
+ + +
+
+
+ +
+ + + +
+

render_label_inventory/1

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

render_repo_context(Policy, Labels)

+ + +
+
+ +
+ +
+ +
-spec render_repo_context(binary(), [map()]) -> binary().
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_dashboard_auth.html b/doc/triagebot_dashboard_auth.html new file mode 100644 index 0000000..5aa939f --- /dev/null +++ b/doc/triagebot_dashboard_auth.html @@ -0,0 +1,210 @@ + + + + + + + + + + + triagebot_dashboard_auth — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_dashboard_auth + (triagebot v0.1.13) + +

+ +
+ + +
+

HTTP Basic auth gate for the triagebot live dashboard.

Credentials come from TRIAGEBOT_DASHBOARD_USER / TRIAGEBOT_DASHBOARD_PASSWORD.

Closed by default: if either is unset the dashboard denies everything (503), so +it is never accidentally exposed. The username and password are compared in +constant time. Gates both the view routes and the HITL controls.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ check(Req) + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

check(Req)

+ + +
+
+ +
+ +
+ +
-spec check(cowboy_req:req()) -> {true, map()} | {false, 401 | 503, map(), binary()}.
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_dup_detector.html b/doc/triagebot_dup_detector.html new file mode 100644 index 0000000..c054806 --- /dev/null +++ b/doc/triagebot_dup_detector.html @@ -0,0 +1,281 @@ + + + + + + + + + + + triagebot_dup_detector — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_dup_detector + (triagebot v0.1.13) + +

+ +
+ + +
+

Third agent. Uses the search_issues tool to look for likely duplicates +of the current issue.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ id() + +
+ +
+ +
+
+ model() + +
+ +
+ +
+ + +
+ +
+
+ tools() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

id()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

model()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

system_prompt()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

tools()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_label_proposer.html b/doc/triagebot_label_proposer.html new file mode 100644 index 0000000..ae801fd --- /dev/null +++ b/doc/triagebot_label_proposer.html @@ -0,0 +1,282 @@ + + + + + + + + + + + triagebot_label_proposer — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_label_proposer + (triagebot v0.1.13) + +

+ +
+ + +
+

Fourth agent. Reads the issue + all prior triage turns and proposes a +set of labels, drawn from the repo's label taxonomy in the shared +repository triage context.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ id() + +
+ +
+ +
+
+ model() + +
+ +
+ +
+ + +
+ +
+
+ tools() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

id()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

model()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

system_prompt()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

tools()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_repo_context_tool.html b/doc/triagebot_repo_context_tool.html new file mode 100644 index 0000000..548718a --- /dev/null +++ b/doc/triagebot_repo_context_tool.html @@ -0,0 +1,234 @@ + + + + + + + + + + + triagebot_repo_context_tool — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_repo_context_tool + (triagebot v0.1.13) + +

+ +
+ + +
+

gakudan tool that fetches a file from the configured GitHub repo, +giving the triage agents a way to ground themselves in repo-specific +context (CLAUDE.md, README.md, CONTRIBUTING.md, the file an +issue links to, etc.).

The active GitHub source_ref is read from triagebot_config +(persistent_term) because tools run inside a turn-worker process with +no parameter for per-run context.

File contents are truncated to ?MAX_BYTES to keep prompt size +bounded; the LLM sees a clear suffix when truncation happened.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ run/1 + +
+ +
+ +
+
+ spec() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

run/1

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

spec()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_runner.html b/doc/triagebot_runner.html new file mode 100644 index 0000000..01142b6 --- /dev/null +++ b/doc/triagebot_runner.html @@ -0,0 +1,246 @@ + + + + + + + + + + + triagebot_runner — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_runner + (triagebot v0.1.13) + +

+ +
+ + +
+

Bridges a verified webhook event to a gakudan triage run.

dispatch/2 is invoked from the webhook controller. It spawns a +detached Erlang process so the controller can return 202 immediately +while the LLM-bound work continues in the background.

Only issue_opened and issue_labeled events are processed. Other +events (closed, edited, etc.) are ignored at the runner level to keep +LLM cost predictable and avoid re-triaging on every edit.

If the issue already carries the triaged label, we skip - this gives +human maintainers a manual override (label, fix, push, no bot retriage) +and protects against the bot looping on its own label updates.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ dispatch/2 + +
+ +
+ +
+ + +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

dispatch/2

+ + +
+
+ +
+ +
+ +
-spec dispatch(atom(), gakudan_tickets:ticket()) -> ok.
+ +
+ + +
+
+
+ +
+ + + +
+

run_triage(Ticket)

+ + +
+
+ +
+ +
+ +
-spec run_triage(gakudan_tickets:ticket()) -> ok.
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_scoper.html b/doc/triagebot_scoper.html new file mode 100644 index 0000000..0ca6c72 --- /dev/null +++ b/doc/triagebot_scoper.html @@ -0,0 +1,281 @@ + + + + + + + + + + + triagebot_scoper — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_scoper + (triagebot v0.1.13) + +

+ +
+ + +
+

Second agent. Reads the issue + classifier output and assesses severity +and scope.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ id() + +
+ +
+ +
+
+ model() + +
+ +
+ +
+ + +
+ +
+
+ tools() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

id()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

model()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

system_prompt()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

tools()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_search_tool.html b/doc/triagebot_search_tool.html new file mode 100644 index 0000000..55400fe --- /dev/null +++ b/doc/triagebot_search_tool.html @@ -0,0 +1,232 @@ + + + + + + + + + + + triagebot_search_tool — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_search_tool + (triagebot v0.1.13) + +

+ +
+ + +
+

gakudan tool that searches the configured GitHub repo for issues +matching a query, returning a short text summary the LLM can read.

The active GitHub source_ref is read from triagebot_config +(persistent_term) because gakudan tools run inside a turn-worker +process spawned by the run state machine, with no parameter for +per-run context.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ run/1 + +
+ +
+ +
+
+ spec() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

run/1

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

spec()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_summariser.html b/doc/triagebot_summariser.html new file mode 100644 index 0000000..4cbabd4 --- /dev/null +++ b/doc/triagebot_summariser.html @@ -0,0 +1,281 @@ + + + + + + + + + + + triagebot_summariser — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_summariser + (triagebot v0.1.13) + +

+ +
+ + +
+

Fifth and final agent. Reads everything above and produces the comment +that gets posted to the issue.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+
+ id() + +
+ +
+ +
+
+ model() + +
+ +
+ +
+ + +
+ +
+
+ tools() + +
+ +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

id()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

model()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

system_prompt()

+ + +
+
+ +
+ + +
+
+
+ +
+ + + +
+

tools()

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/doc/triagebot_webhook_controller.html b/doc/triagebot_webhook_controller.html new file mode 100644 index 0000000..bb2f017 --- /dev/null +++ b/doc/triagebot_webhook_controller.html @@ -0,0 +1,207 @@ + + + + + + + + + + + triagebot_webhook_controller — triagebot v0.1.13 + + + + + + + + + + + +
+ + + + + + + +
+
+ + +
+
+

+ triagebot_webhook_controller + (triagebot v0.1.13) + +

+ +
+ + +
+

Nova controller for GitHub webhook deliveries.

Reads the raw body (needed for HMAC), verifies the signature against the +configured shared secret, parses the event, and hands off to +triagebot_runner for async processing.

Returns:

  • 202 Accepted on a verified, supported event.
  • 200 OK on a verified-but-unsupported event (we won't process it but +GitHub shouldn't retry).
  • 401 Unauthorized if the signature doesn't match.
  • 400 Bad Request on malformed payloads.

Nova's handle_status does not accept a trailing Req in 3-tuple form; +that slot is ExtraHeaders :: map(). We use the bare {status, Code} +form to let Nova render with its own Req.

+
+ +
+ +
+

+ + + + Summary +

+
+

+ Functions +

+ +
+ + +
+ +
+ +
+ + +
+

+ + + + Functions +

+ +
+
+ +
+ + + +
+

github_event(Req)

+ + +
+
+ +
+ + +
+
+ +
+
+ + +
+
+
+ + + diff --git a/priv/TRIAGE.md b/priv/TRIAGE.md new file mode 100644 index 0000000..252e68f --- /dev/null +++ b/priv/TRIAGE.md @@ -0,0 +1,69 @@ +# Triage policy - gakudan + +This file ships in triagebot's release (`priv/TRIAGE.md`) and is fed to +every triage agent as authoritative context. It is tuned for +[Taure/gakudan](https://github.com/Taure/gakudan): multi-agent +collaboration primitives for the BEAM (Erlang/OTP, single-node). + +Edit it to change how the bot triages, then redeploy (or call +`triagebot_config:refresh_triage_policy/0` from a remote shell). Agents +follow this policy wherever it conflicts with their built-in defaults. + +## Classification + +- `bug`: behaviour contrary to documented intent (a crash, a wrong + result, a leak, a supervision-tree fault). +- `feature`: a net-new primitive, behaviour, LLM/MCP backend, or API. +- `docs`: documentation, README, or ADR text only - no code behaviour + change. +- `question`: a usage question with a concrete answer. +- `discussion`: open-ended design conversation with no single clear ask. +- `duplicate-suspect`: strongly resembles an existing issue. + +## Severity + +- `blocker`: crash, data loss, security, or a broken public behaviour + contract (a `gakudan_agent`/`router`/`tool`/`llm`/`checkpointer` + callback, telemetry event, or the MCP wire format - all semver-locked). +- `major`: breaks core orchestration (run lifecycle, fanout, resume, + streaming) or affects many consumers. +- `minor`: small impact, easy to work around. +- `cosmetic`: typos, formatting, log wording. + +Treat anything mentioning credentials, API keys, prompt-injection, or +data leakage as at least `major` and label it `security`. + +## Scope + +- `self-contained`: one module or one obvious function. +- `cross-cutting`: changes a public behaviour callback (ripples through + every implementer), a telemetry event (requires a `gakudan_metrics` + lockstep update), or the MCP/stream message shapes. These are + semver-relevant and usually need an ADR (`docs/adr/`, Nygard format). +- `unclear`: not enough information to tell. + +## Labels + +- `needs-info`: the body lacks a reproducer, OTP version, or enough + detail to act on. Prefer this over guessing. +- `good-first-issue`: `self-contained` + `minor` + well-described. +- `claude-try`: apply only when the issue is `bug` + (`minor` or + `major`) + `self-contained` AND has a clear reproducer. This is the + signal for the claude-code-action workflow to attempt an auto-fix. + Do NOT apply it to anything touching a public behaviour, telemetry, + the MCP wire format, or anything that needs an ADR first. + +## Scope guardrails (out of scope by design) + +gakudan is **single-node by design**. Requests for multi-node +distribution, clustering, or distributed-Erlang fanout are out of scope: +classify as `discussion`, keep severity at most `minor`, and say so +plainly rather than proposing an implementation. + +## Contributor signal + +First-time contributors (`FIRST_TIME_CONTRIBUTOR`) get a friendlier tone +and an explicit pointer to what extra detail would help (a reproducer, +the OTP version, the backend in use). Issues filed by maintainers +(`MEMBER`, `OWNER`) usually already carry intentional labels - respect +them. diff --git a/src/agents/triagebot_classifier.erl b/src/agents/triagebot_classifier.erl index e496918..03d9d3b 100644 --- a/src/agents/triagebot_classifier.erl +++ b/src/agents/triagebot_classifier.erl @@ -13,8 +13,10 @@ id() -> classifier. system_prompt() -> ~""" You are the classifier in a GitHub issue triage pipeline. Read the - issue above (title, body, existing labels) and produce a single - structured response. + issue above (title, body, existing labels, contributor association) + and produce a single structured response. A repository triage + context precedes the issue - follow its triage policy where it + defines what the categories mean for this project. Before you classify, ground yourself in the repo: if you are not sure what the project is or what kinds of issues are in-scope, call diff --git a/src/agents/triagebot_label_proposer.erl b/src/agents/triagebot_label_proposer.erl index 237d618..743410c 100644 --- a/src/agents/triagebot_label_proposer.erl +++ b/src/agents/triagebot_label_proposer.erl @@ -1,7 +1,8 @@ -module(triagebot_label_proposer). -moduledoc """ Fourth agent. Reads the issue + all prior triage turns and proposes a -set of labels. +set of labels, drawn from the repo's label taxonomy in the shared +repository triage context. """. -behaviour(gakudan_agent). @@ -11,64 +12,34 @@ set of labels. id() -> label_proposer. system_prompt() -> - iolist_to_binary([ - ~""" - You are the label proposer. The previous turns classified the - issue, scoped its severity, and checked for duplicates. Now - propose labels for the maintainers to apply. - - Output exactly ONE line: + ~""" + You are the label proposer. The previous turns classified the + issue, scoped its severity, and checked for duplicates. Now propose + labels for the maintainers to apply. - Labels: