respec 35.9.0 → 37.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -34
- package/builds/respec-aom.js +137 -111
- package/builds/respec-aom.js.map +1 -1
- package/builds/respec-dini.js +138 -112
- package/builds/respec-dini.js.map +1 -1
- package/builds/respec-geonovum.js +113 -87
- package/builds/respec-geonovum.js.map +1 -1
- package/builds/respec-w3c.js +605 -374
- package/builds/respec-w3c.js.map +1 -1
- package/builds/respec-worker.js +54 -8
- package/package.json +44 -16
- package/tools/respec2html.js +1 -2
- package/tools/respecDocWriter.js +16 -33
package/builds/respec-w3c.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
window.respecVersion="35.9.0",function(){"use strict";var e="undefined"!=typeof document?document.currentScript:null;const t=!!window.require;if(!t){const e=function(e,t){const n=e.map((e=>{if(!(e in window.require.modules))throw new Error(`Unsupported dependency name: ${e}`);return window.require.modules[e]}));Promise.all(n).then((e=>t(...e)))};e.modules={},window.require=e}function n(e,n){t||(window.require.modules[e]=n)}const r=document.documentElement;r?.hasAttribute("lang")||(r.lang="en",r.hasAttribute("dir")||(r.dir="ltr"));const s={},o=r?.lang??"en";var i=Object.freeze({__proto__:null,l10n:s,lang:o,name:"core/l10n",run:function(e){e.l10n=s[o]||s.en}});const a=(e,t)=>t.some((t=>e instanceof t));let c,l;const u=new WeakMap,d=new WeakMap,p=new WeakMap;let h={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return u.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return b(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function f(e){h=e(h)}function m(e){return(l||(l=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(y(this),t),b(this.request)}:function(...t){return b(e.apply(y(this),t))}}function g(e){return"function"==typeof e?m(e):(e instanceof IDBTransaction&&function(e){if(u.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",s),e.removeEventListener("error",o),e.removeEventListener("abort",o)},s=()=>{t(),r()},o=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",s),e.addEventListener("error",o),e.addEventListener("abort",o)}));u.set(e,t)}(e),a(e,c||(c=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,h):e)}function b(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",s),e.removeEventListener("error",o)},s=()=>{t(b(e.result)),r()},o=()=>{n(e.error),r()};e.addEventListener("success",s),e.addEventListener("error",o)}));return p.set(t,e),t}(e);if(d.has(e))return d.get(e);const t=g(e);return t!==e&&(d.set(e,t),p.set(t,e)),t}const y=e=>p.get(e);const w=["get","getKey","getAll","getAllKeys","count"],v=["put","add","delete","clear"],k=new Map;function $(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(k.get(t))return k.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,s=v.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!s&&!w.includes(n))return;const o=async function(e,...t){const o=this.transaction(e,s?"readwrite":"readonly");let i=o.store;return r&&(i=i.index(t.shift())),(await Promise.all([i[n](...t),s&&o.done]))[0]};return k.set(t,o),o}f((e=>({...e,get:(t,n,r)=>$(t,n)||e.get(t,n,r),has:(t,n)=>!!$(t,n)||e.has(t,n)})));const x=["continue","continuePrimaryKey","advance"],_={},S=new WeakMap,C=new WeakMap,R={get(e,t){if(!x.includes(t))return e[t];let n=_[t];return n||(n=_[t]=function(...e){S.set(this,C.get(this)[t](...e))}),n}};async function*E(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const n=new Proxy(t,R);for(C.set(n,t),p.set(n,y(t));t;)yield n,t=await(S.get(n)||t.continue()),S.delete(n)}function L(e,t){return t===Symbol.asyncIterator&&a(e,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===t&&a(e,[IDBIndex,IDBObjectStore])}f((e=>({...e,get:(t,n,r)=>L(t,n)?E:e.get(t,n,r),has:(t,n)=>L(t,n)||e.has(t,n)})));var A=Object.freeze({__proto__:null,deleteDB:function(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",(e=>t(e.oldVersion,e))),b(n).then((()=>{}))},openDB:function(e,t,{blocked:n,upgrade:r,blocking:s,terminated:o}={}){const i=indexedDB.open(e,t),a=b(i);return r&&i.addEventListener("upgradeneeded",(e=>{r(b(i.result),e.oldVersion,e.newVersion,b(i.transaction),e)})),n&&i.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{o&&e.addEventListener("close",(()=>o())),s&&e.addEventListener("versionchange",(e=>s(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a},unwrap:y,wrap:b});function T(e,t,n,r,s,{level:o="error",autofix:i,ruleName:a}={}){function c(n){return n>0?e.slice(t,t+n):e.slice(Math.max(t+n,0),t)}function l(n,{precedes:r}={}){const s=n.map((e=>e.trivia+e.value)).join(""),o=e[t];return"eof"===o.type?s:r?s+o.trivia:s.slice(o.trivia.length)}const u="eof"!==e[t].type?e[t].line:e.length>1?e[t-1].line:1,d=function(e){const t=e.split("\n");return t[t.length-1]}(l(c(-5),{precedes:!0})),p=c(5),h=l(p),f=d+h.split("\n")[0]+"\n"+(" ".repeat(d.length)+"^"),m="Syntax"===s?"since":"inside",g=`${s} error at line ${u}${e.name?` in ${e.name}`:""}${n&&n.name?`, ${m} \`${n.partial?"partial ":""}${function(e){const t=[e];for(;e&&e.parent;){const{parent:n}=e;t.unshift(n),e=n}return t.map((e=>function(e,t){let n=e;return t&&(n+=` ${t}`),n}(e.type,e.name))).join(" -> ")}(n)}\``:""}:\n${f}`;return{message:`${g} ${r}`,bareMessage:r,context:g,line:u,sourceName:e.name,level:o,ruleName:a,autofix:i,input:h,tokens:p}}function P(e,t,n,r){return T(e,t,n,r,"Syntax")}function I(e,t,n,r,s={}){return s.ruleName=n,T(t.source,e.index,t,r,"Validation",s)}class D{constructor({source:e,tokens:t}){Object.defineProperties(this,{source:{value:e},tokens:{value:t,writable:!0},parent:{value:null,writable:!0},this:{value:this}})}toJSON(){const e={type:void 0,name:void 0,inheritance:void 0};let t=this;for(;t!==Object.prototype;){const n=Object.getOwnPropertyDescriptors(t);for(const[t,r]of Object.entries(n))(r.enumerable||r.get)&&(e[t]=this[t]);t=Object.getPrototypeOf(t)}return e}}function N(e,t,{useNullableInner:n}={}){if(!e.union){const r=t.unique.get(e.idlType);if(!r)return;if("typedef"===r.type){const{typedefIncludesDictionary:n}=t.cache;if(n.has(r))return n.get(r);t.cache.typedefIncludesDictionary.set(r,void 0);const s=N(r.idlType,t);if(t.cache.typedefIncludesDictionary.set(r,s),s)return{reference:e,dictionary:s.dictionary}}if("dictionary"===r.type&&(n||!e.nullable))return{reference:e,dictionary:r}}for(const n of e.subtype){const e=N(n,t);if(e)return n.union?e:{reference:n,dictionary:e.dictionary}}}function j(e,t){if(t.cache.dictionaryIncludesRequiredField.has(e))return t.cache.dictionaryIncludesRequiredField.get(e);t.cache.dictionaryIncludesRequiredField.set(e,void 0);let n=e.members.some((e=>e.required));if(!n&&e.inheritance){const r=t.unique.get(e.inheritance);r?j(r,t)&&(n=!0):n=!0}return t.cache.dictionaryIncludesRequiredField.set(e,n),n}class O extends Array{constructor({source:e,tokens:t}){super(),Object.defineProperties(this,{source:{value:e},tokens:{value:t},parent:{value:null,writable:!0}})}}class z extends D{static parser(e,t){return()=>{const n=e.consumeKind(t);if(n)return new z({source:e.source,tokens:{value:n}})}}get value(){return ne(this.tokens.value.value)}write(e){return e.ts.wrap([e.token(this.tokens.value),e.token(this.tokens.separator)])}}class q extends z{static parse(e){const t=e.consumeKind("eof");if(t)return new q({source:e.source,tokens:{value:t}})}get type(){return"eof"}}function M(e,t){return re(e,{parser:z.parser(e,t),listName:t+" list"})}const U=["identifier","decimal","integer","string"],W=new Map([...["NoInterfaceObject","LenientSetter","LenientThis","TreatNonObjectAsNull","Unforgeable"].map((e=>[e,`Legacy${e}`])),["NamedConstructor","LegacyFactoryFunction"],["OverrideBuiltins","LegacyOverrideBuiltIns"],["TreatNullAs","LegacyNullToEmptyString"]]);function F(e){for(const t of U){const n=M(e,t);if(n.length)return n}e.error("Expected identifiers, strings, decimals, or integers but none found")}class B extends D{static parse(e){const t={assign:e.consume("=")},n=fe(new B({source:e.source,tokens:t}));if(n.list=[],t.assign){if(t.asterisk=e.consume("*"),t.asterisk)return n.this;t.secondaryName=e.consumeKind(...U)}return t.open=e.consume("("),t.open?(n.list=n.rhsIsList?F(e):ae(e),t.close=e.consume(")")||e.error("Unexpected token in extended attribute argument list")):t.assign&&!t.secondaryName&&e.error("No right hand side to extended attribute assignment"),n.this}get rhsIsList(){return this.tokens.assign&&!this.tokens.asterisk&&!this.tokens.secondaryName}get rhsType(){return this.rhsIsList?this.list[0].tokens.value.type+"-list":this.tokens.asterisk?"*":this.tokens.secondaryName?this.tokens.secondaryName.type:null}write(e){const{rhsType:t}=this;return e.ts.wrap([e.token(this.tokens.assign),e.token(this.tokens.asterisk),e.reference_token(this.tokens.secondaryName,this.parent),e.token(this.tokens.open),...this.list.map((n=>"identifier-list"===t?e.identifier(n,this.parent):n.write(e))),e.token(this.tokens.close)])}}class H extends D{static parse(e){const t=e.consumeKind("identifier");if(t)return new H({source:e.source,tokens:{name:t},params:B.parse(e)})}constructor({source:e,tokens:t,params:n}){super({source:e,tokens:t}),n.parent=this,Object.defineProperty(this,"params",{value:n})}get type(){return"extended-attribute"}get name(){return this.tokens.name.value}get rhs(){const{rhsType:e,tokens:t,list:n}=this.params;if(!e)return null;return{type:e,value:this.params.rhsIsList?n:this.params.tokens.secondaryName?ne(t.secondaryName.value):null}}get arguments(){const{rhsIsList:e,list:t}=this.params;return!t||e?[]:t}*validate(e){const{name:t}=this;if("LegacyNoInterfaceObject"===t){const e="`[LegacyNoInterfaceObject]` extended attribute is an undesirable feature that may be removed from Web IDL in the future. Refer to the [relevant upstream PR](https://github.com/whatwg/webidl/pull/609) for more information.";yield I(this.tokens.name,this,"no-nointerfaceobject",e,{level:"warning"})}else if(W.has(t)){const e=`\`[${t}]\` extended attribute is a legacy feature that is now renamed to \`[${W.get(t)}]\`. Refer to the [relevant upstream PR](https://github.com/whatwg/webidl/pull/870) for more information.`;yield I(this.tokens.name,this,"renamed-legacy",e,{level:"warning",autofix:(n=this,()=>{const{name:e}=n;n.tokens.name.value=W.get(e),"TreatNullAs"===e&&(n.params.tokens={})})})}var n;for(const t of this.arguments)yield*t.validate(e)}write(e){return e.ts.wrap([e.ts.trivia(this.tokens.name.trivia),e.ts.extendedAttribute(e.ts.wrap([e.ts.extendedAttributeReference(this.name),this.params.write(e)])),e.token(this.tokens.separator)])}}class G extends O{static parse(e){const t={};t.open=e.consume("[");const n=new G({source:e.source,tokens:t});return t.open?(n.push(...re(e,{parser:H.parse,listName:"extended attribute"})),t.close=e.consume("]")||e.error("Expected a closing token for the extended attribute list"),n.length||(e.unconsume(t.close.index),e.error("An extended attribute list must not be empty")),e.probe("[")&&e.error("Illegal double extended attribute lists, consider merging them"),n):n}*validate(e){for(const t of this)yield*t.validate(e)}write(e){return this.length?e.ts.wrap([e.token(this.tokens.open),...this.map((t=>t.write(e))),e.token(this.tokens.close)]):""}}function V(e,t){const n=e.consume("?");n&&(t.tokens.nullable=n),e.probe("?")&&e.error("Can't nullable more than once")}function Y(e,t){let n=function(e,t){const n=e.consume("FrozenArray","ObservableArray","Promise","async_sequence","sequence","record");if(!n)return;const r=fe(new K({source:e.source,tokens:{base:n}}));switch(r.tokens.open=e.consume("<")||e.error(`No opening bracket after ${n.value}`),n.value){case"Promise":{e.probe("[")&&e.error("Promise type cannot have extended attribute");const n=le(e,t)||e.error("Missing Promise subtype");r.subtype.push(n);break}case"async_sequence":case"sequence":case"FrozenArray":case"ObservableArray":{const s=ce(e,t)||e.error(`Missing ${n.value} subtype`);r.subtype.push(s);break}case"record":{e.probe("[")&&e.error("Record key cannot have extended attribute");const n=e.consume(...be)||e.error(`Record key must be one of: ${be.join(", ")}`),s=new K({source:e.source,tokens:{base:n}});s.tokens.separator=e.consume(",")||e.error("Missing comma after record key type"),s.type=t;const o=ce(e,t)||e.error("Error parsing generic type record");r.subtype.push(s,o);break}}return r.idlType||e.error(`Error parsing generic type ${n.value}`),r.tokens.close=e.consume(">")||e.error(`Missing closing bracket after ${n.value}`),r.this}(e,t)||ie(e);if(!n){const t=e.consumeKind("identifier")||e.consume(...be,...ge);if(!t)return;n=new K({source:e.source,tokens:{base:t}}),e.probe("<")&&e.error(`Unsupported generic type ${t.value}`)}return"Promise"===n.generic&&e.probe("?")&&e.error("Promise type cannot be nullable"),n.type=t||null,V(e,n),n.nullable&&"any"===n.idlType&&e.error("Type `any` cannot be made nullable"),n}class K extends D{static parse(e,t){return Y(e,t)||function(e,t){const n={};if(n.open=e.consume("("),!n.open)return;const r=fe(new K({source:e.source,tokens:n}));for(r.type=t||null;;){const n=ce(e,t)||e.error("No type after open parenthesis or 'or' in union type");"any"===n.idlType&&e.error("Type `any` cannot be included in a union type"),"Promise"===n.generic&&e.error("Type `Promise` cannot be included in a union type"),r.subtype.push(n);const s=e.consume("or");if(!s)break;n.tokens.separator=s}return r.idlType.length<2&&e.error("At least two types are expected in a union type but found less"),n.close=e.consume(")")||e.error("Unterminated union type"),V(e,r),r.this}(e,t)}constructor({source:e,tokens:t}){super({source:e,tokens:t}),Object.defineProperty(this,"subtype",{value:[],writable:!0}),this.extAttrs=new G({source:e,tokens:{}})}get generic(){return this.subtype.length&&this.tokens.base?this.tokens.base.value:""}get nullable(){return Boolean(this.tokens.nullable)}get union(){return Boolean(this.subtype.length)&&!this.tokens.base}get idlType(){if(this.subtype.length)return this.subtype;return ne([this.tokens.prefix,this.tokens.base,this.tokens.postfix].filter((e=>e)).map((e=>e.value)).join(" "))}*validate(e){if(yield*this.extAttrs.validate(e),"BufferSource"===this.idlType)for(const e of[this.extAttrs,this.parent?.extAttrs])for(const t of e){if("AllowShared"!==t.name)continue;const n="`[AllowShared] BufferSource` is now replaced with AllowSharedBufferSource.";yield I(this.tokens.base,this,"migrate-allowshared",n,{autofix:Z(this,t,e)})}if("void"===this.idlType){const e="`void` is now replaced by `undefined`. Refer to the [relevant GitHub issue](https://github.com/whatwg/webidl/issues/60) for more information.";yield I(this.tokens.base,this,"replace-void",e,{autofix:(t=this,()=>{t.tokens.base.value="undefined"})})}var t;const n=!this.union&&e.unique.get(this.idlType),r=this.union?this:n&&"typedef"===n.type?n.idlType:void 0;if(r&&this.nullable){const{reference:t}=N(r,e)||{};if(t){const e=(this.union?t:this).tokens.base,n="Nullable union cannot include a dictionary type.";yield I(e,this,"no-nullable-union-dict",n)}}else for(const t of this.subtype)yield*t.validate(e)}write(e){return e.ts.wrap([this.extAttrs.write(e),(()=>{if(this.union||this.generic)return e.ts.wrap([e.token(this.tokens.base,e.ts.generic),e.token(this.tokens.open),...this.subtype.map((t=>t.write(e))),e.token(this.tokens.close)]);const t=this.tokens.prefix||this.tokens.base,n=this.tokens.prefix?[this.tokens.prefix.value,e.ts.trivia(this.tokens.base.trivia)]:[],r=e.reference(e.ts.wrap([...n,this.tokens.base.value,e.token(this.tokens.postfix)]),{unescaped:this.idlType,context:this});return e.ts.wrap([e.ts.trivia(t.trivia),r])})(),e.token(this.tokens.nullable),e.token(this.tokens.separator)])}}function Z(e,t,n){return()=>{const r=n.indexOf(t);n.splice(r,1),!n.length&&e.tokens.base.trivia.match(/^\s$/)&&(e.tokens.base.trivia=""),e.tokens.base.value="AllowSharedBufferSource"}}class J extends D{static parse(e){const t=e.consume("=");if(!t)return null;const n=se(e)||e.consumeKind("string")||e.consume("null","[","{")||e.error("No value for default"),r=[n];if("["===n.value){const t=e.consume("]")||e.error("Default sequence value must be empty");r.push(t)}else if("{"===n.value){const t=e.consume("}")||e.error("Default dictionary value must be empty");r.push(t)}return new J({source:e.source,tokens:{assign:t},expression:r})}constructor({source:e,tokens:t,expression:n}){super({source:e,tokens:t}),n.parent=this,Object.defineProperty(this,"expression",{value:n})}get type(){return oe(this.expression[0]).type}get value(){return oe(this.expression[0]).value}get negative(){return oe(this.expression[0]).negative}write(e){return e.ts.wrap([e.token(this.tokens.assign),...this.expression.map((t=>e.token(t)))])}}class X extends D{static parse(e){const t=e.position,n={},r=fe(new X({source:e.source,tokens:n}));return r.extAttrs=G.parse(e),n.optional=e.consume("optional"),r.idlType=ce(e,"argument-type"),r.idlType?(n.optional||(n.variadic=e.consume("...")),n.name=e.consumeKind("identifier")||e.consume(...ye),n.name?(r.default=n.optional?J.parse(e):null,r.this):e.unconsume(t)):e.unconsume(t)}get type(){return"argument"}get optional(){return!!this.tokens.optional}get variadic(){return!!this.tokens.variadic}get name(){return ne(this.tokens.name.value)}*validate(e){yield*this.extAttrs.validate(e),yield*this.idlType.validate(e);const t=N(this.idlType,e,{useNullableInner:!0});if(t)if(this.idlType.nullable){const e="Dictionary arguments cannot be nullable.";yield I(this.tokens.name,this,"no-nullable-dict-arg",e)}else if(this.optional){if(!this.default){const e="Optional dictionary arguments must have a default value of `{}`.";yield I(this.tokens.name,this,"dict-arg-default",e,{autofix:Q(this)})}}else if(this.parent&&!j(t.dictionary,e)&&function(e){const t=e.parent.arguments||e.parent.list,n=t.indexOf(e),r=t.slice(n+1).some((e=>!e.optional));return!r}(this)){const e="Dictionary argument must be optional if it has no required fields";yield I(this.tokens.name,this,"dict-arg-optional",e,{autofix:(n=this,()=>{const e=he(n.idlType);n.tokens.optional={...e,type:"optional",value:"optional"},e.trivia=" ",Q(n)()})})}var n}write(e){return e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.optional),e.ts.type(this.idlType.write(e)),e.token(this.tokens.variadic),e.name_token(this.tokens.name,{data:this}),this.default?this.default.write(e):"",e.token(this.tokens.separator)])}}function Q(e){return()=>{e.default=J.parse(new $e(" = {}"))}}class ee extends D{static parse(e,{special:t,regular:n}={}){const r={special:t},s=fe(new ee({source:e.source,tokens:r}));return t&&"stringifier"===t.value&&(r.termination=e.consume(";"),r.termination)?(s.arguments=[],s):(t||n||(r.special=e.consume("getter","setter","deleter")),s.idlType=le(e)||e.error("Missing return type"),r.name=e.consumeKind("identifier")||e.consume("includes"),r.open=e.consume("(")||e.error("Invalid operation"),s.arguments=ae(e),r.close=e.consume(")")||e.error("Unterminated operation"),r.termination=e.consume(";")||e.error("Unterminated operation, expected `;`"),s.this)}get type(){return"operation"}get name(){const{name:e}=this.tokens;return e?ne(e.value):""}get special(){return this.tokens.special?this.tokens.special.value:""}*validate(e){if(yield*this.extAttrs.validate(e),!this.name&&["","static"].includes(this.special)){const e="Regular or static operations must have both a return type and an identifier.";yield I(this.tokens.open,this,"incomplete-op",e)}if(this.idlType){if("async_sequence"===this.idlType.generic){const e="async_sequence types cannot be returned by an operation.";yield I(this.idlType.tokens.base,this,"async-sequence-idl-to-js",e)}yield*this.idlType.validate(e)}for(const t of this.arguments)yield*t.validate(e)}write(e){const{parent:t}=this,n=this.idlType?[e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),e.token(this.tokens.open),e.ts.wrap(this.arguments.map((t=>t.write(e)))),e.token(this.tokens.close)]:[];return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),this.tokens.name?e.token(this.tokens.special):e.token(this.tokens.special,e.ts.nameless,{data:this,parent:t}),...n,e.token(this.tokens.termination)]),{data:this,parent:t})}}class te extends D{static parse(e,{special:t,noInherit:n=!1,readonly:r=!1}={}){const s=e.position,o={special:t},i=fe(new te({source:e.source,tokens:o}));if(t||n||(o.special=e.consume("inherit")),"inherit"===i.special&&e.probe("readonly")&&e.error("Inherited attributes cannot be read-only"),o.readonly=e.consume("readonly"),r&&!o.readonly&&e.probe("attribute")&&e.error("Attributes must be readonly in this context"),o.base=e.consume("attribute"),o.base)return i.idlType=ce(e,"attribute-type")||e.error("Attribute lacks a type"),o.name=e.consumeKind("identifier")||e.consume("async","required")||e.error("Attribute lacks a name"),o.termination=e.consume(";")||e.error("Unterminated attribute, expected `;`"),i.this;e.unconsume(s)}get type(){return"attribute"}get special(){return this.tokens.special?this.tokens.special.value:""}get readonly(){return!!this.tokens.readonly}get name(){return ne(this.tokens.name.value)}*validate(e){if(yield*this.extAttrs.validate(e),yield*this.idlType.validate(e),["async_sequence","sequence","record"].includes(this.idlType.generic)){const e=`Attributes cannot accept ${this.idlType.generic} types.`;yield I(this.tokens.name,this,"attr-invalid-type",e)}{const{reference:t}=N(this.idlType,e)||{};if(t){const e=(this.idlType.union?t:this.idlType).tokens.base,n="Attributes cannot accept dictionary types.";yield I(e,this,"attr-invalid-type",n)}}if(this.readonly&&function(e,t){if(e.union)return!1;if(e.extAttrs.some((e=>"EnforceRange"===e.name)))return!0;const n=t.unique.get(e.idlType);return"typedef"===n?.type&&n.idlType.extAttrs.some((e=>"EnforceRange"===e.name))}(this.idlType,e)){const e=this.idlType.tokens.base,t="Readonly attributes cannot accept [EnforceRange] extended attribute.";yield I(e,this,"attr-invalid-type",t)}}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.special),e.token(this.tokens.readonly),e.token(this.tokens.base),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),e.token(this.tokens.termination)]),{data:this,parent:t})}}function ne(e){return e.startsWith("_")?e.slice(1):e}function re(e,{parser:t,allowDangler:n,listName:r="list"}){const s=t(e);if(!s)return[];s.tokens.separator=e.consume(",");const o=[s];for(;s.tokens.separator;){const s=t(e);if(!s){n||e.error(`Trailing comma in ${r}`);break}if(s.tokens.separator=e.consume(","),o.push(s),!s.tokens.separator)break}return o}function se(e){return e.consumeKind("decimal","integer")||e.consume("true","false","Infinity","-Infinity","NaN")}function oe({type:e,value:t}){switch(e){case"decimal":case"integer":return{type:"number",value:t};case"string":return{type:"string",value:t.slice(1,-1)}}switch(t){case"true":case"false":return{type:"boolean",value:"true"===t};case"Infinity":case"-Infinity":return{type:"Infinity",negative:t.startsWith("-")};case"[":return{type:"sequence",value:[]};case"{":return{type:"dictionary"};default:return{type:t}}}function ie(e){const{source:t}=e,n=function(){const n=e.consume("unsigned"),r=e.consume("short","long");if(r){const s=e.consume("long");return new K({source:t,tokens:{prefix:n,base:r,postfix:s}})}n&&e.error("Failed to parse integer type")}()||function(){const n=e.consume("unrestricted"),r=e.consume("float","double");if(r)return new K({source:t,tokens:{prefix:n,base:r}});n&&e.error("Failed to parse float type")}();if(n)return n;const r=e.consume("bigint","boolean","byte","octet","undefined");return r?new K({source:t,tokens:{base:r}}):void 0}function ae(e){return re(e,{parser:X.parse,listName:"arguments list"})}function ce(e,t){const n=G.parse(e),r=K.parse(e,t);return r&&(fe(r).extAttrs=n),r}function le(e,t){const n=K.parse(e,t||"return-type");if(n)return n;const r=e.consume("void");if(r){const t=new K({source:e.source,tokens:{base:r}});return t.type="return-type",t}}function ue(e){const t=e.consume("stringifier");if(!t)return;return te.parse(e,{special:t})||ee.parse(e,{special:t})||e.error("Unterminated stringifier")}function de(e){const t=e.split("\n");if(t.length){const e=t[t.length-1].match(/^\s+/);if(e)return e[0]}return""}function pe(e){return()=>{if(e.extAttrs.length){const t=new $e("Exposed=Window,"),n=H.parse(t);n.tokens.separator=t.consume(",");const r=e.extAttrs[0];/^\s/.test(r.tokens.name.trivia)||(r.tokens.name.trivia=` ${r.tokens.name.trivia}`),e.extAttrs.unshift(n)}else{fe(e).extAttrs=G.parse(new $e("[Exposed=Window]"));const t=e.tokens.base.trivia;e.extAttrs.tokens.open.trivia=t,e.tokens.base.trivia=`\n${de(t)}`}}}function he(e){if(e.extAttrs.length)return e.extAttrs.tokens.open;if("operation"===e.type&&!e.special)return he(e.idlType);const t=Object.values(e.tokens).sort(((e,t)=>e.index-t.index));return t[0]}function fe(e,t){if(t||(t=e),!e)return e;return new Proxy(e,{get(e,t){const n=e[t];return Array.isArray(n)&&"source"!==t?fe(n,e):n},set(e,n,r){if(e[n]=r,!r)return!0;if(Array.isArray(r))for(const e of r)void 0!==e.parent&&(e.parent=t);else void 0!==r.parent&&(r.parent=t);return!0}})}const me={decimal:/-?(?=[0-9]*\.|[0-9]+[eE])(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/y,integer:/-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/y,identifier:/[_-]?[A-Za-z][0-9A-Z_a-z-]*/y,string:/"[^"]*"/y,whitespace:/[\t\n\r ]+/y,comment:/\/\/.*|\/\*[\s\S]*?\*\//y,other:/[^\t\n\r 0-9A-Za-z]/y},ge=["ArrayBuffer","SharedArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","BigInt64Array","BigUint64Array","Float16Array","Float32Array","Float64Array","any","object","symbol"],be=["ByteString","DOMString","USVString"],ye=["async","attribute","callback","const","constructor","deleter","dictionary","enum","getter","includes","inherit","interface","iterable","maplike","namespace","partial","required","setlike","setter","static","stringifier","typedef","unrestricted"],we=["-Infinity","FrozenArray","Infinity","NaN","ObservableArray","Promise","async_iterable","async_sequence","bigint","boolean","byte","double","false","float","long","mixin","null","octet","optional","or","readonly","record","sequence","short","true","undefined","unsigned","void"].concat(ye,be,ge),ve=["(",")",",","...",":",";","<","=",">","?","*","[","]","{","}"],ke=["_constructor","toString","_toString"];class $e{constructor(e){this.source=function(e){const t=[];let n=0,r="",s=1,o=0;for(;n<e.length;){const a=e.charAt(n);let c=-1;if(/[\t\n\r ]/.test(a)?c=i("whitespace",{noFlushTrivia:!0}):"/"===a&&(c=i("comment",{noFlushTrivia:!0})),-1!==c){const e=t.pop().value;s+=(e.match(/\n/g)||[]).length,r+=e,o-=1}else if(/[-0-9.A-Z_a-z]/.test(a)){if(c=i("decimal"),-1===c&&(c=i("integer")),-1===c){c=i("identifier");const e=t.length-1,n=t[e];if(-1!==c){if(ke.includes(n.value)){const r=`${ne(n.value)} is a reserved identifier and must not be used.`;throw new xe(P(t,e,null,r))}we.includes(n.value)&&(n.type="inline")}}}else'"'===a&&(c=i("string"));for(const i of ve)if(e.startsWith(i,n)){t.push({type:"inline",value:i,trivia:r,line:s,index:o}),r="",n+=i.length,c=n;break}if(-1===c&&(c=i("other")),-1===c)throw new Error("Token stream not progressing");n=c,o+=1}return t.push({type:"eof",value:"",trivia:r,line:s,index:o}),t;function i(i,{noFlushTrivia:a}={}){const c=me[i];c.lastIndex=n;const l=c.exec(e);return l?(t.push({type:i,value:l[0],trivia:r,line:s,index:o}),a||(r=""),c.lastIndex):-1}}(e),this.position=0}error(e){throw new xe(P(this.source,this.position,this.current,e))}probeKind(e){return this.source.length>this.position&&this.source[this.position].type===e}probe(e){return this.probeKind("inline")&&this.source[this.position].value===e}consumeKind(...e){for(const t of e){if(!this.probeKind(t))continue;const e=this.source[this.position];return this.position++,e}}consume(...e){if(!this.probeKind("inline"))return;const t=this.source[this.position];for(const n of e)if(t.value===n)return this.position++,t}consumeIdentifier(e){if(this.probeKind("identifier")&&this.source[this.position].value===e)return this.consumeKind("identifier")}unconsume(e){this.position=e}}class xe extends Error{constructor({message:e,bareMessage:t,context:n,line:r,sourceName:s,input:o,tokens:i}){super(e),this.name="WebIDLParseError",this.bareMessage=t,this.context=n,this.line=r,this.sourceName=s,this.input=o,this.tokens=i}}class _e extends z{static parse(e){const t=e.consumeKind("string");if(t)return new _e({source:e.source,tokens:{value:t}})}get type(){return"enum-value"}get value(){return super.value.slice(1,-1)}write(e){const{parent:t}=this;return e.ts.wrap([e.ts.trivia(this.tokens.value.trivia),e.ts.definition(e.ts.wrap(['"',e.ts.name(this.value,{data:this,parent:t}),'"']),{data:this,parent:t}),e.token(this.tokens.separator)])}}class Se extends D{static parse(e){const t={};if(t.base=e.consume("enum"),!t.base)return;t.name=e.consumeKind("identifier")||e.error("No name for enum");const n=fe(new Se({source:e.source,tokens:t}));return e.current=n.this,t.open=e.consume("{")||e.error("Bodyless enum"),n.values=re(e,{parser:_e.parse,allowDangler:!0,listName:"enumeration"}),e.probeKind("string")&&e.error("No comma between enum values"),t.close=e.consume("}")||e.error("Unexpected value in enum"),n.values.length||e.error("No value in enum"),t.termination=e.consume(";")||e.error("No semicolon after enum"),n.this}get type(){return"enum"}get name(){return ne(this.tokens.name.value)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.name_token(this.tokens.name,{data:this}),e.token(this.tokens.open),e.ts.wrap(this.values.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this})}}class Ce extends D{static parse(e){const t=e.consumeKind("identifier");if(!t)return;const n={target:t};if(n.includes=e.consume("includes"),n.includes)return n.mixin=e.consumeKind("identifier")||e.error("Incomplete includes statement"),n.termination=e.consume(";")||e.error("No terminating ; for includes statement"),new Ce({source:e.source,tokens:n});e.unconsume(t.index)}get type(){return"includes"}get target(){return ne(this.tokens.target.value)}get includes(){return ne(this.tokens.mixin.value)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.reference_token(this.tokens.target,this),e.token(this.tokens.includes),e.reference_token(this.tokens.mixin,this),e.token(this.tokens.termination)]),{data:this})}}class Re extends D{static parse(e){const t={},n=fe(new Re({source:e.source,tokens:t}));if(t.base=e.consume("typedef"),t.base)return n.idlType=ce(e,"typedef-type")||e.error("Typedef lacks a type"),t.name=e.consumeKind("identifier")||e.error("Typedef lacks a name"),e.current=n.this,t.termination=e.consume(";")||e.error("Unterminated typedef, expected `;`"),n.this}get type(){return"typedef"}get name(){return ne(this.tokens.name.value)}*validate(e){yield*this.idlType.validate(e)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this}),e.token(this.tokens.termination)]),{data:this})}}class Ee extends D{static parse(e,t){const n={base:t},r=fe(new Ee({source:e.source,tokens:n}));return n.name=e.consumeKind("identifier")||e.error("Callback lacks a name"),e.current=r.this,n.assign=e.consume("=")||e.error("Callback lacks an assignment"),r.idlType=le(e)||e.error("Callback lacks a return type"),n.open=e.consume("(")||e.error("Callback lacks parentheses for arguments"),r.arguments=ae(e),n.close=e.consume(")")||e.error("Unterminated callback"),n.termination=e.consume(";")||e.error("Unterminated callback, expected `;`"),r.this}get type(){return"callback"}get name(){return ne(this.tokens.name.value)}*validate(e){yield*this.extAttrs.validate(e);for(const t of this.arguments)if(yield*t.validate(e),"async_sequence"===t.idlType.generic){const e="async_sequence types cannot be returned as a callback argument.";yield I(t.tokens.name,t,"async-sequence-idl-to-js",e)}yield*this.idlType.validate(e)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.name_token(this.tokens.name,{data:this}),e.token(this.tokens.assign),e.ts.type(this.idlType.write(e)),e.token(this.tokens.open),...this.arguments.map((t=>t.write(e))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this})}}class Le extends D{static parse(e,t,{inheritable:n,allowedMembers:r}){const{tokens:s,type:o}=t;for(s.name=e.consumeKind("identifier")||e.error(`Missing name in ${o}`),e.current=t,t=fe(t),n&&Object.assign(s,function(e){const t=e.consume(":");return t?{colon:t,inheritance:e.consumeKind("identifier")||e.error("Inheritance lacks a type")}:{}}(e)),s.open=e.consume("{")||e.error(`Bodyless ${o}`),t.members=[];;){if(s.close=e.consume("}"),s.close)return s.termination=e.consume(";")||e.error(`Missing semicolon after ${o}`),t.this;const n=G.parse(e);let i;for(const[t,...n]of r)if(i=fe(t(e,...n)),i)break;i||e.error("Unknown member"),i.extAttrs=n,t.members.push(i.this)}}get partial(){return!!this.tokens.partial}get name(){return ne(this.tokens.name.value)}get inheritance(){return this.tokens.inheritance?ne(this.tokens.inheritance.value):null}*validate(e){for(const t of this.members)t.validate&&(yield*t.validate(e))}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.callback),e.token(this.tokens.partial),e.token(this.tokens.base),e.token(this.tokens.mixin),e.name_token(this.tokens.name,{data:this}),(()=>this.tokens.inheritance?e.ts.wrap([e.token(this.tokens.colon),e.ts.trivia(this.tokens.inheritance.trivia),e.ts.inheritance(e.reference(this.tokens.inheritance.value,{context:this}))]):"")(),e.token(this.tokens.open),e.ts.wrap(this.members.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this})}}class Ae extends D{static parse(e){const t={};if(t.base=e.consume("const"),!t.base)return;let n=ie(e);if(!n){const t=e.consumeKind("identifier")||e.error("Const lacks a type");n=new K({source:e.source,tokens:{base:t}})}e.probe("?")&&e.error("Unexpected nullable constant type"),n.type="const-type",t.name=e.consumeKind("identifier")||e.error("Const lacks a name"),t.assign=e.consume("=")||e.error("Const lacks value assignment"),t.value=se(e)||e.error("Const lacks a value"),t.termination=e.consume(";")||e.error("Unterminated const, expected `;`");const r=new Ae({source:e.source,tokens:t});return fe(r).idlType=n,r}get type(){return"const"}get name(){return ne(this.tokens.name.value)}get value(){return oe(this.tokens.value)}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),e.token(this.tokens.assign),e.token(this.tokens.value),e.token(this.tokens.termination)]),{data:this,parent:t})}}class Te extends D{static parse(e){const t=e.position,n=fe(new Te({source:e.source,tokens:{}})),{tokens:r}=n;if(r.readonly=e.consume("readonly"),r.readonly||(r.async=e.consume("async")),r.base=r.readonly?e.consume("maplike","setlike"):r.async?e.consume("iterable"):e.consume("iterable","async_iterable","maplike","setlike"),!r.base)return void e.unconsume(t);const{type:s}=n,o="maplike"===s,i=o||"iterable"===s||"async_iterable"===s,a="async_iterable"===s||n.async&&"iterable"===s;r.open=e.consume("<")||e.error(`Missing less-than sign \`<\` in ${s} declaration`);const c=ce(e)||e.error(`Missing a type argument in ${s} declaration`);return n.idlType=[c],n.arguments=[],i&&(c.tokens.separator=e.consume(","),c.tokens.separator?n.idlType.push(ce(e)):o&&e.error(`Missing second type argument in ${s} declaration`)),r.close=e.consume(">")||e.error(`Missing greater-than sign \`>\` in ${s} declaration`),e.probe("(")&&(a?(r.argsOpen=e.consume("("),n.arguments.push(...ae(e)),r.argsClose=e.consume(")")||e.error("Unterminated async iterable argument list")):e.error("Arguments are only allowed for `async iterable`")),r.termination=e.consume(";")||e.error(`Missing semicolon after ${s} declaration`),n.this}get type(){return this.tokens.base.value}get readonly(){return!!this.tokens.readonly}get async(){return!!this.tokens.async}*validate(e){if(this.async&&"iterable"===this.type){const e="`async iterable` is now changed to `async_iterable`.";yield I(this.tokens.async,this,"obsolete-async-iterable-syntax",e,{autofix:(t=this,()=>{const e=t.tokens.async;t.tokens.base={...e,type:"async_iterable",value:"async_iterable"},delete t.tokens.async})})}var t;for(const t of this.idlType)yield*t.validate(e);for(const t of this.arguments)yield*t.validate(e)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.readonly),e.token(this.tokens.async),e.token(this.tokens.base,e.ts.generic),e.token(this.tokens.open),e.ts.wrap(this.idlType.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.argsOpen),e.ts.wrap(this.arguments.map((t=>t.write(e)))),e.token(this.tokens.argsClose),e.token(this.tokens.termination)]),{data:this,parent:this.parent})}}class Pe extends D{static parse(e){const t=e.consume("constructor");if(!t)return;const n={base:t};n.open=e.consume("(")||e.error("No argument list in constructor");const r=ae(e);n.close=e.consume(")")||e.error("Unterminated constructor"),n.termination=e.consume(";")||e.error("No semicolon after constructor");const s=new Pe({source:e.source,tokens:n});return fe(s).arguments=r,s}get type(){return"constructor"}*validate(e){for(const t of this.arguments)yield*t.validate(e)}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base,e.ts.nameless,{data:this,parent:t}),e.token(this.tokens.open),e.ts.wrap(this.arguments.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this,parent:t})}}function Ie(e){const t=e.consume("static");if(!t)return;return te.parse(e,{special:t})||ee.parse(e,{special:t})||e.error("No body in static member")}class De extends Le{static parse(e,t,{extMembers:n=[],partial:r=null}={}){const s={partial:r,base:t};return Le.parse(e,new De({source:e.source,tokens:s}),{inheritable:!r,allowedMembers:[...n,[Ae.parse],[Pe.parse],[Ie],[ue],[Te.parse],[te.parse],[ee.parse]]})}get type(){return"interface"}*validate(e){if(yield*this.extAttrs.validate(e),!this.partial&&this.extAttrs.every((e=>"Exposed"!==e.name))){const e="Interfaces must have `[Exposed]` extended attribute. To fix, add, for example, `[Exposed=Window]`. Please also consider carefully if your interface should also be exposed in a Worker scope. Refer to the [WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) for more information.";yield I(this.tokens.name,this,"require-exposed",e,{autofix:pe(this)})}const t=this.extAttrs.filter((e=>"Constructor"===e.name));for(const e of t){const t="Constructors should now be represented as a `constructor()` operation on the interface instead of `[Constructor]` extended attribute. Refer to the [WebIDL spec section on constructor operations](https://heycam.github.io/webidl/#idl-constructors) for more information.";yield I(e.tokens.name,this,"constructor-member",t,{autofix:Ne(this,e)})}if(this.extAttrs.some((e=>"Global"===e.name))){const e=this.extAttrs.filter((e=>"LegacyFactoryFunction"===e.name));for(const t of e){const e="Interfaces marked as `[Global]` cannot have factory functions.";yield I(t.tokens.name,this,"no-constructible-global",e)}const t=this.members.filter((e=>"constructor"===e.type));for(const e of t){const t="Interfaces marked as `[Global]` cannot have constructors.";yield I(e.tokens.base,this,"no-constructible-global",t)}}yield*super.validate(e),this.partial||(yield*function*(e,t){const n=function(e){const t=i(e);return{statics:new Set(t.filter((e=>"static"===e.special)).map((e=>e.name))),nonstatics:new Set(t.filter((e=>"static"!==e.special)).map((e=>e.name)))}}(t),r=e.partials.get(t.name)||[],s=e.mixinMap.get(t.name)||[];for(const e of[...r,...s]){const r=i(e),s=r.filter((e=>"static"===e.special)),a=r.filter((e=>"static"!==e.special));yield*o(s,n.statics,e,t),yield*o(a,n.nonstatics,e,t),s.forEach((e=>n.statics.add(e.name))),a.forEach((e=>n.nonstatics.add(e.name)))}function*o(e,t,n,r){for(const s of e){const{name:e}=s;if(e&&t.has(e)){const t=`The ${"static"===s.special?"static ":""}operation "${e}" has already been defined for the base interface "${r.name}" either in itself or in a mixin`;yield I(s.tokens.name,n,"no-cross-overload",t)}}}function i(e){return e.members.filter((({type:e})=>"operation"===e))}}(e,this))}}function Ne(e,t){return e=fe(e),()=>{const n=de(e.extAttrs.tokens.open.trivia),r=e.members.length?de(he(e.members[0]).trivia):function(e){const t=de(e),n=t.includes("\t")?"\t":" ";return t+n}(n),s=Pe.parse(new $e(`\n${r}constructor();`));s.extAttrs=new G({source:e.source,tokens:{}}),fe(s).arguments=t.arguments;const o=function(e,t){const n=e.slice().reverse().findIndex(t);return-1===n?n:e.length-n-1}(e.members,(e=>"constructor"===e.type));e.members.splice(o+1,0,s);const{close:i}=e.tokens;i.trivia.includes("\n")||(i.trivia+=`\n${n}`);const{extAttrs:a}=e,c=a.indexOf(t),l=a.splice(c,1);a.length?a.length===c?a[c-1].tokens.separator=void 0:a[c].tokens.name.trivia.trim()||(a[c].tokens.name.trivia=l[0].tokens.name.trivia):a.tokens.open=a.tokens.close=void 0}}class je extends Le{static parse(e,t,{extMembers:n=[],partial:r}={}){const s={partial:r,base:t};if(s.mixin=e.consume("mixin"),s.mixin)return Le.parse(e,new je({source:e.source,tokens:s}),{allowedMembers:[...n,[Ae.parse],[ue],[te.parse,{noInherit:!0}],[ee.parse,{regular:!0}]]})}get type(){return"interface mixin"}}class Oe extends D{static parse(e){const t={},n=fe(new Oe({source:e.source,tokens:t}));return n.extAttrs=G.parse(e),t.required=e.consume("required"),n.idlType=ce(e,"dictionary-type")||e.error("Dictionary member lacks a type"),t.name=e.consumeKind("identifier")||e.error("Dictionary member lacks a name"),n.default=J.parse(e),t.required&&n.default&&e.error("Required member must not have a default"),t.termination=e.consume(";")||e.error("Unterminated dictionary member, expected `;`"),n.this}get type(){return"field"}get name(){return ne(this.tokens.name.value)}get required(){return!!this.tokens.required}*validate(e){yield*this.idlType.validate(e)}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.required),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),this.default?this.default.write(e):"",e.token(this.tokens.termination)]),{data:this,parent:t})}}class ze extends Le{static parse(e,{extMembers:t=[],partial:n}={}){const r={partial:n};if(r.base=e.consume("dictionary"),r.base)return Le.parse(e,new ze({source:e.source,tokens:r}),{inheritable:!n,allowedMembers:[...t,[Oe.parse]]})}get type(){return"dictionary"}}class qe extends Le{static parse(e,{extMembers:t=[],partial:n}={}){const r={partial:n};if(r.base=e.consume("namespace"),r.base)return Le.parse(e,new qe({source:e.source,tokens:r}),{allowedMembers:[...t,[te.parse,{noInherit:!0,readonly:!0}],[Ae.parse],[ee.parse,{regular:!0}]]})}get type(){return"namespace"}*validate(e){if(!this.partial&&this.extAttrs.every((e=>"Exposed"!==e.name))){const e="Namespaces must have [Exposed] extended attribute. To fix, add, for example, [Exposed=Window]. Please also consider carefully if your namespace should also be exposed in a Worker scope. Refer to the [WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) for more information.";yield I(this.tokens.name,this,"require-exposed",e,{autofix:pe(this)})}yield*super.validate(e)}}class Me extends Le{static parse(e,t,{extMembers:n=[]}={}){const r={callback:t};if(r.base=e.consume("interface"),r.base)return Le.parse(e,new Me({source:e.source,tokens:r}),{allowedMembers:[...n,[Ae.parse],[ee.parse,{regular:!0}]]})}get type(){return"callback interface"}}function Ue(e,t){const n=e.source;function r(t){e.error(t)}function s(...t){return e.consume(...t)}function o(n){const o=s("interface");if(o)return je.parse(e,o,{...n,...t?.extensions?.mixin})||De.parse(e,o,{...n,...t?.extensions?.interface})||r("Interface has no proper body")}function i(){if(t.productions)for(const n of t.productions){const t=n(e);if(t)return t}return function(){const n=s("callback");if(n)return e.probe("interface")?Me.parse(e,n,{...t?.extensions?.callbackInterface}):Ee.parse(e,n)}()||o()||function(){const n=s("partial");if(n)return ze.parse(e,{partial:n,...t?.extensions?.dictionary})||o({partial:n})||qe.parse(e,{partial:n,...t?.extensions?.namespace})||r("Partial doesn't apply to anything")}()||ze.parse(e,t?.extensions?.dictionary)||Se.parse(e)||Re.parse(e)||Ce.parse(e)||qe.parse(e,t?.extensions?.namespace)}const a=function(){if(!n.length)return[];const s=[];for(;;){const t=G.parse(e),n=i();if(!n){t.length&&r("Stray extended attributes");break}fe(n).extAttrs=t,s.push(n)}const o=q.parse(e);return t.concrete&&s.push(o),s}();return e.position<n.length&&r("Unrecognised tokens"),a}function We(e){return e}const Fe={wrap:e=>e.join(""),trivia:We,name:We,reference:We,type:We,generic:We,nameless:We,inheritance:We,definition:We,extendedAttribute:We,extendedAttributeReference:We};class Be{constructor(e){this.ts=Object.assign({},Fe,e)}reference(e,{unescaped:t,context:n}){return t||(t=e.startsWith("_")?e.slice(1):e),this.ts.reference(e,t,n)}token(e,t=We,...n){if(!e)return"";const r=t(e.value,...n);return this.ts.wrap([this.ts.trivia(e.trivia),r])}reference_token(e,t){return this.token(e,this.reference.bind(this),{context:t})}name_token(e,t){return this.token(e,this.ts.name,t)}identifier(e,t){return this.ts.wrap([this.reference_token(e.tokens.value,t),this.token(e.tokens.separator)])}}function He(e,t){const n=new Map,r=e.filter((e=>"includes"===e.type));for(const e of r){const r=t.get(e.includes);if(!r)continue;const s=n.get(e.target);s?s.push(r):n.set(e.target,[r])}return n}function*Ge(e){const t=function(e){const t=new Map,n=new Set,r=new Map;for(const s of e)if(s.partial){const e=r.get(s.name);e?e.push(s):r.set(s.name,[s])}else s.name&&(t.has(s.name)?n.add(s):t.set(s.name,s));return{all:e,unique:t,partials:r,duplicates:n,mixinMap:He(e,t),cache:{typedefIncludesDictionary:new WeakMap,dictionaryIncludesRequiredField:new WeakMap}}}(e);for(const e of t.all)e.validate&&(yield*e.validate(t));yield*function*({unique:e,duplicates:t}){for(const n of t){const{name:t}=n,r=`The name "${t}" of type "${e.get(t).type}" was already seen`;yield I(n.tokens.name,n,"no-duplicate",r)}}(t)}var Ve=Object.freeze({__proto__:null,WebIDLParseError:xe,parse:function(e,t={}){const n=new $e(e);return void 0!==t.sourceName&&(n.source.name=t.sourceName),Ue(n,t)},validate:function(e){return[...Ge((t=e,t.flat?t.flat():[].concat(...t)))];var t},write:function(e,{templates:t=Fe}={}){t=Object.assign({},Fe,t);const n=new Be(t);return t.wrap(e.map((e=>e.write(n))))}});const Ye=/^[!#$%&'*+-.^`|~\w]+$/,Ke=/[\u000A\u000D\u0009\u0020]/u,Ze=/^[\u0009\u{0020}-\{u0073}\u{0080}-\u{00FF}]+$/u;function Je(e,t,n){(t&&""!==t&&!e.has(t)&&Ze.test(n)||null===n)&&e.set(t.toLowerCase(),n)}function Xe(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Qe={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function et(e){Qe=e}var tt={exec:()=>null};function nt(e,t=""){let n="string"==typeof e?e:e.source,r={replace:(e,t)=>{let s="string"==typeof t?t:t.source;return s=s.replace(st.caret,"$1"),n=n.replace(e,s),r},getRegex:()=>new RegExp(n,t)};return r}var rt=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),st={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},ot=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,it=/(?:[*+-]|\d{1,9}[.)])/,at=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,ct=nt(at).replace(/bull/g,it).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),lt=nt(at).replace(/bull/g,it).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),ut=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,dt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,pt=nt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",dt).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ht=nt(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,it).getRegex(),ft="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",mt=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,gt=nt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",mt).replace("tag",ft).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),bt=nt(ut).replace("hr",ot).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ft).getRegex(),yt={blockquote:nt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",bt).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:pt,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:ot,html:gt,lheading:ct,list:ht,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:bt,table:tt,text:/^[^\n]+/},wt=nt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",ot).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ft).getRegex(),vt={...yt,lheading:lt,table:wt,paragraph:nt(ut).replace("hr",ot).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",wt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ft).getRegex()},kt={...yt,html:nt("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",mt).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:tt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:nt(ut).replace("hr",ot).replace("heading"," *#{1,6} *[^\n]").replace("lheading",ct).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},$t=/^( {2,}|\\)\n(?!\s*$)/,xt=/[\p{P}\p{S}]/u,_t=/[\s\p{P}\p{S}]/u,St=/[^\s\p{P}\p{S}]/u,Ct=nt(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,_t).getRegex(),Rt=/(?!~)[\p{P}\p{S}]/u,Et=nt(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",rt?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Lt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,At=nt(Lt,"u").replace(/punct/g,xt).getRegex(),Tt=nt(Lt,"u").replace(/punct/g,Rt).getRegex(),Pt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",It=nt(Pt,"gu").replace(/notPunctSpace/g,St).replace(/punctSpace/g,_t).replace(/punct/g,xt).getRegex(),Dt=nt(Pt,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,Rt).getRegex(),Nt=nt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,St).replace(/punctSpace/g,_t).replace(/punct/g,xt).getRegex(),jt=nt(/\\(punct)/,"gu").replace(/punct/g,xt).getRegex(),Ot=nt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),zt=nt(mt).replace("(?:--\x3e|$)","--\x3e").getRegex(),qt=nt("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",zt).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Mt=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Ut=nt(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Mt).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Wt=nt(/^!?\[(label)\]\[(ref)\]/).replace("label",Mt).replace("ref",dt).getRegex(),Ft=nt(/^!?\[(ref)\](?:\[\])?/).replace("ref",dt).getRegex(),Bt=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ht={_backpedal:tt,anyPunctuation:jt,autolink:Ot,blockSkip:Et,br:$t,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:tt,emStrongLDelim:At,emStrongRDelimAst:It,emStrongRDelimUnd:Nt,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:Ut,nolink:Ft,punctuation:Ct,reflink:Wt,reflinkSearch:nt("reflink|nolink(?!\\()","g").replace("reflink",Wt).replace("nolink",Ft).getRegex(),tag:qt,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:tt},Gt={...Ht,link:nt(/^!?\[(label)\]\((.*?)\)/).replace("label",Mt).getRegex(),reflink:nt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Mt).getRegex()},Vt={...Ht,emStrongRDelimAst:Dt,emStrongLDelim:Tt,url:nt(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Bt).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:nt(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Bt).getRegex()},Yt={...Vt,br:nt($t).replace("{2,}","*").getRegex(),text:nt(Vt.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Kt={normal:yt,gfm:vt,pedantic:kt},Zt={normal:Ht,gfm:Vt,breaks:Yt,pedantic:Gt},Jt={"&":"&","<":"<",">":">",'"':""","'":"'"},Xt=e=>Jt[e];function Qt(e,t){if(t){if(st.escapeTest.test(e))return e.replace(st.escapeReplace,Xt)}else if(st.escapeTestNoEncode.test(e))return e.replace(st.escapeReplaceNoEncode,Xt);return e}function en(e){try{e=encodeURI(e).replace(st.percentDecode,"%")}catch{return null}return e}function tn(e,t){let n=e.replace(st.findPipe,((e,t,n)=>{let r=!1,s=t;for(;--s>=0&&"\\"===n[s];)r=!r;return r?"|":" |"})).split(st.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(st.slashPipe,"|");return n}function nn(e,t,n){let r=e.length;if(0===r)return"";let s=0;for(;s<r;){if(e.charAt(r-s-1)!==t)break;s++}return e.slice(0,r-s)}function rn(e,t,n,r,s){let o=t.href,i=t.title||null,a=e[1].replace(s.other.outputLinkReplace,"$1");r.state.inLink=!0;let c={type:"!"===e[0].charAt(0)?"image":"link",raw:n,href:o,title:i,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,c}var sn=class{options;rules;lexer;constructor(e){this.options=e||Qe}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:nn(e,"\n")}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(null===r)return t;let s=r[1];return t.split("\n").map((e=>{let t=e.match(n.other.beginningSpace);if(null===t)return e;let[r]=t;return r.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=nn(e,"#");(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:nn(t[0],"\n")}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=nn(t[0],"\n").split("\n"),n="",r="",s=[];for(;e.length>0;){let t,o=!1,i=[];for(t=0;t<e.length;t++)if(this.rules.other.blockquoteStart.test(e[t]))i.push(e[t]),o=!0;else{if(o)break;i.push(e[t])}e=e.slice(t);let a=i.join("\n"),c=a.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}\n${a}`:a,r=r?`${r}\n${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=l,0===e.length)break;let u=s.at(-1);if("code"===u?.type)break;if("blockquote"===u?.type){let t=u,o=t.raw+"\n"+e.join("\n"),i=this.blockquote(o);s[s.length-1]=i,n=n.substring(0,n.length-t.raw.length)+i.raw,r=r.substring(0,r.length-t.text.length)+i.text;break}if("list"!==u?.type);else{let t=u,o=t.raw+"\n"+e.join("\n"),i=this.list(o);s[s.length-1]=i,n=n.substring(0,n.length-u.raw.length)+i.raw,r=r.substring(0,r.length-t.raw.length)+i.raw,e=o.substring(s.at(-1).raw.length).split("\n")}}return{type:"blockquote",raw:n,tokens:s,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,s={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let o=this.rules.other.listItemRegex(n),i=!1;for(;e;){let n=!1,r="",a="";if(!(t=o.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=t[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,(e=>" ".repeat(3*e.length))),l=e.split("\n",1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,a=c.trimStart()):u?d=t[1].length+1:(d=t[2].search(this.rules.other.nonSpaceChar),d=d>4?1:d,a=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+"\n",e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),s=this.rules.other.fencesBeginRegex(d),o=this.rules.other.headingBeginRegex(d),i=this.rules.other.htmlBeginRegex(d);for(;e;){let p,h=e.split("\n",1)[0];if(l=h,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting," "),p=l):p=l.replace(this.rules.other.tabCharGlobal," "),s.test(l)||o.test(l)||i.test(l)||t.test(l)||n.test(l))break;if(p.search(this.rules.other.nonSpaceChar)>=d||!l.trim())a+="\n"+p.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||s.test(c)||o.test(c)||n.test(c))break;a+="\n"+l}!u&&!l.trim()&&(u=!0),r+=h+"\n",e=e.substring(h.length+1),c=p.slice(d)}}s.loose||(i?s.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(i=!0));let p,h=null;this.options.gfm&&(h=this.rules.other.listIsTask.exec(a),h&&(p="[ ] "!==h[0],a=a.replace(this.rules.other.listReplaceTask,""))),s.items.push({type:"list_item",raw:r,task:!!h,checked:p,loose:!1,text:a,tokens:[]}),s.raw+=r}let a=s.items.at(-1);if(!a)return;a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd(),s.raw=s.raw.trimEnd();for(let e=0;e<s.items.length;e++)if(this.lexer.state.top=!1,s.items[e].tokens=this.lexer.blockTokens(s.items[e].text,[]),!s.loose){let t=s.items[e].tokens.filter((e=>"space"===e.type)),n=t.length>0&&t.some((e=>this.rules.other.anyLine.test(e.raw)));s.loose=n}if(s.loose)for(let e=0;e<s.items.length;e++)s.items[e].loose=!0;return s}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:"pre"===t[1]||"script"===t[1]||"style"===t[1],text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=tn(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],o={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?o.align.push("right"):this.rules.other.tableAlignCenter.test(e)?o.align.push("center"):this.rules.other.tableAlignLeft.test(e)?o.align.push("left"):o.align.push(null);for(let e=0;e<n.length;e++)o.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:o.align[e]});for(let e of s)o.rows.push(tn(e,o.header.length).map(((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:o.align[t]}))));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=nn(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let r=0;r<e.length;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}(t[2],"()");if(-2===e)return;if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),rn(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return rn(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!r[1]&&!r[2]||!n||this.rules.inline.punctuation.exec(n))){let n,s,o=[...r[0]].length-1,i=o,a=0,c="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+o);null!=(r=c.exec(t));){if(n=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!n)continue;if(s=[...n].length,r[3]||r[4]){i+=s;continue}if((r[5]||r[6])&&o%3&&!((o+s)%3)){a+=s;continue}if(i-=s,i>0)continue;s=Math.min(s,s+i+a);let t=[...r[0]][0].length,c=e.slice(0,o+r.index+t+s);if(Math.min(o,s)%2){let e=c.slice(1,-1);return{type:"em",raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:"strong",raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=t[1],n="mailto:"+e):(e=t[1],n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=t[0],n="mailto:"+e;else{let r;do{r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(r!==t[0]);e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},on=class e{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Qe,this.options.tokenizer=this.options.tokenizer||new sn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:st,block:Kt.normal,inline:Zt.normal};this.options.pedantic?(t.block=Kt.pedantic,t.inline=Zt.pedantic):this.options.gfm&&(t.block=Kt.gfm,this.options.breaks?t.inline=Zt.breaks:t.inline=Zt.gfm),this.tokenizer.rules=t}static get rules(){return{block:Kt,inline:Zt}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(st.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(st.tabCharGlobal," ").replace(st.spaceLine,""));e;){let r;if(this.options.extensions?.block?.some((n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0))))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);1===r.raw.length&&void 0!==n?n.raw+="\n":t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let s=e;if(this.options.extensions?.startBlock){let t,n=1/0,r=e.slice(1);this.options.extensions.startBlock.forEach((e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))})),n<1/0&&n>=0&&(s=e.substring(0,n+1))}if(this.state.top&&(r=this.tokenizer.paragraph(s))){let o=t.at(-1);n&&"paragraph"===o?.type?(o.raw+=(o.raw.endsWith("\n")?"":"\n")+r.raw,o.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(r),n=s.length!==e.length,e=e.substring(r.raw.length)}else if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r)}else if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,r=e,s=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(s=this.tokenizer.rules.inline.reflinkSearch.exec(r));)e.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(s=this.tokenizer.rules.inline.anyPunctuation.exec(r));)r=r.slice(0,s.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(s=this.tokenizer.rules.inline.blockSkip.exec(r));)n=s[2]?s[2].length:0,r=r.slice(0,s.index+n)+"["+"a".repeat(s[0].length-n-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let o=!1,i="";for(;e;){let n;if(o||(i=""),o=!1,this.options.extensions?.inline?.some((r=>!!(n=r.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0))))continue;if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length);let r=t.at(-1);"text"===n.type&&"text"===r?.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);continue}if(n=this.tokenizer.emStrong(e,r,i)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.del(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),t.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),t.push(n);continue}let s=e;if(this.options.extensions?.startInline){let t,n=1/0,r=e.slice(1);this.options.extensions.startInline.forEach((e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))})),n<1/0&&n>=0&&(s=e.substring(0,n+1))}if(n=this.tokenizer.inlineText(s)){e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(i=n.raw.slice(-1)),o=!0;let r=t.at(-1);"text"===r?.type?(r.raw+=n.raw,r.text+=n.text):t.push(n)}else if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return t}},an=class{options;parser;constructor(e){this.options=e||Qe}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(st.notSpaceStart)?.[0],s=e.replace(st.endingNewline,"")+"\n";return r?'<pre><code class="language-'+Qt(r)+'">'+(n?s:Qt(s,!0))+"</code></pre>\n":"<pre><code>"+(n?s:Qt(s,!0))+"</code></pre>\n"}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return"<hr>\n"}list(e){let t=e.ordered,n=e.start,r="";for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let s=t?"ol":"ul";return"<"+s+(t&&1!==n?' start="'+n+'"':"")+">\n"+r+"</"+s+">\n"}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?"paragraph"===e.tokens[0]?.type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+Qt(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t="",n="";for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r="";for(let t=0;t<e.rows.length;t++){let s=e.rows[t];n="";for(let e=0;e<s.length;e++)n+=this.tablecell(s[e]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),"<table>\n<thead>\n"+t+"</thead>\n"+r+"</table>\n"}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Qt(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),s=en(e);if(null===s)return r;let o='<a href="'+(e=s)+'"';return t&&(o+=' title="'+Qt(t)+'"'),o+=">"+r+"</a>",o}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=en(e);if(null===s)return Qt(n);let o=`<img src="${e=s}" alt="${n}"`;return t&&(o+=` title="${Qt(t)}"`),o+=">",o}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Qt(e.text)}},cn=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},ln=class e{options;renderer;textRenderer;constructor(e){this.options=e||Qe,this.options.renderer=this.options.renderer||new an,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new cn}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e,t=!0){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(this.options.extensions?.renderers?.[s.type]){let e=s,t=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==t||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(e.type)){n+=t||"";continue}}let o=s;switch(o.type){case"space":n+=this.renderer.space(o);continue;case"hr":n+=this.renderer.hr(o);continue;case"heading":n+=this.renderer.heading(o);continue;case"code":n+=this.renderer.code(o);continue;case"table":n+=this.renderer.table(o);continue;case"blockquote":n+=this.renderer.blockquote(o);continue;case"list":n+=this.renderer.list(o);continue;case"html":n+=this.renderer.html(o);continue;case"def":n+=this.renderer.def(o);continue;case"paragraph":n+=this.renderer.paragraph(o);continue;case"text":{let s=o,i=this.renderer.text(s);for(;r+1<e.length&&"text"===e[r+1].type;)s=e[++r],i+="\n"+this.renderer.text(s);n+=t?this.renderer.paragraph({type:"paragraph",raw:i,text:i,tokens:[{type:"text",raw:i,text:i,escaped:!0}]}):i;continue}default:{let e='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}parseInline(e,t=this.renderer){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(this.options.extensions?.renderers?.[s.type]){let e=this.options.extensions.renderers[s.type].call({parser:this},s);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){n+=e||"";continue}}let o=s;switch(o.type){case"escape":case"text":n+=t.text(o);break;case"html":n+=t.html(o);break;case"link":n+=t.link(o);break;case"image":n+=t.image(o);break;case"strong":n+=t.strong(o);break;case"em":n+=t.em(o);break;case"codespan":n+=t.codespan(o);break;case"br":n+=t.br(o);break;case"del":n+=t.del(o);break;default:{let e='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}},un=class{options;block;constructor(e){this.options=e||Qe}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?on.lex:on.lexInline}provideParser(){return this.block?ln.parse:ln.parseInline}},dn=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=ln;Renderer=an;TextRenderer=cn;Lexer=on;Tokenizer=sn;Hooks=un;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case"list":{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach((r=>{let s=e[r].flat(1/0);n=n.concat(this.walkTokens(s,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){let t=this.defaults.renderer||new an(this.defaults);for(let n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=n,s=e.renderer[r],o=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=o.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new sn(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=n,s=e.tokenizer[r],o=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=o.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new un;for(let n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=n,s=e.hooks[r],o=t[r];un.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&un.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await s.call(t,e);return o.call(t,n)})();let r=s.call(t,e);return o.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await s.apply(t,e);return!1===n&&(n=await o.apply(t,e)),n})();let n=s.apply(t,e);return!1===n&&(n=o.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return on.lex(e,t??this.defaults)}parser(e,t){return ln.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},s={...this.defaults,...r},o=this.onError(!!s.silent,!!s.async);if(!0===this.defaults.async&&!1===r.async)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return o(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let n=s.hooks?await s.hooks.preprocess(t):t,r=await(s.hooks?await s.hooks.provideLexer():e?on.lex:on.lexInline)(n,s),o=s.hooks?await s.hooks.processAllTokens(r):r;s.walkTokens&&await Promise.all(this.walkTokens(o,s.walkTokens));let i=await(s.hooks?await s.hooks.provideParser():e?ln.parse:ln.parseInline)(o,s);return s.hooks?await s.hooks.postprocess(i):i})().catch(o);try{s.hooks&&(t=s.hooks.preprocess(t));let n=(s.hooks?s.hooks.provideLexer():e?on.lex:on.lexInline)(t,s);s.hooks&&(n=s.hooks.processAllTokens(n)),s.walkTokens&&this.walkTokens(n,s.walkTokens);let r=(s.hooks?s.hooks.provideParser():e?ln.parse:ln.parseInline)(n,s);return s.hooks&&(r=s.hooks.postprocess(r)),r}catch(e){return o(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="<p>An error occurred:</p><pre>"+Qt(n.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function pn(e,t){return dn.parse(e,t)}function hn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}pn.options=pn.setOptions=function(e){return dn.setOptions(e),pn.defaults=dn.defaults,et(pn.defaults),pn},pn.getDefaults=Xe,pn.defaults=Qe,pn.use=function(...e){return dn.use(...e),pn.defaults=dn.defaults,et(pn.defaults),pn},pn.walkTokens=function(e,t){return dn.walkTokens(e,t)},pn.parseInline=dn.parseInline,pn.Parser=ln,pn.parser=ln.parse,pn.Renderer=an,pn.TextRenderer=cn,pn.Lexer=on,pn.lexer=on.lex,pn.Tokenizer=sn,pn.Hooks=un,pn.parse=pn,pn.options,pn.setOptions,pn.use,pn.walkTokens,pn.parseInline,ln.parse,on.lex;var fn,mn={exports:{}};var gn,bn=(fn||(fn=1,gn=mn,function(e,t){gn.exports=t()}(0,(function(){var e=[],t=[],n={},r={},s={};function o(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function i(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function a(e,t){return e.replace(t[0],(function(n,r){var s,o,a=(s=t[1],o=arguments,s.replace(/\$(\d{1,2})/g,(function(e,t){return o[t]||""})));return i(""===n?e[r-1]:n,a)}))}function c(e,t,r){if(!e.length||n.hasOwnProperty(e))return t;for(var s=r.length;s--;){var o=r[s];if(o[0].test(t))return a(t,o)}return t}function l(e,t,n){return function(r){var s=r.toLowerCase();return t.hasOwnProperty(s)?i(r,s):e.hasOwnProperty(s)?i(r,e[s]):c(s,r,n)}}function u(e,t,n,r){return function(r){var s=r.toLowerCase();return!!t.hasOwnProperty(s)||!e.hasOwnProperty(s)&&c(s,s,n)===s}}function d(e,t,n){return(n?t+" ":"")+(1===t?d.singular(e):d.plural(e))}return d.plural=l(s,r,e),d.isPlural=u(s,r,e),d.singular=l(r,s,t),d.isSingular=u(r,s,t),d.addPluralRule=function(t,n){e.push([o(t),n])},d.addSingularRule=function(e,n){t.push([o(e),n])},d.addUncountableRule=function(e){"string"!=typeof e?(d.addPluralRule(e,"$0"),d.addSingularRule(e,"$0")):n[e.toLowerCase()]=!0},d.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),s[e]=t,r[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return d.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return d.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return d.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(d.addUncountableRule),d}))),mn.exports),yn=hn(bn),wn=function(e){var t={};try{t.WeakMap=WeakMap}catch(u){t.WeakMap=function(e,t){var n=t.defineProperty,r=t.hasOwnProperty,s=o.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return r.call(e,this._)},s.set=function(e,t){return n(e,this._,{configurable:!0,value:t}),this},o;function o(t){n(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(i,this)}function i(e){this.set(e[0],e[1])}}(Math.random(),Object)}var n=t.WeakMap,r={};try{r.WeakSet=WeakSet}catch(u){!function(e,t){var n=s.prototype;function s(){t(this,"_",{value:"_@ungap/weakmap"+e++})}n.add=function(e){return this.has(e)||t(e,this._,{value:!0,configurable:!0}),this},n.has=function(e){return this.hasOwnProperty.call(e,this._)},n.delete=function(e){return this.has(e)&&delete e[this._]},r.WeakSet=s}(Math.random(),Object.defineProperty)}function s(e,t,n,r,s,o){for(var i=("selectedIndex"in t),a=i;r<s;){var c,l=e(n[r],1);t.insertBefore(l,o),i&&a&&l.selected&&(a=!a,c=t.selectedIndex,t.selectedIndex=c<0?r:d.call(t.querySelectorAll("option"),l)),r++}}function o(e,t){return e==t}function i(e){return e}function a(e,t,n,r,s,o,i){var a=o-s;if(a<1)return-1;for(;a<=n-t;){for(var c=t,l=s;c<n&&l<o&&i(e[c],r[l]);)c++,l++;if(l===o)return t;t=c+1}return-1}function c(e,t,n,r,s){return n<r?e(t[n],0):0<n?e(t[n-1],-0).nextSibling:s}function l(e,t,n,r){for(;n<r;)h(e(t[n++],-1))}var u=r.WeakSet,d=[].indexOf,p=function(e,t,n){for(var r=1,s=t;r<s;){var o=(r+s)/2>>>0;n<e[o]?s=o:r=1+o}return r},h=function(e){return(e.remove||function(){var e=this.parentNode;e&&e.removeChild(this)}).call(e)};function f(e,t,n,r){for(var u=(r=r||{}).compare||o,d=r.node||i,h=null==r.before?null:d(r.before,0),f=t.length,m=f,g=0,b=n.length,y=0;g<m&&y<b&&u(t[g],n[y]);)g++,y++;for(;g<m&&y<b&&u(t[m-1],n[b-1]);)m--,b--;var w=g===m,v=y===b;if(w&&v)return n;if(w&&y<b)return s(d,e,n,y,b,c(d,t,g,f,h)),n;if(v&&g<m)return l(d,t,g,m),n;var k=m-g,$=b-y,x=-1;if(k<$){if(-1<(x=a(n,y,b,t,g,m,u)))return s(d,e,n,y,x,d(t[g],0)),s(d,e,n,x+k,b,c(d,t,m,f,h)),n}else if($<k&&-1<(x=a(t,g,m,n,y,b,u)))return l(d,t,g,x),l(d,t,x+$,m),n;return k<2||$<2?(s(d,e,n,y,b,d(t[g],0)),l(d,t,g,m)):k==$&&function(e,t,n,r,s,o){for(;r<s&&o(n[r],e[t-1]);)r++,t--;return 0===t}(n,b,t,g,m,u)?s(d,e,n,y,b,c(d,t,m,f,h)):function(e,t,n,r,o,i,a,c,u,d,h,f,m){!function(e,t,n,r,o,i,a,c,u){for(var d=[],p=e.length,h=a,f=0;f<p;)switch(e[f++]){case 0:o++,h++;break;case 1:d.push(r[o]),s(t,n,r,o++,o,h<c?t(i[h],0):u);break;case-1:h++}for(f=0;f<p;)switch(e[f++]){case 0:a++;break;case-1:-1<d.indexOf(i[a])?a++:l(t,i,a++,a)}}(function(e,t,n,r,s,o,i){var a,c,l,u,d,p,h=n+o,f=[];e:for(b=0;b<=h;b++){if(50<b)return null;for(p=b-1,u=b?f[b-1]:[0,0],d=f[b]=[],a=-b;a<=b;a+=2){for(c=(l=a===-b||a!==b&&u[p+a-1]<u[p+a+1]?u[p+a+1]:u[p+a-1]+1)-a;l<o&&c<n&&i(r[s+l],e[t+c]);)l++,c++;if(l===o&&c===n)break e;d[b+a]=l}}for(var m=Array(b/2+h/2),g=m.length-1,b=f.length-1;0<=b;b--){for(;0<l&&0<c&&i(r[s+l-1],e[t+c-1]);)m[g--]=0,l--,c--;if(!b)break;p=b-1,u=b?f[b-1]:[0,0],(a=l-c)==-b||a!==b&&u[p+a-1]<u[p+a+1]?(c--,m[g--]=1):(l--,m[g--]=-1)}return m}(n,r,i,a,c,d,f)||function(e,t,n,r,s,o,i,a){var c=0,l=r<a?r:a,u=Array(l++),d=Array(l);d[0]=-1;for(var h=1;h<l;h++)d[h]=i;for(var f=s.slice(o,i),m=t;m<n;m++){var g,b=f.indexOf(e[m]);-1<b&&-1<(c=p(d,l,g=b+o))&&(d[c]=g,u[c]={newi:m,oldi:g,prev:u[c-1]})}for(c=--l,--i;d[c]>i;)--c;l=a+r-c;var y=Array(l),w=u[c];for(--n;w;){for(var v=w.newi,k=w.oldi;v<n;)y[--l]=1,--n;for(;k<i;)y[--l]=-1,--i;y[--l]=0,--n,--i,w=w.prev}for(;t<=n;)y[--l]=1,--n;for(;o<=i;)y[--l]=-1,--i;return y}(n,r,o,i,a,c,u,d),e,t,n,r,a,c,h,m)}(d,e,n,y,b,$,t,g,m,k,f,u,h),n}var m={};function g(t,n){n=n||{};var r=e.createEvent("CustomEvent");return r.initCustomEvent(t,!!n.bubbles,!!n.cancelable,n.detail),r}m.CustomEvent="function"==typeof CustomEvent?CustomEvent:(g["prototype"]=new g("").constructor.prototype,g);var b=m.CustomEvent,y={};try{y.Map=Map}catch(u){y.Map=function(){var e=0,t=[],n=[];return{delete:function(s){var o=r(s);return o&&(t.splice(e,1),n.splice(e,1)),o},forEach:function(e,r){t.forEach((function(t,s){e.call(r,n[s],t,this)}),this)},get:function(t){return r(t)?n[e]:void 0},has:r,set:function(s,o){return n[r(s)?e:t.push(s)-1]=o,this}};function r(n){return-1<(e=t.indexOf(n))}}}var w=y.Map;function v(){return this}function k(e,t){var n="_"+e+"$";return{get:function(){return this[n]||$(this,n,t.call(this,e))},set:function(e){$(this,n,e)}}}var $=function(e,t,n){return Object.defineProperty(e,t,{configurable:!0,value:"function"==typeof n?function(){return e._wire$=n.apply(this,arguments)}:n})[t]};Object.defineProperties(v.prototype,{ELEMENT_NODE:{value:1},nodeType:{value:-1}});var x,_,S,C,R,E,L={},A={},T=[],P=A.hasOwnProperty,I=0,D={attributes:L,define:function(e,t){e.indexOf("-")<0?(e in A||(I=T.push(e)),A[e]=t):L[e]=t},invoke:function(e,t){for(var n=0;n<I;n++){var r=T[n];if(P.call(e,r))return A[r](e[r],t)}}},N=Array.isArray||(_=(x={}.toString).call([]),function(e){return x.call(e)===_}),j=(S=e,C="fragment",E="content"in z(R="template")?function(e){var t=z(R);return t.innerHTML=e,t.content}:function(e){var t,n=z(C),r=z(R);return O(n,/^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(e)?(t=RegExp.$1,r.innerHTML="<table>"+e+"</table>",r.querySelectorAll(t)):(r.innerHTML=e,r.childNodes)),n},function(e,t){return("svg"===t?function(e){var t=z(C),n=z("div");return n.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+e+"</svg>",O(t,n.firstChild.childNodes),t}:E)(e)});function O(e,t){for(var n=t.length;n--;)e.appendChild(t[0])}function z(e){return e===C?S.createDocumentFragment():S.createElementNS("http://www.w3.org/1999/xhtml",e)}var q,M,U,W,F,B,H,G,V,Y=(M="appendChild",U="cloneNode",W="createTextNode",B=(F="importNode")in(q=e),(H=q.createDocumentFragment())[M](q[W]("g")),H[M](q[W]("")),(B?q[F](H,!0):H[U](!0)).childNodes.length<2?function e(t,n){for(var r=t[U](),s=t.childNodes||[],o=s.length,i=0;n&&i<o;i++)r[M](e(s[i],n));return r}:B?q[F]:function(e,t){return e[U](!!t)}),K="".trim||function(){return String(this).replace(/^\s+|\s+/g,"")},Z="-"+Math.random().toFixed(6)+"%",J=!1;try{G=e.createElement("template"),V="tabindex","content"in G&&(G.innerHTML="<p "+V+'="'+Z+'"></p>',G.content.childNodes[0].getAttribute(V)==Z)||(Z="_dt: "+Z.slice(1,-1)+";",J=!0)}catch(u){}var X="\x3c!--"+Z+"--\x3e",Q=8,ee=1,te=3,ne=/^(?:style|textarea)$/i,re=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i,se=" \\f\\n\\r\\t",oe="[^"+se+"\\/>\"'=]+",ie="["+se+"]+"+oe,ae="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",ce="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+oe.replace("\\/","")+"))?)",le=new RegExp(ae+ie+ce+"+)(["+se+"]*/?>)","g"),ue=new RegExp(ae+ie+ce+"*)(["+se+"]*/>)","g"),de=new RegExp("("+ie+"\\s*=\\s*)(['\"]?)"+X+"\\2","gi");function pe(e,t,n,r){return"<"+t+n.replace(de,he)+r}function he(e,t,n){return t+(n||'"')+Z+(n||'"')}function fe(e,t,n){return re.test(t)?e:"<"+t+n+"></"+t+">"}var me=J?function(e,t){var n=t.join(" ");return t.slice.call(e,0).sort((function(e,t){return n.indexOf(e.name)<=n.indexOf(t.name)?-1:1}))}:function(e,t){return t.slice.call(e,0)};function ge(t,n,r,s){for(var o=t.childNodes,i=o.length,a=0;a<i;){var c=o[a];switch(c.nodeType){case ee:var l=s.concat(a);!function(t,n,r,s){for(var o,i=t.attributes,a=[],c=[],l=me(i,r),u=l.length,d=0;d<u;){var p=l[d++],h=p.value===Z;if(h||1<(o=p.value.split(X)).length){var f=p.name;if(a.indexOf(f)<0){a.push(f);var m=r.shift().replace(h?/^(?:|[\S\s]*?\s)(\S+?)\s*=\s*('|")?$/:new RegExp("^(?:|[\\S\\s]*?\\s)("+f+")\\s*=\\s*('|\")[\\S\\s]*","i"),"$1"),g=i[m]||i[m.toLowerCase()];if(h)n.push(be(g,s,m,null));else{for(var b=o.length-2;b--;)r.shift();n.push(be(g,s,m,o))}}c.push(p)}}for(var y=((d=0)<(u=c.length)&&J&&!("ownerSVGElement"in t));d<u;){var w=c[d++];y&&(w.value=""),t.removeAttribute(w.name)}var v=t.nodeName;if(/^script$/i.test(v)){var k=e.createElement(v);for(u=i.length,d=0;d<u;)k.setAttributeNode(i[d++].cloneNode(!0));k.textContent=t.textContent,t.parentNode.replaceChild(k,t)}}(c,n,r,l),ge(c,n,r,l);break;case Q:var u=c.textContent;if(u===Z)r.shift(),n.push(ne.test(t.nodeName)?ye(t,s):{type:"any",node:c,path:s.concat(a)});else switch(u.slice(0,2)){case"/*":if("*/"!==u.slice(-2))break;case"👻":t.removeChild(c),a--,i--}break;case te:ne.test(t.nodeName)&&K.call(c.textContent)===X&&(r.shift(),n.push(ye(t,s)))}a++}}function be(e,t,n,r){return{type:"attr",node:e,path:t,name:n,sparse:r}}function ye(e,t){return{type:"text",node:e,path:t}}var we,ve=(we=new n,{get:function(e){return we.get(e)},set:function(e,t){return we.set(e,t),t}});function ke(e,t){var n=(e.convert||function(e){return e.join(X).replace(ue,fe).replace(le,pe)})(t),r=e.transform;r&&(n=r(n));var s=j(n,e.type);xe(s);var o=[];return ge(s,o,t.slice(0),[]),{content:s,updates:function(n){for(var r=[],s=o.length,i=0,a=0;i<s;){var c=o[i++],l=function(e,t){for(var n=t.length,r=0;r<n;)e=e.childNodes[t[r++]];return e}(n,c.path);switch(c.type){case"any":r.push({fn:e.any(l,[]),sparse:!1});break;case"attr":var u=c.sparse,d=e.attribute(l,c.name,c.node);null===u?r.push({fn:d,sparse:!1}):(a+=u.length-2,r.push({fn:d,sparse:!0,values:u}));break;case"text":r.push({fn:e.text(l),sparse:!1}),l.textContent=""}}return s+=a,function(){var e=arguments.length;if(s!==e-1)throw new Error(e-1+" values instead of "+s+"\n"+t.join("${value}"));for(var o=1,i=1;o<e;){var a=r[o-i];if(a.sparse){var c=a.values,l=c[0],u=1,d=c.length;for(i+=d-2;u<d;)l+=arguments[o++]+c[u++];a.fn(l)}else a.fn(arguments[o++])}return n}}}}var $e=[];function xe(e){for(var t=e.childNodes,n=t.length;n--;){var r=t[n];1!==r.nodeType&&0===K.call(r.textContent).length&&e.removeChild(r)}}var _e,Se,Ce=(_e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,Se=/([^A-Z])([A-Z]+)/g,function(e,t){return"ownerSVGElement"in e?function(e,t){var n;return(n=t?t.cloneNode(!0):(e.setAttribute("style","--hyper:style;"),e.getAttributeNode("style"))).value="",e.setAttributeNode(n),Ee(n,!0)}(e,t):Ee(e.style,!1)});function Re(e,t,n){return t+"-"+n.toLowerCase()}function Ee(e,t){var n,r;return function(s){var o,i,a,c;switch(typeof s){case"object":if(s){if("object"===n){if(!t&&r!==s)for(i in r)i in s||(e[i]="")}else t?e.value="":e.cssText="";for(i in o=t?{}:e,s)a="number"!=typeof(c=s[i])||_e.test(i)?c:c+"px",!t&&/^--/.test(i)?o.setProperty(i,a):o[i]=a;n="object",t?e.value=function(e){var t,n=[];for(t in e)n.push(t.replace(Se,Re),":",e[t],";");return n.join("")}(r=o):r=s;break}default:r!=s&&(n="string",r=s,t?e.value=s||"":e.cssText=s||"")}}}var Le,Ae,Te=(Le=[].slice,(Ae=Pe.prototype).ELEMENT_NODE=1,Ae.nodeType=111,Ae.remove=function(e){var t,n=this.childNodes,r=this.firstChild,s=this.lastChild;return this._=null,e&&2===n.length?s.parentNode.removeChild(s):((t=this.ownerDocument.createRange()).setStartBefore(e?n[1]:r),t.setEndAfter(s),t.deleteContents()),r},Ae.valueOf=function(e){var t=this._,n=null==t;if(n&&(t=this._=this.ownerDocument.createDocumentFragment()),n||e)for(var r=this.childNodes,s=0,o=r.length;s<o;s++)t.appendChild(r[s]);return t},Pe);function Pe(e){var t=this.childNodes=Le.call(e,0);this.firstChild=t[0],this.lastChild=t[t.length-1],this.ownerDocument=t[0].ownerDocument,this._=null}function Ie(e){return{html:e}}function De(e,t){switch(e.nodeType){case Be:return 1/t<0?t?e.remove(!0):e.lastChild:t?e.valueOf(!0):e.firstChild;case Fe:return De(e.render(),t);default:return e}}function Ne(e,t){t(e.placeholder),"text"in e?Promise.resolve(e.text).then(String).then(t):"any"in e?Promise.resolve(e.any).then(t):"html"in e?Promise.resolve(e.html).then(Ie).then(t):Promise.resolve(D.invoke(e,t)).then(t)}function je(e){return null!=e&&"then"in e}var Oe,ze,qe,Me,Ue,We="ownerSVGElement",Fe=v.prototype.nodeType,Be=Te.prototype.nodeType,He=(ze=(Oe={Event:b,WeakSet:u}).Event,qe=Oe.WeakSet,Me=!0,Ue=null,function(e){return Me&&(Me=!Me,Ue=new qe,function(e){var t=new qe,n=new qe;try{new MutationObserver(i).observe(e,{subtree:!0,childList:!0})}catch(t){var r=0,s=[],o=function(e){s.push(e),clearTimeout(r),r=setTimeout((function(){i(s.splice(r=0,s.length))}),0)};e.addEventListener("DOMNodeRemoved",(function(e){o({addedNodes:[],removedNodes:[e.target]})}),!0),e.addEventListener("DOMNodeInserted",(function(e){o({addedNodes:[e.target],removedNodes:[]})}),!0)}function i(e){for(var r,s=e.length,o=0;o<s;o++)a((r=e[o]).removedNodes,"disconnected",n,t),a(r.addedNodes,"connected",t,n)}function a(e,t,n,r){for(var s,o=new ze(t),i=e.length,a=0;a<i;1===(s=e[a++]).nodeType&&function e(t,n,r,s,o){Ue.has(t)&&!s.has(t)&&(o.delete(t),s.add(t),t.dispatchEvent(n));for(var i=t.children||[],a=i.length,c=0;c<a;e(i[c++],n,r,s,o));}(s,o,t,n,r));}}(e.ownerDocument)),Ue.add(e),e}),Ge=/^(?:form|list)$/i,Ve=[].slice;function Ye(t){return this.type=t,function(t){var n=$e,r=xe;return function(s){var o,i,a;return n!==s&&(o=t,i=n=s,a=ve.get(i)||ve.set(i,ke(o,i)),r=a.updates(Y.call(e,a.content,!0))),r.apply(null,arguments)}}(this)}var Ke=!(Ye.prototype={attribute:function(e,t,n){var r,s=We in e;if("style"===t)return Ce(e,n,s);if("."===t.slice(0,1))return l=e,u=t.slice(1),s?function(e){try{l[u]=e}catch(t){l.setAttribute(u,e)}}:function(e){l[u]=e};if("?"===t.slice(0,1))return i=e,a=t.slice(1),function(e){c!==!!e&&((c=!!e)?i.setAttribute(a,""):i.removeAttribute(a))};if(/^on/.test(t)){var o=t.slice(2);return"connected"===o||"disconnected"===o?He(e):t.toLowerCase()in e&&(o=o.toLowerCase()),function(t){r!==t&&(r&&e.removeEventListener(o,r,!1),(r=t)&&e.addEventListener(o,t,!1))}}if("data"===t||!s&&t in e&&!Ge.test(t))return function(n){r!==n&&(r=n,e[t]!==n&&null==n?(e[t]="",e.removeAttribute(t)):e[t]=n)};if(t in D.attributes)return function(n){var s=D.attributes[t](e,n);r!==s&&(null==(r=s)?e.removeAttribute(t):e.setAttribute(t,s))};var i,a,c,l,u,d=!1,p=n.cloneNode(!0);return function(t){r!==t&&(r=t,p.value!==t&&(null==t?(d&&(d=!1,e.removeAttributeNode(p)),p.value=t):(p.value=t,d||(d=!0,e.setAttributeNode(p)))))}},any:function(e,t){var n,r={node:De,before:e},s=We in e?"svg":"html",o=!1;return function i(a){switch(typeof a){case"string":case"number":case"boolean":o?n!==a&&(n=a,t[0].textContent=a):(o=!0,n=a,t=f(e.parentNode,t,[(c=a,e.ownerDocument.createTextNode(c))],r));break;case"function":i(a(e));break;case"object":case"undefined":if(null==a){o=!1,t=f(e.parentNode,t,[],r);break}default:if(o=!1,N(n=a))if(0===a.length)t.length&&(t=f(e.parentNode,t,[],r));else switch(typeof a[0]){case"string":case"number":case"boolean":i({html:a});break;case"object":if(N(a[0])&&(a=a.concat.apply([],a)),je(a[0])){Promise.all(a).then(i);break}default:t=f(e.parentNode,t,a,r)}else"ELEMENT_NODE"in a?t=f(e.parentNode,t,11===a.nodeType?Ve.call(a.childNodes):[a],r):je(a)?a.then(i):"placeholder"in a?Ne(a,i):"text"in a?i(String(a.text)):"any"in a?i(a.any):"html"in a?t=f(e.parentNode,t,Ve.call(j([].concat(a.html).join(""),s).childNodes),r):i("length"in a?Ve.call(a):D.invoke(a,i))}var c}},text:function(e){var t;return function n(r){var s;t!==r&&("object"==(s=typeof(t=r))&&r?je(r)?r.then(n):"placeholder"in r?Ne(r,n):n("text"in r?String(r.text):"any"in r?r.any:"html"in r?[].concat(r.html).join(""):"length"in r?Ve.call(r).join(""):D.invoke(r,n)):"function"==s?n(r(e)):e.textContent=null==r?"":r)}}}),Ze=function(t){var r,s,o,i,a=(r=(e.defaultView.navigator||{}).userAgent,/(Firefox|Safari)\/(\d+)/.test(r)&&!/(Chrom[eium]+|Android)\/(\d+)/.test(r)),c=!("raw"in t)||t.propertyIsEnumerable("raw")||!Object.isFrozen(t.raw);return a||c?(s={},o=function(e){for(var t=".",n=0;n<e.length;n++)t+=e[n].length+"."+e[n];return s[t]||(s[t]=e)},Ze=c?o:(i=new n,function(e){return i.get(e)||(n=o(t=e),i.set(t,n),n);var t,n})):Ke=!0,Je(t)};function Je(e){return Ke?e:Ze(e)}function Xe(e){for(var t=arguments.length,n=[Je(e)],r=1;r<t;)n.push(arguments[r++]);return n}var Qe=new n,et=function(e){var t,n,r;return function(){var s=Xe.apply(null,arguments);return r!==s[0]?(r=s[0],n=new Ye(e),t=nt(n.apply(n,s))):n.apply(n,s),t}},tt=function(e,t){var n=t.indexOf(":"),r=Qe.get(e),s=t;return-1<n&&(s=t.slice(n+1),t=t.slice(0,n)||"html"),r||Qe.set(e,r={}),r[s]||(r[s]=et(t))},nt=function(e){var t=e.childNodes,n=t.length;return 1===n?t[0]:n?new Te(t):e},rt=new n;function st(){var e=rt.get(this),t=Xe.apply(null,arguments);return e&&e.template===t[0]?e.tagger.apply(null,t):function(e){var t=new Ye(We in this?"svg":"html");rt.set(this,{tagger:t,template:e}),this.textContent="",this.appendChild(t.apply(null,arguments))}.apply(this,t),this}var ot,it,at,ct,lt=D.define,ut=Ye.prototype;function dt(e){return arguments.length<2?null==e?et("html"):"string"==typeof e?dt.wire(null,e):"raw"in e?et("html")(e):"nodeType"in e?dt.bind(e):tt(e,"html"):("raw"in e?et("html"):dt.wire).apply(null,arguments)}return dt.Component=v,dt.bind=function(e){return st.bind(e)},dt.define=lt,dt.diff=f,(dt.hyper=dt).observe=He,dt.tagger=ut,dt.wire=function(e,t){return null==e?et(t||"html"):tt(e,t||"html")},dt._={WeakMap:n,WeakSet:u},ot=et,it=new n,at=Object.create,ct=function(e,t){var n={w:null,p:null};return t.set(e,n),n},Object.defineProperties(v,{for:{configurable:!0,value:function(e,t){return function(e,t,r,s){var o,i,a,c=t.get(e)||ct(e,t);switch(typeof s){case"object":case"function":var l=c.w||(c.w=new n);return l.get(s)||(o=l,i=s,a=new e(r),o.set(i,a),a);default:var u=c.p||(c.p=at(null));return u[s]||(u[s]=new e(r))}}(this,it.get(e)||(r=e,s=new w,it.set(r,s),s),e,null==t?"default":t);var r,s}}}),Object.defineProperties(v.prototype,{handleEvent:{value:function(e){var t=e.currentTarget;this["getAttribute"in t&&t.getAttribute("data-call")||"on"+e.type](e)}},html:k("html",ot),svg:k("svg",ot),state:k("state",(function(){return this.defaultState})),defaultState:{get:function(){return{}}},dispatch:{value:function(e,t){var n=this._wire$;if(n){var r=new b(e,{bubbles:!0,cancelable:!0,detail:t});return r.component=this,(n.dispatchEvent?n:n.firstChild).dispatchEvent(r)}return!1}},setState:{value:function(e,t){var n=this.state,r="function"==typeof e?e.call(this,n):e;for(var s in r)n[s]=r[s];return!1!==t&&this.render(),this}}}),dt}(document);const{Component:vn,bind:kn,define:$n,diff:xn,hyper:_n,wire:Sn}=wn,Cn=wn,Rn=A,En=pn,Ln=class{constructor(e){const{type:t,subtype:n,params:r}=function(e){if(e=e.trim(),!e)throw new TypeError("Invalid input.");let t="",n="",r="",s=null,o=new Map,i="type",a=Array.from(e);for(let e=0;e<a.length;e++){const c=a[e];switch(i){case"type":if("/"===c){i="subtype";continue}t+=c;break;case"subtype":if(";"===c){i="param-start";continue}n+=c;break;case"param-start":if(Ke.test(c)||";"===c)continue;r+=c,i="param-name";break;case"param-name":if("="===c||";"===c){if("="===c){i="param-value",s=null;continue}o.set(r.toLowerCase(),null),r="";continue}r+=c;break;case"param-value":if('"'==c){i="collect-quoted-string";continue}if(";"===c){s=s.trimEnd(),i="param-start",Je(o,r,s),r="";continue}s="string"==typeof s?s+c:c;break;case"collect-quoted-string":if('"'===c){Je(o,r,s),i="ignore-input-until-next-param",r="",s=null;continue}if("\\"===c)continue;s="string"==typeof s?s+c:c;break;case"ignore-input-until-next-param":if(";"!==c)continue;i="param-start";break;default:throw new Error(`State machine error - unknown parser mode: ${i} `)}}r&&Je(o,r,s);if(""===t.trim()||!Ye.test(t))throw new TypeError("Invalid type");if(""===n.trim()||!Ye.test(n))throw new TypeError("Invalid subtype");return{type:t,subtype:n,params:Object.fromEntries(o.entries())}}(e);this.type=t.trim().toLowerCase(),this.subtype=n.trimEnd().toLowerCase(),this.parameters=new Map(Object.entries(r))}get essence(){return`${this.type}/${this.subtype}`}toString(){return function(e){const{parameters:t,essence:n}=e;if(!t.size)return n;let r=";";for(const[e,n]of t.entries())r+=e,null!==n?Ye.test(n)?r+=`=${n}`:r+=`="${n}"`:r+='=""',r+=";";return e.essence+r.slice(0,-1)}(this)}},An=yn,Tn=Ve,Pn=/-/g;const In=new Intl.DateTimeFormat(["sv-SE"],{timeZone:"UTC",year:"numeric",month:"2-digit",day:"2-digit"}),Dn="en"===o||o.startsWith("en-")?"en-AU":o,Nn=new Intl.DateTimeFormat(Dn,{timeZone:"UTC",year:"numeric",month:"long",day:"en-AU"===Dn?"2-digit":"numeric"}),jn=".informative, .note, .issue, .example, .ednote, .practice, .introductory";function On(e){const t=new URL(e.href,document.baseURI),n=document.createElement("link");let{href:r}=t;switch(n.rel=e.hint,n.rel){case"dns-prefetch":case"preconnect":r=t.origin,(e.corsMode||t.origin!==document.location.origin)&&(n.crossOrigin=e.corsMode||"anonymous");break;case"preload":"as"in e&&n.setAttribute("as",e.as),e.corsMode&&(n.crossOrigin=e.corsMode)}return n.href=r,e.dontRemove||n.classList.add("removeOnSave"),n}function zn(e){e.querySelectorAll(".remove, script[data-requiremodule]").forEach((e=>{e.remove()}))}function qn(e,t="long"){const n=new Intl.ListFormat(o,{style:t,type:e});return(e,t)=>{let r=0;return n.formatToParts(e).map((({type:n,value:s})=>"element"===n&&t?t(s,r++,e):s))}}const Mn=qn("conjunction"),Un=qn("disjunction");function Wn(e,t){return Mn(e,t).join("")}function Fn(e,t){return Un(e,t).join("")}function Bn(e){return e.replace(/&/g,"&").replace(/>/g,">").replace(/"/g,""").replace(/</g,"<")}function Hn(e){return e.trim().replace(/\s+/g," ")}function Gn(e,t=o){return t=t.toLowerCase(),new Proxy(e,{get(e,n){const r=Vn(e,n,t)||e.en[n];if(!r)throw new Error(`No l10n data for key: "${n}"`);return r}})}function Vn(e,t,n=o){return n=n.toLowerCase(),e[n]?.[t]||e[n.match(/^(\w{2,3})-.+$/)?.[1]]?.[t]}function Yn(e,t=""){return In.format(e).replace(Pn,t)}function Kn(e,t,...n){const r=[this,e,...n];if(t){const n=t.split(/\s+/);for(const t of n){const n=window[t];if(n)try{e=n.apply(this,r)}catch(e){mr(`call to \`${t}()\` failed with: ${e}.`,"utils/runTransforms",{hint:"See developer console for stack trace.",cause:e})}}}return e}async function Zn(e,t=864e5){const n=new Request(e),r=new URL(n.url);let s,o;if("caches"in window)try{if(s=await caches.open(r.origin),o=await s.match(n),o&&new Date(o.headers.get("Expires"))>new Date)return o}catch(e){console.error("Failed to use Cache API.",e)}const i=await fetch(n);if(!i.ok&&o)return console.warn(`Returning a stale cached response for ${r}`),o;if(s&&i.ok){const e=i.clone(),r=new Headers(i.headers),o=new Date(Date.now()+t);r.set("Expires",o.toISOString());const a=new Response(await e.blob(),{headers:r});await s.put(n,a).catch(console.error)}return i}function Jn(e,t=(e=>e)){const n=e.map(t),r=n.slice(0,-1).map((e=>Cn`${e}, `));return Cn`${r}${n[n.length-1]}`}function Xn(e,t){return[].concat(Mn(e,t)).map((e=>"string"==typeof e?Cn`${e}`:e))}function Qn(e,t=""){const n=function(e){let t=0;for(const n of e)t=Math.imul(31,t)+n.charCodeAt(0)|0;return String(t)}(Hn(e.textContent));return er(e,t,n)}function er(e,t="",n="",r=!1){if(e.id)return e.id;n||(n=(e.title?e.title:e.textContent).trim());let s=r?n:n.toLowerCase();if(s=s.trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\W+/gim,"-").replace(/^-+/,"").replace(/-+$/,""),s?!/\.$/.test(s)&&/^[a-z]/i.test(t||s)||(s=`x${s}`):s="generatedID",t&&(s=`${t}-${s}`),e.ownerDocument.getElementById(s)){let t=0,n=`${s}-${t}`;for(;e.ownerDocument.getElementById(n);)t+=1,n=`${s}-${t}`;s=n}return e.id=s,s}function tr(e){const t=new Set,n="ltNodefault"in e.dataset?"":Hn(e.textContent),r=e.children[0];if(e.dataset.lt?e.dataset.lt.split("|").map((e=>Hn(e))).forEach((e=>t.add(e))):1===e.childNodes.length&&1===e.getElementsByTagName("abbr").length&&r.title?t.add(r.title):'""'===e.textContent&&t.add("the-empty-string"),t.add(n),t.delete(""),e.dataset.localLt){e.dataset.localLt.split("|").forEach((e=>t.add(Hn(e))))}return[...t]}function nr(e,t,n={copyAttributes:!0}){if(e.localName===t)return e;const r=e.ownerDocument.createElement(t);if(n.copyAttributes)for(const{name:t,value:n}of e.attributes)r.setAttribute(t,n);return r.append(...e.childNodes),e.replaceWith(r),r}function rr(e,t){const n=t.closest(jn);let r=!1;if(n&&(r=!t.closest(".normative")||!n.querySelector(".normative")),e.startsWith("!")){if(r)return{type:"informative",illegal:!0};r=!1}else e.startsWith("?")&&(r=!0);return{type:r?"informative":"normative",illegal:!1}}function sr(e,t){return t.append(...e.childNodes),e.appendChild(t),e}function or(e){const t=[];for(const n of function*(e){let t=e;for(;t.previousElementSibling;)t=t.previousElementSibling,yield t}(e))"section"===n.localName&&t.push(n);return t}function ir(e,t){const n=[];let r=e.parentElement;for(;r;){const e=r.closest(t);if(!e)break;n.push(e),r=e.parentElement}return n}function ar(e){const{previousSibling:t}=e;if(!t||t.nodeType!==Node.TEXT_NODE)return"";const n=t.textContent.lastIndexOf("\n");if(-1===n)return"";const r=t.textContent.slice(n+1);return/\S/.test(r)?"":r}class cr extends Set{constructor(e=[]){super();for(const t of e)this.add(t)}add(e){return this.has(e)||this.getCanonicalKey(e)?this:super.add(e)}has(e){return super.has(e)||[...this.keys()].some((t=>t.toLowerCase()===e.toLowerCase()))}delete(e){return super.has(e)?super.delete(e):super.delete(this.getCanonicalKey(e))}getCanonicalKey(e){return super.has(e)?e:[...this.keys()].find((t=>t.toLowerCase()===e.toLowerCase()))}}function lr(e){const t=e.cloneNode(!0);return t.querySelectorAll("[id]").forEach((e=>e.removeAttribute("id"))),t.querySelectorAll("dfn").forEach((e=>{nr(e,"span",{copyAttributes:!1})})),t.hasAttribute("id")&&t.removeAttribute("id"),ur(t),t}function ur(e){const t=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT);for(const e of[...dr(t)])e.remove()}function*dr(e){for(;e.nextNode();)yield e.currentNode}class pr extends Map{constructor(e=[]){return super(),e.forEach((([e,t])=>{this.set(e,t)})),this}set(e,t){return super.set(e.toLowerCase(),t),this}get(e){return super.get(e.toLowerCase())}has(e){return super.has(e.toLowerCase())}delete(e){return super.delete(e.toLowerCase())}}class hr extends Error{constructor(e,t,n){super(e,{...n.cause&&{cause:n.cause}});const r=n.isWarning?"ReSpecWarning":"ReSpecError";Object.assign(this,{message:e,plugin:t,name:r,...n}),n.elements&&n.elements.forEach((t=>function(e,t,n){e.classList.add("respec-offending-element"),e.hasAttribute("title")||e.setAttribute("title",n||t),e.id||er(e,"respec-offender")}(t,e,n.title)))}toJSON(){const{message:e,name:t,stack:n}=this,{plugin:r,hint:s,elements:o,title:i,details:a}=this;return{message:e,name:t,plugin:r,hint:s,elements:o,title:i,details:a,stack:n,...this.cause instanceof Error&&{cause:{name:this.cause.name,message:this.cause.message,stack:this.cause.stack}}}}}function fr(e,t,n={}){const r={...n,isWarning:!1};_r("error",new hr(e,t,r))}function mr(e,t,n={}){const r={...n,isWarning:!0};_r("warn",new hr(e,t,r))}function gr(e){return{showError:(t,n)=>fr(t,e,n),showWarning:(t,n)=>mr(t,e,n)}}function br(e){return e?`\`${e}\``:""}function yr(e,{quotes:t}={quotes:!1}){return Fn(e,t?e=>br(vr(e)):br)}function wr(e,{quotes:t}={quotes:!1}){return Wn(e,t?e=>br(vr(e)):br)}function vr(e){return String(e)?`"${e}"`:""}function kr(e,...t){return $r(e.map(((e,n)=>{const r=t[n];if(!r)return e;if(!r.startsWith("[")&&!r.endsWith("]"))return e+r;const[s,o]=r.slice(1,-1).split("|");if(o){return`${e}[${s}](${new URL(o,"https://respec.org/docs/")})`}return`${e}[\`${s}\`](https://respec.org/docs/#${s})`})).join(""))}function $r(e){if(!e)return e;const t=e.trimEnd().split("\n");for(;t.length&&!t[0].trim();)t.shift();const n=t.filter((e=>e.trim())).map((e=>e.search(/[^\s]/))),r=Math.min(...n);return t.map((e=>e.slice(r))).join("\n")}const xr=new EventTarget;function _r(e,t){if(xr.dispatchEvent(new CustomEvent(e,{detail:t})),window.parent===window.self)return;const n=String(JSON.stringify(t?.stack||t));window.parent.postMessage({topic:e,args:n},window.parent.location.origin)}function Sr(e,t,n={once:!1}){xr.addEventListener(e,(async n=>{try{await t(n.detail)}catch(t){fr(`Error in handler for topic "${e}": ${t.message}`,`sub:${e}`,{cause:t})}}),n)}n("core/pubsubhub",{sub:Sr});const Cr=["githubToken","githubUser"];const Rr=new Map([["text/html","html"],["application/xml","xml"]]);function Er(e,t=document){const n=Rr.get(e);if(!n){const t=[...Rr.values()].join(", ");throw new TypeError(`Invalid format: ${e}. Expected one of: ${t}.`)}const r=Lr(n,t);return`data:${e};charset=utf-8,${encodeURIComponent(r)}`}function Lr(e,t){const n=t.cloneNode(!0);!function(e){const{head:t,body:n,documentElement:r}=e;ur(e),e.querySelectorAll(".removeOnSave, #toc-nav").forEach((e=>e.remove())),n.classList.remove("toc-sidebar"),zn(r);const s=e.createDocumentFragment(),o=e.querySelector("meta[name='viewport']");o&&t.firstChild!==o&&s.appendChild(o);let i=e.querySelector("meta[charset], meta[content*='charset=']");i||(i=Cn`<meta charset="utf-8" />`);s.appendChild(i);const a=`ReSpec ${window.respecVersion||"Developer Channel"}`,c=Cn`
|
|
1
|
+
window.respecVersion="37.0.0",function(){"use strict";var e="undefined"!=typeof document?document.currentScript:null;const t=document.documentElement;t?.hasAttribute("lang")||(t.lang="en",t.hasAttribute("dir")||(t.dir="ltr"));const n={},r=t?.lang??"en";var s=Object.freeze({__proto__:null,l10n:n,lang:r,name:"core/l10n",run:function(e){e.l10n=n[r]||n.en}});const i=(e,t)=>t.some((t=>e instanceof t));let o,a;const c=new WeakMap,l=new WeakMap,u=new WeakMap;let d={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return c.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return m(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function p(e){d=e(d)}function h(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(g(this),t),m(this.request)}:function(...t){return m(e.apply(g(this),t))}}function f(e){return"function"==typeof e?h(e):(e instanceof IDBTransaction&&function(e){if(c.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",s),e.removeEventListener("error",i),e.removeEventListener("abort",i)},s=()=>{t(),r()},i=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",s),e.addEventListener("error",i),e.addEventListener("abort",i)}));c.set(e,t)}(e),i(e,o||(o=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,d):e)}function m(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",s),e.removeEventListener("error",i)},s=()=>{t(m(e.result)),r()},i=()=>{n(e.error),r()};e.addEventListener("success",s),e.addEventListener("error",i)}));return u.set(t,e),t}(e);if(l.has(e))return l.get(e);const t=f(e);return t!==e&&(l.set(e,t),u.set(t,e)),t}const g=e=>u.get(e);const b=["get","getKey","getAll","getAllKeys","count"],y=["put","add","delete","clear"],w=new Map;function v(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(w.get(t))return w.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,s=y.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!s&&!b.includes(n))return;const i=async function(e,...t){const i=this.transaction(e,s?"readwrite":"readonly");let o=i.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),s&&i.done]))[0]};return w.set(t,i),i}p((e=>({...e,get:(t,n,r)=>v(t,n)||e.get(t,n,r),has:(t,n)=>!!v(t,n)||e.has(t,n)})));const k=["continue","continuePrimaryKey","advance"],$={},x=new WeakMap,C=new WeakMap,S={get(e,t){if(!k.includes(t))return e[t];let n=$[t];return n||(n=$[t]=function(...e){x.set(this,C.get(this)[t](...e))}),n}};async function*_(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const n=new Proxy(t,S);for(C.set(n,t),u.set(n,g(t));t;)yield n,t=await(x.get(n)||t.continue()),x.delete(n)}function T(e,t){return t===Symbol.asyncIterator&&i(e,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===t&&i(e,[IDBIndex,IDBObjectStore])}p((e=>({...e,get:(t,n,r)=>T(t,n)?_:e.get(t,n,r),has:(t,n)=>T(t,n)||e.has(t,n)})));var R=Object.freeze({__proto__:null,deleteDB:function(e,{blocked:t}={}){const n=indexedDB.deleteDatabase(e);return t&&n.addEventListener("blocked",(e=>t(e.oldVersion,e))),m(n).then((()=>{}))},openDB:function(e,t,{blocked:n,upgrade:r,blocking:s,terminated:i}={}){const o=indexedDB.open(e,t),a=m(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(m(o.result),e.oldVersion,e.newVersion,m(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{i&&e.addEventListener("close",(()=>i())),s&&e.addEventListener("versionchange",(e=>s(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a},unwrap:g,wrap:m});function E(e,t,n,r,s,{level:i="error",autofix:o,ruleName:a}={}){function c(n){return n>0?e.slice(t,t+n):e.slice(Math.max(t+n,0),t)}function l(n,{precedes:r}={}){const s=n.map((e=>e.trivia+e.value)).join(""),i=e[t];return"eof"===i.type?s:r?s+i.trivia:s.slice(i.trivia.length)}const u="eof"!==e[t].type?e[t].line:e.length>1?e[t-1].line:1,d=function(e){const t=e.split("\n");return t[t.length-1]}(l(c(-5),{precedes:!0})),p=c(5),h=l(p),f=d+h.split("\n")[0]+"\n"+(" ".repeat(d.length)+"^"),m="Syntax"===s?"since":"inside",g=`${s} error at line ${u}${e.name?` in ${e.name}`:""}${n&&n.name?`, ${m} \`${n.partial?"partial ":""}${function(e){const t=[e];for(;e&&e.parent;){const{parent:n}=e;t.unshift(n),e=n}return t.map((e=>function(e,t){let n=e;return t&&(n+=` ${t}`),n}(e.type,e.name))).join(" -> ")}(n)}\``:""}:\n${f}`;return{message:`${g} ${r}`,bareMessage:r,context:g,line:u,sourceName:e.name,level:i,ruleName:a,autofix:o,input:h,tokens:p}}function L(e,t,n,r){return E(e,t,n,r,"Syntax")}function A(e,t,n,r,s={}){return s.ruleName=n,E(t.source,e.index,t,r,"Validation",s)}class P{constructor({source:e,tokens:t}){Object.defineProperties(this,{source:{value:e},tokens:{value:t,writable:!0},parent:{value:null,writable:!0},this:{value:this}})}toJSON(){const e={type:void 0,name:void 0,inheritance:void 0};let t=this;for(;t!==Object.prototype;){const n=Object.getOwnPropertyDescriptors(t);for(const[t,r]of Object.entries(n))(r.enumerable||r.get)&&(e[t]=this[t]);t=Object.getPrototypeOf(t)}return e}}function N(e,t,{useNullableInner:n}={}){if(!e.union){const r=t.unique.get(e.idlType);if(!r)return;if("typedef"===r.type){const{typedefIncludesDictionary:n}=t.cache;if(n.has(r))return n.get(r);t.cache.typedefIncludesDictionary.set(r,void 0);const s=N(r.idlType,t);if(t.cache.typedefIncludesDictionary.set(r,s),s)return{reference:e,dictionary:s.dictionary}}if("dictionary"===r.type&&(n||!e.nullable))return{reference:e,dictionary:r}}for(const n of e.subtype){const e=N(n,t);if(e)return n.union?e:{reference:n,dictionary:e.dictionary}}}function I(e,t){if(t.cache.dictionaryIncludesRequiredField.has(e))return t.cache.dictionaryIncludesRequiredField.get(e);t.cache.dictionaryIncludesRequiredField.set(e,void 0);let n=e.members.some((e=>e.required));if(!n&&e.inheritance){const r=t.unique.get(e.inheritance);r?I(r,t)&&(n=!0):n=!0}return t.cache.dictionaryIncludesRequiredField.set(e,n),n}class D extends Array{constructor({source:e,tokens:t}){super(),Object.defineProperties(this,{source:{value:e},tokens:{value:t},parent:{value:null,writable:!0}})}}class O extends P{static parser(e,t){return()=>{const n=e.consumeKind(t);if(n)return new O({source:e.source,tokens:{value:n}})}}get value(){return ee(this.tokens.value.value)}write(e){return e.ts.wrap([e.token(this.tokens.value),e.token(this.tokens.separator)])}}class j extends O{static parse(e){const t=e.consumeKind("eof");if(t)return new j({source:e.source,tokens:{value:t}})}get type(){return"eof"}}function z(e,t){return te(e,{parser:O.parser(e,t),listName:t+" list"})}const M=["identifier","decimal","integer","string"],U=new Map([...["NoInterfaceObject","LenientSetter","LenientThis","TreatNonObjectAsNull","Unforgeable"].map((e=>[e,`Legacy${e}`])),["NamedConstructor","LegacyFactoryFunction"],["OverrideBuiltins","LegacyOverrideBuiltIns"],["TreatNullAs","LegacyNullToEmptyString"]]);function q(e){for(const t of M){const n=z(e,t);if(n.length)return n}e.error("Expected identifiers, strings, decimals, or integers but none found")}class W extends P{static parse(e){const t={assign:e.consume("=")},n=pe(new W({source:e.source,tokens:t}));if(n.list=[],t.assign){if(t.asterisk=e.consume("*"),t.asterisk)return n.this;t.secondaryName=e.consumeKind(...M)}return t.open=e.consume("("),t.open?(n.list=n.rhsIsList?q(e):ie(e),t.close=e.consume(")")||e.error("Unexpected token in extended attribute argument list")):t.assign&&!t.secondaryName&&e.error("No right hand side to extended attribute assignment"),n.this}get rhsIsList(){return this.tokens.assign&&!this.tokens.asterisk&&!this.tokens.secondaryName}get rhsType(){return this.rhsIsList?this.list[0].tokens.value.type+"-list":this.tokens.asterisk?"*":this.tokens.secondaryName?this.tokens.secondaryName.type:null}write(e){const{rhsType:t}=this;return e.ts.wrap([e.token(this.tokens.assign),e.token(this.tokens.asterisk),e.reference_token(this.tokens.secondaryName,this.parent),e.token(this.tokens.open),...this.list.map((n=>"identifier-list"===t?e.identifier(n,this.parent):n.write(e))),e.token(this.tokens.close)])}}class F extends P{static parse(e){const t=e.consumeKind("identifier");if(t)return new F({source:e.source,tokens:{name:t},params:W.parse(e)})}constructor({source:e,tokens:t,params:n}){super({source:e,tokens:t}),n.parent=this,Object.defineProperty(this,"params",{value:n})}get type(){return"extended-attribute"}get name(){return this.tokens.name.value}get rhs(){const{rhsType:e,tokens:t,list:n}=this.params;if(!e)return null;return{type:e,value:this.params.rhsIsList?n:this.params.tokens.secondaryName?ee(t.secondaryName.value):null}}get arguments(){const{rhsIsList:e,list:t}=this.params;return!t||e?[]:t}*validate(e){const{name:t}=this;if("LegacyNoInterfaceObject"===t){const e="`[LegacyNoInterfaceObject]` extended attribute is an undesirable feature that may be removed from Web IDL in the future. Refer to the [relevant upstream PR](https://github.com/whatwg/webidl/pull/609) for more information.";yield A(this.tokens.name,this,"no-nointerfaceobject",e,{level:"warning"})}else if(U.has(t)){const e=`\`[${t}]\` extended attribute is a legacy feature that is now renamed to \`[${U.get(t)}]\`. Refer to the [relevant upstream PR](https://github.com/whatwg/webidl/pull/870) for more information.`;yield A(this.tokens.name,this,"renamed-legacy",e,{level:"warning",autofix:(n=this,()=>{const{name:e}=n;n.tokens.name.value=U.get(e),"TreatNullAs"===e&&(n.params.tokens={})})})}var n;for(const t of this.arguments)yield*t.validate(e)}write(e){return e.ts.wrap([e.ts.trivia(this.tokens.name.trivia),e.ts.extendedAttribute(e.ts.wrap([e.ts.extendedAttributeReference(this.name),this.params.write(e)])),e.token(this.tokens.separator)])}}class B extends D{static parse(e){const t={};t.open=e.consume("[");const n=new B({source:e.source,tokens:t});return t.open?(n.push(...te(e,{parser:F.parse,listName:"extended attribute"})),t.close=e.consume("]")||e.error("Expected a closing token for the extended attribute list"),n.length||(e.unconsume(t.close.index),e.error("An extended attribute list must not be empty")),e.probe("[")&&e.error("Illegal double extended attribute lists, consider merging them"),n):n}*validate(e){for(const t of this)yield*t.validate(e)}write(e){return this.length?e.ts.wrap([e.token(this.tokens.open),...this.map((t=>t.write(e))),e.token(this.tokens.close)]):""}}function H(e,t){const n=e.consume("?");n&&(t.tokens.nullable=n),e.probe("?")&&e.error("Can't nullable more than once")}function G(e,t){let n=function(e,t){const n=e.consume("FrozenArray","ObservableArray","Promise","async_sequence","sequence","record");if(!n)return;const r=pe(new V({source:e.source,tokens:{base:n}}));switch(r.tokens.open=e.consume("<")||e.error(`No opening bracket after ${n.value}`),n.value){case"Promise":{e.probe("[")&&e.error("Promise type cannot have extended attribute");const n=ae(e,t)||e.error("Missing Promise subtype");r.subtype.push(n);break}case"async_sequence":case"sequence":case"FrozenArray":case"ObservableArray":{const s=oe(e,t)||e.error(`Missing ${n.value} subtype`);r.subtype.push(s);break}case"record":{e.probe("[")&&e.error("Record key cannot have extended attribute");const n=e.consume(...me)||e.error(`Record key must be one of: ${me.join(", ")}`),s=new V({source:e.source,tokens:{base:n}});s.tokens.separator=e.consume(",")||e.error("Missing comma after record key type"),s.type=t;const i=oe(e,t)||e.error("Error parsing generic type record");r.subtype.push(s,i);break}}return r.idlType||e.error(`Error parsing generic type ${n.value}`),r.tokens.close=e.consume(">")||e.error(`Missing closing bracket after ${n.value}`),r.this}(e,t)||se(e);if(!n){const t=e.consumeKind("identifier")||e.consume(...me,...fe);if(!t)return;n=new V({source:e.source,tokens:{base:t}}),e.probe("<")&&e.error(`Unsupported generic type ${t.value}`)}return"Promise"===n.generic&&e.probe("?")&&e.error("Promise type cannot be nullable"),n.type=t||null,H(e,n),n.nullable&&"any"===n.idlType&&e.error("Type `any` cannot be made nullable"),n}let V=class extends P{static parse(e,t){return G(e,t)||function(e,t){const n={};if(n.open=e.consume("("),!n.open)return;const r=pe(new V({source:e.source,tokens:n}));for(r.type=t||null;;){const n=oe(e,t)||e.error("No type after open parenthesis or 'or' in union type");"any"===n.idlType&&e.error("Type `any` cannot be included in a union type"),"Promise"===n.generic&&e.error("Type `Promise` cannot be included in a union type"),r.subtype.push(n);const s=e.consume("or");if(!s)break;n.tokens.separator=s}return r.idlType.length<2&&e.error("At least two types are expected in a union type but found less"),n.close=e.consume(")")||e.error("Unterminated union type"),H(e,r),r.this}(e,t)}constructor({source:e,tokens:t}){super({source:e,tokens:t}),Object.defineProperty(this,"subtype",{value:[],writable:!0}),this.extAttrs=new B({source:e,tokens:{}})}get generic(){return this.subtype.length&&this.tokens.base?this.tokens.base.value:""}get nullable(){return Boolean(this.tokens.nullable)}get union(){return Boolean(this.subtype.length)&&!this.tokens.base}get idlType(){if(this.subtype.length)return this.subtype;return ee([this.tokens.prefix,this.tokens.base,this.tokens.postfix].filter((e=>e)).map((e=>e.value)).join(" "))}*validate(e){if(yield*this.extAttrs.validate(e),"BufferSource"===this.idlType)for(const e of[this.extAttrs,this.parent?.extAttrs])for(const t of e){if("AllowShared"!==t.name)continue;const n="`[AllowShared] BufferSource` is now replaced with AllowSharedBufferSource.";yield A(this.tokens.base,this,"migrate-allowshared",n,{autofix:J(this,t,e)})}if("void"===this.idlType){const e="`void` is now replaced by `undefined`. Refer to the [relevant GitHub issue](https://github.com/whatwg/webidl/issues/60) for more information.";yield A(this.tokens.base,this,"replace-void",e,{autofix:(t=this,()=>{t.tokens.base.value="undefined"})})}var t;const n=!this.union&&e.unique.get(this.idlType),r=this.union?this:n&&"typedef"===n.type?n.idlType:void 0;if(r&&this.nullable){const{reference:t}=N(r,e)||{};if(t){const e=(this.union?t:this).tokens.base,n="Nullable union cannot include a dictionary type.";yield A(e,this,"no-nullable-union-dict",n)}}else for(const t of this.subtype)yield*t.validate(e)}write(e){return e.ts.wrap([this.extAttrs.write(e),(()=>{if(this.union||this.generic)return e.ts.wrap([e.token(this.tokens.base,e.ts.generic),e.token(this.tokens.open),...this.subtype.map((t=>t.write(e))),e.token(this.tokens.close)]);const t=this.tokens.prefix||this.tokens.base,n=this.tokens.prefix?[this.tokens.prefix.value,e.ts.trivia(this.tokens.base.trivia)]:[],r=e.reference(e.ts.wrap([...n,this.tokens.base.value,e.token(this.tokens.postfix)]),{unescaped:this.idlType,context:this});return e.ts.wrap([e.ts.trivia(t.trivia),r])})(),e.token(this.tokens.nullable),e.token(this.tokens.separator)])}};function J(e,t,n){return()=>{const r=n.indexOf(t);n.splice(r,1),!n.length&&e.tokens.base.trivia.match(/^\s$/)&&(e.tokens.base.trivia=""),e.tokens.base.value="AllowSharedBufferSource"}}class K extends P{static parse(e){const t=e.consume("=");if(!t)return null;const n=ne(e)||e.consumeKind("string")||e.consume("null","[","{")||e.error("No value for default"),r=[n];if("["===n.value){const t=e.consume("]")||e.error("Default sequence value must be empty");r.push(t)}else if("{"===n.value){const t=e.consume("}")||e.error("Default dictionary value must be empty");r.push(t)}return new K({source:e.source,tokens:{assign:t},expression:r})}constructor({source:e,tokens:t,expression:n}){super({source:e,tokens:t}),n.parent=this,Object.defineProperty(this,"expression",{value:n})}get type(){return re(this.expression[0]).type}get value(){return re(this.expression[0]).value}get negative(){return re(this.expression[0]).negative}write(e){return e.ts.wrap([e.token(this.tokens.assign),...this.expression.map((t=>e.token(t)))])}}class Z extends P{static parse(e){const t=e.position,n={},r=pe(new Z({source:e.source,tokens:n}));return r.extAttrs=B.parse(e),n.optional=e.consume("optional"),r.idlType=oe(e,"argument-type"),r.idlType?(n.optional||(n.variadic=e.consume("...")),n.name=e.consumeKind("identifier")||e.consume(...ge),n.name?(r.default=n.optional?K.parse(e):null,r.this):e.unconsume(t)):e.unconsume(t)}get type(){return"argument"}get optional(){return!!this.tokens.optional}get variadic(){return!!this.tokens.variadic}get name(){return ee(this.tokens.name.value)}*validate(e){yield*this.extAttrs.validate(e),yield*this.idlType.validate(e);const t=N(this.idlType,e,{useNullableInner:!0});if(t)if(this.idlType.nullable){const e="Dictionary arguments cannot be nullable.";yield A(this.tokens.name,this,"no-nullable-dict-arg",e)}else if(this.optional){if(!this.default){const e="Optional dictionary arguments must have a default value of `{}`.";yield A(this.tokens.name,this,"dict-arg-default",e,{autofix:Y(this)})}}else if(this.parent&&!I(t.dictionary,e)&&function(e){const t=e.parent.arguments||e.parent.list,n=t.indexOf(e),r=t.slice(n+1).some((e=>!e.optional));return!r}(this)){const e="Dictionary argument must be optional if it has no required fields";yield A(this.tokens.name,this,"dict-arg-optional",e,{autofix:(n=this,()=>{const e=de(n.idlType);n.tokens.optional={...e,type:"optional",value:"optional"},e.trivia=" ",Y(n)()})})}var n}write(e){return e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.optional),e.ts.type(this.idlType.write(e)),e.token(this.tokens.variadic),e.name_token(this.tokens.name,{data:this}),this.default?this.default.write(e):"",e.token(this.tokens.separator)])}}function Y(e){return()=>{e.default=K.parse(new ve(" = {}"))}}class X extends P{static parse(e,{special:t,regular:n}={}){const r={special:t},s=pe(new X({source:e.source,tokens:r}));return t&&"stringifier"===t.value&&(r.termination=e.consume(";"),r.termination)?(s.arguments=[],s):(t||n||(r.special=e.consume("getter","setter","deleter")),s.idlType=ae(e)||e.error("Missing return type"),r.name=e.consumeKind("identifier")||e.consume("includes"),r.open=e.consume("(")||e.error("Invalid operation"),s.arguments=ie(e),r.close=e.consume(")")||e.error("Unterminated operation"),r.termination=e.consume(";")||e.error("Unterminated operation, expected `;`"),s.this)}get type(){return"operation"}get name(){const{name:e}=this.tokens;return e?ee(e.value):""}get special(){return this.tokens.special?this.tokens.special.value:""}*validate(e){if(yield*this.extAttrs.validate(e),!this.name&&["","static"].includes(this.special)){const e="Regular or static operations must have both a return type and an identifier.";yield A(this.tokens.open,this,"incomplete-op",e)}if(this.idlType){if("async_sequence"===this.idlType.generic){const e="async_sequence types cannot be returned by an operation.";yield A(this.idlType.tokens.base,this,"async-sequence-idl-to-js",e)}yield*this.idlType.validate(e)}for(const t of this.arguments)yield*t.validate(e)}write(e){const{parent:t}=this,n=this.idlType?[e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),e.token(this.tokens.open),e.ts.wrap(this.arguments.map((t=>t.write(e)))),e.token(this.tokens.close)]:[];return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),this.tokens.name?e.token(this.tokens.special):e.token(this.tokens.special,e.ts.nameless,{data:this,parent:t}),...n,e.token(this.tokens.termination)]),{data:this,parent:t})}}class Q extends P{static parse(e,{special:t,noInherit:n=!1,readonly:r=!1}={}){const s=e.position,i={special:t},o=pe(new Q({source:e.source,tokens:i}));if(t||n||(i.special=e.consume("inherit")),"inherit"===o.special&&e.probe("readonly")&&e.error("Inherited attributes cannot be read-only"),i.readonly=e.consume("readonly"),r&&!i.readonly&&e.probe("attribute")&&e.error("Attributes must be readonly in this context"),i.base=e.consume("attribute"),i.base)return o.idlType=oe(e,"attribute-type")||e.error("Attribute lacks a type"),i.name=e.consumeKind("identifier")||e.consume("async","required")||e.error("Attribute lacks a name"),i.termination=e.consume(";")||e.error("Unterminated attribute, expected `;`"),o.this;e.unconsume(s)}get type(){return"attribute"}get special(){return this.tokens.special?this.tokens.special.value:""}get readonly(){return!!this.tokens.readonly}get name(){return ee(this.tokens.name.value)}*validate(e){if(yield*this.extAttrs.validate(e),yield*this.idlType.validate(e),["async_sequence","sequence","record"].includes(this.idlType.generic)){const e=`Attributes cannot accept ${this.idlType.generic} types.`;yield A(this.tokens.name,this,"attr-invalid-type",e)}{const{reference:t}=N(this.idlType,e)||{};if(t){const e=(this.idlType.union?t:this.idlType).tokens.base,n="Attributes cannot accept dictionary types.";yield A(e,this,"attr-invalid-type",n)}}if(this.readonly&&function(e,t){if(e.union)return!1;if(e.extAttrs.some((e=>"EnforceRange"===e.name)))return!0;const n=t.unique.get(e.idlType);return"typedef"===n?.type&&n.idlType.extAttrs.some((e=>"EnforceRange"===e.name))}(this.idlType,e)){const e=this.idlType.tokens.base,t="Readonly attributes cannot accept [EnforceRange] extended attribute.";yield A(e,this,"attr-invalid-type",t)}}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.special),e.token(this.tokens.readonly),e.token(this.tokens.base),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),e.token(this.tokens.termination)]),{data:this,parent:t})}}function ee(e){return e.startsWith("_")?e.slice(1):e}function te(e,{parser:t,allowDangler:n,listName:r="list"}){const s=t(e);if(!s)return[];s.tokens.separator=e.consume(",");const i=[s];for(;s.tokens.separator;){const s=t(e);if(!s){n||e.error(`Trailing comma in ${r}`);break}if(s.tokens.separator=e.consume(","),i.push(s),!s.tokens.separator)break}return i}function ne(e){return e.consumeKind("decimal","integer")||e.consume("true","false","Infinity","-Infinity","NaN")}function re({type:e,value:t}){switch(e){case"decimal":case"integer":return{type:"number",value:t};case"string":return{type:"string",value:t.slice(1,-1)}}switch(t){case"true":case"false":return{type:"boolean",value:"true"===t};case"Infinity":case"-Infinity":return{type:"Infinity",negative:t.startsWith("-")};case"[":return{type:"sequence",value:[]};case"{":return{type:"dictionary"};default:return{type:t}}}function se(e){const{source:t}=e,n=function(){const n=e.consume("unsigned"),r=e.consume("short","long");if(r){const s=e.consume("long");return new V({source:t,tokens:{prefix:n,base:r,postfix:s}})}n&&e.error("Failed to parse integer type")}()||function(){const n=e.consume("unrestricted"),r=e.consume("float","double");if(r)return new V({source:t,tokens:{prefix:n,base:r}});n&&e.error("Failed to parse float type")}();if(n)return n;const r=e.consume("bigint","boolean","byte","octet","undefined");return r?new V({source:t,tokens:{base:r}}):void 0}function ie(e){return te(e,{parser:Z.parse,listName:"arguments list"})}function oe(e,t){const n=B.parse(e),r=V.parse(e,t);return r&&(pe(r).extAttrs=n),r}function ae(e,t){const n=V.parse(e,t||"return-type");if(n)return n;const r=e.consume("void");if(r){const t=new V({source:e.source,tokens:{base:r}});return t.type="return-type",t}}function ce(e){const t=e.consume("stringifier");if(!t)return;return Q.parse(e,{special:t})||X.parse(e,{special:t})||e.error("Unterminated stringifier")}function le(e){const t=e.split("\n");if(t.length){const e=t[t.length-1].match(/^\s+/);if(e)return e[0]}return""}function ue(e){return()=>{if(e.extAttrs.length){const t=new ve("Exposed=Window,"),n=F.parse(t);n.tokens.separator=t.consume(",");const r=e.extAttrs[0];/^\s/.test(r.tokens.name.trivia)||(r.tokens.name.trivia=` ${r.tokens.name.trivia}`),e.extAttrs.unshift(n)}else{pe(e).extAttrs=B.parse(new ve("[Exposed=Window]"));const t=e.tokens.base.trivia;e.extAttrs.tokens.open.trivia=t,e.tokens.base.trivia=`\n${le(t)}`}}}function de(e){if(e.extAttrs.length)return e.extAttrs.tokens.open;if("operation"===e.type&&!e.special)return de(e.idlType);const t=Object.values(e.tokens).sort(((e,t)=>e.index-t.index));return t[0]}function pe(e,t){if(t||(t=e),!e)return e;return new Proxy(e,{get(e,t){const n=e[t];return Array.isArray(n)&&"source"!==t?pe(n,e):n},set(e,n,r){if(e[n]=r,!r)return!0;if(Array.isArray(r))for(const e of r)void 0!==e.parent&&(e.parent=t);else void 0!==r.parent&&(r.parent=t);return!0}})}const he={decimal:/-?(?=[0-9]*\.|[0-9]+[eE])(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/y,integer:/-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/y,identifier:/[_-]?[A-Za-z][0-9A-Z_a-z-]*/y,string:/"[^"]*"/y,whitespace:/[\t\n\r ]+/y,comment:/\/\/.*|\/\*[\s\S]*?\*\//y,other:/[^\t\n\r 0-9A-Za-z]/y},fe=["ArrayBuffer","SharedArrayBuffer","DataView","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Uint8ClampedArray","BigInt64Array","BigUint64Array","Float16Array","Float32Array","Float64Array","any","object","symbol"],me=["ByteString","DOMString","USVString"],ge=["async","attribute","callback","const","constructor","deleter","dictionary","enum","getter","includes","inherit","interface","iterable","maplike","namespace","partial","required","setlike","setter","static","stringifier","typedef","unrestricted"],be=["-Infinity","FrozenArray","Infinity","NaN","ObservableArray","Promise","async_iterable","async_sequence","bigint","boolean","byte","double","false","float","long","mixin","null","octet","optional","or","readonly","record","sequence","short","true","undefined","unsigned","void"].concat(ge,me,fe),ye=["(",")",",","...",":",";","<","=",">","?","*","[","]","{","}"],we=["_constructor","toString","_toString"];class ve{constructor(e){this.source=function(e){const t=[];let n=0,r="",s=1,i=0;for(;n<e.length;){const a=e.charAt(n);let c=-1;if(/[\t\n\r ]/.test(a)?c=o("whitespace",{noFlushTrivia:!0}):"/"===a&&(c=o("comment",{noFlushTrivia:!0})),-1!==c){const e=t.pop().value;s+=(e.match(/\n/g)||[]).length,r+=e,i-=1}else if(/[-0-9.A-Z_a-z]/.test(a)){if(c=o("decimal"),-1===c&&(c=o("integer")),-1===c){c=o("identifier");const e=t.length-1,n=t[e];if(-1!==c){if(we.includes(n.value)){const r=`${ee(n.value)} is a reserved identifier and must not be used.`;throw new ke(L(t,e,null,r))}be.includes(n.value)&&(n.type="inline")}}}else'"'===a&&(c=o("string"));for(const o of ye)if(e.startsWith(o,n)){t.push({type:"inline",value:o,trivia:r,line:s,index:i}),r="",n+=o.length,c=n;break}if(-1===c&&(c=o("other")),-1===c)throw new Error("Token stream not progressing");n=c,i+=1}return t.push({type:"eof",value:"",trivia:r,line:s,index:i}),t;function o(o,{noFlushTrivia:a}={}){const c=he[o];c.lastIndex=n;const l=c.exec(e);return l?(t.push({type:o,value:l[0],trivia:r,line:s,index:i}),a||(r=""),c.lastIndex):-1}}(e),this.position=0}error(e){throw new ke(L(this.source,this.position,this.current,e))}probeKind(e){return this.source.length>this.position&&this.source[this.position].type===e}probe(e){return this.probeKind("inline")&&this.source[this.position].value===e}consumeKind(...e){for(const t of e){if(!this.probeKind(t))continue;const e=this.source[this.position];return this.position++,e}}consume(...e){if(!this.probeKind("inline"))return;const t=this.source[this.position];for(const n of e)if(t.value===n)return this.position++,t}consumeIdentifier(e){if(this.probeKind("identifier")&&this.source[this.position].value===e)return this.consumeKind("identifier")}unconsume(e){this.position=e}}class ke extends Error{constructor({message:e,bareMessage:t,context:n,line:r,sourceName:s,input:i,tokens:o}){super(e),this.name="WebIDLParseError",this.bareMessage=t,this.context=n,this.line=r,this.sourceName=s,this.input=i,this.tokens=o}}class $e extends O{static parse(e){const t=e.consumeKind("string");if(t)return new $e({source:e.source,tokens:{value:t}})}get type(){return"enum-value"}get value(){return super.value.slice(1,-1)}write(e){const{parent:t}=this;return e.ts.wrap([e.ts.trivia(this.tokens.value.trivia),e.ts.definition(e.ts.wrap(['"',e.ts.name(this.value,{data:this,parent:t}),'"']),{data:this,parent:t}),e.token(this.tokens.separator)])}}class xe extends P{static parse(e){const t={};if(t.base=e.consume("enum"),!t.base)return;t.name=e.consumeKind("identifier")||e.error("No name for enum");const n=pe(new xe({source:e.source,tokens:t}));return e.current=n.this,t.open=e.consume("{")||e.error("Bodyless enum"),n.values=te(e,{parser:$e.parse,allowDangler:!0,listName:"enumeration"}),e.probeKind("string")&&e.error("No comma between enum values"),t.close=e.consume("}")||e.error("Unexpected value in enum"),n.values.length||e.error("No value in enum"),t.termination=e.consume(";")||e.error("No semicolon after enum"),n.this}get type(){return"enum"}get name(){return ee(this.tokens.name.value)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.name_token(this.tokens.name,{data:this}),e.token(this.tokens.open),e.ts.wrap(this.values.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this})}}class Ce extends P{static parse(e){const t=e.consumeKind("identifier");if(!t)return;const n={target:t};if(n.includes=e.consume("includes"),n.includes)return n.mixin=e.consumeKind("identifier")||e.error("Incomplete includes statement"),n.termination=e.consume(";")||e.error("No terminating ; for includes statement"),new Ce({source:e.source,tokens:n});e.unconsume(t.index)}get type(){return"includes"}get target(){return ee(this.tokens.target.value)}get includes(){return ee(this.tokens.mixin.value)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.reference_token(this.tokens.target,this),e.token(this.tokens.includes),e.reference_token(this.tokens.mixin,this),e.token(this.tokens.termination)]),{data:this})}}class Se extends P{static parse(e){const t={},n=pe(new Se({source:e.source,tokens:t}));if(t.base=e.consume("typedef"),t.base)return n.idlType=oe(e,"typedef-type")||e.error("Typedef lacks a type"),t.name=e.consumeKind("identifier")||e.error("Typedef lacks a name"),e.current=n.this,t.termination=e.consume(";")||e.error("Unterminated typedef, expected `;`"),n.this}get type(){return"typedef"}get name(){return ee(this.tokens.name.value)}*validate(e){yield*this.idlType.validate(e)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this}),e.token(this.tokens.termination)]),{data:this})}}class _e extends P{static parse(e,t){const n={base:t},r=pe(new _e({source:e.source,tokens:n}));return n.name=e.consumeKind("identifier")||e.error("Callback lacks a name"),e.current=r.this,n.assign=e.consume("=")||e.error("Callback lacks an assignment"),r.idlType=ae(e)||e.error("Callback lacks a return type"),n.open=e.consume("(")||e.error("Callback lacks parentheses for arguments"),r.arguments=ie(e),n.close=e.consume(")")||e.error("Unterminated callback"),n.termination=e.consume(";")||e.error("Unterminated callback, expected `;`"),r.this}get type(){return"callback"}get name(){return ee(this.tokens.name.value)}*validate(e){yield*this.extAttrs.validate(e);for(const t of this.arguments)if(yield*t.validate(e),"async_sequence"===t.idlType.generic){const e="async_sequence types cannot be returned as a callback argument.";yield A(t.tokens.name,t,"async-sequence-idl-to-js",e)}yield*this.idlType.validate(e)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.name_token(this.tokens.name,{data:this}),e.token(this.tokens.assign),e.ts.type(this.idlType.write(e)),e.token(this.tokens.open),...this.arguments.map((t=>t.write(e))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this})}}class Te extends P{static parse(e,t,{inheritable:n,allowedMembers:r}){const{tokens:s,type:i}=t;for(s.name=e.consumeKind("identifier")||e.error(`Missing name in ${i}`),e.current=t,t=pe(t),n&&Object.assign(s,function(e){const t=e.consume(":");return t?{colon:t,inheritance:e.consumeKind("identifier")||e.error("Inheritance lacks a type")}:{}}(e)),s.open=e.consume("{")||e.error(`Bodyless ${i}`),t.members=[];;){if(s.close=e.consume("}"),s.close)return s.termination=e.consume(";")||e.error(`Missing semicolon after ${i}`),t.this;const n=B.parse(e);let o;for(const[t,...n]of r)if(o=pe(t(e,...n)),o)break;o||e.error("Unknown member"),o.extAttrs=n,t.members.push(o.this)}}get partial(){return!!this.tokens.partial}get name(){return ee(this.tokens.name.value)}get inheritance(){return this.tokens.inheritance?ee(this.tokens.inheritance.value):null}*validate(e){for(const t of this.members)t.validate&&(yield*t.validate(e))}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.callback),e.token(this.tokens.partial),e.token(this.tokens.base),e.token(this.tokens.mixin),e.name_token(this.tokens.name,{data:this}),(()=>this.tokens.inheritance?e.ts.wrap([e.token(this.tokens.colon),e.ts.trivia(this.tokens.inheritance.trivia),e.ts.inheritance(e.reference(this.tokens.inheritance.value,{context:this}))]):"")(),e.token(this.tokens.open),e.ts.wrap(this.members.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this})}}class Re extends P{static parse(e){const t={};if(t.base=e.consume("const"),!t.base)return;let n=se(e);if(!n){const t=e.consumeKind("identifier")||e.error("Const lacks a type");n=new V({source:e.source,tokens:{base:t}})}e.probe("?")&&e.error("Unexpected nullable constant type"),n.type="const-type",t.name=e.consumeKind("identifier")||e.error("Const lacks a name"),t.assign=e.consume("=")||e.error("Const lacks value assignment"),t.value=ne(e)||e.error("Const lacks a value"),t.termination=e.consume(";")||e.error("Unterminated const, expected `;`");const r=new Re({source:e.source,tokens:t});return pe(r).idlType=n,r}get type(){return"const"}get name(){return ee(this.tokens.name.value)}get value(){return re(this.tokens.value)}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),e.token(this.tokens.assign),e.token(this.tokens.value),e.token(this.tokens.termination)]),{data:this,parent:t})}}class Ee extends P{static parse(e){const t=e.position,n=pe(new Ee({source:e.source,tokens:{}})),{tokens:r}=n;if(r.readonly=e.consume("readonly"),r.readonly||(r.async=e.consume("async")),r.base=r.readonly?e.consume("maplike","setlike"):r.async?e.consume("iterable"):e.consume("iterable","async_iterable","maplike","setlike"),!r.base)return void e.unconsume(t);const{type:s}=n,i="maplike"===s,o=i||"iterable"===s||"async_iterable"===s,a="async_iterable"===s||n.async&&"iterable"===s;r.open=e.consume("<")||e.error(`Missing less-than sign \`<\` in ${s} declaration`);const c=oe(e)||e.error(`Missing a type argument in ${s} declaration`);return n.idlType=[c],n.arguments=[],o&&(c.tokens.separator=e.consume(","),c.tokens.separator?n.idlType.push(oe(e)):i&&e.error(`Missing second type argument in ${s} declaration`)),r.close=e.consume(">")||e.error(`Missing greater-than sign \`>\` in ${s} declaration`),e.probe("(")&&(a?(r.argsOpen=e.consume("("),n.arguments.push(...ie(e)),r.argsClose=e.consume(")")||e.error("Unterminated async iterable argument list")):e.error("Arguments are only allowed for `async iterable`")),r.termination=e.consume(";")||e.error(`Missing semicolon after ${s} declaration`),n.this}get type(){return this.tokens.base.value}get readonly(){return!!this.tokens.readonly}get async(){return!!this.tokens.async}*validate(e){if(this.async&&"iterable"===this.type){const e="`async iterable` is now changed to `async_iterable`.";yield A(this.tokens.async,this,"obsolete-async-iterable-syntax",e,{autofix:(t=this,()=>{const e=t.tokens.async;t.tokens.base={...e,type:"async_iterable",value:"async_iterable"},delete t.tokens.async})})}var t;for(const t of this.idlType)yield*t.validate(e);for(const t of this.arguments)yield*t.validate(e)}write(e){return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.readonly),e.token(this.tokens.async),e.token(this.tokens.base,e.ts.generic),e.token(this.tokens.open),e.ts.wrap(this.idlType.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.argsOpen),e.ts.wrap(this.arguments.map((t=>t.write(e)))),e.token(this.tokens.argsClose),e.token(this.tokens.termination)]),{data:this,parent:this.parent})}}class Le extends P{static parse(e){const t=e.consume("constructor");if(!t)return;const n={base:t};n.open=e.consume("(")||e.error("No argument list in constructor");const r=ie(e);n.close=e.consume(")")||e.error("Unterminated constructor"),n.termination=e.consume(";")||e.error("No semicolon after constructor");const s=new Le({source:e.source,tokens:n});return pe(s).arguments=r,s}get type(){return"constructor"}*validate(e){for(const t of this.arguments)yield*t.validate(e)}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.base,e.ts.nameless,{data:this,parent:t}),e.token(this.tokens.open),e.ts.wrap(this.arguments.map((t=>t.write(e)))),e.token(this.tokens.close),e.token(this.tokens.termination)]),{data:this,parent:t})}}function Ae(e){const t=e.consume("static");if(!t)return;return Q.parse(e,{special:t})||X.parse(e,{special:t})||e.error("No body in static member")}class Pe extends Te{static parse(e,t,{extMembers:n=[],partial:r=null}={}){const s={partial:r,base:t};return Te.parse(e,new Pe({source:e.source,tokens:s}),{inheritable:!r,allowedMembers:[...n,[Re.parse],[Le.parse],[Ae],[ce],[Ee.parse],[Q.parse],[X.parse]]})}get type(){return"interface"}*validate(e){if(yield*this.extAttrs.validate(e),!this.partial&&this.extAttrs.every((e=>"Exposed"!==e.name))){const e="Interfaces must have `[Exposed]` extended attribute. To fix, add, for example, `[Exposed=Window]`. Please also consider carefully if your interface should also be exposed in a Worker scope. Refer to the [WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) for more information.";yield A(this.tokens.name,this,"require-exposed",e,{autofix:ue(this)})}const t=this.extAttrs.filter((e=>"Constructor"===e.name));for(const e of t){const t="Constructors should now be represented as a `constructor()` operation on the interface instead of `[Constructor]` extended attribute. Refer to the [WebIDL spec section on constructor operations](https://heycam.github.io/webidl/#idl-constructors) for more information.";yield A(e.tokens.name,this,"constructor-member",t,{autofix:Ne(this,e)})}if(this.extAttrs.some((e=>"Global"===e.name))){const e=this.extAttrs.filter((e=>"LegacyFactoryFunction"===e.name));for(const t of e){const e="Interfaces marked as `[Global]` cannot have factory functions.";yield A(t.tokens.name,this,"no-constructible-global",e)}const t=this.members.filter((e=>"constructor"===e.type));for(const e of t){const t="Interfaces marked as `[Global]` cannot have constructors.";yield A(e.tokens.base,this,"no-constructible-global",t)}}yield*super.validate(e),this.partial||(yield*function*(e,t){const n=function(e){const t=o(e);return{statics:new Set(t.filter((e=>"static"===e.special)).map((e=>e.name))),nonstatics:new Set(t.filter((e=>"static"!==e.special)).map((e=>e.name)))}}(t),r=e.partials.get(t.name)||[],s=e.mixinMap.get(t.name)||[];for(const e of[...r,...s]){const r=o(e),s=r.filter((e=>"static"===e.special)),a=r.filter((e=>"static"!==e.special));yield*i(s,n.statics,e,t),yield*i(a,n.nonstatics,e,t),s.forEach((e=>n.statics.add(e.name))),a.forEach((e=>n.nonstatics.add(e.name)))}function*i(e,t,n,r){for(const s of e){const{name:e}=s;if(e&&t.has(e)){const t=`The ${"static"===s.special?"static ":""}operation "${e}" has already been defined for the base interface "${r.name}" either in itself or in a mixin`;yield A(s.tokens.name,n,"no-cross-overload",t)}}}function o(e){return e.members.filter((({type:e})=>"operation"===e))}}(e,this))}}function Ne(e,t){return e=pe(e),()=>{const n=le(e.extAttrs.tokens.open.trivia),r=e.members.length?le(de(e.members[0]).trivia):function(e){const t=le(e),n=t.includes("\t")?"\t":" ";return t+n}(n),s=Le.parse(new ve(`\n${r}constructor();`));s.extAttrs=new B({source:e.source,tokens:{}}),pe(s).arguments=t.arguments;const i=function(e,t){const n=e.slice().reverse().findIndex(t);return-1===n?n:e.length-n-1}(e.members,(e=>"constructor"===e.type));e.members.splice(i+1,0,s);const{close:o}=e.tokens;o.trivia.includes("\n")||(o.trivia+=`\n${n}`);const{extAttrs:a}=e,c=a.indexOf(t),l=a.splice(c,1);a.length?a.length===c?a[c-1].tokens.separator=void 0:a[c].tokens.name.trivia.trim()||(a[c].tokens.name.trivia=l[0].tokens.name.trivia):a.tokens.open=a.tokens.close=void 0}}class Ie extends Te{static parse(e,t,{extMembers:n=[],partial:r}={}){const s={partial:r,base:t};if(s.mixin=e.consume("mixin"),s.mixin)return Te.parse(e,new Ie({source:e.source,tokens:s}),{allowedMembers:[...n,[Re.parse],[ce],[Q.parse,{noInherit:!0}],[X.parse,{regular:!0}]]})}get type(){return"interface mixin"}}class De extends P{static parse(e){const t={},n=pe(new De({source:e.source,tokens:t}));return n.extAttrs=B.parse(e),t.required=e.consume("required"),n.idlType=oe(e,"dictionary-type")||e.error("Dictionary member lacks a type"),t.name=e.consumeKind("identifier")||e.error("Dictionary member lacks a name"),n.default=K.parse(e),t.required&&n.default&&e.error("Required member must not have a default"),t.termination=e.consume(";")||e.error("Unterminated dictionary member, expected `;`"),n.this}get type(){return"field"}get name(){return ee(this.tokens.name.value)}get required(){return!!this.tokens.required}*validate(e){yield*this.idlType.validate(e)}write(e){const{parent:t}=this;return e.ts.definition(e.ts.wrap([this.extAttrs.write(e),e.token(this.tokens.required),e.ts.type(this.idlType.write(e)),e.name_token(this.tokens.name,{data:this,parent:t}),this.default?this.default.write(e):"",e.token(this.tokens.termination)]),{data:this,parent:t})}}class Oe extends Te{static parse(e,{extMembers:t=[],partial:n}={}){const r={partial:n};if(r.base=e.consume("dictionary"),r.base)return Te.parse(e,new Oe({source:e.source,tokens:r}),{inheritable:!n,allowedMembers:[...t,[De.parse]]})}get type(){return"dictionary"}}class je extends Te{static parse(e,{extMembers:t=[],partial:n}={}){const r={partial:n};if(r.base=e.consume("namespace"),r.base)return Te.parse(e,new je({source:e.source,tokens:r}),{allowedMembers:[...t,[Q.parse,{noInherit:!0,readonly:!0}],[Re.parse],[X.parse,{regular:!0}]]})}get type(){return"namespace"}*validate(e){if(!this.partial&&this.extAttrs.every((e=>"Exposed"!==e.name))){const e="Namespaces must have [Exposed] extended attribute. To fix, add, for example, [Exposed=Window]. Please also consider carefully if your namespace should also be exposed in a Worker scope. Refer to the [WebIDL spec section on Exposed](https://heycam.github.io/webidl/#Exposed) for more information.";yield A(this.tokens.name,this,"require-exposed",e,{autofix:ue(this)})}yield*super.validate(e)}}class ze extends Te{static parse(e,t,{extMembers:n=[]}={}){const r={callback:t};if(r.base=e.consume("interface"),r.base)return Te.parse(e,new ze({source:e.source,tokens:r}),{allowedMembers:[...n,[Re.parse],[X.parse,{regular:!0}]]})}get type(){return"callback interface"}}function Me(e,t){const n=e.source;function r(t){e.error(t)}function s(...t){return e.consume(...t)}function i(n){const i=s("interface");if(i)return Ie.parse(e,i,{...n,...t?.extensions?.mixin})||Pe.parse(e,i,{...n,...t?.extensions?.interface})||r("Interface has no proper body")}function o(){if(t.productions)for(const n of t.productions){const t=n(e);if(t)return t}return function(){const n=s("callback");if(n)return e.probe("interface")?ze.parse(e,n,{...t?.extensions?.callbackInterface}):_e.parse(e,n)}()||i()||function(){const n=s("partial");if(n)return Oe.parse(e,{partial:n,...t?.extensions?.dictionary})||i({partial:n})||je.parse(e,{partial:n,...t?.extensions?.namespace})||r("Partial doesn't apply to anything")}()||Oe.parse(e,t?.extensions?.dictionary)||xe.parse(e)||Se.parse(e)||Ce.parse(e)||je.parse(e,t?.extensions?.namespace)}const a=function(){if(!n.length)return[];const s=[];for(;;){const t=B.parse(e),n=o();if(!n){t.length&&r("Stray extended attributes");break}pe(n).extAttrs=t,s.push(n)}const i=j.parse(e);return t.concrete&&s.push(i),s}();return e.position<n.length&&r("Unrecognised tokens"),a}function Ue(e){return e}const qe={wrap:e=>e.join(""),trivia:Ue,name:Ue,reference:Ue,type:Ue,generic:Ue,nameless:Ue,inheritance:Ue,definition:Ue,extendedAttribute:Ue,extendedAttributeReference:Ue};class We{constructor(e){this.ts=Object.assign({},qe,e)}reference(e,{unescaped:t,context:n}){return t||(t=e.startsWith("_")?e.slice(1):e),this.ts.reference(e,t,n)}token(e,t=Ue,...n){if(!e)return"";const r=t(e.value,...n);return this.ts.wrap([this.ts.trivia(e.trivia),r])}reference_token(e,t){return this.token(e,this.reference.bind(this),{context:t})}name_token(e,t){return this.token(e,this.ts.name,t)}identifier(e,t){return this.ts.wrap([this.reference_token(e.tokens.value,t),this.token(e.tokens.separator)])}}function Fe(e,t){const n=new Map,r=e.filter((e=>"includes"===e.type));for(const e of r){const r=t.get(e.includes);if(!r)continue;const s=n.get(e.target);s?s.push(r):n.set(e.target,[r])}return n}function*Be(e){const t=function(e){const t=new Map,n=new Set,r=new Map;for(const s of e)if(s.partial){const e=r.get(s.name);e?e.push(s):r.set(s.name,[s])}else s.name&&(t.has(s.name)?n.add(s):t.set(s.name,s));return{all:e,unique:t,partials:r,duplicates:n,mixinMap:Fe(e,t),cache:{typedefIncludesDictionary:new WeakMap,dictionaryIncludesRequiredField:new WeakMap}}}(e);for(const e of t.all)e.validate&&(yield*e.validate(t));yield*function*({unique:e,duplicates:t}){for(const n of t){const{name:t}=n,r=`The name "${t}" of type "${e.get(t).type}" was already seen`;yield A(n.tokens.name,n,"no-duplicate",r)}}(t)}var He,Ge=Object.freeze({__proto__:null,WebIDLParseError:ke,parse:function(e,t={}){const n=new ve(e);return void 0!==t.sourceName&&(n.source.name=t.sourceName),Me(n,t)},validate:function(e){return[...Be((t=e,t.flat?t.flat():[].concat(...t)))];var t},write:function(e,{templates:t=qe}={}){t=Object.assign({},qe,t);const n=new We(t);return t.wrap(e.map((e=>e.write(n))))}});!function(e){e.ILLEGAL="ILLEGAL",e.EOF="EOF",e.NL="\n",e.SPACE=" ",e.UNDERSCORE="_",e.DOLLAR="$",e.ATSIGN="@",e.CARET="^",e.HASH="#",e.TILDE="~",e.AMPERSAND="&",e.IDENT="IDENT",e.COMMENT="COMMENT",e.STRING="STRING",e.NUMBER="NUMBER",e.FLOAT="FLOAT",e.CTLOP="CTLOP",e.BYTES="BYTES",e.HEX="HEX",e.BASE64="BASE64",e.ASSIGN="=",e.ARROWMAP="=>",e.TCHOICE="/",e.GCHOICE="//",e.TCHOICEALT="/=",e.GCHOICEALT="//=",e.PLUS="+",e.MINUS="-",e.QUEST="?",e.ASTERISK="*",e.INCLRANGE="..",e.EXCLRANGE="...",e.COMMA=",",e.DOT=".",e.COLON=":",e.SEMICOLON=";",e.LPAREN="(",e.RPAREN=")",e.LBRACE="{",e.RBRACE="}",e.LBRACK="[",e.RBRACK="]",e.LT="<",e.GT=">",e.QUOT='"'}(He||(He={}));const Ve=Object.entries(He).reduce(((e,[t,n])=>(e[n]=t,e)),{});class Je{type;literal;comments;whitespace;constructor(e,t,n=[],r=""){this.type=e,this.literal=t,this.comments=n,this.whitespace=r}serialize(){let e="";for(const t of this.comments)e+=t.serialize();switch(e+=this.whitespace,this.type){case He.IDENT:case He.COMMENT:case He.NUMBER:case He.FLOAT:e+=this.literal;break;case He.STRING:e+='"'+this.literal+'"';break;case He.CTLOP:e+="."+this.literal;break;case He.BYTES:e+="'"+this.literal+"'";break;case He.HEX:e+="h'"+this.literal+"'";break;case He.BASE64:e+="b64'"+this.literal+"'";break;case He.EOF:break;default:e+=this.type.valueOf()}return e}startWithSpaces(){return""!==this.whitespace||this.comments.length>0}toString(e=0){const t=[`${" ".repeat(e)}${this.constructor.name}: ${Ve[this.type]} (${this.type})`];""!==this.whitespace&&t.push(" ".repeat(e+1)+`whitespaces: ${this.whitespace.length}`),""!==this.literal&&t.push(" ".repeat(e+1)+`literal: ${this.literal}`);for(const n of this.comments)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return{type:this.type,literal:this.literal,comments:this.comments?.map((e=>e.toJSON())),whitespace:this.whitespace}}}class Ke{parentNode=null;serialize(e){if(this.setChildrenParent(),e){const t=e.markupFor(this);let n=null!==t[0]?t[0]:"";return n+=this._serialize(e),n+=null!==t[1]?t[1]:"",n}return this._serialize()}setChildrenParent(){for(const e of this.getChildren())e.parentNode=this,e.setChildrenParent()}getChildren(){return[]}_serializeToken(e,t){return e?t?t.serializeToken(e,this):e.serialize():""}toString(e=0){return" ".repeat(e)+this.constructor.name}toJSON(){return{}}}class Ze extends Ke{openToken=null;closeToken=null;serialize(e){let t="";if(e){const n=e.markupFor(this);t+=null!==n[0]?n[0]:""}if(t+=this._serializeToken(this.openToken,e),t+=this._serialize(e),t+=this._serializeToken(this.closeToken,e),e){const n=e.markupFor(this);t+=null!==n[1]?n[1]:""}return t}toString(e=0){const t=[super.toString(e)];return this.openToken&&t.push(this.openToken.toString(e+1)),this.closeToken&&t.push(this.closeToken.toString(e+1)),t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{openToken:this.openToken?.toJSON(),closeToken:this.closeToken?.toJSON()})}}class Ye extends Ze{comments=[];whitespace="";separator=null;_prestr(e){return""}serialize(e){let t=this._prestr(e);for(const n of this.comments)t+=this._serializeToken(n,e);return t+=this.whitespace,t+=super.serialize(e),t+=this._serializeToken(this.separator,e),t}setComments(e){this.comments=e.comments,this.whitespace=e.whitespace}toString(e=0){const t=[super.toString(e)];for(const n of this.comments)t.push(n.toString(e+1));return""!==this.whitespace&&t.push(" ".repeat(e+1)+`whitespaces: ${this.whitespace.length}`),this.separator&&t.push(this.separator.toString(e+1)),t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{comments:this.comments.map((e=>e.toJSON())),whitespace:this.whitespace,separator:this.separator?.toJSON()})}}class Xe extends Ye{rules;constructor(e){super(),this.rules=e}getChildren(){return this.rules}_serialize(e){return this.rules.map((t=>t.serialize(e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.rules)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{rules:this.rules.map((e=>e.toJSON()))})}}class Qe extends Ke{name;assign;type;constructor(e,t,n){super(),this.name=e,this.assign=t,this.type=n}getChildren(){return[this.name,this.type]}_serialize(e){let t=this.name.serialize(e);return t+=this._serializeToken(this.assign,e),t+=this.type.serialize(e),t}toString(e=0){return[super.toString(e),this.name.toString(e+1),this.assign.toString(e+1),this.type.toString(e+1)].join("\n")}toJSON(){return Object.assign(super.toJSON(),{name:this.name.toJSON(),assign:this.assign.toJSON(),type:this.type.toJSON()})}}class et extends Ye{occurrence;key;type;constructor(e,t,n){super(),this.occurrence=e,this.key=t,this.type=n}getChildren(){const e=[];return this.occurrence&&e.push(this.occurrence),this.key&&e.push(this.key),e.push(this.type),e}_serialize(e){let t="";return this.occurrence&&(t+=this.occurrence.serialize(e)),this.key&&(t+=this.key.serialize(e)),t+=this.type.serialize(e),t}isConvertibleToType(){return null===this.occurrence&&null===this.key&&(!(this.type instanceof tt)||this.type instanceof rt||this.type instanceof nt)}toString(e=0){const t=[super.toString(e)];return this.occurrence&&t.push(this.occurrence.toString(e+1)),this.key&&t.push(this.key.toString(e+1)),t.push(this.type.toString(e+1)),t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{occurrence:this.occurrence?.toJSON(),key:this.key?.toJSON(),type:this.type.toJSON()})}}class tt extends Ye{groupChoices;constructor(e){super(),this.groupChoices=e}getChildren(){return this.groupChoices}_serialize(e){return this.groupChoices.map((t=>t.serialize(e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.groupChoices)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{groupChoices:this.groupChoices.map((e=>e.toJSON()))})}}let nt=class extends tt{},rt=class extends tt{};class st extends Ye{groupEntries;constructor(e){super(),this.groupEntries=e}getChildren(){return this.groupEntries}_serialize(e){return this.groupEntries.map((t=>t.serialize(e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.groupEntries)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{groupEntries:this.groupEntries.map((e=>e.toJSON()))})}}class it extends Ye{numericPart;typePart;constructor(e=null,t=null){super(),this.numericPart=e,this.typePart=t}getChildren(){return this.typePart?[this.typePart]:[]}_serialize(e){let t=this._serializeToken(new Je(He.HASH,""),e);return t+=this._serializeToken(this.numericPart,e),t+=this.typePart?this.typePart.serialize(e):"",t}toString(e=0){const t=[super.toString(e)+" (#)"];return this.numericPart&&t.push(this.numericPart.toString(e+1)),this.typePart&&t.push(this.typePart.toString(e+1)),t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{numericPart:this.numericPart?.toJSON(),typePart:this.typePart?.toJSON()})}}class ot extends Ye{n;m;tokens;constructor(e,t,n=[]){super(),this.n=e,this.m=t,this.tokens=n}_serialize(e){return this.tokens.map((t=>this._serializeToken(t,e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.tokens)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{n:this.n,m:this.m,tokens:this.tokens.map((e=>e.toJSON()))})}}class at extends Ye{value;type;constructor(e,t){super(),this.value=e,this.type=t}_serialize(e){let t="",n="";return"text"===this.type?(t='"',n='"'):"bytes"===this.type?(t="'",n="'"):"hex"===this.type?(t="h'",n="'"):"base64"===this.type&&(t="b64'",n="'"),e?e.serializeValue(t,this.value,n,this):t+this.value+n}toString(e=0){return" ".repeat(e)+`${this.constructor.name} (${this.type}): ${this.value}`}toJSON(){return Object.assign(super.toJSON(),{value:this.value,type:this.type})}}class ct extends Ye{name;unwrapped;parameters;constructor(e,t,n=null){super(),this.name=e,this.unwrapped=t,this.parameters=n}getChildren(){return this.parameters?[this.parameters]:[]}_prestr(e){return this._serializeToken(this.unwrapped,e)}_serialize(e){let t="";return e?t+=e.serializeName(this.name,this):t=this.name,this.parameters&&(t+=this.parameters.serialize(e)),t}toString(e=0){const t=[super.toString(e)," ".repeat(e+1)+this.name];return this.unwrapped&&t.push(this.unwrapped.toString(e+1)),this.parameters&&t.push(this.parameters.toString(e+1)),t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{name:this.name,unwrapped:this.unwrapped?.toJSON(),parameters:this.parameters?.toJSON()})}}class lt extends Ye{target;constructor(e){super(),this.target=e}getChildren(){return[this.target]}_serialize(e){let t=this._serializeToken(new Je(He.AMPERSAND,""),e);return t+=this.target.serialize(e),t}toString(e=0){return[super.toString(e)+" (&)",this.target.toString(e+1)].join("\n")}toJSON(){return Object.assign(super.toJSON(),{target:this.target.toJSON()})}}class ut extends Ye{min;max;rangeop;constructor(e,t,n){super(),this.min=e,this.max=t,this.rangeop=n}getChildren(){return[this.min,this.max]}_serialize(e){let t=this.min.serialize(e);return t+=this._serializeToken(this.rangeop,e),t+=this.max.serialize(e),t}toString(e=0){return[super.toString(e),this.min.toString(e+1),this.rangeop.toString(e+1),this.max.toString(e+1)].join("\n")}toJSON(){return Object.assign(super.toJSON(),{min:this.min.toJSON(),max:this.max.toJSON(),rangeop:this.rangeop.toJSON()})}}class dt extends Ye{type;name;controller;constructor(e,t,n){super(),this.type=e,this.name=t,this.controller=n}getChildren(){return[this.type,this.controller]}_serialize(e){let t=this.type.serialize(e);return t+=this._serializeToken(this.name,e),t+=this.controller.serialize(e),t}toString(e=0){return[super.toString(e),this.type.toString(e+1),this.name.toString(e+1),this.controller.toString(e+1)].join("\n")}toJSON(){return Object.assign(super.toJSON(),{type:this.type.toJSON(),name:this.name.toJSON(),controller:this.controller.toJSON()})}}class pt extends Ke{type;hasCut;hasColon;tokens;constructor(e,t,n,r=[]){super(),this.type=e,this.hasCut=t,this.hasColon=n,this.tokens=r}getChildren(){return[this.type]}_serialize(e){let t=this.type.serialize(e);return t+=this.tokens.map((t=>this._serializeToken(t,e))).join(""),t}toString(e=0){const t=[super.toString(e),this.type.toString(e+1)];for(const n of this.tokens)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{type:this.type.toJSON(),hasCut:this.hasCut,hasColon:this.hasColon,tokens:this.tokens.map((e=>e.toJSON()))})}}class ht extends Ye{types;constructor(e){super(),this.types=e}getChildren(){return this.types}_serialize(e){return this.types.map((t=>t.serialize(e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.types)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{types:this.types.map((e=>e.toJSON()))})}}class ft extends Ze{parameters;constructor(e){super(),this.parameters=e}getChildren(){return this.parameters}_serialize(e){return this.parameters.map((t=>t.serialize(e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.parameters)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{parameters:this.parameters.map((e=>e.toJSON()))})}}class mt extends Ze{parameters;constructor(e){super(),this.parameters=e}getChildren(){return this.parameters}_serialize(e){return this.parameters.map((t=>t.serialize(e))).join("")}toString(e=0){const t=[super.toString(e)];for(const n of this.parameters)t.push(n.toString(e+1));return t.join("\n")}toJSON(){return Object.assign(super.toJSON(),{parameters:this.parameters.map((e=>e.toJSON()))})}}class gt extends Error{constructor(e="A parsing error occurred"){super(e),this.name="ParserError"}}function bt(e){return function(e){return"a"<=e&&e<="z"||"A"<=e&&e<="Z"}(e)||"@_$".includes(e)}function yt(e){return e.length>0&&"123456789".includes(e[0])&&[...e].every((e=>"0123456789".includes(e)))}class wt{line;position;constructor(e=-1,t=-1){this.line=e,this.position=t}}class vt{input;position=0;readPosition=0;ch=0;constructor(e){this.input=e,this.readChar()}readChar(){this.readPosition>=this.input.length?this.ch=0:this.ch=this.input.charCodeAt(this.readPosition),this.position=this.readPosition,this.readPosition+=1}_peekAtNextChar(){return this.readPosition>=this.input.length?"":this.input[this.readPosition]}getLocation(){const e=this.position-2,t=this.input.split("\n");let n=0;for(let r=0;r<t.length;r++){const s=t[r].length;if(n+=s+1,n>e){return new wt(r,e-(n-s)+1)}}return new wt(0,0)}getLine(e){return this.input.split("\n")[e]}getLocationInfo(){const e=this.getLocation();let t=(e.line>=0?this.getLine(e.line):"")+"\n";return t+=" ".repeat(e.position>=0?e.position:0)+"^\n",t+=" ".repeat(e.position>=0?e.position:0)+"|\n",t}nextToken(){const e=this._readComments();let t="";e.length>0&&""===e[e.length-1].literal&&(t=e[e.length-1].whitespace,e.pop());let n=new Je(He.ILLEGAL,"");const r=String.fromCharCode(this.ch);let s=!1;if("="===r)">"===this._peekAtNextChar()?(this.readChar(),n=new Je(He.ARROWMAP,"",e,t)):n=new Je(He.ASSIGN,"",e,t);else if("("===r)n=new Je(He.LPAREN,"",e,t);else if(")"===r)n=new Je(He.RPAREN,"",e,t);else if("{"===r)n=new Je(He.LBRACE,"",e,t);else if("}"===r)n=new Je(He.RBRACE,"",e,t);else if("["===r)n=new Je(He.LBRACK,"",e,t);else if("]"===r)n=new Je(He.RBRACK,"",e,t);else if("<"===r)n=new Je(He.LT,"",e,t);else if(">"===r)n=new Je(He.GT,"",e,t);else if("+"===r)n=new Je(He.PLUS,"",e,t);else if(","===r)n=new Je(He.COMMA,"",e,t);else if("."===r)"."===this._peekAtNextChar()?(this.readChar(),n=new Je(He.INCLRANGE,"",e,t),"."===this._peekAtNextChar()&&(this.readChar(),n=new Je(He.EXCLRANGE,"",e,t))):bt(this._peekAtNextChar())&&(this.readChar(),n=new Je(He.CTLOP,this._readIdentifier(),e,t),s=!0);else if(":"===r)n=new Je(He.COLON,"",e,t);else if("?"===r)n=new Je(He.QUEST,"",e,t);else if("/"===r)"/"===this._peekAtNextChar()?(this.readChar(),n=new Je(He.GCHOICE,"",e,t),"="===this._peekAtNextChar()&&(this.readChar(),n=new Je(He.GCHOICEALT,"",e,t))):"="===this._peekAtNextChar()?(this.readChar(),n=new Je(He.TCHOICEALT,"",e,t)):n=new Je(He.TCHOICE,"",e,t);else if("*"===r)n=new Je(He.ASTERISK,"",e,t);else if("^"===r)n=new Je(He.CARET,"",e,t);else if("#"===r)n=new Je(He.HASH,"",e,t);else if("~"===r)n=new Je(He.TILDE,"",e,t);else if('"'===r)n=new Je(He.STRING,this._readString(),e,t);else if("'"===r)n=new Je(He.BYTES,this._readBytesString(),e,t);else if(";"===r)n=new Je(He.COMMENT,this._readComment(),e,t),s=!0;else if("&"===r)n=new Je(He.AMPERSAND,"",e,t);else if(0===this.ch)n=new Je(He.EOF,"",e,t);else if(bt(r))"b"===r&&"6"===this._peekAtNextChar()?(this.readChar(),this.readChar(),"4"===String.fromCharCode(this.ch)&&"'"===this._peekAtNextChar()?(this.readChar(),n=new Je(He.BASE64,this._readBytesString(),e,t)):(n=new Je(He.IDENT,this._readIdentifier("b6"),e,t),s=!0)):"h"===r&&"'"===this._peekAtNextChar()?(this.readChar(),n=new Je(He.HEX,this._readBytesString(),e,t)):(n=new Je(He.IDENT,this._readIdentifier(),e,t),s=!0);else if(this._isDigit(r)||"-"===r){const r=this._readNumberOrFloat();n=new Je(r.includes(".")?He.FLOAT:He.NUMBER,r,e,t),s=!0}return s||this.readChar(),n}_isDigit(e){return e>="0"&&e<="9"}_readIdentifier(e=""){const t=this.position;if(""===e&&!bt(String.fromCharCode(this.ch)))throw this._tokenError("expected identifier, got nothing");for(;bt(String.fromCharCode(this.ch))||this._isDigit(String.fromCharCode(this.ch))||"-. ".includes(String.fromCharCode(this.ch));){if(" "===String.fromCharCode(this.ch))break;this.readChar()}const n=e+this.input.substring(t,this.position);if(n.endsWith("-")||n.endsWith("."))throw this._tokenError(`identifier cannot end with \`-\` or \`.\`, got \`${n}\``);return n}_readComment(){const e=this.position;for(;this.ch&&"\n"!==String.fromCharCode(this.ch);)this.readChar();return this.input.substring(e,this.position)}_readString(){const e=this.position;for(this.readChar();'"'!==String.fromCharCode(this.ch);)if(this.ch>=32&&this.ch<=33||this.ch>=35&&this.ch<=91||this.ch>=93&&this.ch<=126||this.ch>=128&&this.ch<=1114109)this.readChar();else if("\\"===String.fromCharCode(this.ch)){if(this.readChar(),!(this.ch>=32&&this.ch<=126||this.ch>=128&&this.ch<=1114109))throw this._tokenError(`invalid escape character in text string \`${this.input.substring(e+1,this.position)}\``);this.readChar()}else if(10===this.ch)this.readChar();else{if(13!==this.ch||10!==this._peekAtNextChar().charCodeAt(0))throw this._tokenError(`invalid text string \`${this.input.substring(e+1,this.position)}\``);this.readChar(),this.readChar()}return this.input.substring(e+1,this.position)}_readBytesString(){const e=this.position;for(this.readChar();"'"!==String.fromCharCode(this.ch);)if(this.ch>=32&&this.ch<=38||this.ch>=40&&this.ch<=91||this.ch>=93&&this.ch<=1114109)this.readChar();else if("\\"===String.fromCharCode(this.ch)){if(this.readChar(),!(this.ch>=32&&this.ch<=126||this.ch>=128&&this.ch<=1114109))throw this._tokenError(`invalid escape character in byte string \`${this.input.substring(e+1,this.position)}\``);this.readChar()}else if(10===this.ch)this.readChar();else{if(13!==this.ch||10!==this._peekAtNextChar().charCodeAt(0))throw this._tokenError(`invalid byte string \`${this.input.substring(e+1,this.position)}\``);this.readChar(),this.readChar()}return this.input.substring(e+1,this.position)}_readNumberOrFloat(){const e=this.position;let t=!1;if("-"===String.fromCharCode(this.ch)&&this.readChar(),"0"===String.fromCharCode(this.ch)){if(this.readChar(),"x"===String.fromCharCode(this.ch)){if(this.readChar(),!"0123456789ABCDEF".includes(String.fromCharCode(this.ch).toUpperCase()))throw this._tokenError(`expected hex number to contain hex digits, got \`${this.input.substring(e,this.position)}\``);for(;"0123456789ABCDEF".includes(String.fromCharCode(this.ch).toUpperCase());)this.readChar();if("."===String.fromCharCode(this.ch)){if(t=!0,"."===this._peekAtNextChar())return this.input.substring(e,this.position);for(this.readChar();"0123456789ABCDEF".includes(String.fromCharCode(this.ch).toUpperCase());)this.readChar()}if(t&&"p"!==String.fromCharCode(this.ch))throw this._tokenError(`expected hex number with fraction to have an exponent, got \`${this.input.substring(e,this.position)}\``);if("p"===String.fromCharCode(this.ch)){if(this.readChar(),"+-".includes(String.fromCharCode(this.ch))&&this.readChar(),!this._isDigit(String.fromCharCode(this.ch)))throw this._tokenError(`expected hex number with exponent to have a digit in exponent, got \`${this.input.substring(e,this.position)}\``);for(;this._isDigit(String.fromCharCode(this.ch));)this.readChar()}}else if("b"===String.fromCharCode(this.ch)){if(this.readChar(),!"01".includes(String.fromCharCode(this.ch)))throw this._tokenError(`expected binary number to have binary digits, got \`${this.input.substring(e,this.position)}\``);for(;"01".includes(String.fromCharCode(this.ch));)this.readChar()}else if("."===String.fromCharCode(this.ch)){if("."===this._peekAtNextChar())return this.input.substring(e,this.position);if(this.readChar(),!this._isDigit(String.fromCharCode(this.ch)))throw this._tokenError(`expected number with fraction to have digits in fraction part, got \`${this.input.substring(e,this.position)}\``);for(;this._isDigit(String.fromCharCode(this.ch));)this.readChar();if("e"===String.fromCharCode(this.ch)){if(this.readChar(),"+-".includes(String.fromCharCode(this.ch))&&this.readChar(),!this._isDigit(String.fromCharCode(this.ch)))throw this._tokenError(`expected number with exponent to have digits in exponent, got \`${this.input.substring(e,this.position)}\``);for(;this._isDigit(String.fromCharCode(this.ch));)this.readChar()}}}else{for(;this._isDigit(String.fromCharCode(this.ch));)this.readChar();if("."===String.fromCharCode(this.ch)){if("."===this._peekAtNextChar())return this.input.substring(e,this.position);if(this.readChar(),!this._isDigit(String.fromCharCode(this.ch)))throw this._tokenError(`expected number with fraction to have digits in fraction part, got \`${this.input.substring(e,this.position)}\``);for(;this._isDigit(String.fromCharCode(this.ch));)this.readChar()}if("e"===String.fromCharCode(this.ch)){if(this.readChar(),"+-".includes(String.fromCharCode(this.ch))&&this.readChar(),!this._isDigit(String.fromCharCode(this.ch)))throw this._tokenError(`expected number with exponent to have digits in exponent, got \`${this.input.substring(e,this.position)}\``);for(;this._isDigit(String.fromCharCode(this.ch));)this.readChar()}}return this.input.substring(e,this.position)}_readWhitespace(){const e=this.position;for(;" \t\n\r".includes(String.fromCharCode(this.ch));)this.readChar();return this.input.substring(e,this.position)}_readComments(){const e=[];for(;;){const t=this._readWhitespace();if(";"!==String.fromCharCode(this.ch)){if(""!==t){const n=new Je(He.COMMENT,"",[],t);e.push(n)}break}const n=new Je(He.COMMENT,this._readComment(),[],t);e.push(n)}return e}_tokenError(e){const t=this.getLocation();return new gt(`CDDL token error - line ${t.line+1}: ${e}`)}}const kt=new Je(He.ILLEGAL,"");const $t=/^[!#$%&'*+-.^`|~\w]+$/,xt=/[\u000A\u000D\u0009\u0020]/u,Ct=/^[\u0009\u{0020}-\{u0073}\u{0080}-\u{00FF}]+$/u;function St(e,t,n){(t&&""!==t&&!e.has(t)&&Ct.test(n)||null===n)&&e.set(t.toLowerCase(),n)}function _t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Tt={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function Rt(e){Tt=e}var Et={exec:()=>null};function Lt(e,t=""){let n="string"==typeof e?e:e.source,r={replace:(e,t)=>{let s="string"==typeof t?t:t.source;return s=s.replace(Pt.caret,"$1"),n=n.replace(e,s),r},getRegex:()=>new RegExp(n,t)};return r}var At=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),Pt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Nt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,It=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Dt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ot=Lt(Dt).replace(/bull/g,It).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),jt=Lt(Dt).replace(/bull/g,It).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),zt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Mt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Ut=Lt(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Mt).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),qt=Lt(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,It).getRegex(),Wt="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ft=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Bt=Lt("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",Ft).replace("tag",Wt).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ht=Lt(zt).replace("hr",Nt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Wt).getRegex(),Gt={blockquote:Lt(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Ht).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:Ut,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:Nt,html:Bt,lheading:Ot,list:qt,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:Ht,table:Et,text:/^[^\n]+/},Vt=Lt("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Nt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Wt).getRegex(),Jt={...Gt,lheading:jt,table:Vt,paragraph:Lt(zt).replace("hr",Nt).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Vt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",Wt).getRegex()},Kt={...Gt,html:Lt("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Ft).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Et,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Lt(zt).replace("hr",Nt).replace("heading"," *#{1,6} *[^\n]").replace("lheading",Ot).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Zt=/^( {2,}|\\)\n(?!\s*$)/,Yt=/[\p{P}\p{S}]/u,Xt=/[\s\p{P}\p{S}]/u,Qt=/[^\s\p{P}\p{S}]/u,en=Lt(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Xt).getRegex(),tn=/(?!~)[\p{P}\p{S}]/u,nn=Lt(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",At?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),rn=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,sn=Lt(rn,"u").replace(/punct/g,Yt).getRegex(),on=Lt(rn,"u").replace(/punct/g,tn).getRegex(),an="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",cn=Lt(an,"gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Xt).replace(/punct/g,Yt).getRegex(),ln=Lt(an,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,tn).getRegex(),un=Lt("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Xt).replace(/punct/g,Yt).getRegex(),dn=Lt(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Yt).getRegex(),pn=Lt("^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)","gu").replace(/notPunctSpace/g,Qt).replace(/punctSpace/g,Xt).replace(/punct/g,Yt).getRegex(),hn=Lt(/\\(punct)/,"gu").replace(/punct/g,Yt).getRegex(),fn=Lt(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),mn=Lt(Ft).replace("(?:--\x3e|$)","--\x3e").getRegex(),gn=Lt("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",mn).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),bn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,yn=Lt(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",bn).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),wn=Lt(/^!?\[(label)\]\[(ref)\]/).replace("label",bn).replace("ref",Mt).getRegex(),vn=Lt(/^!?\[(ref)\](?:\[\])?/).replace("ref",Mt).getRegex(),kn=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,$n={_backpedal:Et,anyPunctuation:hn,autolink:fn,blockSkip:nn,br:Zt,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:Et,delLDelim:Et,delRDelim:Et,emStrongLDelim:sn,emStrongRDelimAst:cn,emStrongRDelimUnd:un,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:yn,nolink:vn,punctuation:en,reflink:wn,reflinkSearch:Lt("reflink|nolink(?!\\()","g").replace("reflink",wn).replace("nolink",vn).getRegex(),tag:gn,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,url:Et},xn={...$n,link:Lt(/^!?\[(label)\]\((.*?)\)/).replace("label",bn).getRegex(),reflink:Lt(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",bn).getRegex()},Cn={...$n,emStrongRDelimAst:ln,emStrongLDelim:on,delLDelim:dn,delRDelim:pn,url:Lt(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",kn).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:Lt(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",kn).getRegex()},Sn={...Cn,br:Lt(Zt).replace("{2,}","*").getRegex(),text:Lt(Cn.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},_n={normal:Gt,gfm:Jt,pedantic:Kt},Tn={normal:$n,gfm:Cn,breaks:Sn,pedantic:xn},Rn={"&":"&","<":"<",">":">",'"':""","'":"'"},En=e=>Rn[e];function Ln(e,t){if(t){if(Pt.escapeTest.test(e))return e.replace(Pt.escapeReplace,En)}else if(Pt.escapeTestNoEncode.test(e))return e.replace(Pt.escapeReplaceNoEncode,En);return e}function An(e){try{e=encodeURI(e).replace(Pt.percentDecode,"%")}catch{return null}return e}function Pn(e,t){let n=e.replace(Pt.findPipe,((e,t,n)=>{let r=!1,s=t;for(;--s>=0&&"\\"===n[s];)r=!r;return r?"|":" |"})).split(Pt.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(Pt.slashPipe,"|");return n}function Nn(e,t,n){let r=e.length;if(0===r)return"";let s=0;for(;s<r;){if(e.charAt(r-s-1)!==t)break;s++}return e.slice(0,r-s)}function In(e){let t=e.split("\n"),n=t.length-1;for(;n>=0&&Pt.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join("\n")}function Dn(e,t=0){let n=t,r="";for(let t of e)if("\t"===t){let e=4-n%4;r+=" ".repeat(e),n+=e}else r+=t,n++;return r}function On(e,t,n,r,s){let i=t.href,o=t.title||null,a=e[1].replace(s.other.outputLinkReplace,"$1");r.state.inLink=!0;let c={type:"!"===e[0].charAt(0)?"image":"link",raw:n,href:i,title:o,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,c}var jn=class{options;rules;lexer;constructor(e){this.options=e||Tt}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=this.options.pedantic?t[0]:In(t[0]),n=e.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e,codeBlockStyle:"indented",text:n}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(null===r)return t;let s=r[1];return t.split("\n").map((e=>{let t=e.match(n.other.beginningSpace);if(null===t)return e;let[r]=t;return r.length>=s.length?e.slice(s.length):e})).join("\n")}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=Nn(e,"#");(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:"heading",raw:Nn(t[0],"\n"),depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Nn(t[0],"\n")}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=Nn(t[0],"\n").split("\n"),n="",r="",s=[];for(;e.length>0;){let t,i=!1,o=[];for(t=0;t<e.length;t++)if(this.rules.other.blockquoteStart.test(e[t]))o.push(e[t]),i=!0;else{if(i)break;o.push(e[t])}e=e.slice(t);let a=o.join("\n"),c=a.replace(this.rules.other.blockquoteSetextReplace,"\n $1").replace(this.rules.other.blockquoteSetextReplace2,"");n=n?`${n}\n${a}`:a,r=r?`${r}\n${c}`:c;let l=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=l,0===e.length)break;let u=s.at(-1);if("code"===u?.type)break;if("blockquote"===u?.type){let t=u,i=t.raw+"\n"+e.join("\n"),o=this.blockquote(i);s[s.length-1]=o,n=n.substring(0,n.length-t.raw.length)+o.raw,r=r.substring(0,r.length-t.text.length)+o.text;break}if("list"!==u?.type);else{let t=u,i=t.raw+"\n"+e.join("\n"),o=this.list(i);s[s.length-1]=o,n=n.substring(0,n.length-u.raw.length)+o.raw,r=r.substring(0,r.length-t.raw.length)+o.raw,e=i.substring(s.at(-1).raw.length).split("\n")}}return{type:"blockquote",raw:n,tokens:s,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,s={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r="",a="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let c=Dn(t[2].split("\n",1)[0],t[1].length),l=e.split("\n",1)[0],u=!c.trim(),d=0;if(this.options.pedantic?(d=2,a=c.trimStart()):u?d=t[1].length+1:(d=c.search(this.rules.other.nonSpaceChar),d=d>4?1:d,a=c.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(l)&&(r+=l+"\n",e=e.substring(l.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),s=this.rules.other.fencesBeginRegex(d),i=this.rules.other.headingBeginRegex(d),o=this.rules.other.htmlBeginRegex(d),p=this.rules.other.blockquoteBeginRegex(d);for(;e;){let h,f=e.split("\n",1)[0];if(l=f,this.options.pedantic?(l=l.replace(this.rules.other.listReplaceNesting," "),h=l):h=l.replace(this.rules.other.tabCharGlobal," "),s.test(l)||i.test(l)||o.test(l)||p.test(l)||t.test(l)||n.test(l))break;if(h.search(this.rules.other.nonSpaceChar)>=d||!l.trim())a+="\n"+h.slice(d);else{if(u||c.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||s.test(c)||i.test(c)||n.test(c))break;a+="\n"+l}u=!l.trim(),r+=f+"\n",e=e.substring(f.length+1),c=h.slice(d)}}s.loose||(o?s.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0)),s.items.push({type:"list_item",raw:r,task:!!this.options.gfm&&this.rules.other.listIsTask.test(a),loose:!1,text:a,tokens:[]}),s.raw+=r}let a=s.items.at(-1);if(!a)return;a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd(),s.raw=s.raw.trimEnd();for(let e of s.items){if(this.lexer.state.top=!1,e.tokens=this.lexer.blockTokens(e.text,[]),e.task){if(e.text=e.text.replace(this.rules.other.listReplaceTask,""),"text"===e.tokens[0]?.type||"paragraph"===e.tokens[0]?.type){e.tokens[0].raw=e.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),e.tokens[0].text=e.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let e=this.lexer.inlineQueue.length-1;e>=0;e--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[e].src)){this.lexer.inlineQueue[e].src=this.lexer.inlineQueue[e].src.replace(this.rules.other.listReplaceTask,"");break}}let t=this.rules.other.listTaskCheckbox.exec(e.raw);if(t){let n={type:"checkbox",raw:t[0]+" ",checked:"[ ]"!==t[0]};e.checked=n.checked,s.loose?e.tokens[0]&&["paragraph","text"].includes(e.tokens[0].type)&&"tokens"in e.tokens[0]&&e.tokens[0].tokens?(e.tokens[0].raw=n.raw+e.tokens[0].raw,e.tokens[0].text=n.raw+e.tokens[0].text,e.tokens[0].tokens.unshift(n)):e.tokens.unshift({type:"paragraph",raw:n.raw,text:n.raw,tokens:[n]}):e.tokens.unshift(n)}}if(!s.loose){let t=e.tokens.filter((e=>"space"===e.type)),n=t.length>0&&t.some((e=>this.rules.other.anyLine.test(e.raw)));s.loose=n}}if(s.loose)for(let e of s.items){e.loose=!0;for(let t of e.tokens)"text"===t.type&&(t.type="paragraph")}return s}}html(e){let t=this.rules.block.html.exec(e);if(t){let e=In(t[0]);return{type:"html",block:!0,raw:e,pre:"pre"===t[1]||"script"===t[1]||"style"===t[1],text:e}}}def(e){let t=this.rules.block.def.exec(e);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),n=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:Nn(t[0],"\n"),href:n,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Pn(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split("\n"):[],i={type:"table",raw:Nn(t[0],"\n"),header:[],align:[],rows:[]};if(n.length===r.length){for(let e of r)this.rules.other.tableAlignRight.test(e)?i.align.push("right"):this.rules.other.tableAlignCenter.test(e)?i.align.push("center"):this.rules.other.tableAlignLeft.test(e)?i.align.push("left"):i.align.push(null);for(let e=0;e<n.length;e++)i.header.push({text:n[e],tokens:this.lexer.inline(n[e]),header:!0,align:i.align[e]});for(let e of s)i.rows.push(Pn(e,i.header.length).map(((e,t)=>({text:e,tokens:this.lexer.inline(e),header:!1,align:i.align[t]}))));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let e=t[1].trim();return{type:"heading",raw:Nn(t[0],"\n"),depth:"="===t[2].charAt(0)?1:2,text:e,tokens:this.lexer.inline(e)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=Nn(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let r=0;r<e.length;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}(t[2],"()");if(-2===e)return;if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),On(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return On(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(r&&(r[1]||r[2]||r[3]||r[4])&&(!r[4]||!n.match(this.rules.other.unicodeAlphaNumeric))&&(!r[1]&&!r[3]||!n||this.rules.inline.punctuation.exec(n))){let n,s,i=[...r[0]].length-1,o=i,a=0,c="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+i);null!==(r=c.exec(t));){if(n=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!n)continue;if(s=[...n].length,r[3]||r[4]){o+=s;continue}if((r[5]||r[6])&&i%3&&!((i+s)%3)){a+=s;continue}if(o-=s,o>0)continue;s=Math.min(s,s+o+a);let t=[...r[0]][0].length,c=e.slice(0,i+r.index+t+s);if(Math.min(i,s)%2){let e=c.slice(1,-1);return{type:"em",raw:c,text:e,tokens:this.lexer.inlineTokens(e)}}let l=c.slice(2,-2);return{type:"strong",raw:c,text:l,tokens:this.lexer.inlineTokens(l)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let n,s,i=[...r[0]].length-1,o=i,a=this.rules.inline.delRDelim;for(a.lastIndex=0,t=t.slice(-1*e.length+i);null!==(r=a.exec(t));){if(n=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!n||(s=[...n].length,s!==i))continue;if(r[3]||r[4]){o+=s;continue}if(o-=s,o>0)continue;s=Math.min(s,s+o);let t=[...r[0]][0].length,a=e.slice(0,i+r.index+t+s),c=a.slice(i,-i);return{type:"del",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=t[1],n="mailto:"+e):(e=t[1],n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=t[0],n="mailto:"+e;else{let r;do{r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(r!==t[0]);e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},zn=class e{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||Tt,this.options.tokenizer=this.options.tokenizer||new jn,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:Pt,block:_n.normal,inline:Tn.normal};this.options.pedantic?(t.block=_n.pedantic,t.inline=Tn.pedantic):this.options.gfm&&(t.block=_n.gfm,this.options.breaks?t.inline=Tn.breaks:t.inline=Tn.gfm),this.tokenizer.rules=t}static get rules(){return{block:_n,inline:Tn}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(Pt.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let t=this.inlineQueue[e];this.inlineTokens(t.src,t.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(Pt.tabCharGlobal," ").replace(Pt.spaceLine,""));let r=1/0;for(;e;){if(!(e.length<r)){this.infiniteLoopError(e.charCodeAt(0));break}let s;if(r=e.length,this.options.extensions?.block?.some((n=>!!(s=n.call({lexer:this},e,t))&&(e=e.substring(s.raw.length),t.push(s),!0))))continue;if(s=this.tokenizer.space(e)){e=e.substring(s.raw.length);let n=t.at(-1);1===s.raw.length&&void 0!==n?n.raw+="\n":t.push(s);continue}if(s=this.tokenizer.code(e)){e=e.substring(s.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+s.raw,n.text+="\n"+s.text,this.inlineQueue.at(-1).src=n.text):t.push(s);continue}if(s=this.tokenizer.fences(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.heading(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.hr(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.blockquote(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.list(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.html(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.def(e)){e=e.substring(s.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+s.raw,n.text+="\n"+s.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[s.tag]||(this.tokens.links[s.tag]={href:s.href,title:s.title},t.push(s));continue}if(s=this.tokenizer.table(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.lheading(e)){e=e.substring(s.raw.length),t.push(s);continue}let i=e;if(this.options.extensions?.startBlock){let t,n=1/0,r=e.slice(1);this.options.extensions.startBlock.forEach((e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))})),n<1/0&&n>=0&&(i=e.substring(0,n+1))}if(this.state.top&&(s=this.tokenizer.paragraph(i))){let r=t.at(-1);n&&"paragraph"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+s.raw,r.text+="\n"+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):t.push(s),n=i.length!==e.length,e=e.substring(s.raw.length)}else if(s=this.tokenizer.text(e)){e=e.substring(s.raw.length);let n=t.at(-1);"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+s.raw,n.text+="\n"+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(s)}else if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n,r=e,s=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!==(s=this.tokenizer.rules.inline.reflinkSearch.exec(r));)e.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!==(s=this.tokenizer.rules.inline.anyPunctuation.exec(r));)r=r.slice(0,s.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!==(s=this.tokenizer.rules.inline.blockSkip.exec(r));)n=s[2]?s[2].length:0,r=r.slice(0,s.index+n)+"["+"a".repeat(s[0].length-n-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let i=!1,o="",a=1/0;for(;e;){if(!(e.length<a)){this.infiniteLoopError(e.charCodeAt(0));break}let n;if(a=e.length,i||(o=""),i=!1,this.options.extensions?.inline?.some((r=>!!(n=r.call({lexer:this},e,t))&&(e=e.substring(n.raw.length),t.push(n),!0))))continue;if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length);let r=t.at(-1);"text"===n.type&&"text"===r?.type?(r.raw+=n.raw,r.text+=n.text):t.push(n);continue}if(n=this.tokenizer.emStrong(e,r,o)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.del(e,r,o)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),t.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),t.push(n);continue}let s=e;if(this.options.extensions?.startInline){let t,n=1/0,r=e.slice(1);this.options.extensions.startInline.forEach((e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))})),n<1/0&&n>=0&&(s=e.substring(0,n+1))}if(n=this.tokenizer.inlineText(s)){e=e.substring(n.raw.length),"_"!==n.raw.slice(-1)&&(o=n.raw.slice(-1)),i=!0;let r=t.at(-1);"text"===r?.type?(r.raw+=n.raw,r.text+=n.text):t.push(n)}else if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t="Infinite loop on byte: "+e;if(!this.options.silent)throw new Error(t);console.error(t)}},Mn=class{options;parser;constructor(e){this.options=e||Tt}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(Pt.notSpaceStart)?.[0],s=e.replace(Pt.endingNewline,"")+"\n";return r?'<pre><code class="language-'+Ln(r)+'">'+(n?s:Ln(s,!0))+"</code></pre>\n":"<pre><code>"+(n?s:Ln(s,!0))+"</code></pre>\n"}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return"<hr>\n"}list(e){let t=e.ordered,n=e.start,r="";for(let t=0;t<e.items.length;t++){let n=e.items[t];r+=this.listitem(n)}let s=t?"ol":"ul";return"<"+s+(t&&1!==n?' start="'+n+'"':"")+">\n"+r+"</"+s+">\n"}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t="",n="";for(let t=0;t<e.header.length;t++)n+=this.tablecell(e.header[t]);t+=this.tablerow({text:n});let r="";for(let t=0;t<e.rows.length;t++){let s=e.rows[t];n="";for(let e=0;e<s.length;e++)n+=this.tablecell(s[e]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),"<table>\n<thead>\n"+t+"</thead>\n"+r+"</table>\n"}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Ln(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),s=An(e);if(null===s)return r;let i='<a href="'+(e=s)+'"';return t&&(i+=' title="'+Ln(t)+'"'),i+=">"+r+"</a>",i}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=An(e);if(null===s)return Ln(n);let i=`<img src="${e=s}" alt="${Ln(n)}"`;return t&&(i+=` title="${Ln(t)}"`),i+=">",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Ln(e.text)}},Un=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},qn=class e{options;renderer;textRenderer;constructor(e){this.options=e||Tt,this.options.renderer=this.options.renderer||new Mn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Un}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t="";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(!1!==n||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(e.type)){t+=n||"";continue}}let s=r;switch(s.type){case"space":t+=this.renderer.space(s);break;case"hr":t+=this.renderer.hr(s);break;case"heading":t+=this.renderer.heading(s);break;case"code":t+=this.renderer.code(s);break;case"table":t+=this.renderer.table(s);break;case"blockquote":t+=this.renderer.blockquote(s);break;case"list":t+=this.renderer.list(s);break;case"checkbox":t+=this.renderer.checkbox(s);break;case"html":t+=this.renderer.html(s);break;case"def":t+=this.renderer.def(s);break;case"paragraph":t+=this.renderer.paragraph(s);break;case"text":t+=this.renderer.text(s);break;default:{let e='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n="";for(let r=0;r<e.length;r++){let s=e[r];if(this.options.extensions?.renderers?.[s.type]){let e=this.options.extensions.renderers[s.type].call({parser:this},s);if(!1!==e||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){n+=e||"";continue}}let i=s;switch(i.type){case"escape":case"text":n+=t.text(i);break;case"html":n+=t.html(i);break;case"link":n+=t.link(i);break;case"image":n+=t.image(i);break;case"checkbox":n+=t.checkbox(i);break;case"strong":n+=t.strong(i);break;case"em":n+=t.em(i);break;case"codespan":n+=t.codespan(i);break;case"br":n+=t.br(i);break;case"del":n+=t.del(i);break;default:{let e='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(e),"";throw new Error(e)}}}return n}},Wn=class{options;block;constructor(e){this.options=e||Tt}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?zn.lex:zn.lexInline}provideParser(e=this.block){return e?qn.parse:qn.parseInline}},Fn=new class{defaults={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=qn;Renderer=Mn;TextRenderer=Un;Lexer=zn;Tokenizer=jn;Hooks=Wn;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case"list":{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach((r=>{let s=e[r].flat(1/0);n=n.concat(this.walkTokens(s,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Mn(this.defaults);for(let n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=n,s=e.renderer[r],i=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new jn(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=n,s=e.tokenizer[r],i=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Wn;for(let n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=n,s=e.hooks[r],i=t[r];Wn.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&Wn.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await s.call(t,e);return i.call(t,n)})();let r=s.call(t,e);return i.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await s.apply(t,e);return!1===n&&(n=await i.apply(t,e)),n})();let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return zn.lex(e,t??this.defaults)}parser(e,t){return qn.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},s={...this.defaults,...r},i=this.onError(!!s.silent,!!s.async);if(!0===this.defaults.async&&!1===r.async)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let n=s.hooks?await s.hooks.preprocess(t):t,r=await(s.hooks?await s.hooks.provideLexer(e):e?zn.lex:zn.lexInline)(n,s),i=s.hooks?await s.hooks.processAllTokens(r):r;s.walkTokens&&await Promise.all(this.walkTokens(i,s.walkTokens));let o=await(s.hooks?await s.hooks.provideParser(e):e?qn.parse:qn.parseInline)(i,s);return s.hooks?await s.hooks.postprocess(o):o})().catch(i);try{s.hooks&&(t=s.hooks.preprocess(t));let n=(s.hooks?s.hooks.provideLexer(e):e?zn.lex:zn.lexInline)(t,s);s.hooks&&(n=s.hooks.processAllTokens(n)),s.walkTokens&&this.walkTokens(n,s.walkTokens);let r=(s.hooks?s.hooks.provideParser(e):e?qn.parse:qn.parseInline)(n,s);return s.hooks&&(r=s.hooks.postprocess(r)),r}catch(e){return i(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="<p>An error occurred:</p><pre>"+Ln(n.message+"",!0)+"</pre>";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Bn(e,t){return Fn.parse(e,t)}function Hn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}Bn.options=Bn.setOptions=function(e){return Fn.setOptions(e),Bn.defaults=Fn.defaults,Rt(Bn.defaults),Bn},Bn.getDefaults=_t,Bn.defaults=Tt,Bn.use=function(...e){return Fn.use(...e),Bn.defaults=Fn.defaults,Rt(Bn.defaults),Bn},Bn.walkTokens=function(e,t){return Fn.walkTokens(e,t)},Bn.parseInline=Fn.parseInline,Bn.Parser=qn,Bn.parser=qn.parse,Bn.Renderer=Mn,Bn.TextRenderer=Un,Bn.Lexer=zn,Bn.lexer=zn.lex,Bn.Tokenizer=jn,Bn.Hooks=Wn,Bn.parse=Bn,Bn.options,Bn.setOptions,Bn.use,Bn.walkTokens,Bn.parseInline,qn.parse,zn.lex;var Gn,Vn={exports:{}};var Jn,Kn=(Gn||(Gn=1,Jn=Vn,function(e,t){Jn.exports=t()}(0,(function(){var e=[],t=[],n={},r={},s={};function i(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function o(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function a(e,t){return e.replace(t[0],(function(n,r){var s,i,a=(s=t[1],i=arguments,s.replace(/\$(\d{1,2})/g,(function(e,t){return i[t]||""})));return o(""===n?e[r-1]:n,a)}))}function c(e,t,r){if(!e.length||n.hasOwnProperty(e))return t;for(var s=r.length;s--;){var i=r[s];if(i[0].test(t))return a(t,i)}return t}function l(e,t,n){return function(r){var s=r.toLowerCase();return t.hasOwnProperty(s)?o(r,s):e.hasOwnProperty(s)?o(r,e[s]):c(s,r,n)}}function u(e,t,n,r){return function(r){var s=r.toLowerCase();return!!t.hasOwnProperty(s)||!e.hasOwnProperty(s)&&c(s,s,n)===s}}function d(e,t,n){return(n?t+" ":"")+(1===t?d.singular(e):d.plural(e))}return d.plural=l(s,r,e),d.isPlural=u(s,r,e),d.singular=l(r,s,t),d.isSingular=u(r,s,t),d.addPluralRule=function(t,n){e.push([i(t),n])},d.addSingularRule=function(e,n){t.push([i(e),n])},d.addUncountableRule=function(e){"string"!=typeof e?(d.addPluralRule(e,"$0"),d.addSingularRule(e,"$0")):n[e.toLowerCase()]=!0},d.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),s[e]=t,r[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return d.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return d.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return d.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(d.addUncountableRule),d}))),Vn.exports),Zn=Hn(Kn),Yn=function(e){var t={};try{t.WeakMap=WeakMap}catch(u){t.WeakMap=function(e,t){var n=t.defineProperty,r=t.hasOwnProperty,s=i.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return r.call(e,this._)},s.set=function(e,t){return n(e,this._,{configurable:!0,value:t}),this},i;function i(t){n(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(o,this)}function o(e){this.set(e[0],e[1])}}(Math.random(),Object)}var n=t.WeakMap,r={};try{r.WeakSet=WeakSet}catch(u){!function(e,t){var n=s.prototype;function s(){t(this,"_",{value:"_@ungap/weakmap"+e++})}n.add=function(e){return this.has(e)||t(e,this._,{value:!0,configurable:!0}),this},n.has=function(e){return this.hasOwnProperty.call(e,this._)},n.delete=function(e){return this.has(e)&&delete e[this._]},r.WeakSet=s}(Math.random(),Object.defineProperty)}function s(e,t,n,r,s,i){for(var o=("selectedIndex"in t),a=o;r<s;){var c,l=e(n[r],1);t.insertBefore(l,i),o&&a&&l.selected&&(a=!a,c=t.selectedIndex,t.selectedIndex=c<0?r:d.call(t.querySelectorAll("option"),l)),r++}}function i(e,t){return e==t}function o(e){return e}function a(e,t,n,r,s,i,o){var a=i-s;if(a<1)return-1;for(;a<=n-t;){for(var c=t,l=s;c<n&&l<i&&o(e[c],r[l]);)c++,l++;if(l===i)return t;t=c+1}return-1}function c(e,t,n,r,s){return n<r?e(t[n],0):0<n?e(t[n-1],-0).nextSibling:s}function l(e,t,n,r){for(;n<r;)h(e(t[n++],-1))}var u=r.WeakSet,d=[].indexOf,p=function(e,t,n){for(var r=1,s=t;r<s;){var i=(r+s)/2>>>0;n<e[i]?s=i:r=1+i}return r},h=function(e){return(e.remove||function(){var e=this.parentNode;e&&e.removeChild(this)}).call(e)};function f(e,t,n,r){for(var u=(r=r||{}).compare||i,d=r.node||o,h=null==r.before?null:d(r.before,0),f=t.length,m=f,g=0,b=n.length,y=0;g<m&&y<b&&u(t[g],n[y]);)g++,y++;for(;g<m&&y<b&&u(t[m-1],n[b-1]);)m--,b--;var w=g===m,v=y===b;if(w&&v)return n;if(w&&y<b)return s(d,e,n,y,b,c(d,t,g,f,h)),n;if(v&&g<m)return l(d,t,g,m),n;var k=m-g,$=b-y,x=-1;if(k<$){if(-1<(x=a(n,y,b,t,g,m,u)))return s(d,e,n,y,x,d(t[g],0)),s(d,e,n,x+k,b,c(d,t,m,f,h)),n}else if($<k&&-1<(x=a(t,g,m,n,y,b,u)))return l(d,t,g,x),l(d,t,x+$,m),n;return k<2||$<2?(s(d,e,n,y,b,d(t[g],0)),l(d,t,g,m)):k==$&&function(e,t,n,r,s,i){for(;r<s&&i(n[r],e[t-1]);)r++,t--;return 0===t}(n,b,t,g,m,u)?s(d,e,n,y,b,c(d,t,m,f,h)):function(e,t,n,r,i,o,a,c,u,d,h,f,m){!function(e,t,n,r,i,o,a,c,u){for(var d=[],p=e.length,h=a,f=0;f<p;)switch(e[f++]){case 0:i++,h++;break;case 1:d.push(r[i]),s(t,n,r,i++,i,h<c?t(o[h],0):u);break;case-1:h++}for(f=0;f<p;)switch(e[f++]){case 0:a++;break;case-1:-1<d.indexOf(o[a])?a++:l(t,o,a++,a)}}(function(e,t,n,r,s,i,o){var a,c,l,u,d,p,h=n+i,f=[];e:for(b=0;b<=h;b++){if(50<b)return null;for(p=b-1,u=b?f[b-1]:[0,0],d=f[b]=[],a=-b;a<=b;a+=2){for(c=(l=a===-b||a!==b&&u[p+a-1]<u[p+a+1]?u[p+a+1]:u[p+a-1]+1)-a;l<i&&c<n&&o(r[s+l],e[t+c]);)l++,c++;if(l===i&&c===n)break e;d[b+a]=l}}for(var m=Array(b/2+h/2),g=m.length-1,b=f.length-1;0<=b;b--){for(;0<l&&0<c&&o(r[s+l-1],e[t+c-1]);)m[g--]=0,l--,c--;if(!b)break;p=b-1,u=b?f[b-1]:[0,0],(a=l-c)==-b||a!==b&&u[p+a-1]<u[p+a+1]?(c--,m[g--]=1):(l--,m[g--]=-1)}return m}(n,r,o,a,c,d,f)||function(e,t,n,r,s,i,o,a){var c=0,l=r<a?r:a,u=Array(l++),d=Array(l);d[0]=-1;for(var h=1;h<l;h++)d[h]=o;for(var f=s.slice(i,o),m=t;m<n;m++){var g,b=f.indexOf(e[m]);-1<b&&-1<(c=p(d,l,g=b+i))&&(d[c]=g,u[c]={newi:m,oldi:g,prev:u[c-1]})}for(c=--l,--o;d[c]>o;)--c;l=a+r-c;var y=Array(l),w=u[c];for(--n;w;){for(var v=w.newi,k=w.oldi;v<n;)y[--l]=1,--n;for(;k<o;)y[--l]=-1,--o;y[--l]=0,--n,--o,w=w.prev}for(;t<=n;)y[--l]=1,--n;for(;i<=o;)y[--l]=-1,--o;return y}(n,r,i,o,a,c,u,d),e,t,n,r,a,c,h,m)}(d,e,n,y,b,$,t,g,m,k,f,u,h),n}var m={};function g(t,n){n=n||{};var r=e.createEvent("CustomEvent");return r.initCustomEvent(t,!!n.bubbles,!!n.cancelable,n.detail),r}m.CustomEvent="function"==typeof CustomEvent?CustomEvent:(g["prototype"]=new g("").constructor.prototype,g);var b=m.CustomEvent,y={};try{y.Map=Map}catch(u){y.Map=function(){var e=0,t=[],n=[];return{delete:function(s){var i=r(s);return i&&(t.splice(e,1),n.splice(e,1)),i},forEach:function(e,r){t.forEach((function(t,s){e.call(r,n[s],t,this)}),this)},get:function(t){return r(t)?n[e]:void 0},has:r,set:function(s,i){return n[r(s)?e:t.push(s)-1]=i,this}};function r(n){return-1<(e=t.indexOf(n))}}}var w=y.Map;function v(){return this}function k(e,t){var n="_"+e+"$";return{get:function(){return this[n]||$(this,n,t.call(this,e))},set:function(e){$(this,n,e)}}}var $=function(e,t,n){return Object.defineProperty(e,t,{configurable:!0,value:"function"==typeof n?function(){return e._wire$=n.apply(this,arguments)}:n})[t]};Object.defineProperties(v.prototype,{ELEMENT_NODE:{value:1},nodeType:{value:-1}});var x,C,S,_,T,R,E={},L={},A=[],P=L.hasOwnProperty,N=0,I={attributes:E,define:function(e,t){e.indexOf("-")<0?(e in L||(N=A.push(e)),L[e]=t):E[e]=t},invoke:function(e,t){for(var n=0;n<N;n++){var r=A[n];if(P.call(e,r))return L[r](e[r],t)}}},D=Array.isArray||(C=(x={}.toString).call([]),function(e){return x.call(e)===C}),O=(S=e,_="fragment",R="content"in z(T="template")?function(e){var t=z(T);return t.innerHTML=e,t.content}:function(e){var t,n=z(_),r=z(T);return j(n,/^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(e)?(t=RegExp.$1,r.innerHTML="<table>"+e+"</table>",r.querySelectorAll(t)):(r.innerHTML=e,r.childNodes)),n},function(e,t){return("svg"===t?function(e){var t=z(_),n=z("div");return n.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+e+"</svg>",j(t,n.firstChild.childNodes),t}:R)(e)});function j(e,t){for(var n=t.length;n--;)e.appendChild(t[0])}function z(e){return e===_?S.createDocumentFragment():S.createElementNS("http://www.w3.org/1999/xhtml",e)}var M,U,q,W,F,B,H,G,V,J=(U="appendChild",q="cloneNode",W="createTextNode",B=(F="importNode")in(M=e),(H=M.createDocumentFragment())[U](M[W]("g")),H[U](M[W]("")),(B?M[F](H,!0):H[q](!0)).childNodes.length<2?function e(t,n){for(var r=t[q](),s=t.childNodes||[],i=s.length,o=0;n&&o<i;o++)r[U](e(s[o],n));return r}:B?M[F]:function(e,t){return e[q](!!t)}),K="".trim||function(){return String(this).replace(/^\s+|\s+/g,"")},Z="-"+Math.random().toFixed(6)+"%",Y=!1;try{G=e.createElement("template"),V="tabindex","content"in G&&(G.innerHTML="<p "+V+'="'+Z+'"></p>',G.content.childNodes[0].getAttribute(V)==Z)||(Z="_dt: "+Z.slice(1,-1)+";",Y=!0)}catch(u){}var X="\x3c!--"+Z+"--\x3e",Q=8,ee=1,te=3,ne=/^(?:style|textarea)$/i,re=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i,se=" \\f\\n\\r\\t",ie="[^"+se+"\\/>\"'=]+",oe="["+se+"]+"+ie,ae="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",ce="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+ie.replace("\\/","")+"))?)",le=new RegExp(ae+oe+ce+"+)(["+se+"]*/?>)","g"),ue=new RegExp(ae+oe+ce+"*)(["+se+"]*/>)","g"),de=new RegExp("("+oe+"\\s*=\\s*)(['\"]?)"+X+"\\2","gi");function pe(e,t,n,r){return"<"+t+n.replace(de,he)+r}function he(e,t,n){return t+(n||'"')+Z+(n||'"')}function fe(e,t,n){return re.test(t)?e:"<"+t+n+"></"+t+">"}var me=Y?function(e,t){var n=t.join(" ");return t.slice.call(e,0).sort((function(e,t){return n.indexOf(e.name)<=n.indexOf(t.name)?-1:1}))}:function(e,t){return t.slice.call(e,0)};function ge(t,n,r,s){for(var i=t.childNodes,o=i.length,a=0;a<o;){var c=i[a];switch(c.nodeType){case ee:var l=s.concat(a);!function(t,n,r,s){for(var i,o=t.attributes,a=[],c=[],l=me(o,r),u=l.length,d=0;d<u;){var p=l[d++],h=p.value===Z;if(h||1<(i=p.value.split(X)).length){var f=p.name;if(a.indexOf(f)<0){a.push(f);var m=r.shift().replace(h?/^(?:|[\S\s]*?\s)(\S+?)\s*=\s*('|")?$/:new RegExp("^(?:|[\\S\\s]*?\\s)("+f+")\\s*=\\s*('|\")[\\S\\s]*","i"),"$1"),g=o[m]||o[m.toLowerCase()];if(h)n.push(be(g,s,m,null));else{for(var b=i.length-2;b--;)r.shift();n.push(be(g,s,m,i))}}c.push(p)}}for(var y=((d=0)<(u=c.length)&&Y&&!("ownerSVGElement"in t));d<u;){var w=c[d++];y&&(w.value=""),t.removeAttribute(w.name)}var v=t.nodeName;if(/^script$/i.test(v)){var k=e.createElement(v);for(u=o.length,d=0;d<u;)k.setAttributeNode(o[d++].cloneNode(!0));k.textContent=t.textContent,t.parentNode.replaceChild(k,t)}}(c,n,r,l),ge(c,n,r,l);break;case Q:var u=c.textContent;if(u===Z)r.shift(),n.push(ne.test(t.nodeName)?ye(t,s):{type:"any",node:c,path:s.concat(a)});else switch(u.slice(0,2)){case"/*":if("*/"!==u.slice(-2))break;case"👻":t.removeChild(c),a--,o--}break;case te:ne.test(t.nodeName)&&K.call(c.textContent)===X&&(r.shift(),n.push(ye(t,s)))}a++}}function be(e,t,n,r){return{type:"attr",node:e,path:t,name:n,sparse:r}}function ye(e,t){return{type:"text",node:e,path:t}}var we,ve=(we=new n,{get:function(e){return we.get(e)},set:function(e,t){return we.set(e,t),t}});function ke(e,t){var n=(e.convert||function(e){return e.join(X).replace(ue,fe).replace(le,pe)})(t),r=e.transform;r&&(n=r(n));var s=O(n,e.type);xe(s);var i=[];return ge(s,i,t.slice(0),[]),{content:s,updates:function(n){for(var r=[],s=i.length,o=0,a=0;o<s;){var c=i[o++],l=function(e,t){for(var n=t.length,r=0;r<n;)e=e.childNodes[t[r++]];return e}(n,c.path);switch(c.type){case"any":r.push({fn:e.any(l,[]),sparse:!1});break;case"attr":var u=c.sparse,d=e.attribute(l,c.name,c.node);null===u?r.push({fn:d,sparse:!1}):(a+=u.length-2,r.push({fn:d,sparse:!0,values:u}));break;case"text":r.push({fn:e.text(l),sparse:!1}),l.textContent=""}}return s+=a,function(){var e=arguments.length;if(s!==e-1)throw new Error(e-1+" values instead of "+s+"\n"+t.join("${value}"));for(var i=1,o=1;i<e;){var a=r[i-o];if(a.sparse){var c=a.values,l=c[0],u=1,d=c.length;for(o+=d-2;u<d;)l+=arguments[i++]+c[u++];a.fn(l)}else a.fn(arguments[i++])}return n}}}}var $e=[];function xe(e){for(var t=e.childNodes,n=t.length;n--;){var r=t[n];1!==r.nodeType&&0===K.call(r.textContent).length&&e.removeChild(r)}}var Ce,Se,_e=(Ce=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,Se=/([^A-Z])([A-Z]+)/g,function(e,t){return"ownerSVGElement"in e?function(e,t){var n;return(n=t?t.cloneNode(!0):(e.setAttribute("style","--hyper:style;"),e.getAttributeNode("style"))).value="",e.setAttributeNode(n),Re(n,!0)}(e,t):Re(e.style,!1)});function Te(e,t,n){return t+"-"+n.toLowerCase()}function Re(e,t){var n,r;return function(s){var i,o,a,c;switch(typeof s){case"object":if(s){if("object"===n){if(!t&&r!==s)for(o in r)o in s||(e[o]="")}else t?e.value="":e.cssText="";for(o in i=t?{}:e,s)a="number"!=typeof(c=s[o])||Ce.test(o)?c:c+"px",!t&&/^--/.test(o)?i.setProperty(o,a):i[o]=a;n="object",t?e.value=function(e){var t,n=[];for(t in e)n.push(t.replace(Se,Te),":",e[t],";");return n.join("")}(r=i):r=s;break}default:r!=s&&(n="string",r=s,t?e.value=s||"":e.cssText=s||"")}}}var Ee,Le,Ae=(Ee=[].slice,(Le=Pe.prototype).ELEMENT_NODE=1,Le.nodeType=111,Le.remove=function(e){var t,n=this.childNodes,r=this.firstChild,s=this.lastChild;return this._=null,e&&2===n.length?s.parentNode.removeChild(s):((t=this.ownerDocument.createRange()).setStartBefore(e?n[1]:r),t.setEndAfter(s),t.deleteContents()),r},Le.valueOf=function(e){var t=this._,n=null==t;if(n&&(t=this._=this.ownerDocument.createDocumentFragment()),n||e)for(var r=this.childNodes,s=0,i=r.length;s<i;s++)t.appendChild(r[s]);return t},Pe);function Pe(e){var t=this.childNodes=Ee.call(e,0);this.firstChild=t[0],this.lastChild=t[t.length-1],this.ownerDocument=t[0].ownerDocument,this._=null}function Ne(e){return{html:e}}function Ie(e,t){switch(e.nodeType){case Be:return 1/t<0?t?e.remove(!0):e.lastChild:t?e.valueOf(!0):e.firstChild;case Fe:return Ie(e.render(),t);default:return e}}function De(e,t){t(e.placeholder),"text"in e?Promise.resolve(e.text).then(String).then(t):"any"in e?Promise.resolve(e.any).then(t):"html"in e?Promise.resolve(e.html).then(Ne).then(t):Promise.resolve(I.invoke(e,t)).then(t)}function Oe(e){return null!=e&&"then"in e}var je,ze,Me,Ue,qe,We="ownerSVGElement",Fe=v.prototype.nodeType,Be=Ae.prototype.nodeType,He=(ze=(je={Event:b,WeakSet:u}).Event,Me=je.WeakSet,Ue=!0,qe=null,function(e){return Ue&&(Ue=!Ue,qe=new Me,function(e){var t=new Me,n=new Me;try{new MutationObserver(o).observe(e,{subtree:!0,childList:!0})}catch(t){var r=0,s=[],i=function(e){s.push(e),clearTimeout(r),r=setTimeout((function(){o(s.splice(r=0,s.length))}),0)};e.addEventListener("DOMNodeRemoved",(function(e){i({addedNodes:[],removedNodes:[e.target]})}),!0),e.addEventListener("DOMNodeInserted",(function(e){i({addedNodes:[e.target],removedNodes:[]})}),!0)}function o(e){for(var r,s=e.length,i=0;i<s;i++)a((r=e[i]).removedNodes,"disconnected",n,t),a(r.addedNodes,"connected",t,n)}function a(e,t,n,r){for(var s,i=new ze(t),o=e.length,a=0;a<o;1===(s=e[a++]).nodeType&&function e(t,n,r,s,i){qe.has(t)&&!s.has(t)&&(i.delete(t),s.add(t),t.dispatchEvent(n));for(var o=t.children||[],a=o.length,c=0;c<a;e(o[c++],n,r,s,i));}(s,i,t,n,r));}}(e.ownerDocument)),qe.add(e),e}),Ge=/^(?:form|list)$/i,Ve=[].slice;function Je(t){return this.type=t,function(t){var n=$e,r=xe;return function(s){var i,o,a;return n!==s&&(i=t,o=n=s,a=ve.get(o)||ve.set(o,ke(i,o)),r=a.updates(J.call(e,a.content,!0))),r.apply(null,arguments)}}(this)}var Ke=!(Je.prototype={attribute:function(e,t,n){var r,s=We in e;if("style"===t)return _e(e,n,s);if("."===t.slice(0,1))return l=e,u=t.slice(1),s?function(e){try{l[u]=e}catch(t){l.setAttribute(u,e)}}:function(e){l[u]=e};if("?"===t.slice(0,1))return o=e,a=t.slice(1),function(e){c!==!!e&&((c=!!e)?o.setAttribute(a,""):o.removeAttribute(a))};if(/^on/.test(t)){var i=t.slice(2);return"connected"===i||"disconnected"===i?He(e):t.toLowerCase()in e&&(i=i.toLowerCase()),function(t){r!==t&&(r&&e.removeEventListener(i,r,!1),(r=t)&&e.addEventListener(i,t,!1))}}if("data"===t||!s&&t in e&&!Ge.test(t))return function(n){r!==n&&(r=n,e[t]!==n&&null==n?(e[t]="",e.removeAttribute(t)):e[t]=n)};if(t in I.attributes)return function(n){var s=I.attributes[t](e,n);r!==s&&(null==(r=s)?e.removeAttribute(t):e.setAttribute(t,s))};var o,a,c,l,u,d=!1,p=n.cloneNode(!0);return function(t){r!==t&&(r=t,p.value!==t&&(null==t?(d&&(d=!1,e.removeAttributeNode(p)),p.value=t):(p.value=t,d||(d=!0,e.setAttributeNode(p)))))}},any:function(e,t){var n,r={node:Ie,before:e},s=We in e?"svg":"html",i=!1;return function o(a){switch(typeof a){case"string":case"number":case"boolean":i?n!==a&&(n=a,t[0].textContent=a):(i=!0,n=a,t=f(e.parentNode,t,[(c=a,e.ownerDocument.createTextNode(c))],r));break;case"function":o(a(e));break;case"object":case"undefined":if(null==a){i=!1,t=f(e.parentNode,t,[],r);break}default:if(i=!1,D(n=a))if(0===a.length)t.length&&(t=f(e.parentNode,t,[],r));else switch(typeof a[0]){case"string":case"number":case"boolean":o({html:a});break;case"object":if(D(a[0])&&(a=a.concat.apply([],a)),Oe(a[0])){Promise.all(a).then(o);break}default:t=f(e.parentNode,t,a,r)}else"ELEMENT_NODE"in a?t=f(e.parentNode,t,11===a.nodeType?Ve.call(a.childNodes):[a],r):Oe(a)?a.then(o):"placeholder"in a?De(a,o):"text"in a?o(String(a.text)):"any"in a?o(a.any):"html"in a?t=f(e.parentNode,t,Ve.call(O([].concat(a.html).join(""),s).childNodes),r):o("length"in a?Ve.call(a):I.invoke(a,o))}var c}},text:function(e){var t;return function n(r){var s;t!==r&&("object"==(s=typeof(t=r))&&r?Oe(r)?r.then(n):"placeholder"in r?De(r,n):n("text"in r?String(r.text):"any"in r?r.any:"html"in r?[].concat(r.html).join(""):"length"in r?Ve.call(r).join(""):I.invoke(r,n)):"function"==s?n(r(e)):e.textContent=null==r?"":r)}}}),Ze=function(t){var r,s,i,o,a=(r=(e.defaultView.navigator||{}).userAgent,/(Firefox|Safari)\/(\d+)/.test(r)&&!/(Chrom[eium]+|Android)\/(\d+)/.test(r)),c=!("raw"in t)||t.propertyIsEnumerable("raw")||!Object.isFrozen(t.raw);return a||c?(s={},i=function(e){for(var t=".",n=0;n<e.length;n++)t+=e[n].length+"."+e[n];return s[t]||(s[t]=e)},Ze=c?i:(o=new n,function(e){return o.get(e)||(n=i(t=e),o.set(t,n),n);var t,n})):Ke=!0,Ye(t)};function Ye(e){return Ke?e:Ze(e)}function Xe(e){for(var t=arguments.length,n=[Ye(e)],r=1;r<t;)n.push(arguments[r++]);return n}var Qe=new n,et=function(e){var t,n,r;return function(){var s=Xe.apply(null,arguments);return r!==s[0]?(r=s[0],n=new Je(e),t=nt(n.apply(n,s))):n.apply(n,s),t}},tt=function(e,t){var n=t.indexOf(":"),r=Qe.get(e),s=t;return-1<n&&(s=t.slice(n+1),t=t.slice(0,n)||"html"),r||Qe.set(e,r={}),r[s]||(r[s]=et(t))},nt=function(e){var t=e.childNodes,n=t.length;return 1===n?t[0]:n?new Ae(t):e},rt=new n;function st(){var e=rt.get(this),t=Xe.apply(null,arguments);return e&&e.template===t[0]?e.tagger.apply(null,t):function(e){var t=new Je(We in this?"svg":"html");rt.set(this,{tagger:t,template:e}),this.textContent="",this.appendChild(t.apply(null,arguments))}.apply(this,t),this}var it,ot,at,ct,lt=I.define,ut=Je.prototype;function dt(e){return arguments.length<2?null==e?et("html"):"string"==typeof e?dt.wire(null,e):"raw"in e?et("html")(e):"nodeType"in e?dt.bind(e):tt(e,"html"):("raw"in e?et("html"):dt.wire).apply(null,arguments)}return dt.Component=v,dt.bind=function(e){return st.bind(e)},dt.define=lt,dt.diff=f,(dt.hyper=dt).observe=He,dt.tagger=ut,dt.wire=function(e,t){return null==e?et(t||"html"):tt(e,t||"html")},dt._={WeakMap:n,WeakSet:u},it=et,ot=new n,at=Object.create,ct=function(e,t){var n={w:null,p:null};return t.set(e,n),n},Object.defineProperties(v,{for:{configurable:!0,value:function(e,t){return function(e,t,r,s){var i,o,a,c=t.get(e)||ct(e,t);switch(typeof s){case"object":case"function":var l=c.w||(c.w=new n);return l.get(s)||(i=l,o=s,a=new e(r),i.set(o,a),a);default:var u=c.p||(c.p=at(null));return u[s]||(u[s]=new e(r))}}(this,ot.get(e)||(r=e,s=new w,ot.set(r,s),s),e,null==t?"default":t);var r,s}}}),Object.defineProperties(v.prototype,{handleEvent:{value:function(e){var t=e.currentTarget;this["getAttribute"in t&&t.getAttribute("data-call")||"on"+e.type](e)}},html:k("html",it),svg:k("svg",it),state:k("state",(function(){return this.defaultState})),defaultState:{get:function(){return{}}},dispatch:{value:function(e,t){var n=this._wire$;if(n){var r=new b(e,{bubbles:!0,cancelable:!0,detail:t});return r.component=this,(n.dispatchEvent?n:n.firstChild).dispatchEvent(r)}return!1}},setState:{value:function(e,t){var n=this.state,r="function"==typeof e?e.call(this,n):e;for(var s in r)n[s]=r[s];return!1!==t&&this.render(),this}}}),dt}(document);const{Component:Xn,bind:Qn,define:er,diff:tr,hyper:nr,wire:rr}=Yn,sr=Yn,ir=R,or=Bn,ar=class{constructor(e){const{type:t,subtype:n,params:r}=function(e){if(e=e.trim(),!e)throw new TypeError("Invalid input.");let t="",n="",r="",s=null,i=new Map,o="type",a=Array.from(e);for(let e=0;e<a.length;e++){const c=a[e];switch(o){case"type":if("/"===c){o="subtype";continue}t+=c;break;case"subtype":if(";"===c){o="param-start";continue}n+=c;break;case"param-start":if(xt.test(c)||";"===c)continue;r+=c,o="param-name";break;case"param-name":if("="===c||";"===c){if("="===c){o="param-value",s=null;continue}i.set(r.toLowerCase(),null),r="";continue}r+=c;break;case"param-value":if('"'==c){o="collect-quoted-string";continue}if(";"===c){s=s.trimEnd(),o="param-start",St(i,r,s),r="";continue}s="string"==typeof s?s+c:c;break;case"collect-quoted-string":if('"'===c){St(i,r,s),o="ignore-input-until-next-param",r="",s=null;continue}if("\\"===c)continue;s="string"==typeof s?s+c:c;break;case"ignore-input-until-next-param":if(";"!==c)continue;o="param-start";break;default:throw new Error(`State machine error - unknown parser mode: ${o} `)}}r&&St(i,r,s);if(""===t.trim()||!$t.test(t))throw new TypeError("Invalid type");if(""===n.trim()||!$t.test(n))throw new TypeError("Invalid subtype");return{type:t,subtype:n,params:Object.fromEntries(i.entries())}}(e);this.type=t.trim().toLowerCase(),this.subtype=n.trimEnd().toLowerCase(),this.parameters=new Map(Object.entries(r))}get essence(){return`${this.type}/${this.subtype}`}toString(){return function(e){const{parameters:t,essence:n}=e;if(!t.size)return n;let r=";";for(const[e,n]of t.entries())r+=e,null!==n?$t.test(n)?r+=`=${n}`:r+=`="${n}"`:r+='=""',r+=";";return e.essence+r.slice(0,-1)}(this)}},cr=Zn,lr=Ge,ur=class{lexer;curToken=kt;peekToken=kt;getCurToken(){return this.curToken}getPeekToken(){return this.peekToken}constructor(e){this.lexer=new vt(e),this._nextToken(),this._nextToken()}parse(){const e=[];for(;this.getCurToken().type!==He.EOF;){const t=this._parseRule();e.push(t)}const t=new Xe(e);return t.separator=this._nextToken(),t.setChildrenParent(),this._convertGroupDefinitions(t),t}_parseRule(){const e=this._parseTypename(!0,null),t=this._nextToken();let n;if(t.type===He.ASSIGN||t.type===He.GCHOICEALT){const r=this._parseGroupEntry();n=new Qe(e,t,r)}else{if(t.type!==He.TCHOICEALT)throw this._parserError(`expected assignment (\`=\`, \`/=\`, \`//=\`) after \`${e.serialize().trim()}\`, got \`${t.serialize().trim()}\``);{const r=this._parseType();if(!(r instanceof ht))throw new Error("Expected Type instance");n=new Qe(e,t,r)}}return n}_parseGroupEntry(){const e=this._parseOccurrence(),t=this._parseType(!0);let n;if(t instanceof pt){const r=this._parseType(!1);if(!(r instanceof ht))throw new Error("Expected Type instance");n=new et(e,t,r)}else n=new et(e,null,t);return n}_parseType(e=!1){const t=[];let n=this._parseType1(e);if(t.push(n),e&&this.getCurToken().type===He.CARET){const e=[];if(e.push(this._nextToken()),this.getCurToken().type!==He.ARROWMAP)throw this._parserError("expected arrow map (`=>`), got `#{(this.getCurToken().serialize() + this.getPeekToken().serialize()).trim()}`");e.push(this._nextToken());return new pt(n,!0,!1,e)}if(e&&this.getCurToken().type===He.ARROWMAP){return new pt(n,!1,!1,[this._nextToken()])}if(e&&this.getCurToken().type===He.COLON){return new pt(n,!0,!0,[this._nextToken()])}for(;this.getCurToken().type===He.TCHOICE;)n.separator=this._nextToken(),n=this._parseType1(),t.push(n);return new ht(t)}_parseType1(e=!1){const t=this._parseType2(e);let n;if(this.getCurToken().type===He.INCLRANGE||this.getCurToken().type===He.EXCLRANGE){const e=this._nextToken(),r=this._parseType2();if(!(t instanceof at||t instanceof ct))throw this._parserError(`expected range min to be a value or a typename, got \`${t.serialize().trim()}\``);if(!(r instanceof at||r instanceof ct))throw this._parserError(`expected range max to be a value or a typename, got \`${r.serialize().trim()}\``);n=new ut(t,r,e)}else if(this.getCurToken().type===He.CTLOP){const e=this._nextToken(),r=this._parseType2();n=new dt(t,e,r)}else n=t;return n}_parseType2(e=!1){let t;if(this.getCurToken().type===He.LPAREN){const n=this._nextToken();if(e)t=this._parseGroup(!1);else{const e=this._parseType();if(!(e instanceof ht))throw new Error("Expected Type instance");t=e}if(t.openToken=n,this.getCurToken().type!==He.RPAREN)throw this._parserError(`expected right parenthesis, got \`${this.getCurToken().serialize().trim()}\``);t.closeToken=this._nextToken()}else if(this.getCurToken().type===He.LBRACE){const e=this._nextToken();if(t=this._parseGroup(!0),t.openToken=e,this.getCurToken().type!==He.RBRACE)throw this._parserError(`expected right brace, got \`${this.getCurToken().serialize()}\``);t.closeToken=this._nextToken()}else if(this.getCurToken().type===He.LBRACK){const e=this._nextToken(),n=this._parseGroup(!1);if(t=new rt(n.groupChoices),t.openToken=e,this.getCurToken().type!==He.RBRACK)throw this._parserError(`expected right bracket, got \`${this.getCurToken().serialize().trim()}\``);t.closeToken=this._nextToken()}else if(this.getCurToken().type===He.TILDE){const e=this._nextToken();t=this._parseTypename(!1,e)}else if(this.getCurToken().type===He.AMPERSAND){const e=this._nextToken();if(this.getCurToken().type===He.LPAREN){const e=this._nextToken(),n=this._parseGroup(!1);if(n.openToken=e,this.getCurToken().type!==He.RPAREN)throw this._parserError(`expected right parenthesis, got \`${this.getCurToken().serialize().trim()}\``);n.closeToken=this._nextToken(),t=new lt(n)}else{const e=this._parseTypename(!1,null);t=new lt(e)}t.setComments(e)}else if(this.getCurToken().type===He.HASH){const e=this._nextToken();if(this.getCurToken().type!==He.NUMBER&&this.getCurToken().type!==He.FLOAT||this.getCurToken().startWithSpaces())t=new it;else{const e=this._nextToken();if(e.literal.length>1&&("."!==e.literal[1]||e.literal.includes("e")))throw this._parserError(`expected data item after "#" to match \`DIGIT ["." uint]\`, got \`${this.getCurToken().serialize().trim()}\``);if("6"!==e.literal[0]||this.getCurToken().type!==He.LPAREN||this.getCurToken().startWithSpaces())t=new it(e);else{const n=this._parseType2();if(!(n instanceof ht))throw new Error("Expected Type instance");t=new it(e,n)}}t.setComments(e)}else if(this.getCurToken().type===He.IDENT)t=this._parseTypename(!1,null);else if(this.getCurToken().type===He.STRING){const e=this._nextToken();t=new at(e.literal,"text"),t.setComments(e)}else if(this.getCurToken().type===He.BYTES){const e=this._nextToken();t=new at(e.literal,"bytes"),t.setComments(e)}else if(this.getCurToken().type===He.HEX){const e=this._nextToken();t=new at(e.literal,"hex"),t.setComments(e)}else if(this.getCurToken().type===He.BASE64){const e=this._nextToken();t=new at(e.literal,"base64"),t.setComments(e)}else if(this.getCurToken().type===He.NUMBER){const e=this._nextToken();t=new at(e.literal,"number"),t.setComments(e)}else{if(this.getCurToken().type!==He.FLOAT)throw this._parserError(`invalid type2 production, got \`${this.getCurToken().serialize().trim()}\``);{const e=this._nextToken();t=new at(e.literal,"number"),t.setComments(e)}}return t}_parseGroup(e=!1){const t=[];for(;this.getCurToken().type!==He.RPAREN&&this.getCurToken().type!==He.RBRACE&&this.getCurToken().type!==He.RBRACK;){const e=[];for(;this.getCurToken().type!==He.GCHOICE;){const t=this._parseGroupEntry();if(e.push(t),this.getCurToken().type===He.COMMA&&(t.separator=this._nextToken()),this.getCurToken().type===He.RPAREN||this.getCurToken().type===He.RBRACE||this.getCurToken().type===He.RBRACK)break}const n=new st(e);if(t.push(n),this.getCurToken().type===He.RPAREN||this.getCurToken().type===He.RBRACE||this.getCurToken().type===He.RBRACK)break;n.separator=this._nextToken()}let n;return n=e?new nt(t):new tt(t),n}_parseOccurrence(){const e=[];let t=null;if(this.getCurToken().type===He.QUEST||this.getCurToken().type===He.ASTERISK||this.getCurToken().type===He.PLUS){const n=this.getCurToken().type===He.PLUS?1:0;let r=1/0;this.getCurToken().type===He.ASTERISK&&this.getPeekToken().type===He.NUMBER&&yt(this.getPeekToken().literal)&&!this.getPeekToken().startWithSpaces()&&(e.push(this._nextToken()),r=parseInt(this.getCurToken().literal)),e.push(this._nextToken()),t=new ot(n,r,e)}else if(this.getCurToken().type===He.NUMBER&&yt(this.getCurToken().literal)&&this.getPeekToken().type===He.ASTERISK&&!this.getPeekToken().startWithSpaces()){const n=parseInt(this.getCurToken().literal);let r=1/0;e.push(this._nextToken()),e.push(this._nextToken()),this.getCurToken().type===He.NUMBER&&yt(this.getCurToken().literal)&&!this.getCurToken().startWithSpaces()&&(r=parseInt(this.getCurToken().literal),e.push(this._nextToken())),t=new ot(n,r,e)}return t}_parseTypename(e=!1,t=null){if(this.getCurToken().type!==He.IDENT)throw this._parserError(`expected group identifier, got \`${this.getCurToken().serialize().trim()}\``);const n=this._nextToken();let r;r=e?this._parseGenericParameters():this._parseGenericArguments();const s=new ct(n.literal,t,r);return s.setComments(n),s}_parseGenericParameters(){if(this.getCurToken().type!==He.LT||this.getCurToken().startWithSpaces())return null;const e=this._nextToken(),t=[];let n=this._parseTypename();for(t.push(n);this.getCurToken().type===He.COMMA;)n.separator=this._nextToken(),n=this._parseTypename(),t.push(n);const r=new ft(t);if(r.openToken=e,this.getCurToken().type!==He.GT)throw this._parserError(`expected \`>\` character to end generic production, got \`${this.getCurToken().serialize().trim()}\``);return r.closeToken=this._nextToken(),r}_parseGenericArguments(){if(this.getCurToken().type!==He.LT||this.getCurToken().startWithSpaces())return null;const e=this._nextToken(),t=[];let n=this._parseType1();for(t.push(n);this.getCurToken().type===He.COMMA;)n.separator=this._nextToken(),n=this._parseType1(),t.push(n);const r=new mt(t);if(r.openToken=e,this.getCurToken().type!==He.GT)throw this._parserError(`expected \`>\` character to end generic production, got \`${this.getCurToken().serialize().trim()}\``);return r.closeToken=this._nextToken(),r}_convertGroupDefinitions(e){const t=new Set,n=new Set,r=new Set,s=e=>{if(e instanceof at||e instanceof nt||e instanceof rt||e instanceof lt||e instanceof it)return"type";if(e instanceof ut)return s(e.min);if(e instanceof dt)return s(e.type);if(e instanceof ct){const t=e.name;if(n.has(t)||this._isPreludeType(t))return"type";if(r.has(t))return"group"}return"unknown"};for(const s of e.rules)t.add(s.name.name),0===n.size&&n.add(s.name.name),s.type instanceof ht?n.add(s.name.name):(s.assign.type===He.TCHOICEALT&&n.add(s.name.name),s.assign.type===He.GCHOICEALT&&r.add(s.name.name),s.type.type.types.length>1&&null===s.type.type.openToken&&n.add(s.name.name),null!==s.type.occurrence&&r.add(s.name.name),null!==s.type.key&&r.add(s.name.name));const i=e=>{e instanceof et&&null!==e.key&&e.key.type instanceof ct&&!e.key.hasColon&&t.has(e.key.type.name)&&n.add(e.key.type.name);for(const t of e.getChildren())i(t)};i(e);let o=!0;for(;o;){o=!1;for(const i of e.rules)if(i.type instanceof ht)for(const e of i.type.types)e instanceof ct&&t.has(e.name)&&(n.has(e.name)||(o=!0,n.add(e.name)));else{if(n.has(i.name.name))for(const e of i.type.type.types)e instanceof ct&&t.has(e.name)&&(n.has(e.name)||(o=!0,n.add(e.name)));if(r.has(i.name.name))for(const e of i.type.type.types)e instanceof ct&&t.has(e.name)&&(r.has(e.name)||(o=!0,r.add(e.name)));if(i.assign.type===He.ASSIGN){const e=new Set(i.type.type.types.map((e=>s(e))));if(e.has("type")&&e.has("group"))throw new gt(`CDDL semantic error - rule \`${i.name.name}\` targets a mix of type and group rules`);e.has("type")?n.has(i.name.name)||(o=!0,n.add(i.name.name)):e.has("group")&&(r.has(i.name.name)||(o=!0,r.add(i.name.name)))}}}const a=[...n].filter((e=>r.has(e)));if(a.length>0){const e=a.join(", ");throw new gt(`CDDL semantic error - mix of type and group definitions for ${e}`)}for(const t of e.rules)if(!(t.type instanceof ht)&&n.has(t.name.name)){if(!t.type.isConvertibleToType())throw new gt(`CDDL semantic error - rule \`${t.name.name}\` is a type definition but uses a group entry`);t.type=t.type.type}}_isPreludeType(e){return["any","uint","nint","int","bstr","bytes","tstr","text","tdate","time","number","biguint","bignint","bigint","integer","unsigned","decfrac","bigfloat","eb64url","eb64legacy","eb16","encoded-cbor","uri","b64url","b64legacy","regexp","mime-message","cbor-any","float16","float32","float64","float16-32","float32-64","float","false","true","bool","nil","null","undefined"].includes(e)}_nextToken(){const e=this.curToken;return this.curToken=this.peekToken,this.peekToken=this.lexer.nextToken(),e}_parserError(e){const t=this.lexer.getLocation();return new gt(`CDDL syntax error - line ${t.line+1}: ${e}`)}},dr=class{serializeToken(e,t){return e.serialize()}serializeValue(e,t,n,r){return e+t+n}serializeName(e,t){return e}markupFor(e){return[null,null]}},pr=Qe,hr=pt,fr=ft,mr=mt,gr=ht,br=ot,yr=/-/g,wr=RegExp.escape??(e=>e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"));const vr=new Intl.DateTimeFormat(["sv-SE"],{timeZone:"UTC",year:"numeric",month:"2-digit",day:"2-digit"}),kr="en"===r||r.startsWith("en-")?"en-AU":r,$r=new Intl.DateTimeFormat(kr,{timeZone:"UTC",year:"numeric",month:"long",day:"en-AU"===kr?"2-digit":"numeric"}),xr=".informative, .note, .issue, .example, .ednote, .practice, .introductory";function Cr(e){const t=new URL(e.href,document.baseURI),n=document.createElement("link");let{href:r}=t;switch(n.rel=e.hint,n.rel){case"dns-prefetch":case"preconnect":r=t.origin,(e.corsMode||t.origin!==document.location.origin)&&(n.crossOrigin=e.corsMode||"anonymous");break;case"preload":"as"in e&&n.setAttribute("as",e.as||""),e.corsMode&&(n.crossOrigin=e.corsMode)}return n.href=r,e.dontRemove||n.classList.add("removeOnSave"),n}function Sr(e){e.querySelectorAll(".remove, script[data-requiremodule]").forEach((e=>{e.remove()}))}function _r(e,t="long"){const n=new Intl.ListFormat(r,{style:t,type:e});return(e,t)=>{let r=0;return n.formatToParts(e).map((({type:n,value:s})=>"element"===n&&t?t(s,r++,e):s))}}const Tr=_r("conjunction"),Rr=_r("disjunction");function Er(e,t){return Tr(e,t).join("")}function Lr(e,t){return Rr(e,t).join("")}function Ar(e){return e.replace(/&/g,"&").replace(/>/g,">").replace(/"/g,""").replace(/</g,"<")}function Pr(e){return e.trim().replace(/\s+/g," ")}function Nr(e,t=r){return t=t.toLowerCase(),new Proxy(e,{get(e,n){const r=Ir(e,n,t)||e.en[n];if(!r)throw new Error(`No l10n data for key: "${n}"`);return r}})}function Ir(e,t,n=r){n=n.toLowerCase();const s=n.match(/^(\w{2,3})-.+$/)?.[1]??"";return e[n]?.[t]||e[s]?.[t]}function Dr(e,t=""){return vr.format(e).replace(yr,t)}function Or(e,t,...n){const r=[this,e,...n];if(t){const n=t.split(/\s+/);for(const t of n){const n=window[t];if(n)try{e=n.apply(this,r)}catch(e){ns(`call to \`${t}()\` failed with: ${e}.`,"utils/runTransforms",{hint:"See developer console for stack trace.",cause:e})}}}return e}async function jr(e,t=864e5){const n=new Request(e),r=new URL(n.url);let s,i;if("caches"in window)try{if(s=await caches.open(r.origin),i=await s.match(n),i&&new Date(i.headers.get("Expires")??"")>new Date)return i}catch(e){console.error("Failed to use Cache API.",e)}const o=await fetch(n);if(!o.ok&&i)return console.warn(`Returning a stale cached response for ${r}`),i;if(s&&o.ok){const e=o.clone(),r=new Headers(o.headers),i=new Date(Date.now()+t);r.set("Expires",i.toISOString());const a=new Response(await e.blob(),{headers:r});await s.put(n,a).catch(console.error)}return o}function zr(e,t=(e=>e)){const n=e.map(t),r=n.slice(0,-1).map((e=>sr`${e}, `));return sr`${r}${n[n.length-1]}`}function Mr(e,t){return[].concat(Tr(e,t)).map((e=>"string"==typeof e?sr`${e}`:e))}function Ur(e,t=""){const n=function(e){let t=0;for(const n of e)t=Math.imul(31,t)+n.charCodeAt(0)|0;return String(t)}(Pr(e.textContent));return Wr(e,t,n)}function qr(e,t=!1){return(t?e:e.toLowerCase()).trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\W+/gim,"-").replace(/^-+/,"").replace(/-+$/,"")}function Wr(e,t="",n="",r=!1){if(e.id)return e.id;n||(n=(e.title?e.title:e.textContent).trim());let s=qr(n,r);if(s?!/\.$/.test(s)&&/^[a-z]/i.test(t||s)||(s=`x${s}`):s="generatedID",t&&(s=`${t}-${s}`),e.ownerDocument.getElementById(s)){let t=0,n=`${s}-${t}`;for(;e.ownerDocument.getElementById(n);)t+=1,n=`${s}-${t}`;s=n}return e.id=s,s}function Fr(e){const t=new Set,n="ltNodefault"in e.dataset?"":Pr(e.textContent),r=e.children[0];if(e.dataset.lt?e.dataset.lt.split("|").map((e=>Pr(e))).forEach((e=>t.add(e))):1===e.childNodes.length&&1===e.getElementsByTagName("abbr").length&&r&&r.title?t.add(r.title):'""'===e.textContent&&t.add("the-empty-string"),t.add(n),t.delete(""),e.dataset.localLt){e.dataset.localLt.split("|").forEach((e=>t.add(Pr(e))))}return[...t]}function Br(e,t,n={copyAttributes:!0}){if(e.localName===t)return e;const r=e.ownerDocument.createElement(t);if(n.copyAttributes)for(const{name:t,value:n}of e.attributes)r.setAttribute(t,n);return r.append(...e.childNodes),e.replaceWith(r),r}function Hr(e,t){const n=t.closest(xr);let r=!1;if(n&&(r=!t.closest(".normative")||!n.querySelector(".normative")),e.startsWith("!")){if(r)return{type:"informative",illegal:!0};r=!1}else e.startsWith("?")&&(r=!0);return{type:r?"informative":"normative",illegal:!1}}function Gr(e,t){return t.append(...e.childNodes),e.appendChild(t),e}function Vr(e){const t=[];for(const n of function*(e){let t=e;for(;t.previousElementSibling;)t=t.previousElementSibling,yield t}(e))"section"===n.localName&&t.push(n);return t}function Jr(e){const{previousSibling:t}=e;if(!t||t.nodeType!==Node.TEXT_NODE)return"";const n=(t.textContent??"").lastIndexOf("\n");if(-1===n)return"";const r=(t.textContent??"").slice(n+1);return/\S/.test(r)?"":r}class Kr extends Set{constructor(e=[]){super();for(const t of e)this.add(t)}add(e){return this.has(e)||this.getCanonicalKey(e)?this:super.add(e)}has(e){return super.has(e)||[...this.keys()].some((t=>t.toLowerCase()===e.toLowerCase()))}delete(e){return super.has(e)?super.delete(e):super.delete(this.getCanonicalKey(e)??e)}getCanonicalKey(e){return super.has(e)?e:this.keys().find((t=>t.toLowerCase()===e.toLowerCase()))}}function Zr(e){const t=e.cloneNode(!0);return t.querySelectorAll("[id]").forEach((e=>e.removeAttribute("id"))),t.querySelectorAll("dfn").forEach((e=>{Br(e,"span",{copyAttributes:!1})})),t.hasAttribute("id")&&t.removeAttribute("id"),Yr(t),t}function Yr(e){const t=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT);for(const e of[...Xr(t)])e.remove()}function*Xr(e){for(;e.nextNode();)yield e.currentNode}class Qr extends Map{constructor(e=[]){return super(),e.forEach((([e,t])=>{this.set(e,t)})),this}set(e,t){return super.set(e.toLowerCase(),t),this}get(e){return super.get(e.toLowerCase())}has(e){return super.has(e.toLowerCase())}delete(e){return super.delete(e.toLowerCase())}}class es extends Error{constructor(e,t,n){super(e,{...n.cause&&{cause:n.cause}});const r=n.isWarning?"ReSpecWarning":"ReSpecError";Object.assign(this,{message:e,plugin:t,name:r,...n}),n.elements&&n.elements.forEach((t=>function(e,t,n){e.classList.add("respec-offending-element"),e.hasAttribute("title")||e.setAttribute("title",n||t),e.id||Wr(e,"respec-offender")}(t,e,n.title)))}toJSON(){const{message:e,name:t,stack:n}=this,{plugin:r,hint:s,elements:i,title:o,details:a}=this;return{message:e,name:t,plugin:r,hint:s,elements:i,title:o,details:a,stack:n,...this.cause instanceof Error&&{cause:{name:this.cause.name,message:this.cause.message,stack:this.cause.stack}}}}}function ts(e,t,n={}){const r={...n,isWarning:!1};ds("error",new es(e,t,r))}function ns(e,t,n={}){const r={...n,isWarning:!0};ds("warn",new es(e,t,r))}function rs(e){return{amendConfiguration:e=>ds("amend-user-config",e),showError:(t,n)=>ts(t,e,n),showWarning:(t,n)=>ns(t,e,n)}}function ss(e){return e?`\`${e}\``:""}function is(e,{quotes:t}={quotes:!1}){return Lr(e,t?e=>ss(as(e)):ss)}function os(e,{quotes:t}={quotes:!1}){return Er(e,t?e=>ss(as(e)):ss)}function as(e){return String(e)?`"${e}"`:""}function cs(e,...t){return ls(e.map(((e,n)=>{const r=t[n];if(!r)return e;if(!r.startsWith("[")&&!r.endsWith("]"))return e+r;const[s,i]=r.slice(1,-1).split("|");if(i){return`${e}[${s}](${new URL(i,"https://respec.org/docs/")})`}return`${e}[\`${s}\`](https://respec.org/docs/#${s})`})).join(""))}function ls(e){if(!e)return e;const t=e.trimEnd().split("\n");for(;t.length&&!t[0].trim();)t.shift();const n=t.filter((e=>e.trim())).map((e=>e.search(/[^\s]/))),r=Math.min(...n);return t.map((e=>e.slice(r))).join("\n")}const us=new EventTarget;function ds(e,t){if(us.dispatchEvent(new CustomEvent(e,{detail:t})),window.parent===window.self)return;const n=String(JSON.stringify(t?.stack||t));window.parent.postMessage({topic:e,args:n},window.parent.location.origin)}function ps(e,t,n={once:!1}){us.addEventListener(e,(async n=>{try{await t(n.detail)}catch(t){const n=t;ts(`Error in handler for topic "${e}": ${n.message}`,`sub:${e}`,{cause:n})}}),n)}const hs=["githubToken","githubUser"];const fs=new Map([["text/html","html"],["application/xml","xml"]]);function ms(e,t=document){const n=fs.get(e);if(!n){const t=[...fs.values()].join(", ");throw new TypeError(`Invalid format: ${e}. Expected one of: ${t}.`)}const r=gs(n,t);return`data:${e};charset=utf-8,${encodeURIComponent(r)}`}function gs(e,t){const n=t.cloneNode(!0);!function(e){const{head:t,body:n,documentElement:r}=e;Yr(e),e.querySelectorAll(".removeOnSave, #toc-nav").forEach((e=>e.remove())),n.classList.remove("toc-sidebar"),Sr(r);const s=e.createDocumentFragment(),i=e.querySelector("meta[name='viewport']");i&&t.firstChild!==i&&s.appendChild(i);const o=e.querySelector("meta[charset], meta[content*='charset=']")||sr`<meta charset="utf-8" />`;s.appendChild(o);const a=`ReSpec ${window.respecVersion||"Developer Channel"}`,c=sr`
|
|
2
2
|
<meta name="generator" content="${a}" />
|
|
3
|
-
`;s.appendChild(c),t.prepend(s),
|
|
3
|
+
`;s.appendChild(c),t.prepend(s),ds("beforesave",r)}(n);let r="";if("xml"===e)r=(new XMLSerializer).serializeToString(n);else!function(e){e.querySelectorAll("style").forEach((e=>{e.innerHTML=`\n${e.innerHTML}\n`})),e.querySelectorAll("head > *").forEach((e=>{e.outerHTML=`\n${e.outerHTML}`}))}(n),n.doctype&&(r+=(new XMLSerializer).serializeToString(n.doctype)),r+=n.documentElement.outerHTML;return r}async function bs(t){const n=await fetch(new URL(`../../${t}`,e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("respec-w3c.js",document.baseURI).href));return await n.text()}const ys=new URL("respec-highlight.js",e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("respec-w3c.js",document.baseURI).href).href,ws=Cr({hint:"preload",href:ys,as:"script"});async function vs(){try{return(await Promise.resolve().then((function(){return oi}))).default}catch{return bs("worker/respec-worker.js")}}async function ks(){try{const e=await fetch(ys);if(e.ok)return await e.text()}catch{}return null}document.head.appendChild(ws);const $s=async function(){const[e,t]=await Promise.all([vs(),ks()]),n=new Blob([null!==t?`${t}\n`:'self.RESPEC_HIGHLIGHT_URL = "https://www.w3.org/Tools/respec/respec-highlight";\n',e],{type:"application/javascript"});return new Worker(URL.createObjectURL(n))}();class xs{constructor(){this._respecDonePromise=new Promise((e=>{ps("end-all",(()=>e()),{once:!0})})),this.errors=[],this.warnings=[],ps("error",(e=>{console.error(e,e.toJSON()),this.errors.push(e)})),ps("warn",(e=>{console.warn(e,e.toJSON()),this.warnings.push(e)}))}get version(){return window.respecVersion}get ready(){return this._respecDonePromise}get worker(){return $s}async toHTML(){return gs("html",document)}}const Cs="core/post-process",Ss=15e3;function _s(e,t){return new Promise(((n,r)=>{const s=setTimeout((()=>{r(new Error(`${t} timed out.`))}),Ss);Promise.resolve(e).then(n,r).finally((()=>{clearTimeout(s)}))}))}const Ts="core/pre-process",Rs=15e3;const Es="core/base-runner";async function Ls(e){!function(){const e=new xs;Object.defineProperty(document,"respec",{value:e})}(),ds("start-all",respecConfig),function(e){const t={},n=e=>Object.assign(t,e);n(e),ps("amend-user-config",n),ps("end-all",(()=>{const e=document.createElement("script");e.id="initialUserConfig",e.type="application/json";for(const e of hs)e in t&&delete t[e];e.innerHTML=JSON.stringify(t,null,2),document.head.appendChild(e)}))}(respecConfig),function(e){const t=new URLSearchParams(document.location.search),n=Array.from(t).filter((([e,t])=>!!e&&!!t)).map((([e,t])=>{const n=decodeURIComponent(e),r=decodeURIComponent(t.replace(/%3D/g,"="));let s;try{s=JSON.parse(r)}catch{s=r}return[n,s]})),r=Object.fromEntries(n);Object.assign(e,r),ds("amend-user-config",r)}(respecConfig),performance.mark(`${Es}-start`),await async function(e){if(Array.isArray(e.preProcess)){const t=e.preProcess.filter((e=>{const t="function"==typeof e;return t||ts("Every item in `preProcess` must be a JS function.",Ts),t}));for(const[n,r]of t.entries()){const t=`${Ts}/${r.name||`[${n}]`}`,s=rs(t);try{await new Promise(((n,i)=>{const o=setTimeout((()=>{i(new Error(`preProcess function "${t}" timed out.`))}),Rs);Promise.resolve().then((()=>r(e,document,s))).then(n,i).finally((()=>{clearTimeout(o)}))}))}catch(e){ts(`Function ${t} threw an error during \`preProcess\`.`,Ts,{hint:"See developer console.",cause:e})}}}}(respecConfig);const t=e.filter((e=>{return(t=e)&&(t.run||t.Plugin);var t}));t.forEach((e=>!e.name&&console.warn("Plugin lacks name:",e))),await async function(e,t){for(const n of e.filter((e=>e.prepare)))try{await(n.prepare?.(t))}catch(e){console.error(e)}}(t,respecConfig),await async function(e,t){for(const n of e){const e=n.name||"";try{await new Promise((async(r,s)=>{const i=setTimeout((()=>{const t=`Plugin ${e} took too long.`;console.error(t,n),s(new Error(t))}),15e3);performance.mark(`${e}-start`);try{n.Plugin?(await new n.Plugin(t).run(),r(void 0)):n.run&&(await n.run(t),r(void 0))}catch(e){s(e)}finally{clearTimeout(i),performance.mark(`${e}-end`),performance.measure(e,`${e}-start`,`${e}-end`)}}))}catch(e){console.error(e)}}}(t,respecConfig),ds("plugins-done",respecConfig),await async function(e){if(Array.isArray(e.postProcess)){const t=e.postProcess.filter((e=>{const t="function"==typeof e;return t||ts("Every item in `postProcess` must be a JS function.",Cs),t}));for(const[n,r]of t.entries()){const t=`${Cs}/${r.name||`[${n}]`}`,s=rs(t);try{await _s(r(e,document,s),`postProcess function "${t}"`)}catch(e){ts(`Function ${t} threw an error during \`postProcess\`.`,Cs,{hint:"See developer console.",cause:e})}}}if("function"==typeof e.afterEnd)try{await _s(e.afterEnd(e,document),"config.afterEnd")}catch(e){ts("Function afterEnd threw an error.",Cs,{hint:"See developer console.",cause:e})}}(respecConfig),ds("end-all",void 0),Sr(document),performance.mark(`${Es}-end`),performance.measure(Es,`${Es}-start`,`${Es}-end`)}var As=String.raw`.respec-modal .close-button{position:absolute;z-index:inherit;padding:.2em;font-weight:700;cursor:pointer;margin-left:5px;border:none;background:0 0}
|
|
4
4
|
#respec-ui{position:fixed;display:flex;flex-direction:row-reverse;top:20px;right:20px;width:202px;text-align:right;z-index:9000}
|
|
5
5
|
#respec-pill,.respec-info-button{height:2.4em;background:#fff;background:var(--bg,#fff);color:#787878;color:var(--tocnav-normal-text,#787878);border:1px solid #ccc;box-shadow:1px 1px 8px 0 rgba(100,100,100,.5);box-shadow:1px 1px 8px 0 var(--tocsidebar-shadow,rgba(100,100,100,.5));padding:.2em 0}
|
|
6
6
|
.respec-info-button{border:none;opacity:.75;border-radius:2em;margin-right:1em;min-width:3.5em;will-change:opacity}
|
|
@@ -64,42 +64,42 @@ to{margin-top:0;border:1px solid #ccc;border-radius:0;box-shadow:1px 1px 8px 0 r
|
|
|
64
64
|
.respec-iframe:not(.ready){background:url(https://respec.org/xref/loader.gif) no-repeat center}
|
|
65
65
|
.respec-iframe+a[href]{font-size:.9rem;float:right;margin:0 .5em .5em;border-bottom-width:1px}
|
|
66
66
|
p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
67
|
-
.respec-plugin{text-align:right;color:rgb(120,120,120,.5);font-size:.6em}`;const
|
|
67
|
+
.respec-plugin{text-align:right;color:rgb(120,120,120,.5);font-size:.6em}`;const Ps=/>/gm,Ns=/&/gm;class Is extends or.Renderer{code(e){const{text:t,lang:n=""}=e,{language:r,...s}=Is.parseInfoString(n);if(/(^webidl$)/i.test(r))return`<pre class="idl">${t}</pre>`;const i=super.code({...e,lang:r}).replace('class="language-','class="'),{example:o,illegalExample:a}=s;if(!o&&!a)return i;const c=o||a,l=`${r} ${o?"example":"illegal-example"}`;return i.replace("<pre>",`<pre title="${c}" class="${l}">`)}image(e){const{href:t,title:n,text:r}=e;if(!n)return super.image(e);return String.raw`
|
|
68
68
|
<figure>
|
|
69
69
|
<img src="${t}" alt="${r}" />
|
|
70
70
|
<figcaption>${n}</figcaption>
|
|
71
71
|
</figure>
|
|
72
|
-
`}static parseInfoString(e){const t=e.search(/\s/);if(-1===t)return{language:e};const n=e.slice(0,t),r=e.slice(t+1);let s;if(r)try{s=JSON.parse(`{ ${r} }`)}catch(e){console.error(e)}return{language:n,...s}}heading(e){const t=this.parser.parseInline(e.tokens),n=e.depth,r=t.match(/(.+)\s+{#([\w-]+)}$/);if(r){const[,e,t]=r;return`<h${n} id="${t}">${e}</h${n}>`}return super.heading(e)}}const
|
|
72
|
+
`}static parseInfoString(e){const t=e.search(/\s/);if(-1===t)return{language:e};const n=e.slice(0,t),r=e.slice(t+1);let s;if(r)try{s=JSON.parse(`{ ${r} }`)}catch(e){console.error(e)}return{language:n,...s}}heading(e){const t=this.parser.parseInline(e.tokens),n=e.depth,r=t.match(/(.+)\s+{#([\w-]+)}$/);if(r){const[,e,t]=r;return`<h${n} id="${t}">${e}</h${n}>`}return super.heading(e)}}const Ds={gfm:!0,renderer:new Is};function Os(e,t={inline:!1}){const n=function(e){if(!e)return e;const t=e.trimEnd().split("\n"),n=t.findIndex((e=>e.trim()));if(-1===n)return"";const r=t.slice(n),s=r[0].search(/[^\s]/);if(s<1)return r.join("\n");const i=" ".repeat(s);return r.map((e=>e.startsWith(i)?e.slice(s):e)).join("\n")}(e),r=n.replace(Ps,">").replace(Ns,"&");return t.inline?or.parseInline(r,Ds):or.parse(r,Ds)}function js(e){for(const t of e.getElementsByTagName("pre"))t.prepend("\n");e.innerHTML=Os(e.innerHTML)}const zs=(Ms="[data-format='markdown']:not(body)",e=>{const t=e.querySelectorAll(Ms);return t.forEach(js),Array.from(t)});var Ms;var Us=Object.freeze({__proto__:null,markdownToHtml:Os,name:"core/markdown",run:function(e){const t=!!document.querySelector("[data-format=markdown]:not(body)"),n="markdown"===e.format;if(!n&&!t)return;if(!n)return void zs(document.body);const r=document.getElementById("respec-ui");r?.remove();const s=document.body.cloneNode(!0);!function(e,t){const n=e.querySelectorAll(t);for(const e of n){const{innerHTML:t}=e;if(/^<\w/.test(t.trimStart()))continue;const n=t.split("\n"),r=n.slice(0,2).join("\n"),s=n.slice(-2).join("\n");if(r.trim()&&e.prepend("\n\n"),s.trim()){const t=Jr(e);e.append(`\n\n${t}`)}}}(s,"[data-format=markdown], section, div, address, article, aside, figure, header, main"),js(s),function(e){Array.from(e).forEach((e=>{e.replaceWith(e.textContent)}))}(s.querySelectorAll(".nolinks a[href]")),r&&s.append(r),document.body.replaceWith(s)}});function qs(e,t){e&&Array.from(t).forEach((([t,n])=>{e.setAttribute(`aria-${t}`,n)}))}!function(){const e=document.createElement("style");e.id="respec-ui-styles",e.textContent=As,e.classList.add("removeOnSave"),document.head.appendChild(e)}();const Ws=sr`<div id="respec-ui" class="removeOnSave" hidden></div>`,Fs=sr`<ul
|
|
73
73
|
id="respec-menu"
|
|
74
74
|
role="menu"
|
|
75
75
|
aria-labelledby="respec-pill"
|
|
76
76
|
hidden
|
|
77
|
-
></ul>`,
|
|
77
|
+
></ul>`,Bs=sr`<button
|
|
78
78
|
class="close-button"
|
|
79
|
-
onclick=${()=>
|
|
79
|
+
onclick=${()=>ti.closeModal()}
|
|
80
80
|
title="Close"
|
|
81
81
|
>
|
|
82
82
|
❌
|
|
83
|
-
</button>`;let
|
|
83
|
+
</button>`;let Hs,Gs;window.addEventListener("load",(()=>Xs(Fs)));const Vs=[],Js=[],Ks={};ps("start-all",(()=>document.body.prepend(Ws)),{once:!0}),ps("end-all",(()=>document.body.prepend(Ws)),{once:!0});const Zs=sr`<button id="respec-pill" disabled>ReSpec</button>`;function Ys(){Fs.classList.toggle("respec-hidden"),Fs.classList.toggle("respec-visible"),Fs.hidden=!Fs.hidden}function Xs(e){const t=e.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled])"),n=t[0],r=t[t.length-1];n&&n.focus(),e.addEventListener("keydown",(e=>{const t=e;"Tab"===t.key&&(t.shiftKey?document.activeElement===n&&(r.focus(),t.preventDefault()):document.activeElement===r&&(n.focus(),t.preventDefault()))}))}Ws.appendChild(Zs),Zs.addEventListener("click",(e=>{e.stopPropagation(),Zs.setAttribute("aria-expanded",String(Fs.hidden)),Ys(),Fs.querySelector("li:first-child button").focus()})),document.documentElement.addEventListener("click",(()=>{Fs.hidden||Ys()})),Ws.appendChild(Fs),Fs.addEventListener("keydown",(e=>{"Escape"!==e.key||Fs.hidden||(Zs.setAttribute("aria-expanded",String(Fs.hidden)),Ys(),Zs.focus())}));const Qs=new Map([["controls","respec-menu"],["expanded","false"],["haspopup","true"],["label","ReSpec Menu"]]);function ei(e,t,n,r){t.push(e),Ks.hasOwnProperty(n)||(Ks[n]=function(e,t,n){const r=`respec-pill-${e}`,s=sr`<button
|
|
84
84
|
id="${r}"
|
|
85
85
|
class="respec-info-button"
|
|
86
|
-
></button>`;s.addEventListener("click",(()=>{s.setAttribute("aria-expanded","true");const r=
|
|
86
|
+
></button>`;s.addEventListener("click",(()=>{s.setAttribute("aria-expanded","true");const r=sr`<ol class="${`respec-${e}-list`}"></ol>`;for(const e of t){const t=document.createRange().createContextualFragment(ni(e)),n=document.createElement("li");t.firstElementChild===t.lastElementChild?n.append(...t.firstElementChild.childNodes):n.appendChild(t),r.appendChild(n)}ti.freshModal(n,r,s)}));const i=new Map([["expanded","false"],["haspopup","true"],["controls",`respec-pill-${e}-modal`]]);return qs(s,i),s}(n,t,r),Ws.appendChild(Ks[n]));const s=Ks[n];s.textContent=String(t.length);const i=1===t.length?cr.singular(r):r;qs(s,new Map([["label",`${t.length} ${i}`]]))}qs(Zs,Qs);const ti={show(){try{Ws.hidden=!1}catch(e){console.error(e)}},hide(){Ws.hidden=!0},enable(){Zs.removeAttribute("disabled")},addCommand(e,t,n,r){r=r||"";const s=`respec-button-${e.toLowerCase().replace(/\s+/,"-")}`,i=sr`<button id="${s}" class="respec-option">
|
|
87
87
|
<span class="respec-cmd-icon" aria-hidden="true">${r}</span> ${e}…
|
|
88
|
-
</button>`,
|
|
88
|
+
</button>`,o=sr`<li role="menuitem">${i}</li>`;return o.addEventListener("click",t),Fs.appendChild(o),i},error(e){ei(e,Vs,"error","ReSpec Errors")},warning(e){ei(e,Js,"warning","ReSpec Warnings")},closeModal(e){if(Gs){const e=Gs;e.classList.remove("respec-show-overlay"),e.classList.add("respec-hide-overlay"),e.addEventListener("transitionend",(()=>{e.remove(),Gs=null}))}e&&e.setAttribute("aria-expanded","false"),Hs&&(Hs.remove(),Hs=null,Zs.focus())},freshModal(e,t,n){Hs&&Hs.remove(),Gs&&Gs.remove(),Gs=sr`<div id="respec-overlay" class="removeOnSave"></div>`;const r=`${n.id}-modal`,s=`${r}-heading`;Hs=sr`<div
|
|
89
89
|
id="${r}"
|
|
90
90
|
class="respec-modal removeOnSave"
|
|
91
91
|
role="dialog"
|
|
92
92
|
aria-labelledby="${s}"
|
|
93
93
|
>
|
|
94
|
-
${
|
|
94
|
+
${Bs}
|
|
95
95
|
<h3 id="${s}">${e}</h3>
|
|
96
96
|
<div class="inside">${t}</div>
|
|
97
|
-
</div>`;const
|
|
97
|
+
</div>`;const i=new Map([["labelledby",s]]);qs(Hs,i),document.body.append(Gs,Hs),Gs.addEventListener("click",(()=>this.closeModal(n))),Gs.classList.toggle("respec-show-overlay"),Hs.hidden=!1,Xs(Hs)}};function ni(e){if("string"==typeof e)return e;const t=e.plugin?`<p class="respec-plugin">(plugin: "${e.plugin}")</p>`:"",n=e.hint?`\n${Os(`<p class="respec-hint"><strong>How to fix:</strong> ${ls(e.hint)}`,{inline:!e.hint.includes("\n")})}\n`:"",r=Array.isArray(e.elements)?`<p class="respec-occurrences">Occurred <strong>${e.elements.length}</strong> times at:</p>\n ${Os(e.elements.map(ri).join("\n"))}`:"",s=e.details?`\n\n<details>\n${e.details}\n</details>\n`:"";return`${Os(`**${Ar(e.message)}**`,{inline:!0})}${n}${r}${s}${t}`}function ri(e){return`* [\`<${e.localName}>\`](#${e.id}) element`}async function si(e){try{ti.show(),await async function(){"loading"===document.readyState&&await new Promise((e=>document.addEventListener("DOMContentLoaded",e)))}(),await Ls(e)}finally{ti.enable()}}document.addEventListener("keydown",(e=>{"Escape"===e.key&&ti.closeModal()})),window.respecUI=ti,ps("error",(e=>ti.error(e))),ps("warn",(e=>ti.warning(e))),window.addEventListener("error",(e=>{console.error(e.error,e.message,e)}));const ii=[Promise.resolve().then((function(){return ai})),Promise.resolve().then((function(){return s})),Promise.resolve().then((function(){return di})),Promise.resolve().then((function(){return so})),Promise.resolve().then((function(){return lo})),Promise.resolve().then((function(){return mo})),Promise.resolve().then((function(){return ko})),Promise.resolve().then((function(){return Eo})),Promise.resolve().then((function(){return Us})),Promise.resolve().then((function(){return Lo})),Promise.resolve().then((function(){return No})),Promise.resolve().then((function(){return Oo})),Promise.resolve().then((function(){return Xi})),Promise.resolve().then((function(){return Mo})),Promise.resolve().then((function(){return Uo})),Promise.resolve().then((function(){return Fo})),Promise.resolve().then((function(){return Ho})),Promise.resolve().then((function(){return rc})),Promise.resolve().then((function(){return oc})),Promise.resolve().then((function(){return gc})),Promise.resolve().then((function(){return bc})),Promise.resolve().then((function(){return kc})),Promise.resolve().then((function(){return _c})),Promise.resolve().then((function(){return Ac})),Promise.resolve().then((function(){return Ic})),Promise.resolve().then((function(){return Oc})),Promise.resolve().then((function(){return ol})),Promise.resolve().then((function(){return fl})),Promise.resolve().then((function(){return ka})),Promise.resolve().then((function(){return Il})),Promise.resolve().then((function(){return Yl})),Promise.resolve().then((function(){return Cl})),Promise.resolve().then((function(){return Na})),Promise.resolve().then((function(){return uu})),Promise.resolve().then((function(){return pu})),Promise.resolve().then((function(){return So})),Promise.resolve().then((function(){return hu})),Promise.resolve().then((function(){return fu})),Promise.resolve().then((function(){return gu})),Promise.resolve().then((function(){return Cu})),Promise.resolve().then((function(){return _u})),Promise.resolve().then((function(){return Ru})),Promise.resolve().then((function(){return Iu})),Promise.resolve().then((function(){return Xu})),Promise.resolve().then((function(){return ad})),Promise.resolve().then((function(){return dd})),Promise.resolve().then((function(){return md})),Promise.resolve().then((function(){return wd})),Promise.resolve().then((function(){return Sd})),Promise.resolve().then((function(){return _d})),Promise.resolve().then((function(){return Pd})),Promise.resolve().then((function(){return jd})),Promise.resolve().then((function(){return Vc})),Promise.resolve().then((function(){return Bd})),Promise.resolve().then((function(){return Kd})),Promise.resolve().then((function(){return Yd})),Promise.resolve().then((function(){return Qd})),Promise.resolve().then((function(){return ap})),Promise.resolve().then((function(){return up})),Promise.resolve().then((function(){return mp})),Promise.resolve().then((function(){return gp})),Promise.resolve().then((function(){return bp})),Promise.resolve().then((function(){return wp})),Promise.resolve().then((function(){return $p})),Promise.resolve().then((function(){return Tp})),Promise.resolve().then((function(){return Lp})),Promise.resolve().then((function(){return Ip})),Promise.resolve().then((function(){return jp})),Promise.resolve().then((function(){return Wp})),Promise.resolve().then((function(){return Hp})),Promise.resolve().then((function(){return Jp})),Promise.resolve().then((function(){return Qp})),Promise.resolve().then((function(){return ih})),Promise.resolve().then((function(){return ch})),Promise.resolve().then((function(){return dh})),Promise.resolve().then((function(){return mh})),Promise.resolve().then((function(){return wh}))];Promise.all(ii).then((e=>si(e))).catch((e=>console.error(e)));var oi=Object.freeze({__proto__:null,default:'// ReSpec Worker\n"use strict";\n// hljs is either inlined by core/worker.js (preferred) or loaded below via\n// importScripts as a fallback when the inline fetch was not possible.\nif (typeof self.hljs === "undefined" && self.RESPEC_HIGHLIGHT_URL) {\n try {\n importScripts(self.RESPEC_HIGHLIGHT_URL);\n } catch (err) {\n console.error("Network error loading highlighter", err);\n }\n}\n\nself.addEventListener("message", ({ data }) => {\n switch (data.action) {\n case "highlight-load-lang": {\n const { langURL, langScript, propName, lang } = data;\n console.warn(\n `[ReSpec] The "highlight-load-lang" worker action is deprecated ` +\n `and will be removed in a future version. ` +\n `To migrate, fetch your language script in the main thread and ` +\n `send the text as "langScript" instead of "langURL". ` +\n `The "langURL" path may fail in Firefox. ` +\n `See https://github.com/speced/respec/issues/5228`\n );\n try {\n if (langScript) {\n const blob = new Blob([langScript], {\n type: "application/javascript",\n });\n const objectURL = URL.createObjectURL(blob);\n try {\n importScripts(objectURL);\n } finally {\n URL.revokeObjectURL(objectURL);\n }\n } else if (langURL) {\n const { protocol, hostname } = new URL(langURL);\n const isSecure =\n protocol === "https:" ||\n (protocol === "http:" &&\n (hostname === "localhost" ||\n hostname === "127.0.0.1" ||\n hostname === "[::1]"));\n if (!isSecure) {\n throw new Error(\n `langURL must be https: or http: on localhost, got "${langURL}"`\n );\n }\n importScripts(langURL);\n } else {\n throw new Error(\n `No langScript or langURL provided for language "${lang}"`\n );\n }\n if (typeof self[propName] === "function") {\n self.hljs.registerLanguage(lang, self[propName]);\n } else {\n throw new Error(\n `Language definer "${propName}" is not a function on self`\n );\n }\n } catch (err) {\n console.error("Failed to load or register language", lang, err);\n }\n delete data.langScript;\n delete data.langURL;\n break;\n }\n case "highlight": {\n const { code } = data;\n const langs = data.languages?.length ? data.languages : undefined;\n try {\n const { value, language } = self.hljs.highlightAuto(code, langs);\n Object.assign(data, { value, language });\n } catch (err) {\n console.error("Could not transform some code?", err);\n Object.assign(data, { value: code, language: "" });\n }\n break;\n }\n }\n self.postMessage(data);\n});\n'});var ai=Object.freeze({__proto__:null,name:"core/location-hash",run:function(){window.location.hash&&document.respec.ready.then((()=>{let e=decodeURIComponent(window.location.hash).slice(1);const t=document.getElementById(e),n=/\W/.test(e);if(!t&&n){const t=e.replace(/[\W]+/gim,"-").replace(/^-+/,"").replace(/-+$/,"");document.getElementById(t)&&(e=t)}window.location.hash=`#${e}`}))}});const ci="w3c/group",li="https://respec.org/w3c/groups/";async function ui(e){let t="",n=e;e.includes("/")&&([t,n]=e.split("/",2));const r=new URL(`${n}/${t}`,li),s=await jr(r.href);if(s.ok){const e=await s.json(),{id:t,name:n,patentURI:r,patentPolicy:i,type:o,wgURI:a}=e;return{wg:n,wgId:t,wgURI:a,wgPatentURI:r,wgPatentPolicy:i,groupType:o}}const i=await s.text();let o,a=`Failed to fetch group details (HTTP: ${s.status}).`;409===s.status?[a,o]=i.split("\n",2):404===s.status&&(o=cs`See the list of [supported group names](https://respec.org/w3c/groups/) to use with the ${"[group]"} configuration option.`),ts(a,ci,{hint:o})}var di=Object.freeze({__proto__:null,name:ci,run:async function(e){if(!e.group)return;const{group:t}=e,n=Array.isArray(t)?await async function(e){const t=await Promise.all(e.map(ui)),n={wg:[],wgId:[],wgURI:[],wgPatentURI:[],wgPatentPolicy:[],groupType:[]};for(const e of t.filter(Boolean))for(const t of Object.keys(n))n[t].push(e[t]);return n}(t):await ui(t);Object.assign(e,n)}});function pi(e){if(!e.key){const t="Found a link without `key` attribute in the configuration. See dev console.";return ns(t,"core/templates/show-link"),void console.warn(t,e)}return sr`
|
|
98
98
|
<dt class="${e.class?e.class:null}">${e.key}</dt>
|
|
99
|
-
${e.data?e.data.map(
|
|
100
|
-
`}function
|
|
101
|
-
${e.href?
|
|
102
|
-
</dd>`}const
|
|
99
|
+
${e.data?e.data.map(hi):hi(e)}
|
|
100
|
+
`}function hi(e){return sr`<dd class="${e.class?e.class:null}">
|
|
101
|
+
${e.href?sr`<a href="${e.href}">${e.value||e.href}</a>`:e.value}
|
|
102
|
+
</dd>`}const fi="core/templates/show-logo";function mi(e,t){const n=sr`<a href="${e.url||null}" class="logo"
|
|
103
103
|
><img
|
|
104
104
|
alt="${e.alt||null}"
|
|
105
105
|
crossorigin
|
|
@@ -108,7 +108,7 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
108
108
|
src="${e.src||null}"
|
|
109
109
|
width="${e.width||null}"
|
|
110
110
|
/>
|
|
111
|
-
</a>`;if(!e.alt){const r=
|
|
111
|
+
</a>`;if(!e.alt){const r=cs`Add the missing "\`alt\`" property describing the logo. See ${"[logos]"} for more information.`;ts(`Logo at index ${t}${e.src?`, with \`src\` ${e.src}, `:""} is missing required "\`alt\`" property.`,fi,{hint:r,elements:[n]})}if(!e.src){const e=cs`The \`src\` property is required on every logo. See ${"[logos]"} for more information.`;ts(`Logo at index ${t} is missing "\`src\`" property.`,fi,{hint:e,elements:[n]})}return n}const gi="core/templates/show-people",bi=Nr({en:{until:e=>sr` Until ${e} `},es:{until:e=>sr` Hasta ${e} `},ko:{until:e=>sr` ${e} 이전 `},ja:{until:e=>sr` ${e} 以前 `},de:{until:e=>sr` bis ${e} `},zh:{until:e=>sr` 直到 ${e} `}}),yi=()=>sr`<svg
|
|
112
112
|
width="16"
|
|
113
113
|
height="16"
|
|
114
114
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -127,104 +127,109 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
127
127
|
class="st1"
|
|
128
128
|
d="M86.3 186.2H70.9V79.1h15.4v107.1zM108.9 79.1h41.6c39.6 0 57 28.3 57 53.6 0 27.5-21.5 53.6-56.8 53.6h-41.8V79.1zm15.4 93.3h24.5c34.9 0 42.9-26.5 42.9-39.7C191.7 111.2 178 93 148 93h-23.7v79.4zM88.7 56.8c0 5.5-4.5 10.1-10.1 10.1s-10.1-4.6-10.1-10.1c0-5.6 4.5-10.1 10.1-10.1s10.1 4.6 10.1 10.1z"
|
|
129
129
|
/>
|
|
130
|
-
</svg>`;function
|
|
131
|
-
>${
|
|
132
|
-
>`;s.push(
|
|
130
|
+
</svg>`;function wi(e,t){const n=e[t];if(!Array.isArray(n)||!n.length)return;const r=(s=t,function(e,t){const n="https://respec.org/docs/",r=`See [person](${n}#person) configuration for available options.`,i=`Error processing the [person object](${n}#person) at index ${t} of the "[\`${s}\`](${n}#${s})" configuration option.`;if(!e.name)return ts(`${i} Missing required property \`"name"\`.`,gi,{hint:r}),!1;if(e.orcid){const{orcid:n}=e,r=new URL(n,"https://orcid.org/");if("https://orcid.org"!==r.origin){const n=`${i} ORCID "${e.orcid}" at index ${t} is invalid.`,s=`The origin should be "https://orcid.org", not "${r.origin}".`;return ts(n,gi,{hint:s}),!1}const s=r.pathname.slice(1).replace(/\/$/,"");if(!/^\d{4}-\d{4}-\d{4}-\d{3}(\d|X)$/.test(s))return ts(`${i} ORCID "${s}" has wrong format.`,gi,{hint:'ORCIDs have the format "1234-1234-1234-1234."'}),!1;if(!function(e){const t=e[e.length-1],n=e.split("").slice(0,-1).filter((e=>/\d/.test(e))).map(Number).reduce(((e,t)=>2*(e+t)),0),r=(12-n%11)%11,s=10===r?"X":String(r);return t===s}(n))return ts(`${i} ORCID "${n}" failed checksum check.`,gi,{hint:"Please check that the ORCID is valid."}),!1;e.orcid=r.href}return e.retiredDate&&(o=e.retiredDate,"Invalid Date"===(/\d{4}-\d{2}-\d{2}/.test(o)?new Date(o):"Invalid Date").toString())?(ts(`${i} The property "\`retiredDate\`" is not a valid date.`,gi,{hint:`The expected format is YYYY-MM-DD. ${r}`}),!1):!(e.hasOwnProperty("extras")&&!function(e,t,n){return Array.isArray(e)?e.every(((e,r)=>{switch(!0){case"object"!=typeof e:return ts(`${n}. Member "extra" at index ${r} is not an object.`,gi,{hint:t}),!1;case!e.hasOwnProperty("name"):return ts(`${n} \`PersonExtra\` object at index ${r} is missing required "name" member.`,gi,{hint:t}),!1;case"string"==typeof e.name&&""===e.name.trim():return ts(`${n} \`PersonExtra\` object at index ${r} "name" can't be empty.`,gi,{hint:t}),!1}return!0})):(ts(`${n}. A person's "extras" member must be an array.`,gi,{hint:t}),!1)}(e.extras??[],r,i))&&(e.url&&e.mailto&&ns(`${i} Has both "url" and "mailto" property.`,gi,{hint:`Please choose either "url" or "mailto" ("url" is preferred). ${r}`}),e.companyURL&&!e.company&&ns(`${i} Has a "\`companyURL\`" property but no "\`company\`" property.`,gi,{hint:`Please add a "\`company\`" property. ${r}.`}),!0);var o});var s;return n.filter(r).map(vi)}function vi(e){const t=[e.name],n=[e.company],r=e.w3cid||null,s=[];if(e.mailto&&(e.url=`mailto:${e.mailto}`),e.url){const n="mailto:"===new URL(e.url,document.location.href).protocol?"ed_mailto u-email email p-name":"u-url url p-name fn";s.push(sr`<a class="${n}" href="${e.url}">${t}</a>`)}else s.push(sr`<span class="p-name fn">${t}</span>`);if(e.orcid&&s.push(sr`<a class="p-name orcid" href="${e.orcid}">${yi()}</a>`),e.company){const t="p-org org h-org",r=e.companyURL?sr`<a class="${t}" href="${e.companyURL}">${n}</a>`:sr`<span class="${t}">${n}</span>`;s.push(sr` (${r})`)}e.note&&s.push(document.createTextNode(` (${e.note})`)),e.extras&&s.push(...e.extras.map((e=>sr`, ${function(e){const t=e.class||null,{name:n,href:r}=e;return r?sr`<a href="${r}" class="${t}">${n}</a>`:sr`<span class="${t}">${n}</span>`}(e)}`)));const{retiredDate:i}=e;if(e.retiredDate){const e=sr`<time datetime="${i}"
|
|
131
|
+
>${$r.format(new Date(i??""))}</time
|
|
132
|
+
>`;s.push(sr` - ${bi.until(e)} `)}return sr`<dd
|
|
133
133
|
class="editor p-author h-card vcard"
|
|
134
134
|
data-editor-id="${r}"
|
|
135
135
|
>
|
|
136
136
|
${s}
|
|
137
|
-
</dd>`}const
|
|
138
|
-
${e.logos.length?
|
|
139
|
-
${document.querySelector("h1#title")} ${
|
|
140
|
-
<p id="w3c-state">${function(e){const t=e.isCR||e.isCRY?e.longStatus:e.textStatus,n=e.prependW3C?
|
|
137
|
+
</dd>`}const ki=Nr({en:{archives:"archives",author:"Author:",authors:"Authors:",commit_history:"Commit history",edited_in_place:"edited in place",editor:"Editor:",editors:"Editors:",feedback:"Feedback:",former_editor:"Former editor:",former_editors:"Former editors:",history:"History:",implementation_report:"Implementation report:",latest_editors_draft:"Latest editor's draft:",latest_published_version:"Latest published version:",latest_recommendation:"Latest Recommendation:",message_topic:"… message topic …",more_details_about_this_doc:"More details about this document",multiple_alternates:e=>`This document is also available in ${e?"these non-normative formats":"this non-normative format"}:`,prev_editor_draft:"Previous editor's draft:",prev_recommendation:"Previous Recommendation:",prev_version:"Previous version:",publication_history:"Publication history",test_suite:"Test suite:",this_version:"This version:",with_subject_line:"with subject line",your_topic_here:"YOUR TOPIC HERE"},ko:{author:"저자:",authors:"저자:",editor:"편집자:",editors:"편집자:",former_editor:"이전 편집자:",former_editors:"이전 편집자:",latest_editors_draft:"최신 편집 초안:",latest_published_version:"최신 버전:",this_version:"현재 버전:"},zh:{author:"作者:",authors:"作者:",commit_history:"Git提交历史",editor:"编辑:",editors:"编辑:",feedback:"反馈:",former_editor:"原编辑:",former_editors:"原编辑:",history:"历史:",implementation_report:"实现报告:",latest_editors_draft:"最新编辑草稿:",latest_published_version:"最新发布版本:",latest_recommendation:"最新发布的正式推荐标准:",message_topic:"… 邮件主题 …",prev_editor_draft:"上一版编辑草稿:",prev_recommendation:"上一版正式推荐标准:",prev_version:"上一版:",test_suite:"测试套件:",this_version:"本版本:"},ja:{archives:"アーカイブ",author:"著者:",authors:"著者:",commit_history:"更新履歴",edited_in_place:"改版なく更新",editor:"編者:",editors:"編者:",feedback:"フィードバック:",former_editor:"以前の版の編者:",former_editors:"以前の版の編者:",history:"履歴:",implementation_report:"実装レポート:",latest_editors_draft:"最新の編集用草案:",latest_published_version:"最新バージョン:",latest_recommendation:"最新の勧告版:",message_topic:"… メール件名 …",more_details_about_this_doc:"この文書についてのより詳細",prev_editor_draft:"前回の編集用草案:",prev_recommendation:"前回の勧告版:",prev_version:"前回のバージョン:",publication_history:"公表履歴",test_suite:"テストスイート:",this_version:"このバージョン:",with_subject_line:"次の件名で"},nl:{author:"Auteur:",authors:"Auteurs:",editor:"Redacteur:",editors:"Redacteurs:",latest_editors_draft:"Laatste werkversie:",latest_published_version:"Laatst gepubliceerde versie:",this_version:"Deze versie:"},es:{archives:"archivos",author:"Autor:",authors:"Autores:",commit_history:"Historial de cambios",edited_in_place:"editado en lugar",editor:"Editor:",editors:"Editores:",feedback:"Comentarios:",former_editor:"Antiguo editor:",former_editors:"Antiguos editores:",history:"Historia:",implementation_report:"Informe de implementación:",latest_editors_draft:"Última versión del editor:",latest_published_version:"Última versión publicada:",latest_recommendation:"Recomendación más reciente:",message_topic:"… detalles de mensaje …",more_details_about_this_doc:"Más detalles sobre este documento:",publication_history:"Historial de publicación",prev_editor_draft:"Última versión del editor:",prev_recommendation:"Última Recomendación:",prev_version:"Última versión:",test_suite:"Suite de pruebas:",this_version:"Esta versión:",with_subject_line:"con línea de asunto",your_topic_here:"TU SUJETO AQUÍ"},de:{archives:"Archiv",author:"Autor/in:",authors:"Autor/innen:",commit_history:"Commit-Historie",edited_in_place:"zuletzt geändert am",editor:"Redaktion:",editors:"Redaktion:",feedback:"Feedback:",former_editor:"Frühere Mitwirkende:",former_editors:"Frühere Mitwirkende:",history:"Verlauf:",implementation_report:"Umsetzungsbericht:",latest_editors_draft:"Letzter Entwurf:",latest_published_version:"Letzte publizierte Fassung:",latest_recommendation:"Aktuellste Empfehlung:",more_details_about_this_doc:"Mehr Informationen über dieses Dokument",multiple_alternates:e=>`Dieses Dokument ist ebenfalls in ${e?"diesen nicht-normativen Formaten verfügbar":"diesem nicht-normativen Format verfügbar"}:`,prev_editor_draft:"Vorheriger Entwurf:",prev_recommendation:"Vorherige Empfehlung:",prev_version:"Vorherige Version:",publication_history:"Veröffentlichungsverlauf",test_suite:"Testumgebung:",this_version:"Diese Fassung:"},cs:{archives:"archivy",author:"Autor:",authors:"Autoři:",commit_history:"Historie změn",edited_in_place:"upraveno přímo",editor:"Editor:",editors:"Editoři:",feedback:"Zpětná vazba:",former_editor:"Bývalý editor:",former_editors:"Bývalí editoři:",history:"Historie:",implementation_report:"Implementační zpráva:",latest_editors_draft:"Nejnovější pracovní verze:",latest_published_version:"Nejnovější publikovaná verze:",latest_recommendation:"Nejnovější doporučení:",message_topic:"… předmět zprávy …",more_details_about_this_doc:"Více informací o tomto dokumentu",multiple_alternates:e=>`Tento dokument je také dostupný v ${e?"těchto ne-normativních formátech":"tomto ne-normativním formátu"}:`,prev_editor_draft:"Předchozí pracovní verze:",prev_recommendation:"Předchozí doporučení:",prev_version:"Předchozí verze:",publication_history:"Historie publikací",test_suite:"Testovací sada:",this_version:"Tato verze:",with_subject_line:"s předmětem",your_topic_here:"VÁŠ PŘEDMĚT ZDE"}});function $i(e){let t=document.querySelector("h2#subtitle");return t&&t.parentElement?(t.remove(),e.subtitle=t.textContent.trim()):e.subtitle&&(t=document.createElement("h2"),t.textContent=e.subtitle,t.id="subtitle"),t&&t.classList.add("subtitle"),t}var xi=(e,t)=>(ps("beforesave",(e=>{const t=e.querySelector(".head details");t&&(t.open=!0)})),sr`<div class="head">
|
|
138
|
+
${(e.logos??[]).length?sr`<p class="logos">${(e.logos??[]).map(mi)}</p>`:""}
|
|
139
|
+
${document.querySelector("h1#title")} ${$i(e)}
|
|
140
|
+
<p id="w3c-state">${function(e){const t=e.isCR||e.isCRY?e.longStatus:e.textStatus,n=e.prependW3C?sr`<a href="https://www.w3.org/standards/types#${e.specStatus}"
|
|
141
141
|
>W3C ${t}</a
|
|
142
|
-
>`:
|
|
142
|
+
>`:sr`${t}`;return sr`${n}${" "}
|
|
143
143
|
<time class="dt-published" datetime="${e.dashDate}"
|
|
144
|
-
>${
|
|
145
|
-
>${e.modificationDate?
|
|
144
|
+
>${$r.format(e.publishDate)}</time
|
|
145
|
+
>${e.modificationDate?sr`, ${ki.edited_in_place}${" "}
|
|
146
146
|
<time
|
|
147
147
|
class="dt-modified"
|
|
148
|
-
datetime="${
|
|
149
|
-
>${
|
|
148
|
+
datetime="${vr.format(e.modificationDate)}"
|
|
149
|
+
>${$r.format(e.modificationDate)}</time
|
|
150
150
|
>`:""}`}(e)}</p>
|
|
151
151
|
<details open="${localStorage.getItem("tr-metadata")||"true"}">
|
|
152
|
-
<summary>${
|
|
152
|
+
<summary>${ki.more_details_about_this_doc}</summary>
|
|
153
153
|
<dl>
|
|
154
|
-
${e.thisVersion?
|
|
154
|
+
${e.thisVersion?sr`<dt>${ki.this_version}</dt>
|
|
155
155
|
<dd>
|
|
156
156
|
<a class="u-url" href="${e.thisVersion}"
|
|
157
157
|
>${e.thisVersion}</a
|
|
158
158
|
>
|
|
159
159
|
</dd>`:""}
|
|
160
|
-
${"latestVersion"in e?
|
|
160
|
+
${"latestVersion"in e?sr`<dt>${ki.latest_published_version}</dt>
|
|
161
161
|
<dd>
|
|
162
|
-
${e.latestVersion?
|
|
162
|
+
${e.latestVersion?sr`<a href="${e.latestVersion}"
|
|
163
163
|
>${e.latestVersion}</a
|
|
164
164
|
>`:"none"}
|
|
165
165
|
</dd>`:""}
|
|
166
|
-
${e.edDraftURI?
|
|
167
|
-
<dt>${
|
|
166
|
+
${e.edDraftURI?sr`
|
|
167
|
+
<dt>${ki.latest_editors_draft}</dt>
|
|
168
168
|
<dd><a href="${e.edDraftURI}">${e.edDraftURI}</a></dd>
|
|
169
169
|
`:""}
|
|
170
|
-
${e.historyURI||e.github?
|
|
171
|
-
${e.historyURI?
|
|
170
|
+
${e.historyURI||e.github?sr`<dt>${ki.history}</dt>
|
|
171
|
+
${e.historyURI?sr`<dd>
|
|
172
172
|
<a href="${e.historyURI}">${e.historyURI}</a>
|
|
173
173
|
</dd>`:""}
|
|
174
|
-
${e.github?
|
|
175
|
-
<a
|
|
176
|
-
|
|
174
|
+
${e.github?sr`<dd>
|
|
175
|
+
<a
|
|
176
|
+
href="${e.github.commitHistoryURL}"
|
|
177
|
+
>${ki.commit_history}</a
|
|
177
178
|
>
|
|
178
179
|
</dd>`:""}`:""}
|
|
179
|
-
${e.testSuiteURI?
|
|
180
|
-
<dt>${
|
|
180
|
+
${e.testSuiteURI?sr`
|
|
181
|
+
<dt>${ki.test_suite}</dt>
|
|
181
182
|
<dd><a href="${e.testSuiteURI}">${e.testSuiteURI}</a></dd>
|
|
182
183
|
`:""}
|
|
183
|
-
${e.implementationReportURI?
|
|
184
|
-
<dt>${
|
|
184
|
+
${e.implementationReportURI?sr`
|
|
185
|
+
<dt>${ki.implementation_report}</dt>
|
|
185
186
|
<dd>
|
|
186
187
|
<a href="${e.implementationReportURI}"
|
|
187
188
|
>${e.implementationReportURI}</a
|
|
188
189
|
>
|
|
189
190
|
</dd>
|
|
190
191
|
`:""}
|
|
191
|
-
${e.prevED?
|
|
192
|
-
<dt>${
|
|
192
|
+
${e.prevED?sr`
|
|
193
|
+
<dt>${ki.prev_editor_draft}</dt>
|
|
193
194
|
<dd><a href="${e.prevED}">${e.prevED}</a></dd>
|
|
194
195
|
`:""}
|
|
195
|
-
${e.showPreviousVersion?
|
|
196
|
-
<dt>${
|
|
196
|
+
${e.showPreviousVersion?sr`
|
|
197
|
+
<dt>${ki.prev_version}</dt>
|
|
197
198
|
<dd><a href="${e.prevVersion}">${e.prevVersion}</a></dd>
|
|
198
199
|
`:""}
|
|
199
|
-
${e.prevRecURI?e.isRec?
|
|
200
|
-
<dt>${
|
|
200
|
+
${e.prevRecURI?e.isRec?sr`
|
|
201
|
+
<dt>${ki.prev_recommendation}</dt>
|
|
201
202
|
<dd><a href="${e.prevRecURI}">${e.prevRecURI}</a></dd>
|
|
202
|
-
`:
|
|
203
|
-
<dt>${
|
|
203
|
+
`:sr`
|
|
204
|
+
<dt>${ki.latest_recommendation}</dt>
|
|
204
205
|
<dd><a href="${e.prevRecURI}">${e.prevRecURI}</a></dd>
|
|
205
206
|
`:""}
|
|
206
|
-
${e.editors.length?
|
|
207
|
-
<dt
|
|
208
|
-
|
|
207
|
+
${(e.editors??[]).length?sr`
|
|
208
|
+
<dt>
|
|
209
|
+
${(e.editors??[]).length>1?ki.editors:ki.editor}
|
|
210
|
+
</dt>
|
|
211
|
+
${wi(e,"editors")}
|
|
209
212
|
`:""}
|
|
210
|
-
${e.formerEditors.length?
|
|
213
|
+
${(e.formerEditors??[]).length?sr`
|
|
211
214
|
<dt>
|
|
212
|
-
${e.formerEditors.length>1?
|
|
215
|
+
${(e.formerEditors??[]).length>1?ki.former_editors:ki.former_editor}
|
|
213
216
|
</dt>
|
|
214
|
-
${
|
|
217
|
+
${wi(e,"formerEditors")}
|
|
215
218
|
`:""}
|
|
216
|
-
${e.authors.length?
|
|
217
|
-
<dt
|
|
218
|
-
|
|
219
|
+
${(e.authors??[]).length?sr`
|
|
220
|
+
<dt>
|
|
221
|
+
${(e.authors??[]).length>1?ki.authors:ki.author}
|
|
222
|
+
</dt>
|
|
223
|
+
${wi(e,"authors")}
|
|
219
224
|
`:""}
|
|
220
|
-
${e.github||e.wgPublicList?
|
|
221
|
-
${
|
|
222
|
-
${e.errata?
|
|
225
|
+
${e.github||e.wgPublicList?sr`<dt>${ki.feedback}</dt>
|
|
226
|
+
${Ci(e)}`:""}
|
|
227
|
+
${e.errata?sr`<dt>Errata:</dt>
|
|
223
228
|
<dd><a href="${e.errata}">Errata exists</a>.</dd>`:""}
|
|
224
|
-
${e.otherLinks?e.otherLinks.map(
|
|
229
|
+
${e.otherLinks?e.otherLinks.map(pi):""}
|
|
225
230
|
</dl>
|
|
226
231
|
</details>
|
|
227
|
-
${e.isRec?
|
|
232
|
+
${e.isRec?sr`<p>
|
|
228
233
|
See also
|
|
229
234
|
<a
|
|
230
235
|
href="${`https://www.w3.org/Translations/?technology=${e.shortName}`}"
|
|
@@ -232,75 +237,75 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
232
237
|
<strong>translations</strong></a
|
|
233
238
|
>.
|
|
234
239
|
</p>`:""}
|
|
235
|
-
${e.alternateFormats?
|
|
236
|
-
${
|
|
240
|
+
${e.alternateFormats?sr`<p>
|
|
241
|
+
${ki.multiple_alternates(t.multipleAlternates)}
|
|
237
242
|
${t.alternatesHTML}
|
|
238
243
|
</p>`:""}
|
|
239
|
-
${function(e){const t=document.querySelector(".copyright");if(t)return t.remove(),t;if(e.isUnofficial&&e.licenseInfo)return
|
|
244
|
+
${function(e){const t=document.querySelector(".copyright");if(t)return t.remove(),t;if(e.isUnofficial&&e.licenseInfo)return sr`<p class="copyright">
|
|
240
245
|
Copyright ©
|
|
241
246
|
${e.copyrightStart?`${e.copyrightStart}-`:""}${e.publishYear}
|
|
242
247
|
the document editors/authors.
|
|
243
|
-
${"unlicensed"!==e.licenseInfo.name?
|
|
248
|
+
${"unlicensed"!==e.licenseInfo.name?sr`Text is available under the
|
|
244
249
|
<a rel="license" href="${e.licenseInfo.url}"
|
|
245
250
|
>${e.licenseInfo.name}</a
|
|
246
251
|
>; additional terms may apply.`:""}
|
|
247
|
-
</p>`;return function(e){return
|
|
252
|
+
</p>`;return function(e){return sr`<p class="copyright">
|
|
248
253
|
<a href="https://www.w3.org/policies/#copyright">Copyright</a>
|
|
249
254
|
©
|
|
250
255
|
${e.copyrightStart?`${e.copyrightStart}-`:""}${e.publishYear}
|
|
251
|
-
${e.additionalCopyrightHolders?
|
|
256
|
+
${e.additionalCopyrightHolders?sr` ${[e.additionalCopyrightHolders]} & `:""}
|
|
252
257
|
<a href="https://www.w3.org/">World Wide Web Consortium</a>.
|
|
253
258
|
<abbr title="World Wide Web Consortium">W3C</abbr><sup>®</sup>
|
|
254
259
|
<a href="https://www.w3.org/policies/#Legal_Disclaimer">liability</a>,
|
|
255
260
|
<a href="https://www.w3.org/policies/#W3C_Trademarks">trademark</a
|
|
256
|
-
>${function(e){const{url:t,short:n,name:r}=e;if("unlicensed"===r)return
|
|
261
|
+
>${function(e){const{url:t,short:n,name:r}=e;if("unlicensed"===r)return sr`. <span class="issue">THIS DOCUMENT IS UNLICENSED</span>.`;return sr` and
|
|
257
262
|
<a rel="license" href="${t}" title="${r}">${n}</a> rules apply.`}(e.licenseInfo)}
|
|
258
263
|
</p>`}(e)}(e)}
|
|
259
264
|
<hr title="Separator for header" />
|
|
260
|
-
</div>`);function
|
|
261
|
-
<a href="${n}">GitHub ${
|
|
262
|
-
(<a href="${
|
|
265
|
+
</div>`);function Ci(e){const t=[];if(e.github){const{repoURL:n,issuesURL:r,newIssuesURL:s,pullsURL:i,fullName:o}=e.github;t.push(sr`<dd>
|
|
266
|
+
<a href="${n}">GitHub ${o}</a>
|
|
267
|
+
(<a href="${i}">pull requests</a>,
|
|
263
268
|
<a href="${s}">new issue</a>,
|
|
264
269
|
<a href="${r}">open issues</a>)
|
|
265
|
-
</dd>`)}if(e.wgPublicList){const n=new URL(`mailto:${e.wgPublicList}@w3.org`),r=e.subjectPrefix??`[${e.shortName}] ${
|
|
270
|
+
</dd>`)}if(e.wgPublicList){const n=new URL(`mailto:${e.wgPublicList}@w3.org`),r=e.subjectPrefix??`[${e.shortName}] ${ki.your_topic_here}`,s=sr`<a
|
|
266
271
|
href="${n.href}?subject=${encodeURIComponent(r)}"
|
|
267
272
|
>${n.pathname}</a
|
|
268
|
-
>`,
|
|
269
|
-
<kbd>${
|
|
270
|
-
>${
|
|
271
|
-
>)`;t.push(
|
|
272
|
-
${e.logos.length?
|
|
273
|
-
${r} ${
|
|
273
|
+
>`,i=e.subjectPrefix||sr`[${e.shortName}] <em>${ki.message_topic}</em>`,o=sr`${ki.with_subject_line}${" "}
|
|
274
|
+
<kbd>${i}</kbd>`,a=new URL(e.wgPublicList,"https://lists.w3.org/Archives/Public/"),c=sr`(<a href="${a}" rel="discussion"
|
|
275
|
+
>${ki.archives}</a
|
|
276
|
+
>)`;t.push(sr`<dd>${s} ${o} ${c}</dd>`)}return t}var Si=(e,t)=>{const n=document.querySelector(".copyright");n&&n.remove();const r=document.querySelector("h1#title"),s=r?.cloneNode(!0);return sr`<div class="head">
|
|
277
|
+
${(e.logos??[]).length?sr`<p class="logos">${(e.logos??[]).map(mi)}</p>`:""}
|
|
278
|
+
${r} ${$i(e)}
|
|
274
279
|
<p id="w3c-state">
|
|
275
280
|
<a href="https://www.w3.org/standards/types#reports"
|
|
276
281
|
>${e.longStatus}</a
|
|
277
282
|
>
|
|
278
283
|
<time class="dt-published" datetime="${e.dashDate}"
|
|
279
|
-
>${
|
|
284
|
+
>${$r.format(e.publishDate)}</time
|
|
280
285
|
>
|
|
281
286
|
</p>
|
|
282
287
|
<dl>
|
|
283
|
-
${e.thisVersion?
|
|
288
|
+
${e.thisVersion?sr`<dt>${ki.this_version}</dt>
|
|
284
289
|
<dd>
|
|
285
290
|
<a class="u-url" href="${e.thisVersion}"
|
|
286
291
|
>${e.thisVersion}</a
|
|
287
292
|
>
|
|
288
293
|
</dd>`:""}
|
|
289
|
-
${"latestVersion"in e?
|
|
294
|
+
${"latestVersion"in e?sr`<dt>${ki.latest_published_version}</dt>
|
|
290
295
|
<dd>
|
|
291
|
-
${e.latestVersion?
|
|
296
|
+
${e.latestVersion?sr`<a href="${e.latestVersion}"
|
|
292
297
|
>${e.latestVersion}</a
|
|
293
298
|
>`:"none"}
|
|
294
299
|
</dd>`:""}
|
|
295
|
-
${e.edDraftURI?
|
|
296
|
-
<dt>${
|
|
300
|
+
${e.edDraftURI?sr`
|
|
301
|
+
<dt>${ki.latest_editors_draft}</dt>
|
|
297
302
|
<dd><a href="${e.edDraftURI}">${e.edDraftURI}</a></dd>
|
|
298
303
|
`:""}
|
|
299
|
-
${e.testSuiteURI?
|
|
304
|
+
${e.testSuiteURI?sr`
|
|
300
305
|
<dt>Test suite:</dt>
|
|
301
306
|
<dd><a href="${e.testSuiteURI}">${e.testSuiteURI}</a></dd>
|
|
302
307
|
`:""}
|
|
303
|
-
${e.implementationReportURI?
|
|
308
|
+
${e.implementationReportURI?sr`
|
|
304
309
|
<dt>Implementation report:</dt>
|
|
305
310
|
<dd>
|
|
306
311
|
<a href="${e.implementationReportURI}"
|
|
@@ -308,47 +313,51 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
308
313
|
>
|
|
309
314
|
</dd>
|
|
310
315
|
`:""}
|
|
311
|
-
${e.prevVersion?
|
|
316
|
+
${e.prevVersion?sr`
|
|
312
317
|
<dt>Previous version:</dt>
|
|
313
318
|
<dd><a href="${e.prevVersion}">${e.prevVersion}</a></dd>
|
|
314
319
|
`:""}
|
|
315
|
-
${e.isCGFinal?"":
|
|
316
|
-
${e.prevED?
|
|
320
|
+
${e.isCGFinal?"":sr`
|
|
321
|
+
${e.prevED?sr`
|
|
317
322
|
<dt>Previous editor's draft:</dt>
|
|
318
323
|
<dd><a href="${e.prevED}">${e.prevED}</a></dd>
|
|
319
324
|
`:""}
|
|
320
325
|
`}
|
|
321
|
-
${e.editors.length?
|
|
322
|
-
<dt
|
|
323
|
-
|
|
326
|
+
${(e.editors??[]).length?sr`
|
|
327
|
+
<dt>
|
|
328
|
+
${(e.editors??[]).length>1?ki.editors:ki.editor}
|
|
329
|
+
</dt>
|
|
330
|
+
${wi(e,"editors")}
|
|
324
331
|
`:""}
|
|
325
|
-
${e.formerEditors.length?
|
|
332
|
+
${(e.formerEditors??[]).length?sr`
|
|
326
333
|
<dt>
|
|
327
|
-
${e.formerEditors.length>1?
|
|
334
|
+
${(e.formerEditors??[]).length>1?ki.former_editors:ki.former_editor}
|
|
328
335
|
</dt>
|
|
329
|
-
${
|
|
336
|
+
${wi(e,"formerEditors")}
|
|
330
337
|
`:""}
|
|
331
|
-
${e.authors.length?
|
|
332
|
-
<dt
|
|
333
|
-
|
|
338
|
+
${(e.authors??[]).length?sr`
|
|
339
|
+
<dt>
|
|
340
|
+
${(e.authors??[]).length>1?ki.authors:ki.author}
|
|
341
|
+
</dt>
|
|
342
|
+
${wi(e,"authors")}
|
|
334
343
|
`:""}
|
|
335
|
-
${e.github||e.wgPublicList?
|
|
336
|
-
${
|
|
337
|
-
${e.otherLinks?e.otherLinks.map(
|
|
344
|
+
${e.github||e.wgPublicList?sr`<dt>${ki.feedback}</dt>
|
|
345
|
+
${Ci(e)}`:""}
|
|
346
|
+
${e.otherLinks?e.otherLinks.map(pi):""}
|
|
338
347
|
</dl>
|
|
339
|
-
${e.alternateFormats?
|
|
348
|
+
${e.alternateFormats?sr`<p>
|
|
340
349
|
${t.multipleAlternates?"This document is also available in these non-normative formats:":"This document is also available in this non-normative format:"}
|
|
341
350
|
${t.alternatesHTML}
|
|
342
351
|
</p>`:""}
|
|
343
|
-
${n||
|
|
352
|
+
${n||sr`<p class="copyright">
|
|
344
353
|
<a href="https://www.w3.org/policies/#copyright">Copyright</a>
|
|
345
354
|
©
|
|
346
355
|
${e.copyrightStart?`${e.copyrightStart}-`:""}${e.publishYear}
|
|
347
|
-
${e.additionalCopyrightHolders?
|
|
348
|
-
the Contributors to the ${s
|
|
356
|
+
${e.additionalCopyrightHolders?sr` ${[e.additionalCopyrightHolders]} & `:""}
|
|
357
|
+
the Contributors to the ${s?.childNodes}
|
|
349
358
|
Specification, published by the
|
|
350
359
|
<a href="${e.wgURI}">${e.wg}</a> under the
|
|
351
|
-
${e.isCGFinal?
|
|
360
|
+
${e.isCGFinal?sr`
|
|
352
361
|
<a href="https://www.w3.org/community/about/agreements/fsa/"
|
|
353
362
|
>W3C Community Final Specification Agreement (FSA)</a
|
|
354
363
|
>. A human-readable
|
|
@@ -357,7 +366,7 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
357
366
|
>summary</a
|
|
358
367
|
>
|
|
359
368
|
is available.
|
|
360
|
-
`:
|
|
369
|
+
`:sr`
|
|
361
370
|
<a href="https://www.w3.org/community/about/agreements/cla/"
|
|
362
371
|
>W3C Community Contributor License Agreement (CLA)</a
|
|
363
372
|
>. A human-readable
|
|
@@ -369,51 +378,51 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
369
378
|
`}
|
|
370
379
|
</p>`}
|
|
371
380
|
<hr title="Separator for header" />
|
|
372
|
-
</div>`};const
|
|
381
|
+
</div>`};const _i=Nr({en:{sotd:"Status of This Document",status_at_publication:sr`This section describes the status of this
|
|
373
382
|
document at the time of its publication. A list of current W3C
|
|
374
383
|
publications and the latest revision of this technical report can be found
|
|
375
384
|
in the
|
|
376
|
-
<a href="https://www.w3.org/TR/">W3C standards and drafts index</a>.`},ko:{sotd:"현재 문서의 상태",status_at_publication:
|
|
385
|
+
<a href="https://www.w3.org/TR/">W3C standards and drafts index</a>.`},ko:{sotd:"현재 문서의 상태",status_at_publication:sr`이 부분은 현재 문서의 발행 당시 상태에 대해
|
|
377
386
|
기술합니다. W3C 발행 문서의 최신 목록 및 테크니컬 리포트 최신판의
|
|
378
387
|
<a href="https://www.w3.org/TR/">W3C standards and drafts index</a> 에서
|
|
379
|
-
열람할 수 있습니다.`},zh:{sotd:"关于本文档",status_at_publication:
|
|
388
|
+
열람할 수 있습니다.`},zh:{sotd:"关于本文档",status_at_publication:sr`本章节描述了本文档的发布状态。W3C的文档列表和最新版本可通过<a
|
|
380
389
|
href="https://www.w3.org/TR/"
|
|
381
390
|
>W3C技术报告</a
|
|
382
|
-
>索引访问。`},ja:{sotd:"この文書の位置付け",status_at_publication:
|
|
383
|
-
<a href="https://www.w3.org/TR/">W3C standards and drafts index</a>`},nl:{sotd:"Status van dit document"},es:{sotd:"Estado de este Document",status_at_publication:
|
|
391
|
+
>索引访问。`},ja:{sotd:"この文書の位置付け",status_at_publication:sr`この節には、公開時点でのこの文書の位置づけが記されている。現時点でのW3Cの発行文書とこのテクニカルレポートの最新版は、下記から参照できる。
|
|
392
|
+
<a href="https://www.w3.org/TR/">W3C standards and drafts index</a>`},nl:{sotd:"Status van dit document"},es:{sotd:"Estado de este Document",status_at_publication:sr`Esta sección describe el estado del presente
|
|
384
393
|
documento al momento de su publicación. Una lista de las publicaciones
|
|
385
394
|
actuales del W3C y la última revisión del presente informe técnico puede
|
|
386
395
|
hallarse en
|
|
387
396
|
<a href="https://www.w3.org/TR/">el índice de normas y borradores</a> del
|
|
388
|
-
W3C.`},de:{sotd:"Status dieses Dokuments",status_at_publication:
|
|
397
|
+
W3C.`},de:{sotd:"Status dieses Dokuments",status_at_publication:sr`Dieser Abschnitt beschreibt den Status des
|
|
389
398
|
Dokuments zum Zeitpunkt der Publikation. Eine Liste der aktuellen
|
|
390
399
|
Publikatinen des W3C und die aktuellste Fassung dieser Spezifikation kann
|
|
391
|
-
im <a href="https://www.w3.org/TR/">W3C standards and drafts index</a>.`},cs:{sotd:"Stav tohoto dokumentu",status_at_publication:
|
|
400
|
+
im <a href="https://www.w3.org/TR/">W3C standards and drafts index</a>.`},cs:{sotd:"Stav tohoto dokumentu",status_at_publication:sr`Tato sekce popisuje stav tohoto dokumentu v době
|
|
392
401
|
jeho zveřejnění. Seznam aktuálních publikací W3C a nejnovější verzi této
|
|
393
402
|
technické zprávy najdete v
|
|
394
403
|
<a href="https://www.w3.org/TR/">indexu standardů a návrhů W3C</a>
|
|
395
|
-
na https://www.w3.org/TR/.`}}),
|
|
396
|
-
<h2>${
|
|
397
|
-
${e.isPreview?
|
|
398
|
-
${e.isUnofficial?function(e){const{additionalContent:t}=e;return
|
|
404
|
+
na https://www.w3.org/TR/.`}}),Ti="https://www.w3.org/policies/process/20250818/";function Ri(e){return/^[aeiou]/i.test(e)?`an ${e}`:`a ${e}`}var Ei=(e,t)=>sr`
|
|
405
|
+
<h2>${_i.sotd}</h2>
|
|
406
|
+
${e.isPreview?Li(e):""}
|
|
407
|
+
${e.isUnofficial?function(e){const{additionalContent:t}=e;return sr`
|
|
399
408
|
<p>
|
|
400
409
|
This document is a draft of a potential specification. It has no official
|
|
401
410
|
standing of any kind and does not represent the support or consensus of
|
|
402
411
|
any standards organization.
|
|
403
412
|
</p>
|
|
404
413
|
${t}
|
|
405
|
-
`}(t):e.isTagFinding?t.additionalContent:e.isNoTrack?function(e,t){const{isMO:n}=e,{additionalContent:r}=t;return
|
|
414
|
+
`}(t):e.isTagFinding?t.additionalContent:e.isNoTrack?function(e,t){const{isMO:n}=e,{additionalContent:r}=t;return sr`
|
|
406
415
|
<p>
|
|
407
416
|
This document is merely a W3C-internal
|
|
408
417
|
${n?"member-confidential":""} document. It has no official standing
|
|
409
418
|
of any kind and does not represent consensus of the W3C Membership.
|
|
410
419
|
</p>
|
|
411
420
|
${r}
|
|
412
|
-
`}(e,t):
|
|
413
|
-
<p><em>${
|
|
414
|
-
${e.isMemberSubmission?function(e,t){return
|
|
421
|
+
`}(e,t):sr`
|
|
422
|
+
<p><em>${_i.status_at_publication}</em></p>
|
|
423
|
+
${e.isMemberSubmission?function(e,t){return sr`
|
|
415
424
|
${t.additionalContent}
|
|
416
|
-
${e.isMemberSubmission?function(e){const t=`https://www.w3.org/Submission/${e.publishDate.getUTCFullYear()}/${e.submissionCommentNumber}/Comment/`,n="PP2017"===e.wgPatentPolicy?"https://www.w3.org/Consortium/Patent-Policy-20170801/":"https://www.w3.org/policies/patent-policy/";return
|
|
425
|
+
${e.isMemberSubmission?function(e){const t=`https://www.w3.org/Submission/${e.publishDate.getUTCFullYear()}/${e.submissionCommentNumber}/Comment/`,n="PP2017"===e.wgPatentPolicy?"https://www.w3.org/Consortium/Patent-Policy-20170801/":"https://www.w3.org/policies/patent-policy/";return sr`<p>
|
|
417
426
|
By publishing this document, W3C acknowledges that the
|
|
418
427
|
<a href="${e.thisVersion}">Submitting Members</a> have made a formal
|
|
419
428
|
Submission request to W3C for discussion. Publication of this document by
|
|
@@ -435,35 +444,36 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
435
444
|
>list of acknowledged W3C Member Submissions</a
|
|
436
445
|
>.
|
|
437
446
|
</p>`}(e):""}
|
|
438
|
-
`}(e,t):
|
|
447
|
+
`}(e,t):sr`
|
|
439
448
|
${e.sotdAfterWGinfo?"":t.additionalContent}
|
|
440
|
-
${e.overrideStatus?"":
|
|
441
|
-
${n?
|
|
449
|
+
${e.overrideStatus?"":sr` ${function(e){if(!e.wg)return;let t=null;const n=document.querySelector(".addition.proposed"),r=document.querySelector(".correction.proposed"),s=document.querySelector(".addition:not(.proposed)"),i=document.querySelector(".correction:not(.proposed)"),o=n||r||s||i;e.isRec&&o&&(n&&r||s&&i?t=sr`It includes
|
|
450
|
+
${n?sr`<a href="${Ti}#proposed-amendments">
|
|
442
451
|
proposed amendments</a
|
|
443
|
-
>`:
|
|
452
|
+
>`:sr`<a href="${Ti}#candidate-amendments">
|
|
444
453
|
candidate amendments</a
|
|
445
454
|
>`},
|
|
446
455
|
introducing substantive changes and new features since the previous
|
|
447
|
-
Recommendation.`:n||s?t=
|
|
448
|
-
${n?
|
|
456
|
+
Recommendation.`:n||s?t=sr`It includes
|
|
457
|
+
${n?sr`<a href="${Ti}#proposed-addition">
|
|
449
458
|
proposed additions</a
|
|
450
|
-
>`:
|
|
459
|
+
>`:sr`<a href="${Ti}#candidate-addition">
|
|
451
460
|
candidate additions</a
|
|
452
461
|
>`},
|
|
453
|
-
introducing new features since the previous Recommendation.`:(r||
|
|
454
|
-
${r?
|
|
462
|
+
introducing new features since the previous Recommendation.`:(r||i)&&(t=sr`It includes
|
|
463
|
+
${r?sr`<a href="${Ti}#proposed-corrections">
|
|
455
464
|
proposed corrections</a
|
|
456
|
-
>`:
|
|
465
|
+
>`:sr`<a href="${Ti}#candidate-correction">
|
|
457
466
|
candidate corrections</a
|
|
458
|
-
>`}.`));const a=
|
|
459
|
-
<a href="${
|
|
460
|
-
>${
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
${
|
|
467
|
+
>`}.`));const a=zi[e.specStatus]?sr` using the
|
|
468
|
+
<a href="${Ti}#recs-and-notes"
|
|
469
|
+
>${zi[e.specStatus]}
|
|
470
|
+
track</a
|
|
471
|
+
>`:"";return sr`<p>
|
|
472
|
+
This document was published by ${Ai(e)} as
|
|
473
|
+
${Ri(e.longStatus)}${a}. ${t}
|
|
464
474
|
</p>`}(e)} `}
|
|
465
475
|
${e.sotdAfterWGinfo?t.additionalContent:""}
|
|
466
|
-
${e.isRec?function(e){const{revisedRecEnd:t}=e,n=document.querySelector("#sotd.updateable-rec");let r="";document.querySelector(".proposed
|
|
476
|
+
${e.isRec?function(e){const{revisedRecEnd:t}=e,n=document.querySelector("#sotd.updateable-rec");let r="";document.querySelector(".addition.proposed")?r="additions":document.querySelector(".correction.proposed")&&(r="corrections");return sr`
|
|
467
477
|
<p>
|
|
468
478
|
W3C recommends the wide deployment of this specification as a standard for
|
|
469
479
|
the Web.
|
|
@@ -478,59 +488,62 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
478
488
|
>royalty-free licensing</a
|
|
479
489
|
>
|
|
480
490
|
for implementations.
|
|
481
|
-
${n?
|
|
482
|
-
<a href="${
|
|
491
|
+
${n?sr`Future updates to this Recommendation may incorporate
|
|
492
|
+
<a href="${Ti}#allow-new-features">new features</a>.`:""}
|
|
483
493
|
</p>
|
|
484
|
-
${document.querySelector(".addition")?
|
|
494
|
+
${document.querySelector(".addition:not(.proposed)")?sr`<p class="addition">
|
|
485
495
|
Candidate additions are marked in the document.
|
|
486
496
|
</p>`:""}
|
|
487
|
-
${document.querySelector(".correction")?
|
|
497
|
+
${document.querySelector(".correction:not(.proposed)")?sr`<p class="correction">
|
|
488
498
|
Candidate corrections are marked in the document.
|
|
489
499
|
</p>`:""}
|
|
490
|
-
${document.querySelector(".proposed
|
|
500
|
+
${document.querySelector(".addition.proposed")?sr`<p class="addition proposed">
|
|
491
501
|
Proposed additions are marked in the document.
|
|
492
502
|
</p>`:""}
|
|
493
|
-
${document.querySelector(".proposed
|
|
503
|
+
${document.querySelector(".correction.proposed")?sr`<p class="correction proposed">
|
|
494
504
|
Proposed corrections are marked in the document.
|
|
495
505
|
</p>`:""}
|
|
496
|
-
${r?
|
|
506
|
+
${r?sr`<p>
|
|
497
507
|
The W3C Membership and other interested parties are invited to review
|
|
498
508
|
the proposed ${r} and send comments through
|
|
499
|
-
${
|
|
500
|
-
should consult their
|
|
509
|
+
${$r.format(t)}. Advisory
|
|
510
|
+
Committee Representatives should consult their
|
|
501
511
|
<a href="https://www.w3.org/2002/09/wbs/myQuestionnaires"
|
|
502
512
|
>WBS questionnaires</a
|
|
503
513
|
>.
|
|
504
514
|
</p>`:""}
|
|
505
|
-
`}(e):function(e){const t=document.querySelector("#sotd.updateable-rec");let n=null,r=null,s=
|
|
506
|
-
|
|
515
|
+
`}(e):function(e){const t=document.querySelector("#sotd.updateable-rec");let n=null,r=null,s=sr`Publication as
|
|
516
|
+
${Ri(e.textStatus)} does not imply endorsement
|
|
517
|
+
by W3C and its Members.`,i=sr`<p>
|
|
507
518
|
This is a draft document and may be updated, replaced, or obsoleted by other
|
|
508
519
|
documents at any time. It is inappropriate to cite this document as other
|
|
509
520
|
than a work in progress.
|
|
510
|
-
${t?
|
|
511
|
-
<a href="${
|
|
512
|
-
</p>`;"DISC"===e.specStatus&&(
|
|
521
|
+
${t?sr`Future updates to this upcoming Recommendation may incorporate
|
|
522
|
+
<a href="${Ti}#allow-new-features">new features</a>.`:""}
|
|
523
|
+
</p>`;"DISC"===e.specStatus&&(i=sr`<p>
|
|
513
524
|
Publication as a Discontinued Draft implies that this document is no
|
|
514
525
|
longer intended to advance or to be maintained. It is inappropriate to
|
|
515
526
|
cite this document as other than abandoned work.
|
|
516
|
-
</p>`);const
|
|
527
|
+
</p>`);const o=sr`<p>
|
|
517
528
|
This document is maintained and updated at any time. Some parts of this
|
|
518
529
|
document are work in progress.
|
|
519
|
-
</p>`;switch(e.specStatus){case"STMT":s=
|
|
530
|
+
</p>`;switch(e.specStatus){case"STMT":s=sr`<p>
|
|
520
531
|
A W3C Statement is a specification that, after extensive
|
|
521
532
|
consensus-building, is endorsed by
|
|
522
533
|
<abbr title="World Wide Web Consortium">W3C</abbr> and its Members.
|
|
523
|
-
</p>`;break;case"RY":s=
|
|
534
|
+
</p>`;break;case"RY":s=sr`<p>W3C recommends the wide usage of this registry.</p>
|
|
524
535
|
<p>
|
|
525
536
|
A W3C Registry is a specification that, after extensive
|
|
526
537
|
consensus-building, is endorsed by
|
|
527
538
|
<abbr title="World Wide Web Consortium">W3C</abbr> and its Members.
|
|
528
|
-
</p>`;break;case"CRD":n=
|
|
529
|
-
changes from the previous Candidate Recommendation that the Working
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
539
|
+
</p>`;break;case"CRD":n=sr`A Candidate Recommendation Draft integrates
|
|
540
|
+
changes from the previous Candidate Recommendation that the Working
|
|
541
|
+
Group${e.multipleWGs?"s intend":" intends"} to include in a
|
|
542
|
+
subsequent Candidate Recommendation Snapshot.`,"LS"===e.pubMode&&(i=o);break;case"CRYD":n=sr`A Candidate Registry Draft integrates changes
|
|
543
|
+
from the previous Candidate Registry Snapshot that the Working
|
|
544
|
+
Group${e.multipleWGs?"s intend":" intends"} to include in a
|
|
545
|
+
subsequent Candidate Registry Snapshot.`,"LS"===e.pubMode&&(i=o);break;case"CRY":n=sr`A Candidate Registry Snapshot has received
|
|
546
|
+
<a href="${Ti}#dfn-wide-review">wide review</a>.`,r=sr`<p>
|
|
534
547
|
The W3C Membership and other interested parties are invited to review
|
|
535
548
|
the document and send comments through ${e.humanPREnd}. Advisory
|
|
536
549
|
Committee Representatives should consult their
|
|
@@ -538,37 +551,39 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
538
551
|
>WBS questionnaires</a
|
|
539
552
|
>. Note that substantive technical comments were expected during the
|
|
540
553
|
Candidate Recommendation review period that ended ${e.humanCREnd}.
|
|
541
|
-
</p>`;break;case"CR":n=
|
|
542
|
-
<a href="${
|
|
554
|
+
</p>`;break;case"CR":n=sr`A Candidate Recommendation Snapshot has received
|
|
555
|
+
<a href="${Ti}#dfn-wide-review">wide review</a>, is intended to
|
|
543
556
|
gather
|
|
544
557
|
<a href="${e.implementationReportURI}">implementation experience</a>,
|
|
545
558
|
and has commitments from Working Group members to
|
|
546
559
|
<a href="https://www.w3.org/policies/patent-policy/#sec-Requirements"
|
|
547
560
|
>royalty-free licensing</a
|
|
548
561
|
>
|
|
549
|
-
for implementations.`,
|
|
550
|
-
<a href="${
|
|
562
|
+
for implementations.`,i=sr`${t?sr`Future updates to this upcoming Recommendation may incorporate
|
|
563
|
+
<a href="${Ti}#allow-new-features">new features</a>.`:""}`,r="LS"===e.pubMode?sr`<p>
|
|
551
564
|
Comments are welcome at any time but most especially before
|
|
552
|
-
${
|
|
553
|
-
</p>`:
|
|
565
|
+
${$r.format(e.crEnd)}.
|
|
566
|
+
</p>`:sr`<p>
|
|
554
567
|
This Candidate Recommendation is not expected to advance to
|
|
555
|
-
Recommendation any earlier than
|
|
556
|
-
|
|
568
|
+
Recommendation any earlier than
|
|
569
|
+
${$r.format(e.crEnd)}.
|
|
570
|
+
</p>`;break;case"PR":r=sr`<p>
|
|
557
571
|
The W3C Membership and other interested parties are invited to review
|
|
558
|
-
the document and send comments through
|
|
559
|
-
Advisory Committee
|
|
572
|
+
the document and send comments through
|
|
573
|
+
${$r.format(e.prEnd)}. Advisory Committee
|
|
574
|
+
Representatives should consult their
|
|
560
575
|
<a href="https://www.w3.org/2002/09/wbs/myQuestionnaires"
|
|
561
576
|
>WBS questionnaires</a
|
|
562
577
|
>. Note that substantive technical comments were expected during the
|
|
563
578
|
Candidate Recommendation review period that ended
|
|
564
|
-
${
|
|
565
|
-
</p>`;break;case"DNOTE":s=
|
|
566
|
-
<abbr title="World Wide Web Consortium">W3C</abbr> nor its Members.`;break;case"NOTE":s=
|
|
567
|
-
${
|
|
579
|
+
${$r.format(e.crEnd)}.
|
|
580
|
+
</p>`;break;case"DNOTE":s=sr`${e.textStatus}s are not endorsed by
|
|
581
|
+
<abbr title="World Wide Web Consortium">W3C</abbr> nor its Members.`;break;case"NOTE":s=sr`This ${e.textStatus} is endorsed by
|
|
582
|
+
${Ai(e)}, but is not endorsed by
|
|
568
583
|
<abbr title="World Wide Web Consortium">W3C</abbr> itself nor its
|
|
569
|
-
Members.`,
|
|
570
|
-
${
|
|
571
|
-
${function(e){const{isNote:t,isRegistry:n,wgId:r,multipleWGs:s,wgPatentHTML:
|
|
584
|
+
Members.`,i=""}return sr`<p>${s} ${n}</p>
|
|
585
|
+
${i} ${r}`}(e)}
|
|
586
|
+
${function(e){const{isNote:t,isRegistry:n,wgId:r,multipleWGs:s,wgPatentHTML:i,wgPatentURI:o,wgPatentPolicy:a}=e,c="PP2017"===a?"https://www.w3.org/Consortium/Patent-Policy-20170801/":"https://www.w3.org/policies/patent-policy/",l=t||n?sr`
|
|
572
587
|
The
|
|
573
588
|
<a href="${c}"
|
|
574
589
|
>${"PP2017"===a?"1 August 2017 ":""}W3C Patent
|
|
@@ -576,21 +591,21 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
576
591
|
>
|
|
577
592
|
does not carry any licensing requirements or commitments on this
|
|
578
593
|
document.
|
|
579
|
-
`:
|
|
594
|
+
`:sr`
|
|
580
595
|
This document was produced by ${s?"groups":"a group"}
|
|
581
596
|
operating under the
|
|
582
597
|
<a href="${c}"
|
|
583
598
|
>${"PP2017"===a?"1 August 2017 ":""}W3C Patent
|
|
584
599
|
Policy</a
|
|
585
600
|
>.
|
|
586
|
-
`;return
|
|
601
|
+
`;return sr`<p data-deliverer="${t||n?r:null}">
|
|
587
602
|
${l}
|
|
588
|
-
${t||n?"":
|
|
589
|
-
${s?
|
|
603
|
+
${t||n?"":sr`
|
|
604
|
+
${s?sr` W3C maintains ${i} `:sr`
|
|
590
605
|
W3C maintains a
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
606
|
+
${o?sr`<a href="${o}" rel="disclosure"
|
|
607
|
+
>public list of any patent disclosures</a
|
|
608
|
+
>`:"public list of any patent disclosures"}
|
|
594
609
|
`}
|
|
595
610
|
made in connection with the deliverables of
|
|
596
611
|
${s?"each group; these pages also include":"the group; that page also includes"}
|
|
@@ -605,17 +620,17 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
605
620
|
</p>`}(e)}
|
|
606
621
|
<p>
|
|
607
622
|
This document is governed by the
|
|
608
|
-
<a id="w3c_process_revision" href="${
|
|
623
|
+
<a id="w3c_process_revision" href="${Ti}"
|
|
609
624
|
>18 August 2025 W3C Process Document</a
|
|
610
625
|
>.
|
|
611
626
|
</p>
|
|
612
627
|
`}
|
|
613
628
|
`}
|
|
614
629
|
${t.additionalSections}
|
|
615
|
-
`;function
|
|
630
|
+
`;function Li(e){const{prUrl:t,prNumber:n,edDraftURI:r}=e;return sr`<details class="annoying-warning" open="">
|
|
616
631
|
<summary>
|
|
617
632
|
This is a
|
|
618
|
-
preview${t&&n?
|
|
633
|
+
preview${t&&n?sr`
|
|
619
634
|
of pull request
|
|
620
635
|
<a href="${t}">#${n}</a>
|
|
621
636
|
`:""}
|
|
@@ -623,25 +638,25 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
623
638
|
<p>
|
|
624
639
|
Do not attempt to implement this version of the specification. Do not
|
|
625
640
|
reference this version as authoritative in any way.
|
|
626
|
-
${r?
|
|
641
|
+
${r?sr`
|
|
627
642
|
Instead, see
|
|
628
643
|
<a href="${r}">${r}</a> for the Editor's draft.
|
|
629
644
|
`:""}
|
|
630
645
|
</p>
|
|
631
|
-
</details>`}function
|
|
632
|
-
<h2>${
|
|
633
|
-
${e.isPreview?
|
|
646
|
+
</details>`}function Ai(e){return Array.isArray(e.wg)?Mr(e.wg,((t,n)=>sr`the <a href="${e.wgURI[n]}">${t}</a>`)):e.wg?sr`the <a href="${e.wgURI}">${e.wg}</a>`:void 0}var Pi=(e,t)=>sr`
|
|
647
|
+
<h2>${_i.sotd}</h2>
|
|
648
|
+
${e.isPreview?Li(e):""}
|
|
634
649
|
<p>
|
|
635
650
|
This specification was published by the
|
|
636
651
|
<a href="${e.wgURI}">${e.wg}</a>. It is not a W3C Standard nor is it
|
|
637
652
|
on the W3C Standards Track.
|
|
638
|
-
${e.isCGFinal?
|
|
653
|
+
${e.isCGFinal?sr`
|
|
639
654
|
Please note that under the
|
|
640
655
|
<a href="https://www.w3.org/community/about/agreements/final/"
|
|
641
656
|
>W3C Community Final Specification Agreement (FSA)</a
|
|
642
657
|
>
|
|
643
658
|
other conditions apply.
|
|
644
|
-
`:
|
|
659
|
+
`:sr`
|
|
645
660
|
Please note that under the
|
|
646
661
|
<a href="https://www.w3.org/community/about/agreements/cla/"
|
|
647
662
|
>W3C Community Contributor License Agreement (CLA)</a
|
|
@@ -654,19 +669,19 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
654
669
|
>.
|
|
655
670
|
</p>
|
|
656
671
|
${e.sotdAfterWGinfo?"":t.additionalContent}
|
|
657
|
-
${!e.github&&e.wgPublicList?function(e,t){const{mailToWGPublicListWithSubject:n,mailToWGPublicListSubscription:r}=t,{wgPublicList:s,subjectPrefix:
|
|
672
|
+
${!e.github&&e.wgPublicList?function(e,t){const{mailToWGPublicListWithSubject:n,mailToWGPublicListSubscription:r}=t,{wgPublicList:s,subjectPrefix:i}=e;return sr`<p>
|
|
658
673
|
If you wish to make comments regarding this document, please send them to
|
|
659
674
|
<a href="${n}">${s}@w3.org</a>
|
|
660
675
|
(<a href="${r}">subscribe</a>,
|
|
661
|
-
<a href="${`https://lists.w3.org/Archives/Public/${s}/`}">archives</a>)${
|
|
676
|
+
<a href="${`https://lists.w3.org/Archives/Public/${s}/`}">archives</a>)${i?sr` with <code>${i}</code> at the start of your email's
|
|
662
677
|
subject`:""}.
|
|
663
678
|
</p>`}(e,t):""}
|
|
664
|
-
${e.github?function(e,t){if(e.github||e.wgPublicList)return
|
|
665
|
-
${e.github?
|
|
679
|
+
${e.github?function(e,t){if(e.github||e.wgPublicList)return sr`<p>
|
|
680
|
+
${e.github?sr`
|
|
666
681
|
<a href="${e.issueBase}">GitHub Issues</a> are preferred for
|
|
667
682
|
discussion of this specification.
|
|
668
683
|
`:""}
|
|
669
|
-
${e.wgPublicList?
|
|
684
|
+
${e.wgPublicList?sr`
|
|
670
685
|
${e.github&&e.wgPublicList?"Alternatively, you can send comments to our mailing list.":"Comments regarding this document are welcome."}
|
|
671
686
|
Please send them to
|
|
672
687
|
<a href="${t.mailToWGPublicListWithSubject}"
|
|
@@ -676,23 +691,23 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
|
|
|
676
691
|
<a
|
|
677
692
|
href="${`https://lists.w3.org/Archives/Public/${e.wgPublicList}/`}"
|
|
678
693
|
>archives</a
|
|
679
|
-
>)${e.subjectPrefix?
|
|
694
|
+
>)${e.subjectPrefix?sr` with <code>${e.subjectPrefix}</code> at the start of your
|
|
680
695
|
email's subject`:""}.
|
|
681
696
|
`:""}
|
|
682
697
|
</p>`}(e,t):""}
|
|
683
698
|
${e.sotdAfterWGinfo?t.additionalContent:""}
|
|
684
699
|
${t.additionalSections}
|
|
685
|
-
`;const
|
|
686
|
-
${"[license]"} to one of: ${n}. If in doubt, remove \`license\` and let ReSpec pick one for you.`;
|
|
700
|
+
`;const Ni="w3c/headers";function Ii(e){return new URL(e,"https://www.w3.org/").href}const Di={LS:"WD",LD:"WD",FPWD:"WD","Member-SUBM":"SUBM"},Oi={DNOTE:"Group Note Draft",NOTE:"Group Note",STMT:"Statement","Member-SUBM":"Member Submission",MO:"Member-Only Document",ED:"Editor's Draft",LS:"Living Standard",LD:"Living Document",FPWD:"First Public Working Draft",WD:"Working Draft",CR:"Candidate Recommendation",CRD:"Candidate Recommendation",PR:"Proposed Recommendation",REC:"Recommendation",DISC:"Discontinued Draft",RSCND:"Rescinded Recommendation",DRY:"Registry Draft",CRYD:"Candidate Registry",CRY:"Candidate Registry",RY:"Registry",unofficial:"Unofficial Draft",UD:"Unofficial Draft",base:"",finding:"TAG Finding","draft-finding":"Draft TAG Finding","editor-draft-finding":"Draft TAG Finding","CG-DRAFT":"Draft Community Group Report","CG-FINAL":"Final Community Group Report","BG-DRAFT":"Draft Business Group Report","BG-FINAL":"Final Business Group Report"},ji={...Oi,CR:"Candidate Recommendation Snapshot",CRD:"Candidate Recommendation Draft",CRY:"Candidate Registry Snapshot",CRYD:"Candidate Registry Draft"},zi={DNOTE:"Note",NOTE:"Note",STMT:"Note","WG-NOTE":"Note","IG-NOTE":"Note",FPWD:"Recommendation",WD:"Recommendation",CR:"Recommendation",CRD:"Recommendation",PR:"Recommendation",REC:"Recommendation",DISC:"Recommendation",RSCND:"Recommendation",DRY:"Registry",CRYD:"Registry",CRY:"Registry",RY:"Registry"},Mi=["DNOTE","NOTE","STMT"],Ui=["CR","CRD","DISC","FPWD","PR","REC","RSCND","WD"],qi=["DRY","CRY","CRYD","RY"],Wi=["draft-finding","finding","editor-draft-finding"],Fi=["CG-DRAFT","CG-FINAL"],Bi=["BG-DRAFT","BG-FINAL"],Hi=[...Fi,...Bi],Gi=[...Mi,...Ui,...qi],Vi=["base",...Fi,...Bi,"editor-draft-finding","draft-finding","finding","MO","unofficial"],Ji=new Map([["cc0",{name:"Creative Commons 0 Public Domain Dedication",short:"CC0",url:"https://creativecommons.org/publicdomain/zero/1.0/"}],["w3c-software",{name:"W3C Software Notice and License",short:"W3C Software",url:"https://www.w3.org/copyright/software-license-2002/"}],["w3c-software-doc",{name:"W3C Software and Document Notice and License",short:"permissive document license",url:"https://www.w3.org/copyright/software-license-2023/"}],["cc-by",{name:"Creative Commons Attribution 4.0 International Public License",short:"CC-BY",url:"https://creativecommons.org/licenses/by/4.0/legalcode"}],["document",{name:"W3C Document License",short:"document use",url:"https://www.w3.org/copyright/document-license/"}],["dual",{name:"W3C Dual License",short:"dual license",url:"https://www.w3.org/Consortium/Legal/2013/copyright-documents-dual.html"}]]),Ki=["PP2017","PP2020"];function Zi(e,t,n=new Date){const r=e[t]?new Date(e[t]):new Date(n);if(Number.isFinite(r.valueOf())){const e=vr.format(r);return new Date(e)}return ts(cs`${t} is not a valid date: "${e[t]}". Expected format 'YYYY-MM-DD'.`,Ni),new Date(vr.format(new Date))}function Yi(e,{isTagFinding:t=!1}){const n=e.cloneNode(!0),r=document.createDocumentFragment();for(;n.hasChildNodes()&&(n.nodeType!==Node.ELEMENT_NODE||"section"!==n.firstChild.localName);)r.appendChild(n.firstChild);if(t&&!r.hasChildNodes()){ns(cs`ReSpec does not support automated SotD generation for TAG findings.`,Ni,{hint:"Please add the prerequisite content in the 'sotd' section."})}return{additionalContent:r,additionalSections:n.childNodes}}var Xi=Object.freeze({__proto__:null,W3CNotes:Mi,bgStatus:Bi,cgStatus:Fi,cgbgStatus:Hi,licenses:Ji,name:Ni,noTrackStatus:Vi,recTrackStatus:Ui,registryTrackStatus:qi,run:async function(e){const t=e.specStatus??"";if(e.isBasic="base"===t,e.isCGBG=Hi.includes(t),e.isCGFinal=e.isCGBG&&t.endsWith("G-FINAL"),e.isCR="CR"===t||"CRD"===t,e.isCRDraft="CRD"===t,e.isCRY="CRY"===t||"CRYD"===t,e.isEd="ED"===t,e.isMemberSubmission="Member-SUBM"===t,e.isMO="MO"===t,e.isNote=Mi.includes(t),e.isNoTrack=Vi.includes(t),e.isPR="PR"===t,e.isRecTrack=Ui.includes(t),e.isRec=e.isRecTrack&&"REC"===t,e.isRegistry=qi.includes(t),e.isRegular=!e.isCGBG&&!e.isBasic,e.isTagEditorFinding="editor-draft-finding"===t,e.isTagFinding=Wi.includes(t),e.isUnofficial="unofficial"===t,e.licenseInfo=function(e){let t;if("string"==typeof e.license){const n=e.license.toLowerCase();if(Ji.has(n))t=n;else{const t=`The license "\`${e.license}\`" is not supported.`,n=is([...Ji.keys()].filter((e=>e)),{quotes:!0}),r=cs`Please set
|
|
701
|
+
${"[license]"} to one of: ${n}. If in doubt, remove \`license\` and let ReSpec pick one for you.`;ts(t,Ni,{hint:r})}}if(e.isUnofficial&&!t&&(t="cc-by"),!e.isUnofficial&&["cc-by","cc0"].includes(t)){const t=cs`Please set ${"[license]"} to \`"w3c-software-doc"\` instead.`;ts(cs`License "\`${e.license}\`" is not allowed for W3C Specifications.`,Ni,{hint:t})}return void 0===t?{name:"unlicensed",url:null,short:"UNLICENSED"}:Ji.get(t)}(e),e.prependW3C=!e.isBasic&&!e.isUnofficial,e.longStatus=ji[t],e.textStatus=Oi[t],e.showPreviousVersion=!1,e.isRegular&&!e.shortName){const e=cs`Please set ${"[shortName]"} to a short name for the specification.`;ts(cs`The ${"[shortName]"} configuration option is required for this kind of document.`,Ni,{hint:e})}if(e.publishDate=Zi(e,"publishDate",document.lastModified),e.publishYear=e.publishDate.getUTCFullYear(),e.modificationDate&&(e.modificationDate=Zi(e,"modificationDate",document.lastModified)),e.isRecTrack&&!e.github&&!e.wgPublicList){const e=cs`Use the ${"[github]"} configuration option to add a link to a repository. Alternatively use ${"[wgPublicList]"} to link to a mailing list.`;ts("W3C Process requires a either a link to a public repository or mailing list.",Ni,{hint:e})}if(e.isEd&&!e.edDraftURI){const e=cs`Please set ${"[edDraftURI]"} to the URL of the Editor's Draft. Alternatively, use the set ${"[github]"} option, which automatically sets it for you.`;ns(cs`Editor's Drafts should set ${"[edDraftURI]"} configuration option.`,Ni,{hint:e})}const n=function(e){const{specStatus:t,group:n}=e;if(e.isNoTrack&&!e.isCGBG&&!e.isTagFinding)return"";if(Gi.includes(t??"")||"wg"===e.groupType)return"/TR";switch(t){case"CG-FINAL":case"BG-FINAL":return`/community/reports/${n}`;case"finding":case"draft-finding":return"/2001/tag/doc";case"Member-SUBM":return"/Submission"}if(("tag"===e.group||"ab"===e.group)&&"TR"===e.canonicalURI)return"/TR";return""}(e);if(n&&!e.thisVersion){const r=Di[t]||t,{shortName:s,publishDate:i}=e,o=`${r}-${s}-${Dr(i)}`,a=[...Gi,"Member-SUBM"].includes(t)?`${i.getUTCFullYear()}/`:"";e.thisVersion=Ii(`${n}/${a}${o}/`)}e.isEd&&(e.thisVersion=e.edDraftURI),e.isCGBG&&function(e){const t=Oi[e.specStatus],n=e.latestVersion?new URL(Ii(e.latestVersion)):null;if(!e.wg){return void ts(cs`The ${"[group]"} configuration option is required for this kind of document (${t}).`,Ni)}if(e.isCGFinal){if(!1===("https://www.w3.org"===n?.origin||"https://w3.org/"===n?.origin)){ts(cs`For ${t}, the ${"[latestVersion]"} URL must point to somewhere at https://www.w3.org/.`,Ni,{hint:"Ask a W3C Team Member for a W3C URL where the report can be published."})}}}(e),null!==e.latestVersion&&(e.latestVersion=e.latestVersion?Ii(e.latestVersion):n?Ii(`${n}/${e.shortName}/`):""),e.latestVersion&&function(e){const t=new URL(e.latestVersion);if(("https://www.w3.org"===t.origin||"https://w3.org/"===t.origin)&&t.pathname.startsWith("/TR/")&&!1===["ED",...Gi].includes(e.specStatus)){const t=cs`Ask a W3C Team Member for a W3C URL where the report can be published and change ${"[latestVersion]"} to something else.`;ts(cs`Documents with a status of \`"${e.specStatus}"\` can't be published on the W3C's /TR/ (Technical Report) space.`,Ni,{hint:t})}}(e);const r=`${n}/${e.shortName}`;if(e.previousPublishDate){if(!e.previousMaturity&&!e.isTagFinding){ts(cs`${"[`previousPublishDate`]"} is set, but missing ${"[`previousMaturity`]"}.`,Ni)}e.previousPublishDate=Zi(e,"previousPublishDate");const t=Di[e.previousMaturity]??e.previousMaturity;if(e.isTagFinding&&e.latestVersion){const t=vr.format(e.publishDate);e.thisVersion=Ii(`${r}-${t}`);const n=vr.format(e.previousPublishDate);e.prevVersion=Ii(`${r}-${n}}`)}else if(e.isCGBG||e.isBasic)e.prevVersion=e.prevVersion||"";else{const r=e.previousPublishDate.getUTCFullYear(),{shortName:s}=e,i=Dr(e.previousPublishDate);e.prevVersion=Ii(`${n}/${r}/${t}-${s}-${i}/`)}}e.prevRecShortname&&!e.prevRecURI&&(e.prevRecURI=Ii(`${n}/${e.prevRecShortname}`));const s=e.editors??[],i=e.formerEditors??[];for(let e=0;e<s.length;e++){const t=s[e];"retiredDate"in t&&(i.push(t),s.splice(e--,1))}if(e.editors=s,e.formerEditors=i,0===s.length){const e=cs`Add one or more editors using the ${"[editors]"} configuration option.`;ts("At least one editor is required.",Ni,{hint:e})}else s.length&&e.isRecTrack&&s.forEach(((e,t)=>{if(e.w3cid)return;const n=cs`See ${"[w3cid]"} for instructions for how to retrieve it and add it.`;ts(cs`Editor ${e.name?`"${e.name}"`:`number ${t+1}`} is missing their ${"[w3cid]"}.`,Ni,{hint:n})}));if(e.alternateFormats?.some((({uri:e,label:t})=>!e||!t))){ts(cs`Every ${"[`alternateFormats`]"} entry must have a \`uri\` and a \`label\`.`,Ni)}e.copyrightStart==e.publishYear&&(e.copyrightStart=""),e.dashDate=vr.format(e.publishDate),e.publishISODate=e.publishDate.toISOString(),e.shortISODate=vr.format(e.publishDate),function(e){if(!e.wgPatentPolicy)return;const t=new Set([].concat(e.wgPatentPolicy));if(t.size&&![...t].every((e=>Ki.includes(e)))){const e=cs`Invalid ${"[wgPatentPolicy]"} value(s): ${os([...t].filter((e=>!Ki.includes(e))))}.`,n=`Please use one of: ${is(Ki)}.`;ts(e,Ni,{hint:n})}if(1!==t.size){const e="When collaborating across multiple groups, they must use the same patent policy.",n=cs`For ${"[wgPatentPolicy]"}, please check the patent policies of each group. The patent policies were: ${[...t].join(", ")}.`;ts(e,Ni,{hint:n})}e.wgPatentPolicy=[...t][0]}(e),await async function(e){if(!e.shortName||null===e.historyURI||!e.latestVersion)return;const t=e.isEd||Gi.includes(e.specStatus);if(e.historyURI&&!t){const t=cs`Please remove ${"[historyURI]"}.`;return ts(cs`The ${"[historyURI]"} can't be used with non /TR/ documents.`,Ni,{hint:t}),void(e.historyURI=null)}const n=new URL(e.historyURI??`${e.shortName}/`,"https://www.w3.org/standards/history/");if(e.historyURI&&t||["FPWD","DNOTE","NOTE","DRY"].includes(e.specStatus))return void(e.historyURI=n.href);try{const t=await fetch(n,{method:"HEAD"});t.ok&&(e.historyURI=t.url)}catch{}}(e),e.isTagEditorFinding&&(delete e.thisVersion,delete e.latestVersion),e.isTagFinding&&(e.showPreviousVersion=!!e.previousPublishDate);const o={get multipleAlternates(){return!!(e.alternateFormats&&e.alternateFormats.length>1)},get alternatesHTML(){return e.alternateFormats&&Mr(e.alternateFormats.map((({label:e})=>e)),((t,n)=>{const r=e.alternateFormats[n];return sr`<a
|
|
687
702
|
rel="alternate"
|
|
688
703
|
href="${r.uri}"
|
|
689
704
|
hreflang="${r?.lang??null}"
|
|
690
705
|
type="${r?.type??null}"
|
|
691
706
|
>${r.label}</a
|
|
692
|
-
>`}))}},
|
|
707
|
+
>`}))}},a=(e.isCGBG?Si:xi)(e,o);document.body.prepend(a),document.body.classList.add("h-entry");const c=document.getElementById("sotd")||document.createElement("section");if((e.isCGBG||!e.isNoTrack||e.isTagFinding)&&!c.id){ts("A Status of This Document must include at least on custom paragraph.",Ni,{elements:[c],hint:"Add a `<p>` in the 'sotd' section that reflects the status of this specification."})}c.id=c.id||"sotd",c.classList.add("introductory");const l=[e.wg,e.wgURI,e.wgPatentURI];if(l.some((e=>Array.isArray(e)))&&!l.every((e=>Array.isArray(e)))){const e=cs`Use the ${"[group]"} option with an array instead.`;ts(cs`If one of ${"[wg]"}, ${"[wgURI]"}, or ${"[wgPatentURI]"} is an array, they all have to be.`,Ni,{hint:e})}if(Array.isArray(e.wg)?(e.multipleWGs=e.wg.length>1,e.wgPatentHTML=Mr(e.wg,((t,n)=>sr`a
|
|
693
708
|
<a href="${e.wgPatentURI[n]}" rel="disclosure"
|
|
694
709
|
>public list of any patent disclosures (${t})</a
|
|
695
|
-
>`))):e.multipleWGs=!1,e.isPR&&!e.crEnd){
|
|
710
|
+
>`))):e.multipleWGs=!1,e.isPR&&!e.crEnd){ts(cs`${"[specStatus]"} is "PR" but no ${"[crEnd]"} is specified in the ${"[respecConfig]"} (needed to indicate end of previous CR).`,Ni)}if(e.isCR&&!e.isCRDraft&&!e.crEnd){ts(cs`${"[specStatus]"} is "CR", but no ${"[crEnd]"} is specified in the ${"[respecConfig]"}.`,Ni)}if(e.crEnd=Zi(e,"crEnd"),e.isPR&&!e.prEnd){ts(cs`${"[specStatus]"} is "PR" but no ${"[prEnd]"} is specified in the ${"[respecConfig]"}.`,Ni)}e.prEnd=Zi(e,"prEnd");const u=c.classList.contains("updateable-rec"),d=null!==document.querySelector(".correction:not(.proposed)"),p=null!==document.querySelector(".correction.proposed"),h=null!==document.querySelector(".addition:not(.proposed)"),f=null!==document.querySelector(".addition.proposed"),m=d||h||f||p;if(e.isRec&&!e.errata&&!m){const e=cs`Add an ${"[errata]"} URL to your ${"[respecConfig]"}.`;ts("Recommendations must have an errata link.",Ni,{hint:e})}if(e.isRec&&!u&&(h||d||f||p)){ts(cs`${"[specStatus]"} is "REC" with amendments, but the Recommendation is not marked as allowing revisions.`,Ni)}if(e.isRec&&u&&(f||p)&&!e.revisedRecEnd){ts(cs`${"[specStatus]"} is "REC" with proposed corrections or additions but no ${"[revisedRecEnd]"} is specified in the ${"[respecConfig]"}.`,Ni)}if(e.revisedRecEnd=Zi(e,"revisedRecEnd"),e.noRecTrack&&Ui.includes(t)){const e=cs`Document configured as ${"[noRecTrack]"}, but its status ("${t}") puts it on the W3C Rec Track.`,n=is(Ui,{quotes:!0});ts(e,Ni,{hint:`Status **can't** be any of: ${n}.`})}if(c.classList.contains("override")||sr.bind(c)`${function(e,t){const n={...Yi(t,e),get mailToWGPublicList(){return`mailto:${e.wgPublicList}@w3.org`},get mailToWGPublicListWithSubject(){const t=e.subjectPrefix?`?subject=${encodeURIComponent(e.subjectPrefix)}`:"";return this.mailToWGPublicList+t},get mailToWGPublicListSubscription(){return`mailto:${e.wgPublicList}-request@w3.org?subject=subscribe`}},r=e.isCGBG?Pi:Ei;return r(e,n)}(e,c)}`,!e.implementationReportURI&&e.isCR){const e=cs`CR documents must have an ${"[implementationReportURI]"} that describes the [implementation experience](https://www.w3.org/policies/process/#implementation-experience).`;ts(cs`Missing ${"[implementationReportURI]"} configuration option in ${"[respecConfig]"}.`,Ni,{hint:e})}if(!e.implementationReportURI&&e.isPR){ns(cs`PR documents should include an ${"[implementationReportURI]"}, which needs to link to a document that describes the [implementation experience](https://www.w3.org/policies/process-20190301/#implementation-experience).`,Ni)}ds("amend-user-config",{publishISODate:e.publishISODate,generatedSubtitle:Pr(document.getElementById("w3c-state")?.textContent??"")})},status2text:Oi,status2track:zi,tagStatus:Wi,trStatus:Gi});const Qi={lint:{"no-headingless-sections":!0,"no-http-props":!0,"no-unused-vars":!1,"check-punctuation":!1,"local-refs-exist":!0,"check-internal-slots":!1,"check-charset":!1,"privsec-section":!1,"no-dfn-in-abstract":!1},pluralize:!0,specStatus:"base",highlightVars:!0,addSectionLinks:!0},eo="w3c/defaults",to={src:"https://www.w3.org/StyleSheets/TR/2021/logos/W3C",alt:"W3C",height:48,width:72,url:"https://www.w3.org/"},no={alt:"W3C Member Submission",href:"https://www.w3.org/Submission/",src:"https://www.w3.org/Icons/member_subm-v.svg",width:"211",height:"48"},ro={lint:{"privsec-section":!1,"required-sections":!0,"wpt-tests-exist":!1,"informative-dfn":"warn","no-unused-dfns":"warn",a11y:!1},doJsonLd:!1,logos:[],xref:!0,wgId:"",otherLinks:[],excludeGithubLinks:!0,subtitle:"",prevVersion:"",formerEditors:[],editors:[],authors:[]};var so=Object.freeze({__proto__:null,name:eo,run:function(e){const t=!1!==e.lint&&{...Qi.lint,...ro.lint,...e.lint};Object.assign(e,{...Qi,...ro,...e,lint:t}),"unofficial"===e.specStatus||e.hasOwnProperty("license")||(e.license="w3c-software-doc"),function(e){const{specStatus:t,groupType:n,group:r}=e;if(!t){const t=cs`Select an appropriate status from ${"[specStatus]"} based on your W3C group. If in doubt, use \`"unofficial"\`.`;return ts(cs`The ${"[specStatus]"} configuration option is required.`,eo,{hint:t}),void(e.specStatus="base")}if(void 0===Oi[t]){const n=cs`The ${"[specStatus]"} "\`${t}\`" is not supported at for this type of document.`,r=cs`set ${"[specStatus]"} to one of: ${is(Object.keys(Oi),{quotes:!0})}.`;return ts(n,eo,{hint:r}),void(e.specStatus="base")}switch(n){case"cg":if(![...Fi,"unofficial","UD"].includes(t)){const n=cs`W3C Community Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=is(Fi,{quotes:!0});ts(n,eo,{hint:`Please use one of: ${r}. Automatically falling back to \`"CG-DRAFT"\`.`}),e.specStatus="CG-DRAFT"}break;case"bg":if(![...Bi,"unofficial","UD"].includes(t)){const n=cs`W3C Business Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=is(Bi,{quotes:!0});ts(n,eo,{hint:`Please use one of: ${r}. Automatically falling back to \`"BG-DRAFT"\`.`}),e.specStatus="BG-DRAFT"}break;case"wg":if(![...Gi,"unofficial","UD","ED"].includes(t)){const e=cs`Pleas see ${"[specStatus]"} for appropriate status for W3C Working Group documents.`;ts(cs`W3C Working Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,eo,{hint:e})}break;case"other":if("tag"===r&&!["ED",...Gi,...Wi].includes(t)){const n=cs`The W3C Technical Architecture Group's documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=is(["ED",...Gi,...Wi],{quotes:!0});ts(n,eo,{hint:`Please use one of: ${r}. Automatically falling back to \`"unofficial"\`.`}),e.specStatus="unofficial"}break;default:if(!e.wgId&&!["unofficial","base","UD","Member-SUBM"].includes(t)){const t="Document is not associated with a [W3C group](https://respec.org/w3c/groups/). Defaulting to 'base' status.",n=cs`Use the ${"[group]"} configuration option to associated this document with a W3C group.`;e.specStatus="base",ts(t,eo,{hint:n})}}}(e),function(e){const{specStatus:t,wg:n}=e,r=[...Ui,...qi,...Mi,...Wi,"ED"].includes(t),s=n&&n.length&&r,i=["Member-SUBM"].includes(t);(s||i)&&(e.logos.unshift(to),"Member-SUBM"===t&&e.logos.push(no))}(e)}});const io=String.raw,oo=String.raw`color-mix(in srgb, #eaf3ff 15%, transparent)`;var ao=io`@keyframes pop{
|
|
696
711
|
0%{transform:scale(1,1)}
|
|
697
712
|
25%{transform:scale(1.25,1.25);opacity:.75}
|
|
698
713
|
100%{transform:scale(1,1)}
|
|
@@ -707,6 +722,10 @@ a.bibref{text-decoration:none}
|
|
|
707
722
|
.respec-offending-element{background:url(data:image/gif;base64,R0lGODdhBAADAPEAANv///8AAP///wAAACwAAAAABAADAEACBZQjmIAFADs=) bottom repeat-x}
|
|
708
723
|
}
|
|
709
724
|
#references :target{background:#eaf3ff;animation:pop .4s ease-in-out 0s 1}
|
|
725
|
+
@media (prefers-color-scheme:dark){
|
|
726
|
+
#references :target{background:${oo}}
|
|
727
|
+
}
|
|
728
|
+
body:has(input[name=color-scheme][value=dark]:checked) #references :target{background:${oo}}
|
|
710
729
|
cite .bibref{font-style:italic}
|
|
711
730
|
a[href].orcid{padding-left:4px;padding-right:4px}
|
|
712
731
|
a[href].orcid>svg{margin-bottom:-2px}
|
|
@@ -723,7 +742,7 @@ details.respec-tests-details>li{padding-left:1em}
|
|
|
723
742
|
.self-link:hover{opacity:1;text-decoration:none;background-color:transparent}
|
|
724
743
|
aside.example .marker>a.self-link{color:inherit}
|
|
725
744
|
.header-wrapper{display:flex;align-items:baseline}
|
|
726
|
-
:is(h2,h3,h4,h5,h6):not(#toc>h2,#abstract>h2,#sotd>h2,.head>h2){position:relative;left:-.5em}
|
|
745
|
+
:is(h2,h3,h4,h5,h6):not(#toc>h2,#abstract>h2,#sotd>h2,.head>h2):has(+a.self-link){position:relative;left:-.5em}
|
|
727
746
|
:is(h2,h3,h4,h5,h6):not(#toch2)+a.self-link{color:inherit;order:-1;position:relative;left:-1.1em;font-size:1rem;opacity:.5}
|
|
728
747
|
:is(h2,h3,h4,h5,h6)+a.self-link::before{content:"§";text-decoration:none;color:var(--heading-text)}
|
|
729
748
|
:is(h2,h3)+a.self-link{top:-.2em}
|
|
@@ -733,122 +752,140 @@ dd{margin-left:0}
|
|
|
733
752
|
}
|
|
734
753
|
@media print{
|
|
735
754
|
.removeOnSave{display:none}
|
|
736
|
-
}
|
|
755
|
+
}
|
|
756
|
+
body:has(input[name=color-scheme][value=light]:checked),head:not(:has(meta[name=color-scheme][content~=dark]))+body{color-scheme:light}
|
|
757
|
+
body:has(input[name=color-scheme][value=dark]:checked){color-scheme:dark}`;const co=function(){const e=document.createElement("style");return e.id="respec-mainstyle",e.textContent=ao,document.head.appendChild(e),e}();var lo=Object.freeze({__proto__:null,name:"core/style",run:function(e){e.noReSpecCSS&&co.remove()}});function uo(){const e=document.createElement("script");e.src="https://www.w3.org/scripts/TR/2021/fixup.js",location.hash&&e.addEventListener("load",(()=>{window.location.href=location.hash}),{once:!0}),document.body.appendChild(e)}const po=function(){const e=[{hint:"preconnect",href:"https://www.w3.org"},{hint:"preload",href:"https://www.w3.org/scripts/TR/2021/fixup.js",as:"script"},{hint:"preload",href:fo("base.css").href,as:"style"},{hint:"preload",href:fo("dark.css").href,as:"style"},{hint:"preload",href:"https://www.w3.org/StyleSheets/TR/2021/logos/W3C",as:"image",corsMode:"anonymous"}],t=document.createDocumentFragment();for(const n of e.map(Cr))t.appendChild(n);return t}();function ho(e){return t=>{const n=t.querySelector(`head link[href="${e}"]`);n&&t.querySelector("head")?.append(n)}}function fo(e="base.css"){return new URL(`/StyleSheets/TR/2021/${e}`,"https://www.w3.org/")}po.appendChild(sr`<link
|
|
737
758
|
rel="stylesheet"
|
|
738
759
|
href="https://www.w3.org/StyleSheets/TR/2021/base.css"
|
|
739
760
|
class="removeOnSave"
|
|
740
|
-
/>`),document.head.querySelector("meta[name=viewport]")||
|
|
761
|
+
/>`),document.head.querySelector("meta[name=viewport]")||po.prepend(sr`<meta
|
|
741
762
|
name="viewport"
|
|
742
763
|
content="width=device-width, initial-scale=1, shrink-to-fit=no"
|
|
743
|
-
/>`),document.head.prepend(
|
|
764
|
+
/>`),document.head.prepend(po);var mo=Object.freeze({__proto__:null,name:"w3c/style",run:function(e){e.noToc||ps("end-all",uo,{once:!0});const t=fo(function(e){const t=e.specStatus?.toUpperCase()??"";let n="";const r=[...Ui,...qi,...Mi,"ED","MEMBER-SUBM"].includes(t)&&e.wgId;switch(t){case"WD":case"FPWD":n=r?"W3C-WD":"base.css";break;case"CG-DRAFT":case"CG-FINAL":case"BG-DRAFT":case"BG-FINAL":n=t.toLowerCase();break;case"UD":case"UNOFFICIAL":n="W3C-UD";break;case"FINDING":case"DRAFT-FINDING":case"EDITOR-DRAFT-FINDING":case"BASE":n="base.css";break;case"MEMBER-SUBM":n="W3C-Member-SUBM";break;default:n=r?`W3C-${e.specStatus}`:"base.css"}return n}(e));document.head.appendChild(sr`<link rel="stylesheet" href="${t.href}" />`),ps("beforesave",ho(t));let n=document.querySelector("head meta[name=color-scheme]");if(n||(n=sr`<meta name="color-scheme" content="light" />`,document.head.appendChild(n)),n?.content.includes("dark")){const e=fo("dark.css");document.head.appendChild(sr`<link
|
|
744
765
|
rel="stylesheet"
|
|
745
766
|
href="${e.href}"
|
|
746
767
|
media="(prefers-color-scheme: dark)"
|
|
747
|
-
/>`),
|
|
768
|
+
/>`),ps("beforesave",ho(e))}}});const go="core/github";let bo,yo;const wo=new Promise(((e,t)=>{bo=e,yo=e=>{ts(e,go),t(new Error(e))}})),vo=Nr({en:{file_a_bug:"File an issue",participate:"Participate:",commit_history:"Commit history"},ko:{participate:"참여"},zh:{file_a_bug:"反馈错误",participate:"参与:"},ja:{commit_history:"変更履歴",file_a_bug:"問題報告",participate:"参加方法:"},nl:{commit_history:"Revisiehistorie",file_a_bug:"Dien een melding in",participate:"Doe mee:"},es:{commit_history:"Historia de cambios",file_a_bug:"Nota un bug",participate:"Participe:"},de:{commit_history:"Revisionen",file_a_bug:"Fehler melden",participate:"Mitmachen:"}});var ko=Object.freeze({__proto__:null,github:wo,name:go,run:async function(e){if(!e.hasOwnProperty("github")||!e.github)return void bo(null);if("object"==typeof e.github&&!e.github.hasOwnProperty("repoURL")){const e=cs`Config option ${"[github]"} is missing property \`repoURL\`.`;return void yo(e)}const t="string"==typeof e.github?{}:e.github;let n,r=t.repoURL||String(e.github);r.endsWith("/")||(r+="/");try{n=new URL(r,"https://github.com")}catch{const e=cs`${"[github]"} configuration option is not a valid URL? (${r}).`;return void yo(e)}if("https://github.com"!==n.origin){const e=cs`${"[github]"} configuration option must be HTTPS and pointing to GitHub. (${n.href}).`;return void yo(e)}const[s,i]=n.pathname.split("/").filter((e=>e));if(!s||!i){const e=cs`${"[github]"} URL needs a path. For example, "w3c/my-spec".`;return void yo(e)}const o=t.branch||"gh-pages",a=new URL("./issues/",n).href,c=new URL("./new/choose",a).href;let l,u;if(l="object"==typeof e.github&&e.github.hasOwnProperty("pullsURL")?e.github.pullsURL:new URL("./pulls/",n).href,l)try{const e=new URL(l);if("https://github.com"!==e.origin){const e=cs`${"[github.pullsURL]"} must be HTTPS and pointing to GitHub. (${l}).`;return void yo(e)}if(!e.pathname.includes("/pulls")){const e=cs`${"[github.pullsURL]"} must point to pull requests. (${l}).`;return void yo(e)}}catch{const e=cs`${"[github.pullsURL]"} is not a valid URL. (${l}).`;return void yo(e)}if(u="object"==typeof e.github&&e.github.hasOwnProperty("commitHistoryURL")?e.github.commitHistoryURL:new URL(`./commits/${t.branch??""}`,n.href).href,u)try{const e=new URL(u);if("https://github.com"!==e.origin){const e=cs`${"[github.commitHistoryURL]"} must be HTTPS and pointing to GitHub. (${u}).`;return void yo(e)}if(!e.pathname.includes("/commits")){const e=cs`${"[github.commitHistoryURL]"} must point to commits. (${u}).`;return void yo(e)}}catch{const e=cs`${"[github.commitHistoryURL]"} is not a valid URL. (${u}).`;return void yo(e)}const d={edDraftURI:`https://${s.toLowerCase()}.github.io/${i}/`,githubToken:void 0,githubUser:void 0,issueBase:a,atRiskBase:a,otherLinks:[],pullBase:l,shortName:i};let p="https://respec.org/github";if(e.githubAPI)if(new URL(e.githubAPI).hostname===window.parent.location.hostname)p=e.githubAPI;else{ns("The `githubAPI` configuration option is private and should not be added manually.",go)}if(!e.excludeGithubLinks){const t={key:vo.participate,data:[{value:`GitHub ${s}/${i}`,href:n},{value:"All issues",href:a},{value:vo.file_a_bug,href:c},{value:vo.commit_history,href:u},{value:"Pull requests",href:l}]};e.otherLinks||(e.otherLinks=[]),e.otherLinks.unshift(t)}const h={branch:o,repoURL:n.href,apiBase:p,fullName:`${s}/${i}`,issuesURL:a,pullsURL:l,newIssuesURL:c,commitHistoryURL:u};bo(h);const f={...d,...e,github:h,githubAPI:p};Object.assign(e,f)}});class $o{constructor(e){this.doc=e,this.root=e.createDocumentFragment(),this.stack=[this.root],this.current=this.root}static sectionClasses=new Set(["appendix","informative","notoc"]);findPosition(e){return parseInt(e.tagName.charAt(1),10)}findParent(e){let t;for(;e>0;)if(e--,t=this.stack[e],t)return t}findHeader({firstChild:e}){for(;e;){if(/H[1-6]/.test(e.tagName))return e;e=e.nextSibling}return null}addHeader(e){const t=this.doc.createElement("section"),n=this.findPosition(e);t.appendChild(e),this.findParent(n).appendChild(t),this.stack[n]=t,this.stack.length=n+1,this.current=t,this.processHeader(e,t)}processHeader(e,t){$o.sectionClasses.intersection(new Set(e.classList)).forEach((e=>{t.classList.add(e)}))}addSection(e){const t=this.findHeader(e),n=t?this.findPosition(t):1,r=this.findParent(n);t&&e.removeChild(t),e.appendChild(xo(e)),t&&e.prepend(t),r.appendChild(e),this.current=r}addElement(e){this.current.appendChild(e)}}function xo(e){const t=new $o(e.ownerDocument);for(;e.firstChild;){const n=e.firstChild;switch(n.localName){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":t.addHeader(n);break;case"section":t.addSection(n);break;default:t.addElement(n)}}return t.root}function Co(e){const t=xo(e);if("section"===t.firstElementChild.localName&&"section"===e.localName){const n=t.firstElementChild;n.remove(),e.append(...n.childNodes)}else e.textContent="";e.appendChild(t)}var So=Object.freeze({__proto__:null,name:"core/sections",restructure:Co,run:function(){Co(document.body)}});const _o="core/data-include";function To(e,t,n){const r=document.querySelector(`[data-include-id=${t}]`);if(!r)return;const s=Or(e,r.dataset.oninclude,n),i="string"==typeof r.dataset.includeReplace;!function(e,t,{replace:n}){const{includeFormat:r}=e.dataset;let s=t;"markdown"===r&&(s=Os(s)),"text"===r?e.textContent=s:e.innerHTML=s,"markdown"===r&&Co(e),n&&e.replaceWith(...e.childNodes)}(r,s,{replace:i}),i||function(e){["data-include","data-include-format","data-include-replace","data-include-id","data-oninclude"].forEach((t=>e.removeAttribute(t)))}(r)}async function Ro(e,t){const n=e.querySelectorAll("[data-include]"),r=Array.from(n).map((async e=>{const n=e.dataset.include;if(!n)return;const r=`include-${String(Math.random()).slice(2)}`;e.dataset.includeId=r;try{const s=await fetch(n);To(await s.text(),r,n),t<3&&await Ro(e,t+1)}catch(t){const r=t;ts(`\`data-include\` failed: \`${n}\` (${r.message}).`,_o,{elements:[e],cause:r})}}));await Promise.all(r)}var Eo=Object.freeze({__proto__:null,name:_o,run:async function(){await Ro(document,1)}});var Lo=Object.freeze({__proto__:null,name:"core/reindent",run:function(){for(const e of document.getElementsByTagName("pre"))e.innerHTML=ls(e.innerHTML)}});const Ao="core/title",Po=Nr({en:{default_title:"No Title"},de:{default_title:"Kein Titel"},zh:{default_title:"无标题"},cs:{default_title:"Bez názvu"}});var No=Object.freeze({__proto__:null,name:Ao,run:function(e){const t=document.querySelector("h1#title")||sr`<h1 id="title"></h1>`;if(t.isConnected&&""===t.textContent.trim()){ts('The document is missing a title, so using a default title. To fix this, please give your document a `<title>`. If you need special markup in the document\'s title, please use a `<h1 id="title">`.',Ao,{title:"Document is missing a title",elements:[t]})}t.id||(t.id="title"),t.classList.add("title"),function(e,t){t.isConnected||(t.textContent=document.title||`${Po.default_title}`);const n=document.createElement("h1");n.innerHTML=t.innerHTML.replace(/:<br>/g,": ").replace(/<br>/g," - ");let r=Pr(n.textContent);if(e.isPreview&&e.prNumber){const n=e.prUrl||`${e.github.repoURL}pull/${e.prNumber}`,{childNodes:s}=sr`
|
|
748
769
|
Preview of PR <a href="${n}">#${e.prNumber}</a>:
|
|
749
|
-
`;t.prepend(...s),r=`Preview of PR #${e.prNumber}: ${r}`}document.title=r,e.title=r}(e,t),document.body.prepend(t)}});const
|
|
770
|
+
`;t.prepend(...s),r=`Preview of PR #${e.prNumber}: ${r}`}document.title=r,e.title=r}(e,t),document.body.prepend(t)}});const Io="w3c/level",Do=Nr({en:{level:"Level"},ja:{level:"レベル"},nl:{level:"Niveau"},de:{level:"Stufe"},zh:{level:"级别"}});var Oo=Object.freeze({__proto__:null,name:Io,run:function(e){if(!e.hasOwnProperty("level"))return;const t=document.querySelector("h1#title"),n=parseInt(e.level);if(!Number.isInteger(n)||n<0){ts(`The \`level\` configuration option must be a number greater or equal to 0. It is currently set to \`${n}\``,Io,{title:"Invalid level config.",elements:[t]})}else t.append(` ${Do.level} ${n}`),document.title=`${document.title} ${Do.level} ${n}`,e.shortName=`${e.shortName}-${n}`,e.level=n}});const jo="w3c/abstract",zo=Nr({en:{abstract:"Abstract"},ko:{abstract:"요약"},zh:{abstract:"摘要"},ja:{abstract:"要約"},nl:{abstract:"Samenvatting"},es:{abstract:"Resumen"},de:{abstract:"Zusammenfassung"},cs:{abstract:"Abstrakt"}});var Mo=Object.freeze({__proto__:null,name:jo,run:async function(){const e=function(){const e=document.getElementById("abstract");if(e)switch(e.localName){case"section":return e;case"div":return Br(e,"section");default:return ts("The abstract should be a `<section>` element.",jo,{elements:[e]}),e}const t=zo.abstract.toLocaleLowerCase(r);for(const e of document.querySelectorAll("h2, h3, h4, h5, h6"))if(Pr(e.textContent).toLocaleLowerCase(r)===t)return e.closest("section");return e}();e?(e.classList.add("introductory"),e.id="abstract",e.querySelector("h2")||e.prepend(sr`<h2>${zo.abstract}</h2>`)):ts('Document must have one `<section id="abstract">`.',jo)}});var Uo=Object.freeze({__proto__:null,name:"core/data-transform",run:function(){document.querySelectorAll("[data-transform]").forEach((e=>{e.innerHTML=Or(e.innerHTML,e.dataset.transform),e.removeAttribute("data-transform")}))}});const qo="core/dfn-abbr";function Wo(e){const t=(n=e).dataset.abbr?n.dataset.abbr:n.textContent?.match(/\b([a-z])/gi)?.join("").toUpperCase()??"";var n;const r=e.textContent.replace(/\s\s+/g," ").trim(),s=document.createElement("abbr");s.title=r,s.textContent=t,e.after(" (",s,")");const i=e.dataset.lt||"";e.dataset.lt=i.split("|").filter((e=>e.trim())).concat(t).join("|")}var Fo=Object.freeze({__proto__:null,name:qo,run:function(){const e=document.querySelectorAll("[data-abbr]");for(const t of e){const{localName:e}=t;if("dfn"===e)Wo(t);else{ts(`\`data-abbr\` attribute not supported on \`${e}\` elements.`,qo,{elements:[t],title:"Error: unsupported."})}}}});var Bo=String.raw`:root{--assertion-border:#aaa;--assertion-bg:#eee;--assertion-text:black}
|
|
771
|
+
.assert{border-left:.5em solid #aaa;padding:.3em;border-color:#aaa;border-color:var(--assertion-border);background:#eee;background:var(--assertion-bg);color:#000;color:var(--assertion-text)}
|
|
772
|
+
@media (prefers-color-scheme:dark){
|
|
773
|
+
:root{--assertion-border:#444;--assertion-bg:var(--borderedblock-bg);--assertion-text:var(--text)}
|
|
774
|
+
}`;var Ho=Object.freeze({__proto__:null,name:"core/algorithms",run:function(){const e=Array.from(document.querySelectorAll("ol.algorithm li")).filter((e=>e.textContent.trim().startsWith("Assert: ")));if(!e.length)return;for(const t of e){t.classList.add("assert");const e=t.firstChild;e instanceof Text&&e.textContent.startsWith("Assert: ")&&(e.textContent=e.textContent.replace("Assert: ",""),t.prepend(sr`<a data-cite="INFRA#assert">Assert</a>`,": "))}const t=document.createElement("style");t.textContent=Bo,document.head.appendChild(t)}});const Go=/^[a-z]+(\s+[a-z]+)+\??$/,Vo=/\B"([^"]*)"\B/,Jo=/^(\w+)\(([^\\)]*)\)(?:\|(\w+)(?:\((?:([^\\)]*))\))?)?$/,Ko=/\[\[(\w+(?: +\w+)*)\]\](\([^)]*\))?$/,Zo=/^((?:\[\[)?(?:\w+(?: +\w+)*)(?:\]\])?)$/,Yo=/^(?:\w+)\??$/,Xo=/^(\w+)\["([\w- ]*)"\]$/,Qo=/\.?(\w+\(.*\)$)/,ea=/\/(.+)/,ta=/\[\[.+\]\]/;function na(e){const{identifier:t,renderParent:n,nullable:r}=e;if(n)return sr`<a
|
|
750
775
|
data-xref-type="_IDL_"
|
|
751
776
|
data-link-type="idl"
|
|
752
777
|
data-lt="${t}"
|
|
753
778
|
><code>${t+(r?"?":"")}</code></a
|
|
754
|
-
>`}function
|
|
779
|
+
>`}function ra(e){const{identifier:t,parent:n,slotType:r,renderParent:s,args:i}=e,{identifier:o}=n||{},a="method"===r,c=i??[],l=a?sr`(${zr(c,sa)})`:null,u=a?`(${c.join(", ")})`:"";return sr`${n&&s?".":""}<a
|
|
755
780
|
data-xref-type="${r}"
|
|
756
781
|
data-link-type="${r}"
|
|
757
|
-
data-link-for="${
|
|
758
|
-
data-xref-for="${
|
|
759
|
-
data-lt="${`[[${t}]]${
|
|
760
|
-
><code>[[${t}]]${
|
|
761
|
-
>`}function
|
|
782
|
+
data-link-for="${o}"
|
|
783
|
+
data-xref-for="${o}"
|
|
784
|
+
data-lt="${`[[${t}]]${u}`}"
|
|
785
|
+
><code>[[${t}]]${l}</code></a
|
|
786
|
+
>`}function sa(e,t,n){if(t<n.length-1)return sr`<var>${e}</var>`;const r=e.split(/(^\.{3})(.+)/),s=r.length>1,i=s?r[2]:r[0];return sr`${s?"...":null}<var>${i}</var>`}function ia(e){const{parent:t,identifier:n,renderParent:r}=e,{identifier:s}=t||{};return sr`${r?".":""}<a
|
|
762
787
|
data-link-type="idl"
|
|
763
788
|
data-xref-type="attribute|dict-member|const"
|
|
764
789
|
data-link-for="${s}"
|
|
765
790
|
data-xref-for="${s}"
|
|
766
791
|
><code>${n}</code></a
|
|
767
|
-
>`}function
|
|
792
|
+
>`}function oa(e){const{args:t,identifier:n,type:r,parent:s,renderParent:i}=e,{renderText:o,renderArgs:a}=e,{identifier:c}=s||{},l=zr(a||t,sa),u=`${n}(${t.join(", ")})`;return sr`${s&&i?".":""}<a
|
|
768
793
|
data-link-type="idl"
|
|
769
794
|
data-xref-type="${r}"
|
|
770
795
|
data-link-for="${c}"
|
|
771
796
|
data-xref-for="${c}"
|
|
772
797
|
data-lt="${u}"
|
|
773
|
-
><code>${
|
|
774
|
-
>${!
|
|
798
|
+
><code>${o||n}</code></a
|
|
799
|
+
>${!o||a?sr`<code>(${l})</code>`:""}`}function aa(e){const{identifier:t,enumValue:n,parent:r}=e,s=r?r.identifier:t;return sr`"<a
|
|
775
800
|
data-link-type="idl"
|
|
776
801
|
data-xref-type="enum-value"
|
|
777
802
|
data-link-for="${s}"
|
|
778
803
|
data-xref-for="${s}"
|
|
779
804
|
data-lt="${n?null:"the-empty-string"}"
|
|
780
805
|
><code>${n}</code></a
|
|
781
|
-
>"`}function
|
|
806
|
+
>"`}function ca(e){const{identifier:t}=e;return sr`"<a
|
|
782
807
|
data-link-type="idl"
|
|
783
808
|
data-cite="webidl"
|
|
784
809
|
data-xref-type="exception"
|
|
785
810
|
><code>${t}</code></a
|
|
786
|
-
>"`}function
|
|
811
|
+
>"`}function la(e){const{identifier:t,nullable:n}=e;return sr`<a
|
|
787
812
|
data-link-type="idl"
|
|
788
813
|
data-cite="webidl"
|
|
789
814
|
data-xref-type="interface"
|
|
790
815
|
data-lt="${t}"
|
|
791
816
|
><code>${t+(n?"?":"")}</code></a
|
|
792
|
-
>`}function
|
|
817
|
+
>`}function ua(e){let t;try{t=function(e){const t=ta.test(e),n=t?ea:Qo,[r,s]=e.split(n);if(t&&r&&!s)throw new SyntaxError(`Internal slot missing "for" part. Expected \`{{ InterfaceName/${r}}}\` }.`);const i=r.split(/[./]/).concat(s).filter((e=>e&&e.trim())).map((e=>e.trim())),o=!e.includes("/"),a=[];for(;i.length;){const t=i.pop()??"";if(Jo.test(t)){const[,e,n,r,s]=t.match(Jo),i=(n??"").split(/,\s*/).filter((e=>e)),c=r?.trim(),l=s?.split(/,\s*/).filter((e=>e));a.push({type:"method",identifier:e??"",args:i,renderParent:o,renderText:c,renderArgs:l})}else if(Xo.test(t)){const[,e,n]=t.match(Xo);a.push({type:"enum",identifier:e??"",enumValue:n??"",renderParent:o})}else if(Vo.test(t)){const[,e]=t.match(Vo);o?a.push({type:"exception",identifier:e??""}):a.push({type:"enum",enumValue:e??"",renderParent:o})}else if(Ko.test(t)){const[,e,n]=t.match(Ko),r=n?"method":"attribute",s=n?.slice(1,-1).split(/,\s*/).filter((e=>e))??[];a.push({type:"internal-slot",slotType:r,identifier:e??"",args:s,renderParent:o})}else if(Zo.test(t)&&i.length){const[,e]=t.match(Zo);a.push({type:"attribute",identifier:e??"",renderParent:o})}else if(Go.test(t)){const e=t.endsWith("?"),n=e?t.slice(0,-1):t;a.push({type:"idl-primitive",identifier:n,renderParent:o,nullable:e})}else{if(!Yo.test(t)||0!==i.length)throw new SyntaxError(`IDL micro-syntax parsing error in \`{{ ${e} }}\``);{const e=t.endsWith("?"),n=e?t.slice(0,-1):t;a.push({type:"base",identifier:n,renderParent:o,nullable:e})}}}return a.forEach(((e,t,n)=>{e.parent=n[t+1]||null})),a.reverse()}(e)}catch(t){const n=sr`<span>{{ ${e} }}</span>`,r="Error: Invalid inline IDL string.";return ts(t.message,"core/inlines",{title:r,elements:[n]}),n}const n=sr(document.createDocumentFragment()),r=[];for(const e of t)switch(e.type){case"base":{const t=na(e);t&&r.push(t);break}case"attribute":r.push(ia(e));break;case"internal-slot":r.push(ra(e));break;case"method":r.push(oa(e));break;case"enum":r.push(aa(e));break;case"exception":r.push(ca(e));break;case"idl-primitive":r.push(la(e));break;default:throw new Error("Unknown type.")}return n`${r}`}const da=new Set(["alias","reference"]),pa=async function(){const e=await ir.openDB("respec-biblio2",12,{upgrade(e){Array.from(e.objectStoreNames).map((t=>e.deleteObjectStore(t)));e.createObjectStore("alias",{keyPath:"id"}).createIndex("aliasOf","aliasOf",{unique:!1}),e.createObjectStore("reference",{keyPath:"id"})}}),t=Date.now();for(const n of[...da]){const r=e.transaction(n,"readwrite").store,s=IDBKeyRange.lowerBound(t);let i=await r.openCursor(s);for(;i?.value;){const e=i.value;(void 0===e.expires||e.expires<t)&&await r.delete(e.id),i=await i.continue()}}return e}();const ha={get ready(){return pa},async find(e){return await this.isAlias(e)&&(e=await this.resolveAlias(e)??e),await this.get("reference",e)},async has(e,t){if(!da.has(e))throw new TypeError(`Invalid type: ${e}`);if(!t)throw new TypeError("id is required");const n=(await this.ready).transaction(e,"readonly").store,r=IDBKeyRange.only(t);return!!await n.openCursor(r)},async isAlias(e){return await this.has("alias",e)},async resolveAlias(e){if(!e)throw new TypeError("id is required");const t=(await this.ready).transaction("alias","readonly").store,n=IDBKeyRange.only(e),r=await t.openCursor(n);return r?r.value.aliasOf:null},async get(e,t){if(!da.has(e))throw new TypeError(`Invalid type: ${e}`);if(!t)throw new TypeError("id is required");const n=(await this.ready).transaction(e,"readonly").store,r=IDBKeyRange.only(t),s=await n.openCursor(r);return s?s.value:null},async addAll(e,t){if(!e)return;const n={alias:[],reference:[]};for(const r of Object.keys(e)){const s={id:r,...e[r],expires:t};s.aliasOf?n.alias.push(s):n.reference.push(s)}const r=[...da].flatMap((e=>n[e].map((t=>this.add(e,t)))));await Promise.all(r)},async add(e,t){if(!da.has(e))throw new TypeError(`Invalid type: ${e}`);if("object"!=typeof t)throw new TypeError("details should be an object");if("alias"===e&&!t.hasOwnProperty("aliasOf"))throw new TypeError("Invalid alias object.");const n=await this.ready;let r=await this.has(e,t.id);if(r){const s=await this.get(e,t.id);if(s&&void 0!==s.expires&&s.expires<Date.now()){const{store:s}=n.transaction(e,"readwrite");await s.delete(t.id),r=!1}}const{store:s}=n.transaction(e,"readwrite");return r?await s.put(t):await s.add(t)},async close(){(await this.ready).close()},async clear(){const e=await this.ready,t=[...da],n=e.transaction(t,"readwrite"),r=t.map((e=>n.objectStore(e).clear()));await Promise.all(r)}},fa={},ma=new URL("https://api.specref.org/bibrefs?refs="),ga=Cr({hint:"dns-prefetch",href:ma.origin});let ba;document.head.appendChild(ga);const ya=new Promise((e=>{ba=e}));async function wa(e,t={forceUpdate:!1}){const n=[...new Set(e)].filter((e=>e.trim()));if(!n.length||!1===navigator.onLine)return null;let r;try{r=await fetch(ma.href+n.join(","))}catch(e){return console.error(e),null}if(!t.forceUpdate&&!r.ok||200!==r.status)return null;const s=await r.json(),i=Date.now()+36e5;try{const e=Date.parse(r.headers.get("Expires")||""),t=Number.isNaN(e)?i:Math.min(e,i);await ha.addAll(s,t)}catch(e){console.error(e)}return s}async function va(e){const t=await ya;if(!t.hasOwnProperty(e))return null;const n=t[e];return n.aliasOf?await va(n.aliasOf):n}var ka=Object.freeze({__proto__:null,Plugin:class{constructor(e){this.conf=e}normalizeReferences(){const e=new Set([...this.conf.normativeReferences].map((e=>e.toLowerCase())));Array.from(this.conf.informativeReferences).filter((t=>e.has(t.toLowerCase()))).forEach((e=>this.conf.informativeReferences.delete(e)))}getRefKeys(){return{informativeReferences:Array.from(this.conf.informativeReferences),normativeReferences:Array.from(this.conf.normativeReferences)}}async run(){this.conf.localBiblio||(this.conf.localBiblio={}),this.conf.biblio=fa;const e=Object.keys(this.conf.localBiblio).filter((e=>this.conf.localBiblio?.[e]?.hasOwnProperty("aliasOf"))).map((e=>this.conf.localBiblio?.[e]?.aliasOf)).filter((e=>e&&!this.conf.localBiblio?.hasOwnProperty(e)));this.normalizeReferences();const t=this.getRefKeys(),n=Array.from(new Set(t.normativeReferences.concat(t.informativeReferences).filter((e=>!this.conf.localBiblio?.hasOwnProperty(e))).concat(e.filter(Boolean)).sort())),r=n.length?await async function(e){const t=[];try{await ha.ready;const n=e.map((async e=>({id:e,data:await ha.find(e)})));t.push(...await Promise.all(n))}catch(n){t.push(...e.map((e=>({id:e,data:null})))),console.warn(n)}return t}(n):[],s={hasData:[],noData:[]};r.forEach((e=>{(e.data?s.hasData:s.noData).push(e)})),s.hasData.forEach((e=>{e.data&&(fa[e.id]=e.data)}));const i=s.noData.map((e=>e.id));if(i.length){const e=await wa(i,{forceUpdate:!0});Object.assign(fa,e)}Object.assign(fa,this.conf.localBiblio),(()=>{ba(this.conf.biblio)})()}},biblio:fa,name:"core/biblio",resolveRef:va,updateFromNetwork:wa});const $a="core/render-biblio";function xa(e){return`bib-${qr(e)}`}const Ca=Nr({en:{info_references:"Informative references",norm_references:"Normative references",references:"References",reference_not_found:"Reference not found."},ko:{references:"참조"},nl:{info_references:"Informatieve referenties",norm_references:"Normatieve referenties",references:"Referenties"},es:{info_references:"Referencias informativas",norm_references:"Referencias normativas",references:"Referencias",reference_not_found:"Referencia no encontrada."},ja:{info_references:"参照用参考文献",norm_references:"規範的参考文献",references:"参考文献"},de:{info_references:"Weiterführende Informationen",norm_references:"Normen und Spezifikationen",references:"Referenzen"},zh:{info_references:"非规范性引用",norm_references:"规范性引用",references:"参考文献"},cs:{info_references:"Informativní odkazy",norm_references:"Normativní odkazy",references:"Odkazy",reference_not_found:"Odkaz nebyl nalezen."}}),Sa=new Map([["CR","W3C Candidate Recommendation"],["ED","W3C Editor's Draft"],["LCWD","W3C Last Call Working Draft"],["NOTE","W3C Working Group Note"],["PR","W3C Proposed Recommendation"],["REC","W3C Recommendation"],["WD","W3C Working Draft"]]),_a=(Ta=".",e=>{const t=e.trim();return!t||t.endsWith(Ta)?t:t+Ta});var Ta;function Ra(e,t){const{goodRefs:n,badRefs:r}=function(e){const t=[],n=[];for(const r of e)r.refcontent?t.push(r):n.push(r);return{goodRefs:t,badRefs:n}}(e.map(Ea)),s=function(e){const t=new Map;for(const n of e)t.has(n.refcontent?.id??"")||t.set(n.refcontent?.id??"",n);return[...t.values()]}(n),i=s.concat(r).sort(((e,t)=>e.ref.toLocaleLowerCase().localeCompare(t.ref.toLocaleLowerCase()))),o=sr`<section>
|
|
793
818
|
<h3>${t}</h3>
|
|
794
|
-
<dl class="bibliography">${
|
|
795
|
-
</section>`;
|
|
819
|
+
<dl class="bibliography">${i.map(Aa)}</dl>
|
|
820
|
+
</section>`;Wr(o,"",t);const a=function(e){const t=new Map;for(const n of e){const e=n.refcontent?.id??"",r=t.has(e)?t.get(e):t.set(e,[]).get(e);r?.push(n.ref)}return t}(n);return function(e,t){e.map((({ref:e,refcontent:n})=>{const r=`#${xa(e)}`,s=(t.get(n.id??"")??[]).map((e=>`a.bibref[href="#${xa(e)}"]`)).join(",");return{refUrl:r,elems:document.querySelectorAll(s),refcontent:n}})).forEach((({refUrl:e,elems:t,refcontent:n})=>{t.forEach((t=>{t.setAttribute("href",e),t.setAttribute("title",n.title),t.dataset.linkType="biblio"}))}))}(s,a),function(e){for(const{ref:t}of e){const e=[...document.querySelectorAll(`a.bibref[href="#${xa(t)}"]`)].filter((({textContent:e})=>e.toLowerCase()===t.toLowerCase()));ts(`Reference "[${t}]" not found.`,$a,{hint:`Search for ["${t}"](https://www.specref.org?q=${t}) on Specref to see if it exists or if it's misspelled.`,elements:e})}}(r),o}function Ea(e){let t=fa[e],n=e;const r=new Set([n]);for(;t&&t.aliasOf;)if(r.has(t.aliasOf)){t=null;ts(`Circular reference in biblio DB between [\`${e}\`] and [\`${n}\`].`,$a)}else n=t.aliasOf,t=fa[n],r.add(n);return t&&!t.id&&(t.id=e.toLowerCase()),{ref:e,refcontent:t}}function La(e,t){const n=e.replace(/^(!|\?)/,""),r=`#${xa(n)}`,s=sr`<cite
|
|
796
821
|
><a class="bibref" href="${r}" data-link-type="biblio">${t||n}</a></cite
|
|
797
|
-
>`;return t?s:
|
|
822
|
+
>`;return t?s:sr`[${s}]`}function Aa(e){const{ref:t,refcontent:n}=e,r=xa(t);return sr`
|
|
798
823
|
<dt id="${r}">[${t}]</dt>
|
|
799
824
|
<dd>
|
|
800
|
-
${n?{html:
|
|
801
|
-
>${
|
|
825
|
+
${n?{html:Pa(n)}:sr`<em class="respec-offending-element"
|
|
826
|
+
>${Ca.reference_not_found}</em
|
|
802
827
|
>`}
|
|
803
828
|
</dd>
|
|
804
|
-
`}function
|
|
829
|
+
`}function Pa(e){if("string"==typeof e)return e;let t=`<cite>${e.title}</cite>`;if(t=e.href?`<a href="${e.href}">${t}</a>. `:`${t}. `,e.authors){if(!Array.isArray(e.authors)){const t=`The "authors" field in reference "${e.id||e.title}" must be an array.`,n=`Use \`authors: [${JSON.stringify(e.authors)}]\` instead of \`authors: ${JSON.stringify(e.authors)}\`.`;ts(t,$a,{hint:n}),e.authors=[e.authors]}e.authors.length&&(t+=e.authors.join("; "),e.etAl&&(t+=" et al"),t.endsWith(".")||(t+=". "))}return e.publisher&&(t=`${t} ${_a(e.publisher)} `),e.date&&(t+=`${e.date}. `),e.status&&(t+=`${Sa.get(e.status)||e.status}. `),e.href&&(t+=`URL: <a href="${e.href}">${e.href}</a>`),t}var Na=Object.freeze({__proto__:null,name:$a,renderInlineCitation:La,run:function(e){const t=Array.from(e.informativeReferences),n=Array.from(e.normativeReferences);if(!t.length&&!n.length)return;const r=document.querySelector("section#references")||sr`<section id="references"></section>`;if(document.querySelector("section#references > :is(h2, h1)")||r.prepend(sr`<h1>${Ca.references}</h1>`),r.classList.add("appendix"),n.length){const e=Ra(n,Ca.norm_references);r.appendChild(e)}if(t.length){const e=Ra(t,Ca.info_references);r.appendChild(e)}document.body.appendChild(r)}});const Ia="core/inlines",Da={},Oa=e=>new RegExp(e.map((e=>e.source)).join("|")),ja=Nr({en:{rfc2119Keywords:()=>Oa([/\bMUST(?:\s+NOT)?\b/,/\bSHOULD(?:\s+NOT)?\b/,/\bSHALL(?:\s+NOT)?\b/,/\bMAY\b/,/\b(?:NOT\s+)?REQUIRED\b/,/\b(?:NOT\s+)?RECOMMENDED\b/,/\bOPTIONAL\b/])},de:{rfc2119Keywords:()=>Oa([/\bMUSS\b/,/\bMÜSSEN\b/,/\bERFORDERLICH\b/,/\b(?:NICHT\s+)?NÖTIG\b/,/\bDARF(?:\s+NICHT)?\b/,/\bDÜRFEN(?:\s+NICHT)?\b/,/\bVERBOTEN\b/,/\bSOLL(?:\s+NICHT)?\b/,/\bSOLLEN(?:\s+NICHT)?\b/,/\b(?:NICHT\s+)?EMPFOHLEN\b/,/\bKANN\b/,/\bKÖNNEN\b/,/\bOPTIONAL\b/])}}),za=/(?:`[^`]+`)(?!`)/,Ma=/(?:{{[^}]+\?*}})/,Ua=/\B\|\w[\w\s]*(?:\s*:[\w\s&;"?<>]+\??)?\|\B/,qa=/(?:\[\[(?:!|\\|\?)?[\w.-]+(?:|[^\]]+)?\]\])/,Wa=/(?:\[\[\[(?:!|\\|\?)?#?[\w-.]+\]\]\])/,Fa=/(?:\[=[^=]+=\])/,Ba=/(?:\[\^[^^]+\^\])/,Ha=/(?:\{\^[^}^]+\^\})/;function Ga(e){const t=e.slice(2,-2).trim(),[n,r,s]=t.split("/",3).map((e=>e&&e.trim())).filter((e=>!!e)),[i,o,a]=t.startsWith("/")?["element-attr",null,n]:s?["attr-value",`${n}/${r}`,s]:r?["element-attr",n,r]:["element",null,n];return sr`<code
|
|
805
830
|
><a
|
|
806
|
-
data-xref-type="${
|
|
807
|
-
data-xref-for="${
|
|
808
|
-
data-link-type="${
|
|
809
|
-
data-link-for="${
|
|
831
|
+
data-xref-type="${i}"
|
|
832
|
+
data-xref-for="${o}"
|
|
833
|
+
data-link-type="${i}"
|
|
834
|
+
data-link-for="${o}"
|
|
810
835
|
>${a}</a
|
|
811
836
|
></code
|
|
812
|
-
>`}function
|
|
837
|
+
>`}function Va(e){const t=(e.slice(2,-2).trim().match(/"([^"]*)"|([^/]+)/g)||[]).map((e=>e.trim()));if(1===t.length){const e=t[0];return sr`<code
|
|
838
|
+
><a data-link-type="cddl-type" data-xref-type="cddl-type"
|
|
839
|
+
>${e}</a
|
|
840
|
+
></code
|
|
841
|
+
>`}const n=t[0],r=t[1],s=r.startsWith('"')&&r.endsWith('"')?"cddl-value":"cddl-key";return sr`<code
|
|
842
|
+
><a
|
|
843
|
+
data-link-type="${s}"
|
|
844
|
+
data-xref-type="${s}"
|
|
845
|
+
data-xref-for="${n}"
|
|
846
|
+
data-link-for="${n}"
|
|
847
|
+
>${r}</a
|
|
848
|
+
></code
|
|
849
|
+
>`}function Ja(e){const t=Pr(e),n=sr`<em class="rfc2119">${t}</em>`;return Da[t]=!0,n}function Ka(e){const t=e.slice(3,-3).trim();return t.startsWith("#")?sr`<a href="${t}" data-matched-text="${e}"></a>`:sr`<a data-cite="${t}" data-matched-text="${e}"></a>`}function Za(e,t){const n=Pr(e.slice(2,-2));if(n.startsWith("\\"))return e.replace(/^(\{\{\s*)\\/,"$1");const r=ua(n);return!!t.parentElement?.closest("dfn,a")?tc(`\`${r.textContent}\``):r}function Ya(e,t,n){const r=e.slice(2,-2);if(r.startsWith("\\"))return[`[[${r.slice(1)}]]`];const[s,i]=r.split("|").map(Pr),{type:o,illegal:a}=Hr(s,t.parentElement),c=La(s,i),l=s.replace(/^(!|\?)/,"");if(a&&!n.normativeReferences.has(l)){const e=c.childNodes[1]||c;ns("Normative references in informative sections are not allowed. ",Ia,{elements:[e],hint:`Remove '!' from the start of the reference \`[[${r}]]\``})}return"informative"!==o||a?n.normativeReferences.add(l):n.informativeReferences.add(l),c.childNodes[1]?c.childNodes:[c]}function Xa(e,t,n){return"ABBR"===t.parentElement?.tagName?e:sr`<abbr title="${n.get(e)}">${e}</abbr>`}function Qa(e){const t=e.slice(1,-1).split(":",2),[n,r]=t.map((e=>e.trim()));return sr`<var data-type="${r}">${n}</var>`}function ec(e){const t=function(e){const t=e=>e.replace("%%","/").split("/").map(Pr).join("/"),n=e.replace("\\/","%%"),r=n.lastIndexOf("/");if(-1===r)return[t(n)];const s=n.substring(0,r),i=n.substring(r+1,n.length);return[t(s),t(i)]}(e=e.slice(2,-2)),[n,r]=2===t.length?t:[null,t[0]],[s,i]=r.includes("|")?r.split("|",2).map((e=>e.trim())):[null,r],o=nc(i),a=n?Pr(n):null;return sr`<a
|
|
813
850
|
data-link-type="dfn|abstract-op"
|
|
814
851
|
data-link-for="${a}"
|
|
815
852
|
data-xref-for="${a}"
|
|
816
853
|
data-lt="${s}"
|
|
817
|
-
>${
|
|
818
|
-
>`}function
|
|
854
|
+
>${o}</a
|
|
855
|
+
>`}function tc(e){const t=e.slice(1,-1);return sr`<code>${t}</code>`}function nc(e){return za.test(e)?e.split(/(`[^`]+`)(?!`)/).map((e=>e.startsWith("`")?tc(e):nc(e))):document.createTextNode(e)}var rc=Object.freeze({__proto__:null,name:Ia,rfc2119Usage:Da,run:function(e){const t=new Map;document.normalize(),document.querySelector("section#conformance")||document.body.classList.add("informative"),e.normativeReferences=new Kr,e.informativeReferences=new Kr,e.respecRFC2119||(e.respecRFC2119=Da);const n=document.querySelectorAll("abbr[title]:not(.exclude)");for(const{textContent:e,title:r}of n){const n=Pr(e),s=Pr(r);t.set(n,s)}const r=t.size?new RegExp(`(?:\\b${[...t.keys()].map((e=>wr(e))).join("\\b)|(?:\\b")}\\b)`):null,s=function(e,t=[],n={wsNodes:!0}){const r=t.join(", "),s=document.createNodeIterator(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>n.wsNodes||e.data.trim()?r&&e.parentElement?.closest(r)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}),i=[];let o;for(;o=s.nextNode();)i.push(o);return i}(document.body,["#respec-ui",".head","pre","svg","script","style"],{wsNodes:!1}),i=ja.rfc2119Keywords(),o=new RegExp(`(${Oa([i,Ma,Ha,Ua,qa,Wa,Fa,za,Ba,...r?[r]:[]]).source})`);for(const n of s){const r=n.data.split(o);if(1===r.length)continue;const s=document.createDocumentFragment();let a=!0;for(const o of r)if(a=!a,a)switch(!0){case o.startsWith("{{"):s.append(Za(o,n));break;case o.startsWith("{^"):s.append(Va(o));break;case o.startsWith("[[["):s.append(Ka(o));break;case o.startsWith("[["):s.append(...Ya(o,n,e));break;case o.startsWith("|"):s.append(Qa(o));break;case o.startsWith("[="):s.append(ec(o));break;case o.startsWith("`"):s.append(tc(o));break;case o.startsWith("[^"):s.append(Ga(o));break;case t.has(o):s.append(Xa(o,n,t));break;case i.test(o):s.append(Ja(o))}else s.append(o);n.replaceWith(s)}}});const sc="w3c/conformance",ic=Nr({en:{conformance:"Conformance",normativity:"As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.",keywordInterpretation:(e,t)=>sr`<p>
|
|
819
856
|
The key word${t?"s":""} ${e} in this document
|
|
820
857
|
${t?"are":"is"} to be interpreted as described in
|
|
821
858
|
<a href="https://www.rfc-editor.org/info/bcp14">BCP 14</a>
|
|
822
|
-
${
|
|
859
|
+
${La("RFC2119")} ${La("RFC8174")}
|
|
823
860
|
when, and only when, ${t?"they appear":"it appears"} in all
|
|
824
861
|
capitals, as shown here.
|
|
825
|
-
</p>`},de:{conformance:"Anforderungen",normativity:"Neben den explizit als nicht-normativ gekennzeichneten Abschnitten sind auch alle Diagramme, Beispiele und Hinweise in diesem Dokument nicht normativ. Alle anderen Angaben sind normativ.",keywordInterpretation:(e,t)=>
|
|
862
|
+
</p>`},de:{conformance:"Anforderungen",normativity:"Neben den explizit als nicht-normativ gekennzeichneten Abschnitten sind auch alle Diagramme, Beispiele und Hinweise in diesem Dokument nicht normativ. Alle anderen Angaben sind normativ.",keywordInterpretation:(e,t)=>sr`<p>
|
|
826
863
|
${t?"Die Schlüsselwörter":"Das Schlüsselwort"} ${e} in
|
|
827
864
|
diesem Dokument ${t?"sind":"ist"} gemäß
|
|
828
865
|
<a href="https://www.rfc-editor.org/info/bcp14">BCP 14</a>
|
|
829
|
-
${
|
|
866
|
+
${La("RFC2119")} ${La("RFC8174")}
|
|
830
867
|
und unter Berücksichtigung von
|
|
831
868
|
<a href="https://github.com/adfinis-sygroup/2119/blob/master/2119de.rst"
|
|
832
869
|
>2119de</a
|
|
833
870
|
>
|
|
834
871
|
zu interpretieren, wenn und nur wenn ${t?"sie":"es"} wie hier
|
|
835
872
|
gezeigt durchgehend groß geschrieben wurde${t?"n":""}.
|
|
836
|
-
</p>`}});var
|
|
837
|
-
<h1>${
|
|
838
|
-
<p>${
|
|
839
|
-
${n.length?
|
|
840
|
-
`;e.prepend(...
|
|
873
|
+
</p>`}});var oc=Object.freeze({__proto__:null,name:sc,run:function(e){const t=document.querySelector("section#conformance");if(t){if(t.classList.contains("informative")){t.classList.remove("informative");ns("Conformance sections are normative by definition. The `informative` class has been removed.",sc,{hint:'Remove `class="informative"` from `<section id="conformance">` to avoid this warning.',elements:[t]})}t.classList.contains("override")||function(e,t){const n=[...Object.keys(Da)];n.length&&(t.normativeReferences.add("RFC2119"),t.normativeReferences.add("RFC8174"));const r=Mr(n.sort(),(e=>sr`<em class="rfc2119">${e}</em>`)),s=n.length>1,i=sr`
|
|
874
|
+
<h1>${ic.conformance}</h1>
|
|
875
|
+
<p>${ic.normativity}</p>
|
|
876
|
+
${n.length?ic.keywordInterpretation(r,s):null}
|
|
877
|
+
`;e.prepend(...i.childNodes)}(t,e)}if(!t&&Object.keys(Da).length){ns("Document uses RFC2119 keywords but lacks a conformance section.",sc,{hint:'Please add a `<section id="conformance">`.'})}}});function ac(e,t,n,r){try{switch(t){case"element-attr":return document.createAttribute(e),!0;case"element":return document.createElement(e),!0}}catch(s){ts(`Invalid ${t} name "${e}": ${s.message}`,r,{hint:`Check that the ${t} name is allowed per the XML's Name production for ${t}.`,elements:[n]})}return!1}function cc(e,t,n,r){if(/^[a-z]+(-[a-z]+)*$/i.test(e))return!0;return ts(`Invalid ${t} name "${e}".`,r,{hint:`Check that the ${t} name is allowed per the naming rules for this type.`,elements:[n]}),!1}const lc=new Qr;function uc(e,t){for(const n of t)lc.has(n)||lc.set(n,new Set),lc.get(n)?.add(e)}const dc="core/dfn",pc=new Map([["abstract-op",{requiresFor:!1}],["attr-value",{requiresFor:!0,associateWith:"a markup attribute",validator:cc}],["element",{requiresFor:!1,validator:ac}],["element-attr",{requiresFor:!1,validator:ac}],["element-state",{requiresFor:!0,associateWith:"a markup attribute",validator:cc}],["event",{requiresFor:!1,validator:cc}],["http-header",{requiresFor:!1}],["media-type",{requiresFor:!1,validator:function(e,t,n,r){try{const t=new ar(e);if(t.toString()!==e)throw new Error(`Input doesn't match its canonical form: "${t}".`)}catch(s){return ts(`Invalid ${t} "${e}": ${s.message}.`,r,{hint:"Check that the MIME type has both a type and a sub-type, and that it's in a canonical form (e.g., `text/plain`).",elements:[n]}),!1}return!0}}],["scheme",{requiresFor:!1,validator:cc}],["permission",{requiresFor:!1,validator:function(e,t,n,r){return e.startsWith('"')&&e.endsWith('"')?cc(e.slice(1,-1),t,n,r):(ts(`Invalid ${t} "${e}".`,r,{hint:`Check that the ${t} is quoted with double quotes.`,elements:[n]}),!1)}}]]),hc=[...pc.keys()];function fc(e,t){let n="";switch(!0){case hc.some((t=>e.classList.contains(t))):n=[...e.classList].find((e=>pc.has(e)))??"",function(e,t,n){const r=pc.get(t);if(r?.requiresFor&&!n.dataset.dfnFor){const e=cs`Definition of type "\`${t}\`" requires a ${"[data-dfn-for]"} attribute.`,{associateWith:s}=r,i=cs`Use a ${"[data-dfn-for]"} attribute to associate this with ${s??""}.`;ts(e,dc,{hint:i,elements:[n]})}r?.validator&&r.validator(e,t,n,dc)}(t,n,e);break;case Ko.test(t):n=function(e,t){t.dataset.hasOwnProperty("idl")||(t.dataset.idl="");const n=t.closest("[data-dfn-for]");t!==n&&n?.dataset.dfnFor&&(t.dataset.dfnFor=n.dataset.dfnFor);if(!t.dataset.dfnFor){const n=cs`Use a ${"[data-dfn-for]"} attribute to associate this dfn with a WebIDL interface.`;ts(`Internal slot "${e}" must be associated with a WebIDL interface.`,dc,{hint:n,elements:[t]})}t.matches(".export, [data-export]")||(t.dataset.noexport="");const r=e.endsWith(")")?"method":"attribute";if(!t.dataset.dfnType)return r;const s=["attribute","method"],{dfnType:i}=t.dataset;if(!s.includes(i)||r!==i){const n=cs`Invalid ${"[data-dfn-type]"} attribute on internal slot.`,i=`The only allowed types are: ${is(s,{quotes:!0})}. The slot "${e}" seems to be a "${ss(r)}"?`;return ts(n,dc,{hint:i,elements:[t]}),"dfn"}return i}(t,e)}if(!n&&!e.matches("[data-dfn-type]")){const t=e.closest("[data-dfn-type]");n=t?.dataset.dfnType??""}n&&!e.dataset.dfnType&&(e.dataset.dfnType=n)}function mc(e){switch(!0){case e.matches(".export.no-export"):ts(cs`Declares both "${"[no-export]"}" and "${"[export]"}" CSS class.`,dc,{elements:[e],hint:"Please use only one."});break;case e.matches(".no-export, [data-noexport]"):if(e.matches("[data-export]")){ts(cs`Declares ${"[no-export]"} CSS class, but also has a "${"[data-export]"}" attribute.`,dc,{elements:[e],hint:"Please chose only one."}),delete e.dataset.export}e.dataset.noexport="";break;case e.matches(":is(.export):not([data-noexport], .no-export)"):e.dataset.export=""}}var gc=Object.freeze({__proto__:null,name:dc,run:function(){for(const e of document.querySelectorAll("dfn")){const t=Fr(e);if(uc(e,t),e.dataset.cite&&/\b#\b/.test(e.dataset.cite))continue;const[n]=t;fc(e,n),mc(e);const r=(e.dataset.localLt||"").split("|").map(Pr),s=t.filter((e=>!r.includes(e)));(s.length>1||n!==Pr(e.textContent))&&(e.dataset.lt=s.join("|"))}}});var bc=Object.freeze({__proto__:null,name:"core/pluralize",run:function(e){if(!e.pluralize)return;const t=function(){const e=new Set;document.querySelectorAll("a:not([href])").forEach((t=>{const n=Pr(t.textContent).toLowerCase();e.add(n),t.dataset.lt&&e.add(t.dataset.lt)}));const t=new Set,n=document.querySelectorAll("dfn:not([data-lt-noDefault])");return n.forEach((e=>{const n=Pr(e.textContent).toLowerCase();t.add(n),e.dataset.lt&&e.dataset.lt.split("|").forEach((e=>t.add(e))),e.dataset.localLt&&e.dataset.localLt.split("|").forEach((e=>t.add(e)))})),function(n){const r=Pr(n).toLowerCase(),s=cr.isSingular(r)?cr.plural(r):cr.singular(r);return e.has(s)&&!t.has(s)?s:""}}();document.querySelectorAll("dfn:not([data-lt-no-plural]):not([data-lt-noDefault])").forEach((e=>{const n=[e.textContent];e.dataset.lt&&n.push(...e.dataset.lt.split("|")),e.dataset.localLt&&n.push(...e.dataset.localLt.split("|"));const r=new Set(n.map(t).filter((e=>e)));if(r.size){const t=e.dataset.plurals?e.dataset.plurals.split("|"):[],n=[...new Set([...t,...r])];e.dataset.plurals=n.join("|"),uc(e,n)}}))}});var yc=String.raw`span.example-title{text-transform:none}
|
|
841
878
|
:is(aside,div).example,div.illegal-example{padding:.5em;margin:1em 0;position:relative;clear:both}
|
|
842
879
|
div.illegal-example{color:red}
|
|
843
880
|
div.illegal-example p{color:#000}
|
|
844
|
-
aside.example div.example{border-left-width:.1em;border-color:#999;background:#fff}`;const
|
|
845
|
-
<a class="self-link">${
|
|
881
|
+
aside.example div.example{border-left-width:.1em;border-color:#999;background:#fff}`;const wc=Nr({en:{example:"Example"},nl:{example:"Voorbeeld"},es:{example:"Ejemplo"},ko:{example:"예시"},ja:{example:"例"},de:{example:"Beispiel"},zh:{example:"例"},cs:{example:"Příklad"}});function vc(e,t,n){n.title=e.title,n.title&&e.removeAttribute("title");const r=t>0?` ${t}`:"",s=n.title?sr`<span class="example-title">: ${n.title}</span>`:"";return sr`<div class="marker">
|
|
882
|
+
<a class="self-link">${wc.example}<bdi>${r}</bdi></a
|
|
846
883
|
>${s}
|
|
847
|
-
</div>`}var
|
|
848
|
-
${
|
|
849
|
-
</style>`,document.querySelector("link"));let t=0;e.forEach((e=>{e.classList.contains("illegal-example");const n={},{title:r}=e;if("aside"===e.localName){++t;const s=
|
|
850
|
-
${
|
|
851
|
-
</div>`;
|
|
884
|
+
</div>`}var kc=Object.freeze({__proto__:null,name:"core/examples",run:function(){const e=document.querySelectorAll("pre.example, pre.illegal-example, aside.example");if(!e.length)return;document.head.insertBefore(sr`<style>
|
|
885
|
+
${yc}
|
|
886
|
+
</style>`,document.querySelector("link"));let t=0;e.forEach((e=>{e.classList.contains("illegal-example");const n={},{title:r}=e;if("aside"===e.localName){++t;const s=vc(e,t,n);e.prepend(s);const i=Wr(e,"example",r||String(t));s.querySelector("a.self-link").href=`#${i}`}else{const s=!!e.closest("aside");s||++t,n.content=e.innerHTML,e.classList.remove("example","illegal-example");const i=e.id?e.id:null;i&&e.removeAttribute("id");const o=vc(e,s?0:t,n),a=sr`<div class="example" id="${i}">
|
|
887
|
+
${o} ${e.cloneNode(!0)}
|
|
888
|
+
</div>`;Wr(a,"example",r||String(t));a.querySelector("a.self-link").href=`#${a.id}`,e.replaceWith(a)}}))}});var $c=String.raw`.issue-label{text-transform:initial}
|
|
852
889
|
.warning>p:first-child{margin-top:0}
|
|
853
890
|
.warning{padding:.5em;border-left-width:.5em;border-left-style:solid}
|
|
854
891
|
span.warning{padding:.1em .5em .15em}
|
|
@@ -858,31 +895,31 @@ span.warning{padding:.1em .5em .15em}
|
|
|
858
895
|
.warning-title:before{content:"⚠";font-size:1.3em;float:left;padding-right:.3em;margin-top:-.3em}
|
|
859
896
|
li.task-list-item{list-style:none}
|
|
860
897
|
input.task-list-item-checkbox{margin:0 .35em .25em -1.6em;vertical-align:middle}
|
|
861
|
-
.issue a.respec-gh-label{padding:5px;margin:0 2px 0 2px;font-size:10px;text-transform:none;text-decoration:none;font-weight:700;border-radius:4px;position:relative;bottom:2px;border:none;display:inline-block}`;const
|
|
898
|
+
.issue a.respec-gh-label{padding:5px;margin:0 2px 0 2px;font-size:10px;text-transform:none;text-decoration:none;font-weight:700;border-radius:4px;position:relative;bottom:2px;border:none;display:inline-block}`;const xc="core/issues-notes",Cc=Nr({en:{editors_note:"Editor's note",feature_at_risk:"(Feature at Risk) Issue",issue:"Issue",issue_summary:"Issue summary",no_issues_in_spec:"There are no issues listed in this specification.",note:"Note",warning:"Warning"},ja:{note:"注",editors_note:"編者注",feature_at_risk:"(変更の可能性のある機能) Issue",issue:"Issue",issue_summary:"Issue の要約",no_issues_in_spec:"この仕様には未解決の issues は含まれていません.",warning:"警告"},nl:{editors_note:"Redactionele noot",issue_summary:"Lijst met issues",no_issues_in_spec:"Er zijn geen problemen vermeld in deze specificatie.",note:"Noot",warning:"Waarschuwing"},es:{editors_note:"Nota de editor",issue:"Cuestión",issue_summary:"Resumen de la cuestión",note:"Nota",no_issues_in_spec:"No hay problemas enumerados en esta especificación.",warning:"Aviso"},de:{editors_note:"Redaktioneller Hinweis",issue:"Frage",issue_summary:"Offene Fragen",no_issues_in_spec:"Diese Spezifikation enthält keine offenen Fragen.",note:"Hinweis",warning:"Warnung"},zh:{editors_note:"编者注",feature_at_risk:"(有可能变动的特性)Issue",issue:"Issue",issue_summary:"Issue 总结",no_issues_in_spec:"本规范中未列出任何 issue。",note:"注",warning:"警告"},cs:{editors_note:"Poznámka editora",feature_at_risk:"(Funkce v ohrožení) Problém",issue:"Problém",issue_summary:"Souhrn problémů",no_issues_in_spec:"V této specifikaci nejsou uvedeny žádné problémy.",note:"Poznámka",warning:"Varování"}});function Sc(e,t,n){const r=function(){if(document.querySelector(".issue[data-number]"))return e=>{if(e.dataset.number)return Number(e.dataset.number)};let e=0;return t=>{if(t.classList.contains("issue")&&"span"!==t.localName)return++e}}(),s=document.createElement("ul");e.forEach((e=>{const{type:i,displayType:o,isFeatureAtRisk:a}=function(e){const t=e.classList.contains("issue"),n=e.classList.contains("warning"),r=e.classList.contains("ednote"),s=e.classList.contains("atrisk"),i=t?"issue":n?"warning":r?"ednote":"note",o=t?s?Cc.feature_at_risk:Cc.issue:n?Cc.warning:r?Cc.editors_note:Cc.note;return{type:i,displayType:o,isFeatureAtRisk:s}}(e),c="issue"===i,l="span"===e.localName,{number:u}=e.dataset,d={title:e.title,number:r(e)};if(!l){const r=sr`<div class="${a?`${i} atrisk`:i}" role="${"note"===i?"note":null}"></div>`,l=document.createElement("span"),p=sr`<div class="${`${i}-title marker`}">${l}</div>`;Wr(p,"h",i);let h,f=o;if(e.id?(r.id=e.id,e.removeAttribute("id")):Wr(r,"issue-container",d.number?`number-${d.number}`:""),c){if(void 0!==d.number&&(f+=` ${d.number}`),e.dataset.hasOwnProperty("number")){const e=function(e,t,{isFeatureAtRisk:n=!1}={}){if(!n&&t.issueBase)return sr`<a href="${t.issueBase+e}" />`;if(n&&t.atRiskBase)return sr`<a href="${t.atRiskBase+e}" />`}(u??"",n,{isFeatureAtRisk:a});if(e&&(l.before(e),e.append(l)),l.classList.add("issue-number"),h=t.get(u??""),!h){ns(`Failed to fetch issue number ${u}.`,xc)}h&&!d.title&&(d.title=h.title)}s.append(function(e,t,n){const r=`${e}${t.number?` ${t.number}`:""}`,s=t.title?sr`<span style="text-transform: none">: ${t.title}</span>`:"";return sr`<li><a href="${`#${n}`}">${r}</a>${s}</li>`}(Cc.issue,d,r.id))}if(l.textContent=f,d.title){e.removeAttribute("title");const{repoURL:t=""}=n.github||{},s=h?h.labels:[];h&&"CLOSED"===h.state&&r.classList.add("closed"),p.append(function(e,t,n){const r=e.map((e=>function(e,t){const{color:n,name:r}=e,s=/^[0-9a-f]{6}$/i.test(n)?n:"f6f8fa",i=new URL("./issues/",t);i.searchParams.set("q",`is:issue is:open label:"${r}"`);const o=function(e){const[t,n,r]=[e.slice(0,2),e.slice(2,4),e.slice(4,6)],[s,i,o]=[t,n,r].map((e=>parseInt(e,16)/255)).map((e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4)),a=.2126*s+.7152*i+.0722*o;return a>.179?"#000":"#fff"}(s),a=`background-color: #${s}; color: ${o}`,c=`GitHub label: ${r}`;return sr` <a
|
|
862
899
|
class="respec-gh-label"
|
|
863
|
-
style="${
|
|
864
|
-
href="${
|
|
865
|
-
aria-label="${
|
|
900
|
+
style="${a}"
|
|
901
|
+
href="${i.href}"
|
|
902
|
+
aria-label="${c}"
|
|
866
903
|
>${r}</a
|
|
867
|
-
>`}(e,n)));r.length&&r.unshift(document.createTextNode(" "));return
|
|
868
|
-
${
|
|
869
|
-
</style>`,s.querySelector("link")),
|
|
870
|
-
><bdi lang="${
|
|
871
|
-
>`;if(n){const t=
|
|
872
|
-
>${
|
|
873
|
-
>`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);return n.querySelectorAll("a").forEach((e=>{
|
|
904
|
+
>`}(e,n)));r.length&&r.unshift(document.createTextNode(" "));return sr`<span class="issue-label">: ${t}${r}</span>`}(s,d.title,t))}let m=e;e.replaceWith(r),m.classList.remove(i),m.removeAttribute("data-number"),h&&!m.innerHTML.trim()&&(m=document.createRange().createContextualFragment(h.bodyHTML)),r.append(p,m)}})),function(e){const t=document.getElementById("issue-summary");if(!t)return;const n=t.querySelector("h2, h3, h4, h5, h6");e.hasChildNodes()?t.append(e):t.append(sr`<p>${Cc.no_issues_in_spec}</p>`),(!n||n&&n!==t.firstElementChild)&&t.prepend(sr`<h1>${Cc.issue_summary}</h1>`)}(s)}var _c=Object.freeze({__proto__:null,name:xc,run:async function(e){const t=document.querySelectorAll(".issue, .note, .warning, .ednote"),n=Array.from(t).filter((e=>e instanceof HTMLElement));if(!n.length)return;const r=await async function(e){if(!e||!e.apiBase)return new Map;const t=[...document.querySelectorAll(".issue[data-number]")].map((e=>Number.parseInt(e.dataset.number??"",10))).filter((e=>e));if(!t.length)return new Map;const n=new URL("issues",`${e.apiBase}/${e.fullName}/`);n.searchParams.set("issues",t.join(","));const r=await fetch(n.href);if(!r.ok)return ts(`Error fetching issues from GitHub. (HTTP Status ${r.status}).`,xc),new Map;const s=await r.json();return new Map(Object.entries(s))}(e.github??null),{head:s}=document;s.insertBefore(sr`<style>
|
|
905
|
+
${$c}
|
|
906
|
+
</style>`,s.querySelector("link")),Sc(n,r,e),document.querySelectorAll(".ednote").forEach((e=>{e.classList.remove("ednote"),e.classList.add("note")}))}});const Tc="core/best-practices",Rc={en:{best_practice:"Best Practice "},ja:{best_practice:"最良実施例 "},de:{best_practice:"Musterbeispiel "},zh:{best_practice:"最佳实践 "}},Ec=Nr(Rc),Lc=r in Rc?r:"en";var Ac=Object.freeze({__proto__:null,name:Tc,run:function(){const e=document.querySelectorAll(".practicelab"),t=document.getElementById("bp-summary"),n=t?document.createElement("ul"):null;if([...e].forEach(((e,t)=>{const r=Wr(e,"bp"),s=sr`<a class="marker self-link" href="${`#${r}`}"
|
|
907
|
+
><bdi lang="${Lc}">${Ec.best_practice}${t+1}</bdi></a
|
|
908
|
+
>`;if(n){const t=sr`<li>${s}: ${Zr(e)}</li>`;n.appendChild(t)}const i=e.closest("div");if(!i)return void e.classList.add("advisement");i.classList.add("advisement");const o=sr`${s.cloneNode(!0)}: ${e}`;i.prepend(...o.childNodes)})),e.length)t&&(t.appendChild(sr`<h1>Best Practices Summary</h1>`),n&&t.appendChild(n));else if(t){ns("Using best practices summary (#bp-summary) but no best practices found.",Tc),t.remove()}}});const Pc="core/figures",Nc=Nr({en:{list_of_figures:"List of Figures",fig:"Figure "},ja:{fig:"図 ",list_of_figures:"図のリスト"},ko:{fig:"그림 ",list_of_figures:"그림 목록"},nl:{fig:"Figuur ",list_of_figures:"Lijst met figuren"},es:{fig:"Figura ",list_of_figures:"Lista de Figuras"},zh:{fig:"图 ",list_of_figures:"规范中包含的图"},de:{fig:"Abbildung",list_of_figures:"Abbildungsverzeichnis"}});var Ic=Object.freeze({__proto__:null,name:Pc,run:function(){const e=function(){const e=[];return document.querySelectorAll("figure").forEach(((t,n)=>{const r=t.querySelector("figcaption");if(r)!function(e,t,n){const r=t.textContent;Wr(e,"fig",r),Gr(t,sr`<span class="fig-title"></span>`),t.prepend(sr`<a class="self-link" href="#${e.id}"
|
|
909
|
+
>${Nc.fig}<bdi class="figno">${n+1}</bdi></a
|
|
910
|
+
>`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);return n.querySelectorAll("a").forEach((e=>{Br(e,"span").removeAttribute("href")})),sr`<li class="tofline">
|
|
874
911
|
<a class="tocxref" href="${`#${e}`}">${n.childNodes}</a>
|
|
875
|
-
</li>`}(t.id,r));else{
|
|
912
|
+
</li>`}(t.id,r));else{ns("Found a `<figure>` without a `<figcaption>`.",Pc,{elements:[t]})}})),e}(),t=document.getElementById("tof");e.length&&t&&(!function(e){if(e.classList.contains("appendix")||e.classList.contains("introductory")||e.closest("section"))return;const t=Vr(e);t.every((e=>e.classList.contains("introductory")))?e.classList.add("introductory"):t.some((e=>e.classList.contains("appendix")))&&e.classList.add("appendix")}(t),t.append(sr`<h1>${Nc.list_of_figures}</h1>`,sr`<ul class="tof">
|
|
876
913
|
${e}
|
|
877
|
-
</ul>`))}});const
|
|
878
|
-
>${
|
|
879
|
-
>`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);for(const e of n.querySelectorAll("a"))
|
|
914
|
+
</ul>`))}});const Dc=Nr({en:{list_of_tables:"List of Tables",table:"Table "}});var Oc=Object.freeze({__proto__:null,name:"core/tables",run:function(){const e=function(){const e=[],t=document.querySelectorAll("table.numbered");return[...t].filter((e=>!!e.querySelector("caption"))).forEach(((t,n)=>{const r=t.querySelector("caption");r&&(!function(e,t,n){const r=t.textContent;Wr(e,"table",r),Gr(t,sr`<span class="table-title"></span>`),t.prepend(sr`<a class="self-link" href="#${e.id}"
|
|
915
|
+
>${Dc.table}<bdi class="tableno">${n+1}</bdi></a
|
|
916
|
+
>`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);for(const e of n.querySelectorAll("a"))Br(e,"span",{copyAttributes:!1});return sr`<li>
|
|
880
917
|
<a class="tocxref" href="${`#${e}`}"
|
|
881
918
|
>${n.childNodes}</a
|
|
882
919
|
>
|
|
883
|
-
</li>`}(t.id,r))})),e}(),t=document.querySelector("section#list-of-tables");e.length&&t&&(!function(e){if(e.matches(".appendix, .introductory")||e.closest("section"))return;const t=
|
|
920
|
+
</li>`}(t.id,r)))})),e}(),t=document.querySelector("section#list-of-tables");e.length&&t&&(!function(e){if(e.matches(".appendix, .introductory")||e.closest("section"))return;const t=Vr(e);t.every((e=>e.classList.contains("introductory")))?e.classList.add("introductory"):t.some((e=>e.classList.contains("appendix")))&&e.classList.add("appendix")}(t),t.append(sr`<h1>${Dc.list_of_tables}</h1>`,sr`<ul class="list-of-tables">
|
|
884
921
|
${e}
|
|
885
|
-
</ul>`))}});const
|
|
922
|
+
</ul>`))}});const jc=new Set(["callback interface","callback","dictionary","enum","interface mixin","interface","typedef"]);function zc(e,t,{parent:n=""}={}){switch(e.type){case"constructor":case"operation":return function(e,t,n){if(n.includes("!overload"))return Mc(e,t,n);const r=`${n}()`;return Mc(e,t,r,n)}(e,n,t);default:return Mc(e,n,t)}}function Mc(e,t,...n){const{type:r}=e;for(const e of n){let n="enum-value"===r&&""===e?"the-empty-string":e,s=qc(n,t,e,r);if(0===s.length&&""!==t){n=`${t}.${n}`;const e=lc.get(n);e&&1===e.size&&(s=[...e],uc(s[0],[n]))}else n=e;if(s.length>1){ts(`WebIDL identifier \`${e}\` ${t?`for \`${t}\``:""} is defined multiple times`,e,{title:"Duplicate definition.",elements:s})}if(s.length)return s[0]}}function Uc(e,t,n,r){if(!e.id){const t=n.toLowerCase(),s=t?`${t}-`:"";let i=r.toLowerCase().replace(/[()]/g,"").replace(/\s/g,"-");""===i&&(i="the-empty-string",e.setAttribute("aria-label","the empty string")),e.id=`dom-${s}${i}`}switch(e.dataset.idl=t.type,e.dataset.title=e.textContent,e.dataset.dfnFor=n,t.type){case"operation":case"attribute":case"field":e.dataset.type=Wc(t)}switch(e.querySelector("code")||e.closest("code")||!e.children||Gr(e,e.ownerDocument.createElement("code")),t.type){case"attribute":case"constructor":case"operation":{const s=function(e,t,n){const{type:r}=e,s=`${t}.${n}`;switch(r){case"constructor":case"operation":{const t=`${n}()`,r=`${s}()`,i=function(e,t){const n=[];if(0===t.length)return n;const r=[],s=[];for(const{name:e,optional:n,variadic:i}of t)n||i?s.push(e):r.push(e);const i=r.join(", "),o=`${e}(${i})`;n.push(o);const a=s.map(((t,n)=>{const i=[...r,...s.slice(0,n+1)].join(", ");return`${e}(${i})`}));return n.push(...a),n}(n,e.arguments);return{local:[s,r,n],exportable:[t,...i]}}case"attribute":return{local:[s],exportable:[n]}}}(t,n,r);s&&function(e,t){const{local:n,exportable:r}=t,s=e.dataset.lt?new Set(e.dataset.lt.split("|")):new Set;for(const e of r)s.add(e);n.filter((e=>s.has(e))).forEach((e=>s.delete(e))),e.dataset.lt=[...s].join("|"),e.dataset.localLt=n.join("|"),uc(e,[...n,...r])}(e,s);break}}return e}function qc(e,t,n,r){const s=lc.get(e);if(!s||0===s.size)return[];const i=[...s],o=i.filter((e=>{if("dfn"===e.dataset.dfnType)return!1;const n=e.closest("[data-dfn-for]");return n&&n.dataset.dfnFor===t}));if(0===o.length&&""===t&&1===i.length)return i[0].textContent===n?i:[];if(jc.has(r)&&i.length){const e=i.find((e=>e.textContent.trim()===n));if(e)return[e]}return o}function Wc(e={}){const{idlType:t,generic:n,union:r}=e;return void 0===t?"":"string"==typeof t?t:n||(r?t.map(Wc).join("|"):Wc(t))}const Fc='<svg height="16" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z"/></svg>';function Bc(e,t="Copy to clipboard"){const n=document.createElement("button");return n.innerHTML=Fc,n.title=t,n.setAttribute("aria-label",t),n.classList.add("respec-button-copy-paste","removeOnSave"),n.dataset.copyHeader=e,n.addEventListener("click",(()=>{const t=n.closest("pre");if(!t)return;const r=t.cloneNode(!0);r.querySelector(e)?.remove(),navigator.clipboard.writeText(r.textContent??"")})),n}function Hc(){if(document.getElementById("respec-copy-paste"))return;const e=document.createElement("script");e.id="respec-copy-paste",e.textContent='\n document.querySelectorAll(".respec-button-copy-paste").forEach(function(btn) {\n btn.addEventListener("click", function() {\n var pre = this.closest("pre");\n if (!pre) return;\n var sel = this.dataset.copyHeader;\n var clone = pre.cloneNode(true);\n if (sel) { var h = clone.querySelector(sel); if (h) h.remove(); }\n navigator.clipboard.writeText(clone.textContent);\n });\n });\n ',document.body.append(e)}function Gc(e){e.append(Bc(".idlHeader","Copy IDL to clipboard")),Hc()}var Vc=Object.freeze({__proto__:null,addCopyIDLButton:Gc,name:"core/webidl-clipboard"});var Jc=String.raw`pre.idl{padding:1em;position:relative}
|
|
886
923
|
pre.idl>code{color:#000;color:var(--text,#000)}
|
|
887
924
|
@media print{
|
|
888
925
|
pre.idl{white-space:pre-wrap}
|
|
@@ -907,37 +944,119 @@ a.idlEnumItem{color:#000;border-bottom:1px dotted #ccc;text-decoration:none}
|
|
|
907
944
|
.respec-button-copy-paste:is(:disabled,:disabled:hover,.disabled,.disabled:hover){color:rgba(102,102,102,.5);cursor:default;background-color:rgba(229,229,229,.5);background-image:none;border-color:rgba(197,197,197,.5);box-shadow:none}
|
|
908
945
|
@media print{
|
|
909
946
|
.respec-button-copy-paste{visibility:hidden}
|
|
910
|
-
}`;const
|
|
947
|
+
}`;const Kc="core/webidl",Zc=Kc,Yc={},Xc={},Qc={wrap:e=>e.flat().filter((e=>""!==e)).map((e=>"string"==typeof e?new Text(e):e)),trivia:e=>e.trim()?sr`<span class="idlSectionComment">${e}</span>`:e,generic:e=>/^[A-Z]/.test(e)?sr`<a data-xref-type="interface" data-cite="WEBIDL">${e}</a>`:sr`<a data-xref-type="dfn" data-cite="WEBIDL">${e}</a>`,reference(e,t,n){if("extended-attribute"===n.type)return e;let r="_IDL_",s=null;if("object"===t)r="interface",s="WEBIDL";return sr`<a
|
|
911
948
|
data-link-type="${"_IDL_"===r?"idl":r}"
|
|
912
949
|
data-xref-type="${r}"
|
|
913
950
|
data-cite="${s}"
|
|
914
951
|
data-lt="${undefined}"
|
|
915
952
|
>${e}</a
|
|
916
|
-
>`},name(e,{data:t,parent:n}){if(t.idlType&&"argument-type"===t.idlType.type)return
|
|
953
|
+
>`},name(e,{data:t,parent:n}){if(t.idlType&&"argument-type"===t.idlType.type)return sr`<span class="idlParamName">${e}</span>`;const r=el(e,t,n);if("enum-value"!==t.type){const e=n?"idlName":"idlID";r.classList.add(e)}return r},nameless(e,{data:t,parent:n}){switch(t.type){case"operation":case"constructor":return el(e,t,n);default:return e}},type:e=>sr`<span class="idlType">${e}</span>`,inheritance:e=>sr`<span class="idlSuperclass">${e}</span>`,definition(e,{data:t,parent:n}){const r=function(e){switch(e.type){case"callback interface":return"idlInterface";case"operation":return"idlMethod";case"field":return"idlMember";case"enum-value":return"idlEnumItem";case"callback function":return"idlCallback"}return`idl${e.type[0].toUpperCase()}${e.type.slice(1)}`}(t);switch(t.type){case"includes":case"enum-value":return sr`<span class="${r}">${e}</span>`}const s=n?n.name:"",{name:i,idlId:o}=nl(t,s);return sr`<span
|
|
917
954
|
class="${r}"
|
|
918
|
-
id="${
|
|
955
|
+
id="${o}"
|
|
919
956
|
data-idl
|
|
920
|
-
data-title="${
|
|
957
|
+
data-title="${i}"
|
|
921
958
|
>${e}</span
|
|
922
|
-
>`},extendedAttribute:e=>
|
|
959
|
+
>`},extendedAttribute:e=>sr`<span class="extAttr">${e}</span>`,extendedAttributeReference:e=>sr`<a data-xref-type="extended-attribute">${e}</a>`};function el(e,t,n){const r=n?n.name:"",{name:s}=nl(t,r),i=zc(t,s,{parent:r}),o=function(e){switch(e){case"operation":return"method";case"field":return"dict-member";case"callback interface":case"interface mixin":return"interface";default:return e}}(t.type);if(i){t.partial||(i.matches("[data-noexport]")||(i.dataset.export=""),i.dataset.dfnType=o),Uc(i,t,r,s);const n=`#${i.id}`;return sr`<a
|
|
923
960
|
data-link-for="${r}"
|
|
924
|
-
data-link-type="${
|
|
961
|
+
data-link-type="${o}"
|
|
925
962
|
href="${n}"
|
|
926
963
|
class="internalDFN"
|
|
927
964
|
><code>${e}</code></a
|
|
928
|
-
>`}const a="operation"===t.type&&"toJSON"===t.name&&t.extAttrs.some((({name:e})=>"Default"===e));if(a)return
|
|
965
|
+
>`}const a="operation"===t.type&&"toJSON"===t.name&&t.extAttrs.some((({name:e})=>"Default"===e));if(a)return sr`<a data-link-type="dfn" data-lt="default toJSON steps"
|
|
929
966
|
>${e}</a
|
|
930
|
-
>`;if(!t.partial){const n=
|
|
967
|
+
>`;if(!t.partial){const n=sr`<dfn data-export data-dfn-type="${o}"
|
|
931
968
|
>${e}</dfn
|
|
932
|
-
>`;return
|
|
969
|
+
>`;return uc(n,[s]),Uc(n,t,r,s),n}const c=sr`<a
|
|
933
970
|
data-idl="${t.partial?"partial":null}"
|
|
934
|
-
data-link-type="${
|
|
971
|
+
data-link-type="${o}"
|
|
935
972
|
data-title="${t.name}"
|
|
936
|
-
data-xref-type="${
|
|
973
|
+
data-xref-type="${o}"
|
|
937
974
|
>${e}</a
|
|
938
|
-
>`;if(s&&"typedef"!==t.type&&!(t.partial&&!
|
|
975
|
+
>`;if(s&&"typedef"!==t.type&&!(t.partial&&!i)){const e=cs`See ${"using `data-dfn-for`|#data-dfn-for"} in ReSpec's documentation.`;ns(`Missing \`<dfn>\` for${r?` \`${r}\`'s`:""} \`${"operation"===t.type?`${s}()`:s}\` ${t.type}.`,Zc,{elements:[c],hint:e})}return c}const tl=new WeakMap;function nl(e,t=""){if(tl.has(e))return tl.get(e);const n=function(e,t){let n=function(e){switch(e.type){case"enum-value":return e.value;case"operation":return e.name||e.special;default:return e.name||e.type}}(e);const r=e.special&&""===e.name?"anonymous-":"";let s=function(e,t){if(!t)return`idl-def-${e.toLowerCase()}`;return`idl-def-${t.toLowerCase()}-${e.toLowerCase()}`}(r+n,t);switch(e.type){case"callback interface":case"dictionary":case"interface":case"interface mixin":case"namespace":s+=function(e){if(!e.partial)return"";Xc[e.name]||(Xc[e.name]=0);return Xc[e.name]+=1,`-partial-${Xc[e.name]}`}(e);break;case"constructor":case"operation":{const r=function(e,t){const n=`${t}.${e}`,r=`${n}()`;let s;Yc[r]||(Yc[r]=0);Yc[n]?s=`!overload-${Yc[n]}`:Yc[n]=0;return Yc[r]+=1,Yc[n]+=1,s||""}(n,t);r?(n+=r,s+=r):e.arguments.length&&(s+=e.arguments.map((e=>`-${e.name.toLowerCase()}`)).join(""));break}}return{name:n,idlId:s}}(e,t);return tl.set(e,n),n}const rl=["interface","interface mixin","dictionary","namespace","enum","typedef","callback"];function sl(e,t){let n;try{n=lr.parse(e.textContent,{sourceName:String(t)})}catch(t){return ts(`Failed to parse WebIDL: ${t.bareMessage}.`,Zc,{title:t.bareMessage,details:`<pre>${t.context}</pre>`,elements:[e]}),[]}e.classList.add("def","idl");const r=lr.write(n,{templates:Qc});sr.bind(e)`${r}`,Gr(e,document.createElement("code")),e.querySelectorAll("[data-idl]").forEach((e=>{if(e.dataset.dfnFor)return;const t=e.dataset.title,n=e.dataset.dfnType,r=e.parentElement.closest("[data-idl][data-title]");r&&!rl.includes(n)&&(e.dataset.dfnFor=r.dataset.title),"dfn"===e.localName&&uc(e,[t])}));const s=e.closest("[data-cite], body"),{dataset:i}=s;if(i.cite||(i.cite="WEBIDL"),!/\bwebidl\b/i.test(i.cite)){const e=i.cite.trim().split(/\s+/);i.cite=["WEBIDL",...e].join(" ")}return il(e),n}function il(e){Ur(e,"webidl");const t=sr`<span class="idlHeader"
|
|
939
976
|
><a class="self-link" href="${`#${e.id}`}">WebIDL</a></span
|
|
940
|
-
>`;e.prepend(t),Ma(t)}var ec=Object.freeze({__proto__:null,addIDLHeader:Qa,name:Fa,run:async function(){const e=document.querySelectorAll("pre.idl, pre.webidl");if(!e.length)return;const t=document.createElement("style");t.textContent=Wa,document.querySelector("head link, head > *:last-child").before(t);const n=[...e].map(Xa),r=Tn.validate(n);for(const t of r){let r=`<pre>${Bn(t.context)}</pre>`;if(t.autofix){t.autofix();r+=`Try fixing as:\n <pre>${Bn(Tn.write(n[t.sourceName]))}</pre>`}fr(`WebIDL validation error: ${t.bareMessage}`,Ba,{details:r,elements:[e[t.sourceName]],title:t.bareMessage})}document.normalize()}});const tc="core/data-cite",nc="__SPEC__";async function rc(e){const{key:t,frag:n,path:r,href:s}=e;let o="",i="";if(t===nc)o=document.location.href;else{const e=await wi(t);if(!e)return null;o=e.href,i=e.title}if(s)o=s;else{if(r){const e=r.startsWith("/")?`.${r}`:r;o=new URL(e,o).href}n&&(o=new URL(n,o).href)}return{href:o,title:i}}function sc(e,t,n){const{href:r,title:s}=t,o=!n.path&&!n.frag;switch(e.localName){case"a":{const t=e;if(""===t.textContent&&"the-empty-string"!==t.dataset.lt&&(t.textContent=s),t.href=r,o){const e=document.createElement("cite");t.replaceWith(e),e.append(t)}break}case"dfn":{const t=document.createElement("a");if(t.href=r,t.dataset.cite=n.key,t.dataset.citePath=n.path,t.dataset.citeFrag=n.frag,e.textContent?sr(e,t):(t.textContent=s,e.append(t)),o){const n=document.createElement("cite");n.append(t),e.append(n)}if("export"in e.dataset){fr("Exporting a linked external definition is not allowed.",tc,{hint:"Please remove the `data-export` attribute.",elements:[e]}),delete e.dataset.export}e.classList.add("externalDFN"),e.dataset.noExport="";break}}}function oc(e){return t=>{const n=t.search(e);return-1!==n?t.substring(n):""}}const ic=oc("#"),ac=oc("/");function cc(e){const{dataset:t}=e,{cite:n,citeFrag:r,citePath:s,citeHref:o}=t;if(n.startsWith("#")&&!r){const r=e.parentElement.closest('[data-cite]:not([data-cite^="#"])'),{key:s,isNormative:o}=r?cc(r):{key:nc,isNormative:!1};return t.cite=o?s:`?${s}`,t.citeFrag=n.replace("#",""),cc(e)}const i=r?`#${r}`:ic(n),a=s||ac(n).split("#")[0],{type:c}=rr(n,e),l="normative"===c,u=/^[?|!]/.test(n);return{key:n.split(/[/|#]/)[0].substring(Number(u)),isNormative:l,frag:i,path:a,href:o}}function lc(e){const t=["data-cite","data-cite-frag","data-cite-path"];e.querySelectorAll("a[data-cite], dfn[data-cite]").forEach((e=>t.forEach((t=>e.removeAttribute(t)))))}var uc=Object.freeze({__proto__:null,THIS_SPEC:nc,name:tc,run:async function(){const e=document.querySelectorAll("dfn[data-cite]:not([data-cite='']), a[data-cite]:not([data-cite=''])");await async function(e){const t=e.map(cc).map((async e=>({entry:e,result:await wi(e.key)}))),n=(await Promise.all(t)).filter((({result:e})=>null===e)).map((({entry:{key:e}})=>e)),r=await yi(n);r&&Object.assign(hi,r)}([...e]);for(const t of e){const e=t.dataset.cite,n=cc(t),r=await rc(n);if(r)sc(t,r,n);else{const n=`Couldn't find a match for "${e}"`;t.dataset.matchedText&&(t.textContent=t.dataset.matchedText),mr(n,tc,{elements:[t]})}}Sr("beforesave",lc)},toCiteDetails:cc});const dc="core/link-to-dfn",pc=[],hc={en:{duplicateMsg:e=>`Duplicate definition(s) of '${e}'`,duplicateTitle:"This is defined more than once in the document."},ja:{duplicateMsg:e=>`'${e}' の重複定義`,duplicateTitle:"この文書内で複数回定義されています."},de:{duplicateMsg:e=>`Mehrfache Definition von '${e}'`,duplicateTitle:"Das Dokument enthält mehrere Definitionen dieses Eintrags."},zh:{duplicateMsg:e=>`'${e}' 的重复定义`,duplicateTitle:"在文档中有重复的定义。"},cs:{duplicateMsg:e=>`Duplicitní definice '${e}'`,duplicateTitle:"Toto je v dokumentu definováno vícekrát."}},fc=Gn(hc);function mc(e){const t=new Map,n=[];for(const r of oa.get(e)){const{dfnType:s="dfn"}=r.dataset,o=r.dataset.dfnFor?.split(",").map((e=>e.trim()))??[""];for(const i of o){if(t.has(i)&&t.get(i).has(s)){const e=t.get(i).get(s),o="dfn"===e.localName,a="dfn"===r.localName,c=s===(e.dataset.dfnType||"dfn"),l=!i&&!e.dataset.dfnFor||e.dataset.dfnFor?.split(",").map((e=>e.trim())).includes(i);if(o&&a&&c&&l){n.push(r);continue}}t.has(i)||t.set(i,new Map),t.get(i).set(s,r),("idl"in r.dataset||"dfn"!==s)&&t.get(i).set("idl",r),er(r,"dfn",e)}}return{result:t,duplicates:n}}function gc(e,t){const n=function(e){const t=e.closest("[data-link-for]"),n=t?t.dataset.linkFor:"",r=tr(e).reduce(((e,r)=>{const s=r.split(".");return 2===s.length&&e.push({for:s[0],title:s[1]}),e.push({for:n,title:r}),t||e.push({for:r,title:r}),""!==n&&e.push({for:"",title:r}),e}),[]);return r}(e),r=n.find((e=>t.has(e.title)&&t.get(e.title).has(e.for)));if(!r)return;const s=t.get(r.title).get(r.for),{linkType:o}=e.dataset;if(o){for(const e of o.split("|"))if(s.get(e))return s.get(e);return s.get("dfn")}{const e=r.for?"idl":"dfn";return s.get(e)||s.get("idl")}}function bc(e,t,n){let r=!1;const{linkFor:s}=e.dataset,{dfnFor:o}=t.dataset;if(t.dataset.cite)e.dataset.cite=t.dataset.cite;else if(s&&!n.get(s)&&o&&!o.split(",").map((e=>e.trim())).includes(s))r=!0;else if(t.classList.contains("externalDFN")){const n=t.dataset.lt?t.dataset.lt.split("|"):[];e.dataset.lt=n[0]||t.textContent,r=!0}else"partial"!==e.dataset.idl?(e.href=`#${t.id}`,e.classList.add("internalDFN")):r=!0;return e.hasAttribute("data-link-type")||(e.dataset.linkType="idl"in t.dataset?"idl":"dfn"),function(e){if(e.closest("code,pre"))return!0;if(1!==e.childNodes.length)return!1;const[t]=e.childNodes;return"code"===t.localName}(t)&&function(e,t){const n=e.textContent.trim(),r=t.dataset.hasOwnProperty("idl"),s=yc(e)&&yc(t,n);r&&!s||sr(e,document.createElement("code"))}(e,t),!r}function yc(e,t=""){if("a"===e.localName){if(!e.querySelector("code"))return!0}else{const{dataset:n}=e;if(e.textContent.trim()===t)return!0;if(n.title===t)return!0;if(n.lt||n.localLt){const e=[];return n.lt&&e.push(...n.lt.split("|")),n.localLt&&e.push(...n.localLt.split("|")),e.includes(t)}}return!1}function wc(e){e.forEach((e=>{mr(`Found linkless \`<a>\` element with text "${e.textContent}" but no matching \`<dfn>\``,dc,{title:"Linking error: not matching `<dfn>`",elements:[e]})}))}var vc=Object.freeze({__proto__:null,name:dc,possibleExternalLinks:pc,run:async function(e){const t=function(){const e=new pr;for(const t of oa.keys()){const{result:n,duplicates:r}=mc(t);e.set(t,n),r.length>0&&fr(fc.duplicateMsg(t),dc,{title:fc.duplicateTitle,elements:r})}return e}(),n=[],r=document.querySelectorAll("a[data-cite=''], a:not([href]):not([data-cite]):not(.logo):not(.externalDFN)");for(const e of r){if(!e.dataset?.linkType&&e.dataset?.xrefType){pc.push(e);continue}const r=gc(e,t);if(r){bc(e,r,t)||pc.push(e)}else""===e.dataset.cite?n.push(e):pc.push(e)}wc(n),function(e){const{shortName:t=""}=e,n=new RegExp(String.raw`^([?!])?${t}\b([^-])`,"i"),r=document.querySelectorAll("dfn[data-cite]:not([data-cite='']), a[data-cite]:not([data-cite=''])");for(const t of r){t.dataset.cite=t.dataset.cite.replace(n,`$1${nc}$2`);const{key:r,isNormative:s}=cc(t);r!==nc&&(s||e.normativeReferences.has(r)?(e.normativeReferences.add(r),e.informativeReferences.delete(r)):e.informativeReferences.add(r))}}(e),e.xref||wc(pc)}});const kc="xrefs",$c=3e5;async function xc(){return await Rn.openDB("xref",2,{upgrade(e){[...e.objectStoreNames].forEach((t=>e.deleteObjectStore(t)));e.createObjectStore(kc,{keyPath:"query.id"}).createIndex("byTerm","query.term",{unique:!1})}})}async function _c(e){const t=new Map;if(await async function(){const e="XREF:LAST_VERSION_CHECK",t=parseInt(localStorage.getItem(e),10),n=Date.now();if(!t)return localStorage.setItem(e,n.toString()),!1;if(n-t<$c)return!1;const r=new URL("meta/version",Rc).href,s=await fetch(r);if(!s.ok)return!1;const o=await s.text();return localStorage.setItem(e,n.toString()),parseInt(o,10)>t}())return await async function(){try{await xc().then((e=>e.clear(kc)))}catch(e){console.error(e)}}(),t;const n=new Set(e.map((e=>e.id)));try{const e=await xc();let r=await e.transaction(kc).store.openCursor();for(;r;)n.has(r.key)&&t.set(r.key,r.value.result),r=await r.continue()}catch(e){console.error(e)}return t}const Sc="core/xref",Cc={"web-platform":["HTML","INFRA","URL","WEBIDL","DOM","FETCH"]},Rc="https://respec.org/xref/",Ec=[];if(!document.querySelector("link[rel='preconnect'][href='https://respec.org']")){const e=On({hint:"preconnect",href:"https://respec.org"});document.head.appendChild(e)}function Lc(e){const t="xrefType"in e.dataset;let n=Ac(e);t||(n=n.toLowerCase());const r=function(e){const t=[];let n=e.closest("[data-cite]");for(;n;){const r=n.dataset.cite.toLowerCase().replace(/[!?]/g,"").split(/\s+/).filter((e=>e));if(r.length&&t.push(r),n===e)break;n=n.parentElement.closest("[data-cite]")}if(n!==e){const n=e.closest("section"),r=[...n?n.querySelectorAll("a.bibref"):[]].map((e=>e.textContent.toLowerCase()));r.length&&t.push(r)}const r=function(e){const t=[];for(const n of e){const e=t[t.length-1]||[],r=[...new Set(n)].filter((t=>!e.includes(t)));t.push(r.sort())}return t}(t);return r}(e),s=function(e,t){if(t)return e.dataset.xrefType?e.dataset.xrefType.split("|"):["_IDL_"];return["_CONCEPT_"]}(e,t),o=function(e,t){if(e.dataset.xrefFor)return Hn(e.dataset.xrefFor);if(t){const t=e.closest("[data-xref-for]");if(t)return Hn(t.dataset.xrefFor)}return null}(e,t);return{id:"",term:n,types:s,...r.length&&{specs:r},..."string"==typeof o&&{for:o}}}function Ac(e){const{lt:t}=e.dataset;let n=t?t.split("|",1)[0]:e.textContent;return n=Hn(n),"the-empty-string"===n?"":n}function Tc(e,t,n,r){const{term:s,specs:o=[]}=t,{uri:i,shortname:a,spec:c,normative:l,type:u,for:d}=n,p=o.flat().includes(c)?c:a,h=new URL(i,"https://partial");let{pathname:f}=h;"/"===f&&(f="");const m={cite:p,citePath:f,citeFrag:h.hash.slice(1),linkType:u};d&&(m.linkFor=d[0]),h.origin&&"https://partial"!==h.origin&&(m.citeHref=h.href),Object.assign(e.dataset,m),function(e,t,n,r,s){const o=function(e){const t=e.closest(".normative"),n=e.closest(jn);return!n||e===t||t&&n&&n.contains(t)}(e);if(!o)return void(s.normativeReferences.has(t)||s.informativeReferences.add(t));if(n){const e=s.informativeReferences.has(t)?s.informativeReferences.getCanonicalKey(t):t;return s.normativeReferences.add(e),void s.informativeReferences.delete(e)}Ec.push({term:r,spec:t,element:e})}(e,p,l,s,r)}function Pc(e){const t=JSON.stringify(e,Object.keys(e).sort()),n=(new TextEncoder).encode(t);return crypto.subtle.digest("SHA-1",n).then(Ic)}function Ic(e){return[...new Uint8Array(e)].map((e=>e.toString(16).padStart(2,"0"))).join("")}function Dc(e){const t=e.querySelectorAll("a[data-xref-for], a[data-xref-type], a[data-link-for]"),n=["data-xref-for","data-xref-type","data-link-for"];t.forEach((e=>{n.forEach((t=>e.removeAttribute(t)))}))}var Nc=Object.freeze({__proto__:null,API_URL:Rc,getTermFromElement:Ac,informativeRefsInNormative:Ec,name:Sc,run:async function(e){if(!e.xref)return;const t=function(e){const t={url:new URL("search/",Rc).href,specs:null},n=Object.assign({},t);switch(Array.isArray(e)?"array":typeof e){case"boolean":break;case"string":e.toLowerCase()in Cc?Object.assign(n,{specs:Cc[e.toLowerCase()]}):r(e);break;case"array":Object.assign(n,{specs:e});break;case"object":if(Object.assign(n,e),e.profile){const t=e.profile.toLowerCase();if(t in Cc){const r=(e.specs??[]).concat(Cc[t]);Object.assign(n,{specs:r})}else r(e.profile)}break;default:fr(`Invalid value for \`xref\` configuration option. Received: "${e}".`,Sc)}return n;function r(e){fr(`Invalid profile "${e}" in \`respecConfig.xref\`. Please use one of the supported profiles: ${Fn(Object.keys(Cc),(e=>`"${e}"`))}.`,Sc)}}(e.xref);if(t.specs){const e=document.body.dataset.cite?document.body.dataset.cite.split(/\s+/):[];document.body.dataset.cite=e.concat(t.specs).join(" ")}const n=pc.concat(function(){const e=document.querySelectorAll(":is(a,dfn)[data-cite]:not([data-cite=''],[data-cite*='#'])"),t=document.querySelectorAll("dfn.externalDFN");return[...e].filter((e=>{if(""===e.textContent.trim())return!1;const t=e.closest("[data-cite]");return!t||""!==t.dataset.cite})).concat(...t)}());if(!n.length)return;const r=[];for(const e of n){const t=Lc(e);t.id=await Pc(t),r.push(t)}const s=await async function(e,t){const n=new Set,r=e.filter((e=>!n.has(e.id)&&(n.add(e.id)&&!0))),s=await _c(r),o=r.filter((e=>!s.get(e.id))),i=await async function(e,t){if(!e.length)return new Map;const n={method:"POST",body:JSON.stringify({queries:e}),headers:{"Content-Type":"application/json"}},r=await fetch(t,n),s=await r.json();return new Map(s.results.map((({id:e,result:t})=>[e,t])))}(o,t);i.size&&await async function(e,t){try{const n=(await xc()).transaction(kc,"readwrite");for(const r of e){const e=t.get(r.id);n.objectStore(kc).add({query:r,result:e})}await n.done}catch(e){console.error(e)}}(r,i);return new Map([...s,...i])}(r,t.url);!function(e,t,n,r){const s={ambiguous:new Map,notFound:new Map};for(let o=0,i=e.length;o<i;o++){if(e[o].closest("[data-no-xref]"))continue;const i=e[o],a=t[o],{id:c}=a,l=n.get(c);if(1===l.length)Tc(i,a,l[0],r);else{const e=s[0===l.length?"notFound":"ambiguous"];e.has(c)||e.set(c,{elems:[],results:l,query:a}),e.get(c).elems.push(i)}}!function({ambiguous:e,notFound:t}){const n=(e,t,n=[])=>{const r=new URL(Rc);return r.searchParams.set("term",e),t.for&&r.searchParams.set("for",t.for),r.searchParams.set("types",t.types.join(",")),n.length&&r.searchParams.set("specs",n.join(",")),r.href},r=(e,t)=>kr`[See search matches for "${t}"](${e}) or ${"[Learn about this error|#error-term-not-found]"}.`;for(const{query:e,elems:s}of t.values()){const t=e.specs?[...new Set(e.specs.flat())].sort():[],o=Ac(s[0]),i=n(o,e),a=Wn(t,(e=>`**[${e}]**`)),c=r(i,o);fr(`Couldn't find "**${o}**"${e.for?`, for **"${e.for}"**, `:""} in this document or other cited documents: ${a}.`,Sc,{title:"No matching definition found.",elements:s,hint:c})}for(const{query:t,elems:s,results:o}of e.values()){const e=[...new Set(o.map((e=>e.shortname)))].sort(),i=Wn(e,(e=>`**[${e}]**`)),a=Ac(s[0]),c=n(a,t,e),l=t.for?`, for **"${t.for}"**, `:"",u=r(c,a),d=kr`To fix, use the ${"[data-cite]"} attribute to pick the one you mean from the appropriate specification.`+String.raw` ${u}`;fr(`The term "**${a}**"${l} is ambiguous because it's defined in ${i}.`,Sc,{title:"Definition is ambiguous.",elements:s,hint:d})}}(s)}(n,r,s,e),Sr("beforesave",Dc)}});var jc=String.raw`ul.index{columns:30ch;column-gap:1.5em}
|
|
977
|
+
>`;e.prepend(t),Gc(t)}var ol=Object.freeze({__proto__:null,addIDLHeader:il,name:Kc,run:async function(){const e=document.querySelectorAll("pre.idl, pre.webidl");if(!e.length)return;const t=document.createElement("style");t.textContent=Jc,document.querySelector("head link, head > *:last-child").before(t);const n=[...e].map(sl),r=lr.validate(n);for(const t of r){let r=`<pre>${Ar(t.context)}</pre>`;if(t.autofix){t.autofix();r+=`Try fixing as:\n <pre>${Ar(lr.write(n[t.sourceName]))}</pre>`}ts(`WebIDL validation error: ${t.bareMessage}`,Zc,{details:r,elements:[e[t.sourceName]],title:t.bareMessage})}document.normalize()}});var al=String.raw`:root{--cddl-comment:#6a737d;--cddl-kw:#005a9c;--cddl-str:#032f62;--cddl-num:#005cc5;--cddl-op:#6f42c1;--cddl-ctrl:#d73a49;--cddl-occ:#e36209;--cddl-bytes:#22863a;--cddl-param:#e36209;--cddl-type-dfn:#c43a31;--cddl-key-dfn:#005a9c;--cddl-header-bg:var(--def-border, #8ccbf2);--cddl-header-color:#005a9c;--cddl-focus:#51a7e8}
|
|
978
|
+
@media (prefers-color-scheme:dark){
|
|
979
|
+
:root{--cddl-comment:#8b949e;--cddl-kw:#79c0ff;--cddl-str:#a5d6ff;--cddl-num:#79c0ff;--cddl-op:#d2a8ff;--cddl-ctrl:#ff7b72;--cddl-occ:#ffa657;--cddl-bytes:#7ee787;--cddl-param:#ffa657;--cddl-type-dfn:#ffa198;--cddl-key-dfn:#79c0ff;--cddl-header-bg:#3a6da0;--cddl-header-color:#fff;--cddl-focus:#51a7e8}
|
|
980
|
+
}
|
|
981
|
+
pre.cddl{padding:1em;position:relative}
|
|
982
|
+
pre.cddl>code{color:var(--text,#000)}
|
|
983
|
+
@media print{
|
|
984
|
+
pre.cddl{white-space:pre-wrap}
|
|
985
|
+
}
|
|
986
|
+
.cddlHeader{display:block;width:150px;background:var(--cddl-header-bg);color:var(--cddl-header-color);font-family:sans-serif;font-weight:700;margin:-1em 0 1em -1em;height:1.75em;line-height:1.75em}
|
|
987
|
+
.cddlHeader a.self-link{margin-left:.5em;text-decoration:none;border-bottom:none;color:inherit}
|
|
988
|
+
pre.cddl .cddl-comment{color:var(--cddl-comment);font-style:italic}
|
|
989
|
+
pre.cddl .cddl-kw{color:var(--cddl-kw)}
|
|
990
|
+
pre.cddl .cddl-str,pre.cddl dfn[data-dfn-type=cddl-value]{color:var(--cddl-str)}
|
|
991
|
+
pre.cddl .cddl-num{color:var(--cddl-num)}
|
|
992
|
+
pre.cddl .cddl-op{color:var(--cddl-op)}
|
|
993
|
+
pre.cddl .cddl-ctrl{color:var(--cddl-ctrl)}
|
|
994
|
+
pre.cddl .cddl-occ{color:var(--cddl-occ)}
|
|
995
|
+
pre.cddl .cddl-name{font-weight:700}
|
|
996
|
+
pre.cddl .cddl-name a{color:inherit;border-bottom:1px dotted currentColor;text-decoration:none}
|
|
997
|
+
pre.cddl .cddl-bytes{color:var(--cddl-bytes)}
|
|
998
|
+
pre.cddl .cddl-param{font-style:italic;color:var(--cddl-param)}
|
|
999
|
+
pre.cddl a[data-link-type]{text-decoration:none;border-bottom:1px dotted currentColor}
|
|
1000
|
+
pre.cddl dfn{font-style:normal;font-weight:700}
|
|
1001
|
+
.cddlHeader a.self-link:focus-visible,pre.cddl a:focus-visible,pre.cddl dfn:focus-visible{outline:2px solid var(--cddl-focus);outline-offset:2px}
|
|
1002
|
+
.respec-button-copy-paste:focus-visible{outline:2px solid var(--cddl-focus);outline-offset:2px}
|
|
1003
|
+
pre.cddl dfn[data-dfn-type=cddl-type]{color:var(--cddl-type-dfn)}
|
|
1004
|
+
pre.cddl dfn[data-dfn-type=cddl-key]{color:var(--cddl-key-dfn)}`;const cl="core/cddl",ll=new Set(["any","uint","nint","int","bstr","bytes","tstr","text","tdate","time","number","biguint","bignint","bigint","integer","unsigned","decfrac","bigfloat","eb64url","eb64legacy","eb16","encoded-cbor","uri","b64url","b64legacy","regexp","mime-message","cbor-any","float16","float32","float64","float16-32","float32-64","float","false","true","bool","nil","null","undefined"]);function ul(e){return e.toLowerCase().replace(/^"(.*)"$/,"$1").replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function dl(e){let t=e.parentNode;for(;t;){if(t instanceof pr)return t.name?.name||null;t=t.parentNode}return null}const pl=String.raw;class hl extends dr{#e=null;#t;constructor(e){super(),this.#t=e}serializeName(e,t){const n=this.#t;if(function(e){let t=e.parentNode;for(;t;){if(t instanceof fr)return!0;if(t instanceof pr)return!1;t=t.parentNode}return!1}(t)){const r=dl(t);return r&&(n.genericParams.has(r)||n.genericParams.set(r,new Set),n.genericParams.get(r)?.add(e)),pl`<span class="cddl-param">${Ar(e)}</span>`}if(function(e){let t=e.parentNode;for(;t;){if(t instanceof mr)return!0;if(t instanceof pr)return!1;t=t.parentNode}return!1}(t))return this.#n(e);if(function(e){return e.parentNode instanceof pr}(t))return this.#e=e,this.#r(e);if(function(e){return e.parentNode instanceof hr}(t))return this.#s(e);const r=dl(t)||this.#e;return r&&n.genericParams.has(r)&&n.genericParams.get(r)?.has(e)?pl`<span class="cddl-param">${Ar(e)}</span>`:this.#n(e)}#r(e){const t=this.#t,n=`cddl-type-${ul(e)}`,r=`cddl-type:${e}`;return t.definitions.has(r)?pl`<a href="#${n}" class="cddl-name" data-link-type="cddl-type"
|
|
1005
|
+
>${Ar(e)}</a
|
|
1006
|
+
>`:t.proseDfns.has(n)?(t.definitions.set(r,{type:"cddl-type",for:null,id:n}),pl`<a href="#${n}" class="cddl-name" data-link-type="cddl-type"
|
|
1007
|
+
>${Ar(e)}</a
|
|
1008
|
+
>`):(t.definitions.set(r,{type:"cddl-type",for:null,id:n}),pl`<dfn data-dfn-type="cddl-type" id="${n}" data-export
|
|
1009
|
+
>${Ar(e)}</dfn
|
|
1010
|
+
>`)}#s(e){const t=this.#t,n=this.#e;if(!n)return pl`<span class="cddl-name">${Ar(e)}</span>`;const r=`cddl-key-${ul(n)}-${ul(e)}`,s=`cddl-key:${n}/${e}`;return t.definitions.has(s)?pl`<a
|
|
1011
|
+
href="#${r}"
|
|
1012
|
+
class="cddl-name"
|
|
1013
|
+
data-link-type="cddl-key"
|
|
1014
|
+
data-xref-for="${Ar(n)}"
|
|
1015
|
+
>${Ar(e)}</a
|
|
1016
|
+
>`:t.proseDfns.has(r)?(t.definitions.set(s,{type:"cddl-key",for:n,id:r}),pl`<a
|
|
1017
|
+
href="#${r}"
|
|
1018
|
+
class="cddl-name"
|
|
1019
|
+
data-link-type="cddl-key"
|
|
1020
|
+
data-xref-for="${Ar(n)}"
|
|
1021
|
+
>${Ar(e)}</a
|
|
1022
|
+
>`):(t.definitions.set(s,{type:"cddl-key",for:n,id:r}),pl`<dfn
|
|
1023
|
+
data-dfn-type="cddl-key"
|
|
1024
|
+
data-dfn-for="${Ar(n)}"
|
|
1025
|
+
id="${r}"
|
|
1026
|
+
data-export
|
|
1027
|
+
>${Ar(e)}</dfn
|
|
1028
|
+
>`)}#n(e){const t=this.#t;if(ll.has(e))return pl`<a
|
|
1029
|
+
class="cddl-kw"
|
|
1030
|
+
data-link-type="cddl-type"
|
|
1031
|
+
data-link-spec="rfc8610"
|
|
1032
|
+
href="${"https://www.rfc-editor.org/rfc/rfc8610#appendix-D"}"
|
|
1033
|
+
>${Ar(e)}</a
|
|
1034
|
+
>`;const n=`cddl-type:${e}`;if(t.definitions.has(n)){const r=t.definitions.get(n);return r?pl`<a
|
|
1035
|
+
href="#${r.id}"
|
|
1036
|
+
class="cddl-name"
|
|
1037
|
+
data-link-type="cddl-type"
|
|
1038
|
+
>${Ar(e)}</a
|
|
1039
|
+
>`:pl`<span class="cddl-name">${Ar(e)}</span>`}return pl`<span class="cddl-name" data-cddl-pending="${Ar(e)}"
|
|
1040
|
+
>${Ar(e)}</span
|
|
1041
|
+
>`}serializeValue(e,t,n,r){const s=this.#t,i=e+t+n;if("text"===r.type&&this.#i(r)){const e=this.#e;if(e){const n=`cddl-value-${ul(e)}-${ul(t)}`,r=`cddl-value:${e}/"${t}"`;if(s.definitions.has(r)){const t=s.definitions.get(r);return t?pl`<a
|
|
1042
|
+
href="#${t.id}"
|
|
1043
|
+
class="cddl-str"
|
|
1044
|
+
data-link-type="cddl-value"
|
|
1045
|
+
data-xref-for="${Ar(e)}"
|
|
1046
|
+
>${Ar(i)}</a
|
|
1047
|
+
>`:pl`<span class="cddl-str">${Ar(i)}</span>`}if(s.proseDfns.has(n))return s.definitions.set(r,{type:"cddl-value",for:e,id:n}),pl`<a
|
|
1048
|
+
href="#${n}"
|
|
1049
|
+
class="cddl-str"
|
|
1050
|
+
data-link-type="cddl-value"
|
|
1051
|
+
data-xref-for="${Ar(e)}"
|
|
1052
|
+
>${Ar(i)}</a
|
|
1053
|
+
>`;if(!s.definitions.has(r))return s.definitions.set(r,{type:"cddl-value",for:e,id:n}),pl`<dfn
|
|
1054
|
+
data-dfn-type="cddl-value"
|
|
1055
|
+
data-dfn-for="${Ar(e)}"
|
|
1056
|
+
id="${n}"
|
|
1057
|
+
data-export
|
|
1058
|
+
>${Ar(i)}</dfn
|
|
1059
|
+
>`}}switch(r.type){case"text":return pl`<span class="cddl-str">${Ar(i)}</span>`;case"number":case"float":return pl`<span class="cddl-num">${Ar(i)}</span>`;case"bytes":case"hex":case"base64":return pl`<span class="cddl-bytes">${Ar(i)}</span>`;default:return Ar(i)}}#i(e){const t=e.parentNode;return!!t&&t instanceof gr}serializeToken(e,t){const n=e.type,r=e.serialize();switch(n){case"COMMENT":return this.#o(r);case"CTLOP":return this.#a(r);case"=":case"/=":case"//=":case"/":case"//":case"=>":case"..":case"...":return this.#c(r);case"?":case"*":case"+":return t instanceof br?this.#l(r):r;default:return r}}#o(e){return e.replace(/(;[^\n]*)/g,'<span class="cddl-comment">$1</span>')}#a(e){return e.replace(/(\.\w+)/g,'<span class="cddl-ctrl">$1</span>')}#c(e){const t=e.match(/^(\s*)(.*?)(\s*)$/s);return t?`${t[1]}<span class="cddl-op">${t[2]}</span>${t[3]}`:pl`<span class="cddl-op">${e}</span>`}#l(e){const t=e.match(/^(\s*)(.*?)(\s*)$/s);return t?`${t[1]}<span class="cddl-occ">${t[2]}</span>${t[3]}`:pl`<span class="cddl-occ">${e}</span>`}}var fl=Object.freeze({__proto__:null,name:cl,run:async function(){const e=document.querySelectorAll("pre.cddl:not([data-no-cddl])");if(!e.length)return;const t=document.createElement("style");t.textContent=al;const n=document.querySelector("head link, head > *:last-child");n?n.before(t):document.head.append(t);const r=e=>new ur(e).parse(),s={definitions:new Map,proseDfns:new Set,genericParams:new Map};var i,o,a,c;i=document,o=s.proseDfns,i.querySelectorAll("dfn[cddl-type], dfn[cddl-key], dfn[cddl-value]").forEach((e=>{const t=["cddl-type","cddl-key","cddl-value"].find((t=>e.hasAttribute(t)));e.dataset.dfnType=t,e.removeAttribute(t);const n=e.getAttribute("for");n&&(e.dataset.dfnFor=n,e.removeAttribute("for"));const r=e.textContent.trim(),s=n?`${ul(n)}-`:"",i=`cddl-${t.replace("cddl-","")}-${s}${ul(r)}`;e.id||=i,o.add(e.id),uc(e,[r])})),e.forEach((e=>function(e,t,n){const r=e.textContent;if(r.trim())try{const s=t(r),i=new hl(n),o=s.serialize(i),a=document.createElement("code");a.innerHTML=o,e.textContent="",e.append(a),e.classList.add("def","highlight"),Ur(e,"cddl-block");const c=document.createElement("span");c.className="cddlHeader",c.innerHTML=`<a class="self-link" href="#${e.id}">CDDL</a>`;const l=Bc(".cddlHeader");c.append(l),e.prepend(c)}catch(t){ts(`CDDL processing error: ${t instanceof Error?t.message:String(t)}`,cl,{elements:[e],hint:'Check the CDDL syntax in the `<pre class="cddl">` block.'})}}(e,r,s))),a=document.body,c=s.definitions,a.querySelectorAll("[data-cddl-pending]").forEach((e=>{const t=`cddl-type:${e.dataset.cddlPending}`;if(c.has(t)){const n=c.get(t);if(!n)return;const r=a.ownerDocument.createElement("a");r.href=`#${n.id}`,r.className="cddl-name",r.dataset.linkType="cddl-type",r.textContent=e.textContent,e.replaceWith(r)}})),document.querySelectorAll("[data-cddl-pending]").forEach((e=>{ns(`No CDDL definition found for \`${e.getAttribute("data-cddl-pending")}\`.`,cl,{elements:[e],hint:"Check for typos in the type name."})})),function(e,t){e.querySelectorAll('a[data-link-type^="cddl-"]:not([href]):not([data-cite])').forEach((e=>{const n=e.getAttribute("data-link-type"),r=e.getAttribute("data-xref-for")||e.getAttribute("data-link-for")||"",s=e.textContent.trim();if("cddl-type"!==n&&"cddl-key"!==n&&"cddl-value"!==n)return;const i={"cddl-type":`cddl-type:${s}`,"cddl-key":`cddl-key:${r}/${s}`,"cddl-value":`cddl-value:${r}/${s}`}[n];if(t.has(i)){const n=t.get(i);if(!n)return;e.setAttribute("href",`#${n.id}`),e.classList.add("internalDFN")}else ns(`CDDL ${n}: no definition found for \`${s}\`${r?`, for \`${r}\`,`:""} in any \`<pre class="cddl">\` block.`,cl,{elements:[e]}),e.setAttribute("data-no-link-to-dfn","")}))}(document,s.definitions),function(e,t){t.forEach((t=>{const n=e.getElementById(t.id);"dfn"===n?.localName&&uc(n,[n.textContent.trim()])}))}(document,s.definitions),Hc(),ps("beforesave",(e=>{e.querySelectorAll("[data-cddl-pending]").forEach((e=>e.removeAttribute("data-cddl-pending")))}))}});const ml="core/data-cite",gl="__SPEC__";async function bl(e){const{key:t,frag:n,path:r,href:s}=e;let i="",o="";if(t===gl)i=document.location.href;else{const e=await va(t);if(!e)return null;i=e.href??"",o=e.title}if(s)i=s;else{if(r){const e=r.startsWith("/")?`.${r}`:r;i=new URL(e,i).href}n&&(i=new URL(n,i).href)}return{href:i,title:o}}function yl(e,t,n){const{href:r,title:s}=t,i=!n.path&&!n.frag;switch(e.localName){case"a":{const t=e;if(""===t.textContent&&"the-empty-string"!==t.dataset.lt&&(t.textContent=s),t.href=r,i){const e=document.createElement("cite");t.replaceWith(e),e.append(t)}break}case"dfn":{const t=document.createElement("a");if(t.href=r,t.dataset.cite=n.key,t.dataset.citePath=n.path,t.dataset.citeFrag=n.frag,e.textContent?Gr(e,t):(t.textContent=s,e.append(t)),i){const n=document.createElement("cite");n.append(t),e.append(n)}if("export"in e.dataset){ts("Exporting a linked external definition is not allowed.",ml,{hint:"Please remove the `data-export` attribute.",elements:[e]}),delete e.dataset.export}e.classList.add("externalDFN"),e.dataset.noExport="";break}}}function wl(e){return t=>{const n=t.search(e);return-1!==n?t.substring(n):""}}const vl=wl("#"),kl=wl("/");function $l(e){const{dataset:t}=e,{cite:n,citeFrag:r,citePath:s,citeHref:i}=t;if((n??"").startsWith("#")&&!r){const r=e.parentElement?.closest('[data-cite]:not([data-cite^="#"])')??null,{key:s,isNormative:i}=r?$l(r):{key:gl,isNormative:!1};return t.cite=i?s:`?${s}`,t.citeFrag=(n??"").replace("#",""),$l(e)}const o=r?`#${r}`:vl(n??""),a=s||kl(n??"").split("#")[0],{type:c}=Hr(n??"",e),l="normative"===c,u=/^[?|!]/.test(n??"");return{key:(n??"").split(/[/|#]/)[0].substring(Number(u)),isNormative:l,frag:o,path:a,href:i}}function xl(e){const t=["data-cite","data-cite-frag","data-cite-path"];e.querySelectorAll("a[data-cite], dfn[data-cite]").forEach((e=>t.forEach((t=>e.removeAttribute(t)))))}var Cl=Object.freeze({__proto__:null,THIS_SPEC:gl,name:ml,run:async function(){const e=document.querySelectorAll("dfn[data-cite]:not([data-cite='']), a[data-cite]:not([data-cite=''])");await async function(e){const t=e.map($l).map((async e=>({entry:e,result:await va(e.key)}))),n=(await Promise.all(t)).filter((({result:e})=>null===e)).map((({entry:{key:e}})=>e)),r=await wa(n);r&&Object.assign(fa,r)}([...e]);for(const t of e){const e=t.dataset.cite,n=$l(t),r=await bl(n);if(r)yl(t,r,n);else{const n=`Couldn't find a match for "${e}"`;t.dataset.matchedText&&(t.textContent=t.dataset.matchedText),ns(n,ml,{elements:[t]})}}ps("beforesave",xl)},toCiteDetails:$l});const Sl="core/link-to-dfn",_l=[],Tl={en:{duplicateMsg:e=>`Duplicate definition(s) of '${e}'`,duplicateTitle:"This is defined more than once in the document."},ja:{duplicateMsg:e=>`'${e}' の重複定義`,duplicateTitle:"この文書内で複数回定義されています."},de:{duplicateMsg:e=>`Mehrfache Definition von '${e}'`,duplicateTitle:"Das Dokument enthält mehrere Definitionen dieses Eintrags."},zh:{duplicateMsg:e=>`'${e}' 的重复定义`,duplicateTitle:"在文档中有重复的定义。"},cs:{duplicateMsg:e=>`Duplicitní definice '${e}'`,duplicateTitle:"Toto je v dokumentu definováno vícekrát."}},Rl=Nr(Tl);function El(e){const t=new Map,n=[];for(const r of lc.get(e)??[]){const{dfnType:s="dfn"}=r.dataset,i=r.dataset.dfnFor?.split(",").map((e=>e.trim()))??[""];for(const o of i){if(t.has(o)&&t.get(o)?.has(s)){const e=t.get(o)?.get(s),i="dfn"===e?.localName,a="dfn"===r.localName,c=s===(e?.dataset.dfnType||"dfn"),l=!o&&!e?.dataset.dfnFor||e?.dataset.dfnFor?.split(",").map((e=>e.trim())).includes(o);if(i&&a&&c&&l){n.push(r);continue}}t.has(o)||t.set(o,new Map),t.get(o)?.set(s,r),("idl"in r.dataset||"dfn"!==s)&&t.get(o)?.set("idl",r),Wr(r,"dfn",e)}}return{result:t,duplicates:n}}function Ll(e,t){const n=function(e){const t=e.closest("[data-link-for]"),n=t?t.dataset.linkFor??"":"",r=Fr(e).reduce(((e,r)=>{const s=r.split(".");return 2===s.length&&e.push({for:s[0],title:s[1]}),e.push({for:n,title:r}),t||e.push({for:r,title:r}),""!==n&&e.push({for:"",title:r}),e}),[]);return r}(e),r=n.find((e=>t.has(e.title)&&t.get(e.title)?.has(e.for)));if(!r)return;const s=t.get(r.title)?.get(r.for),{linkType:i}=e.dataset;if(i){for(const e of i.split("|"))if(s?.get(e))return s.get(e);return s?.get("dfn")}{const e=r.for?"idl":"dfn";return s?.get(e)||s?.get("idl")}}function Al(e,t,n){let r=!1;const{linkFor:s}=e.dataset,{dfnFor:i}=t.dataset;if(t.dataset.cite)e.dataset.cite=t.dataset.cite;else if(s&&!n.get(s)&&i&&!i.split(",").map((e=>e.trim())).includes(s))r=!0;else if(t.classList.contains("externalDFN")){const n=t.dataset.lt?t.dataset.lt.split("|"):[];e.dataset.lt=n[0]||t.textContent,r=!0}else"partial"!==e.dataset.idl?(e.href=`#${t.id}`,e.classList.add("internalDFN")):r=!0;return e.hasAttribute("data-link-type")||(e.dataset.linkType="idl"in t.dataset?"idl":"dfn"),function(e){if(e.closest("code,pre"))return!0;if(1!==e.childNodes.length)return!1;const[t]=e.childNodes;return"code"===t.localName}(t)&&function(e,t){const n=e.textContent.trim(),r=t.dataset.hasOwnProperty("idl"),s=Pl(e)&&Pl(t,n);r&&!s||Gr(e,document.createElement("code"))}(e,t),!r}function Pl(e,t=""){if("a"===e.localName){if(!e.querySelector("code"))return!0}else{const{dataset:n}=e;if(e.textContent.trim()===t)return!0;if(n.title===t)return!0;if(n.lt||n.localLt){const e=[];return n.lt&&e.push(...n.lt.split("|")),n.localLt&&e.push(...n.localLt.split("|")),e.includes(t)}}return!1}function Nl(e){e.forEach((e=>{const t=`Found linkless \`<a>\` element with text "${e.textContent}" but no matching \`<dfn>\``,n=e.closest("[data-link-for]"),r=`Add a matching \`<dfn>\` element, ${cs`use ${"[data-cite]"} to link to an external definition, or enable ${"[xref]"} for automatic cross-spec linking.`}${n?` This link is inside a \`data-link-for="${n.dataset.linkFor}"\` section — \`[=term=]\` links are scoped to that context. To link to a global concept instead, either add \`data-link-for=""\` on this \`<a>\` or move it outside the scoped section.`:""}`;ns(t,Sl,{title:"Linking error: no matching `<dfn>`",hint:r,elements:[e]})}))}var Il=Object.freeze({__proto__:null,name:Sl,possibleExternalLinks:_l,run:async function(e){const t=function(){const e=new Qr;for(const t of lc.keys()){const{result:n,duplicates:r}=El(t);e.set(t,n),r.length>0&&ts(Rl.duplicateMsg(t),Sl,{title:Rl.duplicateTitle,elements:r})}return e}(),n=[],r=document.querySelectorAll("a[data-cite='']:not([data-no-link-to-dfn]), a:not([href]):not([data-cite]):not([data-no-link-to-dfn]):not(.logo):not(.externalDFN)");for(const e of r){if(!e.dataset?.linkType&&e.dataset?.xrefType){_l.push(e);continue}const r=Ll(e,t);if(r){Al(e,r,t)||_l.push(e)}else""===e.dataset.cite?n.push(e):_l.push(e)}Nl(n),function(e){const{shortName:t=""}=e,n=t?new RegExp(String.raw`^([?!])?${wr(t)}\b([^-])`,"i"):null,r=document.querySelectorAll("dfn[data-cite]:not([data-cite='']), a[data-cite]:not([data-cite=''])");for(const t of r){n&&(t.dataset.cite=(t.dataset.cite??"").replace(n,`$1${gl}$2`));const{key:r,isNormative:s}=$l(t);r!==gl&&(s||e.normativeReferences.has(r)?(e.normativeReferences.add(r),e.informativeReferences.delete(r)):e.informativeReferences.add(r))}}(e),e.xref||Nl(_l)}});const Dl="xrefs",Ol=3e5;async function jl(){return await ir.openDB("xref",2,{upgrade(e){[...e.objectStoreNames].forEach((t=>e.deleteObjectStore(t)));e.createObjectStore(Dl,{keyPath:"query.id"}).createIndex("byTerm","query.term",{unique:!1})}})}async function zl(e){const t=new Map;if(await async function(){const e="XREF:LAST_VERSION_CHECK",t=parseInt(localStorage.getItem(e)??"",10),n=Date.now();if(!t)return localStorage.setItem(e,n.toString()),!1;if(n-t<Ol)return!1;const r=new URL("meta/version",ql).href,s=await fetch(r);if(!s.ok)return!1;const i=await s.text();return localStorage.setItem(e,n.toString()),parseInt(i,10)>t}())return await async function(){try{await jl().then((e=>e.clear(Dl)))}catch(e){console.error(e)}}(),t;const n=new Set(e.map((e=>e.id)));try{const e=await jl();let r=await e.transaction(Dl).store.openCursor();for(;r;)n.has(r.key)&&t.set(r.key,r.value.result),r=await r.continue()}catch(e){console.error(e)}return t}const Ml="core/xref",Ul={"web-platform":["HTML","INFRA","URL","WEBIDL","DOM","FETCH"]},ql="https://respec.org/xref/",Wl=[];if(!document.querySelector("link[rel='preconnect'][href='https://respec.org']")){const e=Cr({hint:"preconnect",href:"https://respec.org"});document.head.appendChild(e)}function Fl(e){const t="xrefType"in e.dataset;let n=Bl(e);t||(n=n.toLowerCase());const r=function(e){const t=[];let n=e.closest("[data-cite]");for(;n;){const r=(n.dataset.cite??"").toLowerCase().replace(/[!?]/g,"").split(/\s+/).filter((e=>e));if(r.length){t.push(r);const e=Gl(r);e.length&&t.push(e)}if(n===e)break;n=n.parentElement?.closest("[data-cite]")??null}if(n!==e){const n=e.closest("section"),r=n?n.querySelectorAll("a.bibref"):[],s=[...new Set([...r].map((e=>e.textContent.toLowerCase())))];if(s.length){t.push(s);const e=Gl(s);e.length&&t.push(e)}}const r=function(e){const t=[],n=new Set;for(const r of e){const e=[...new Set(r).values().filter((e=>!n.has(e)))];e.forEach((e=>n.add(e))),t.push(e.sort())}return t}(t);return r}(e),s=function(e,t){if(t)return e.dataset.xrefType?e.dataset.xrefType.split("|"):["_IDL_"];return["_CONCEPT_"]}(e,t),i=function(e,t){if(e.dataset.xrefFor)return Pr(e.dataset.xrefFor);if(t){const t=e.closest("[data-xref-for]");if(t)return Pr(t.dataset.xrefFor??"")}return null}(e,t);return{id:"",term:n,types:s,...r.length&&{specs:r},..."string"==typeof i&&{for:i}}}function Bl(e){const{lt:t}=e.dataset;let n=t?t.split("|",1)[0]:e.textContent;return n=Pr(n),"the-empty-string"===n?"":n}function Hl(e){return e.replace(/-\d+$/,"")}function Gl(e){return[...new Set(e.map(Hl)).difference(new Set(e))]}function Vl(e,t,n,r){const{term:s,specs:i=[]}=t,{uri:o,shortname:a,spec:c,normative:l,type:u,for:d}=n,p=i.flat().includes(c)?c:a,h=new URL(o,"https://partial");let{pathname:f}=h;"/"===f&&(f="");const m={cite:p,citePath:f,citeFrag:h.hash.slice(1),linkType:u};d&&(m.linkFor=d[0]),h.origin&&"https://partial"!==h.origin&&(m.citeHref=h.href),Object.assign(e.dataset,m),function(e,t,n,r,s){const i=function(e){const t=e.closest(".normative"),n=e.closest(xr);return!n||e===t||t&&n&&n.contains(t)}(e);if(!i)return void(s.normativeReferences.has(t)||s.informativeReferences.add(t));if(n){const e=s.informativeReferences.has(t)?s.informativeReferences.getCanonicalKey(t)??t:t;return s.normativeReferences.add(e),void s.informativeReferences.delete(e)}Wl.push({term:r,spec:t,element:e})}(e,p,l,s,r)}function Jl(e){const t=JSON.stringify(e,Object.keys(e).sort()),n=(new TextEncoder).encode(t);return crypto.subtle.digest("SHA-1",n).then(Kl)}function Kl(e){const t=new Uint8Array(e);return t.toHex?.()??[...t].map((e=>e.toString(16).padStart(2,"0"))).join("")}function Zl(e){const t=e.querySelectorAll("a[data-xref-for], a[data-xref-type], a[data-link-for]"),n=["data-xref-for","data-xref-type","data-link-for"];t.forEach((e=>{n.forEach((t=>e.removeAttribute(t)))}))}var Yl=Object.freeze({__proto__:null,API_URL:ql,getTermFromElement:Bl,informativeRefsInNormative:Wl,name:Ml,run:async function(e){if(!e.xref)return;const t=function(e){const t={url:new URL("search/",ql).href,specs:null},n=Object.assign({},t);switch(Array.isArray(e)?"array":typeof e){case"boolean":break;case"string":{const t=e;t.toLowerCase()in Ul?Object.assign(n,{specs:Ul[t.toLowerCase()]}):r(t);break}case"array":Object.assign(n,{specs:e});break;case"object":{const t=e;if(Object.assign(n,t),t.profile){const e=t.profile.toLowerCase();if(e in Ul){const r=(t.specs??[]).concat(Ul[e]);Object.assign(n,{specs:r})}else r(t.profile)}break}default:{const t=cs`Expected: \`true\`, a profile name (e.g. \`"web-platform"\`), an array of spec shortnames (e.g. \`["FETCH", "DOM"]\`), or an object with \`url\`, \`specs\`, or \`profile\` properties. See ${"[xref]"}.`;ts(`Invalid value for \`xref\` configuration option. Received: "${e}".`,Ml,{hint:t})}}return n;function r(e){ts(`Invalid profile "${e}" in \`respecConfig.xref\`. Please use one of the supported profiles: ${Lr(Object.keys(Ul),(e=>`"${e}"`))}.`,Ml)}}(e.xref);if(t.specs){const e=document.body.dataset.cite?document.body.dataset.cite.split(/\s+/):[];document.body.dataset.cite=e.concat(t.specs).join(" ")}const n=_l.concat(function(){const e=document.querySelectorAll(":is(a,dfn)[data-cite]:not([data-cite=''],[data-cite*='#'])"),t=document.querySelectorAll("dfn.externalDFN");return[...e].filter((e=>{if(""===e.textContent.trim())return!1;const t=e.closest("[data-cite]");return!t||""!==t.dataset.cite})).concat(...t)}());if(!n.length)return;const r=[];for(const e of n){const t=Fl(e);t.id=await Jl(t),r.push(t)}const s=await async function(e,t){const n=new Set,r=e.filter((e=>!n.has(e.id)&&(n.add(e.id)&&!0))),s=await zl(r),i=r.filter((e=>!s.get(e.id))),o=await async function(e,t){if(!e.length)return new Map;const n={method:"POST",body:JSON.stringify({queries:e}),headers:{"Content-Type":"application/json"}},r=await fetch(t,n),s=await r.json();return new Map(s.results.map((({id:e,result:t})=>[e,t])))}(i,t);o.size&&await async function(e,t){try{const n=(await jl()).transaction(Dl,"readwrite");for(const r of e){const e=t.get(r.id)??[];n.objectStore(Dl).add({query:r,result:e})}await n.done}catch(e){console.error(e)}}(r,o);return new Map([...s,...o])}(r,t.url);!function(e,t,n,r){const s={ambiguous:new Map,notFound:new Map};for(let i=0,o=e.length;i<o;i++){if(e[i].closest("[data-no-xref]"))continue;const o=e[i],a=t[i],{id:c}=a,l=n.get(c)??[];if(1===l.length)Vl(o,a,l[0],r);else{const e=s[0===l.length?"notFound":"ambiguous"];e.has(c)||e.set(c,{elems:[],results:l,query:a}),e.get(c)?.elems.push(o)}}!function({ambiguous:e,notFound:t}){const n=(e,t,n=[])=>{const r=new URL(ql);return r.searchParams.set("term",e),t.for&&r.searchParams.set("for",t.for),r.searchParams.set("types",t.types.join(",")),n.length&&r.searchParams.set("specs",n.join(",")),r.href},r=(e,t)=>cs`[See search matches for "${t}"](${e}) or ${"[Learn about this error|#error-term-not-found]"}.`;for(const{query:e,elems:s}of t.values()){const t=e.specs?[...new Set(e.specs.flat())].sort():[],i=Bl(s[0]),o=n(i,e),a=Er(t,(e=>`**[${e}]**`));let c=r(o,i);const l=s[0].parentElement?.closest("[data-cite]")??null,u=l?.dataset.cite?.replace(/`/g,"")??"";l&&l!==document.body&&u&&(c+=` A parent element has \`data-cite="${u}"\` — check that the spec shortname is correct.`);ts(`Couldn't find "**${i}**"${e.for?`, for **"${e.for}"**, `:""} in this document or other cited documents: ${a}.`,Ml,{title:"No matching definition found.",elements:s,hint:c})}for(const{query:t,elems:s,results:i}of e.values()){const e=[...new Set(i.map((e=>e.shortname)))].sort(),o=Er(e,(e=>`**[${e}]**`)),a=Bl(s[0]),c=n(a,t,e),l=t.for?`, for **"${t.for}"**, `:"",u=r(c,a),d=cs`To fix, use the ${"[data-cite]"} attribute to pick the one you mean from the appropriate specification.`+String.raw` ${u}`;ts(`The term "**${a}**"${l} is ambiguous because it's defined in ${o}.`,Ml,{title:"Definition is ambiguous.",elements:s,hint:d})}}(s)}(n,r,s,e),ps("beforesave",Zl)}});var Xl=String.raw`ul.index{columns:30ch;column-gap:1.5em}
|
|
941
1060
|
ul.index li{list-style:inherit}
|
|
942
1061
|
ul.index li span{color:inherit;cursor:pointer;white-space:normal}
|
|
943
1062
|
#index-defined-here ul.index li{font-size:.9rem}
|
|
@@ -945,37 +1064,37 @@ ul.index code{color:inherit}
|
|
|
945
1064
|
#index-defined-here .print-only{display:none}
|
|
946
1065
|
@media print{
|
|
947
1066
|
#index-defined-here .print-only{display:initial}
|
|
948
|
-
}`;const
|
|
1067
|
+
}`;const Ql=Nr({en:{heading:"Index",headingExternal:"Terms defined by reference",headingLocal:"Terms defined by this specification",dfnOf:"definition of",definesFollowing:"defines the following:"},cs:{heading:"Glosář",headingExternal:"Termíny definované odkazem",headingLocal:"Termíny definované touto specifikací",dfnOf:"definice",definesFollowing:"definuje následující:"},de:{heading:"Index",headingExternal:"Begriffe, die durch Verweis definiert sind",headingLocal:"Begriffe, die in dieser Spezifikation definiert sind",dfnOf:"Definition von",definesFollowing:"definiert Folgendes:"},es:{heading:"Índice",headingExternal:"Términos definidos por referencia",headingLocal:"Términos definidos por esta especificación",dfnOf:"definición de",definesFollowing:"define lo siguiente:"},ja:{heading:"索引",headingExternal:"参照によって定義された用語",headingLocal:"この仕様で定義された用語",dfnOf:"の定義",definesFollowing:"以下を定義します:"},ko:{heading:"색인",headingExternal:"참조로 정의된 용어",headingLocal:"이 명세서에서 정의된 용어",dfnOf:"정의",definesFollowing:"다음을 정의합니다:"},nl:{heading:"Index",headingExternal:"Termen gedefinieerd door verwijzing",headingLocal:"Termen gedefinieerd door deze specificatie",dfnOf:"definitie van",definesFollowing:"definieert het volgende:"},zh:{heading:"索引",headingExternal:"通过引用定义的术语",headingLocal:"由本规范定义的术语",dfnOf:"的定义",definesFollowing:"定义以下内容:"}}),eu=new Set(["attribute","callback","dict-member","dictionary","element-attr","element","enum-value","enum","exception","extended-attribute","interface","method","typedef"]);function tu(e){const t=e.dataset,n=t.dfnType||t.idl||t.linkType||"";switch(n){case"":case"dfn":return"";default:return n}}function nu(e){const t=e.closest("[data-dfn-for]:not([data-dfn-for=''])");return t?.dataset.dfnFor||""}function ru(e,t,n=""){if(n.startsWith("[[")){return`internal slot for <code>${nu(e)}</code>`}switch(t){case"dict-member":case"method":case"attribute":case"enum-value":return`${"dict-member"===t?"member":t.replace("-"," ")} for <code>${nu(e)}</code>`;case"interface":case"dictionary":case"enum":return t;case"constructor":return`for <code>${nu(e)}</code>`;default:return""}}function su(){document.querySelectorAll("#index-defined-here li[data-id]").forEach((e=>{const t=(e=>{const t=document.getElementById(e),n=t?.closest("section:not(.notoc)")?.querySelector(".secno");if(!n)return null;const r=`§${n.textContent.trim()}`;return sr`<span class="print-only">${r}</span>`})(e.dataset.id??"");t&&e.append(t)}))}function iu(){const e=new Set,t=new Map,n=document.querySelectorAll("a[data-cite]");for(const r of n){if(!r.dataset.cite)continue;const{cite:n,citeFrag:s,xrefType:i,linkType:o}=r.dataset;if(!(i||o||n.includes("#")||s))continue;const a=r.href;if(e.has(a))continue;const{linkType:c,linkFor:l}=r.dataset,u=Bl(r);if(!u)continue;const d=$l(r).key.toUpperCase(),p=t.get(d)||t.set(d,[]).get(d);p?.push({term:u,type:c,linkFor:l,elem:r}),e.add(a)}return t}function ou(e){const{elem:t}=e,n=function(e){const{term:t,type:n,linkFor:r}=e;let s=Ar(t);eu.has(n??"")&&("extended-attribute"===n&&(s=`[${s}]`),s=`<code>${s}</code>`);const i=cu.has(t)?"type":au.get(n??"");i&&(s+=` ${i}`);if(r){let e=r;/\s/.test(r)||(e=`<code>${e}</code>`),"element-attr"===n&&(e+=" element"),s+=` (for ${e})`}return s}(e);return sr`<li>
|
|
949
1068
|
<span class="index-term" data-href="${t.href}">${{html:n}}</span>
|
|
950
|
-
</li>`}const
|
|
951
|
-
<h3>${
|
|
952
|
-
${function(){const e=function(){const e=new Map,t=document.querySelectorAll("dfn:not([data-cite])");for(const n of t){if(!n.id)continue;const t=
|
|
953
|
-
${e.map((([e,t])=>function(e,t){const n=(e,t,n)=>{const r=`#${e.id}`;return
|
|
1069
|
+
</li>`}const au=new Map([["attribute","attribute"],["element-attr","attribute"],["element","element"],["enum","enum"],["exception","exception"],["extended-attribute","extended attribute"],["interface","interface"]]),cu=new Set(["boolean","byte","octet","short","unsigned short","long","unsigned long","long long","unsigned long long","float","unrestricted float","double","unrestricted double","undefined","any","object","symbol"]);function lu(e){e.querySelectorAll("#index-defined-elsewhere li[data-spec]").forEach((e=>e.removeAttribute("data-spec"))),e.querySelectorAll("#index-defined-here li[data-id]").forEach((e=>e.removeAttribute("data-id")))}var uu=Object.freeze({__proto__:null,name:"core/dfn-index",run:function(){const e=document.querySelector("section#index");if(!e)return void ps("toc",(()=>{}),{once:!0});const t=document.createElement("style");t.textContent=Xl,document.head.appendChild(t),e.classList.add("appendix"),e.querySelector("h2, h1")||e.prepend(sr`<h1>${Ql.heading}</h1>`);const n=sr`<section id="index-defined-here">
|
|
1070
|
+
<h3>${Ql.headingLocal}</h3>
|
|
1071
|
+
${function(){const e=function(){const e=new Map,t=document.querySelectorAll("dfn:not([data-cite])");for(const n of t){if(!n.id)continue;const t=Pr(n.textContent),r=e.get(t)||e.set(t,[]).get(t);r?.push(n)}const n=[...e].sort((([e],[t])=>e.slice(e.search(/\w/)).localeCompare(t.slice(t.search(/\w/)))));return n}();return sr`<ul class="index">
|
|
1072
|
+
${e.map((([e,t])=>function(e,t){const n=(e,t,n="")=>{const r=`#${e.id}`;return sr`<li data-id=${e.id}>
|
|
954
1073
|
<a class="index-term" href="${r}">${{html:t}}</a> ${n?{html:n}:""}
|
|
955
|
-
</li>`};if(1===t.length){const r=t[0],s=
|
|
1074
|
+
</li>`};if(1===t.length){const r=t[0],s=tu(r),i=function(e,t,n){let r=n;"enum-value"===t&&(r=`"${r}"`);(eu.has(t)||e.dataset.idl||e.closest("code"))&&(r=`<code>${r}</code>`);return r}(r,s,e),o=ru(r,s,e);return n(r,i,o)}return sr`<li>
|
|
956
1075
|
${e}
|
|
957
1076
|
<ul>
|
|
958
|
-
${t.map((t=>{const r=
|
|
1077
|
+
${t.map((t=>{const r=ru(t,tu(t),e)||Ql.dfnOf;return n(t,r)}))}
|
|
959
1078
|
</ul>
|
|
960
1079
|
</li>`}(e,t)))}
|
|
961
1080
|
</ul>`}()}
|
|
962
|
-
</section>`;e.append(n);const r=
|
|
963
|
-
<h3>${
|
|
964
|
-
${function(){const e=[...
|
|
965
|
-
${e.map((([e,t])=>{let r;return r=n&&
|
|
966
|
-
${r} ${
|
|
1081
|
+
</section>`;e.append(n);const r=sr`<section id="index-defined-elsewhere">
|
|
1082
|
+
<h3>${Ql.headingExternal}</h3>
|
|
1083
|
+
${function(){const e=[...iu().entries()].sort((([e],[t])=>e.localeCompare(t))),t=document.querySelector("section#index"),n=!!t?.classList.contains("prefer-full-spec-title");return sr`<ul class="index">
|
|
1084
|
+
${e.map((([e,t])=>{let r;return r=n&&fa[e]?.title?La(e,fa[e].title):La(e),sr`<li data-spec="${e}">
|
|
1085
|
+
${r} ${Ql.definesFollowing}
|
|
967
1086
|
<ul>
|
|
968
|
-
${t.sort(((e,t)=>e.term.localeCompare(t.term))).map(
|
|
1087
|
+
${t.sort(((e,t)=>e.term.localeCompare(t.term))).map(ou)}
|
|
969
1088
|
</ul>
|
|
970
1089
|
</li>`}))}
|
|
971
1090
|
</ul>`}()}
|
|
972
|
-
</section>`;e.append(r);for(const e of r.querySelectorAll(".index-term"))
|
|
973
|
-
<a href="#title"><abbr title="${
|
|
974
|
-
</p>`;document.body.append(s)}(t)}
|
|
1091
|
+
</section>`;e.append(r);for(const e of r.querySelectorAll(".index-term"))Wr(e,"index-term");ps("toc",su,{once:!0}),ps("beforesave",lu)}});const du="core/contrib";var pu=Object.freeze({__proto__:null,name:du,run:async function(e){if(!document.getElementById("gh-contributors"))return;if(!e.github){return void ts(cs`Requested list of contributors from GitHub, but ${"[github]"} configuration option is not set.`,du)}const t=(e.editors??[]).map((e=>e.name)),n=`${e.github.apiBase}/${e.github.fullName}/`;await async function(e,t){const n=document.getElementById("gh-contributors");if(!n)return;n.textContent="Fetching list of contributors...";const r=await s();null!==r?function(e,t){const n=e.sort(((e,t)=>{const n=e.name||e.login,r=t.name||t.login;return n.toLowerCase().localeCompare(r.toLowerCase())}));if("UL"===t.tagName)return void sr(t)`${n.map((({name:e,login:t})=>`<li><a href="https://github.com/${t}">${e||t}</a></li>`))}`;const r=n.map((e=>e.name||e.login));t.textContent=Er(r)}(r,n):n.textContent="Failed to fetch contributors.";async function s(){const{href:n}=new URL("contributors",t);try{const t=await jr(n);if(!t.ok)throw new Error(`Request to ${n} failed with status code ${t.status}`);return(await t.json()).filter((t=>!e.includes(t.name||t.login)&&!t.login.includes("[bot]")))}catch(e){return ts("Error loading contributors from GitHub.",du,{cause:e}),null}}}(t,n)}});var hu=Object.freeze({__proto__:null,name:"core/fix-headers",run:function(){[...document.querySelectorAll("section:not(.introductory)")].map((e=>e.querySelector("h1, h2, h3, h4, h5, h6"))).filter((e=>null!==e)).forEach((e=>{const t=Math.min(function(e,t){const n=[];for(;e&&e!=e.ownerDocument.body;)e.matches(t)&&n.push(e),e=e.parentElement;return n}(e,"section").length+1,6);Br(e,`h${t}`)}))}});var fu=Object.freeze({__proto__:null,name:"core/webidl-index",run:function(){const e=document.querySelector("section#idl-index");if(!e)return;const t=[2,3,4,5,6].map((e=>`h${e}:first-child`)).join(",");if(!e.querySelector(t)){const t=document.createElement("h2");e.title?(t.textContent=e.title,e.removeAttribute("title")):t.textContent="IDL Index",e.prepend(t)}const n=Array.from(document.querySelectorAll("pre.idl:not(.exclude) > code")).filter((e=>!e.closest(xr)));if(0===n.length){const t="This specification doesn't normatively declare any Web IDL.";return void e.append(t)}const r=document.createElement("pre");r.classList.add("idl","def"),r.id="actual-idl-index",n.map((e=>{const t=document.createDocumentFragment();for(const n of e.children)t.appendChild(n.cloneNode(!0));return t})).forEach((e=>{r.lastChild&&r.append("\n\n"),r.appendChild(e)})),r.querySelectorAll("*[id]").forEach((e=>e.removeAttribute("id"))),e.appendChild(r),Gr(r,document.createElement("code")),il(r)}});function mu(e,t){const n=document.createElement("pre");n.classList.add("cddl","def","highlight"),t&&(n.id=t);const r=document.createElement("code");return e.map((e=>{const t=document.createDocumentFragment();return e.childNodes.forEach((e=>t.appendChild(e.cloneNode(!0)))),t})).forEach((e=>{r.lastChild&&r.append("\n\n"),r.appendChild(e)})),r.querySelectorAll("*[id]").forEach((e=>e.removeAttribute("id"))),r.querySelectorAll("dfn").forEach((e=>{const t=Br(e,"span");t.removeAttribute("data-export");for(const e of[...t.attributes])e.name.startsWith("data-dfn")&&t.removeAttribute(e.name)})),n.append(r),n}var gu=Object.freeze({__proto__:null,name:"core/cddl-index",run:function(){const e=document.querySelector("section#cddl-index");if(!e)return;if(!e.querySelector(":scope > :is(h2, h3, h4, h5, h6):first-child")){const t=document.createElement("h2");e.title?(t.textContent=e.title,e.removeAttribute("title")):t.textContent="CDDL Index",e.prepend(t)}const t=Array.from(document.querySelectorAll("pre.cddl:not(.exclude) > code")).filter((e=>!e.closest(xr)));if(0===t.length){const t="This specification doesn't normatively declare any CDDL.";return void e.append(t)}const n=new Map;for(const e of t){const t=e.closest("pre"),r=t?.dataset.cddlModule||"";let s=n.get(r);s||(s=[],n.set(r,s)),s.push(e)}n.size>1||1===n.size&&!n.has("")?n.forEach(((t,n)=>{const r=document.createElement("section"),s=document.createElement("h3"),i=n||"Default";s.textContent=`Module: ${i}`,n&&(s.id=`cddl-index-module-${n.toLowerCase().replace(/[^a-z0-9]+/g,"-")}`),r.append(s),r.append(mu(t)),e.append(r)})):e.append(mu(t,"actual-cddl-index"))}});const bu=["h2","h3","h4","h5","h6"],yu="core/structure",wu=Nr({en:{toc:"Table of Contents",back_to_top:"Back to Top"},zh:{toc:"内容大纲",back_to_top:"返回顶部"},ko:{toc:"목차",back_to_top:"맨 위로"},ja:{toc:"目次",back_to_top:"先頭に戻る"},nl:{toc:"Inhoudsopgave",back_to_top:"Terug naar boven"},es:{toc:"Tabla de Contenidos",back_to_top:"Volver arriba"},de:{toc:"Inhaltsverzeichnis",back_to_top:"Zurück nach oben"},cs:{toc:"Obsah",back_to_top:"Zpět na začátek"}});function vu(e,t,{prefix:n=""}={}){let r=!1,s=0,i=1;if(n.length&&!n.endsWith(".")&&(n+="."),0===e.length)return null;const o=sr`<ol class="toc"></ol>`;for(const a of e){!a.isAppendix||n||r||(s=i,r=!0);let e=a.isIntro?"":r?ku(i-s+1):n+i;const c=e.split(".").length;if(1===c&&(e+=".",a.header.before(document.createComment("OddPage"))),a.isIntro||(i+=1,a.header.prepend(sr`<bdi class="secno">${e} </bdi>`)),c<=t){const n=a.header.id||a.element.id,r=xu(a.header,n),s=vu(a.subsections,t,{prefix:e});s&&r.append(s),o.append(r)}}return o}function ku(e){let t="";for(;e>0;)e-=1,t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26);return t}function $u(e){const t=e.querySelectorAll(":scope > section"),n=[];for(const e of t){const t=e.classList.contains("notoc");if(!e.children.length||t)continue;const r=e.children[0];if(!bu.includes(r.localName))continue;const s=r.textContent;Wr(e,void 0,s),n.push({element:e,header:r,title:s,isIntro:Boolean(e.closest(".introductory")),isAppendix:e.classList.contains("appendix"),subsections:$u(e)})}return n}function xu(e,t){const n=sr`<a href="${`#${t}`}" class="tocxref" />`;var r;return n.append(...e.cloneNode(!0).childNodes),(r=n).querySelectorAll("a").forEach((e=>{const t=Br(e,"span");t.className="formerLink",t.removeAttribute("href")})),r.querySelectorAll("dfn").forEach((e=>{Br(e,"span").removeAttribute("id")})),sr`<li class="tocline">${n}</li>`}var Cu=Object.freeze({__proto__:null,name:yu,run:function(e){if("maxTocLevel"in e==!1&&(e.maxTocLevel=1/0),function(){const e=[...document.querySelectorAll("section:not(.introductory) :is(h1,h2,h3,h4,h5,h6):first-child")].filter((e=>!e.closest("section.introductory")));if(!e.length)return;e.forEach((e=>{const t=Math.min(function(e,t){const n=[];let r=e.parentElement;for(;r;){const e=r.closest(t);if(!e)break;n.push(e),r=e.parentElement}return n}(e,"section").length+1,6),n=`h${t}`;e.localName!==n&&Br(e,n)}))}(),!e.noTOC){!function(){const e=document.querySelectorAll("section[data-max-toc]");for(const t of e){const e=parseInt(t.dataset.maxToc??"",10);if(e<0||e>6||Number.isNaN(e)){ts("`data-max-toc` must have a value between 0-6 (inclusive).",yu,{elements:[t]});continue}if(0===e){t.classList.add("notoc");continue}const n=t.querySelectorAll(`:scope > ${Array.from({length:e},(()=>"section")).join(" > ")}`);for(const e of n)e.classList.add("notoc")}}();const t=vu($u(document.body),e.maxTocLevel);t&&function(e){if(!e)return;const t=sr`<nav id="toc"></nav>`,n=sr`<h2 class="introductory">${wu.toc}</h2>`;Wr(n),t.append(n,e);const r=document.getElementById("toc")||document.getElementById("sotd")||document.getElementById("abstract");r&&("toc"===r.id?r.replaceWith(t):r.after(t));const s=sr`<p role="navigation" id="back-to-top">
|
|
1092
|
+
<a href="#title"><abbr title="${wu.back_to_top}">↑</abbr></a>
|
|
1093
|
+
</p>`;document.body.append(s)}(t)}ds("toc",void 0)}});const Su=Nr({en:{informative:"This section is non-normative."},nl:{informative:"Dit onderdeel is niet-normatief."},ko:{informative:"이 부분은 비규범적입니다."},ja:{informative:"この節は仕様には含まれません."},de:{informative:"Dieser Abschnitt ist nicht normativ."},zh:{informative:"本章节不包含规范性内容。"},cs:{informative:"Tato sekce není normativní."}});var _u=Object.freeze({__proto__:null,name:"core/informative",run:function(){Array.from(document.querySelectorAll("section.informative")).map((e=>e.querySelector("h2, h3, h4, h5, h6"))).filter((e=>null!==e)).forEach((e=>{e.after(sr`<p><em>${Su.informative}</em></p>`)}))}});const Tu=Nr({en:{permalinkLabel(e,t){let n=`Permalink for${t?"":" this"} ${e}`;return t&&(n+=` ${Pr(t.textContent)}`),n}}});var Ru=Object.freeze({__proto__:null,name:"core/id-headers",run:function(e){const t=document.querySelectorAll("section:not(.head,#abstract,#sotd) h2, h3, h4, h5, h6");for(const n of t){let t=n.id;if(t||(Wr(n),t=n.parentElement?.id||n.id),!e.addSectionLinks)continue;const r=Tu.permalinkLabel(n.closest(".appendix")?"Appendix":"Section",n.querySelector(":scope > bdi.secno")),s=sr`<div class="header-wrapper"></div>`;n.replaceWith(s);const i=sr`<a
|
|
975
1094
|
href="#${t}"
|
|
976
1095
|
class="self-link"
|
|
977
1096
|
aria-label="${r}"
|
|
978
|
-
></a>`;s.append(n,
|
|
1097
|
+
></a>`;s.append(n,i)}}});var Eu=String.raw`.caniuse-stats{display:flex;column-gap:2em}
|
|
979
1098
|
.caniuse-group{display:flex;flex:1;flex-direction:column;justify-content:flex-end;flex-basis:auto}
|
|
980
1099
|
.caniuse-browsers{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;margin-top:.2em;column-gap:.4em;border-bottom:1px solid #ccc;row-gap:.4em;padding-bottom:.4cm}
|
|
981
1100
|
.caniuse-type{align-self:center;border-top:none;text-transform:capitalize;font-size:.8em;margin-top:-.8em;font-weight:700}
|
|
@@ -993,31 +1112,139 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
|
|
|
993
1112
|
.caniuse-cell.y::before{content:"✔️";padding:.5em}
|
|
994
1113
|
.caniuse-cell.n::before{content:"❌";padding:.5em}
|
|
995
1114
|
.caniuse-cell:is(.a,.d,.p,.x,.u)::before{content:"⚠️";padding:.5em}
|
|
996
|
-
}`;const
|
|
1115
|
+
}`;const Lu="core/caniuse",Au="https://respec.org/caniuse/",Pu=new Map([["and_chr",{name:"Android Chrome",path:"chrome",type:"mobile"}],["and_ff",{name:"Android Firefox",path:"firefox",type:"mobile"}],["and_uc",{name:"Android UC",path:"uc",type:"mobile"}],["chrome",{name:"Chrome",type:"desktop"}],["edge",{name:"Edge",type:"desktop"}],["firefox",{name:"Firefox",type:"desktop"}],["ios_saf",{name:"iOS Safari",path:"safari-ios",type:"mobile"}],["op_mob",{name:"Opera Mobile",path:"opera",type:"mobile"}],["opera",{name:"Opera",type:"desktop"}],["safari",{name:"Safari",type:"desktop"}],["samsung",{name:"Samsung Internet",path:"samsung-internet",type:"mobile"}]]),Nu=new Map([["a","almost supported (aka Partial support)"],["d","disabled by default"],["n","no support, or disabled by default"],["p","no support, but has Polyfill"],["u","unknown support"],["x","requires prefix to work"],["y","supported by default"]]);var Iu=Object.freeze({__proto__:null,BROWSERS:Pu,name:Lu,prepare:function(e){if(!e.caniuse)return;!function(e){const t=new Set(Pu.keys());t.delete("op_mob"),t.delete("opera");const n={removeOnSave:!0,browsers:[...t]};if("string"==typeof e.caniuse)return void(e.caniuse={feature:e.caniuse,...n});e.caniuse={...n,...e.caniuse}}(e),function({caniuse:e}){const{browsers:t}=e,n=t.filter((e=>!Pu.has(e)));if(n.length){ns(cs`Invalid browser(s): (${os(n,{quotes:!0})}) in the \`browser\` property of ${"[caniuse]"}.`,Lu)}}(e);const t=e.caniuse;t.feature&&document.head.appendChild(sr`<style
|
|
997
1116
|
id="caniuse-stylesheet"
|
|
998
1117
|
class="${t.removeOnSave?"removeOnSave":""}"
|
|
999
1118
|
>
|
|
1000
|
-
${
|
|
1001
|
-
</style>`)},run:async function(e){const t=e.caniuse;if(!t?.feature)return;const n=new URL(t.feature,"https://caniuse.com/").href,r=document.querySelector(".head dl"),s=async function(e){const{feature:t,browsers:n,apiURL:r}=e,s=new URL(r||`./${t}`,
|
|
1002
|
-
<div
|
|
1119
|
+
${Eu}
|
|
1120
|
+
</style>`)},run:async function(e){const t=e.caniuse;if(!t?.feature)return;const n=new URL(t.feature,"https://caniuse.com/").href,r=document.querySelector(".head dl"),s=async function(e){const{feature:t,browsers:n,apiURL:r}=e,s=new URL(r||`./${t}`,Au);n.forEach((e=>s.searchParams.append("browsers",e)));const i=await fetch(s);if(!i.ok){const{status:e,statusText:t}=i;throw new Error(`Failed to get caniuse data: (${e}) ${t}`)}return i.json()}(e.caniuse).then((e=>async function(e,{feature:t}){const n=e.result,r=new Map([["desktop",[]],["mobile",[]]]),s=function(e){return(t,{browser:n,version:r,caniuse:s})=>{const i=Pu.get(n),{name:o,type:a}=i??{name:n,type:"desktop"},c=Nu.get(s),l=r||"—",u=r?` version ${r}`:" (version unknown)",d=`${e} is ${c} since ${o}${u} on ${a}.`,p=`caniuse-cell ${s}`,h=(f=`${c} since ${o}${u}.`).charAt(0).toUpperCase()+f.slice(1);var f;const m=function(e){const t=Pu.get(e)?.path??e;return`https://www.w3.org/assets/logos/browser-logos/${t}/${t}.svg`}(n),g=sr`
|
|
1121
|
+
<div
|
|
1122
|
+
class="${p}"
|
|
1123
|
+
role="img"
|
|
1124
|
+
title="${h}"
|
|
1125
|
+
aria-label="${d}"
|
|
1126
|
+
>
|
|
1003
1127
|
<img
|
|
1004
1128
|
class="caniuse-browser"
|
|
1005
1129
|
width="20"
|
|
1006
1130
|
height="20"
|
|
1007
|
-
src="${
|
|
1008
|
-
alt="
|
|
1009
|
-
/><span class="browser-version">${
|
|
1131
|
+
src="${m}"
|
|
1132
|
+
alt=""
|
|
1133
|
+
/><span class="browser-version">${l}</span>
|
|
1010
1134
|
</div>
|
|
1011
|
-
`;return t.get(
|
|
1135
|
+
`;return t.get(a)?.push(g),t}}(t);n.reduce(s,r);const i=[...r].filter((([,e])=>e.length)).map((([e,t])=>sr`<div class="caniuse-group">
|
|
1012
1136
|
<div class="caniuse-browsers">${t}</div>
|
|
1013
1137
|
<div class="caniuse-type"><span>${e}</div>
|
|
1014
|
-
</div>`));return
|
|
1138
|
+
</div>`));return i.push(sr`<a class="caniuse-cell" href="https://caniuse.com/${t}"
|
|
1015
1139
|
>More info</a
|
|
1016
|
-
>`),
|
|
1140
|
+
>`),i}(e,t))).catch((e=>function(e,t,n){const r=`Failed to retrieve feature "${t.feature}".`,s=cs`Please check the feature key on [caniuse.com](https://caniuse.com) and update ${"[caniuse]"}.`;return ts(r,Lu,{hint:s,cause:e}),sr`<a href="${n}">caniuse.com</a>`}(e,t,n))),i=sr`<dt class="caniuse-title">Browser support:</dt>
|
|
1017
1141
|
<dd class="caniuse-stats">
|
|
1018
1142
|
${{any:s,placeholder:"Fetching data from caniuse.com..."}}
|
|
1019
|
-
</dd>`;r
|
|
1020
|
-
<a href="${n}">caniuse.com</a>`})))}});var
|
|
1143
|
+
</dd>`;r?.append(...i.childNodes),await s,ds("amend-user-config",{caniuse:t.feature}),t.removeOnSave&&(r?.querySelectorAll(".caniuse-browser").forEach((e=>e.classList.add("removeOnSave"))),ps("beforesave",(e=>{sr.bind(e.querySelector(".caniuse-stats"))`
|
|
1144
|
+
<a href="${n}">caniuse.com</a>`})))}});var Du=String.raw`.baseline-title{display:flex;align-items:center;gap:.4em}
|
|
1145
|
+
.baseline-icon{width:auto;height:.9em;vertical-align:baseline}
|
|
1146
|
+
.baseline-status{display:flex;align-items:center;gap:1em}
|
|
1147
|
+
.baseline-browsers{display:flex;gap:.5em;align-items:center}
|
|
1148
|
+
.baseline-pill{display:inline-flex;align-items:center;gap:.15em;padding:.25em .5em;border-radius:2em}
|
|
1149
|
+
.baseline-pill.supported{background:rgba(30,142,62,.12)}
|
|
1150
|
+
.baseline-pill.unsupported{background:rgba(234,134,0,.12)}
|
|
1151
|
+
.baseline-browser{display:inline-flex;align-items:center;white-space:nowrap}
|
|
1152
|
+
.baseline-browser-logo{width:24px;height:24px}
|
|
1153
|
+
.baseline-support-icon{width:17px;height:21px;margin-left:-4px}
|
|
1154
|
+
.support-available .baseline-support-icon{color:#1e8e3e}
|
|
1155
|
+
.support-unavailable .baseline-support-icon{color:#ea8600}
|
|
1156
|
+
.baseline-more-info{font-size:.85em;white-space:nowrap}
|
|
1157
|
+
@media (prefers-color-scheme:dark){
|
|
1158
|
+
.baseline-pill.supported{background:rgba(36,164,70,.2)}
|
|
1159
|
+
.baseline-pill.unsupported{background:rgba(240,148,24,.2)}
|
|
1160
|
+
.support-available .baseline-support-icon{color:#24a446}
|
|
1161
|
+
.support-unavailable .baseline-support-icon{color:#f09418}
|
|
1162
|
+
}
|
|
1163
|
+
@media print{
|
|
1164
|
+
.baseline-pill{background:0 0!important;border:1px solid #ccc}
|
|
1165
|
+
.baseline-support-icon{color:#333!important}
|
|
1166
|
+
}`;const Ou="core/implementation-status",ju="https://respec.org/api/baseline",zu="https://respec.org/api/baseline/search",Mu="https://www.w3.org/assets/logos/browser-logos",Uu=new Map([["chrome",{name:"Chrome",engine:"chromium"}],["edge",{name:"Edge",engine:"chromium"}],["firefox",{name:"Firefox",engine:"gecko"}],["safari",{name:"Safari",engine:"webkit"}]]),qu=new Map([["high","Widely available"],["low","Newly available"],["","Limited availability"]]),Wu=new Map([["",()=>sr`<svg class="baseline-icon" viewBox="0 0 36 20">
|
|
1167
|
+
<path fill="#f09409" d="M10 0L16 6L14 8L8 2L10 0Z" />
|
|
1168
|
+
<path fill="#f09409" d="M22 12L20 14L26 20L28 18L22 12Z" />
|
|
1169
|
+
<path fill="#f09409" d="M26 0L28 2L10 20L8 18L26 0Z" />
|
|
1170
|
+
<path fill="#c6c6c6" d="M8 2L10 4L4 10L10 16L8 18L0 10L8 2Z" />
|
|
1171
|
+
<path fill="#c6c6c6" d="M28 2L36 10L28 18L26 16L32 10L26 4L28 2Z" />
|
|
1172
|
+
</svg>`],["high",()=>sr`<svg class="baseline-icon" viewBox="0 0 36 20">
|
|
1173
|
+
<path fill="#1ea446" d="M18 8L20 10L18 12L16 10L18 8Z" />
|
|
1174
|
+
<path fill="#1ea446" d="M26 0L28 2L10 20L0 10L2 8L10 16L26 0Z" />
|
|
1175
|
+
<path
|
|
1176
|
+
fill="#c4eed0"
|
|
1177
|
+
d="M28 2L26 4L32 10L26 16L22 12L20 14L26 20L36 10L28 2Z"
|
|
1178
|
+
/>
|
|
1179
|
+
<path fill="#c4eed0" d="M10 0L2 8L4 10L10 4L14 8L16 6L10 0Z" />
|
|
1180
|
+
</svg>`],["low",()=>sr`<svg class="baseline-icon" viewBox="0 0 36 20">
|
|
1181
|
+
<path
|
|
1182
|
+
fill="#a8c7fa"
|
|
1183
|
+
d="m10 0 2 2-2 2-2-2 2-2Zm4 4 2 2-2 2-2-2 2-2Zm16 0 2 2-2 2-2-2 2-2Zm4 4 2 2-2 2-2-2 2-2Zm-4 4 2 2-2 2-2-2 2-2Zm-4 4 2 2-2 2-2-2 2-2Zm-4-4 2 2-2 2-2-2 2-2ZM6 4l2 2-2 2-2-2 2-2Z"
|
|
1184
|
+
/>
|
|
1185
|
+
<path fill="#1b6ef3" d="m26 0 2 2-18 18L0 10l2-2 8 8L26 0Z" />
|
|
1186
|
+
</svg>`]]),Fu={available:()=>sr`<svg
|
|
1187
|
+
class="baseline-support-icon"
|
|
1188
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
1189
|
+
width="17"
|
|
1190
|
+
height="21"
|
|
1191
|
+
fill="none"
|
|
1192
|
+
aria-hidden="true"
|
|
1193
|
+
>
|
|
1194
|
+
<path
|
|
1195
|
+
fill="currentColor"
|
|
1196
|
+
d="M1.253 3.31a8.843 8.843 0 0 1 5.47-1.882c4.882 0 8.838 3.927 8.838 8.772 0 4.845-3.956 8.772-8.837 8.772a8.842 8.842 0 0 1-5.47-1.882c-.237.335-.49.657-.758.966a10.074 10.074 0 0 0 6.228 2.14c5.562 0 10.07-4.475 10.07-9.996 0-5.52-4.508-9.996-10.07-9.996-2.352 0-4.514.8-6.228 2.14.268.309.521.631.757.966Z"
|
|
1197
|
+
/>
|
|
1198
|
+
<path
|
|
1199
|
+
fill="currentColor"
|
|
1200
|
+
d="M11.348 8.125 6.34 13.056l-3.006-2.954 1.002-.985 1.999 1.965 4.012-3.942 1.002.985Z"
|
|
1201
|
+
/>
|
|
1202
|
+
</svg>`,unavailable:()=>sr`<svg
|
|
1203
|
+
class="baseline-support-icon"
|
|
1204
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
1205
|
+
width="17"
|
|
1206
|
+
height="21"
|
|
1207
|
+
fill="none"
|
|
1208
|
+
aria-hidden="true"
|
|
1209
|
+
>
|
|
1210
|
+
<path
|
|
1211
|
+
fill="currentColor"
|
|
1212
|
+
d="M1.254 3.31a8.843 8.843 0 0 1 5.47-1.882c4.881 0 8.838 3.927 8.838 8.772 0 4.845-3.957 8.772-8.838 8.772a8.842 8.842 0 0 1-5.47-1.882c-.236.335-.49.657-.757.966a10.074 10.074 0 0 0 6.227 2.14c5.562 0 10.071-4.475 10.071-9.996 0-5.52-4.509-9.996-10.07-9.996-2.352 0-4.515.8-6.228 2.14.268.309.52.631.757.966Z"
|
|
1213
|
+
/>
|
|
1214
|
+
<path
|
|
1215
|
+
fill="currentColor"
|
|
1216
|
+
d="m10.321 8.126-1.987 1.972 1.987 1.972-.993.986-1.987-1.972-1.987 1.972-.993-.986 1.986-1.972-1.986-1.972.993-.986 1.987 1.972L9.328 7.14l.993.986Z"
|
|
1217
|
+
/>
|
|
1218
|
+
</svg>`},Bu=Map.groupBy(Uu.keys(),(e=>Uu.get(e).engine));function Hu(){return{dt:sr`Implementation status:`,dd:sr`<a href="https://webstatus.dev/">Web Platform Status</a>`,moreInfoUrl:"https://webstatus.dev/"}}function Gu(e){const t=cs`Check the ${"[implementationStatus]"} configuration.`;return ns("Failed to retrieve implementation status data.",Ou,{hint:t,cause:e instanceof Error?e:void 0}),Hu()}async function Vu(e){const t=e.apiURL||ju,n=await jr(t);if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);return n.json()}function Ju(e){return!e.kind||"feature"===e.kind}function Ku(e,t,n){const r=e.features||e;if(n.feature){const e=r[n.feature];return e&&Ju(e)?[{id:n.feature,...e}]:[]}const s=Zu(t);return s.length?Object.entries(r).filter((([,e])=>{if(!Ju(e))return!1;return[e.spec].flat().filter(Boolean).some((e=>{const t=Yu(e);return s.some((e=>t.startsWith(e)))}))})).map((([e,t])=>({id:e,...t}))):[]}function Zu(e){const t=new Set;return e.edDraftURI&&t.add(Yu(e.edDraftURI)),e.shortName&&(t.add(Yu(`https://www.w3.org/TR/${e.shortName}/`)),t.add(Yu(`https://w3c.github.io/${e.shortName}/`))),e.thisVersion&&t.add(Yu(e.thisVersion)),[...t]}function Yu(e){try{const t=new URL(e);return t.hash="",t.pathname.endsWith("/")||t.pathname.includes(".")||(t.pathname+="/"),t.href}catch{return e}}var Xu=Object.freeze({__proto__:null,name:Ou,prepare:function(e){if(!e.implementationStatus)return;!function(e){const t={removeOnSave:!1};if("boolean"==typeof e.implementationStatus)return void(e.implementationStatus={feature:null,...t});if("string"==typeof e.implementationStatus)return void(e.implementationStatus={feature:e.implementationStatus,...t});e.implementationStatus={...t,...e.implementationStatus}}(e);const t=e.implementationStatus;document.head.appendChild(sr`<style
|
|
1219
|
+
id="baseline-stylesheet"
|
|
1220
|
+
class="${t.removeOnSave?"removeOnSave":""}"
|
|
1221
|
+
>
|
|
1222
|
+
${Du}
|
|
1223
|
+
</style>`)},run:async function(e){if(!e.implementationStatus)return;const t=e.implementationStatus,n=document.querySelector(".head dl");if(!n)return;const r=async function(e,t){const n=await async function(e,t){if(t.apiURL){return Ku(await Vu(t),e,t)}if(t.feature){const e=`${ju}/${encodeURIComponent(t.feature)}`,n=await jr(e);if(!n.ok){if(404===n.status)return[];throw new Error(`Failed to fetch Baseline data for feature "${t.feature}": HTTP ${n.status}`)}const r=await n.json();return r.split_into?.length?r.split_into.filter(Ju):[{id:t.feature,...r}]}const n=Zu(e);if(!n.length)return[];try{const e=await fetch(zu,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({specs:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);const{result:t}=await e.json();return t||[]}catch(n){console.warn(`[${Ou}] Search endpoint failed, falling back to full dataset`,n);return Ku(await Vu(t),e,t)}}(e,t);if(!n.length){const e=t.feature?`No Baseline data found for feature "${t.feature}".`:"No Baseline data found for this specification.",n=t.feature?"Find feature IDs in [web-features data](https://github.com/web-platform-dx/web-features/blob/main/data.json).":void 0;return ns(e,Ou,{hint:n}),Hu()}const r=function(e){const t=e.map((e=>e.status?.baseline));return t.every((e=>"high"===e))?"high":t.every((e=>"low"===e||"high"===e))?"low":""}(n),s=qu.get(r),i=function(e){const t=new Map;for(const n of Uu.keys()){const r=e.every((e=>null!=e.status?.support?.[n]));t.set(n,r)}return t}(n);return ds("amend-user-config",{implementationStatus:t.feature||!0}),function(e,t,n,r){const s=(Wu.get(e)??Wu.get("")??(()=>sr`<span></span>`))();s.setAttribute("aria-hidden","true");const i=[...Bu.values()].map((e=>{const t=e.map((e=>{const t=Uu.get(e)?.name||e,r=n.get(e),s=r?`${t}: Supported`:`${t}: Not supported`,i=r?Fu.available():Fu.unavailable();return sr`<span
|
|
1224
|
+
class="baseline-browser ${r?"support-available":"support-unavailable"}"
|
|
1225
|
+
role="img"
|
|
1226
|
+
title="${s}"
|
|
1227
|
+
aria-label="${s}"
|
|
1228
|
+
>
|
|
1229
|
+
<img
|
|
1230
|
+
class="baseline-browser-logo"
|
|
1231
|
+
width="24"
|
|
1232
|
+
height="24"
|
|
1233
|
+
src="${function(e){return`${Mu}/${e}/${e}.svg`}(e)}"
|
|
1234
|
+
alt=""
|
|
1235
|
+
/>${i}
|
|
1236
|
+
</span>`})),r=e.every((e=>n.get(e)));return sr`<span class="${r?"baseline-pill supported":"baseline-pill unsupported"}">${t}</span>`})),o=sr`<span class="baseline-browsers">${i}</span>`,a=1===r.length?r[0]:null,c=a?`https://webstatus.dev/features/${encodeURIComponent(a.id)}`:"https://webstatus.dev/",l=a?.name?`More info about ${a.name} support`:"More info about browser support",u=sr`${t}:${s}`,d=sr`${o}
|
|
1237
|
+
<a
|
|
1238
|
+
class="baseline-more-info"
|
|
1239
|
+
href="${c}"
|
|
1240
|
+
aria-label="${l}"
|
|
1241
|
+
>More info</a
|
|
1242
|
+
>`;return{dt:u,dd:d,moreInfoUrl:c}}(r,s,i,n)}(e,t).catch(Gu),s=r.then((e=>e.dt)),i=r.then((e=>e.dd)),o=sr`<dt class="baseline-title">
|
|
1243
|
+
${{any:s,placeholder:"Implementation status:"}}
|
|
1244
|
+
</dt>
|
|
1245
|
+
<dd class="baseline-status">
|
|
1246
|
+
${{any:i,placeholder:"Checking availability..."}}
|
|
1247
|
+
</dd>`;n.append(...o.childNodes);const a=await r;if(t.removeOnSave){const e=a.moreInfoUrl||"https://webstatus.dev/";ps("beforesave",(t=>{const n=t.querySelector(".baseline-status");n&&sr.bind(n)`<a href="${e}">Web Platform Status</a>`}))}}});var Qu=String.raw`.mdn{font-size:.75em;position:absolute;right:.3em;min-width:0;margin-top:3rem}
|
|
1021
1248
|
.mdn details{width:100%;margin:1px 0;position:relative;z-index:10;box-sizing:border-box;padding:.4em;padding-top:0}
|
|
1022
1249
|
.mdn details[open]{min-width:25ch;max-width:32ch;background:#fff;background:var(--indextable-hover-bg,#fff);color:#000;color:var(--indextable-hover-text,#000);box-shadow:0 1em 3em -.4em rgba(0,0,0,.3),0 0 1px 1px rgba(0,0,0,.05);box-shadow:0 1em 3em -.4em var(--tocsidebar-shadow,rgba(0,0,0,.3)),0 0 1px 1px var(--tocsidebar-shadow,rgba(0,0,0,.05));border-radius:2px;z-index:11;margin-bottom:.4em}
|
|
1023
1250
|
.mdn summary{text-align:right;cursor:default;margin-right:-.4em}
|
|
@@ -1040,33 +1267,33 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
|
|
|
1040
1267
|
.mdn .safari::before{background-image:url(https://www.w3.org/assets/logos/browser-logos/safari/safari.svg)}
|
|
1041
1268
|
.mdn .safari_ios::before{background-image:url(https://www.w3.org/assets/logos/browser-logos/safari-ios/safari-ios.svg)}
|
|
1042
1269
|
.mdn .samsunginternet_android::before{background-image:url(https://www.w3.org/assets/logos/browser-logos/samsung-internet/samsung-internet.svg)}
|
|
1043
|
-
.mdn .webview_android::before{background-image:url(https://www.w3.org/assets/logos/browser-logos/android-webview/android-webview.png)}`;const
|
|
1270
|
+
.mdn .webview_android::before{background-image:url(https://www.w3.org/assets/logos/browser-logos/android-webview/android-webview.png)}`;const ed="core/mdn-annotation",td="https://w3c.github.io/mdn-spec-links/",nd="https://developer.mozilla.org/en-US/docs/Web/",rd={chrome:"Chrome",chrome_android:"Chrome Android",edge:"Edge",edge_mobile:"Edge Mobile",firefox:"Firefox",firefox_android:"Firefox Android",opera:"Opera",opera_android:"Opera Android",safari:"Safari",safari_ios:"Safari iOS",samsunginternet_android:"Samsung Internet",webview_android:"WebView Android"},sd=Nr({en:{inAllEngines:"This feature is in all major engines.",inSomeEngines:"This feature has limited support."},zh:{inAllEngines:"所有主要引擎均支持此特性。",inSomeEngines:"此功能支持有限。"},cs:{inAllEngines:"Tato funkce je podporována ve všech hlavních prohlížečích.",inSomeEngines:"Tato funkce má omezenou podporu."}});function id(e){const t=e.closest("section");if(!t)return;const{previousElementSibling:n}=t;if(n&&n.classList.contains("mdn"))return n;const r=sr`<aside class="mdn"></aside>`;return t.before(r),r}function od(e){const{name:t,slug:n,summary:r,support:s,engines:i}=e,o=n.slice(n.indexOf("/")+1),a=`${nd}${n}`,c=`Expand MDN details for ${t}`,l=function(e){if(3===e.length)return sr`<span title="${sd.inAllEngines}">✅</span>`;if(e.length<2)return sr`<span title="${sd.inSomeEngines}">🚫</span>`;return sr`<span> </span>`}(i);return sr`<details>
|
|
1044
1271
|
<summary aria-label="${c}"><span>MDN</span>${l}</summary>
|
|
1045
|
-
<a title="${r}" href="${a}">${
|
|
1046
|
-
${function(e){if(3===e.length)return
|
|
1047
|
-
${s?function(e){function t(e,t,n){const r="Unknown"===t?"?":t,s=`${e} ${t.toLowerCase()}`;return
|
|
1048
|
-
<td>${
|
|
1272
|
+
<a title="${r}" href="${a}">${o}</a>
|
|
1273
|
+
${function(e){if(3===e.length)return sr`<p class="engines-all">${sd.inAllEngines}</p>`;if(e.length<2)return sr`<p class="engines-some">${sd.inSomeEngines}</p>`}(i)}
|
|
1274
|
+
${s?function(e){function t(e,t,n){const r="Unknown"===t?"?":t,s=`${e} ${t.toLowerCase()}`;return sr`<tr class="${s}">
|
|
1275
|
+
<td>${rd[e]}</td>
|
|
1049
1276
|
<td>${n||r}</td>
|
|
1050
|
-
</tr>`}function n(e,n){if(n.version_removed)return t(e,"No","");const r=n.version_added;return"boolean"==typeof r?t(e,r?"Yes":"No",""):r?t(e,"Yes",`${r}+`):t(e,"Unknown","")}return
|
|
1051
|
-
${
|
|
1052
|
-
</table>`}(s):
|
|
1053
|
-
</details>`}var
|
|
1054
|
-
${
|
|
1277
|
+
</tr>`}function n(e,n){if(n.version_removed)return t(e,"No","");const r=n.version_added;return"boolean"==typeof r?t(e,r?"Yes":"No",""):r?t(e,"Yes",`${r}+`):t(e,"Unknown","")}const r=Object.keys(rd);return sr`<table>
|
|
1278
|
+
${r.map((r=>e[r]?n(r,e[r]):t(r,"Unknown","")))}
|
|
1279
|
+
</table>`}(s):sr`<p class="nosupportdata">No support data.</p>`}
|
|
1280
|
+
</details>`}var ad=Object.freeze({__proto__:null,name:ed,run:async function(e){const t=function(e){const{shortName:t,mdn:n}=e;if(!n)return;return!0===n?t:"string"==typeof n?n:n.key||t}(e);if(!t)return;const n="object"==typeof e.mdn?e.mdn:{},r=await async function(e,t){const{baseJsonPath:n=td,maxAge:r=864e5}=t,s=new URL(`${e}.json`,n).href,i=await jr(s,r);return 404===i.status?null:await i.json()}(t,n);if(!r){const n=`Could not find MDN data associated with key "${t}".`,r=!0===e.mdn?cs`When using \`mdn: true\`, the key defaults to ${"[shortName]"} ("${t}"). Check that your shortName matches an entry in the [MDN spec links map](https://github.com/w3c/mdn-spec-links/blob/main/SPECMAP.json), or set ${"[mdn]"} to the correct key.`:cs`Search for your spec's URL in the [MDN spec links map](https://github.com/w3c/mdn-spec-links/blob/main/SPECMAP.json) to find the correct key, then set ${"[mdn]"} to it.`;return void ts(n,ed,{hint:r})}const s=document.createElement("style");s.textContent=Qu,document.head.append(s);for(const e of function(e){return[...document.body.querySelectorAll("[id]:not(script)")].filter((({id:t})=>Array.isArray(e[t])))}(r)){const t=r[e.id],n=id(e);if(n)for(const e of t)n.append(od(e))}}});const cd="ui/save-html",ld=Nr({en:{save_snapshot:"Export"},nl:{save_snapshot:"Bewaar Snapshot"},ja:{save_snapshot:"保存する"},de:{save_snapshot:"Exportieren"},zh:{save_snapshot:"导出"}}),ud=[{id:"respec-save-as-html",ext:"html",title:"HTML",type:"text/html",get href(){return ms(this.type)}},{id:"respec-save-as-xml",ext:"xhtml",title:"XML",type:"application/xml",get href(){return ms(this.type)}},{id:"respec-save-as-epub",ext:"epub",title:"EPUB 3",type:"application/epub+zip",get href(){const e=new URL("https://labs.w3.org/r2epub/");return e.searchParams.append("respec","true"),e.searchParams.append("url",document.location.href),e.href}}];var dd=Object.freeze({__proto__:null,exportDocument:function(e,t){return ns("Exporting via ui/save-html module's `exportDocument()` is deprecated and will be removed.",cd,{hint:"Use core/exporter `rsDocToDataURL()` instead."}),ms(t)},name:cd,run:function(e){const t={async show(t){await document.respec.ready;const n=sr`<div class="respec-save-buttons">
|
|
1281
|
+
${ud.map((t=>function(e,t){const{id:n,href:r,ext:s,title:i,type:o}=e,a=Dr(t.publishDate||new Date),c=[t.specStatus,t.shortName||"spec",a].join("-");return sr`<a
|
|
1055
1282
|
href="${r}"
|
|
1056
1283
|
id="${n}"
|
|
1057
1284
|
download="${c}.${s}"
|
|
1058
|
-
type="${
|
|
1285
|
+
type="${o}"
|
|
1059
1286
|
class="respec-save-button"
|
|
1060
|
-
onclick=${()=>
|
|
1061
|
-
>${
|
|
1287
|
+
onclick=${()=>ti.closeModal()}
|
|
1288
|
+
>${i}</a
|
|
1062
1289
|
>`}(t,e)))}
|
|
1063
|
-
</div>`;
|
|
1064
|
-
<iframe class="respec-iframe" src="${
|
|
1065
|
-
<a href="${
|
|
1066
|
-
`;
|
|
1067
|
-
<iframe class="respec-iframe" src="${
|
|
1068
|
-
<a href="${
|
|
1069
|
-
`;
|
|
1290
|
+
</div>`;ti.freshModal(ld.save_snapshot,n,t)}},n="download"in HTMLAnchorElement.prototype;let r;n&&(r=ti.addCommand(ld.save_snapshot,(function(){if(!n)return;t.show(r)}),"Ctrl+Shift+Alt+S","💾"))}});const pd="https://respec.org/specref/",hd=Nr({en:{search_specref:"Search Specref"},nl:{search_specref:"Doorzoek Specref"},ja:{search_specref:"仕様検索"},de:{search_specref:"Spezifikationen durchsuchen"},zh:{search_specref:"搜索 Specref"},cs:{search_specref:"Hledat ve Specref"}}),fd=ti.addCommand(hd.search_specref,(function(){const e=sr`
|
|
1291
|
+
<iframe class="respec-iframe" src="${pd}" onload=${e=>e.target.classList.add("ready")}></iframe>
|
|
1292
|
+
<a href="${pd}" target="_blank">Open Search UI in a new tab</a>
|
|
1293
|
+
`;ti.freshModal(hd.search_specref,e,fd)}),"Ctrl+Shift+Alt+space","🔎");var md=Object.freeze({__proto__:null});const gd="https://respec.org/xref/",bd=Nr({en:{title:"Search definitions"},ja:{title:"定義検索"},de:{title:"Definitionen durchsuchen"},zh:{title:"搜索定义"},cs:{title:"Hledat definice"}}),yd=ti.addCommand(bd.title,(function(){const e=sr`
|
|
1294
|
+
<iframe class="respec-iframe" src="${gd}" onload="${e=>e.target.classList.add("ready")}"></iframe>
|
|
1295
|
+
<a href="${gd}" target="_blank">Open Search UI in a new tab</a>
|
|
1296
|
+
`;ti.freshModal(bd.title,e,yd)}),"Ctrl+Shift+Alt+x","📚");var wd=Object.freeze({__proto__:null});const vd=Nr({en:{about_respec:"About"},zh:{about_respec:"关于"},nl:{about_respec:"Over"},ja:{about_respec:"これについて"},de:{about_respec:"Über"},cs:{about_respec:"O aplikaci"}});window.respecVersion=window.respecVersion||"Developer Edition";const kd=document.createElement("div"),$d=sr.bind(kd),xd=ti.addCommand(`${vd.about_respec} ${window.respecVersion}`,(function(){const e=[];"getEntriesByType"in performance&&performance.getEntriesByType("measure").sort(((e,t)=>t.duration-e.duration)).map((({name:e,duration:t})=>({name:e,duration:t>1e3?`${Math.round(t/1e3)} second(s)`:`${t.toFixed(2)} milliseconds`}))).map(Cd).forEach((t=>{e.push(t)}));$d`
|
|
1070
1297
|
<p>
|
|
1071
1298
|
ReSpec is a document production toolchain, with a notable focus on W3C specifications.
|
|
1072
1299
|
</p>
|
|
@@ -1090,18 +1317,19 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
|
|
|
1090
1317
|
</thead>
|
|
1091
1318
|
<tbody>${e}</tbody>
|
|
1092
1319
|
</table>
|
|
1093
|
-
`,
|
|
1320
|
+
`,ti.freshModal(`${vd.about_respec} - ${window.respecVersion}`,kd,xd)}),"Ctrl+Shift+Alt+A","ℹ️");function Cd({name:e,duration:t}){return sr`
|
|
1094
1321
|
<tr>
|
|
1095
1322
|
<td><a href="${`https://github.com/speced/respec/blob/develop/src/${e}.js`}">${e}</a></td>
|
|
1096
1323
|
<td>${t}</td>
|
|
1097
1324
|
</tr>
|
|
1098
|
-
`}var
|
|
1325
|
+
`}var Sd=Object.freeze({__proto__:null});var _d=Object.freeze({__proto__:null,name:"core/seo",run:function(e){if(e.gitRevision){const t=sr`<meta
|
|
1099
1326
|
name="revision"
|
|
1100
1327
|
content="${e.gitRevision}"
|
|
1101
|
-
/>`;document.head.appendChild(t)}const t=document.querySelector("#abstract p:first-of-type");if(!t)return;const n=t.textContent.replace(/\s+/," ").trim(),r=document.createElement("meta");r.name="description",r.content=n,document.head.appendChild(r)}});const
|
|
1328
|
+
/>`;document.head.appendChild(t)}const t=document.querySelector("#abstract p:first-of-type");if(!t)return;const n=t.textContent.replace(/\s+/," ").trim(),r=document.createElement("meta");r.name="description",r.content=n,document.head.appendChild(r)}});const Td="w3c/seo",Rd={NOTE:"w3p:NOTE",WD:"w3p:WD",LC:"w3p:LastCall",CR:"w3p:CR",CRD:"w3p:CRD",PR:"w3p:PR",REC:"w3p:REC",RSCND:"w3p:RSCND"},Ed=new Set([...Mi,...Ui,...qi,"BG-FINAL","CG-FINAL","CRY","DRY","draft-finding","finding"]);function Ld({name:e,url:t,mailto:n,company:r,companyURL:s}){const i={type:"Person",name:e,url:t,"foaf:mbox":n};return(r||s)&&(i.worksFor={name:r,url:s}),i}function Ad(e){const{href:t,title:n,href:r}=e,s={id:t,type:"TechArticle",name:n,url:r};return e.authors&&(s.creator=e.authors.map((e=>({name:e})))),e.rawDate&&(s.publishedDate=e.rawDate),e.isbn&&(s.identifier=e.isbn),e.publisher&&(s.publisher={name:e.publisher}),s}var Pd=Object.freeze({__proto__:null,name:Td,requiresCanonicalLink:Ed,run:async function(e){if((e.canonicalURI||Ed.has(e.specStatus))&&e.shortName){switch(e.canonicalURI){case"edDraft":if(e.edDraftURI)e.canonicalURI=new URL(e.edDraftURI,document.location.href).href;else{ns("Canonical URI set to edDraft, but no edDraftURI is set in configuration",Td),e.canonicalURI=null}break;case"TR":if(e.latestVersion)e.canonicalURI=e.latestVersion;else{ns("Canonical URI set to TR, but no shortName is set in configuration",Td),e.canonicalURI=null}break;default:e.latestVersion&&!e.canonicalURI&&(e.canonicalURI=e.latestVersion)}if(e.canonicalURI){const t=sr`<link rel="canonical" href="${e.canonicalURI}" />`;document.head.appendChild(t)}e.doJsonLd&&await async function(e,t){const n=Rd[e.specStatus],r=["TechArticle"];n&&r.push(n);const s={"@context":["http://schema.org",{"@vocab":"http://schema.org/","@language":t.documentElement.lang||"en",w3p:"http://www.w3.org/2001/02pd/rec54#",foaf:"http://xmlns.com/foaf/0.1/",datePublished:{"@type":"http://www.w3.org/2001/XMLSchema#date"},inLanguage:{"@language":null},isBasedOn:{"@type":"@id"},license:{"@type":"@id"}}],id:e.canonicalURI||e.thisVersion,type:r,name:document.title,inLanguage:t.documentElement.lang||"en",license:e.licenseInfo?.url,datePublished:e.dashDate,copyrightHolder:{name:"World Wide Web Consortium",url:"https://www.w3.org/"},discussionUrl:e.issueBase,alternativeHeadline:e.subtitle,isBasedOn:e.prevVersion};if(e.additionalCopyrightHolders){const t=Array.isArray(e.additionalCopyrightHolders)?e.additionalCopyrightHolders:[e.additionalCopyrightHolders];s.copyrightHolder=[s.copyrightHolder,...t.map((e=>({name:e})))]}const i=t.head.querySelector("meta[name=description]");i&&(s.description=i.content);e.editors&&(s.editor=e.editors.map(Ld));e.authors&&(s.contributor=e.authors.map(Ld));const o=[...e.normativeReferences,...e.informativeReferences],a=await Promise.all(o.map((e=>va(e))));s.citation=a.filter((e=>null!==e&&"object"==typeof e)).map(Ad);const c=t.createElement("script");c.type="application/ld+json",c.textContent=JSON.stringify(s,null,2),t.head.appendChild(c)}(e,document)}}});const Nd="\n --base: #282c34;\n --mono-1: #abb2bf;\n --mono-2: #818896;\n --mono-3: #5c6370;\n --hue-1: #56b6c2;\n --hue-2: #61aeee;\n --hue-3: #c678dd;\n --hue-4: #98c379;\n --hue-5: #e06c75;\n --hue-5-2: #be5046;\n --hue-6: #d19a66;\n --hue-6-2: #e6c07b;\n";var Id=String.raw`.hljs,body:has(input[name=color-scheme][value=light]:checked) .hljs,head:not(:has(meta[name=color-scheme][content~=dark]))+body .hljs{--base:#fafafa;--mono-1:#383a42;--mono-2:#686b77;--mono-3:#717277;--hue-1:#0b76c5;--hue-2:#336ae3;--hue-3:#a626a4;--hue-4:#42803c;--hue-5:#ca4706;--hue-5-2:#c91243;--hue-6:#986801;--hue-6-2:#9a6a01}
|
|
1102
1329
|
@media (prefers-color-scheme:dark){
|
|
1103
|
-
.hljs{
|
|
1330
|
+
.hljs{${Nd}}
|
|
1104
1331
|
}
|
|
1332
|
+
body:has(input[name=color-scheme][value=dark]:checked) .hljs{${Nd}}
|
|
1105
1333
|
.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;color:var(--mono-1,#383a42);background:#fafafa;background:var(--base,#fafafa)}
|
|
1106
1334
|
.hljs-comment,.hljs-quote{color:#717277;color:var(--mono-3,#717277);font-style:italic}
|
|
1107
1335
|
.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4;color:var(--hue-3,#a626a4)}
|
|
@@ -1113,21 +1341,21 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
|
|
|
1113
1341
|
.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#336ae3;color:var(--hue-2,#336ae3)}
|
|
1114
1342
|
.hljs-emphasis{font-style:italic}
|
|
1115
1343
|
.hljs-strong{font-weight:700}
|
|
1116
|
-
.hljs-link{text-decoration:underline}`;
|
|
1117
|
-
${
|
|
1118
|
-
</style>`),await Promise.all(n)}});const
|
|
1344
|
+
.hljs-link{text-decoration:underline}`;const Dd=function(e,t=0){const n=function*(e,t){for(;;)yield`${e}:${t}`,t++}(e,t);return()=>n.next().value}("highlight");async function Od(e){const t=e;t.setAttribute("aria-busy","true");const n=(r=t.classList,Array.from(r).filter((e=>"highlight"!==e&&"nolinks"!==e)).map((e=>e.toLowerCase())));var r;let s;try{s=await async function(e,t){const n={action:"highlight",code:e,id:Dd(),languages:t},r=await $s;return r.postMessage(n),new Promise(((e,t)=>{const s=setTimeout((()=>{t(new Error("Timed out waiting for highlight."))}),4e3);r.addEventListener("message",(function t(i){const{data:{id:o,language:a,value:c}}=i;o===n.id&&(r.removeEventListener("message",t),clearTimeout(s),e({language:a,value:c}))}))}))}(t.innerText,n)}catch(e){return void console.error(e)}const{language:i,value:o}=s;switch(t.localName){case"pre":t.classList.remove(i),t.innerHTML=`<code class="hljs${i?` ${i}`:""}">${o}</code>`,t.classList.length||t.removeAttribute("class");break;case"code":t.innerHTML=o,t.classList.add("hljs"),i&&t.classList.add(i)}t.setAttribute("aria-busy","false")}var jd=Object.freeze({__proto__:null,name:"core/highlight",run:async function(e){if(e.noHighlightCSS)return;const t=[...document.querySelectorAll("\n pre:not(.idl):not(.cddl):not(.nohighlight) > code:not(.nohighlight),\n pre:not(.idl):not(.cddl):not(.nohighlight),\n code.highlight\n ")].filter((e=>"pre"!==e.localName||!e.querySelector("code")));if(!t.length)return;const n=t.filter((e=>e.textContent.trim())).map(Od);document.head.appendChild(sr`<style>
|
|
1345
|
+
${Id}
|
|
1346
|
+
</style>`),await Promise.all(n)}});const zd=Nr({en:{missing_test_suite_uri:cs`Found tests in your spec, but missing ${"[testSuiteURI]"} in your ReSpec config.`,tests:"tests",test:"test"},ja:{missing_test_suite_uri:cs`この仕様内にテストの項目を検出しましたが,ReSpec の設定に ${"[testSuiteURI]"} が見つかりません.`,tests:"テスト",test:"テスト"},de:{missing_test_suite_uri:cs`Die Spezifikation enthält Tests, aber in der ReSpec-Konfiguration ist keine ${"[testSuiteURI]"} angegeben.`,tests:"Tests",test:"Test"},zh:{missing_test_suite_uri:cs`本规范中包含测试,但在 ReSpec 配置中缺少 ${"[testSuiteURI]"}。`,tests:"测试",test:"测试"}}),Md="core/data-tests";function Ud(e){const t=[],[n]=new URL(e).pathname.split("/").reverse(),r=n.split(".");let[s]=r;if(r.find((e=>"https"===e))){const e=document.createElement("span");e.textContent="🔒",e.setAttribute("aria-label","requires a secure connection"),e.setAttribute("title","Test requires HTTPS"),s=s.replace(".https",""),t.push(e)}if(s.split(".").join("-").split("-").find((e=>"manual"===e))){const e=document.createElement("span");e.textContent="💪",e.setAttribute("aria-label","the test must be run manually"),e.setAttribute("title","Manual test"),s=s.replace("-manual",""),t.push(e)}return sr`
|
|
1119
1347
|
<li>
|
|
1120
1348
|
<a href="${e}">${s}</a>
|
|
1121
1349
|
${t}
|
|
1122
1350
|
</li>
|
|
1123
|
-
`}function
|
|
1351
|
+
`}function qd(e,t,n){return e.map((e=>{try{return new URL(e,t).href}catch{ns(cs`Invalid URL in ${"[data-tests]"} attribute: ${e}.`,Md,{elements:[n]})}})).filter((e=>e))}function Wd(e,t){const n=e.filter(((e,t,n)=>n.indexOf(e)!==t));if(n.length){const e=cs`Duplicate tests found in the ${"[data-tests]"} attribute.`,r=cs`To fix, remove duplicates from ${"[data-tests]"}: ${os(n,{quotes:!0})}.`;ns(e,Md,{hint:r,elements:[t]})}}function Fd(e){const t=[...new Set(e)];return sr`
|
|
1124
1352
|
<details class="respec-tests-details removeOnSave">
|
|
1125
1353
|
<summary>tests: ${t.length}</summary>
|
|
1126
1354
|
<ul>
|
|
1127
|
-
${t.map(
|
|
1355
|
+
${t.map(Ud)}
|
|
1128
1356
|
</ul>
|
|
1129
1357
|
</details>
|
|
1130
|
-
`}var
|
|
1358
|
+
`}var Bd=Object.freeze({__proto__:null,name:Md,run:function(e){const t=[...document.querySelectorAll("[data-tests]")].filter((e=>e.dataset.tests));if(t.length)if(e.testSuiteURI)for(const n of t){const t=qd((n.dataset.tests??"").split(/,/gm).map((e=>e.trim())),e.testSuiteURI,n).filter((e=>void 0!==e));Wd(t,n);const r=Fd(t);n.append(r)}else ts(zd.missing_test_suite_uri,Md)}});const Hd="core/list-sorter";function Gd(e){const t="ascending"===e?1:-1;return(e,n)=>{const r=e.textContent??"",s=n.textContent??"";return t*r.trim().localeCompare(s.trim())}}function Vd(e,t){return[...e.querySelectorAll(":scope > li")].sort(Gd(t)).reduce(((e,t)=>(e.appendChild(t),e)),document.createDocumentFragment())}function Jd(e,t){return[...e.querySelectorAll(":scope > dt")].sort(Gd(t)).reduce(((e,t)=>{const{nodeType:n,nodeName:r}=t,s=document.createDocumentFragment();let{nextSibling:i}=t;for(;i&&i.nextSibling;){s.appendChild(i.cloneNode(!0));const{nodeType:e,nodeName:t}=i.nextSibling;if(e===n&&t===r)break;i=i.nextSibling}return s.prepend(t.cloneNode(!0)),e.appendChild(s),e}),document.createDocumentFragment())}var Kd=Object.freeze({__proto__:null,name:Hd,run:function(){const e=document.querySelectorAll("[data-sort]");for(const t of e){let e;const n=t.dataset.sort||"ascending";switch(t.localName){case"dl":e=Jd(t,n);break;case"ol":case"ul":e=Vd(t,n);break;default:ns(`ReSpec can't sort ${t.localName} elements.`,Hd,{elements:[t]})}if(e){const n=document.createRange();n.selectNodeContents(t),n.deleteContents(),t.appendChild(e)}}},sortDefinitionTerms:Jd,sortListItems:Vd});var Zd=String.raw`var:hover{text-decoration:underline;cursor:pointer}
|
|
1131
1359
|
var.respec-hl{color:var(--color,#000);background-color:var(--bg-color);box-shadow:0 0 0 2px var(--bg-color)}
|
|
1132
1360
|
@media (prefers-color-scheme:dark){
|
|
1133
1361
|
var.respec-hl{filter:saturate(.9) brightness(.9)}
|
|
@@ -1141,15 +1369,11 @@ var.respec-hl-c6{--bg-color:#82ddff}
|
|
|
1141
1369
|
var.respec-hl-c7{--bg-color:#ffbcf2}
|
|
1142
1370
|
@media print{
|
|
1143
1371
|
var.respec-hl{background:0 0;color:#000;box-shadow:unset}
|
|
1144
|
-
}`;var
|
|
1372
|
+
}`;var Yd=Object.freeze({__proto__:null,name:"core/highlight-vars",run:async function(e){if(!e.highlightVars)return;const t=document.createElement("style");t.textContent=Zd,document.head.appendChild(t);const n=document.createElement("script");n.id="respec-highlight-vars",n.textContent=await async function(){try{return(await Promise.resolve().then((function(){return vh}))).default}catch{return bs("./src/core/highlight-vars.runtime.js")}}(),document.body.append(n),ps("beforesave",(e=>{e.querySelectorAll("var.respec-hl").forEach((e=>{const t=[...e.classList.values()].filter((e=>e.startsWith("respec-hl")));e.classList.remove(...t),e.classList.length||e.removeAttribute("class")}))}))}});var Xd=String.raw`var[data-type]{position:relative}
|
|
1145
1373
|
var[data-type]::after,var[data-type]::before{position:absolute;left:50%;top:-6px;opacity:0;transition:opacity .4s;pointer-events:none}
|
|
1146
1374
|
var[data-type]::before{content:"";transform:translateX(-50%);border-width:4px 6px 0 6px;border-style:solid;border-color:transparent;border-top-color:#222}
|
|
1147
1375
|
var[data-type]::after{content:attr(data-type);transform:translateX(-50%) translateY(-100%);background:#222;text-align:center;font-family:"Dank Mono","Fira Code",monospace;font-style:normal;padding:6px;border-radius:3px;color:#daca88;text-indent:0;font-weight:400}
|
|
1148
|
-
var[data-type]:hover::after,var[data-type]:hover::before{opacity:1}`;var
|
|
1149
|
-
.assert{border-left:.5em solid #aaa;padding:.3em;border-color:#aaa;border-color:var(--assertion-border);background:#eee;background:var(--assertion-bg);color:#000;color:var(--assertion-text)}
|
|
1150
|
-
@media (prefers-color-scheme:dark){
|
|
1151
|
-
:root{--assertion-border:#444;--assertion-bg:var(--borderedblock-bg);--assertion-text:var(--text)}
|
|
1152
|
-
}`;var _u=Object.freeze({__proto__:null,name:"core/algorithms",run:function(){const e=Array.from(document.querySelectorAll("ol.algorithm li")).filter((e=>e.textContent.trim().startsWith("Assert: ")));if(!e.length)return;for(const t of e){t.classList.add("assert");const e=t.firstChild;e instanceof Text&&e.textContent.startsWith("Assert: ")&&(e.textContent=e.textContent.replace("Assert: ",""),t.prepend(Cn`<a href="https://infra.spec.whatwg.org/#assert">Assert</a>`,": "))}const t=document.createElement("style");t.textContent=xu,document.head.appendChild(t)}});const Su="core/anchor-expander";function Cu(e,t,n){const r=e.querySelector(".marker .self-link");if(!r){n.textContent=n.getAttribute("href");return void fr(`Found matching element "${t}", but it has no title or marker.`,Su,{title:"Missing title.",elements:[n]})}const s=lr(r);n.append(...s.childNodes),n.classList.add("box-ref")}function Ru(e,t,n){const r=e.querySelector("figcaption");if(!r){n.textContent=n.getAttribute("href");return void fr(`Found matching figure "${t}", but figure is lacking a \`<figcaption>\`.`,Su,{title:"Missing figcaption in referenced figure.",elements:[n]})}const s=[...lr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("figno"),e)));n.append(...s),n.classList.add("fig-ref");const o=r.querySelector(".fig-title");!n.hasAttribute("title")&&o&&(n.title=Hn(o.textContent))}function Eu(e,t,n){if(!e.classList.contains("numbered"))return;const r=e.querySelector("caption");if(!r){n.textContent=n.getAttribute("href");return void fr(`Found matching table "${t}", but table is lacking a \`<caption>\`.`,Su,{title:"Missing caption in referenced table.",elements:[n]})}const s=[...lr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("tableno"),e)));n.append(...s),n.classList.add("table-ref");const o=r.querySelector(".table-title");!n.hasAttribute("title")&&o&&(n.title=Hn(o.textContent))}function Lu(e,t,n){const r=e.querySelector("h6, h5, h4, h3, h2");if(r)Au(r,n),Tu(r,n);else{n.textContent=n.getAttribute("href");fr("Found matching section, but the section was lacking a heading element.",Su,{title:`No matching id in document: "${t}".`,elements:[n]})}}function Au(e,t){const n=e.querySelector(".self-link"),r=[...lr(e).childNodes].filter((e=>!e.classList||!e.classList.contains("self-link")));t.append(...r),n&&t.prepend("§ "),t.classList.add("sec-ref"),t.lastChild.nodeType===Node.TEXT_NODE&&(t.lastChild.textContent=t.lastChild.textContent.trimEnd()),t.querySelectorAll("a").forEach((e=>{const t=nr(e,"span");for(const e of[...t.attributes])t.removeAttributeNode(e)}))}function Tu(e,t){for(const n of["dir","lang"]){if(t.hasAttribute(n))continue;const r=e.closest(`[${n}]`);if(!r)continue;const s=t.closest(`[${n}]`);s&&s.getAttribute(n)===r.getAttribute(n)||t.setAttribute(n,r.getAttribute(n))}}var Pu=Object.freeze({__proto__:null,name:Su,run:function(){const e=[...document.querySelectorAll("a[href^='#']:not(.self-link):not([href$='the-empty-string'])")].filter((e=>""===e.textContent.trim()));for(const t of e){const e=t.getAttribute("href").slice(1),n=document.getElementById(e);if(n){switch(n.localName){case"h6":case"h5":case"h4":case"h3":case"h2":Au(n,t);break;case"section":Lu(n,e,t);break;case"figure":Ru(n,e,t);break;case"table":Eu(n,e,t);break;case"aside":case"div":Cu(n,e,t);break;default:t.textContent=t.getAttribute("href");fr("ReSpec doesn't support expanding this kind of reference.",Su,{title:`Can't expand "#${e}".`,elements:[t]})}Tu(n,t),t.normalize()}else{t.textContent=t.getAttribute("href");fr(`Couldn't expand inline reference. The id "${e}" is not in the document.`,Su,{title:`No matching id in document: ${e}.`,elements:[t]})}}}});var Iu=String.raw`dfn{cursor:pointer}
|
|
1376
|
+
var[data-type]:hover::after,var[data-type]:hover::before{opacity:1}`;var Qd=Object.freeze({__proto__:null,name:"core/data-type",run:function(e){if(!e.highlightVars)return;const t=document.createElement("style");t.textContent=Xd,document.head.appendChild(t);let n=null;const r=new Map,s=document.querySelectorAll("section var");for(const e of s){const t=e.closest("section");if(n!==t&&(n=t,r.clear()),e.dataset.type){r.set(e.textContent.trim(),e.dataset.type);continue}const s=r.get(e.textContent.trim());s&&(e.dataset.type=s)}}});const ep="core/anchor-expander";function tp(e,t,n){const r=e.querySelector(".marker .self-link");if(!r){n.textContent=n.getAttribute("href");return void ts(`Found matching element "${t}", but it has no title or marker.`,ep,{title:"Missing title.",elements:[n]})}const s=Zr(r);n.append(...s.childNodes),n.classList.add("box-ref")}function np(e,t,n){const r=e.querySelector("figcaption");if(!r){n.textContent=n.getAttribute("href");return void ts(`Found matching figure "${t}", but figure is lacking a \`<figcaption>\`.`,ep,{title:"Missing figcaption in referenced figure.",elements:[n]})}const s=[...Zr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("figno"),e)));n.append(...s),n.classList.add("fig-ref");const i=r.querySelector(".fig-title");!n.hasAttribute("title")&&i&&(n.title=Pr(i.textContent))}function rp(e,t,n){if(!e.classList.contains("numbered"))return;const r=e.querySelector("caption");if(!r){n.textContent=n.getAttribute("href");return void ts(`Found matching table "${t}", but table is lacking a \`<caption>\`.`,ep,{title:"Missing caption in referenced table.",elements:[n]})}const s=[...Zr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("tableno"),e)));n.append(...s),n.classList.add("table-ref");const i=r.querySelector(".table-title");!n.hasAttribute("title")&&i&&(n.title=Pr(i.textContent))}function sp(e,t,n){const r=e.querySelector("h6, h5, h4, h3, h2");if(r)ip(r,n),op(r,n);else{n.textContent=n.getAttribute("href");ts("Found matching section, but the section was lacking a heading element.",ep,{title:`No matching id in document: "${t}".`,elements:[n]})}}function ip(e,t){const n=e.querySelector(".self-link"),r=[...Zr(e).childNodes].filter((e=>!e.classList||!e.classList.contains("self-link")));t.append(...r),n&&t.prepend("§ "),t.classList.add("sec-ref"),t.lastChild&&t.lastChild.nodeType===Node.TEXT_NODE&&(t.lastChild.textContent=(t.lastChild.textContent??"").trimEnd()),t.querySelectorAll("a").forEach((e=>{const t=Br(e,"span");for(const e of[...t.attributes])t.removeAttributeNode(e)}))}function op(e,t){for(const n of["dir","lang"]){if(t.hasAttribute(n))continue;const r=e.closest(`[${n}]`);if(!r)continue;const s=t.closest(`[${n}]`);s&&s.getAttribute(n)===r.getAttribute(n)||t.setAttribute(n,r.getAttribute(n)??"")}}var ap=Object.freeze({__proto__:null,name:ep,run:function(){const e=[...document.querySelectorAll("a[href^='#']:not(.self-link):not([href$='the-empty-string'])")].filter((e=>""===e.textContent.trim()));for(const t of e){const e=(t.getAttribute("href")??"").slice(1),n=document.getElementById(e);if(n){switch(n.localName){case"h6":case"h5":case"h4":case"h3":case"h2":ip(n,t);break;case"section":sp(n,e,t);break;case"figure":np(n,e,t);break;case"table":rp(n,e,t);break;case"aside":case"div":tp(n,e,t);break;case"dfn":{const e=Zr(n);t.append(...e.childNodes),t.classList.add("dfn-ref");break}default:t.textContent=t.getAttribute("href");ts("ReSpec doesn't support expanding this kind of reference.",ep,{title:`Can't expand "#${e}".`,elements:[t]})}op(n,t),t.normalize()}else{t.textContent=t.getAttribute("href");ts(`Couldn't expand inline reference. The id "${e}" is not in the document.`,ep,{title:`No matching id in document: ${e}.`,elements:[t]})}}}});var cp=String.raw`dfn{cursor:pointer}
|
|
1153
1377
|
.dfn-panel{position:absolute;z-index:35;min-width:300px;max-width:500px;padding:.5em .75em;margin-top:.6em;font-family:"Helvetica Neue",sans-serif;font-size:small;background:#fff;background:var(--indextable-hover-bg,#fff);color:#000;color:var(--text,#000);box-shadow:0 1em 3em -.4em rgba(0,0,0,.3),0 0 1px 1px rgba(0,0,0,.05);box-shadow:0 1em 3em -.4em var(--tocsidebar-shadow,rgba(0,0,0,.3)),0 0 1px 1px var(--tocsidebar-shadow,rgba(0,0,0,.05));border-radius:2px}
|
|
1154
1378
|
.dfn-panel:not(.docked)>.caret{position:absolute;top:-9px}
|
|
1155
1379
|
.dfn-panel:not(.docked)>.caret::after,.dfn-panel:not(.docked)>.caret::before{content:"";position:absolute;border:10px solid transparent;border-top:0;border-bottom:10px solid #fff;border-bottom-color:var(--indextable-hover-bg,#fff);top:0}
|
|
@@ -1162,92 +1386,99 @@ var[data-type]:hover::after,var[data-type]:hover::before{opacity:1}`;var $u=Obje
|
|
|
1162
1386
|
.dfn-panel .marker{padding:.1em;margin-left:.5em;border-radius:.2em;text-align:center;white-space:nowrap;font-size:90%;color:#040b1c}
|
|
1163
1387
|
.dfn-panel .marker.dfn-exported{background:#d1edfd;box-shadow:0 0 0 .125em #1ca5f940}
|
|
1164
1388
|
.dfn-panel .marker.idl-block{background:#8ccbf2;box-shadow:0 0 0 .125em #0670b161}
|
|
1389
|
+
.dfn-panel .marker.cddl-block{background:#8ccbf2;box-shadow:0 0 0 .125em #0670b161}
|
|
1165
1390
|
.dfn-panel a:not(:hover){text-decoration:none!important;border-bottom:none!important}
|
|
1166
1391
|
.dfn-panel a[href]:hover{border-bottom-width:1px}
|
|
1167
1392
|
.dfn-panel ul{padding:0}
|
|
1168
1393
|
.dfn-panel li{margin-left:1em}
|
|
1169
|
-
.dfn-panel.docked{position:fixed;left:.5em;top:unset;bottom:2em;margin:0 auto;max-width:calc(100vw - .75em * 2 - .5em - .2em * 2);max-height:30vh;overflow:auto}`;function
|
|
1394
|
+
.dfn-panel.docked{position:fixed;left:.5em;top:unset;bottom:2em;margin:0 auto;max-width:calc(100vw - .75em * 2 - .5em - .2em * 2);max-height:30vh;overflow:auto}`;function lp(e){const{id:t}=e,n=e.dataset.href||`#${t}`,r=document.querySelectorAll(`a[href="${n}"]:not(.index-term)`),s=`dfn-panel-for-${e.id}`,i=e.getAttribute("aria-label")||Pr(e.textContent),o=sr`
|
|
1170
1395
|
<div
|
|
1171
1396
|
class="dfn-panel"
|
|
1172
1397
|
id="${s}"
|
|
1173
1398
|
hidden
|
|
1174
1399
|
role="dialog"
|
|
1175
1400
|
aria-modal="true"
|
|
1176
|
-
aria-label="Links in this document to definition: ${
|
|
1401
|
+
aria-label="Links in this document to definition: ${i}"
|
|
1177
1402
|
>
|
|
1178
1403
|
<span class="caret"></span>
|
|
1179
1404
|
<div>
|
|
1180
1405
|
<a
|
|
1181
1406
|
class="self-link"
|
|
1182
1407
|
href="${n}"
|
|
1183
|
-
aria-label="Permalink for definition: ${
|
|
1408
|
+
aria-label="Permalink for definition: ${i}. Activate to close this dialog."
|
|
1184
1409
|
>Permalink</a
|
|
1185
1410
|
>
|
|
1186
|
-
${function(e){return e.matches("dfn[data-export]")?
|
|
1411
|
+
${function(e){return e.matches("dfn[data-export]")?sr`<span
|
|
1187
1412
|
class="marker dfn-exported"
|
|
1188
1413
|
title="Definition can be referenced by other specifications"
|
|
1189
1414
|
>exported</span
|
|
1190
|
-
>`:null}(e)} ${function(e,t){if(!e.hasAttribute("data-idl"))return null;for(const n of t){if(n.dataset.linkType!==e.dataset.dfnType)continue;const t=n.closest("pre.idl");if(t&&t.id){const e=`#${t.id}`;return
|
|
1415
|
+
>`:null}(e)} ${function(e,t){if(!e.hasAttribute("data-idl"))return null;for(const n of t){if(n.dataset.linkType!==e.dataset.dfnType)continue;const t=n.closest("pre.idl");if(t&&t.id){const e=`#${t.id}`;return sr`<a
|
|
1191
1416
|
href="${e}"
|
|
1192
1417
|
class="marker idl-block"
|
|
1193
1418
|
title="Jump to IDL declaration"
|
|
1194
1419
|
>IDL</a
|
|
1195
1420
|
>`}}return null}(e,r)}
|
|
1421
|
+
${function(e,t){const{dfnType:n}=e.dataset;if(!n?.startsWith("cddl-"))return null;const r=[...t].map((e=>e.closest("pre.cddl"))).find((e=>e?.id));return r?sr`<a
|
|
1422
|
+
href="#${r.id}"
|
|
1423
|
+
class="marker cddl-block"
|
|
1424
|
+
title="Jump to CDDL declaration"
|
|
1425
|
+
>CDDL</a
|
|
1426
|
+
>`:null}(e,r)}
|
|
1196
1427
|
</div>
|
|
1197
1428
|
<p><b>Referenced in:</b></p>
|
|
1198
|
-
${function(e,t){if(!t.length)return
|
|
1429
|
+
${function(e,t){if(!t.length)return sr`<ul>
|
|
1199
1430
|
<li>Not referenced in this document.</li>
|
|
1200
|
-
</ul>`;const n=new Map;t.forEach(((t,r)=>{const s=t.id||`ref-for-${e}-${r+1}`;t.id||(t.id=s);const
|
|
1201
|
-
${r(e).map((e=>
|
|
1431
|
+
</ul>`;const n=new Map;t.forEach(((t,r)=>{const s=t.id||`ref-for-${e}-${r+1}`;t.id||(t.id=s);const i=function(e){const t=e.closest("section");if(!t)return null;const n=t.querySelector("h1, h2, h3, h4, h5, h6");return n?`§ ${Pr(n.textContent)}`:null}(t)??"";(n.get(i)??n.set(i,[]).get(i)??[]).push(s)}));const r=([e,t])=>[{title:e,id:t[0],text:e}].concat(t.slice(1).map(((e,t)=>({title:`Reference ${t+2}`,text:`(${t+2})`,id:e})))),s=e=>sr`<li>
|
|
1432
|
+
${r(e).map((e=>sr`<a href="#${e.id}" title="${e.title}">${e.text}</a
|
|
1202
1433
|
>${" "}`))}
|
|
1203
|
-
</li>`;return
|
|
1434
|
+
</li>`;return sr`<ul>
|
|
1204
1435
|
${[...n].map(s)}
|
|
1205
1436
|
</ul>`}(t,r)}
|
|
1206
1437
|
</div>
|
|
1207
|
-
`;return
|
|
1208
|
-
${
|
|
1209
|
-
</style>`,document.querySelector("link"));const e=document.querySelectorAll("dfn[id]:not([data-cite]), #index-defined-elsewhere .index-term"),t=document.createDocumentFragment();for(const n of e)t.append(
|
|
1438
|
+
`;return o}var up=Object.freeze({__proto__:null,name:"core/dfn-panel",run:async function(){document.head.insertBefore(sr`<style>
|
|
1439
|
+
${cp}
|
|
1440
|
+
</style>`,document.querySelector("link"));const e=document.querySelectorAll("dfn[id]:not([data-cite]), #index-defined-elsewhere .index-term"),t=document.createDocumentFragment();for(const n of e)t.append(lp(n)),n.tabIndex=0,n.setAttribute("aria-haspopup","dialog");const n=document.body.querySelector("script");n?n.before(t):document.body.append(t);const r=document.createElement("script");r.id="respec-dfn-panel",r.textContent=await async function(){try{return(await Promise.resolve().then((function(){return kh}))).default}catch{return bs("./src/core/dfn-panel.runtime.js")}}(),document.body.append(r)}});const dp="rs-changelog",pp=class extends HTMLElement{constructor(){super();const e=this.getAttribute("filter"),t=e&&"function"==typeof window[e]?window[e]:()=>!0;this.props={from:this.getAttribute("from"),to:this.getAttribute("to")||"HEAD",repo:this.getAttribute("repo"),path:this.getAttribute("path"),filter:t}}connectedCallback(){const{from:e,to:t,filter:n,repo:r,path:s}=this.props;sr.bind(this)`
|
|
1210
1441
|
<ul>
|
|
1211
|
-
${{any:
|
|
1442
|
+
${{any:hp(e,t,n,r,s).then((e=>async function(e,t){const n=await wo,r=t?`https://github.com/${t}/`:n?.repoURL;return e.map((e=>{const[t,n=null]=e.message.split(/\(#(\d+)\)/,2),s=`${r}commit/${e.hash}`,i=n&&sr` (<a href="${n?`${r}pull/${n}`:null}">#${n}</a>)`;return sr`<li><a href="${s}">${t.trim()}</a>${i}</li>`}))}(e,r))).catch((e=>ts(e.message,dp,{elements:[this],cause:e}))).finally((()=>{this.dispatchEvent(new CustomEvent("done"))})),placeholder:"Loading list of commits..."}}
|
|
1212
1443
|
</ul>
|
|
1213
|
-
`}};async function
|
|
1444
|
+
`}};async function hp(e,t,n,r,s){let i;try{const o=await wo;if(!o)throw new Error("`respecConfig.github` is not set");const a=r||o.fullName,c=new URL("commits",`${o.apiBase}/${a}/`);e&&c.searchParams.set("from",e),c.searchParams.set("to",t),s&&c.searchParams.set("path",s);const l=await fetch(c.href);if(!l.ok)throw new Error(`Request to ${c} failed with status code ${l.status}`);if(i=await l.json(),!i.length)throw new Error(`No commits between ${e}..${t}.`);i=i.filter(n)}catch(e){const t=`Error loading commits from GitHub. ${e.message}`;throw new Error(t,{cause:e})}return i}const fp=[Object.freeze({__proto__:null,element:pp,name:dp})];var mp=Object.freeze({__proto__:null,name:"core/custom-elements/index",run:async function(){fp.forEach((e=>{customElements.define(e.name,e.element)}));const e=fp.map((e=>e.name)).join(", "),t=[...document.querySelectorAll(e)].map((e=>new Promise((t=>e.addEventListener("done",t,{once:!0})))));await Promise.all(t)}});var gp=Object.freeze({__proto__:null,name:"core/web-monetization",run:function(e){if(!1===e.monetization)return;const{monetization:t}=e,{removeOnSave:n,paymentPointer:r}=function(e){const t={paymentPointer:"$respec.org",removeOnSave:!0};switch(typeof e){case"string":t.paymentPointer=e;break;case"object":e.paymentPointer&&(t.paymentPointer=String(e.paymentPointer)),!1===e.removeOnSave&&(t.removeOnSave=!1)}return t}(t),s=n?"removeOnSave":null;document.head.append(sr`<meta
|
|
1214
1445
|
name="monetization"
|
|
1215
1446
|
content="${r}"
|
|
1216
1447
|
class="${s}"
|
|
1217
|
-
/>`)}});var
|
|
1448
|
+
/>`)}});var bp=Object.freeze({__proto__:null,name:"core/dfn-contract",run:function(){!function(){const e=document.querySelectorAll("dfn:is([data-dfn-type=''],:not([data-dfn-type]))");for(const t of e)t.dataset.dfnType="dfn";const t=document.querySelectorAll("dfn:not([data-noexport], [data-export], [data-dfn-type='dfn'], [data-cite])");for(const e of t)e.dataset.export=""}(),function(){const e=document.querySelectorAll("dl.definitions dt:has(dfn[data-dfn-type])");for(const t of e){const e=t.querySelector("dfn[data-dfn-type]").id,n=t.nextElementSibling;n&&!n.dataset.defines&&e&&(n.dataset.defines=`#${e}`)}const t=document.querySelectorAll(".definition:has(dfn[data-dfn-type])");for(const e of t){const t=e.querySelector("dfn[data-dfn-type]");t.id&&!e.dataset.defines&&(e.dataset.defines=`#${t.id}`)}}()}});const yp="core/before-save";var wp=Object.freeze({__proto__:null,name:yp,run:function(e){if(e.beforeSave)if(Array.isArray(e.beforeSave)&&!e.beforeSave.some((e=>"function"!=typeof e||"AsyncFunction"===e.constructor.name)))ps("beforesave",(t=>{!function(e,t){let n=0;for(const r of e)try{r(t)}catch(e){ts(cs`Function ${r.name?`\`${r.name}\``:`at position ${n}`}\` threw an error during processing of ${"[beforeSave]"}.`,yp,{hint:"See developer console.",cause:e})}finally{n++}}(e.beforeSave,t.ownerDocument)}),{once:!0});else{ts(cs`${"[beforeSave]"} configuration option must be an array of synchronous JS functions.`,yp)}}});const vp="core/linter-rules/check-charset",kp=Nr({en:{msg:"Document must only contain one `<meta>` tag with charset set to 'utf-8'",hint:'Add this line in your document `<head>` section - `<meta charset="utf-8">` or set charset to "utf-8" if not set already.'},zh:{msg:"文档只能包含一个 charset 属性为 utf-8 的 `<meta>` 标签",hint:'将此行添加到文档的 `<head>` 部分—— `<meta charset="utf-8">` 或将 charset 设置为 utf-8(如果尚未设置)。'},cs:{msg:"Dokument smí obsahovat pouze jeden tag `<meta>` s charset nastaveným na 'utf-8'",hint:'Přidejte tento řádek do sekce `<head>` vašeho dokumentu - `<meta charset="utf-8">` nebo nastavte charset na "utf-8", pokud ještě není nastaven.'}});var $p=Object.freeze({__proto__:null,name:vp,run:function(e){if(!e.lint?.["check-charset"])return;const t=document.querySelectorAll("meta[charset]"),n=[];for(const e of t)n.push((e.getAttribute("charset")??"").trim().toLowerCase());n.includes("utf-8")&&1===t.length||ns(kp.msg,vp,{hint:kp.hint,elements:[...t]})}});const xp="core/linter-rules/check-punctuation",Cp=[".",":","!","?"],Sp=Cp.map((e=>`"${e}"`)).join(", "),_p=Nr({en:{msg:"`p` elements should end with a punctuation mark.",hint:`Please make sure \`p\` elements end with one of: ${Sp}.`},cs:{msg:"Elementy `p` by měly končit interpunkčním znaménkem.",hint:`Ujistěte se, že elementy \`p\` končí jedním z těchto znaků: ${Sp}.`}});var Tp=Object.freeze({__proto__:null,name:xp,run:function(e){if(!e.lint?.["check-punctuation"])return;const t=new RegExp(`[${Cp.join("")}\\]]$|^ *$`,"m"),n=[...document.querySelectorAll("p:not(#back-to-top,#w3c-state)")].filter((e=>!t.test(e.textContent.trim())));n.length&&ns(_p.msg,xp,{hint:_p.hint,elements:n})}});const Rp="core/linter-rules/check-internal-slots",Ep=Nr({en:{msg:"Internal slots should be preceded by a '.'",hint:"Add a '.' between the elements mentioned."},cs:{msg:"Interní sloty by měly být uvedeny s tečkou '.' před názvem",hint:"Přidejte tečku '.' mezi uvedené prvky."}});var Lp=Object.freeze({__proto__:null,name:Rp,run:function(e){if(!e.lint?.["check-internal-slots"])return;const t=[...document.querySelectorAll("var+a")].filter((e=>{const t=e.previousSibling?.nodeName;return"VAR"===t}));t.length&&ns(Ep.msg,Rp,{hint:Ep.hint,elements:t})}});const Ap="core/linter-rules/local-refs-exist",Pp=Nr({en:{msg:"Broken local reference found in document.",hint:"Please fix the links mentioned."},cs:{msg:"V dokumentu byla nalezena nefunkční lokální reference.",hint:"Opravte prosím uvedené odkazy."}});function Np(e){const t=e.getAttribute("href")?.substring(1);if(!t)return;const n=e.ownerDocument;return!n.getElementById(t)&&!n.getElementsByName(t).length}var Ip=Object.freeze({__proto__:null,name:Ap,run:function(e){if(!e.lint?.["local-refs-exist"])return;const t=[...document.querySelectorAll("a[href^='#']")].filter(Np);t.length&&ns(Pp.msg,Ap,{hint:Pp.hint,elements:t})}});const Dp="core/linter-rules/no-captionless-tables",Op=Nr({en:{msg:"All tables marked with class='numbered' must start with a caption element.",hint:"Add a `caption` to the offending table."},cs:{msg:"Všechny tabulky označené class='numbered' musí začínat elementem caption.",hint:"Přidejte k dané tabulce element `caption`."}});var jp=Object.freeze({__proto__:null,name:Dp,run:function(e){if(!e.lint?.["no-captionless-tables"])return;const t=[...document.querySelectorAll("table.numbered")].filter((e=>!(e.firstElementChild instanceof HTMLTableCaptionElement)));t.length&&ns(Op.msg,Dp,{hint:Op.hint,elements:t})}});const zp="no-unused-dfns",Mp="core/linter-rules/no-unused-dfns",Up=Nr({en:{msg:e=>`Found definition for "${e}", but nothing links to it. This is usually a spec bug!`,get hint(){return cs`
|
|
1218
1449
|
You can do one of the following...
|
|
1219
1450
|
|
|
1220
1451
|
* Add a \`class="lint-ignore"\` attribute the definition.
|
|
1221
1452
|
* Either remove the definition or change \`<dfn>\` to another type of HTML element.
|
|
1222
1453
|
* If you meant to ${"[export|#data-export]"} the definition, add \`class="export"\` to the definition.
|
|
1223
1454
|
|
|
1224
|
-
To silence this warning entirely, set \`lint: { "no-unused-dfns": false }\` in your \`respecConfig\`.`}},cs:{msg:e=>`Nalezena definice pro "${e}", ale nic na ni neodkazuje. Toto je obvykle chyba ve specifikaci!`,get hint(){return
|
|
1455
|
+
To silence this warning entirely, set \`lint: { "no-unused-dfns": false }\` in your \`respecConfig\`.`}},cs:{msg:e=>`Nalezena definice pro "${e}", ale nic na ni neodkazuje. Toto je obvykle chyba ve specifikaci!`,get hint(){return cs`
|
|
1225
1456
|
Můžete udělat jedno z následujícího...
|
|
1226
1457
|
|
|
1227
1458
|
* Přidejte k definici atribut \`class="lint-ignore"\`.
|
|
1228
1459
|
* Definici buď odstraňte, nebo změňte \`<dfn>\` na jiný typ HTML elementu.
|
|
1229
1460
|
* Pokud jste chtěli ${"[export|#data-export]"} tuto definici, přidejte k ní \`class="export"\`.
|
|
1230
1461
|
|
|
1231
|
-
Pro úplné potlačení tohoto varování nastavte \`lint: { "no-unused-dfns": false }\` ve vaší \`respecConfig\`.`}}});function
|
|
1462
|
+
Pro úplné potlačení tohoto varování nastavte \`lint: { "no-unused-dfns": false }\` ve vaší \`respecConfig\`.`}}});function qp(e){return!document.querySelector(`a[href="#${e.id}"]:not(.index-term, .self-link)`)}var Wp=Object.freeze({__proto__:null,name:Mp,run:function(e){if(!e.lint?.[zp])return;const t="error"===e.lint[zp]?ts:ns;[...document.querySelectorAll("dfn:not(.lint-ignore, [data-export], [data-cite])")].filter(qp).forEach((e=>{const n=[e],r=Pr(e.textContent);t(Up.msg(r),Mp,{elements:n,hint:Up.hint})}))}});const Fp="core/linter-rules/no-headingless-sections",Bp=Nr({en:{msg:"All sections must start with a `h2-6` element.",hint:"Add a `h2-6` to the offending section or use a `<div>`."},nl:{msg:"Alle secties moeten beginnen met een `h2-6` element.",hint:"Voeg een `h2-6` toe aan de conflicterende sectie of gebruik een `<div>`."},zh:{msg:"所有章节(section)都必须以 `h2-6` 元素开头。",hint:"将 `h2-6` 添加到有问题的章节或使用 `<div>`。"},cs:{msg:"Všechny sekce musí začínat elementem `h2-6`.",hint:"Přidejte do problematické sekce `h2-6` nebo použijte `<div>`."}});var Hp=Object.freeze({__proto__:null,name:Fp,run:function(e){if(!e.lint?.["no-headingless-sections"])return;const t=[...document.querySelectorAll("section:not(.head,#abstract,#sotd)")].filter((({firstElementChild:e})=>!e||!(e.matches(".header-wrapper")||e instanceof HTMLHeadingElement)));t.length&&ns(Bp.msg,Fp,{hint:Bp.hint,elements:t})}});const Gp="core/linter-rules/no-unused-vars",Vp=Nr({en:{msg:"Variable was defined, but never used.",hint:"Add a `data-ignore-unused` attribute to the `<var>`."},cs:{msg:"Proměnná byla definována, ale nikdy nebyla použita.",hint:"Přidejte atribut `data-ignore-unused` k elementu `<var>`."}});var Jp=Object.freeze({__proto__:null,name:Gp,run:function(e){if(!e.lint?.["no-unused-vars"])return;const t=[],n=e=>!!e.querySelector(":scope > :not(section) ~ .algorithm, :scope > :not(section) .algorithm");for(const e of document.querySelectorAll("section")){if(!n(e))continue;const r=e.querySelectorAll(":scope > :not(section) var");if(!r.length)continue;const s=new Map;for(const e of r){const t=Pr(e.textContent),n=s.get(t)||s.set(t,[]).get(t);n?.push(e)}for(const e of s.values())1!==e.length||e[0].hasAttribute("data-ignore-unused")||t.push(e[0])}t.length&&ns(Vp.msg,Gp,{hint:Vp.hint,elements:t})}});const Kp="no-dfn-in-abstract",Zp=`core/linter-rules/${Kp}`,Yp=Nr({en:{msg:e=>`Definition \`${e}\` is in an unnumbered section (e.g. abstract or SotD).`,get hint(){return cs`Definitions in unnumbered sections (abstract, SotD) are semantically out of place and appear in the terms index without a section number. Move this definition to a numbered section such as "Terminology". See ${"[export|#data-export]"}.`}}}),Xp=["section#abstract","section#sotd","section.introductory"].join(", ");var Qp=Object.freeze({__proto__:null,name:Zp,run:function(e){if(!e.lint?.[Kp])return;const t=[...document.querySelectorAll("dfn")].filter((e=>e.closest(Xp)));t.forEach((e=>{const t=Pr(e.textContent);ns(Yp.msg(t),Zp,{hint:Yp.hint,elements:[e]})}))}});const eh="required-sections",th="w3c/linter-rules/required-sections",nh={en:{msg:e=>`W3C Recommendation track documents require a separate "${e}" section.`,hint:e=>cs`Add a \`<section>\` with a "${e}" header. See the [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
|
|
1232
1463
|
If the document is not intended for the W3C Recommendation track, set ${"[noRecTrack]"} to \`true\`
|
|
1233
|
-
or turn off the ${`[${
|
|
1464
|
+
or turn off the ${`[${eh}]`} linter rule.`,privacy_considerations:"Privacy Considerations",security_considerations:"Security Considerations"},es:{msg:e=>`Documentos que van a ser "W3C Recommendation" requieren una sección "${e}" separada.`,hint:e=>cs`Agrega una \`<section>\` con título "${e}". Ver los [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
|
|
1234
1465
|
Si el documento no está destinado a ser un W3C Recommendation, puedes poner ${"[noRecTrack]"} a \`true\`
|
|
1235
|
-
o apaga la regla de linter ${`[${
|
|
1466
|
+
o apaga la regla de linter ${`[${eh}]`}.`,privacy_considerations:"Consideraciones de privacidad",security_considerations:"Consideraciones de Seguridad"},cs:{msg:e=>`Dokumenty na "W3C Recommendation track" vyžadují samostatnou sekci "${e}".`,hint:e=>cs`Přidejte \`<section>\` s nadpisem "${e}". Viz [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
|
|
1236
1467
|
Pokud dokument není určen pro "W3C Recommendation track", nastavte ${"[noRecTrack]"} na \`true\`
|
|
1237
|
-
nebo vypněte linter pravidlo ${`[${
|
|
1238
|
-
`,privacy_considerations:"Zásady ochrany soukromí",security_considerations:"Zásady bezpečnosti"}},
|
|
1468
|
+
nebo vypněte linter pravidlo ${`[${eh}]`}.
|
|
1469
|
+
`,privacy_considerations:"Zásady ochrany soukromí",security_considerations:"Zásady bezpečnosti"}},rh=Nr(nh),sh=new Set([...Ui]);sh.delete("DISC"),Mi.forEach((e=>sh.delete(e)));var ih=Object.freeze({__proto__:null,name:th,requiresSomeSectionStatus:sh,run:function(e){if(!e.lint?.[eh])return;if(!Ir(nh,"privacy_considerations")){return void ns("Cannot check for required sections as translations are not available.",th,{hint:"File an issue to add translations or use a supported language."})}if(e.noRecTrack||!sh.has(e.specStatus))return;const t="error"===e.lint[eh]?ts:ns,n=new Kr([rh.privacy_considerations,rh.security_considerations]),r=document.querySelectorAll("h2, h3, h4, h5, h6");for(const e of r){const t=e.cloneNode(!0);t.querySelectorAll("bdi")?.forEach((e=>e.remove()));const r=Pr(t.textContent);if(n.has(r)&&(n.delete(r),0===n.size))return}for(const e of n)t(rh.msg(e),th,{hint:rh.hint(e)})}});const oh="core/linter-rules/wpt-tests-exist",ah=Nr({en:{msg:"The following test could not be found in Web Platform Tests:",hint:"Check [wpt.live](https://wpt.live) to see if it was deleted or renamed."},cs:{msg:"Následující test nebyl nalezen ve Web Platform Tests:",hint:"Zkontrolujte [wpt.live](https://wpt.live), zda nebyl smazán nebo přejmenován."}});var ch=Object.freeze({__proto__:null,name:oh,run:async function(e){if(!e.lint?.["wpt-tests-exist"])return;const t=await async function(e,t){let n;try{const t=new URL(e);if(t.pathname.startsWith("/web-platform-tests/wpt/tree/master/")){const e=/web-platform-tests\/wpt\/tree\/master\/(.+)/;n=(t.pathname.match(e)?.[1]??"").replace(/\//g,"")}else n=t.pathname.replace(/\//g,"")}catch(e){return ns("Failed to parse WPT directory from testSuiteURI",`linter/${oh}`),console.error(e),null}const r=new URL("web-platform-tests/wpt/files",`${t}/`);r.searchParams.set("path",n);const s=await fetch(r);if(!s.ok){return ns(`Failed to fetch files from WPT repository. Request failed with error: ${await s.text()} (${s.status})`,`linter/${oh}`),null}const{entries:i}=await s.json(),o=i.filter((e=>!e.endsWith("/")));return new Set(o)}(e.testSuiteURI,e.githubAPI);if(!t)return;const n=[...document.querySelectorAll("[data-tests]")].filter((e=>e.dataset.tests));for(const e of n)e.dataset.tests?.split(/,/gm).map((e=>e.trim().split(/\?|#/)[0])).filter((e=>e&&!t.has(e))).map((t=>{ns(`${ah.msg} \`${t}\`.`,oh,{hint:ah.hint,elements:[e]})}))}});const lh="core/linter-rules/no-http-props",uh=Nr({en:{msg:cs`Insecure URLs are not allowed in ${"[respecConfig]"}.`,hint:"Please change the following properties to 'https://': "},zh:{msg:cs`${"[respecConfig]"} 中不允许使用不安全的URL.`,hint:"请将以下属性更改为 https://:"},cs:{msg:cs`V ${"[respecConfig]"} nejsou povoleny nezabezpečené URL adresy.`,hint:"Změňte prosím následující vlastnosti na 'https://': "}});var dh=Object.freeze({__proto__:null,name:lh,run:function(e){if(!e.lint?.["no-http-props"])return;if(!parent.location.href.startsWith("http"))return;const t=Object.getOwnPropertyNames(e).filter((t=>t.endsWith("URI")&&e[t]||"prevED"===t)).filter((t=>new URL(e[t],parent.location.href).href.startsWith("http://")));if(t.length){const e=Er(t,(e=>cs`${`[${e}]`}`));ns(uh.msg,lh,{hint:uh.hint+e})}}});const ph="core/linter-rules/a11y",hh=["color-contrast","landmark-one-main","landmark-unique","region"];function fh(e){const t=[];for(const n of e.split("\n\n")){const[e,...r]=n.split(/^\s{2}/m),s=r.map((e=>`- ${e.trimEnd()}`)).join("\n");t.push(`${e}${s}`)}return t.join("\n\n")}var mh=Object.freeze({__proto__:null,name:ph,run:async function(e){if(!e.lint?.a11y&&!e.a11y)return;const t=e.lint?.a11y||e.a11y,n=!0===t?{}:t,r=await async function(e){const{rules:t,...n}=e,r={rules:{...Object.fromEntries(hh.map((e=>[e,{enabled:!1}]))),...t},...n,elementRef:!0,resultTypes:["violations"],reporter:"v1"};let s;try{s=await function(){const e=document.createElement("script");return e.classList.add("remove"),e.src="https://cdn.jsdelivr.net/npm/axe-core@4/axe.min.js",document.head.appendChild(e),new Promise(((t,n)=>{e.onload=()=>t(window.axe),e.onerror=n}))}()}catch(e){return ts("Failed to load a11y linter.",ph),console.error(e),[]}try{const e=await(s?.run(document,r));return e?.violations??[]}catch(e){return ts("Error while looking for a11y issues.",ph),console.error(e),[]}}(n);for(const e of r){const t=new Map;for(const n of e.nodes){const{failureSummary:e,element:r}=n,s=t.get(e)||t.set(e,[]).get(e);s?.push(r)}const{id:n,help:r,description:s,helpUrl:i}=e,o=`a11y/${n}: ${r}.`;for(const[e,n]of t){const t=fh(e);ns(o,ph,{details:`\n\n${s}.\n\n${t}. ([Learn more](${i}))`,elements:n})}}}});const gh="informative-dfn",bh="core/linter-rules/informative-dfn",yh=Nr({en:{msg:(e,t)=>`Normative reference to "${e}" found but term is defined "informatively" in "${t}".`,get hint(){return cs`
|
|
1239
1470
|
You can do one of the following...
|
|
1240
1471
|
|
|
1241
1472
|
* Get the source definition to be made normative
|
|
1242
1473
|
* Add a \`class="lint-ignore"\` attribute to the link.
|
|
1243
1474
|
* Use a local normative proxy for the definition à la \`<dfn data-cite="spec">term</dfn>\`
|
|
1244
1475
|
|
|
1245
|
-
To silence this warning entirely, set \`lint: { "${
|
|
1476
|
+
To silence this warning entirely, set \`lint: { "${gh}": false }\` in your \`respecConfig\`.`}},cs:{msg:(e,t)=>`Nalezen normativní odkaz na "${e}", ale pojem je definován pouze informativně v "${t}".`,get hint(){return cs`
|
|
1246
1477
|
Můžete udělat jedno z následujícího...
|
|
1247
1478
|
|
|
1248
1479
|
* Požádejte o to, aby zdrojová definice byla normativní
|
|
1249
1480
|
* Přidejte atribut \`class=\"lint-ignore\"\` k odkazu.
|
|
1250
1481
|
* Použijte lokální normativní proxy pro definici, např. \`<dfn data-cite=\"spec\">term</dfn>\`
|
|
1251
1482
|
|
|
1252
|
-
Pro úplné potlačení tohoto varování nastavte \`lint: { \"${jd}\": false }\` ve vaší \`respecConfig\`.`}}});var qd=Object.freeze({__proto__:null,name:Od,run:function(e){if(!e.lint?.[jd])return;const t="error"===e.lint[jd]?fr:mr;Ec.forEach((({term:e,spec:n,element:r})=>{r.classList.contains("lint-ignore")||t(zd.msg(e,n),Od,{title:"Normative reference to non-normative term.",elements:[r],hint:zd.hint})}))}}),Md=Object.freeze({__proto__:null,default:'// ReSpec Worker v1.0.0\n"use strict";\n// hljs is either inlined by core/worker.js (preferred) or loaded below via\n// importScripts as a fallback when the inline fetch was not possible.\nif (typeof self.hljs === "undefined" && self.RESPEC_HIGHLIGHT_URL) {\n try {\n importScripts(self.RESPEC_HIGHLIGHT_URL);\n } catch (err) {\n console.error("Network error loading highlighter", err);\n }\n}\n\nself.addEventListener("message", ({ data: originalData }) => {\n const data = Object.assign({}, originalData);\n switch (data.action) {\n case "highlight-load-lang": {\n const { langURL, propName, lang } = data;\n importScripts(langURL);\n self.hljs.registerLanguage(lang, self[propName]);\n break;\n }\n case "highlight": {\n const { code } = data;\n const langs = data.languages.length ? data.languages : undefined;\n try {\n const { value, language } = self.hljs.highlightAuto(code, langs);\n Object.assign(data, { value, language });\n } catch (err) {\n console.error("Could not transform some code?", err);\n // Post back the original code\n Object.assign(data, { value: code, language: "" });\n }\n break;\n }\n }\n self.postMessage(data);\n});\n'}),Ud=Object.freeze({__proto__:null,default:'(() => {\n// @ts-check\n\nif (document.respec) {\n document.respec.ready.then(setupVarHighlighter);\n} else {\n setupVarHighlighter();\n}\n\nfunction setupVarHighlighter() {\n document\n .querySelectorAll("var")\n .forEach(varElem => varElem.addEventListener("click", highlightListener));\n}\n\nfunction highlightListener(ev) {\n ev.stopPropagation();\n const { target: varElem } = ev;\n const hightligtedElems = highlightVars(varElem);\n const resetListener = () => {\n const hlColor = getHighlightColor(varElem);\n hightligtedElems.forEach(el => removeHighlight(el, hlColor));\n [...HL_COLORS.keys()].forEach(key => HL_COLORS.set(key, true));\n };\n if (hightligtedElems.length) {\n document.body.addEventListener("click", resetListener, { once: true });\n }\n}\n\n// availability of highlight colors. colors from var.css\nconst HL_COLORS = new Map([\n ["respec-hl-c1", true],\n ["respec-hl-c2", true],\n ["respec-hl-c3", true],\n ["respec-hl-c4", true],\n ["respec-hl-c5", true],\n ["respec-hl-c6", true],\n ["respec-hl-c7", true],\n]);\n\nfunction getHighlightColor(target) {\n // return current colors if applicable\n const { value } = target.classList;\n const re = /respec-hl-\\w+/;\n const activeClass = re.test(value) && value.match(re);\n if (activeClass) return activeClass[0];\n\n // first color preference\n if (HL_COLORS.get("respec-hl-c1") === true) return "respec-hl-c1";\n\n // otherwise get some other available color\n return [...HL_COLORS.keys()].find(c => HL_COLORS.get(c)) || "respec-hl-c1";\n}\n\nfunction highlightVars(varElem) {\n const textContent = norm(varElem.textContent);\n const parent = varElem.closest(".algorithm, section");\n const highlightColor = getHighlightColor(varElem);\n\n const varsToHighlight = [...parent.querySelectorAll("var")].filter(\n el =>\n norm(el.textContent) === textContent &&\n el.closest(".algorithm, section") === parent\n );\n\n // update availability of highlight color\n const colorStatus = varsToHighlight[0].classList.contains("respec-hl");\n HL_COLORS.set(highlightColor, colorStatus);\n\n // highlight vars\n if (colorStatus) {\n varsToHighlight.forEach(el => removeHighlight(el, highlightColor));\n return [];\n } else {\n varsToHighlight.forEach(el => addHighlight(el, highlightColor));\n }\n return varsToHighlight;\n}\n\nfunction removeHighlight(el, highlightColor) {\n el.classList.remove("respec-hl", highlightColor);\n // clean up empty class attributes so they don\'t come in export\n if (!el.classList.length) el.removeAttribute("class");\n}\n\nfunction addHighlight(elem, highlightColor) {\n elem.classList.add("respec-hl", highlightColor);\n}\n\n/**\n * Same as `norm` from src/core/utils, but our build process doesn\'t allow\n * imports in runtime scripts, so duplicated here.\n * @param {string} str\n */\nfunction norm(str) {\n return str.trim().replace(/\\s+/g, " ");\n}\n})()'}),Wd=Object.freeze({__proto__:null,default:'(() => {\n// @ts-check\nif (document.respec) {\n document.respec.ready.then(setupPanel);\n} else {\n setupPanel();\n}\n\nfunction setupPanel() {\n const listener = panelListener();\n document.body.addEventListener("keydown", listener);\n document.body.addEventListener("click", listener);\n}\n\nfunction panelListener() {\n /** @type {HTMLElement} */\n let panel = null;\n return event => {\n const { target, type } = event;\n\n if (!(target instanceof HTMLElement)) return;\n\n // For keys, we only care about Enter key to activate the panel\n // otherwise it\'s activated via a click.\n if (type === "keydown" && event.key !== "Enter") return;\n\n const action = deriveAction(event);\n\n switch (action) {\n case "show": {\n hidePanel(panel);\n /** @type {HTMLElement} */\n const dfn = target.closest("dfn, .index-term");\n panel = document.getElementById(`dfn-panel-for-${dfn.id}`);\n const coords = deriveCoordinates(event);\n displayPanel(dfn, panel, coords);\n break;\n }\n case "dock": {\n panel.style.left = null;\n panel.style.top = null;\n panel.classList.add("docked");\n break;\n }\n case "hide": {\n hidePanel(panel);\n panel = null;\n break;\n }\n }\n };\n}\n\n/**\n * @param {MouseEvent|KeyboardEvent} event\n */\nfunction deriveCoordinates(event) {\n const target = /** @type HTMLElement */ (event.target);\n\n // We prevent synthetic AT clicks from putting\n // the dialog in a weird place. The AT events sometimes\n // lack coordinates, so they have clientX/Y = 0\n const rect = target.getBoundingClientRect();\n if (\n event instanceof MouseEvent &&\n event.clientX >= rect.left &&\n event.clientY >= rect.top\n ) {\n // The event probably happened inside the bounding rect...\n return { x: event.clientX, y: event.clientY };\n }\n\n // Offset to the middle of the element\n const x = rect.x + rect.width / 2;\n // Placed at the bottom of the element\n const y = rect.y + rect.height;\n return { x, y };\n}\n\n/**\n * @param {Event} event\n */\nfunction deriveAction(event) {\n const target = /** @type {HTMLElement} */ (event.target);\n const hitALink = !!target.closest("a");\n if (target.closest("dfn:not([data-cite]), .index-term")) {\n return hitALink ? "none" : "show";\n }\n if (target.closest(".dfn-panel")) {\n if (hitALink) {\n return target.classList.contains("self-link") ? "hide" : "dock";\n }\n const panel = target.closest(".dfn-panel");\n return panel.classList.contains("docked") ? "hide" : "none";\n }\n if (document.querySelector(".dfn-panel:not([hidden])")) {\n return "hide";\n }\n return "none";\n}\n\n/**\n * @param {HTMLElement} dfn\n * @param {HTMLElement} panel\n * @param {{ x: number, y: number }} clickPosition\n */\nfunction displayPanel(dfn, panel, { x, y }) {\n panel.hidden = false;\n // distance (px) between edge of panel and the pointing triangle (caret)\n const MARGIN = 20;\n\n const dfnRects = dfn.getClientRects();\n // Find the `top` offset when the `dfn` can be spread across multiple lines\n let closestTop = 0;\n let minDiff = Infinity;\n for (const rect of dfnRects) {\n const { top, bottom } = rect;\n const diffFromClickY = Math.abs((top + bottom) / 2 - y);\n if (diffFromClickY < minDiff) {\n minDiff = diffFromClickY;\n closestTop = top;\n }\n }\n\n const top = window.scrollY + closestTop + dfnRects[0].height;\n const left = x - MARGIN;\n panel.style.left = `${left}px`;\n panel.style.top = `${top}px`;\n\n // Find if the panel is flowing out of the window\n const panelRect = panel.getBoundingClientRect();\n const SCREEN_WIDTH = Math.min(window.innerWidth, window.screen.width);\n if (panelRect.right > SCREEN_WIDTH) {\n const newLeft = Math.max(MARGIN, x + MARGIN - panelRect.width);\n const newCaretOffset = left - newLeft;\n panel.style.left = `${newLeft}px`;\n /** @type {HTMLElement} */\n const caret = panel.querySelector(".caret");\n caret.style.left = `${newCaretOffset}px`;\n }\n\n // As it\'s a dialog, we trap focus.\n // TODO: when <dialog> becomes a implemented, we should really\n // use that.\n trapFocus(panel, dfn);\n}\n\n/**\n * @param {HTMLElement} panel\n * @param {HTMLElement} dfn\n * @returns\n */\nfunction trapFocus(panel, dfn) {\n /** @type NodeListOf<HTMLAnchorElement> elements */\n const anchors = panel.querySelectorAll("a[href]");\n // No need to trap focus\n if (!anchors.length) return;\n\n // Move focus to first anchor element\n const first = anchors.item(0);\n first.focus();\n\n const trapListener = createTrapListener(anchors, panel, dfn);\n panel.addEventListener("keydown", trapListener);\n\n // Hiding the panel releases the trap\n const mo = new MutationObserver(records => {\n const [record] = records;\n const target = /** @type HTMLElement */ (record.target);\n if (target.hidden) {\n panel.removeEventListener("keydown", trapListener);\n mo.disconnect();\n }\n });\n mo.observe(panel, { attributes: true, attributeFilter: ["hidden"] });\n}\n\n/**\n *\n * @param {NodeListOf<HTMLAnchorElement>} anchors\n * @param {HTMLElement} panel\n * @param {HTMLElement} dfn\n * @returns\n */\nfunction createTrapListener(anchors, panel, dfn) {\n const lastIndex = anchors.length - 1;\n let currentIndex = 0;\n return event => {\n switch (event.key) {\n // Hitting "Tab" traps us in a nice loop around elements.\n case "Tab": {\n event.preventDefault();\n currentIndex += event.shiftKey ? -1 : +1;\n if (currentIndex < 0) {\n currentIndex = lastIndex;\n } else if (currentIndex > lastIndex) {\n currentIndex = 0;\n }\n anchors.item(currentIndex).focus();\n break;\n }\n\n // Hitting "Enter" on an anchor releases the trap.\n case "Enter":\n hidePanel(panel);\n break;\n\n // Hitting "Escape" returns focus to dfn.\n case "Escape":\n hidePanel(panel);\n dfn.focus();\n return;\n }\n };\n}\n\n/** @param {HTMLElement} panel */\nfunction hidePanel(panel) {\n if (!panel) return;\n panel.hidden = true;\n panel.classList.remove("docked");\n}\n})()'})}();
|
|
1483
|
+
Pro úplné potlačení tohoto varování nastavte \`lint: { \"${gh}\": false }\` ve vaší \`respecConfig\`.`}}});var wh=Object.freeze({__proto__:null,name:bh,run:function(e){if(!e.lint?.[gh])return;const t="error"===e.lint[gh]?ts:ns;Wl.forEach((({term:e,spec:n,element:r})=>{r.classList.contains("lint-ignore")||t(yh.msg(e,n),bh,{title:"Normative reference to non-normative term.",elements:[r],hint:yh.hint})}))}}),vh=Object.freeze({__proto__:null,default:'(() => {\n// @ts-check\n\nif (document.respec) {\n document.respec.ready.then(setupVarHighlighter);\n} else {\n setupVarHighlighter();\n}\n\nfunction setupVarHighlighter() {\n document\n .querySelectorAll("var")\n .forEach(varElem => varElem.addEventListener("click", highlightListener));\n}\n\n/**\n * @param {MouseEvent} ev\n */\nfunction highlightListener(ev) {\n ev.stopPropagation();\n const varElem = /** @type {HTMLElement} */ (ev.target);\n const hightligtedElems = highlightVars(varElem);\n const resetListener = () => {\n const hlColor = getHighlightColor(varElem);\n hightligtedElems.forEach(el => removeHighlight(el, hlColor));\n [...HL_COLORS.keys()].forEach(key => HL_COLORS.set(key, true));\n };\n if (hightligtedElems.length) {\n document.body.addEventListener("click", resetListener, { once: true });\n }\n}\n\n// availability of highlight colors. colors from var.css\nconst HL_COLORS = new Map([\n ["respec-hl-c1", true],\n ["respec-hl-c2", true],\n ["respec-hl-c3", true],\n ["respec-hl-c4", true],\n ["respec-hl-c5", true],\n ["respec-hl-c6", true],\n ["respec-hl-c7", true],\n]);\n\n/**\n * @param {HTMLElement} target\n */\nfunction getHighlightColor(target) {\n // return current colors if applicable\n const { value } = target.classList;\n const re = /respec-hl-\\w+/;\n const activeClass = re.test(value) && value.match(re);\n if (activeClass) return activeClass[0];\n\n // first color preference\n if (HL_COLORS.get("respec-hl-c1") === true) return "respec-hl-c1";\n\n // otherwise get some other available color\n return HL_COLORS.keys().find(c => HL_COLORS.get(c)) || "respec-hl-c1";\n}\n\n/**\n * @param {HTMLElement} varElem\n */\nfunction highlightVars(varElem) {\n const textContent = norm(varElem.textContent);\n const parent = /** @type {HTMLElement} */ (\n varElem.closest(".algorithm, section")\n );\n if (!parent) return [];\n const highlightColor = getHighlightColor(varElem);\n\n const varsToHighlight = [...parent.querySelectorAll("var")].filter(\n el =>\n norm(el.textContent) === textContent &&\n el.closest(".algorithm, section") === parent\n );\n\n // update availability of highlight color\n const colorStatus = varsToHighlight[0].classList.contains("respec-hl");\n HL_COLORS.set(highlightColor, colorStatus);\n\n // highlight vars\n if (colorStatus) {\n varsToHighlight.forEach(el => removeHighlight(el, highlightColor));\n return [];\n } else {\n varsToHighlight.forEach(el => addHighlight(el, highlightColor));\n }\n return varsToHighlight;\n}\n\n/**\n * @param {HTMLElement} el\n * @param {string} highlightColor\n */\nfunction removeHighlight(el, highlightColor) {\n el.classList.remove("respec-hl", highlightColor);\n // clean up empty class attributes so they don\'t come in export\n if (!el.classList.length) el.removeAttribute("class");\n}\n\n/**\n * @param {HTMLElement} elem\n * @param {string} highlightColor\n */\nfunction addHighlight(elem, highlightColor) {\n elem.classList.add("respec-hl", highlightColor);\n}\n\n/**\n * Same as `norm` from src/core/utils, but our build process doesn\'t allow\n * imports in runtime scripts, so duplicated here.\n * @param {string} str\n */\nfunction norm(str) {\n return str.trim().replace(/\\s+/g, " ");\n}\n})()'}),kh=Object.freeze({__proto__:null,default:'(() => {\n// @ts-check\nif (document.respec) {\n document.respec.ready.then(setupPanel);\n} else {\n setupPanel();\n}\n\nfunction setupPanel() {\n const listener = panelListener();\n document.body.addEventListener("keydown", listener);\n document.body.addEventListener("click", listener);\n}\n\nfunction panelListener() {\n /** @type {HTMLElement | null} */\n let panel = null;\n /**\n * @param {KeyboardEvent|MouseEvent} event\n */\n return event => {\n const { target, type } = event;\n\n if (!(target instanceof HTMLElement)) return;\n\n // For keys, we only care about Enter key to activate the panel\n // otherwise it\'s activated via a click.\n if (\n type === "keydown" &&\n /** @type {KeyboardEvent} */ (event).key !== "Enter"\n )\n return;\n\n const action = deriveAction(event);\n\n switch (action) {\n case "show": {\n hidePanel(panel);\n /** @type {HTMLElement | null} */\n const dfn = target.closest("dfn, .index-term");\n if (!dfn?.id) break;\n panel = document.getElementById(`dfn-panel-for-${dfn.id}`);\n if (!panel) break;\n const coords = deriveCoordinates(\n /** @type {MouseEvent|KeyboardEvent} */ (event)\n );\n displayPanel(dfn, panel, coords);\n break;\n }\n case "dock": {\n if (panel) {\n panel.style.left = "";\n panel.style.top = "";\n panel.classList.add("docked");\n }\n break;\n }\n case "hide": {\n hidePanel(panel);\n panel = null;\n break;\n }\n }\n };\n}\n\n/**\n * @param {MouseEvent|KeyboardEvent} event\n */\nfunction deriveCoordinates(event) {\n const target = /** @type HTMLElement */ (event.target);\n\n // We prevent synthetic AT clicks from putting\n // the dialog in a weird place. The AT events sometimes\n // lack coordinates, so they have clientX/Y = 0\n const rect = target.getBoundingClientRect();\n if (\n event instanceof MouseEvent &&\n event.clientX >= rect.left &&\n event.clientY >= rect.top\n ) {\n // The event probably happened inside the bounding rect...\n return { x: event.clientX, y: event.clientY };\n }\n\n // Offset to the middle of the element\n const x = rect.x + rect.width / 2;\n // Placed at the bottom of the element\n const y = rect.y + rect.height;\n return { x, y };\n}\n\n/**\n * @param {Event} event\n */\nfunction deriveAction(event) {\n const target = /** @type {HTMLElement} */ (event.target);\n const hitALink = !!target.closest("a");\n if (target.closest("dfn:not([data-cite]), .index-term")) {\n return hitALink ? "none" : "show";\n }\n if (target.closest(".dfn-panel")) {\n if (hitALink) {\n return target.classList.contains("self-link") ? "hide" : "dock";\n }\n\n const panel = /** @type {HTMLElement} */ (target.closest(".dfn-panel"));\n return panel.classList.contains("docked") ? "hide" : "none";\n }\n if (document.querySelector(".dfn-panel:not([hidden])")) {\n return "hide";\n }\n return "none";\n}\n\n/**\n * @param {HTMLElement} dfn\n * @param {HTMLElement} panel\n * @param {{ x: number, y: number }} clickPosition\n */\nfunction displayPanel(dfn, panel, { x, y }) {\n panel.hidden = false;\n // distance (px) between edge of panel and the pointing triangle (caret)\n const MARGIN = 20;\n\n const dfnRects = dfn.getClientRects();\n // Find the `top` offset when the `dfn` can be spread across multiple lines\n let closestTop = 0;\n let minDiff = Infinity;\n for (const rect of dfnRects) {\n const { top, bottom } = rect;\n const diffFromClickY = Math.abs((top + bottom) / 2 - y);\n if (diffFromClickY < minDiff) {\n minDiff = diffFromClickY;\n closestTop = top;\n }\n }\n\n const top = window.scrollY + closestTop + dfnRects[0].height;\n const left = x - MARGIN;\n panel.style.left = `${left}px`;\n panel.style.top = `${top}px`;\n\n // Find if the panel is flowing out of the window\n const panelRect = panel.getBoundingClientRect();\n const SCREEN_WIDTH = Math.min(window.innerWidth, window.screen.width);\n if (panelRect.right > SCREEN_WIDTH) {\n const newLeft = Math.max(MARGIN, x + MARGIN - panelRect.width);\n const newCaretOffset = left - newLeft;\n panel.style.left = `${newLeft}px`;\n /** @type {HTMLElement | null} */\n const caret = panel.querySelector(".caret");\n if (caret) caret.style.left = `${newCaretOffset}px`;\n }\n\n // As it\'s a dialog, we trap focus.\n // TODO: when <dialog> becomes a implemented, we should really\n // use that.\n trapFocus(panel, dfn);\n}\n\n/**\n * @param {HTMLElement} panel\n * @param {HTMLElement} dfn\n * @returns\n */\nfunction trapFocus(panel, dfn) {\n /** @type NodeListOf<HTMLAnchorElement> elements */\n const anchors = panel.querySelectorAll("a[href]");\n // No need to trap focus\n if (!anchors.length) return;\n\n // Move focus to first anchor element\n const first = anchors.item(0);\n first.focus();\n\n const trapListener = createTrapListener(anchors, panel, dfn);\n panel.addEventListener("keydown", trapListener);\n\n // Hiding the panel releases the trap\n const mo = new MutationObserver(records => {\n const [record] = records;\n const target = /** @type HTMLElement */ (record.target);\n if (target.hidden) {\n panel.removeEventListener("keydown", trapListener);\n mo.disconnect();\n }\n });\n mo.observe(panel, { attributes: true, attributeFilter: ["hidden"] });\n}\n\n/**\n *\n * @param {NodeListOf<HTMLAnchorElement>} anchors\n * @param {HTMLElement} panel\n * @param {HTMLElement} dfn\n * @returns\n */\nfunction createTrapListener(anchors, panel, dfn) {\n const lastIndex = anchors.length - 1;\n let currentIndex = 0;\n /**\n * @param {KeyboardEvent} event\n */\n return event => {\n switch (event.key) {\n // Hitting "Tab" traps us in a nice loop around elements.\n case "Tab": {\n event.preventDefault();\n currentIndex += event.shiftKey ? -1 : +1;\n if (currentIndex < 0) {\n currentIndex = lastIndex;\n } else if (currentIndex > lastIndex) {\n currentIndex = 0;\n }\n anchors.item(currentIndex).focus();\n break;\n }\n\n // Hitting "Enter" on an anchor releases the trap.\n case "Enter":\n hidePanel(panel);\n break;\n\n // Hitting "Escape" returns focus to dfn.\n case "Escape":\n hidePanel(panel);\n dfn.focus();\n return;\n }\n };\n}\n\n/** @param {HTMLElement | null} panel */\nfunction hidePanel(panel) {\n if (!panel) return;\n panel.hidden = true;\n panel.classList.remove("docked");\n}\n})()'})}();
|
|
1253
1484
|
//# sourceMappingURL=respec-w3c.js.map
|