typegpu 0.8.0 → 0.8.2
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/{chunk-6WF2EZIT.js → chunk-6U5HPHCJ.js} +2 -2
- package/{chunk-B254XDWG.js → chunk-CGQB3SER.js} +2 -2
- package/{chunk-XEUNEHAZ.js → chunk-CRZWTZM2.js} +6 -6
- package/chunk-CRZWTZM2.js.map +1 -0
- package/chunk-ECR2EGZX.js +7 -0
- package/chunk-ECR2EGZX.js.map +1 -0
- package/chunk-PWBIFP67.js +2 -0
- package/chunk-PWBIFP67.js.map +1 -0
- package/common/index.d.ts +1 -1
- package/common/index.js +1 -1
- package/data/index.d.ts +3 -3
- package/data/index.js +1 -1
- package/index.d.ts +2 -2
- package/index.js +40 -40
- package/index.js.map +1 -1
- package/{matrix-C6mMH7pB.d.ts → matrix-DIfOiRyz.d.ts} +1 -1
- package/package.json +5 -13
- package/std/index.d.ts +2 -2
- package/std/index.js +1 -1
- package/std/index.js.map +1 -1
- package/{tgpuConstant-DzGgwe0I.d.ts → tgpuConstant-BTQFNlQH.d.ts} +13 -8
- package/chunk-A5APHF7K.cjs +0 -10
- package/chunk-A5APHF7K.cjs.map +0 -1
- package/chunk-LL6NPRFE.cjs +0 -7
- package/chunk-LL6NPRFE.cjs.map +0 -1
- package/chunk-M2P3FJT7.cjs +0 -2
- package/chunk-M2P3FJT7.cjs.map +0 -1
- package/chunk-PO6SIMTQ.js +0 -2
- package/chunk-PO6SIMTQ.js.map +0 -1
- package/chunk-T2GBOTUH.js +0 -7
- package/chunk-T2GBOTUH.js.map +0 -1
- package/chunk-TRAG63HY.cjs +0 -3
- package/chunk-TRAG63HY.cjs.map +0 -1
- package/chunk-U3CXOCRG.cjs +0 -2
- package/chunk-U3CXOCRG.cjs.map +0 -1
- package/chunk-XEUNEHAZ.js.map +0 -1
- package/common/index.cjs +0 -7
- package/common/index.cjs.map +0 -1
- package/common/index.d.cts +0 -24
- package/data/index.cjs +0 -2
- package/data/index.cjs.map +0 -1
- package/data/index.d.cts +0 -402
- package/index.cjs +0 -192
- package/index.cjs.map +0 -1
- package/index.d.cts +0 -369
- package/matrix-Cn2jQILV.d.cts +0 -122
- package/std/index.cjs +0 -2
- package/std/index.cjs.map +0 -1
- package/std/index.d.cts +0 -639
- package/tgpuConstant-DzGgwe0I.d.cts +0 -5196
- /package/{chunk-6WF2EZIT.js.map → chunk-6U5HPHCJ.js.map} +0 -0
- /package/{chunk-B254XDWG.js.map → chunk-CGQB3SER.js.map} +0 -0
package/chunk-TRAG63HY.cjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkA5APHF7Kcjs = require('./chunk-A5APHF7K.cjs');var _tinyest = require('tinyest');function S(n,e){for(let[r,t]of Object.entries(e))n[r]=t,t&&(typeof t=="object"||typeof t=="function")&&_chunkA5APHF7Kcjs.j.call(void 0, t)===void 0&&_chunkA5APHF7Kcjs.k.call(void 0, t,r)}function Se(n,e,r){let t=[...n.matchAll(/:\s*(?<arg>.*?)\s*[,)]/g)].map(s=>s?s[1]:void 0);r(Object.fromEntries(e.flatMap((s,i)=>{let o=t?t[i]:void 0;return _chunkA5APHF7Kcjs.D.call(void 0, s)&&o!==void 0?[[o,s]]:[]})))}function $e(n,e,r){let t=n.match(/->\s(?<output>[\w\d_]+)\s{/),s=t?_optionalChain([t, 'access', _2 => _2[1], 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()]):void 0;_chunkA5APHF7Kcjs.D.call(void 0, e)&&s&&!/\s/g.test(s)&&r({[s]:e})}function ue(n){return new RegExp(`(?<![\\w\\$_.])${n.replaceAll(".","\\.").replaceAll("$","\\$")}(?![\\w\\$_])`,"g")}function R(n,e,r){return Object.entries(e).reduce((t,[s,i])=>{let o=ue(s);if(r&&s!=="Out"&&s!=="In"&&!o.test(r)&&console.warn(`The external '${s}' wasn't used in the resolved template.`),_chunkA5APHF7Kcjs.va.call(void 0, i)||_chunkA5APHF7Kcjs.Q.call(void 0, i)||_chunkA5APHF7Kcjs.m.call(void 0, i))return t.replaceAll(o,n.resolve(i).value);if(i!==null&&typeof i=="object"){let a=[...r.matchAll(new RegExp(`${s.replaceAll(".","\\.").replaceAll("$","\\$")}\\.(?<prop>.*?)(?![\\w\\$_])`,"g"))].map(d=>d[1]);return[...new Set(a)].reduce((d,f)=>f&&f in i?R(n,{[`${s}.${f}`]:i[f]},d):d,t)}return console.warn(`During resolution, the external '${s}' has been omitted. Only primitives, TGPU resources and plain JS objects can be used as externals.`),t},r)}function Y(n){let{strippedCode:e,argRange:r}=pe(n),t=new $(e);t.consume("(");let s=[];for(;!t.isAt(")");){let o=[];for(;t.isAt("@");)t.parseUntil(Q,X),t.consume(")"),o.push(t.lastParsed);t.parseUntil(ce);let a=t.lastParsed,l;t.isAt(":")&&(t.consume(":"),t.parseUntil(de,fe),l=t.lastParsed),s.push({identifier:a,attributes:o,type:l}),t.isAt(",")&&t.consume(",")}t.consume(")");let i;if(t.isAt("->")){t.consume("->");let o=[];for(;t.isAt("@");)t.parseUntil(Q,X),t.consume(")"),o.push(t.lastParsed);i={type:t.str.slice(t.pos),attributes:o}}return{args:s,ret:i,range:{begin:r[0],end:r[1]}}}function pe(n){let e=new $(n),r="",t;for(;!e.isFinished();){if(e.isAt(le)){e.advanceBy(1);continue}if(e.isAt("//")){e.consume("//"),e.parseUntil(Z),e.advanceBy(1);continue}if(e.isAt("/*")){e.parseUntil(me,ge),e.consume("*/");continue}if(e.isAt("{"))return{strippedCode:r,argRange:[t,e.pos]};e.isAt("(")&&t===void 0&&(t=e.pos),t!==void 0&&(r+=e.str[e.pos]),e.advanceBy(1)}throw new Error("Invalid wgsl code!")}var $=class{constructor(e){this.str=e;this.#e=0}#t;#e;get pos(){return this.#e}get lastParsed(){if(this.#t===void 0)throw new Error("Parse was not called yet!");return this.str.slice(this.#t,this.pos)}isFinished(){return this.#e>=this.str.length}isAt(e){if(typeof e=="string"){for(let r=0;r<e.length;r++)if(this.str[this.#e+r]!==e[r])return!1;return!0}for(let r of e)if(this.isAt(r))return!0;return!1}parseUntil(e,r){this.#t=this.#e;let t=0;for(;this.#e<this.str.length;){if(r&&this.isAt(r[0])&&(t+=1),r&&this.isAt(r[1])&&(t-=1),t===0&&this.isAt(e))return this.#e;this.#e+=1}throw new Error("Reached the end of the string without finding a match!")}advanceBy(e){this.#e+=e}consume(e){if(!this.isAt(e))throw new Error(`Expected '${e}' at position ${this.#e}, but found '${this.str.slice(this.#e,this.#e+e.length)}'`);this.advanceBy(e.length)}},Z=new Set([`
|
|
2
|
-
`,"\v","\f","\r","\x85","\u2028","\u2029"]),le=new Set([...Z," "," ","\u200E","\u200F"]),Q=new Set([")"]),ce=new Set([":",",",")"]),de=new Set([",",")"]),me=new Set(["*/"]),X=["(",")"],fe=["<",">"],ge=["/*","*/"];function ne(n,e=""){let r=[],t={applyExternals(i){r.push(i)},resolve(i,o,a){let l={};for(let u of r)S(l,u);let d=i.getUniqueName(this);if(typeof n=="string"){if(!a)throw new Error("Explicit return type is required for string implementation");let u=R(i,l,n),m="",x="";if(e!==""){let p=_chunkA5APHF7Kcjs.D.call(void 0, o[0])?`(in: ${i.resolve(o[0]).value})`:"()",c=_chunkA5APHF7Kcjs.B.call(void 0, a)?_chunkA5APHF7Kcjs.qc.call(void 0, a):"",b=a!==_chunkA5APHF7Kcjs.q?_chunkA5APHF7Kcjs.D.call(void 0, a)?`-> ${i.resolve(a).value}`:`-> ${c!==""?c:"@location(0)"} ${i.resolve(a).value}`:"";m=`${p} ${b} `,x=u}else{let p=Y(u);if(p.args.length!==o.length)throw new Error(`WGSL implementation has ${p.args.length} arguments, while the shell has ${o.length} arguments.`);let c=p.args.map((E,ae)=>`${E.identifier}: ${te(i,`parameter ${E.identifier}`,E.type,o[ae])}`).join(", "),b=a===_chunkA5APHF7Kcjs.q?"":`-> ${te(i,"return type",_optionalChain([p, 'access', _5 => _5.ret, 'optionalAccess', _6 => _6.type]),a)}`;m=`(${c}) ${b}`,x=u.slice(p.range.end)}return i.addDeclaration(`${e}fn ${d}${m}${x}`),_chunkA5APHF7Kcjs.aa.call(void 0, d,a)}let f=_chunkA5APHF7Kcjs.n.call(void 0, n);if(_optionalChain([f, 'optionalAccess', _7 => _7.externals])){let u=Object.fromEntries(Object.entries(f.externals).filter(([m])=>!(m in l)));S(l,u)}let O=_optionalChain([f, 'optionalAccess', _8 => _8.ast]);if(!O)throw new Error("Missing metadata for tgpu.fn function body (either missing 'use gpu' directive, or misconfigured `unplugin-typegpu`)");let B=O.externalNames.filter(u=>!(u in l));if(B.length>0)throw new (0, _chunkA5APHF7Kcjs.ga)(_chunkA5APHF7Kcjs.j.call(void 0, this),B);let A=O.params[1];A&&A.type==="i"&&e!==""&&S(l,{[A.name]:_chunkA5APHF7Kcjs.P.call(void 0, a)});let V=[],v=[];for(let[u,m]of o.entries()){let x=O.params[u];switch(_optionalChain([x, 'optionalAccess', _9 => _9.type])){case _tinyest.FuncParameterType.identifier:{let p=x.name,c=_chunkA5APHF7Kcjs.aa.call(void 0, i.makeNameValid(p),m);V.push(c),c.value!==p&&v.push([p,c]);break}case _tinyest.FuncParameterType.destructuredObject:{V.push(_chunkA5APHF7Kcjs.aa.call(void 0, `_arg_${u}`,m)),v.push(...x.props.map(({name:p,alias:c})=>[c,_chunkA5APHF7Kcjs.aa.call(void 0, `_arg_${u}.${p}`,o[u].propTypes[p])]));break}case void 0:V.push(_chunkA5APHF7Kcjs.aa.call(void 0, `_arg_${u}`,m))}}let{head:ie,body:se,returnType:oe}=i.fnToWgsl({args:V,argAliases:Object.fromEntries(v),returnType:a,body:O.body,externalMap:l});return i.addDeclaration(`${e}fn ${d}${i.resolve(ie).value}${i.resolve(se).value}`),_chunkA5APHF7Kcjs.aa.call(void 0, d,oe)}},s=_chunkA5APHF7Kcjs.j.call(void 0, n);return s!==void 0&&_chunkA5APHF7Kcjs.k.call(void 0, t,s),t}function te(n,e,r,t){let s=n.resolve(t).value.replace(/\s/g,"");if(!r)return s;let i=r.replace(/\s/g,"");if(i!==s)throw new Error(`Type mismatch between TGPU shell and WGSL code string: ${e}, JS type "${s}", WGSL type "${i}".`);return r}function xe(n,e={}){let r=0,t=new Set;return Object.fromEntries(Object.entries(_nullishCoalesce(n, () => ({}))).map(([s,i])=>{let o=_chunkA5APHF7Kcjs.U.call(void 0, i);if(o!==void 0){if(t.has(o))throw new Error("Duplicate custom location attributes found");t.add(o)}return[s,i]}).map(([s,i])=>{if(_chunkA5APHF7Kcjs.pc.call(void 0, i))return[s,i];if(_chunkA5APHF7Kcjs.U.call(void 0, i)!==void 0)return[s,i];if(e[s])return[s,_chunkA5APHF7Kcjs.mc.call(void 0, e[s],i)];for(;t.has(r);)r++;return[s,_chunkA5APHF7Kcjs.mc.call(void 0, r++,i)]}))}function F(n,e={}){return _chunkA5APHF7Kcjs.V.call(void 0, n)?_chunkA5APHF7Kcjs.M.call(void 0, n)||_chunkA5APHF7Kcjs.U.call(void 0, n)!==void 0?n:_chunkA5APHF7Kcjs.mc.call(void 0, 0,n):_chunkA5APHF7Kcjs.sc.call(void 0, xe(n,e))}function re(n,...e){return ye(n)?he(n,...e):n}function ye(n){return Array.isArray(n)&&"raw"in n&&Array.isArray(n.raw)&&n.raw.every(e=>typeof e=="string")}function he(n,...e){return n.slice(1).reduce((r,t,s)=>`${r}${e[s]}${t}`,n[0])}function Qe(n){if(Object.keys(n.out).length===0)throw new Error("A vertexFn output cannot be empty since it must include the 'position' builtin.");let e={in:n.in,out:n.out,argTypes:n.in&&Object.keys(n.in).length!==0?[F(n.in)]:[],isEntry:!0},r=(t,...s)=>Ie(e,re(t,...s));return Object.assign(Object.assign(r,e),{does:r})}function Ie(n,e){let r=ne(e,"@vertex "),t=n.argTypes[0];return{shell:n,$uses(i){return r.applyExternals(i),this},[_chunkA5APHF7Kcjs.a]:!0,[_chunkA5APHF7Kcjs.c]:r,$name(i){return _chunkA5APHF7Kcjs.k.call(void 0, r,i),_chunkA5APHF7Kcjs.l.call(void 0, t)&&t.$name(`${i}_Input`),this},[_chunkA5APHF7Kcjs.f](i){let o=F(n.out,i.varyingLocations).$name(`${_nullishCoalesce(_chunkA5APHF7Kcjs.j.call(void 0, this), () => (""))}_Output`);return typeof e=="string"&&(t&&r.applyExternals({In:t}),r.applyExternals({Out:o})),r.resolve(i,n.argTypes,o)},toString(){return`vertexFn:${_nullishCoalesce(_chunkA5APHF7Kcjs.j.call(void 0, r), () => ("<unnamed>"))}`}}}exports.a = S; exports.b = Se; exports.c = $e; exports.d = R; exports.e = ne; exports.f = F; exports.g = re; exports.h = Qe;
|
|
3
|
-
//# sourceMappingURL=chunk-TRAG63HY.cjs.map
|
package/chunk-TRAG63HY.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-TRAG63HY.cjs","../src/core/function/fnCore.ts","../src/core/resolve/externals.ts"],"names":["applyExternals","existing","newExternals","key","value","getName","setName","addArgTypesToExternals","implementation","argTypes","argTypeNames","found","argType","argTypeName","isWgslStruct","addReturnTypeToExternals","returnType","matched","outputName","identifierRegex","name","replaceExternalsInWgsl","ctx","externalMap","wgsl","acc","externalName","external","externalRegex","isWgsl","isLooseData","hasTinyestMetadata","foundProperties"],"mappings":"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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-TRAG63HY.cjs","sourcesContent":[null,"import { FuncParameterType } from 'tinyest';\nimport { getAttributesString } from '../../data/attributes.ts';\nimport { type AnyData, undecorate } from '../../data/dataTypes.ts';\nimport {\n type ResolvedSnippet,\n snip,\n type Snippet,\n} from '../../data/snippet.ts';\nimport {\n isWgslData,\n isWgslStruct,\n Void,\n type WgslStruct,\n} from '../../data/wgslTypes.ts';\nimport { MissingLinksError } from '../../errors.ts';\nimport { getMetaData, getName, setName } from '../../shared/meta.ts';\nimport type { ResolutionCtx } from '../../types.ts';\nimport {\n applyExternals,\n type ExternalMap,\n replaceExternalsInWgsl,\n} from '../resolve/externals.ts';\nimport { extractArgs } from './extractArgs.ts';\nimport type { Implementation } from './fnTypes.ts';\n\nexport interface FnCore {\n applyExternals(newExternals: ExternalMap): void;\n resolve(\n ctx: ResolutionCtx,\n argTypes: AnyData[],\n /**\n * The return type of the function. If undefined, the type should be inferred\n * from the implementation (relevant for shellless functions).\n */\n returnType: AnyData | undefined,\n ): ResolvedSnippet;\n}\n\nexport function createFnCore(\n implementation: Implementation,\n fnAttribute = '',\n): FnCore {\n /**\n * External application has to be deferred until resolution because\n * some externals can reference the owner function which has not been\n * initialized yet (like when accessing the Output struct of a vertex\n * entry fn).\n */\n const externalsToApply: ExternalMap[] = [];\n\n const core = {\n applyExternals(newExternals: ExternalMap): void {\n externalsToApply.push(newExternals);\n },\n\n resolve(\n ctx: ResolutionCtx,\n argTypes: AnyData[],\n returnType: AnyData | undefined,\n ): ResolvedSnippet {\n const externalMap: ExternalMap = {};\n\n for (const externals of externalsToApply) {\n applyExternals(externalMap, externals);\n }\n\n const id = ctx.getUniqueName(this);\n\n if (typeof implementation === 'string') {\n if (!returnType) {\n throw new Error(\n 'Explicit return type is required for string implementation',\n );\n }\n\n const replacedImpl = replaceExternalsInWgsl(\n ctx,\n externalMap,\n implementation,\n );\n\n let header = '';\n let body = '';\n\n if (fnAttribute !== '') {\n const input = isWgslStruct(argTypes[0])\n ? `(in: ${ctx.resolve(argTypes[0]).value})`\n : '()';\n\n const attributes = isWgslData(returnType)\n ? getAttributesString(returnType)\n : '';\n const output = returnType !== Void\n ? isWgslStruct(returnType)\n ? `-> ${ctx.resolve(returnType).value}`\n : `-> ${attributes !== '' ? attributes : '@location(0)'} ${\n ctx.resolve(returnType).value\n }`\n : '';\n\n header = `${input} ${output} `;\n body = replacedImpl;\n } else {\n const providedArgs = extractArgs(replacedImpl);\n\n if (providedArgs.args.length !== argTypes.length) {\n throw new Error(\n `WGSL implementation has ${providedArgs.args.length} arguments, while the shell has ${argTypes.length} arguments.`,\n );\n }\n\n const input = providedArgs.args.map((argInfo, i) =>\n `${argInfo.identifier}: ${\n checkAndReturnType(\n ctx,\n `parameter ${argInfo.identifier}`,\n argInfo.type,\n argTypes[i],\n )\n }`\n ).join(', ');\n\n const output = returnType === Void ? '' : `-> ${\n checkAndReturnType(\n ctx,\n 'return type',\n providedArgs.ret?.type,\n returnType,\n )\n }`;\n\n header = `(${input}) ${output}`;\n\n body = replacedImpl.slice(providedArgs.range.end);\n }\n\n ctx.addDeclaration(`${fnAttribute}fn ${id}${header}${body}`);\n return snip(id, returnType);\n }\n\n // get data generated by the plugin\n const pluginData = getMetaData(implementation);\n\n if (pluginData?.externals) {\n const missing = Object.fromEntries(\n Object.entries(pluginData.externals).filter(\n ([name]) => !(name in externalMap),\n ),\n );\n\n applyExternals(externalMap, missing);\n }\n\n const ast = pluginData?.ast;\n if (!ast) {\n throw new Error(\n \"Missing metadata for tgpu.fn function body (either missing 'use gpu' directive, or misconfigured `unplugin-typegpu`)\",\n );\n }\n\n // verify all required externals are present\n const missingExternals = ast.externalNames.filter(\n (name) => !(name in externalMap),\n );\n if (missingExternals.length > 0) {\n throw new MissingLinksError(getName(this), missingExternals);\n }\n\n // If an entrypoint implementation has a second argument, it represents the output schema.\n // We look at the identifier chosen by the user and add it to externals.\n const maybeSecondArg = ast.params[1];\n if (\n maybeSecondArg && maybeSecondArg.type === 'i' && fnAttribute !== ''\n ) {\n applyExternals(\n externalMap,\n {\n // biome-ignore lint/style/noNonNullAssertion: entry functions cannot be shellless\n [maybeSecondArg.name]: undecorate(returnType!),\n },\n );\n }\n\n // generate wgsl string\n\n const args: Snippet[] = [];\n const argAliases: [string, Snippet][] = [];\n\n for (const [i, argType] of argTypes.entries()) {\n const astParam = ast.params[i];\n\n switch (astParam?.type) {\n case FuncParameterType.identifier: {\n const rawName = astParam.name;\n const snippet = snip(ctx.makeNameValid(rawName), argType);\n args.push(snippet);\n if (snippet.value !== rawName) {\n argAliases.push([rawName, snippet]);\n }\n break;\n }\n case FuncParameterType.destructuredObject: {\n args.push(snip(`_arg_${i}`, argType));\n argAliases.push(...astParam.props.map(({ name, alias }) =>\n [\n alias,\n snip(\n `_arg_${i}.${name}`,\n (argTypes[i] as WgslStruct)\n .propTypes[name],\n ),\n ] as [string, Snippet]\n ));\n break;\n }\n case undefined:\n args.push(snip(`_arg_${i}`, argType));\n }\n }\n\n const { head, body, returnType: actualReturnType } = ctx.fnToWgsl({\n args,\n argAliases: Object.fromEntries(argAliases),\n returnType,\n body: ast.body,\n externalMap,\n });\n\n ctx.addDeclaration(\n `${fnAttribute}fn ${id}${ctx.resolve(head).value}${\n ctx.resolve(body).value\n }`,\n );\n\n return snip(id, actualReturnType);\n },\n };\n\n // The implementation could have been given a name by a bundler plugin,\n // so we try to transfer it to the core.\n const maybeName = getName(implementation);\n if (maybeName !== undefined) {\n setName(core, maybeName);\n }\n\n return core;\n}\n\nfunction checkAndReturnType(\n ctx: ResolutionCtx,\n name: string,\n wgslType: string | undefined,\n jsType: unknown,\n) {\n const resolvedJsType = ctx.resolve(jsType).value.replace(/\\s/g, '');\n\n if (!wgslType) {\n return resolvedJsType;\n }\n\n const resolvedWgslType = wgslType.replace(/\\s/g, '');\n\n if (resolvedWgslType !== resolvedJsType) {\n throw new Error(\n `Type mismatch between TGPU shell and WGSL code string: ${name}, JS type \"${resolvedJsType}\", WGSL type \"${resolvedWgslType}\".`,\n );\n }\n\n return wgslType;\n}\n","import { isLooseData } from '../../data/dataTypes.ts';\nimport { isWgslStruct } from '../../data/wgslTypes.ts';\nimport { getName, hasTinyestMetadata, setName } from '../../shared/meta.ts';\nimport { isWgsl, type ResolutionCtx } from '../../types.ts';\n\n/**\n * A key-value mapping where keys represent identifiers within shader code,\n * and values can be any type that can be resolved to a code string.\n */\nexport type ExternalMap = Record<string, unknown>;\n\n/**\n * Merges two external maps into one. If a key is present in both maps, the value from the new map is used.\n * If the external value is a namable object, it is given a name if it does not already have one.\n * @param existing - The existing external map.\n * @param newExternals - The new external map.\n */\nexport function applyExternals(\n existing: ExternalMap,\n newExternals: ExternalMap,\n) {\n for (const [key, value] of Object.entries(newExternals)) {\n existing[key] = value;\n\n // Giving name to external value, if it does not already have one.\n if (\n value && (typeof value === 'object' || typeof value === 'function') &&\n getName(value) === undefined\n ) {\n setName(value, key);\n }\n }\n}\n\nexport function addArgTypesToExternals(\n implementation: string,\n argTypes: unknown[],\n applyExternals: (externals: ExternalMap) => void,\n) {\n const argTypeNames = [\n ...implementation.matchAll(/:\\s*(?<arg>.*?)\\s*[,)]/g),\n ].map((found) => (found ? found[1] : undefined));\n\n applyExternals(\n Object.fromEntries(\n argTypes.flatMap((argType, i) => {\n const argTypeName = argTypeNames ? argTypeNames[i] : undefined;\n return isWgslStruct(argType) && argTypeName !== undefined\n ? [[argTypeName, argType]]\n : [];\n }),\n ),\n );\n}\n\nexport function addReturnTypeToExternals(\n implementation: string,\n returnType: unknown,\n applyExternals: (externals: ExternalMap) => void,\n) {\n const matched = implementation.match(/->\\s(?<output>[\\w\\d_]+)\\s{/);\n const outputName = matched ? matched[1]?.trim() : undefined;\n\n if (isWgslStruct(returnType) && outputName && !/\\s/g.test(outputName)) {\n applyExternals({ [outputName]: returnType });\n }\n}\n\nfunction identifierRegex(name: string) {\n return new RegExp(\n `(?<![\\\\w\\\\$_.])${\n name.replaceAll('.', '\\\\.').replaceAll('$', '\\\\$')\n }(?![\\\\w\\\\$_])`,\n 'g',\n );\n}\n\n/**\n * Replaces all occurrences of external names in WGSL code with their resolved values.\n * It adds all necessary definitions to the resolution context.\n * @param ctx - The resolution context.\n * @param externalMap - The external map.\n * @param wgsl - The WGSL code.\n *\n * @returns The WGSL code with all external names replaced with their resolved values.\n */\nexport function replaceExternalsInWgsl(\n ctx: ResolutionCtx,\n externalMap: ExternalMap,\n wgsl: string,\n): string {\n return Object.entries(externalMap).reduce((acc, [externalName, external]) => {\n const externalRegex = identifierRegex(externalName);\n if (\n wgsl &&\n externalName !== 'Out' &&\n externalName !== 'In' &&\n !externalRegex.test(wgsl)\n ) {\n console.warn(\n `The external '${externalName}' wasn't used in the resolved template.`,\n );\n // continue anyway, we still might need to resolve the external\n }\n\n if (\n isWgsl(external) || isLooseData(external) || hasTinyestMetadata(external)\n ) {\n return acc.replaceAll(externalRegex, ctx.resolve(external).value);\n }\n\n if (external !== null && typeof external === 'object') {\n const foundProperties = [\n ...wgsl.matchAll(\n new RegExp(\n `${\n externalName.replaceAll('.', '\\\\.').replaceAll('$', '\\\\$')\n }\\\\.(?<prop>.*?)(?![\\\\w\\\\$_])`,\n 'g',\n ),\n ),\n ].map((found) => found[1]);\n const uniqueProperties = [...new Set(foundProperties)];\n\n return uniqueProperties.reduce(\n (innerAcc: string, prop) =>\n prop && prop in external\n ? replaceExternalsInWgsl(\n ctx,\n {\n [`${externalName}.${prop}`]:\n external[prop as keyof typeof external],\n },\n innerAcc,\n )\n : innerAcc,\n acc,\n );\n }\n\n console.warn(\n `During resolution, the external '${externalName}' has been omitted. Only primitives, TGPU resources and plain JS objects can be used as externals.`,\n );\n\n return acc;\n }, wgsl);\n}\n"]}
|
package/chunk-U3CXOCRG.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkLL6NPRFEcjs = require('./chunk-LL6NPRFE.cjs');var _chunkA5APHF7Kcjs = require('./chunk-A5APHF7K.cjs');var ae=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"bitcastU32toF32",normalImpl:(e=>typeof e=="number"?_chunkLL6NPRFEcjs.S.call(void 0, e):_chunkLL6NPRFEcjs.U.bitcastU32toF32[e.kind](e)),codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`bitcast<f32>(${e})`,signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Sa]), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.v.call(void 0, t[0])?t[0].type==="vec2u"?_chunkA5APHF7Kcjs.Ya:t[0].type==="vec3u"?_chunkA5APHF7Kcjs.bb:_chunkA5APHF7Kcjs.gb:_chunkA5APHF7Kcjs.Va}}}),ne= exports.d =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"bitcastU32toI32",normalImpl:(e=>typeof e=="number"?_chunkLL6NPRFEcjs.T.call(void 0, e):_chunkLL6NPRFEcjs.U.bitcastU32toI32[e.kind](e)),codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`bitcast<i32>(${e})`,signature:(...e)=>{let t=_nullishCoalesce(_chunkA5APHF7Kcjs.Ia.call(void 0, e,[_chunkA5APHF7Kcjs.Sa]), () => (e));return{argTypes:t,returnType:_chunkA5APHF7Kcjs.v.call(void 0, t[0])?t[0].type==="vec2u"?_chunkA5APHF7Kcjs._a:t[0].type==="vec3u"?_chunkA5APHF7Kcjs.db:_chunkA5APHF7Kcjs.ib:_chunkA5APHF7Kcjs.Ua}}});var _typedbinary = require('typed-binary'); var m = _interopRequireWildcard(_typedbinary);var ie=_chunkA5APHF7Kcjs.Ma.call(void 0, e=>{let t=new ArrayBuffer(4);new m.BufferWriter(t).writeUint32(e);let s=new m.BufferReader(t);return _chunkA5APHF7Kcjs.Ya.call(void 0, s.readFloat16(),s.readFloat16())},e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`unpack2x16float(${e})`,_chunkA5APHF7Kcjs.Ya),"unpack2x16float"),pe= exports.f =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>{let t=new ArrayBuffer(4),l=new m.BufferWriter(t);l.writeFloat16(e.x),l.writeFloat16(e.y);let s=new m.BufferReader(t);return _chunkA5APHF7Kcjs.Sa.call(void 0, s.readUint32())},e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`pack2x16float(${e})`,_chunkA5APHF7Kcjs.Sa),"pack2x16float"),fe= exports.g =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>{let t=new ArrayBuffer(4);new m.BufferWriter(t).writeUint32(e);let s=new m.BufferReader(t);return _chunkA5APHF7Kcjs.gb.call(void 0, s.readUint8()/255,s.readUint8()/255,s.readUint8()/255,s.readUint8()/255)},e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`unpack4x8unorm(${e})`,_chunkA5APHF7Kcjs.gb),"unpack4x8unorm"),ue= exports.h =_chunkA5APHF7Kcjs.Ma.call(void 0, e=>{let t=new ArrayBuffer(4),l=new m.BufferWriter(t);l.writeUint8(e.x*255),l.writeUint8(e.y*255),l.writeUint8(e.z*255),l.writeUint8(e.w*255);let s=new m.BufferReader(t);return _chunkA5APHF7Kcjs.Sa.call(void 0, s.readUint32())},e=>_chunkA5APHF7Kcjs.aa.call(void 0, _chunkA5APHF7Kcjs.Ea`pack4x8unorm(${e})`,_chunkA5APHF7Kcjs.Sa),"pack4x8unorm");function T(e){return e.type.includes("2")?_chunkA5APHF7Kcjs.ab:e.type.includes("3")?_chunkA5APHF7Kcjs.fb:_chunkA5APHF7Kcjs.kb}var Re=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"allEq",signature:(...e)=>({argTypes:e,returnType:_chunkA5APHF7Kcjs.Ra}),normalImpl:(e,t)=>$(x(e,t)),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`all(${e} == ${t})`}),x=(e,t)=>_chunkLL6NPRFEcjs.U.eq[e.kind](e,t),Ae= exports.l =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"eq",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:x,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} == ${t})`}),Se= exports.m =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"ne",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>d(x(e,t)),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} != ${t})`}),A=(e,t)=>_chunkLL6NPRFEcjs.U.lt[e.kind](e,t),Me= exports.n =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"lt",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:A,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} < ${t})`}),ze= exports.o =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"le",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>I(A(e,t),x(e,t)),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} <= ${t})`}),we= exports.p =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"gt",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>O(d(A(e,t)),d(x(e,t))),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} > ${t})`}),Ie= exports.q =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"ge",signature:(...e)=>({argTypes:e,returnType:T(e[0])}),normalImpl:(e,t)=>d(A(e,t)),codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} >= ${t})`}),d=e=>_chunkLL6NPRFEcjs.U.neg[e.kind](e),$e= exports.r =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"not",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:d,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`!(${e})`}),I=(e,t)=>_chunkLL6NPRFEcjs.U.or[e.kind](e,t),Ve= exports.s =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"or",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:I,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} | ${t})`}),O=(e,t)=>d(I(d(e),d(t))),Fe= exports.t =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"and",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:O,codegenImpl:(e,t)=>_chunkA5APHF7Kcjs.Ea`(${e} & ${t})`}),$=e=>_chunkLL6NPRFEcjs.U.all[e.kind](e),Ue= exports.u =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"all",signature:(...e)=>({argTypes:e,returnType:_chunkA5APHF7Kcjs.Ra}),normalImpl:$,codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`all(${e})`}),ke= exports.v =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"any",signature:(...e)=>({argTypes:e,returnType:_chunkA5APHF7Kcjs.Ra}),normalImpl:e=>!$(d(e)),codegenImpl:e=>_chunkA5APHF7Kcjs.Ea`any(${e})`}),Ne= exports.w =_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"isCloseTo",signature:(...e)=>({argTypes:e,returnType:_chunkA5APHF7Kcjs.Ra}),normalImpl:(e,t,l=.01)=>typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<l:_chunkA5APHF7Kcjs.r.call(void 0, e)&&_chunkA5APHF7Kcjs.r.call(void 0, t)?_chunkLL6NPRFEcjs.U.isCloseToZero[e.kind](_chunkLL6NPRFEcjs.W[_chunkA5APHF7Kcjs.a].jsImpl(e,t),l):!1,codegenImpl:(e,t,l=_chunkA5APHF7Kcjs.aa.call(void 0, .01,_chunkA5APHF7Kcjs.Va))=>_chunkA5APHF7Kcjs.$.call(void 0, e)&&_chunkA5APHF7Kcjs.$.call(void 0, t)?_chunkA5APHF7Kcjs.Ea`(abs(f32(${e}) - f32(${t})) <= ${l})`:!_chunkA5APHF7Kcjs.$.call(void 0, e)&&!_chunkA5APHF7Kcjs.$.call(void 0, t)?_chunkA5APHF7Kcjs.Ea`all(abs(${e} - ${t}) <= (${e} - ${e}) + ${l})`:"false"});function j(e,t,l){return typeof l=="boolean"?l?t:e:_chunkLL6NPRFEcjs.U.select[e.kind](e,t,l)}var De=_chunkA5APHF7Kcjs.Oa.call(void 0, {name:"select",signature:(...e)=>({argTypes:e,returnType:e[0]}),normalImpl:j,codegenImpl:(e,t,l)=>_chunkA5APHF7Kcjs.Ea`select(${e}, ${t}, ${l})`});var L={r8unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:1,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},r8snorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:1,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},r8uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:1,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r8sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:1,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rg8unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:2,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rg8snorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:2,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},rg8uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:2,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg8sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:2,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba8unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},"rgba8unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:null},rgba8snorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba8uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba8sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:4,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},bgra8unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only"]},"bgra8unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:null},r16unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:2,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},r16snorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:2,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},r16uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:2,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r16sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:2,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r16float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:2,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},rg16unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16snorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:4,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rg16float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rgba16unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba16snorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgba16uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:8,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba16sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:8,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba16float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only","read-write"]},r32uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r32sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:4,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},r32float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rg32uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:8,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},rg32sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:8,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only"]},rg32float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba32uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:16,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba32sint:{channelType:_chunkA5APHF7Kcjs.Ua,vectorType:_chunkA5APHF7Kcjs.ib,texelSize:16,sampleTypes:["sint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgba32float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!1,canResolve:!1,storageBindings:["write-only","read-only","read-write"]},rgb10a2uint:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:4,sampleTypes:["uint"],aspects:["color"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:["write-only","read-only"]},rgb10a2unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rg11b10ufloat:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!0,canBlend:!0,canMultisample:!0,canResolve:!0,storageBindings:["write-only","read-only"]},rgb9e5ufloat:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},stencil8:{channelType:_chunkA5APHF7Kcjs.Sa,vectorType:_chunkA5APHF7Kcjs.jb,texelSize:1,sampleTypes:["uint"],aspects:["stencil"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},depth16unorm:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:2,sampleTypes:["depth","unfilterable-float"],aspects:["depth"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},depth24plus:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},"depth24plus-stencil8":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth","stencil"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},depth32float:{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},"depth32float-stencil8":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:4,sampleTypes:["depth","unfilterable-float"],aspects:["depth","stencil"],canRenderAttachment:!0,canBlend:!1,canMultisample:!0,canResolve:!1,storageBindings:null},"bc1-rgba-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc1-rgba-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc2-rgba-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc2-rgba-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc3-rgba-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc3-rgba-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc4-r-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc4-r-snorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc5-rg-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc5-rg-snorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc6h-rgb-ufloat":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc6h-rgb-float":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc7-rgba-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"bc7-rgba-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8a1unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgb8a1unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgba8unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"etc2-rgba8unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-r11unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-r11snorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:8,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-rg11unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"eac-rg11snorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-4x4-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-4x4-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x4-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x4-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x5-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-5x5-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x5-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x5-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x6-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-6x6-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x5-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x5-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x6-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x6-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x8-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-8x8-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x5-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x5-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x6-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x6-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x8-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x8-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x10-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-10x10-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x10-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x10-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x12-unorm":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null},"astc-12x12-unorm-srgb":{channelType:_chunkA5APHF7Kcjs.Va,vectorType:_chunkA5APHF7Kcjs.gb,texelSize:16,sampleTypes:["float","unfilterable-float"],aspects:["color"],canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1,storageBindings:null}};function _e(e,t){let l=L[e];if(!l)throw new Error(`Unknown texture format: ${e}`);let s={...l};switch(e){case"r32float":case"rg32float":case"rgba32float":t.features.has("float32-filterable")||(s={...s,sampleTypes:l.sampleTypes.filter(S=>S!=="float")}),t.features.has("float32-blendable")||(s={...s,canBlend:!1});break;case"bgra8unorm":t.features.has("bgra8unorm-storage")||(s={...s,storageBindings:null});break;case"rg11b10ufloat":t.features.has("rg11b10ufloat-renderable")||(s={...s,canRenderAttachment:!1,canBlend:!1,canMultisample:!1,canResolve:!1});break}if(s.storageBindings){let S=t.features.has("texture-formats-tier1"),G=t.features.has("texture-formats-tier2"),g=[...s.storageBindings],P=["r8unorm","r8uint","r8sint","r16uint","r16sint","r16float","rgba8unorm","rgba8uint","rgba8sint","rgba16uint","rgba16sint","rgba16float","r32uint","r32sint","r32float","rgba32uint","rgba32sint","rgba32float"],C=["r8snorm","rg8unorm","rg8snorm","rg8uint","rg8sint","rgba8snorm","r16unorm","r16snorm","rg16unorm","rg16snorm","rg16uint","rg16sint","rg16float","rgba16unorm","rgba16snorm","rgb10a2uint","rgb10a2unorm","rg11b10ufloat"];P.includes(e)&&!G&&(g=g.filter(R=>R!=="read-write")),C.includes(e)&&!S&&(g=g.filter(R=>R!=="write-only"&&R!=="read-only")),s={...s,storageBindings:g.length>0?g:null}}return s}var Ge=["f16","clip_distances","dual_source_blending","subgroups","primitive_index"],Pe= exports.j ={f16:"shader-f16",clip_distances:"clip-distances",dual_source_blending:"dual-source-blending",subgroups:"subgroups",primitive_index:"primitive-index"};exports.a = L; exports.b = _e; exports.c = ae; exports.d = ne; exports.e = ie; exports.f = pe; exports.g = fe; exports.h = ue; exports.i = Ge; exports.j = Pe; exports.k = Re; exports.l = Ae; exports.m = Se; exports.n = Me; exports.o = ze; exports.p = we; exports.q = Ie; exports.r = $e; exports.s = Ve; exports.t = Fe; exports.u = Ue; exports.v = ke; exports.w = Ne; exports.x = De;
|
|
2
|
-
//# sourceMappingURL=chunk-U3CXOCRG.cjs.map
|
package/chunk-U3CXOCRG.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-U3CXOCRG.cjs","../src/std/bitcast.ts","../src/std/packing.ts","../src/std/boolean.ts","../src/core/texture/textureFormats.ts"],"names":["bitcastU32toF32","dualImpl","value","bitcastU32toF32Impl","VectorOps","n","stitch","arg","uargs","unify","u32","isVec","vec2f","vec3f","vec4f","f32","bitcastU32toI32","bitcastU32toI32Impl","vec2i","vec3i","vec4i","i32","unpack2x16float","createDualImpl","buffer","reader","snip","pack2x16float","writer","unpack4x8unorm","pack4x8unorm","correspondingBooleanVectorSchema","dataType","vec2b","vec3b","vec4b","allEq","argTypes","bool","lhs","rhs","cpuAll","cpuEq","eq","ne","cpuNot","cpuLt","lt","le","cpuOr","gt","cpuAnd","ge","not","or","and","all","any","isCloseTo","args","precision","isVecInstance","sub","$internal","isSnippetNumeric","cpuSelect","f","cond","select","textureFormats","vec4u","getDeviceTextureFormatInfo","format","device","baseInfo"],"mappings":"AAAA,ufAA6D,wDAAsN,IC0BtQA,EAAAA,CAAkBC,kCAAAA,CAC7B,IAAA,CAAM,iBAAA,CACN,UAAA,CAAA,CAAcC,CAAAA,EACR,OAAOA,CAAAA,EAAU,QAAA,CACZC,iCAAAA,CAAyB,CAAA,CAE3BC,mBAAAA,CAAU,eAAA,CAAgBF,CAAAA,CAAM,IAAI,CAAA,CAAEA,CAAK,CAAA,CAAA,CAEpD,WAAA,CAAcG,CAAAA,EAAMC,oBAAAA,CAAAA,aAAAA,EAAsBD,CAAC,CAAA,CAAA,CAAA,CAC3C,SAAA,CAAW,CAAA,GAAIE,CAAAA,CAAAA,EAAQ,CACrB,IAAMC,CAAAA,kBAAQC,kCAAAA,CAAMF,CAAK,CAACG,oBAAG,CAAC,CAAA,SAAKH,GAAAA,CACnC,MAAO,CACL,QAAA,CAAUC,CAAAA,CACV,UAAA,CAAYG,iCAAAA,CAAMH,CAAM,CAAC,CAAC,CAAA,CACtBA,CAAAA,CAAM,CAAC,CAAA,CAAE,IAAA,GAAS,OAAA,CAChBI,oBAAAA,CACAJ,CAAAA,CAAM,CAAC,CAAA,CAAE,IAAA,GAAS,OAAA,CAClBK,oBAAAA,CACAC,oBAAAA,CACFC,oBACN,CACF,CACF,CAAC,CAAA,CAQYC,EAAAA,aAAkBf,kCAAAA,CAC7B,IAAA,CAAM,iBAAA,CACN,UAAA,CAAA,CAAcC,CAAAA,EACR,OAAOA,CAAAA,EAAU,QAAA,CACZe,iCAAAA,CAAyB,CAAA,CAE3Bb,mBAAAA,CAAU,eAAA,CAAgBF,CAAAA,CAAM,IAAI,CAAA,CAAEA,CAAK,CAAA,CAAA,CAEpD,WAAA,CAAcG,CAAAA,EAAMC,oBAAAA,CAAAA,aAAAA,EAAsBD,CAAC,CAAA,CAAA,CAAA,CAC3C,SAAA,CAAW,CAAA,GAAIE,CAAAA,CAAAA,EAAQ,CACrB,IAAMC,CAAAA,kBAAQC,kCAAAA,CAAMF,CAAK,CAACG,oBAAG,CAAC,CAAA,SAAKH,GAAAA,CACnC,MAAO,CACL,QAAA,CAAUC,CAAAA,CACV,UAAA,CAAYG,iCAAAA,CAAMH,CAAM,CAAC,CAAC,CAAA,CACtBA,CAAAA,CAAM,CAAC,CAAA,CAAE,IAAA,GAAS,OAAA,CAChBU,oBAAAA,CACAV,CAAAA,CAAM,CAAC,CAAA,CAAE,IAAA,GAAS,OAAA,CAClBW,oBAAAA,CACAC,oBAAAA,CACFC,oBACN,CACF,CACF,CAAC,CAAA,CC9ED,0FAAoB,IAYPC,EAAAA,CAAkBC,kCAAAA,CAE5B,EAAmB,CAClB,IAAMC,CAAAA,CAAS,IAAI,WAAA,CAAY,CAAC,CAAA,CACjB,IAAO,CAAA,CAAA,YAAA,CAAaA,CAAM,CAAA,CAClC,WAAA,CAAY,CAAC,CAAA,CACpB,IAAMC,CAAAA,CAAS,IAAO,CAAA,CAAA,YAAA,CAAaD,CAAM,CAAA,CACzC,OAAOZ,kCAAAA,CAAMa,CAAO,WAAA,CAAY,CAAA,CAAGA,CAAAA,CAAO,WAAA,CAAY,CAAC,CACzD,CAAA,CAEC,CAAA,EAAMC,kCAAAA,oBAAKpB,CAAAA,gBAAAA,EAAyB,CAAC,CAAA,CAAA,CAAA,CAAKM,oBAAK,CAAA,CAChD,iBACF,CAAA,CAMae,EAAAA,aAAgBJ,kCAAAA,CAE1B,EAAmB,CAClB,IAAMC,CAAAA,CAAS,IAAI,WAAA,CAAY,CAAC,CAAA,CAC1BI,CAAAA,CAAS,IAAO,CAAA,CAAA,YAAA,CAAaJ,CAAM,CAAA,CACzCI,CAAAA,CAAO,YAAA,CAAa,CAAA,CAAE,CAAC,CAAA,CACvBA,CAAAA,CAAO,YAAA,CAAa,CAAA,CAAE,CAAC,CAAA,CACvB,IAAMH,CAAAA,CAAS,IAAO,CAAA,CAAA,YAAA,CAAaD,CAAM,CAAA,CACzC,OAAOd,kCAAAA,CAAIe,CAAO,UAAA,CAAW,CAAC,CAChC,CAAA,CAEC,CAAA,EAAMC,kCAAAA,oBAAKpB,CAAAA,cAAAA,EAAuB,CAAC,CAAA,CAAA,CAAA,CAAKI,oBAAG,CAAA,CAC5C,eACF,CAAA,CAMamB,EAAAA,aAAiBN,kCAAAA,CAE3B,EAAmB,CAClB,IAAMC,CAAAA,CAAS,IAAI,WAAA,CAAY,CAAC,CAAA,CACjB,IAAO,CAAA,CAAA,YAAA,CAAaA,CAAM,CAAA,CAClC,WAAA,CAAY,CAAC,CAAA,CACpB,IAAMC,CAAAA,CAAS,IAAO,CAAA,CAAA,YAAA,CAAaD,CAAM,CAAA,CACzC,OAAOV,kCAAAA,CACLW,CAAO,SAAA,CAAU,CAAA,CAAI,GAAA,CACrBA,CAAAA,CAAO,SAAA,CAAU,CAAA,CAAI,GAAA,CACrBA,CAAAA,CAAO,SAAA,CAAU,CAAA,CAAI,GAAA,CACrBA,CAAAA,CAAO,SAAA,CAAU,CAAA,CAAI,GACvB,CACF,CAAA,CAEC,CAAA,EAAMC,kCAAAA,oBAAKpB,CAAAA,eAAAA,EAAwB,CAAC,CAAA,CAAA,CAAA,CAAKQ,oBAAK,CAAA,CAC/C,gBACF,CAAA,CAMagB,EAAAA,aAAeP,kCAAAA,CAEzB,EAAmB,CAClB,IAAMC,CAAAA,CAAS,IAAI,WAAA,CAAY,CAAC,CAAA,CAC1BI,CAAAA,CAAS,IAAO,CAAA,CAAA,YAAA,CAAaJ,CAAM,CAAA,CACzCI,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAE,CAAA,CAAI,GAAG,CAAA,CAC3BA,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAE,CAAA,CAAI,GAAG,CAAA,CAC3BA,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAE,CAAA,CAAI,GAAG,CAAA,CAC3BA,CAAAA,CAAO,UAAA,CAAW,CAAA,CAAE,CAAA,CAAI,GAAG,CAAA,CAC3B,IAAMH,CAAAA,CAAS,IAAO,CAAA,CAAA,YAAA,CAAaD,CAAM,CAAA,CACzC,OAAOd,kCAAAA,CAAIe,CAAO,UAAA,CAAW,CAAC,CAChC,CAAA,CAEC,CAAA,EAAMC,kCAAAA,oBAAKpB,CAAAA,aAAAA,EAAsB,CAAC,CAAA,CAAA,CAAA,CAAKI,oBAAG,CAAA,CAC3C,cACF,CAAA,CChEA,SAASqB,CAAAA,CAAiCC,CAAAA,CAAmB,CAC3D,OAAIA,CAAAA,CAAS,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,CACrBC,oBAAAA,CAELD,CAAAA,CAAS,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,CACrBE,oBAAAA,CAEFC,oBACT,CAWO,IAAMC,EAAAA,CAAQnC,kCAAAA,CACnB,IAAA,CAAM,OAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYC,oBAAK,CAAA,CAAA,CAC1D,UAAA,CAAY,CAA2BC,CAAAA,CAAQC,CAAAA,CAAAA,EAC7CC,CAAAA,CAAOC,CAAAA,CAAMH,CAAAA,CAAKC,CAAG,CAAC,CAAA,CACxB,WAAA,CAAa,CAACD,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,IAAAA,EAAaiC,CAAG,CAAA,IAAA,EAAOC,CAAG,CAAA,CAAA,CACvD,CAAC,CAAA,CAEKE,CAAAA,CAAQ,CAA2BH,CAAAA,CAAQC,CAAAA,CAAAA,EAC/CpC,mBAAAA,CAAU,EAAA,CAAGmC,CAAAA,CAAI,IAAI,CAAA,CAAEA,CAAAA,CAAKC,CAAG,CAAA,CAWpBG,EAAAA,aAAK1C,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAC3B,QAAA,CAAAA,CAAAA,CACA,UAAA,CAAYN,CAAAA,CAAiCM,CAAAA,CAAS,CAAC,CAAC,CAC1D,CAAA,CAAA,CACA,UAAA,CAAYK,CAAAA,CACZ,WAAA,CAAa,CAACH,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,IAAA,EAAOC,CAAG,CAAA,CAAA,CACpD,CAAC,CAAA,CAUYI,EAAAA,aAAK3C,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAC3B,QAAA,CAAAA,CAAAA,CACA,UAAA,CAAYN,CAAAA,CAAiCM,CAAAA,CAAS,CAAC,CAAC,CAC1D,CAAA,CAAA,CACA,UAAA,CAAY,CAA2BE,CAAAA,CAAQC,CAAAA,CAAAA,EAC7CK,CAAAA,CAAOH,CAAAA,CAAMH,CAAAA,CAAKC,CAAG,CAAC,CAAA,CACxB,WAAA,CAAa,CAACD,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,IAAA,EAAOC,CAAG,CAAA,CAAA,CACpD,CAAC,CAAA,CAEKM,CAAAA,CAAQ,CAAkCP,CAAAA,CAAQC,CAAAA,CAAAA,EACtDpC,mBAAAA,CAAU,EAAA,CAAGmC,CAAAA,CAAI,IAAI,CAAA,CAAEA,CAAAA,CAAKC,CAAG,CAAA,CAUpBO,EAAAA,aAAK9C,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAC3B,QAAA,CAAAA,CAAAA,CACA,UAAA,CAAYN,CAAAA,CAAiCM,CAAAA,CAAS,CAAC,CAAC,CAC1D,CAAA,CAAA,CACA,UAAA,CAAYS,CAAAA,CACZ,WAAA,CAAa,CAACP,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,GAAA,EAAMC,CAAG,CAAA,CAAA,CACnD,CAAC,CAAA,CAUYQ,EAAAA,aAAK/C,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAC3B,QAAA,CAAAA,CAAAA,CACA,UAAA,CAAYN,CAAAA,CAAiCM,CAAAA,CAAS,CAAC,CAAC,CAC1D,CAAA,CAAA,CACA,UAAA,CAAY,CAAkCE,CAAAA,CAAQC,CAAAA,CAAAA,EACpDS,CAAAA,CAAMH,CAAAA,CAAMP,CAAAA,CAAKC,CAAG,CAAA,CAAGE,CAAAA,CAAMH,CAAAA,CAAKC,CAAG,CAAC,CAAA,CACxC,WAAA,CAAa,CAACD,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,IAAA,EAAOC,CAAG,CAAA,CAAA,CACpD,CAAC,CAAA,CAUYU,EAAAA,aAAKjD,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAC3B,QAAA,CAAAA,CAAAA,CACA,UAAA,CAAYN,CAAAA,CAAiCM,CAAAA,CAAS,CAAC,CAAC,CAC1D,CAAA,CAAA,CACA,UAAA,CAAY,CAAkCE,CAAAA,CAAQC,CAAAA,CAAAA,EACpDW,CAAAA,CAAON,CAAAA,CAAOC,CAAAA,CAAMP,CAAAA,CAAKC,CAAG,CAAC,CAAA,CAAGK,CAAAA,CAAOH,CAAAA,CAAMH,CAAAA,CAAKC,CAAG,CAAC,CAAC,CAAA,CACzD,WAAA,CAAa,CAACD,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,GAAA,EAAMC,CAAG,CAAA,CAAA,CACnD,CAAC,CAAA,CAUYY,EAAAA,aAAKnD,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAC3B,QAAA,CAAUA,CAAAA,CACV,UAAA,CAAYN,CAAAA,CAAiCM,CAAAA,CAAS,CAAC,CAAC,CAC1D,CAAA,CAAA,CACA,UAAA,CAAY,CAAkCE,CAAAA,CAAQC,CAAAA,CAAAA,EACpDK,CAAAA,CAAOC,CAAAA,CAAMP,CAAAA,CAAKC,CAAG,CAAC,CAAA,CACxB,WAAA,CAAa,CAACD,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,IAAA,EAAOC,CAAG,CAAA,CAAA,CACpD,CAAC,CAAA,CAIKK,CAAAA,CAA2C3C,CAAAA,EAC/CE,mBAAAA,CAAU,GAAA,CAAIF,CAAAA,CAAM,IAAI,CAAA,CAAEA,CAAK,CAAA,CAQpBmD,EAAAA,aAAMpD,kCAAAA,CACjB,IAAA,CAAM,KAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYA,CAAAA,CAAS,CAAC,CAAE,CAAA,CAAA,CACjE,UAAA,CAAYQ,CAAAA,CACZ,WAAA,CAActC,CAAAA,EAAQD,oBAAAA,CAAAA,EAAAA,EAAWC,CAAG,CAAA,CAAA,CACtC,CAAC,CAAA,CAEK0C,CAAAA,CAAQ,CAAkCV,CAAAA,CAAQC,CAAAA,CAAAA,EACtDpC,mBAAAA,CAAU,EAAA,CAAGmC,CAAAA,CAAI,IAAI,CAAA,CAAEA,CAAAA,CAAKC,CAAG,CAAA,CAQpBc,EAAAA,aAAKrD,kCAAAA,CAChB,IAAA,CAAM,IAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYA,CAAAA,CAAS,CAAC,CAAE,CAAA,CAAA,CACjE,UAAA,CAAYY,CAAAA,CACZ,WAAA,CAAa,CAACV,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,GAAA,EAAMC,CAAG,CAAA,CAAA,CACnD,CAAC,CAAA,CAEKW,CAAAA,CAAS,CAAkCZ,CAAAA,CAAQC,CAAAA,CAAAA,EACvDK,CAAAA,CAAOI,CAAAA,CAAMJ,CAAAA,CAAON,CAAG,CAAA,CAAGM,CAAAA,CAAOL,CAAG,CAAC,CAAC,CAAA,CAQ3Be,EAAAA,aAAMtD,kCAAAA,CACjB,IAAA,CAAM,KAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYA,CAAAA,CAAS,CAAC,CAAE,CAAA,CAAA,CACjE,UAAA,CAAYc,CAAAA,CACZ,WAAA,CAAa,CAACZ,CAAAA,CAAKC,CAAAA,CAAAA,EAAQlC,oBAAAA,CAAAA,CAAAA,EAAUiC,CAAG,CAAA,GAAA,EAAMC,CAAG,CAAA,CAAA,CACnD,CAAC,CAAA,CAIKC,CAAAA,CAAUvC,CAAAA,EACdE,mBAAAA,CAAU,GAAA,CAAIF,CAAAA,CAAM,IAAI,CAAA,CAAEA,CAAK,CAAA,CAQpBsD,EAAAA,aAAMvD,kCAAAA,CACjB,IAAA,CAAM,KAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYC,oBAAK,CAAA,CAAA,CAC1D,UAAA,CAAYG,CAAAA,CACZ,WAAA,CAAcvC,CAAAA,EAAUI,oBAAAA,CAAAA,IAAAA,EAAaJ,CAAK,CAAA,CAAA,CAC5C,CAAC,CAAA,CAQYuD,EAAAA,aAAMxD,kCAAAA,CACjB,IAAA,CAAM,KAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYC,oBAAK,CAAA,CAAA,CAC1D,UAAA,CAAapC,CAAAA,EAAiC,CAACuC,CAAAA,CAAOI,CAAAA,CAAO3C,CAAK,CAAC,CAAA,CACnE,WAAA,CAAcK,CAAAA,EAAQD,oBAAAA,CAAAA,IAAAA,EAAaC,CAAG,CAAA,CAAA,CACxC,CAAC,CAAA,CAaYmD,EAAAA,aAAYzD,kCAAAA,CACvB,IAAA,CAAM,WAAA,CACN,SAAA,CAAW,CAAA,GAAI0D,CAAAA,CAAAA,EAAAA,CAAU,CACvB,QAAA,CAAUA,CAAAA,CACV,UAAA,CAAYrB,oBACd,CAAA,CAAA,CAEA,UAAA,CAAY,CACVC,CAAAA,CACAC,CAAAA,CACAoB,CAAAA,CAAY,GAAA,CAAA,EAER,OAAOrB,CAAAA,EAAQ,QAAA,EAAY,OAAOC,CAAAA,EAAQ,QAAA,CACrC,IAAA,CAAK,GAAA,CAAID,CAAAA,CAAMC,CAAG,CAAA,CAAIoB,CAAAA,CAE3BC,iCAAAA,CAAiB,CAAA,EAAKA,iCAAAA,CAAiB,CAAA,CAClCzD,mBAAAA,CAAU,aAAA,CAAcmC,CAAAA,CAAI,IAAI,CAAA,CACrCuB,mBAAAA,CAAIC,mBAAS,CAAA,CAAE,MAAA,CAAOxB,CAAAA,CAAKC,CAAG,CAAA,CAC9BoB,CACF,CAAA,CAEK,CAAA,CAAA,CAGT,WAAA,CAAa,CAACrB,CAAAA,CAAKC,CAAAA,CAAKoB,CAAAA,CAAYlC,kCAAAA,GAAK,CAAMX,oBAAG,CAAA,CAAA,EAC5CiD,iCAAAA,CAAoB,CAAA,EAAKA,iCAAAA,CAAoB,CAAA,CACxC1D,oBAAAA,CAAAA,SAAAA,EAAkBiC,CAAG,CAAA,QAAA,EAAWC,CAAG,CAAA,MAAA,EAASoB,CAAS,CAAA,CAAA,CAAA,CAE1D,CAACI,iCAAAA,CAAoB,CAAA,EAAK,CAACA,iCAAAA,CAAoB,CAAA,CAG1C1D,oBAAAA,CAAAA,QAAAA,EAAiBiC,CAAG,CAAA,GAAA,EAAMC,CAAG,CAAA,MAAA,EAASD,CAAG,CAAA,GAAA,EAAMA,CAAG,CAAA,IAAA,EAAOqB,CAAS,CAAA,CAAA,CAAA,CAEpE,OAEX,CAAC,CAAA,CAaD,SAASK,CAAAA,CACPC,CAAAA,CACA,CAAA,CACAC,CAAAA,CACA,CACA,OAAI,OAAOA,CAAAA,EAAS,SAAA,CACXA,CAAAA,CAAO,CAAA,CAAID,CAAAA,CAEb9D,mBAAAA,CAAU,MAAA,CAAQ8D,CAAAA,CAAqB,IAAI,CAAA,CAChDA,CAAAA,CACA,CAAA,CACAC,CACF,CACF,CAWO,IAAMC,EAAAA,CAASnE,kCAAAA,CACpB,IAAA,CAAM,QAAA,CACN,SAAA,CAAW,CAAA,GAAIoC,CAAAA,CAAAA,EAAAA,CAAc,CAAE,QAAA,CAAAA,CAAAA,CAAU,UAAA,CAAYA,CAAAA,CAAS,CAAC,CAAE,CAAA,CAAA,CACjE,UAAA,CAAY4B,CAAAA,CACZ,WAAA,CAAa,CAACC,CAAAA,CAAG,CAAA,CAAGC,CAAAA,CAAAA,EAAS7D,oBAAAA,CAAAA,OAAAA,EAAgB4D,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAKC,CAAI,CAAA,CAAA,CAC/D,CAAC,CAAA,CCtRM,IAAME,CAAAA,CAAiB,CAE5B,OAAA,CAAW,CAAE,WAAA,CAAatD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAChR,OAAA,CAAW,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CACtQ,MAAA,CAAU,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC1P,MAAA,CAAU,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAE1P,QAAA,CAAY,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CACnQ,QAAA,CAAY,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CACvQ,OAAA,CAAW,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC7O,OAAA,CAAW,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAE7O,UAAA,CAAc,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CACnR,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,IAAK,CAAA,CACnP,UAAA,CAAc,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CACvQ,SAAA,CAAa,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC7P,SAAA,CAAa,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAE7P,UAAA,CAAc,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAY,CAAE,CAAA,CACxP,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,IAAK,CAAA,CAGnP,QAAA,CAAY,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC3P,QAAA,CAAY,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC3P,OAAA,CAAW,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC3P,OAAA,CAAW,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC3P,QAAA,CAAY,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAEjR,SAAA,CAAa,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC5P,SAAA,CAAa,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC5P,QAAA,CAAY,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC9O,QAAA,CAAY,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC9O,SAAA,CAAa,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAEpQ,WAAA,CAAe,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC9P,WAAA,CAAe,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC9P,UAAA,CAAc,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC9P,UAAA,CAAc,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC9P,WAAA,CAAe,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAGpR,OAAA,CAAW,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC5P,OAAA,CAAW,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAC5P,QAAA,CAAY,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAElR,QAAA,CAAY,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC/O,QAAA,CAAY,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAC/O,SAAA,CAAa,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAEpR,UAAA,CAAc,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAChQ,UAAA,CAAc,CAAE,WAAA,CAAajD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAChQ,WAAA,CAAe,CAAE,WAAA,CAAaL,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAA,CAAa,YAAY,CAAE,CAAA,CAGvR,WAAA,CAAe,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CACjP,YAAA,CAAgB,CAAE,WAAA,CAAavD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CACvQ,aAAA,CAAiB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAM,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAM,eAAA,CAAiB,CAAC,YAAA,CAAc,WAAW,CAAE,CAAA,CAGxQ,YAAA,CAAgB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAGpP,QAAA,CAAY,CAAE,WAAA,CAAaJ,oBAAAA,CAAK,UAAA,CAAY4D,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,MAAM,CAAA,CAAG,OAAA,CAAS,CAAC,SAAS,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACzN,YAAA,CAAgB,CAAE,WAAA,CAAavD,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAClP,WAAA,CAAe,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACjP,sBAAA,CAAwB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAA,CAAS,SAAS,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACrQ,YAAA,CAAgB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAClP,uBAAA,CAAyB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAA,CAAS,SAAS,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAM,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAM,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAGtQ,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACtP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC3P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,aAAA,CAAe,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACnP,aAAA,CAAe,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACnP,cAAA,CAAgB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACrP,cAAA,CAAgB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACrP,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACxP,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAG5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACtP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC3P,kBAAA,CAAoB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACxP,uBAAA,CAAyB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC7P,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACxP,sBAAA,CAAwB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC7P,cAAA,CAAgB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACpP,cAAA,CAAgB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,CAAA,CAAG,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACpP,eAAA,CAAiB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACtP,eAAA,CAAiB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAGtP,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,gBAAA,CAAkB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACvP,qBAAA,CAAuB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC5P,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACxP,sBAAA,CAAwB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC7P,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACxP,sBAAA,CAAwB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC7P,iBAAA,CAAmB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACxP,sBAAA,CAAwB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC7P,kBAAA,CAAoB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACzP,uBAAA,CAAyB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC9P,kBAAA,CAAoB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACzP,uBAAA,CAAyB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CAC9P,kBAAA,CAAoB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAAA,CACzP,uBAAA,CAAyB,CAAE,WAAA,CAAaC,oBAAAA,CAAK,UAAA,CAAYD,oBAAAA,CAAO,SAAA,CAAW,EAAA,CAAI,WAAA,CAAa,CAAC,OAAA,CAAS,oBAAoB,CAAA,CAAG,OAAA,CAAS,CAAC,OAAO,CAAA,CAAG,mBAAA,CAAqB,CAAA,CAAA,CAAO,QAAA,CAAU,CAAA,CAAA,CAAO,cAAA,CAAgB,CAAA,CAAA,CAAO,UAAA,CAAY,CAAA,CAAA,CAAO,eAAA,CAAiB,IAAK,CAChQ,CAAA,CAiBO,SAASyD,EAAAA,CACdC,CAAAA,CACAC,CAAAA,CAC0B,CAC1B,IAAMC,CAAAA,CAAWL,CAAAA,CAAeG,CAAM,CAAA,CAEtC,EAAA,CAAI,CAACE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,CAAA,wBAAA,EAA2BF,CAAM,CAAA,CAAA","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-U3CXOCRG.cjs","sourcesContent":[null,"import { dualImpl } from '../core/function/dualImpl.ts';\nimport { stitch } from '../core/resolve/stitch.ts';\nimport { bitcastU32toF32Impl, bitcastU32toI32Impl } from '../data/numberOps.ts';\nimport { f32, i32, u32 } from '../data/numeric.ts';\nimport { isVec } from '../data/wgslTypes.ts';\nimport { vec2f, vec2i, vec3f, vec3i, vec4f, vec4i } from '../data/vector.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport type {\n v2f,\n v2i,\n v2u,\n v3f,\n v3i,\n v3u,\n v4f,\n v4i,\n v4u,\n} from '../data/wgslTypes.ts';\nimport { unify } from '../tgsl/conversion.ts';\n\nexport type BitcastU32toF32Overload =\n & ((value: number) => number)\n & ((value: v2u) => v2f)\n & ((value: v3u) => v3f)\n & ((value: v4u) => v4f);\n\nexport const bitcastU32toF32 = dualImpl({\n name: 'bitcastU32toF32',\n normalImpl: ((value) => {\n if (typeof value === 'number') {\n return bitcastU32toF32Impl(value);\n }\n return VectorOps.bitcastU32toF32[value.kind](value);\n }) as BitcastU32toF32Overload,\n codegenImpl: (n) => stitch`bitcast<f32>(${n})`,\n signature: (...arg) => {\n const uargs = unify(arg, [u32]) ?? arg;\n return {\n argTypes: uargs,\n returnType: isVec(uargs[0])\n ? uargs[0].type === 'vec2u'\n ? vec2f\n : uargs[0].type === 'vec3u'\n ? vec3f\n : vec4f\n : f32,\n };\n },\n});\n\nexport type BitcastU32toI32Overload =\n & ((value: number) => number)\n & ((value: v2u) => v2i)\n & ((value: v3u) => v3i)\n & ((value: v4u) => v4i);\n\nexport const bitcastU32toI32 = dualImpl({\n name: 'bitcastU32toI32',\n normalImpl: ((value) => {\n if (typeof value === 'number') {\n return bitcastU32toI32Impl(value);\n }\n return VectorOps.bitcastU32toI32[value.kind](value);\n }) as BitcastU32toI32Overload,\n codegenImpl: (n) => stitch`bitcast<i32>(${n})`,\n signature: (...arg) => {\n const uargs = unify(arg, [u32]) ?? arg;\n return {\n argTypes: uargs,\n returnType: isVec(uargs[0])\n ? uargs[0].type === 'vec2u'\n ? vec2i\n : uargs[0].type === 'vec3u'\n ? vec3i\n : vec4i\n : i32,\n };\n },\n});\n","import * as TB from 'typed-binary';\nimport { u32 } from '../data/numeric.ts';\nimport { vec2f, vec4f } from '../data/vector.ts';\nimport type { v2f, v4f } from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../core/function/dualImpl.ts';\nimport { stitch } from '../core/resolve/stitch.ts';\nimport { snip } from '../data/snippet.ts';\n\n/**\n * @privateRemarks\n * https://gpuweb.github.io/gpuweb/wgsl/#unpack2x16float-builtin\n */\nexport const unpack2x16float = createDualImpl(\n // CPU implementation\n (e: number): v2f => {\n const buffer = new ArrayBuffer(4);\n const writer = new TB.BufferWriter(buffer);\n writer.writeUint32(e);\n const reader = new TB.BufferReader(buffer);\n return vec2f(reader.readFloat16(), reader.readFloat16());\n },\n // GPU implementation\n (e) => snip(stitch`unpack2x16float(${e})`, vec2f),\n 'unpack2x16float',\n);\n\n/**\n * @privateRemarks\n * https://gpuweb.github.io/gpuweb/wgsl/#pack2x16float-builtin\n */\nexport const pack2x16float = createDualImpl(\n // CPU implementation\n (e: v2f): number => {\n const buffer = new ArrayBuffer(4);\n const writer = new TB.BufferWriter(buffer);\n writer.writeFloat16(e.x);\n writer.writeFloat16(e.y);\n const reader = new TB.BufferReader(buffer);\n return u32(reader.readUint32());\n },\n // GPU implementation\n (e) => snip(stitch`pack2x16float(${e})`, u32),\n 'pack2x16float',\n);\n\n/**\n * @privateRemarks\n * https://gpuweb.github.io/gpuweb/wgsl/#unpack4x8unorm-builtin\n */\nexport const unpack4x8unorm = createDualImpl(\n // CPU implementation\n (e: number): v4f => {\n const buffer = new ArrayBuffer(4);\n const writer = new TB.BufferWriter(buffer);\n writer.writeUint32(e);\n const reader = new TB.BufferReader(buffer);\n return vec4f(\n reader.readUint8() / 255,\n reader.readUint8() / 255,\n reader.readUint8() / 255,\n reader.readUint8() / 255,\n );\n },\n // GPU implementation\n (e) => snip(stitch`unpack4x8unorm(${e})`, vec4f),\n 'unpack4x8unorm',\n);\n\n/**\n * @privateRemarks\n * https://gpuweb.github.io/gpuweb/wgsl/#pack4x8unorm-builtin\n */\nexport const pack4x8unorm = createDualImpl(\n // CPU implementation\n (e: v4f): number => {\n const buffer = new ArrayBuffer(4);\n const writer = new TB.BufferWriter(buffer);\n writer.writeUint8(e.x * 255);\n writer.writeUint8(e.y * 255);\n writer.writeUint8(e.z * 255);\n writer.writeUint8(e.w * 255);\n const reader = new TB.BufferReader(buffer);\n return u32(reader.readUint32());\n },\n // GPU implementation\n (e) => snip(stitch`pack4x8unorm(${e})`, u32),\n 'pack4x8unorm',\n);\n","import { dualImpl } from '../core/function/dualImpl.ts';\nimport { stitch } from '../core/resolve/stitch.ts';\nimport type { AnyData } from '../data/dataTypes.ts';\nimport { bool, f32 } from '../data/numeric.ts';\nimport { isSnippetNumeric, snip } from '../data/snippet.ts';\nimport { vec2b, vec3b, vec4b } from '../data/vector.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport {\n type AnyBooleanVecInstance,\n type AnyFloatVecInstance,\n type AnyNumericVecInstance,\n type AnyVec2Instance,\n type AnyVec3Instance,\n type AnyVecInstance,\n type AnyWgslData,\n isVecInstance,\n type v2b,\n type v3b,\n type v4b,\n} from '../data/wgslTypes.ts';\nimport { $internal } from '../shared/symbols.ts';\nimport { sub } from './operators.ts';\n\nfunction correspondingBooleanVectorSchema(dataType: AnyData) {\n if (dataType.type.includes('2')) {\n return vec2b;\n }\n if (dataType.type.includes('3')) {\n return vec3b;\n }\n return vec4b;\n}\n\n// comparison\n\n/**\n * Checks whether `lhs == rhs` on all components.\n * Equivalent to `all(eq(lhs, rhs))`.\n * @example\n * allEq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns false\n * allEq(vec3u(0, 1, 2), vec3u(0, 1, 2)) // returns true\n */\nexport const allEq = dualImpl({\n name: 'allEq',\n signature: (...argTypes) => ({ argTypes, returnType: bool }),\n normalImpl: <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n cpuAll(cpuEq(lhs, rhs)),\n codegenImpl: (lhs, rhs) => stitch`all(${lhs} == ${rhs})`,\n});\n\nconst cpuEq = <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n VectorOps.eq[lhs.kind](lhs, rhs);\n\n/**\n * Checks **component-wise** whether `lhs == rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`, or use `allEq`.\n * @example\n * eq(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(true, false)\n * eq(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, false)\n * all(eq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1))) // returns true\n * allEq(vec4i(4, 3, 2, 1), vec4i(4, 3, 2, 1)) // returns true\n */\nexport const eq = dualImpl({\n name: 'eq',\n signature: (...argTypes) => ({\n argTypes,\n returnType: correspondingBooleanVectorSchema(argTypes[0]),\n }),\n normalImpl: cpuEq,\n codegenImpl: (lhs, rhs) => stitch`(${lhs} == ${rhs})`,\n});\n\n/**\n * Checks **component-wise** whether `lhs != rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `any`.\n * @example\n * ne(vec2f(0.0, 1.0), vec2f(0.0, 2.0)) // returns vec2b(false, true)\n * ne(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, true)\n * any(ne(vec4i(4, 3, 2, 1), vec4i(4, 2, 2, 1))) // returns true\n */\nexport const ne = dualImpl({\n name: 'ne',\n signature: (...argTypes) => ({\n argTypes,\n returnType: correspondingBooleanVectorSchema(argTypes[0]),\n }),\n normalImpl: <T extends AnyVecInstance>(lhs: T, rhs: T) =>\n cpuNot(cpuEq(lhs, rhs)),\n codegenImpl: (lhs, rhs) => stitch`(${lhs} != ${rhs})`,\n});\n\nconst cpuLt = <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n VectorOps.lt[lhs.kind](lhs, rhs);\n\n/**\n * Checks **component-wise** whether `lhs < rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * lt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, true)\n * lt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, false, false)\n * all(lt(vec4i(1, 2, 3, 4), vec4i(2, 3, 4, 5))) // returns true\n */\nexport const lt = dualImpl({\n name: 'lt',\n signature: (...argTypes) => ({\n argTypes,\n returnType: correspondingBooleanVectorSchema(argTypes[0]),\n }),\n normalImpl: cpuLt,\n codegenImpl: (lhs, rhs) => stitch`(${lhs} < ${rhs})`,\n});\n\n/**\n * Checks **component-wise** whether `lhs <= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * le(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, true)\n * le(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(true, true, false)\n * all(le(vec4i(1, 2, 3, 4), vec4i(2, 3, 3, 5))) // returns true\n */\nexport const le = dualImpl({\n name: 'le',\n signature: (...argTypes) => ({\n argTypes,\n returnType: correspondingBooleanVectorSchema(argTypes[0]),\n }),\n normalImpl: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n cpuOr(cpuLt(lhs, rhs), cpuEq(lhs, rhs)),\n codegenImpl: (lhs, rhs) => stitch`(${lhs} <= ${rhs})`,\n});\n\n/**\n * Checks **component-wise** whether `lhs > rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * gt(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(false, false)\n * gt(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, false, true)\n * all(gt(vec4i(2, 3, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const gt = dualImpl({\n name: 'gt',\n signature: (...argTypes) => ({\n argTypes,\n returnType: correspondingBooleanVectorSchema(argTypes[0]),\n }),\n normalImpl: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n cpuAnd(cpuNot(cpuLt(lhs, rhs)), cpuNot(cpuEq(lhs, rhs))),\n codegenImpl: (lhs, rhs) => stitch`(${lhs} > ${rhs})`,\n});\n\n/**\n * Checks **component-wise** whether `lhs >= rhs`.\n * This function does **not** return `bool`, for that use-case, wrap the result in `all`.\n * @example\n * ge(vec2f(0.0, 0.0), vec2f(0.0, 1.0)) // returns vec2b(true, false)\n * ge(vec3u(0, 1, 2), vec3u(2, 1, 0)) // returns vec3b(false, true, true)\n * all(ge(vec4i(2, 2, 4, 5), vec4i(1, 2, 3, 4))) // returns true\n */\nexport const ge = dualImpl({\n name: 'ge',\n signature: (...argTypes) => ({\n argTypes: argTypes,\n returnType: correspondingBooleanVectorSchema(argTypes[0]),\n }),\n normalImpl: <T extends AnyNumericVecInstance>(lhs: T, rhs: T) =>\n cpuNot(cpuLt(lhs, rhs)),\n codegenImpl: (lhs, rhs) => stitch`(${lhs} >= ${rhs})`,\n});\n\n// logical ops\n\nconst cpuNot = <T extends AnyBooleanVecInstance>(value: T): T =>\n VectorOps.neg[value.kind](value);\n\n/**\n * Returns **component-wise** `!value`.\n * @example\n * not(vec2b(false, true)) // returns vec2b(true, false)\n * not(vec3b(true, true, false)) // returns vec3b(false, false, true)\n */\nexport const not = dualImpl({\n name: 'not',\n signature: (...argTypes) => ({ argTypes, returnType: argTypes[0] }),\n normalImpl: cpuNot,\n codegenImpl: (arg) => stitch`!(${arg})`,\n});\n\nconst cpuOr = <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n VectorOps.or[lhs.kind](lhs, rhs);\n\n/**\n * Returns **component-wise** logical `or` result.\n * @example\n * or(vec2b(false, true), vec2b(false, false)) // returns vec2b(false, true)\n * or(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(true, true, false)\n */\nexport const or = dualImpl({\n name: 'or',\n signature: (...argTypes) => ({ argTypes, returnType: argTypes[0] }),\n normalImpl: cpuOr,\n codegenImpl: (lhs, rhs) => stitch`(${lhs} | ${rhs})`,\n});\n\nconst cpuAnd = <T extends AnyBooleanVecInstance>(lhs: T, rhs: T) =>\n cpuNot(cpuOr(cpuNot(lhs), cpuNot(rhs)));\n\n/**\n * Returns **component-wise** logical `and` result.\n * @example\n * and(vec2b(false, true), vec2b(true, true)) // returns vec2b(false, true)\n * and(vec3b(true, true, false), vec3b(false, true, false)) // returns vec3b(false, true, false)\n */\nexport const and = dualImpl({\n name: 'and',\n signature: (...argTypes) => ({ argTypes, returnType: argTypes[0] }),\n normalImpl: cpuAnd,\n codegenImpl: (lhs, rhs) => stitch`(${lhs} & ${rhs})`,\n});\n\n// logical aggregation\n\nconst cpuAll = (value: AnyBooleanVecInstance) =>\n VectorOps.all[value.kind](value);\n\n/**\n * Returns `true` if each component of `value` is true.\n * @example\n * all(vec2b(false, true)) // returns false\n * all(vec3b(true, true, true)) // returns true\n */\nexport const all = dualImpl({\n name: 'all',\n signature: (...argTypes) => ({ argTypes, returnType: bool }),\n normalImpl: cpuAll,\n codegenImpl: (value) => stitch`all(${value})`,\n});\n\n/**\n * Returns `true` if any component of `value` is true.\n * @example\n * any(vec2b(false, true)) // returns true\n * any(vec3b(false, false, false)) // returns false\n */\nexport const any = dualImpl({\n name: 'any',\n signature: (...argTypes) => ({ argTypes, returnType: bool }),\n normalImpl: (value: AnyBooleanVecInstance) => !cpuAll(cpuNot(value)),\n codegenImpl: (arg) => stitch`any(${arg})`,\n});\n\n// other\n\n/**\n * Checks whether the given elements differ by at most the `precision` value.\n * Checks all elements of `lhs` and `rhs` if arguments are vectors.\n * @example\n * isCloseTo(0, 0.1) // returns false\n * isCloseTo(vec3f(0, 0, 0), vec3f(0.002, -0.009, 0)) // returns true\n *\n * @param {number} precision argument that specifies the maximum allowed difference, 0.01 by default.\n */\nexport const isCloseTo = dualImpl({\n name: 'isCloseTo',\n signature: (...args) => ({\n argTypes: args as AnyWgslData[],\n returnType: bool,\n }),\n // CPU implementation\n normalImpl: <T extends AnyFloatVecInstance | number>(\n lhs: T,\n rhs: T,\n precision = 0.01,\n ): boolean => {\n if (typeof lhs === 'number' && typeof rhs === 'number') {\n return Math.abs(lhs - rhs) < precision;\n }\n if (isVecInstance(lhs) && isVecInstance(rhs)) {\n return VectorOps.isCloseToZero[lhs.kind](\n sub[$internal].jsImpl(lhs, rhs),\n precision,\n );\n }\n return false;\n },\n // GPU implementation\n codegenImpl: (lhs, rhs, precision = snip(0.01, f32)) => {\n if (isSnippetNumeric(lhs) && isSnippetNumeric(rhs)) {\n return stitch`(abs(f32(${lhs}) - f32(${rhs})) <= ${precision})`;\n }\n if (!isSnippetNumeric(lhs) && !isSnippetNumeric(rhs)) {\n // https://www.w3.org/TR/WGSL/#vector-multi-component:~:text=Binary%20arithmetic%20expressions%20with%20mixed%20scalar%20and%20vector%20operands\n // (a-a)+prec creates a vector of a.length elements, all equal to prec\n return stitch`all(abs(${lhs} - ${rhs}) <= (${lhs} - ${lhs}) + ${precision})`;\n }\n return 'false';\n },\n});\n\nfunction cpuSelect(f: boolean, t: boolean, cond: boolean): boolean;\nfunction cpuSelect(f: number, t: number, cond: boolean): number;\nfunction cpuSelect<T extends AnyVecInstance>(\n f: T,\n t: T,\n cond:\n | boolean\n | (T extends AnyVec2Instance ? v2b\n : T extends AnyVec3Instance ? v3b\n : v4b),\n): T;\nfunction cpuSelect<T extends number | boolean | AnyVecInstance>(\n f: T,\n t: T,\n cond: AnyBooleanVecInstance | boolean,\n) {\n if (typeof cond === 'boolean') {\n return cond ? t : f;\n }\n return VectorOps.select[(f as AnyVecInstance).kind](\n f as AnyVecInstance,\n t as AnyVecInstance,\n cond,\n );\n}\n\n/**\n * Returns `t` if `cond` is `true`, and `f` otherwise.\n * Component-wise if `cond` is a vector.\n * @example\n * select(1, 2, false) // returns 1\n * select(1, 2, true) // returns 2\n * select(vec2i(1, 2), vec2i(3, 4), true) // returns vec2i(3, 4)\n * select(vec2i(1, 2), vec2i(3, 4), vec2b(false, true)) // returns vec2i(1, 4)\n */\nexport const select = dualImpl({\n name: 'select',\n signature: (...argTypes) => ({ argTypes, returnType: argTypes[0] }),\n normalImpl: cpuSelect,\n codegenImpl: (f, t, cond) => stitch`select(${f}, ${t}, ${cond})`,\n});\n","import { f32, i32, u32 } from '../../data/numeric.ts';\nimport { vec4f, vec4i, vec4u } from '../../data/vector.ts';\nimport type { F32, I32, U32 } from '../../data/wgslTypes.ts';\n\nexport type ViewDimensionToDimension = {\n '1d': '1d';\n '2d': '2d';\n '2d-array': '2d';\n '3d': '3d';\n cube: '2d';\n 'cube-array': '2d';\n};\n\n/**\n * https://www.w3.org/TR/WGSL/#storage-texel-formats\n */\nexport type StorageTextureFormats =\n | 'rgba8unorm'\n | 'rgba8snorm'\n | 'rgba8uint'\n | 'rgba8sint'\n | 'rgba16unorm'\n | 'rgba16snorm'\n | 'rgba16uint'\n | 'rgba16sint'\n | 'rgba16float'\n | 'rg8unorm'\n | 'rg8snorm'\n | 'rg8uint'\n | 'rg8sint'\n | 'rg16unorm'\n | 'rg16snorm'\n | 'rg16uint'\n | 'rg16sint'\n | 'rg16float'\n | 'r32uint'\n | 'r32sint'\n | 'r32float'\n | 'rg32uint'\n | 'rg32sint'\n | 'rg32float'\n | 'rgba32uint'\n | 'rgba32sint'\n | 'rgba32float'\n | 'bgra8unorm'\n | 'r8unorm'\n | 'r8snorm'\n | 'r8uint'\n | 'r8sint'\n | 'r16unorm'\n | 'r16snorm'\n | 'r16uint'\n | 'r16sint'\n | 'r16float'\n | 'rgb10a2unorm'\n | 'rgb10a2uint'\n | 'rg11b10ufloat';\n\n// TODO: use this for texture view validation\n// deno-fmt-ignore - this is not really meant to be read\nexport const textureFormats = {\n // 8-bit formats\n 'r8unorm': { channelType: f32, vectorType: vec4f, texelSize: 1, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'r8snorm': { channelType: f32, vectorType: vec4f, texelSize: 1, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'r8uint': { channelType: u32, vectorType: vec4u, texelSize: 1, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'r8sint': { channelType: i32, vectorType: vec4i, texelSize: 1, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n 'rg8unorm': { channelType: f32, vectorType: vec4f, texelSize: 2, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only'] },\n 'rg8snorm': { channelType: f32, vectorType: vec4f, texelSize: 2, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg8uint': { channelType: u32, vectorType: vec4u, texelSize: 2, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg8sint': { channelType: i32, vectorType: vec4i, texelSize: 2, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n\n 'rgba8unorm': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'rgba8unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: null },\n 'rgba8snorm': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rgba8uint': { channelType: u32, vectorType: vec4u, texelSize: 4, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'rgba8sint': { channelType: i32, vectorType: vec4i, texelSize: 4, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n 'bgra8unorm': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only'] },\n 'bgra8unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: null },\n\n // 16-bit formats\n 'r16unorm': { channelType: f32, vectorType: vec4f, texelSize: 2, sampleTypes: ['unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'r16snorm': { channelType: f32, vectorType: vec4f, texelSize: 2, sampleTypes: ['unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'r16uint': { channelType: u32, vectorType: vec4u, texelSize: 2, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'r16sint': { channelType: i32, vectorType: vec4i, texelSize: 2, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'r16float': { channelType: f32, vectorType: vec4f, texelSize: 2, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n 'rg16unorm': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg16snorm': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg16uint': { channelType: u32, vectorType: vec4u, texelSize: 4, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg16sint': { channelType: i32, vectorType: vec4i, texelSize: 4, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg16float': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only'] },\n\n 'rgba16unorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rgba16snorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rgba16uint': { channelType: u32, vectorType: vec4u, texelSize: 8, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'rgba16sint': { channelType: i32, vectorType: vec4i, texelSize: 8, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'rgba16float': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n // 32-bit formats\n 'r32uint': { channelType: u32, vectorType: vec4u, texelSize: 4, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'r32sint': { channelType: i32, vectorType: vec4i, texelSize: 4, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'r32float': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n 'rg32uint': { channelType: u32, vectorType: vec4u, texelSize: 8, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg32sint': { channelType: i32, vectorType: vec4i, texelSize: 8, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rg32float': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n 'rgba32uint': { channelType: u32, vectorType: vec4u, texelSize: 16, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'rgba32sint': { channelType: i32, vectorType: vec4i, texelSize: 16, sampleTypes: ['sint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n 'rgba32float': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: false, canResolve: false, storageBindings: ['write-only', 'read-only', 'read-write'] },\n\n // Mixed component formats\n 'rgb10a2uint': { channelType: u32, vectorType: vec4u, texelSize: 4, sampleTypes: ['uint'], aspects: ['color'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: ['write-only', 'read-only'] },\n 'rgb10a2unorm': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only'] },\n 'rg11b10ufloat': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: true, canBlend: true, canMultisample: true, canResolve: true, storageBindings: ['write-only', 'read-only'] },\n\n // Special formats\n 'rgb9e5ufloat': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n\n // Depth/Stencil formats\n 'stencil8': { channelType: u32, vectorType: vec4u, texelSize: 1, sampleTypes: ['uint'], aspects: ['stencil'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: null },\n 'depth16unorm': { channelType: f32, vectorType: vec4f, texelSize: 2, sampleTypes: ['depth', 'unfilterable-float'], aspects: ['depth'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: null },\n 'depth24plus': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['depth', 'unfilterable-float'], aspects: ['depth'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: null },\n 'depth24plus-stencil8': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['depth', 'unfilterable-float'], aspects: ['depth', 'stencil'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: null },\n 'depth32float': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['depth', 'unfilterable-float'], aspects: ['depth'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: null },\n 'depth32float-stencil8': { channelType: f32, vectorType: vec4f, texelSize: 4, sampleTypes: ['depth', 'unfilterable-float'], aspects: ['depth', 'stencil'], canRenderAttachment: true, canBlend: false, canMultisample: true, canResolve: false, storageBindings: null },\n\n // BC compressed formats\n 'bc1-rgba-unorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc1-rgba-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc2-rgba-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc2-rgba-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc3-rgba-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc3-rgba-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc4-r-unorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc4-r-snorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc5-rg-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc5-rg-snorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc6h-rgb-ufloat': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc6h-rgb-float': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc7-rgba-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'bc7-rgba-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n\n // ETC2/EAC compressed formats\n 'etc2-rgb8unorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'etc2-rgb8unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'etc2-rgb8a1unorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'etc2-rgb8a1unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'etc2-rgba8unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'etc2-rgba8unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'eac-r11unorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'eac-r11snorm': { channelType: f32, vectorType: vec4f, texelSize: 8, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'eac-rg11unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'eac-rg11snorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n\n // ASTC compressed formats\n 'astc-4x4-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-4x4-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-5x4-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-5x4-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-5x5-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-5x5-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-6x5-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-6x5-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-6x6-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-6x6-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-8x5-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-8x5-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-8x6-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-8x6-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-8x8-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-8x8-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x5-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x5-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x6-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x6-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x8-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x8-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x10-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-10x10-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-12x10-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-12x10-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-12x12-unorm': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n 'astc-12x12-unorm-srgb': { channelType: f32, vectorType: vec4f, texelSize: 16, sampleTypes: ['float', 'unfilterable-float'], aspects: ['color'], canRenderAttachment: false, canBlend: false, canMultisample: false, canResolve: false, storageBindings: null },\n} as const satisfies Record<GPUTextureFormat, TextureFormatInfo>;\n\nexport type TextureFormatInfo = {\n readonly channelType: F32 | I32 | U32;\n readonly vectorType: typeof vec4f | typeof vec4i | typeof vec4u;\n readonly texelSize: number;\n readonly sampleTypes: readonly string[];\n readonly aspects: readonly string[];\n readonly canRenderAttachment: boolean;\n readonly canBlend: boolean;\n readonly canMultisample: boolean;\n readonly canResolve: boolean;\n readonly storageBindings: readonly string[] | null;\n};\n\nexport type TextureFormats = typeof textureFormats;\n\nexport function getDeviceTextureFormatInfo<T extends GPUTextureFormat>(\n format: T,\n device: GPUDevice,\n): typeof textureFormats[T] {\n const baseInfo = textureFormats[format];\n\n if (!baseInfo) {\n throw new Error(`Unknown texture format: ${format}`);\n }\n\n let filteredInfo = { ...baseInfo } as TextureFormatInfo;\n switch (format) {\n case 'r32float':\n case 'rg32float':\n case 'rgba32float':\n if (!device.features.has('float32-filterable')) {\n filteredInfo = {\n ...filteredInfo,\n sampleTypes: baseInfo.sampleTypes.filter((type) => type !== 'float'),\n } as TextureFormatInfo;\n }\n if (!device.features.has('float32-blendable')) {\n filteredInfo = {\n ...filteredInfo,\n canBlend: false,\n };\n }\n break;\n\n case 'bgra8unorm':\n if (!device.features.has('bgra8unorm-storage')) {\n filteredInfo = {\n ...filteredInfo,\n storageBindings: null,\n };\n }\n break;\n\n case 'rg11b10ufloat':\n if (!device.features.has('rg11b10ufloat-renderable')) {\n filteredInfo = {\n ...filteredInfo,\n canRenderAttachment: false,\n canBlend: false,\n canMultisample: false,\n canResolve: false,\n };\n }\n break;\n }\n\n if (filteredInfo.storageBindings) {\n const hasTexture1 = device.features.has('texture-formats-tier1');\n const hasTexture2 = device.features.has('texture-formats-tier2');\n\n let availableBindings = [...filteredInfo.storageBindings];\n\n // deno-fmt-ignore\n const tier2RequiredFormats = [\n 'r8unorm', 'r8uint', 'r8sint',\n 'r16uint', 'r16sint', 'r16float',\n 'rgba8unorm', 'rgba8uint', 'rgba8sint',\n 'rgba16uint', 'rgba16sint', 'rgba16float',\n 'r32uint', 'r32sint', 'r32float',\n 'rgba32uint', 'rgba32sint', 'rgba32float',\n ];\n\n // deno-fmt-ignore\n const tier1RequiredFormats = [\n 'r8snorm',\n 'rg8unorm', 'rg8snorm', 'rg8uint', 'rg8sint',\n 'rgba8snorm',\n 'r16unorm', 'r16snorm',\n 'rg16unorm', 'rg16snorm', 'rg16uint', 'rg16sint', 'rg16float',\n 'rgba16unorm', 'rgba16snorm',\n 'rgb10a2uint', 'rgb10a2unorm', 'rg11b10ufloat',\n ];\n\n if (tier2RequiredFormats.includes(format) && !hasTexture2) {\n availableBindings = availableBindings.filter((binding) =>\n binding !== 'read-write'\n );\n }\n\n if (tier1RequiredFormats.includes(format) && !hasTexture1) {\n availableBindings = availableBindings.filter(\n (binding) => binding !== 'write-only' && binding !== 'read-only',\n );\n }\n\n filteredInfo = {\n ...filteredInfo,\n storageBindings: availableBindings.length > 0 ? availableBindings : null,\n };\n }\n\n return filteredInfo as typeof textureFormats[T];\n}\n"]}
|