From 6dfcae4672915545c859562e54ab40d56e53b3a0 Mon Sep 17 00:00:00 2001 From: Jeongho Nam Date: Tue, 15 Aug 2023 03:33:27 +0900 Subject: [PATCH] Updates --- 404.html | 2 +- 404/index.html | 2 +- .../_buildManifest.js | 2 +- .../_ssgManifest.js | 0 _next/static/chunks/583-cb55da46edcf042c.js | 1 - _next/static/chunks/583-f1ddf16b954956a8.js | 1 + ...83276f1ec45.js => 851-47e68c656a411178.js} | 4 +-- _next/static/chunks/nextra-data-en-US.json | 2 +- ...1020.js => playground-d432daed69d01e4d.js} | 2 +- docs/index.html | 4 +-- docs/json/parse/index.html | 4 +-- docs/json/schema/index.html | 4 +-- docs/json/stringify/index.html | 4 +-- docs/miscellaneous/index.html | 4 +-- docs/pure/index.html | 4 +-- docs/random/index.html | 4 +-- docs/setup/index.html | 4 +-- docs/utilization/nestjs/index.html | 4 +-- docs/utilization/prisma/index.html | 4 +-- docs/utilization/trpc/index.html | 4 +-- docs/validators/assert/index.html | 4 +-- docs/validators/comment-tags/index.html | 4 +-- docs/validators/is/index.html | 4 +-- docs/validators/validate/index.html | 4 +-- index.html | 4 +-- playground/index.html | 2 +- sitemap-0.xml | 34 +++++++++---------- 27 files changed, 58 insertions(+), 58 deletions(-) rename _next/static/{tt9Eru_abF8oTQ8YLjmaH => 7qfrROGwf9psS8hVmLump}/_buildManifest.js (91%) rename _next/static/{tt9Eru_abF8oTQ8YLjmaH => 7qfrROGwf9psS8hVmLump}/_ssgManifest.js (100%) delete mode 100644 _next/static/chunks/583-cb55da46edcf042c.js create mode 100644 _next/static/chunks/583-f1ddf16b954956a8.js rename _next/static/chunks/{851-979d583276f1ec45.js => 851-47e68c656a411178.js} (99%) rename _next/static/chunks/pages/{playground-195035bb96921020.js => playground-d432daed69d01e4d.js} (99%) diff --git a/404.html b/404.html index 3b291c3772..9680a53c31 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/404/index.html b/404/index.html index 3b291c3772..9680a53c31 100644 --- a/404/index.html +++ b/404/index.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/_next/static/tt9Eru_abF8oTQ8YLjmaH/_buildManifest.js b/_next/static/7qfrROGwf9psS8hVmLump/_buildManifest.js similarity index 91% rename from _next/static/tt9Eru_abF8oTQ8YLjmaH/_buildManifest.js rename to _next/static/7qfrROGwf9psS8hVmLump/_buildManifest.js index b4eb193d6d..d51806c5c4 100644 --- a/_next/static/tt9Eru_abF8oTQ8YLjmaH/_buildManifest.js +++ b/_next/static/7qfrROGwf9psS8hVmLump/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST=function(s,a,c){return{__rewrites:{beforeFiles:[],afterFiles:[{source:"/:path*/_meta",destination:"/404"}],fallback:[]},"/":[s,a,c,"static/chunks/pages/index-e04e7d99f79973a2.js"],"/_error":["static/chunks/pages/_error-54de1933a164a1ff.js"],"/docs":[s,a,c,"static/chunks/pages/docs-4788a048cdba83e9.js"],"/docs/json/parse":[s,a,"static/chunks/pages/docs/json/parse-685ffccb192521b2.js"],"/docs/json/schema":[s,a,"static/chunks/pages/docs/json/schema-d56e66bcda59c101.js"],"/docs/json/stringify":[s,a,c,"static/chunks/pages/docs/json/stringify-26e2857abad02110.js"],"/docs/miscellaneous":[s,a,"static/chunks/pages/docs/miscellaneous-eebf8afaf5bd77c3.js"],"/docs/pure":[s,a,"static/chunks/pages/docs/pure-214b8037da690e9f.js"],"/docs/random":[s,a,"static/chunks/pages/docs/random-69b7577ff4fcd3d3.js"],"/docs/setup":[s,a,c,"static/chunks/pages/docs/setup-ccb93f8f0f3c7ef5.js"],"/docs/utilization/nestjs":[s,a,"static/chunks/pages/docs/utilization/nestjs-91d1efd8abdfdc86.js"],"/docs/utilization/prisma":[s,a,"static/chunks/pages/docs/utilization/prisma-319bd9d77c31fc4f.js"],"/docs/utilization/trpc":[s,a,"static/chunks/pages/docs/utilization/trpc-c70a768b857affd9.js"],"/docs/validators/assert":[s,a,c,"static/chunks/pages/docs/validators/assert-6b4fb3a527cdcc38.js"],"/docs/validators/comment-tags":[s,a,"static/chunks/pages/docs/validators/comment-tags-77db65ca18d9fda3.js"],"/docs/validators/is":[s,a,c,"static/chunks/pages/docs/validators/is-3cc1b8a6bbcf804a.js"],"/docs/validators/validate":[s,a,c,"static/chunks/pages/docs/validators/validate-4346de0b5dfb67fb.js"],"/playground":["static/chunks/88682331-6f10529a36ade39a.js",s,a,"static/chunks/583-cb55da46edcf042c.js","static/chunks/pages/playground-195035bb96921020.js"],sortedPages:["/","/_app","/_error","/docs","/docs/json/parse","/docs/json/schema","/docs/json/stringify","/docs/miscellaneous","/docs/pure","/docs/random","/docs/setup","/docs/utilization/nestjs","/docs/utilization/prisma","/docs/utilization/trpc","/docs/validators/assert","/docs/validators/comment-tags","/docs/validators/is","/docs/validators/validate","/playground"]}}("static/css/e73ec87daa5345b3.css","static/chunks/109-69e8e00ec8172154.js","static/chunks/851-979d583276f1ec45.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST=function(s,a,c){return{__rewrites:{beforeFiles:[],afterFiles:[{source:"/:path*/_meta",destination:"/404"}],fallback:[]},"/":[s,a,c,"static/chunks/pages/index-e04e7d99f79973a2.js"],"/_error":["static/chunks/pages/_error-54de1933a164a1ff.js"],"/docs":[s,a,c,"static/chunks/pages/docs-4788a048cdba83e9.js"],"/docs/json/parse":[s,a,"static/chunks/pages/docs/json/parse-685ffccb192521b2.js"],"/docs/json/schema":[s,a,"static/chunks/pages/docs/json/schema-d56e66bcda59c101.js"],"/docs/json/stringify":[s,a,c,"static/chunks/pages/docs/json/stringify-26e2857abad02110.js"],"/docs/miscellaneous":[s,a,"static/chunks/pages/docs/miscellaneous-eebf8afaf5bd77c3.js"],"/docs/pure":[s,a,"static/chunks/pages/docs/pure-214b8037da690e9f.js"],"/docs/random":[s,a,"static/chunks/pages/docs/random-69b7577ff4fcd3d3.js"],"/docs/setup":[s,a,c,"static/chunks/pages/docs/setup-ccb93f8f0f3c7ef5.js"],"/docs/utilization/nestjs":[s,a,"static/chunks/pages/docs/utilization/nestjs-91d1efd8abdfdc86.js"],"/docs/utilization/prisma":[s,a,"static/chunks/pages/docs/utilization/prisma-319bd9d77c31fc4f.js"],"/docs/utilization/trpc":[s,a,"static/chunks/pages/docs/utilization/trpc-c70a768b857affd9.js"],"/docs/validators/assert":[s,a,c,"static/chunks/pages/docs/validators/assert-6b4fb3a527cdcc38.js"],"/docs/validators/comment-tags":[s,a,"static/chunks/pages/docs/validators/comment-tags-77db65ca18d9fda3.js"],"/docs/validators/is":[s,a,c,"static/chunks/pages/docs/validators/is-3cc1b8a6bbcf804a.js"],"/docs/validators/validate":[s,a,c,"static/chunks/pages/docs/validators/validate-4346de0b5dfb67fb.js"],"/playground":["static/chunks/88682331-6f10529a36ade39a.js",s,a,"static/chunks/583-f1ddf16b954956a8.js","static/chunks/pages/playground-d432daed69d01e4d.js"],sortedPages:["/","/_app","/_error","/docs","/docs/json/parse","/docs/json/schema","/docs/json/stringify","/docs/miscellaneous","/docs/pure","/docs/random","/docs/setup","/docs/utilization/nestjs","/docs/utilization/prisma","/docs/utilization/trpc","/docs/validators/assert","/docs/validators/comment-tags","/docs/validators/is","/docs/validators/validate","/playground"]}}("static/css/e73ec87daa5345b3.css","static/chunks/109-69e8e00ec8172154.js","static/chunks/851-47e68c656a411178.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/_next/static/tt9Eru_abF8oTQ8YLjmaH/_ssgManifest.js b/_next/static/7qfrROGwf9psS8hVmLump/_ssgManifest.js similarity index 100% rename from _next/static/tt9Eru_abF8oTQ8YLjmaH/_ssgManifest.js rename to _next/static/7qfrROGwf9psS8hVmLump/_ssgManifest.js diff --git a/_next/static/chunks/583-cb55da46edcf042c.js b/_next/static/chunks/583-cb55da46edcf042c.js deleted file mode 100644 index fec6c50e17..0000000000 --- a/_next/static/chunks/583-cb55da46edcf042c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[583],{6961:function(e,t,r){var n,a=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function a(e,t){if(!n[e]){n[e]={};for(var r=0;r>>8,r[2*n+1]=i%256}return r},decompressFromUint8Array:function(t){if(null==t)return o.decompress(t);for(var r=Array(t.length/2),n=0,a=r.length;nf.charCodeAt(0)){for(n=0;n>=1}else{for(n=0,a=1;n>=1}0==--s&&(s=Math.pow(2,y),y++),delete u[f]}else for(n=0,a=i[f];n>=1;0==--s&&(s=Math.pow(2,y),y++),i[l]=d++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(256>f.charCodeAt(0)){for(n=0;n>=1}else{for(n=0,a=1;n>=1}0==--s&&(s=Math.pow(2,y),y++),delete u[f]}else for(n=0,a=i[f];n>=1;0==--s&&(s=Math.pow(2,y),y++)}for(n=0,a=2;n>=1;for(;;){if(m<<=1,v==t-1){p.push(r(m));break}v++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:o._decompress(e.length,32768,function(t){return e.charCodeAt(t)})},_decompress:function(t,r,n){var a,o,i,u,c,l,f,s=[],d=4,y=4,p=3,m="",v=[],h={val:n(0),position:r,index:1};for(a=0;a<3;a+=1)s[a]=a;for(i=0,c=4,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;switch(i){case 0:for(i=0,c=256,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;f=e(i);break;case 1:for(i=0,c=65536,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;f=e(i);break;case 2:return""}for(s[3]=f,o=f,v.push(f);;){if(h.index>t)return"";for(i=0,c=Math.pow(2,p),l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;switch(f=i){case 0:for(i=0,c=256,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;s[y++]=e(i),f=y-1,d--;break;case 1:for(i=0,c=65536,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;s[y++]=e(i),f=y-1,d--;break;case 2:return v.join("")}if(0==d&&(d=Math.pow(2,p),p++),s[f])m=s[f];else{if(f!==y)return null;m=o+o.charAt(0)}v.push(m),s[y++]=o+m.charAt(0),d--,o=m,0==d&&(d=Math.pow(2,p),p++)}}};return o}();void 0!==(n=(function(){return a}).call(t,r,t,e))&&(e.exports=n)},7297:function(e,t,r){"use strict";var n,a,o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CommentFactory=void 0;var c=u(r(5423));(n=a||(t.CommentFactory=a={})).description=function(e,t){void 0===t&&(t=!1);var r,n,a,u,f,s,d,y,p,m=null===(d=e.declarations)||void 0===d?void 0:d[0];if(m){var v=o(c.default.versionMajorMinor.split(".").map(Number),2),h=v[0],g=v[1];if(h<5||5===h&&g<1){var _=[],b=c.default.displayPartsToString(e.getDocumentationComment(void 0));if(b.length&&(_.push(b),t&&e.getJsDocTags().length&&_.push("")),t)try{for(var x=i(e.getJsDocTags()),S=x.next();!S.done;S=x.next()){var j=S.value;_.push(j.text?"@".concat(j.name," ").concat(c.default.displayPartsToString(j.text)):"@".concat(j.name))}}catch(e){r={error:e}}finally{try{S&&!S.done&&(n=x.return)&&n.call(x)}finally{if(r)throw r.error}}return _.length?_.map(function(e){return e.split("\r\n").join("\n")}).join("\n"):void 0}var P=c.default.getJSDocCommentsAndTags(m);if(0!==P.length){var w=[];try{for(var T=i(P),E=T.next();!E.done;E=T.next()){var I=E.value;if(c.default.isJSDoc(I)){var O=c.default.getTextOfJSDocComment(I.comment);if((null==O?void 0:O.length)&&(w.push(O),t&&(null===(y=I.tags)||void 0===y?void 0:y.length)&&w.push("")),t)try{for(var F=(f=void 0,i(null!==(p=I.tags)&&void 0!==p?p:[])),k=F.next();!k.done;k=F.next()){var j=k.value;w.push(l(j))}}catch(e){f={error:e}}finally{try{k&&!k.done&&(s=F.return)&&s.call(F)}finally{if(f)throw f.error}}}else t&&w.push(l(I))}}catch(e){a={error:e}}finally{try{E&&!E.done&&(u=T.return)&&u.call(T)}finally{if(a)throw a.error}}var A=w.map(function(e){return e.split("\r\n").join("\n")}).join("\n");return A.length?A:void 0}}},n.merge=function(e){return e.map(function(e){return e.text}).map(function(e){return e.split("\r\n").join("\n")}).join("")};var l=function(e){var t,r=null===(t=e.name)||void 0===t?void 0:t.getText(),n=c.default.getTextOfJSDocComment(e.comment);return["@".concat(e.tagName.text),r,n].filter(function(e){return!!(null==e?void 0:e.length)}).join(" ")}},3906:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ExpressionFactory=void 0;var i=o(r(5423));(n=a||(t.ExpressionFactory=a={})).isRequired=function(e){return i.default.factory.createStrictInequality(i.default.factory.createIdentifier("undefined"),e)},n.isArray=function(e){return i.default.factory.createCallExpression(i.default.factory.createIdentifier("Array.isArray"),void 0,[e])},n.isObject=function(e){return function(t){var r=[i.default.factory.createStrictEquality(i.default.factory.createStringLiteral("object"),i.default.factory.createTypeOfExpression(t))];return!0===e.checkNull&&r.push(i.default.factory.createStrictInequality(i.default.factory.createNull(),t)),!0===e.checkArray&&r.push(i.default.factory.createStrictEquality(i.default.factory.createFalse(),i.default.factory.createCallExpression(i.default.factory.createIdentifier("Array.isArray"),void 0,[t]))),1===r.length?r[0]:r.reduce(function(e,t){return i.default.factory.createLogicalAnd(e,t)})}},n.isInstanceOf=function(e){return function(t){return i.default.factory.createBinaryExpression(t,i.default.factory.createToken(i.default.SyntaxKind.InstanceOfKeyword),i.default.factory.createIdentifier(e))}},n.coalesce=function(e){return function(t){return i.default.factory.createBinaryExpression(e,i.default.factory.createToken(i.default.SyntaxKind.QuestionQuestionToken),t)}}},2726:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.IdentifierFactory=void 0;var i=o(r(5423)),u=r(5724),c=r(2301);(n=a||(t.IdentifierFactory=a={})).identifier=function(e){return u.Escaper.variable(e)?i.default.factory.createIdentifier(e):i.default.factory.createStringLiteral(e)},n.access=function(e){return function(t){var r=n.identifier(t);return i.default.isStringLiteral(r)?i.default.factory.createElementAccessExpression(e,r):i.default.factory.createPropertyAccessExpression(e,r)}},n.postfix=function(e){return u.Escaper.variable(e)?'".'.concat(e,'"'):'"['.concat(JSON.stringify(e).split('"').join('\\"'),']"')},n.parameter=function(e,t,r){return void 0!==i.default.getDecorators?i.default.factory.createParameterDeclaration(void 0,void 0,e,(null==r?void 0:r.kind)===i.default.SyntaxKind.QuestionToken?i.default.factory.createToken(i.default.SyntaxKind.QuestionToken):void 0,null!=t?t:c.TypeFactory.keyword("any"),r&&r.kind!==i.default.SyntaxKind.QuestionToken?r:void 0):i.default.factory.createParameterDeclaration(void 0,void 0,void 0,e,(null==r?void 0:r.kind)===i.default.SyntaxKind.QuestionToken?i.default.factory.createToken(i.default.SyntaxKind.QuestionToken):void 0,t,r&&r.kind!==i.default.SyntaxKind.QuestionToken?r:void 0)}},7846:function(e,t,r){"use strict";var n,a,o,i,u,c,l=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},f=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.LiteralFactory=void 0;var s=f(r(5423)),d=r(2726);(n=c||(t.LiteralFactory=c={})).generate=function(e){if(null===e)return s.default.factory.createNull();if(s.default.isIdentifier(e))return e;if(e instanceof Array)return o(e);if("object"==typeof e)return a(e);if("string"==typeof e)return u(e);if("boolean"==typeof e)return i(e);if("number"==typeof e)return i(e);else if("bigint"==typeof e)return i(e);else throw Error("Unknown type.")},a=function(e){return s.default.factory.createObjectLiteralExpression(Object.entries(e).filter(function(e){return void 0!==e[1]}).map(function(e){var t=l(e,2),r=t[0],a=t[1];return s.default.factory.createPropertyAssignment(d.IdentifierFactory.identifier(r),n.generate(a))}),!0)},o=function(e){return s.default.factory.createArrayLiteralExpression(e.map(n.generate),!0)},i=function(e){return s.default.factory.createIdentifier(e.toString())},u=function(e){return s.default.factory.createStringLiteral(e)}},2595:function(e,t,r){"use strict";var n,a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataCollection=void 0;var u=r(4981),c=r(8975),l=r(5136),f=r(4712),s=r(1261),d=r(3224),y=r(7297),p=r(2301),m=function(){function e(e){this.options=e,this.objects_=new Map,this.object_unions_=new Map,this.aliases_=new Map,this.arrays_=new Map,this.tuples_=new Map,this.names_=new Map,this.object_index_=0,this.recursive_array_index_=0,this.recursive_tuple_index_=0}return e.prototype.aliases=function(){return o([],a(this.aliases_.values()),!1)},e.prototype.objects=function(){return o([],a(this.objects_.values()),!1)},e.prototype.unions=function(){return o([],a(this.object_unions_.values()),!1)},e.prototype.arrays=function(){return o([],a(this.arrays_.values()),!1)},e.prototype.tuples=function(){return o([],a(this.tuples_.values()),!1)},e.prototype.getName=function(e,t){var r,n,a=(n=p.TypeFactory.getFullName(e)(t),(null===(r=this.options)||void 0===r?void 0:r.replace)?this.options.replace(n):n),o=d.MapUtil.take(this.names_)(a,function(){return new Map}),i=o.get(t);if(void 0!==i)return i;var u=o.size?"".concat(a,".o").concat(o.size):a;return o.set(t,u),u},e.prototype.getUnionIndex=function(e){var t=e.objects.map(function(e){return e.name}).join(" | ");return d.MapUtil.take(this.object_unions_)(t,function(){return e.objects}),o([],a(this.object_unions_.keys()),!1).indexOf(t)},e.prototype.emplace=function(e,t){var r,n,a,o=this.objects_.get(t);if(void 0!==o)return[o,!1];var i=this.getName(e,t),u=l.MetadataObject.create({name:i,properties:[],description:null!==(r=t.symbol&&y.CommentFactory.description(t.symbol))&&void 0!==r?r:void 0,jsDocTags:null!==(a=null===(n=t.symbol)||void 0===n?void 0:n.getJsDocTags())&&void 0!==a?a:[],validated:!1,index:this.object_index_++,recursive:null,nullables:[]});return this.objects_.set(t,u),[u,!0]},e.prototype.emplaceAlias=function(e,t,r){var n,a,o=this.aliases_.get(t);if(void 0!==o)return[o,!1,function(){}];var i=this.getName(e,t),c=u.MetadataAlias.create({name:i,value:null,description:null!==(n=y.CommentFactory.description(r))&&void 0!==n?n:null,recursive:null,nullables:[],tags:[],jsDocTags:null!==(a=r.getJsDocTags())&&void 0!==a?a:[]});return this.aliases_.set(t,c),[c,!0,function(e){return(0,s.Writable)(c).value=e}]},e.prototype.emplaceArray=function(e,t){var r=this.arrays_.get(t);if(void 0!==r)return[r,!1,function(){}];var n=this.getName(e,t),a=c.MetadataArray.create({name:n,value:null,index:null,recursive:null,nullables:[]});return this.arrays_.set(t,a),[a,!0,function(e){return(0,s.Writable)(a).value=e}]},e.prototype.emplaceTuple=function(e,t){var r=this.tuples_.get(t);if(void 0!==r)return[r,!1,function(){}];var n=this.getName(e,t),a=f.MetadataTuple.create({name:n,elements:null,index:null,recursive:null,nullables:[]});return this.tuples_.set(t,a),[a,!0,function(e){return(0,s.Writable)(a).elements=e}]},e.prototype.setObjectRecursive=function(e,t){(0,s.Writable)(e).recursive=t},e.prototype.setAliasRecursive=function(e,t){(0,s.Writable)(e).recursive=t},e.prototype.setArrayRecursive=function(e,t){(0,s.Writable)(e).recursive=t,t&&((0,s.Writable)(e).index=this.recursive_array_index_++)},e.prototype.setTupleRecursive=function(e,t){(0,s.Writable)(e).recursive=t,t&&((0,s.Writable)(e).index=this.recursive_tuple_index_++)},e.prototype.toJSON=function(){return{objects:this.objects().map(function(e){return e.toJSON()}),aliases:this.aliases().map(function(e){return e.toJSON()}),arrays:o([],a(this.arrays_.values()),!1).map(function(e){return e.toJSON()}),tuples:o([],a(this.tuples_.values()),!1).map(function(e){return e.toJSON()})}},e}();t.MetadataCollection=m,(n=m||(t.MetadataCollection=m={})).replace=function(e){var t,r;try{for(var n=i(v),o=n.next();!o.done;o=n.next()){var u=a(o.value,2),c=u[0],l=u[1];e=e.split(c).join(l)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return e},n.escape=function(e){var t,r;try{for(var n=i(v),o=n.next();!o.done;o=n.next()){var u=a(o.value,2),c=u[0],l=u[1];""!==l&&(e=e.split(l).join(c))}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return e};var v=[["$","_dollar_"],["&","_and_"],["|","_or_"],["{","_blt_"],["}","_bgt_"],["<","_lt_"],[">","_gt_"],["[","_alt_"],["]","_agt_"],[",","_comma_"],["`","_backquote_"],["'","_singlequote_"],['"',"_doublequote_"],[" ","_space_"]]},3390:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataFactory=void 0;var n,a=r(1903),o=r(628),i=r(6896);(n||(t.MetadataFactory=n={})).analyze=function(e){return function(t){return function(r){return function(n){var u=(0,a.explore_metadata)(e)(t)(r)(n,!1);return(0,o.iterate_metadata_collection)(r),(0,i.iterate_metadata_sort)(r)(u),u}}}}},8954:function(e,t){"use strict";var r,n,a,o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataTagFactory=void 0,(r=a||(t.MetadataTagFactory=a={})).generate=function(e){return function(t){return function(r){var a,i,u=[];try{for(var c=o(t),l=c.next();!l.done;l=c.next()){var f=l.value,s=n(r,e,f,u);null!==s&&u.push(s)}}catch(e){a={error:e}}finally{try{l&&!l.done&&(i=c.return)&&i.call(c)}finally{if(a)throw a.error}}return u}}},n=function(e,t,n,a){var o,i=r._PARSER[n.name];if(void 0===i)return null;var c=null===(o=(n.text||[])[0])||void 0===o?void 0:o.text;if(void 0===c)throw Error("".concat(u,": no tag value on ").concat(e()));return i(e,t,c,a)},r._PARSER={items:function(e,t,r,n){return f(e,t,n,"items","array",["minItems"]),{kind:"items",value:i(e,r)}},minItems:function(e,t,r,n){return f(e,t,n,"minItems","array",["items"]),{kind:"minItems",value:i(e,r)}},maxItems:function(e,t,r,n){return f(e,t,n,"maxItems","array",["items"]),{kind:"maxItems",value:i(e,r)}},type:function(e,t,r,n){return s("number")(new Set)(t)&&("int"===r||"uint"===r)?{kind:"type",value:r}:"{int}"===r||"{uint}"===r?{kind:"type",value:r.slice(1,-1)}:null},minimum:function(e,t,r,n){return f(e,t,n,"minimum","number",["exclusiveMinimum"]),{kind:"minimum",value:i(e,r)}},maximum:function(e,t,r,n){return f(e,t,n,"maximum","number",["exclusiveMaximum"]),{kind:"maximum",value:i(e,r)}},exclusiveMinimum:function(e,t,r,n){return f(e,t,n,"exclusiveMinimum","number",["minimum"]),{kind:"exclusiveMinimum",value:i(e,r)}},exclusiveMaximum:function(e,t,r,n){return f(e,t,n,"exclusiveMaximum","number",["maximum"]),{kind:"exclusiveMaximum",value:i(e,r)}},multipleOf:function(e,t,r,n){return f(e,t,n,"multipleOf","number",["step"]),{kind:"multipleOf",value:i(e,r)}},step:function(e,t,r,n){if(f(e,t,n,"step","number",["multipleOf"]),void 0===n.some(function(e){return"minimum"===e.kind||"exclusiveMinimum"===e.kind}))throw Error("".concat(u,': step requires minimum or exclusiveMinimum tag on "').concat(e(),'".'));return{kind:"step",value:i(e,r)}},format:function(e,t,r,n){var a=c.get(r);return(f(e,t,n,"format","date"===a||"datetime"===a?"Date":"string",["pattern"]),void 0===a)?null:{kind:"format",value:a}},pattern:function(e,t,r,n){return f(e,t,n,"pattern","string",["format"]),{kind:"pattern",value:r}},length:function(e,t,r,n){return f(e,t,n,"length","string",["minLength","maxLength"]),{kind:"length",value:i(e,r)}},minLength:function(e,t,r,n){return f(e,t,n,"minLength","string",["length"]),{kind:"minLength",value:i(e,r)}},maxLength:function(e,t,r,n){return f(e,t,n,"maxLength","string",["length"]),{kind:"maxLength",value:i(e,r)}}};var i=function(e,t){var r=Number(t);if(!0===isNaN(r))throw Error("".concat(u,': invalid number on "').concat(e(),'".'));return r},u="Error on typia.MetadataTagFactory.generate()",c=new Map([["uuid","uuid"],["email","email"],["url","url"],["ipv4","ipv4"],["ipv6","ipv6"],["date","date"],["datetime","datetime"],["date-time","datetime"],["dateTime","datetime"]]),l=function(e,t,r){return"".concat(u,": ").concat(e," requires ").concat(t,' type, but no "').concat(r(),'".')},f=function(e,t,r,n,a,i){if("array"===a){if(!1===y(new Set)(t))throw Error(l(n,"array",e))}else if("Date"===a){if(!1===d("Date")(new Set)(t)&&!1===s("string")(new Set)(t))throw Error(l(n,"string",e))}else if(!1===s(a)(new Set)(t))throw Error(l(n,a,e));if(r.some(function(e){return e.kind===n}))throw Error("".concat(u,": duplicated ").concat(n,' tags on "').concat(e(),'".'));var c,f,p=function(t){if(r.some(function(e){return e.kind===t}))throw Error("".concat(u,": ").concat(n," and ").concat(t,' tags on "').concat(e(),'".'))};try{for(var m=o(i),v=m.next();!v.done;v=m.next()){var h=v.value;p(h)}}catch(e){c={error:e}}finally{try{v&&!v.done&&(f=m.return)&&f.call(m)}finally{if(c)throw c.error}}},s=function(e){return function(t){return function(r){return!t.has(r)&&(t.add(r),void 0!==r.atomics.find("number"===e?function(t){return t===e||"bigint"===t}:function(t){return t===e})||r.arrays.some(function(r){return s(e)(t)(r.value)})||r.tuples.some(function(r){return r.elements.some(s(e)(t))})||r.aliases.some(function(r){return s(e)(t)(r.value)})||null!==r.resolved&&s(e)(t)(r.resolved.returns))}}},d=function(e){return function(t){return function(r){return!t.has(r)&&(t.add(r),void 0!==r.natives.find(function(t){return t===e})||r.arrays.some(function(r){return d(e)(t)(r.value)})||r.tuples.some(function(r){return r.elements.some(d(e)(t))})||r.aliases.some(function(r){return d(e)(t)(r.value)})||null!==r.resolved&&d(e)(t)(r.resolved.returns))}}},y=function(e){return function(t){return!e.has(t)&&(e.add(t),0!==t.arrays.length||t.tuples.some(function(t){return t.elements.some(y(e))})||t.aliases.some(function(t){return y(e)(t.value)})||null!==t.resolved&&y(e)(t.resolved.returns))}}},6152:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StatementFactory=void 0;var i=o(r(5423));(n=a||(t.StatementFactory=a={})).constant=function(e,t){return i.default.factory.createVariableStatement(void 0,i.default.factory.createVariableDeclarationList([i.default.factory.createVariableDeclaration(e,void 0,void 0,t)],i.default.NodeFlags.Const))},n.transpile=function(e){return i.default.factory.createExpressionStatement(i.default.factory.createIdentifier(i.default.transpile(e)))}},5374:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TemplateFactory=void 0;var i=o(r(5423));(a||(t.TemplateFactory=a={})).generate=function(e){if(e.every(function(e){return i.default.isStringLiteral(e)}))return i.default.factory.createStringLiteral(e.map(function(e){return e.text}).join(""));var t={value:"",index:0};n(e)(t);for(var r=i.default.factory.createTemplateHead(t.value),a=[];;){var o=e[t.index++];n(e)(t);var u=t.index===e.length;if(a.push(i.default.factory.createTemplateSpan(o,u?i.default.factory.createTemplateTail(t.value):i.default.factory.createTemplateMiddle(t.value))),!0===u)break}return i.default.factory.createTemplateExpression(r,a)},n=function(e){return function(t){var r=e.findIndex(function(e,r){return r>=t.index&&!i.default.isStringLiteral(e)}),n=-1!==r?r:e.length;t.value=e.slice(t.index,n).map(function(e){return e.text}).reduce(function(e,t){return e+t},""),t.index=n}}},2301:function(e,t,r){"use strict";var n,a,o,i,u,c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypeFactory=void 0;var l=c(r(5423));(n=u||(t.TypeFactory=u={})).resolve=function(e){return function(t){return n.getReturnType(e)(t)("toJSON")}},n.isFunction=function(e){return null!==a(e)},a=function(e){var t,r,n=null===(r=null===(t=e.symbol)||void 0===t?void 0:t.declarations)||void 0===r?void 0:r[0];return void 0===n?null:l.default.isFunctionLike(n)?n:(l.default.isPropertyAssignment(n)||l.default.isPropertyDeclaration(n))&&l.default.isFunctionLike(n.initializer)?n.initializer:null},n.getReturnType=function(e){return function(t){return function(r){var n=t.getProperty(r);if(!n||!n.valueDeclaration)return null;var a=e.getTypeOfSymbolAtLocation(n,n.valueDeclaration),o=e.getSignaturesOfType(a,l.default.SignatureKind.Call)[0];return o?o.getReturnType():null}}},n.getFullName=function(e){return function(t,r){if(null!=r||(r=null!==(a=t.aliasSymbol)&&void 0!==a?a:t.getSymbol()),void 0===r)return e.typeToString(t);if(void 0===t.aliasSymbol&&t.isUnionOrIntersection()){var a,o=t.isIntersection()?" & ":" | ";return t.types.map(function(t){return n.getFullName(e)(t)}).join(o)}var u=i(r),c=t.aliasSymbol?t.aliasTypeArguments||[]:e.getTypeArguments(t);return c.length?"Promise"===u?n.getFullName(e)(c[0]):"".concat(u,"<").concat(c.map(function(t){return n.getFullName(e)(t)}).join(", "),">"):u}},o=function(e){return function(t){return l.default.isModuleBlock(e)?o(e.parent.parent)("".concat(e.parent.name.getFullText().trim(),".").concat(t)):t}},i=function(e){var t,r,n=null===(r=null===(t=e.getDeclarations())||void 0===t?void 0:t[0])||void 0===r?void 0:r.parent;return n?o(n)(e.escapedName.toString()):"__type"},n.keyword=function(e){return l.default.factory.createKeywordTypeNode("void"===e?l.default.SyntaxKind.VoidKeyword:"any"===e?l.default.SyntaxKind.AnyKeyword:"unknown"===e?l.default.SyntaxKind.UnknownKeyword:"boolean"===e?l.default.SyntaxKind.BooleanKeyword:"number"===e?l.default.SyntaxKind.NumberKeyword:"bigint"===e?l.default.SyntaxKind.BigIntKeyword:l.default.SyntaxKind.StringKeyword)}},4411:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ValueFactory=void 0;var i=o(r(5423));(n=a||(t.ValueFactory=a={})).NULL=function(){return i.default.factory.createNull()},n.UNDEFINED=function(){return i.default.factory.createIdentifier("undefined")},n.BOOLEAN=function(e){return e?i.default.factory.createTrue():i.default.factory.createFalse()},n.INPUT=function(e){return void 0===e&&(e="input"),i.default.factory.createIdentifier(e)},n.TYPEOF=function(e){return i.default.factory.createTypeOfExpression(e)}},9614:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataHelper=void 0;var n,a=r(9133);(n||(t.MetadataHelper=n={})).literal_to_metadata=function(e){var t=a.Metadata.initialize();return t.constants.push({type:"string",values:[e]}),t}},500:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.emend_metadata_atomics=void 0;var a=r(3346);t.emend_metadata_atomics=function(e){var t,r,o=function(t){var r=e.constants.findIndex(function(e){return e.type===t});-1!==r&&e.constants.splice(r,1)};try{for(var i=n(e.atomics),u=i.next();!u.done;u=i.next()){var c=u.value;o(c)}}catch(e){t={error:e}}finally{try{u&&!u.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}var l=e.constants.findIndex(function(e){return"boolean"===e.type});-1!==l&&2===e.constants[l].values.length&&(e.constants.splice(l,1),a.ArrayUtil.take(e.atomics,function(e){return"boolean"===e},function(){return"boolean"})),e.templates.length&&void 0!==e.atomics.find(function(e){return"string"===e})&&e.templates.splice(0,e.templates.length)}},3389:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(t,"__esModule",{value:!0}),t.emplace_metadata_array=void 0;var a=r(3346),o=r(1903);t.emplace_metadata_array=function(e){return function(t){return function(r){return function(i,u){var c=n(r.emplaceArray(e,i),3),l=c[0],f=c[1],s=c[2];return a.ArrayUtil.add(l.nullables,u),!1===f||s((0,o.explore_metadata)(e)(t)(r)(i.getNumberIndexType(),!1,!1)),l}}}}},8083:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emplace_metadata_object=void 0;var i=o(r(5423)),u=r(2416),c=r(1261),l=r(3346),f=r(7297),s=r(9614),d=r(1903);t.emplace_metadata_object=function(e){return function(t){return function(r){return function(o,p){var m,v,h,g,_,b,x=n(r.emplace(e,o),2),S=x[0],j=x[1];if(l.ArrayUtil.add(S.nullables,p,function(e){return e===p}),!1===j)return S;var P=o.isClass()?function(e){var t,r,n=null===(r=null===(t=e.getChildren()[0])||void 0===t?void 0:t.getChildren()[0])||void 0===r?void 0:r.kind;return n!==i.default.SyntaxKind.PrivateKeyword&&n!==i.default.SyntaxKind.ProtectedKeyword&&(i.default.isParameter(e)||y(e))}:function(e){return y(e)},w=function(e){return function(t){return function(r,n){var a,o,i=r&&null!==(a=f.CommentFactory.description(r))&&void 0!==a?a:null,c=(null!==(o=null==r?void 0:r.getJsDocTags())&&void 0!==o?o:[]).filter(null!=n?n:function(){return!0}),l=u.MetadataProperty.create({key:e,value:t,description:i,jsDocTags:c,tags:[]});return S.properties.push(l),l}}};try{for(var T=a(o.getApparentProperties()),E=T.next();!E.done;E=T.next()){var I=E.value;!function(a){if(void 0===(null!==(_=a.getJsDocTags(e))&&void 0!==_?_:[]).find(function(e){return"internal"===e.name})){var i,u,l,f=n((l=(u=(null!==(i=a.getDeclarations())&&void 0!==i?i:[])[0])?e.getTypeOfSymbolAtLocation(a,u):"getTypeOfPropertyOfType"in e?e.getTypeOfPropertyOfType(o,a.name):void 0,[u,l]),2),y=f[0],p=f[1];if((!y||!1!==P(y))&&void 0!==p){var m=s.MetadataHelper.literal_to_metadata(a.name),v=(0,d.explore_metadata)(e)(t)(r)(p,!1);(null==y?void 0:y.questionToken)&&((0,c.Writable)(v).optional=!0),w(m)(v)(a)}}}(I)}}catch(e){m={error:e}}finally{try{E&&!E.done&&(v=T.return)&&v.call(T)}finally{if(m)throw m.error}}try{for(var O=a(e.getIndexInfosOfType(o)),F=O.next();!F.done;F=O.next()){var k=F.value,A=function(n){return(0,d.explore_metadata)(e)(t)(r)(n,!1)},M=A(k.keyType),C=A(k.type);w(M)(C)((null===(b=k.declaration)||void 0===b?void 0:b.parent)?e.getSymbolAtLocation(k.declaration.parent):void 0,function(e){return"default"!==e.name})}}catch(e){h={error:e}}finally{try{F&&!F.done&&(g=O.return)&&g.call(O)}finally{if(h)throw h.error}}return S}}}};var y=function(e){return i.default.isPropertyDeclaration(e)||i.default.isPropertyAssignment(e)||i.default.isPropertySignature(e)||i.default.isTypeLiteralNode(e)}},373:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emplace_metadata_tuple=void 0;var o=a(r(5423)),i=r(9133),u=r(1261),c=r(3346),l=r(1903);t.emplace_metadata_tuple=function(e){return function(t){return function(r){return function(a,f){var s,d,y,p=n(r.emplaceTuple(e,a),3),m=p[0],v=p[1],h=p[2];if(c.ArrayUtil.add(m.nullables,f),!1===v)return m;var g=null!==(y=null!==(s=a.elementFlags)&&void 0!==s?s:null===(d=a.target)||void 0===d?void 0:d.elementFlags)&&void 0!==y?y:[];return h(e.getTypeArguments(a).map(function(n,a){var c=(0,l.explore_metadata)(e)(t)(r)(n,!1,!1),f=g[a];if(f===o.default.ElementFlags.Optional&&((0,u.Writable)(c).optional=!0),f!==o.default.ElementFlags.Rest)return c;var s=i.Metadata.initialize();return(0,u.Writable)(s).rest=c,s})),m}}}}},1903:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.explore_metadata=void 0;var n=r(9133),a=r(500),o=r(3055);t.explore_metadata=function(e){return function(t){return function(r){return function(i,u,c){void 0===c&&(c=!1);var l,f=n.Metadata.initialize(u);return null===i||((0,o.iterate_metadata)(e)(t)(r)(f,i,u,c),(0,a.emend_metadata_atomics)(f),f.resolved&&((0,a.emend_metadata_atomics)(f.resolved.original),(0,a.emend_metadata_atomics)(f.resolved.returns))),l=f,t.validate&&t.validate(l),l}}}}},3055:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata=void 0;var n=r(8352),a=r(2481),o=r(1333),i=r(8167),u=r(5032),c=r(4991),l=r(7540),f=r(4053),s=r(9859),d=r(6322),y=r(1985),p=r(2861),m=r(2402),v=r(7219);t.iterate_metadata=function(e){return function(t){return function(r){return function(h,g,_,b){if(!0===g.isTypeParameter())throw Error("Error on typia.MetadataFactory.generate(): non-specified generic argument on ".concat(h.getName(),"."));!(!0!==b&&(0,n.iterate_metadata_alias)(e)(t)(r)(h,g)||(0,c.iterate_metadata_intersection)(e)(t)(r)(h,g,_,b)||(0,v.iterate_metadata_union)(e)(t)(r)(h,g,_)||(0,d.iterate_metadata_resolve)(e)(t)(r)(h,g,_,b))&&((0,i.iterate_metadata_coalesce)(h,g)||(0,u.iterate_metadata_constant)(e)(t)(h,g)||(0,p.iterate_metadata_template)(e)(t)(r)(h,g)||(0,o.iterate_metadata_atomic)(h,g)||(0,m.iterate_metadata_tuple)(e)(t)(r)(h,g)||(0,a.iterate_metadata_array)(e)(t)(r)(h,g)||(0,f.iterate_metadata_native)(e)(h,g)||(0,l.iterate_metadata_map)(e)(t)(r)(h,g)||(0,y.iterate_metadata_set)(e)(t)(r)(h,g)||(0,s.iterate_metadata_object)(e)(t)(r)(h,g))}}}}},8352:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_alias=void 0;var n=r(3346),a=r(3389);t.iterate_metadata_alias=function(e){return function(t){return function(r){return function(o,i){if(!1!==t.absorb||void 0===i.aliasSymbol||void 0===(null===(u=i.aliasSymbol.declarations)||void 0===u?void 0:u[0]))return!1;var u,c=(0,a.emplace_metadata_alias)(e)(t)(r)(i,o.nullable);return n.ArrayUtil.add(o.aliases,c,function(e){return e.name===c.name}),!0}}}}},2481:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_array=void 0;var n=r(3346),a=r(5441);t.iterate_metadata_array=function(e){return function(t){return function(r){return function(o,i){if(!e.isArrayType(i))return!1;var u=(0,a.emplace_metadata_array)(e)(t)(r)(i,o.nullable);return n.ArrayUtil.add(o.arrays,u,function(e){return e.name===u.name}),!0}}}}},1333:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_atomic=void 0;var a=n(r(5423)),o=r(3346);t.iterate_metadata_atomic=function(e,t){var r=null===t?function(){return!1}:function(e){return(t.getFlags()&e)!=0};return i.some(function(t){return!!(r(t.atomic)||r(t.literal))&&(o.ArrayUtil.add(e.atomics,t.name),!0)})};var i=[{name:"boolean",atomic:a.default.TypeFlags.BooleanLike,literal:a.default.TypeFlags.BooleanLiteral},{name:"number",atomic:a.default.TypeFlags.NumberLike,literal:a.default.TypeFlags.NumberLiteral},{name:"bigint",atomic:a.default.TypeFlags.BigInt,literal:a.default.TypeFlags.BigIntLiteral},{name:"string",atomic:a.default.TypeFlags.StringLike,literal:a.default.TypeFlags.StringLiteral}]},8167:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_coalesce=void 0;var a=n(r(5423)),o=r(1261),i=r(2301);t.iterate_metadata_coalesce=function(e,t){var r=function(e){return(t.getFlags()&e)!=0};return r(a.default.TypeFlags.Unknown)||r(a.default.TypeFlags.Any)?((0,o.Writable)(e).any=!0,!0):r(a.default.TypeFlags.Null)?((0,o.Writable)(e).nullable=!0,!0):r(a.default.TypeFlags.Undefined)||r(a.default.TypeFlags.Never)||r(a.default.TypeFlags.Void)||r(a.default.TypeFlags.VoidLike)?((0,o.Writable)(e).required=!1,!0):!0===i.TypeFactory.isFunction(t)&&((0,o.Writable)(e).functional=!0,!0)}},628:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_collection=void 0;var a=r(9191);t.iterate_metadata_collection=function(e){try{for(var t,r,c,l,f,s,d=n(e.arrays()),y=d.next();!y.done;y=d.next()){var p=y.value;null===p.recursive&&e.setArrayRecursive(p,o(new Set)(p)(p.value))}}catch(e){t={error:e}}finally{try{y&&!y.done&&(r=d.return)&&r.call(d)}finally{if(t)throw t.error}}try{for(var m=n(e.tuples()),v=m.next();!v.done;v=m.next()){var h=v.value;if(null===h.recursive){var g=new Set;e.setTupleRecursive(h,h.elements.some(i(g)(h)))}}}catch(e){c={error:e}}finally{try{v&&!v.done&&(l=m.return)&&l.call(m)}finally{if(c)throw c.error}}var _=function(t){if((0,a.iterate_metadata_tag)(t),null===t.recursive){var r=new Set;e.setObjectRecursive(t,t.properties.some(function(e){return u(r)(t)(e.value)}))}};try{for(var b=n(e.objects()),x=b.next();!x.done;x=b.next()){var S=x.value;_(S)}}catch(e){f={error:e}}finally{try{x&&!x.done&&(s=b.return)&&s.call(b)}finally{if(f)throw f.error}}};var o=function(e){return function(t){return function(r){return!e.has(r)&&(e.add(r),r.arrays.some(function(r){return r===t||o(e)(t)(r.value)})||r.aliases.some(function(r){return o(e)(t)(r.value)})||r.tuples.some(function(r){return!r.recursive&&r.elements.some(function(r){return o(e)(t)(r)})})||r.maps.some(function(r){return o(e)(t)(r.value)})||r.sets.some(function(r){return o(e)(t)(r)})||null!==r.resolved&&o(e)(t)(r.resolved.returns)||null!==r.rest&&o(e)(t)(r.rest))}}},i=function(e){return function(t){return function(r){return!e.has(r)&&(e.add(r),r.tuples.some(function(r){return r===t||r.elements.some(function(r){return i(e)(t)(r)})})||r.arrays.some(function(r){return!r.recursive&&i(e)(t)(r.value)})||r.maps.some(function(r){return i(e)(t)(r.value)})||r.sets.some(function(r){return i(e)(t)(r)})||r.aliases.some(function(r){return i(e)(t)(r.value)})||null!==r.resolved&&i(e)(t)(r.resolved.returns)||null!==r.rest&&i(e)(t)(r.rest))}}},u=function(e){return function(t){return function(r){return!e.has(r)&&(e.add(r),r.objects.some(function(r){return t===r||r.properties.some(function(r){return u(e)(t)(r.value)})})||r.aliases.some(function(r){return u(e)(t)(r.value)})||r.arrays.some(function(r){return!r.recursive&&u(e)(t)(r.value)})||r.tuples.some(function(r){return!r.recursive&&r.elements.some(function(r){return u(e)(t)(r)})})||r.maps.some(function(r){return u(e)(t)(r.value)})||r.sets.some(function(r){return u(e)(t)(r)})||null!==r.resolved&&u(e)(t)(r.resolved.returns)||null!==r.rest&&u(e)(t)(r.rest))}}}},5032:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_constant=void 0;var a=n(r(5423)),o=r(3346);t.iterate_metadata_constant=function(e){return function(t){return function(r,n){if(!t.constant)return!1;if(n.isLiteral()){var i,u="object"==typeof n.value?BigInt("".concat(n.value.negative?"-":"").concat(n.value.base10Value)):n.value,c=o.ArrayUtil.take(r.constants,function(e){return e.type===typeof u},function(){return{type:typeof u,values:[]}});return o.ArrayUtil.add(c.values,u,function(e,t){return e===t}),!0}if(i=a.default.TypeFlags.BooleanLiteral,(n.getFlags()&i)!=0){var l="true"===e.typeToString(n),c=o.ArrayUtil.take(r.constants,function(e){return"boolean"===e.type},function(){return{type:"boolean",values:[]}});return o.ArrayUtil.add(c.values,l,function(e,t){return e===t}),!0}return!1}}}},4991:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")}),!0}}}}},4053:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_sort=void 0;var a=r(9133),o=r(5136);t.iterate_metadata_sort=function(e){return function(t){var r,a,o,u,c,l,f,s,d,y,p=new Set;try{for(var m=n(e.arrays()),v=m.next();!v.done;v=m.next()){var h=v.value;i(p)(e)(h.value)}}catch(e){r={error:e}}finally{try{v&&!v.done&&(a=m.return)&&a.call(m)}finally{if(r)throw r.error}}try{for(var g=n(e.tuples()),_=g.next();!_.done;_=g.next()){var b=_.value;try{for(var x=(c=void 0,n(b.elements)),S=x.next();!S.done;S=x.next()){var j=S.value;i(p)(e)(j)}}catch(e){c={error:e}}finally{try{S&&!S.done&&(l=x.return)&&l.call(x)}finally{if(c)throw c.error}}}}catch(e){o={error:e}}finally{try{_&&!_.done&&(u=g.return)&&u.call(g)}finally{if(o)throw o.error}}try{for(var P=n(e.objects()),w=P.next();!w.done;w=P.next()){var T=w.value;try{for(var E=(d=void 0,n(T.properties)),I=E.next();!I.done;I=E.next()){var O=I.value;i(p)(e)(O.value)}}catch(e){d={error:e}}finally{try{I&&!I.done&&(y=E.return)&&y.call(E)}finally{if(d)throw d.error}}}}catch(e){f={error:e}}finally{try{w&&!w.done&&(s=P.return)&&s.call(P)}finally{if(f)throw f.error}}i(p)(e)(t)}};var i=function(e){return function(t){return function(r){var u,c,l,f;if(!e.has(r)){e.add(r);try{for(var s=n(r.maps),d=s.next();!d.done;d=s.next()){var y=d.value;i(e)(t)(y.value)}}catch(e){u={error:e}}finally{try{d&&!d.done&&(c=s.return)&&c.call(s)}finally{if(u)throw u.error}}try{for(var p=n(r.sets),m=p.next();!m.done;m=p.next()){var v=m.value;i(e)(t)(v)}}catch(e){l={error:e}}finally{try{m&&!m.done&&(f=p.return)&&f.call(p)}finally{if(l)throw l.error}}null!==r.resolved&&i(e)(t)(r.resolved.returns),null!==r.rest&&i(e)(t)(r.rest),r.objects.length>1&&(r.objects.sort(function(e,t){return o.MetadataObject.covers(e,t)?-1:o.MetadataObject.covers(t,e)?1:0}),r.union_index=t.getUnionIndex(r)),r.arrays.length>1&&r.arrays.sort(function(e,t){return a.Metadata.covers(e.value,t.value)?-1:a.Metadata.covers(t.value,e.value)?1:0}),r.tuples.length>1&&r.tuples.sort(function(e,t){var r=a.Metadata.initialize(),n=a.Metadata.initialize();return r.tuples.push(e),n.tuples.push(t),a.Metadata.covers(r,n)?-1:a.Metadata.covers(n,r)?1:0})}}}}},9191:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_tag=void 0;var a=r(1261),o=r(5724),i=r(8954);t.iterate_metadata_tag=function(e){if(!0!==e.tagged_){var t,r;e.tagged_=!0;try{for(var u=n(e.properties),c=u.next();!c.done;c=u.next()){var l=c.value;!function(t){var r=t.key.getName(),n=r.length>=3&&'"'===r[0]&&'"'===r[r.length-1]&&o.Escaper.variable(r.slice(1,-1))?r.slice(1,-1):null;(0,a.Writable)(t).tags=i.MetadataTagFactory.generate(t.value)(t.jsDocTags)(null!==n?function(){return"".concat(e.name,".").concat(n)}:function(){return"".concat(e.name,"[").concat(r,"]")})}(l)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}}}},2861:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_template=void 0;var a=n(r(5423)),o=r(9614),i=r(1903);t.iterate_metadata_template=function(e){return function(t){return function(r){return function(n,u){if(c=a.default.TypeFlags.TemplateLiteral,(u.getFlags()&c)==0)return!1;var c,l=[];return u.texts.forEach(function(n,a){""!==n&&l.push(o.MetadataHelper.literal_to_metadata(n));var c=u.types[a];c&&l.push((0,i.explore_metadata)(e)(t)(r)(c,!1))}),n.templates.push(l),!0}}}}},2402:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_tuple=void 0;var n=r(3346),a=r(373);t.iterate_metadata_tuple=function(e){return function(t){return function(r){return function(o,i){if(!e.isTupleType(i))return!1;var u=(0,a.emplace_metadata_tuple)(e)(t)(r)(i,o.nullable);return n.ArrayUtil.add(o.tuples,u,function(e){return e.name===u.name}),!0}}}}},7219:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_union=void 0;var n=r(3055);t.iterate_metadata_union=function(e){return function(t){return function(r){return function(a,o,i){return!!o.isUnion()&&(o.types.forEach(function(o){return(0,n.iterate_metadata)(e)(t)(r)(a,o,i,!1)}),!0)}}}}},9133:function(e,t,r){"use strict";var n,a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a1},e.prototype.getSoleLiteral=function(){return 1===this.size()&&1===this.constants.length&&"string"===this.constants[0].type&&1===this.constants[0].values.length?this.constants[0].values[0]:null},e.prototype.isSoleLiteral=function(){return null!==this.getSoleLiteral()},e.prototype.isParentResolved=function(){return this.parent_resolved_},e}();t.Metadata=m,(n=m||(t.Metadata=m={})).intersects=function(e,t){if(e.any||t.any||!1===e.isRequired()&&!1===t.isRequired()||!0===e.nullable&&!0===t.nullable||!0===e.functional&&!0===t.functional||e.arrays.length&&t.arrays.length||e.tuples.length&&t.tuples.length||e.objects.length&&t.objects.length||e.aliases.length&&t.aliases.length||e.natives.length&&t.natives.length&&e.natives.some(function(e){return t.natives.some(function(t){return e===t})}))return!0;try{for(var r,n,u,c,l=a(e.atomics),f=l.next();!f.done;f=l.next()){var s=f.value;if(t.atomics.includes(s))return!0}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}var d=function(e){var r=t.constants.find(function(t){return t.type===e.type});return void 0===r?"continue":new Set(i(i([],o(e.values),!1),o(r.values),!1)).size!==e.values.length+r.values.length?{value:!0}:void 0};try{for(var y=a(e.constants),p=y.next();!p.done;p=y.next()){var m=p.value,v=d(m);if("object"==typeof v)return v.value}}catch(e){u={error:e}}finally{try{p&&!p.done&&(c=y.return)&&c.call(y)}finally{if(u)throw u.error}}return!1},n.covers=function(e,t,r){if(void 0===r&&(r=0),e===t)return!1;if(e.any)return!0;if(t.any)return!1;if(0===r){var o,i,u,c,l,f,d,y,p,m,v,h,g,_,b=function(t){if(!e.arrays.some(function(e){return n.covers(e.value,t.value,r+1)}))return{value:!1}};try{for(var x=a(t.arrays),S=x.next();!S.done;S=x.next()){var j=S.value,P=b(j);if("object"==typeof P)return P.value}}catch(e){o={error:e}}finally{try{S&&!S.done&&(i=x.return)&&i.call(x)}finally{if(o)throw o.error}}var w=function(t){if(0!==t.elements.length&&!1===e.tuples.some(function(e){return e.elements.length>=t.elements.length&&e.elements.slice(t.elements.length).every(function(e,a){return n.covers(e,t.elements[a],r+1)})}))return{value:!1}};try{for(var T=a(t.tuples),E=T.next();!E.done;E=T.next()){var I=E.value,O=w(I);if("object"==typeof O)return O.value}}catch(e){u={error:e}}finally{try{E&&!E.done&&(c=T.return)&&c.call(T)}finally{if(u)throw u.error}}}var F=function(t){if(!1===e.objects.some(function(e){return s.MetadataObject.covers(e,t)}))return{value:!1}};try{for(var k=a(t.objects),A=k.next();!A.done;A=k.next()){var M=A.value,C=F(M);if("object"==typeof C)return C.value}}catch(e){l={error:e}}finally{try{A&&!A.done&&(f=k.return)&&f.call(k)}finally{if(l)throw l.error}}var L=function(t){if(!1===e.aliases.some(function(e){return e.name===t.name}))return{value:!1}};try{for(var N=a(t.aliases),R=N.next();!R.done;R=N.next()){var D=R.value,q=L(D);if("object"==typeof q)return q.value}}catch(e){d={error:e}}finally{try{R&&!R.done&&(y=N.return)&&y.call(N)}finally{if(d)throw d.error}}var U=function(t){if(!1===e.natives.some(function(e){return e===t}))return{value:!1}};try{for(var V=a(t.natives),B=V.next();!B.done;B=V.next()){var J=B.value,z=U(J);if("object"==typeof z)return z.value}}catch(e){p={error:e}}finally{try{B&&!B.done&&(m=V.return)&&m.call(V)}finally{if(p)throw p.error}}var G=function(t){if(!1===e.sets.some(function(e){return n.covers(e,t)}))return{value:!1}};try{for(var K=a(t.sets),$=K.next();!$.done;$=K.next()){var W=$.value,Q=G(W);if("object"==typeof Q)return Q.value}}catch(e){v={error:e}}finally{try{$&&!$.done&&(h=K.return)&&h.call(K)}finally{if(v)throw v.error}}if(t.atomics.some(function(t){return!1===e.atomics.includes(t)}))return!1;var Y=function(t){if(e.atomics.some(function(e){return t.type===e}))return"continue";var r=e.constants.find(function(e){return e.type===t.type});return void 0===r?{value:!1}:t.values.some(function(e){return!1===r.values.includes(e)})?{value:!1}:void 0};try{for(var X=a(t.constants),H=X.next();!H.done;H=X.next()){var Z=H.value,ee=Y(Z);if("object"==typeof ee)return ee.value}}catch(e){g={error:e}}finally{try{H&&!H.done&&(_=X.return)&&_.call(X)}finally{if(g)throw g.error}}return!1!==e.functional||!t.functional},n.merge=function(e,t){var r,u,l,f,s,d,p,m,v,h,g,_,b=n.create({any:e.any||t.any,nullable:e.nullable||t.nullable,required:e.required&&t.required,optional:e.optional||t.optional,functional:e.functional||t.functional,resolved:null!==e.resolved&&null!==t.resolved?y.MetadataResolved.create({original:n.merge(e.resolved.original,t.resolved.original),returns:n.merge(e.resolved.returns,t.resolved.returns)}):null!==(g=e.resolved)&&void 0!==g?g:t.resolved,atomics:i([],o(new Set(i(i([],o(e.atomics),!1),o(t.atomics),!1))),!1),constants:i([],o(e.constants),!1),templates:e.templates.slice(),rest:null!==e.rest&&null!==t.rest?n.merge(e.rest,t.rest):null!==(_=e.rest)&&void 0!==_?_:t.rest,arrays:e.arrays.slice(),tuples:e.tuples.slice(),objects:e.objects.slice(),aliases:e.aliases.slice(),natives:i([],o(new Set(i(i([],o(e.natives),!1),o(t.natives),!1))),!1),sets:e.sets.slice(),maps:e.maps.slice()}),x=function(e){var t,r,n=c.ArrayUtil.take(b.constants,function(t){return t.type===e.type},function(){return{type:e.type,values:[]}});try{for(var o=(t=void 0,a(e.values)),i=o.next();!i.done;i=o.next()){var u=i.value;c.ArrayUtil.add(n.values,u)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}};try{for(var S=a(t.constants),j=S.next();!j.done;j=S.next()){var P=j.value;x(P)}}catch(e){r={error:e}}finally{try{j&&!j.done&&(u=S.return)&&u.call(S)}finally{if(r)throw r.error}}try{for(var w=a(t.arrays),T=w.next();!T.done;T=w.next()){var E=T.value;c.ArrayUtil.set(b.arrays,E,function(e){return e.name})}}catch(e){l={error:e}}finally{try{T&&!T.done&&(f=w.return)&&f.call(w)}finally{if(l)throw l.error}}try{for(var I=a(t.tuples),O=I.next();!O.done;O=I.next()){var F=O.value;c.ArrayUtil.set(b.tuples,F,function(e){return e.name})}}catch(e){s={error:e}}finally{try{O&&!O.done&&(d=I.return)&&d.call(I)}finally{if(s)throw s.error}}try{for(var k=a(t.objects),A=k.next();!A.done;A=k.next()){var M=A.value;c.ArrayUtil.set(b.objects,M,function(e){return e.name})}}catch(e){p={error:e}}finally{try{A&&!A.done&&(m=k.return)&&m.call(k)}finally{if(p)throw p.error}}try{for(var C=a(t.aliases),L=C.next();!L.done;L=C.next()){var N=L.value;c.ArrayUtil.set(b.aliases,N,function(e){return e.name})}}catch(e){v={error:e}}finally{try{L&&!L.done&&(h=C.return)&&h.call(C)}finally{if(v)throw v.error}}return b};var v=function(e){if(!0===e.any)return"any";var t,r,n,o,i,u,c,l,f,s,d,y,p,m,v,h,g,_,b,x,S,j,P=[];!0===e.nullable&&P.push("null"),!1===e.isRequired()&&P.push("undefined");try{for(var w=a(e.atomics),T=w.next();!T.done;T=w.next()){var E=T.value;P.push(E)}}catch(e){t={error:e}}finally{try{T&&!T.done&&(r=w.return)&&r.call(w)}finally{if(t)throw t.error}}try{for(var I=a(e.constants),O=I.next();!O.done;O=I.next()){var F=O.value;try{for(var k=(i=void 0,a(F.values)),A=k.next();!A.done;A=k.next()){var M=A.value;P.push(JSON.stringify(M))}}catch(e){i={error:e}}finally{try{A&&!A.done&&(u=k.return)&&u.call(k)}finally{if(i)throw i.error}}}}catch(e){n={error:e}}finally{try{O&&!O.done&&(o=I.return)&&o.call(I)}finally{if(n)throw n.error}}try{for(var C=a(e.templates),L=C.next();!L.done;L=C.next()){var N=L.value;P.push("`"+N.map(function(e){return e.isConstant()&&1===e.size()?e.constants[0].values[0]:"${".concat(e.getName(),"}")}).join("").split("`").join("\\`")+"`")}}catch(e){c={error:e}}finally{try{L&&!L.done&&(l=C.return)&&l.call(C)}finally{if(c)throw c.error}}try{for(var R=a(e.natives),D=R.next();!D.done;D=R.next()){var q=D.value;P.push(q)}}catch(e){f={error:e}}finally{try{D&&!D.done&&(s=R.return)&&s.call(R)}finally{if(f)throw f.error}}try{for(var U=a(e.sets),V=U.next();!V.done;V=U.next()){var B=V.value;P.push("Set<".concat(B.getName(),">"))}}catch(e){d={error:e}}finally{try{V&&!V.done&&(y=U.return)&&y.call(U)}finally{if(d)throw d.error}}try{for(var J=a(e.maps),z=J.next();!z.done;z=J.next()){var G=z.value;P.push("Map<".concat(G.key.getName(),", ").concat(G.value.getName(),">"))}}catch(e){p={error:e}}finally{try{z&&!z.done&&(m=J.return)&&m.call(J)}finally{if(p)throw p.error}}null!==e.rest&&P.push("...".concat(e.rest.getName()));try{for(var K=a(e.tuples),$=K.next();!$.done;$=K.next()){var W=$.value;P.push(W.name)}}catch(e){v={error:e}}finally{try{$&&!$.done&&(h=K.return)&&h.call(K)}finally{if(v)throw v.error}}try{for(var Q=a(e.arrays),Y=Q.next();!Y.done;Y=Q.next()){var X=Y.value;P.push(X.name)}}catch(e){g={error:e}}finally{try{Y&&!Y.done&&(_=Q.return)&&_.call(Q)}finally{if(g)throw g.error}}try{for(var H=a(e.objects),Z=H.next();!Z.done;Z=H.next()){var ee=Z.value;P.push(ee.name)}}catch(e){b={error:e}}finally{try{Z&&!Z.done&&(x=H.return)&&x.call(H)}finally{if(b)throw b.error}}try{for(var et=a(e.aliases),er=et.next();!er.done;er=et.next()){var en=er.value;P.push(en.name)}}catch(e){S={error:e}}finally{try{er&&!er.done&&(j=et.return)&&j.call(et)}finally{if(S)throw S.error}}return(null!==e.resolved&&P.push(e.resolved.getName()),0===P.length)?"unknown":1===P.length?P[0]:(P.sort(),"(".concat(P.join(" | "),")"))}},4981:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataAlias=void 0;var r=function(){function e(e){this.name=e.name,this.value=e.value,this.description=e.description,this.tags=e.tags,this.jsDocTags=e.jsDocTags,this.recursive=e.recursive,this.nullables=e.nullables}return e.create=function(t){return new e(t)},e._From_without_value=function(e){return this.create({name:e.name,value:null,description:e.description,recursive:e.recursive,tags:e.tags.slice(),jsDocTags:e.jsDocTags.slice(),nullables:e.nullables.slice()})},e.prototype.toJSON=function(){return{name:this.name,value:this.value.toJSON(),description:this.description,recursive:this.recursive,tags:this.tags.slice(),jsDocTags:this.jsDocTags.slice(),nullables:this.nullables.slice()}},e}();t.MetadataAlias=r},8975:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataArray=void 0;var r=function(){function e(e){this.name=e.name,this.value=e.value,this.index=e.index,this.recursive=e.recursive,this.nullables=e.nullables}return e._From_without_value=function(e){return this.create({name:e.name,value:null,index:e.index,recursive:e.recursive,nullables:e.nullables})},e.create=function(t){return new e(t)},e.prototype.toJSON=function(){return{name:this.name,value:this.value.toJSON(),nullables:this.nullables,recursive:this.recursive,index:this.index}},e}();t.MetadataArray=r},5136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataObject=void 0;var r,n=function(){function e(e){this.nullables=[],this.tagged_=!1,this.name=e.name,this.properties=e.properties,this.description=e.description,this.jsDocTags=e.jsDocTags,this.index=e.index,this.validated=e.validated,this.recursive=e.recursive,this.nullables=[],this.tagged_=!1}return e.create=function(t){return new e(t)},e._From_without_properties=function(e){return this.create({name:e.name,properties:[],description:e.description,jsDocTags:e.jsDocTags,index:e.index,validated:e.validated,recursive:e.recursive,nullables:e.nullables.slice()})},e.prototype._Is_simple=function(e){return void 0===e&&(e=0),!1===this.recursive&&this.properties.length<10&&this.properties.every(function(t){return t.key.isSoleLiteral()&&1===t.value.size()&&!0===t.value.isRequired()&&!1===t.value.nullable&&(1===t.value.atomics.length||e<1&&1===t.value.objects.length&&t.value.objects[0]._Is_simple(e+1))})},e.prototype.toJSON=function(){return{name:this.name,properties:this.properties.map(function(e){return e.toJSON()}),description:this.description,jsDocTags:this.jsDocTags,index:this.index,validated:this.validated,recursive:this.recursive,nullables:this.nullables.slice()}},e}();t.MetadataObject=n,(r=n||(t.MetadataObject=n={})).intersects=function(e,t){return e.properties.some(function(e){return void 0!==t.properties.find(function(t){return e.key.getName()===t.key.getName()})})},r.covers=function(e,t){return e.properties.length>=t.properties.length&&e.properties.every(function(e){return void 0!==t.properties.find(function(t){return e.key.getName()===t.key.getName()})})}},2416:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataProperty=void 0;var n=r(9133),a=function(){function e(e){this.key=e.key,this.value=e.value,this.description=e.description,this.tags=e.tags,this.jsDocTags=e.jsDocTags}return e.create=function(t){return new e(t)},e._From=function(e,t){return this.create({key:n.Metadata._From(e.key,t),value:n.Metadata._From(e.value,t),description:e.description,tags:e.tags.slice(),jsDocTags:e.jsDocTags.slice()})},e.prototype.toJSON=function(){return{key:this.key.toJSON(),value:this.value.toJSON(),description:this.description,tags:this.tags,jsDocTags:this.jsDocTags}},e}();t.MetadataProperty=a},6282:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataResolved=void 0;var n=r(9133),a=function(){function e(e){this.original=e.original,this.returns=e.returns}return e._From=function(e,t){return this.create({original:n.Metadata._From(e.original,t),returns:n.Metadata._From(e.returns,t)})},e.create=function(t){return new e(t)},e.prototype.getName=function(){return this.returns.getName()},e.prototype.toJSON=function(){return{original:this.original.toJSON(),returns:this.returns.toJSON()}},e}();t.MetadataResolved=a},4712:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataTuple=void 0;var r=function(){function e(e){this.name=e.name,this.elements=e.elements,this.index=e.index,this.recursive=e.recursive,this.nullables=e.nullables}return e._From_without_elements=function(e){return this.create({name:e.name,index:e.index,elements:null,recursive:e.recursive,nullables:e.nullables.slice()})},e.create=function(t){return new e(t)},e.prototype.toJSON=function(){return{name:this.name,index:this.index,elements:this.elements.map(function(e){return e.toJSON()}),recursive:this.recursive,nullables:this.nullables.slice()}},e}();t.MetadataTuple=r},4375:function(e,t,r){"use strict";var n,a,o,i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("assert",f.AssertProgrammer.write(e)(t)(!1)(r,n)),c.StatementFactory.constant("clone",s.CloneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createCallExpression(i.default.factory.createIdentifier("assert"),void 0,[i.default.factory.createIdentifier("input")])),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("clone"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},5872:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("assert",f.AssertProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(!1)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("input"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("JSON.parse"),void 0,[i.default.factory.createIdentifier("input")]))),i.default.factory.createReturnStatement(i.default.factory.createAsExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("assert"),void 0,[i.default.factory.createIdentifier("input")]),i.default.factory.createTypeReferenceNode("any")))]))}}}},4023:function(e,t,r){"use strict";var n,a,o,i,u,c=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},l=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},_=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},b=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a1&&e.arrays.some(function(e){return e.recursive}))throw Error("Repeated union array types are not supported yet.")}})(r)(e);return[r,n]}},addition:t.addition,decoder:function(){var a,o;return null!==(o=null===(a=t.decoder)||void 0===a?void 0:a.call(t))&&void 0!==o?o:n.decode(e)(t)(r)},objector:{checker:function(){var a,o;return null!==(o=null===(a=t.decoder)||void 0===a?void 0:a.call(t))&&void 0!==o?o:n.decode(e)(t)(r)},decoder:function(){return n.decode_object(t)(r)},joiner:t.joiner.object,unionizer:t.equals?(0,B.decode_union_object)(n.decode_object(t)(r))(function(e,a,o){return n.decode_object(t)(r)(e,a,h(h({},o),{tracable:!0}))})(null!==(o=t.joiner.is)&&void 0!==o?o:function(e){return e})(function(e,r){return S.default.factory.createReturnStatement(t.joiner.failure(e,r))}):function(e,a,o){return t.combiner(o)("or")(e,a.map(function(a){return{expression:n.decode_object(t)(r)(e,a,o),combined:!0}}),"(".concat(a.map(function(e){return e.name}).join(" | "),")"))},failure:function(e,r){return S.default.factory.createReturnStatement(t.joiner.failure(e,r))},is:t.joiner.is,required:t.joiner.required,full:t.joiner.full,type:I.TypeFactory.keyword("boolean")},generator:{unions:t.numeric?function(){return k.FeatureProgrammer.write_union_functions(a(e)(h(h({},t),{numeric:!1}))(r))}:void 0,arrays:function(){return n.write_array_functions(e)(t)(r)},tuples:function(){return n.write_tuple_functions(e)(t)(r)}}}}}},n.decode=function(e){return function(t){return function(r){return function(n,a,i,c,p){if(a.any)return t.success;var v,x,P,w,T,E,I,F,k=[],C=[],N=z(C)(n),B=a.empty()||a.isUnionBucket();(B||a.nullable)&&(a.nullable?N:z(k)(n))(a.nullable,O.ValueFactory.NULL()),(B||!a.isRequired())&&(a.isRequired()?z(k)(n):N)(!a.isRequired(),O.ValueFactory.UNDEFINED()),!0===a.functional&&(M.OptionPredicator.functional(e.options)||1!==a.size()?N(!0,S.default.factory.createStringLiteral("function"),O.ValueFactory.TYPEOF(n)):C.push({combined:!1,expression:t.success}));try{for(var J=g(a.constants),G=J.next();!G.done;G=J.next()){var K=G.value;if(A.AtomicPredicator.constant(a)(K.type))try{for(var $=(P=void 0,g(K.values)),W=$.next();!W.done;W=$.next()){var Q=W.value;N(!0,"string"==typeof Q?S.default.factory.createStringLiteral(Q):S.default.factory.createIdentifier(Q.toString()))}}catch(e){P={error:e}}finally{try{W&&!W.done&&(w=$.return)&&w.call($)}finally{if(P)throw P.error}}}}catch(e){v={error:e}}finally{try{G&&!G.done&&(x=J.return)&&x.call(J)}finally{if(v)throw v.error}}try{for(var Y=g(a.atomics),X=Y.next();!X.done;X=Y.next()){var H=X.value;!1!==A.AtomicPredicator.atomic(a)(H)&&("number"===H?C.push({expression:t.atomist(i)((0,q.check_number)(e,t.numeric)(r)(c)(p)(n))(n),combined:!1}):"bigint"===H?C.push({expression:t.atomist(i)((0,R.check_bigint)(r)(c)(p)(n))(n),combined:!1}):"string"===H?C.push({expression:t.atomist(i)((0,U.check_string)(r)(c)(p)(n))(n),combined:!1}):N(!0,S.default.factory.createStringLiteral(H),O.ValueFactory.TYPEOF(n)))}}catch(e){T={error:e}}finally{try{X&&!X.done&&(E=Y.return)&&E.call(Y)}finally{if(T)throw T.error}}a.templates.length&&A.AtomicPredicator.template(a)&&C.push({expression:t.atomist(i)((0,V.check_template)(r)(c)(p)(a.templates)(n))(n),combined:!1});try{for(var Z=g(a.natives),ee=Z.next();!ee.done;ee=Z.next()){var et=ee.value;C.push({expression:(0,D.check_native)(et)(n),combined:!1})}}catch(e){I={error:e}}finally{try{ee&&!ee.done&&(F=Z.return)&&F.call(Z)}finally{if(I)throw I.error}}var er=[],en=function(e,t){return function(r){return er.push({pre:e,expected:t,body:r})}};if(a.sets.length){var ea=en((0,D.check_native)("Set")(n),a.sets.map(function(e){return"Set<".concat(e.getName(),">")}).join(" | "));ea(a.sets.some(function(e){return e.any})?null:l(e)(t)(r)(n,a.sets,h(h({},i),{from:"array"}),[],[]))}if(a.maps.length){var ea=en((0,D.check_native)("Map")(n),a.maps.map(function(e){var t=e.key,r=e.value;return"Map<".concat(t,", ").concat(r,">")}).join(" | "));ea(a.maps.some(function(e){return e.key.any&&e.value.any})?null:f(e)(t)(r)(n,a.maps,h(h({},i),{from:"array"}),[],[]))}if(a.tuples.length+a.arrays.length>0){var ea=en(t.atomist(i)((0,L.check_array)(r)(0===a.tuples.length?c:[])(p)(n))(n),b(b([],_(a.tuples),!1),_(a.arrays),!1).map(function(e){return e.name}).join(" | "));ea(0===a.arrays.length?1===a.tuples.length?u(e)(t)(r)(n,a.tuples[0],h(h({},i),{from:"array"}),c,p):s(e)(t)(r)(n,a.tuples,h(h({},i),{from:"array"}),c,p):a.arrays.some(function(e){return e.value.any})?null:0===a.tuples.length?1===a.arrays.length?o(e)(t)(r)(n,a.arrays[0],h(h({},i),{from:"array"}),c,p):d(e)(t)(r)(n,a.arrays,h(h({},i),{from:"array"}),c,p):y(e)(t)(r)(n,b(b([],_(a.tuples),!1),_(a.arrays),!1),i,c,p))}if(a.objects.length>0&&en(j.ExpressionFactory.isObject({checkNull:!0,checkArray:a.objects.some(function(e){return e.properties.every(function(e){return!e.key.isSoleLiteral()||!e.value.isRequired()})})})(n),a.objects.map(function(e){return e.name}).join(" | "))(m(t)(r)(n,a,h(h({},i),{from:"object"}))),er.length){var eo=function(e){return function(t){return t.body?{expression:e(t.pre,t.body),combined:!0}:{expression:t.pre,combined:!1}}};1===er.length?C.push(eo(function(e,r){return t.combiner(i)("and")(n,[e,r].map(function(t){return{expression:t,combined:t!==e}}),a.getName())})(er[0])):C.push({expression:t.combiner(i)("or")(n,er.map(eo(S.default.factory.createLogicalAnd)),a.getName()),combined:!0})}return k.length&&C.length?t.combiner(i)("and")(n,b(b([],_(k),!1),[{expression:t.combiner(i)("or")(n,C,a.getName()),combined:!0}],!1),a.getName()):C.length?t.combiner(i)("or")(n,C,a.getName()):t.success}}}},n.decode_object=function(e){return function(t){var r=k.FeatureProgrammer.decode_object(e)(t);return function(e,t,n){return t.validated=!0,r(e,t,n)}}},o=function(e){return function(t){return function(r){return function(n,a,o,u,c){return!1===a.recursive?i(e)(t)(r)(n,a,o,u,c):(o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createLogicalOr(S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"a").concat(a.index))),void 0,k.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function",from:"array"}))(n)),t.joiner.failure(n,a.name,o)))}}}},i=function(e){return function(t){return function(r){return k.FeatureProgrammer.decode_array({prefix:t.prefix,trace:t.trace,path:t.path,decoder:function(){return n.decode(e)(t)(r)}})(r)(t.joiner.array)}}},u=function(e){return function(t){return function(r){return function(n,a,o,i,u){return!1===a.recursive?c(e)(t)(r)(n,a,o,i,u):(o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createLogicalOr(S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,k.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function"}))(n)),t.joiner.failure(n,a.name,o)))}}}},c=function(e){return function(t){return function(r){return function(a,o,i,u,c){var l=o.elements.filter(function(e){return null===e.rest}).map(function(o,l){return n.decode(e)(t)(r)(S.default.factory.createElementAccessExpression(a,l),o,h(h({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(l,']"'):'"['.concat(l,']"')}),u,c)}),f=o.elements.length&&null!==o.elements.at(-1).rest?n.decode(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("slice"),void 0,[S.default.factory.createNumericLiteral(o.elements.length-1)]),(0,J.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),h(h({},i),{start:o.elements.length-1}),u,c):null,s=S.default.factory.createPropertyAccessExpression(a,"length");return t.combiner(i)("and")(a,b(b(b([],_(null===f?o.elements.every(function(e){return!1===e.optional})?[{combined:!1,expression:S.default.factory.createStrictEquality(s,S.default.factory.createNumericLiteral(o.elements.length))}]:[{combined:!1,expression:S.default.factory.createLogicalAnd(S.default.factory.createLessThanEquals(S.default.factory.createNumericLiteral(o.elements.filter(function(e){return!1===e.optional}).length),s),S.default.factory.createGreaterThanEquals(S.default.factory.createNumericLiteral(o.elements.length),s))}]:[]),!1),_(t.joiner.tuple?[{expression:t.joiner.tuple(l),combined:!0}]:l.map(function(e){return{expression:e,combined:!0}})),!1),_(null!==f?[{expression:f,combined:!0}]:[]),!1),"[".concat(o.elements.map(function(e){return e.getName()}).join(", "),"]"))}}}},l=function(e){return function(t){return function(r){return function(a,i,u,c,l){return S.default.factory.createCallExpression(C.UnionExplorer.set({checker:n.decode(e)(t)(r),decoder:o(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}})([])(a,i,u,c,l),void 0,void 0)}}}},f=function(e){return function(t){return function(r){return function(a,i,u,c,l){return S.default.factory.createCallExpression(C.UnionExplorer.map({checker:function(a,o,i){var u=n.decode(e)(t)(r);return S.default.factory.createLogicalAnd(u(S.default.factory.createElementAccessExpression(a,0),o[0],h(h({},i),{postfix:"".concat(i.postfix,"[0]")}),[],[]),u(S.default.factory.createElementAccessExpression(a,1),o[1],h(h({},i),{postfix:"".concat(i.postfix,"[1]")}),[],[]))},decoder:o(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}})([])(a,i,u,c,l),void 0,void 0)}}}},s=function(e){return function(t){return function(r){return function(n,a,o,i,c){return p(t)(r)(C.UnionExplorer.tuple({checker:u(e)(t)(r),decoder:u(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}}))(n,a,o,i,c)}}}},d=function(e){return function(t){return function(r){return function(a,i,u,c,l){return p(t)(r)(C.UnionExplorer.array({checker:n.decode(e)(t)(r),decoder:o(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}}))(a,i,u,c,l)}}}},y=function(e){return function(t){return function(r){return function(a,i,c,l,f){return p(t)(r)(C.UnionExplorer.array_or_tuple({checker:function(a,o,i,c,l,f){return o instanceof F.MetadataTuple?u(e)(t)(r)(a,o,i,c,l):t.atomist(i)({expression:n.decode(e)(t)(r)(a,o,i,c,l),tags:(0,N.check_array_length)(c)(f)})(f)},decoder:function(n,a,i,c,l){return a instanceof F.MetadataTuple?u(e)(t)(r)(n,a,i,c,l):o(e)(t)(r)(n,a,i,c,l)},empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}}))(a,i,c,l,f)}}}},p=function(e){return function(t){return function(r){return function(n,a,o,i,u){var c=function(e){return function(t){return function(n){return r(e)(n,a,t,i,u)}}};return a.every(function(e){return!1===e.recursive})&&S.default.factory.createCallExpression(c([])(o)(n),void 0,[]),o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createLogicalOr(S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return c(k.FeatureProgrammer.parameterDeclarations(e)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")))(h(h({},o),{postfix:""}))(S.default.factory.createIdentifier("input"))})),void 0,k.FeatureProgrammer.argumentsArray(e)(o)(n)),e.joiner.failure(n,a.map(function(e){return e.name}).join(" | "),o))}}}},m=function(e){return function(t){return function(r,a,o){return 1===a.objects.length?n.decode_object(e)(t)(r,a.objects[0],o):S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.useLocal("".concat(e.prefix,"u").concat(a.union_index))),void 0,k.FeatureProgrammer.argumentsArray(e)(o)(r))}}};var z=function(e){return function(t){return function(r,n,a){void 0===a&&(a=t);var o=r?S.default.factory.createStrictEquality:S.default.factory.createStrictInequality;e.push({expression:o(n,a),combined:!1})}}}},1062:function(e,t,r){"use strict";var n,a,o,i,u,c,l,f,s,d,y,p,m,v,h=this&&this.__assign||function(){return(h=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},_=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},x=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CloneProgrammer=void 0;var S=x(r(5423)),j=r(3906),P=r(2726),w=r(2595),T=r(3390),E=r(6152),I=r(2301),O=r(9133),F=r(2114),k=r(3348),A=r(1739),M=r(1959),C=r(7144),L=r(9687),N=r(9714);(v||(t.CloneProgrammer=v={})).write=function(e){return function(t){var r=new M.FunctionImporter;return F.FeatureProgrammer.write(e)(h(h({},y(e)(r)),{addition:function(n){return _(_([],g(k.IsProgrammer.write_function_statements(e)(r)(n)),!1),g(r.declare(t)),!1)}}))(r)}},n=function(e){return function(t){return function(r){return function(n,o,i){if(o.any||o.arrays.some(function(e){return e.value.any})||o.tuples.some(function(e){return e.elements.every(function(e){return e.any})}))return S.default.factory.createCallExpression(r.use("any"),void 0,[n]);var c,s,d,y,p,m,v=[];null!==o.resolved&&v.push({type:"resolved",is:function(){return k.IsProgrammer.decode_to_json(!0)(n)},value:function(){return a(e)(t)(r)(n,o.resolved.returns,i)}});var g=function(a){v.push({type:"tuple",is:function(){var t;return k.IsProgrammer.decode(e)(r)(n,((t=O.Metadata.initialize()).tuples.push(a),t),i,[],[])},value:function(){return u(e)(t)(r)(n,a,i)}})};try{for(var _=b(o.tuples),x=_.next();!x.done;x=_.next()){var w=x.value;g(w)}}catch(e){c={error:e}}finally{try{x&&!x.done&&(s=_.return)&&s.call(_)}finally{if(c)throw c.error}}o.arrays.length&&v.push({type:"array",is:function(){return j.ExpressionFactory.isArray(n)},value:function(){return f(e)(t)(r)(n,o.arrays,h(h({},i),{from:"array"}))}}),o.sets.length&&v.push({type:"set",is:function(){return j.ExpressionFactory.isInstanceOf("Set")(n)},value:function(){return S.default.factory.createIdentifier("{}")}}),o.maps.length&&v.push({type:"map",is:function(){return j.ExpressionFactory.isInstanceOf("Map")(n)},value:function(){return S.default.factory.createIdentifier("{}")}});var T=function(e){v.push({type:"native",is:function(){return j.ExpressionFactory.isInstanceOf(e)(n)},value:function(){return"Boolean"===e||"Number"===e||"String"===e?S.default.factory.createCallExpression(P.IdentifierFactory.access(n)("valueOf"),void 0,void 0):S.default.factory.createIdentifier("{}")}})};try{for(var E=b(o.natives),F=E.next();!F.done;F=E.next()){var A=F.value;T(A)}}catch(e){d={error:e}}finally{try{F&&!F.done&&(y=E.return)&&y.call(E)}finally{if(d)throw d.error}}o.objects.length&&v.push({type:"object",is:function(){return j.ExpressionFactory.isObject({checkNull:!0,checkArray:!1})(n)},value:function(){return l(t)(r)(n,o,h(h({},i),{from:"object"}))}});var M=n;try{for(var C=b(v.reverse()),L=C.next();!L.done;L=C.next()){var N=L.value;M=S.default.factory.createConditionalExpression(N.is(),void 0,N.value(),void 0,M)}}catch(e){p={error:e}}finally{try{L&&!L.done&&(m=C.return)&&m.call(C)}finally{if(p)throw p.error}}return S.default.factory.createAsExpression(M,I.TypeFactory.keyword("any"))}}}},a=function(e){return function(t){return function(r){return function(a,o,i){return n(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("toJSON"),void 0,[]),o,i)}}}},o=function(e){return F.FeatureProgrammer.decode_object({trace:!1,path:!1,prefix:d})(e)},i=function(e){return function(t){return function(r,n,a){return F.FeatureProgrammer.decode_array(e)(t)(A.CloneJoiner.array)(r,n,a,[],[])}}},u=function(e){return function(t){return function(r){return function(n,a,o){return a.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function"}))(n)):c(e)(t)(r)(n,a,o)}}}},c=function(e){return function(t){return function(r){return function(a,o,i){var u=o.elements.filter(function(e){return null===e.rest}).map(function(o,u){return n(e)(t)(r)(S.default.factory.createElementAccessExpression(a,u),o,h(h({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(u,']"'):'"['.concat(u,']"')}))}),c=0===o.elements.length||null===o.elements.at(-1).rest?null:n(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("slice"),void 0,[S.default.factory.createNumericLiteral(o.elements.length-1)]),(0,N.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),h(h({},i),{start:o.elements.length-1}));return A.CloneJoiner.tuple(u,c)}}}},l=function(e){return function(t){return function(r,n,a){return 1===n.objects.length?o(t)(r,n.objects[0],a):S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.useLocal("".concat(d,"u").concat(n.union_index))),void 0,F.FeatureProgrammer.argumentsArray(e)(a)(r))}}},f=function(e){return function(t){return function(r){return function(n,a,o){return s(t)(r)(C.UnionExplorer.array({checker:k.IsProgrammer.decode(e)(r),decoder:function(e,n,a){return n.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"a").concat(n.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},a),{source:"function",from:"array"}))(e)):i(t)(r)(e,n,a)},empty:S.default.factory.createIdentifier("[]"),success:S.default.factory.createTrue(),failure:function(e,t){return m(r)(t)(e)}}))(n,a,o)}}}},s=function(e){return function(t){return function(r){return function(n,a,o){var i=function(e){return function(t){return function(n){return r(e)(n,a,t,[],[])}}};return a.every(function(e){return!1===e.recursive})&&S.default.factory.createCallExpression(i([])(o)(n),void 0,[]),o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return i(F.FeatureProgrammer.parameterDeclarations(e)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")))(h(h({},o),{postfix:""}))(S.default.factory.createIdentifier("input"))})),void 0,F.FeatureProgrammer.argumentsArray(e)(o)(n))}}}},d="$c",y=function(e){return function(t){var r={types:{input:function(t,r){return S.default.factory.createTypeReferenceNode(null!=r?r:I.TypeFactory.getFullName(e.checker)(t))},output:function(t,r){return S.default.factory.createTypeReferenceNode("typia.Primitive<".concat(null!=r?r:I.TypeFactory.getFullName(e.checker)(t),">"))}},prefix:d,trace:!1,path:!1,initializer:p,decoder:function(){return n(e)(r)(t)},objector:{checker:function(){return k.IsProgrammer.decode(e)(t)},decoder:function(){return o(t)},joiner:A.CloneJoiner.object,unionizer:(0,L.decode_union_object)(k.IsProgrammer.decode_object(t))(o(t))(function(e){return e})(function(e,r){return m(t)(r)(e)}),failure:function(e,r){return m(t)(r)(e)}},generator:{arrays:function(){return function(e){return e.arrays().filter(function(e){return e.recursive}).map(function(e,n){return E.StatementFactory.constant("".concat(r.prefix,"a").concat(n),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),I.TypeFactory.keyword("any"),void 0,i(r)(t)(S.default.factory.createIdentifier("input"),e,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}},tuples:function(){var n;return n=t,function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,a){return E.StatementFactory.constant("".concat(r.prefix,"t").concat(a),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),I.TypeFactory.keyword("any"),void 0,c(e)(r)(n)(S.default.factory.createIdentifier("input"),t,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}}}};return r}},p=function(e){var t=e.checker;return function(e){var r=new w.MetadataCollection,n=T.MetadataFactory.analyze(t)({resolve:!0,constant:!0,absorb:!0})(r)(e);return[r,n]}},m=function(e){return function(t){return function(r){return S.default.factory.createExpressionStatement(S.default.factory.createCallExpression(e.use("throws"),[],[S.default.factory.createObjectLiteralExpression([S.default.factory.createPropertyAssignment("expected",S.default.factory.createStringLiteral(t)),S.default.factory.createPropertyAssignment("value",r)],!0)]))}}}},2114:function(e,t,r){"use strict";var n,a,o,i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")),i.default.factory.createLiteralTypeNode(i.default.factory.createNull())]),void 0,i.default.factory.createBlock([c.StatementFactory.constant("is",s.IsProgrammer.write(e)(t)(!1)(r,n)),c.StatementFactory.constant("clone",f.CloneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),i.default.factory.createIfStatement(i.default.factory.createPrefixUnaryExpression(i.default.SyntaxKind.ExclamationToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("is"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createNull())),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("clone"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},6154:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("is",f.IsProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(!1)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("input"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("JSON.parse"),void 0,[i.default.factory.createIdentifier("input")]))),i.default.factory.createReturnStatement(i.default.factory.createConditionalExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("is"),void 0,[i.default.factory.createIdentifier("input")]),void 0,i.default.factory.createAsExpression(i.default.factory.createIdentifier("input"),l.TypeFactory.keyword("any")),void 0,i.default.factory.createNull()))]))}}}},3348:function(e,t,r){"use strict";var n,a,o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},_=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},x=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PruneProgrammer=void 0;var S=x(r(5423)),j=r(3906),P=r(2726),w=r(2595),T=r(3390),E=r(6152),I=r(2301),O=r(9133),F=r(2114),k=r(3348),A=r(1959),M=r(3065),C=r(7144),L=r(9687),N=r(9714);(v||(t.PruneProgrammer=v={})).write=function(e){return function(t){var r=new A.FunctionImporter;return F.FeatureProgrammer.write(e)(h(h({},y(e)(r)),{addition:function(n){return _(_([],g(k.IsProgrammer.write_function_statements(e)(r)(n)),!1),g(r.declare(t)),!1)}}))(r)}},n=function(e){return function(t){return function(r){return function(n,a,o){if(!1===s(a))return S.default.factory.createBlock([]);var u,f,d,y,p=[],m=function(a){p.push({type:"tuple",is:function(){var t;return k.IsProgrammer.decode(e)(r)(n,((t=O.Metadata.initialize()).tuples.push(a),t),o,[],[])},value:function(){return i(e)(t)(r)(n,a,o)}})};try{for(var v=b(a.tuples.filter(function(e){return e.elements.some(function(e){var t;return s(null!==(t=e.rest)&&void 0!==t?t:e)})})),g=v.next();!g.done;g=v.next()){var _=g.value;m(_)}}catch(e){u={error:e}}finally{try{g&&!g.done&&(f=v.return)&&f.call(v)}finally{if(u)throw u.error}}if(a.arrays.filter(function(e){return s(e.value)}).length&&p.push({type:"array",is:function(){return j.ExpressionFactory.isArray(n)},value:function(){return l(e)(t)(r)(n,a.arrays,h(h({},o),{from:"array"}))}}),a.natives.length){var x=function(e){p.push({type:"native",is:function(){return j.ExpressionFactory.isInstanceOf(e)(n)},value:function(){return S.default.factory.createReturnStatement()}})};try{for(var P=b(a.natives),w=P.next();!w.done;w=P.next()){var T=w.value;x(T)}}catch(e){d={error:e}}finally{try{w&&!w.done&&(y=P.return)&&y.call(P)}finally{if(d)throw d.error}}}a.sets.length&&p.push({type:"set",is:function(){return j.ExpressionFactory.isInstanceOf("Set")(n)},value:function(){return S.default.factory.createReturnStatement()}}),a.maps.length&&p.push({type:"map",is:function(){return j.ExpressionFactory.isInstanceOf("Map")(n)},value:function(){return S.default.factory.createReturnStatement()}}),a.objects.length&&p.push({type:"object",is:function(){return j.ExpressionFactory.isObject({checkNull:!0,checkArray:!1})(n)},value:function(){return c(t)(r)(n,a,h(h({},o),{from:"object"}))}});var E=p.map(function(e){var t;return S.default.factory.createIfStatement(e.is(),(t=e.value(),S.default.isReturnStatement(t)||S.default.isBlock(t)?t:S.default.factory.createExpressionStatement(t)))});return S.default.factory.createBlock(E,!0)}}}},a=function(e){return F.FeatureProgrammer.decode_object({trace:!1,path:!1,prefix:d})(e)},o=function(e){return function(t){return function(r,n,a){return F.FeatureProgrammer.decode_array(e)(t)(M.PruneJoiner.array)(r,n,a,[],[])}}},i=function(e){return function(t){return function(r){return function(n,a,o){return a.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function"}))(n)):u(e)(t)(r)(n,a,o)}}}},u=function(e){return function(t){return function(r){return function(a,o,i){var u=o.elements.map(function(e,t){return[e,t]}).filter(function(e){var t=g(e,1)[0];return s(t)&&null===t.rest}).map(function(o){var u=g(o,2),c=u[0],l=u[1];return n(e)(t)(r)(S.default.factory.createElementAccessExpression(a,l),c,h(h({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(l,']"'):'"['.concat(l,']"')}))}),c=function(){if(0===o.elements.length)return null;var u=o.elements.at(-1).rest;return null===u||!1===s(u)?null:n(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("slice"),void 0,[S.default.factory.createNumericLiteral(o.elements.length-1)]),(0,N.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),h(h({},i),{start:o.elements.length-1}))}();return M.PruneJoiner.tuple(u,c)}}}},c=function(e){return function(t){return function(r,n,o){return 1===n.objects.length?a(t)(r,n.objects[0],o):S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.useLocal("".concat(d,"u").concat(n.union_index))),void 0,F.FeatureProgrammer.argumentsArray(e)(o)(r))}}},l=function(e){return function(t){return function(r){return function(n,a,i){return f(t)(r)(C.UnionExplorer.array({checker:k.IsProgrammer.decode(e)(r),decoder:function(e,n,a){return n.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"a").concat(n.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},a),{source:"function",from:"array"}))(e)):o(t)(r)(e,n,a)},empty:S.default.factory.createStringLiteral("[]"),success:S.default.factory.createTrue(),failure:function(e,t){return m(r)(t)(e)}}))(n,a,i)}}}},f=function(e){return function(t){return function(r){return function(n,a,o){var i=function(e){return function(t){return function(n){return r(e)(n,a,t,[],[])}}};return a.every(function(e){return!1===e.recursive})&&S.default.factory.createCallExpression(i([])(o)(n),void 0,[]),o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return i(F.FeatureProgrammer.parameterDeclarations(e)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")))(h(h({},o),{postfix:""}))(S.default.factory.createIdentifier("input"))})),void 0,F.FeatureProgrammer.argumentsArray(e)(o)(n))}}}},s=function(e){return!1===e.any&&(0!==e.objects.length||e.tuples.some(function(e){return e.elements.some(function(e){var t;return s(null!==(t=e.rest)&&void 0!==t?t:e)})})||e.arrays.some(function(e){return s(e.value)}))},d="$p",y=function(e){return function(t){var r={types:{input:function(t,r){return S.default.factory.createTypeReferenceNode(null!=r?r:I.TypeFactory.getFullName(e.checker)(t))},output:function(){return I.TypeFactory.keyword("void")}},prefix:d,trace:!1,path:!1,initializer:p,decoder:function(){return n(e)(r)(t)},objector:{checker:function(){return k.IsProgrammer.decode(e)(t)},decoder:function(){return a(t)},joiner:M.PruneJoiner.object,unionizer:(0,L.decode_union_object)(k.IsProgrammer.decode_object(t))(a(t))(function(e){return e})(function(e,r){return m(t)(r)(e)}),failure:function(e,r){return m(t)(r)(e)}},generator:{arrays:function(){return function(e){return e.arrays().filter(function(e){return e.recursive}).map(function(e,n){return E.StatementFactory.constant("".concat(r.prefix,"a").concat(n),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),I.TypeFactory.keyword("any"),void 0,o(r)(t)(S.default.factory.createIdentifier("input"),e,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}},tuples:function(){var n;return n=t,function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,a){return E.StatementFactory.constant("".concat(r.prefix,"t").concat(a),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(I.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),I.TypeFactory.keyword("any"),void 0,u(e)(r)(n)(S.default.factory.createIdentifier("input"),t,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}}}};return r}},p=function(e){var t=e.checker;return function(e){var r=new w.MetadataCollection,n=T.MetadataFactory.analyze(t)({resolve:!1,constant:!0,absorb:!0})(r)(e);return[r,n]}},m=function(e){return function(t){return function(r){return S.default.factory.createExpressionStatement(S.default.factory.createCallExpression(e.use("throws"),[],[S.default.factory.createObjectLiteralExpression([S.default.factory.createPropertyAssignment("expected",S.default.factory.createStringLiteral(t)),S.default.factory.createPropertyAssignment("value",r)],!0)]))}}}},6175:function(e,t,r){"use strict";var n,a,o,i,u,c,l,f,s,d,y,p,m,v,h=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},g=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},b=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RandomProgrammer=void 0;var x=b(r(5423)),S=r(3906),j=r(2726),P=r(2595),w=r(3390),T=r(6152),E=r(5374),I=r(2301),O=r(1959),F=r(2112),k=r(3114),A=r(9573);(v||(t.RandomProgrammer=v={})).write=function(e){return function(t){return function(r){var u=new O.FunctionImporter;return function(c,l){var f=new P.MetadataCollection,s=w.MetadataFactory.analyze(e.checker)({resolve:!0,constant:!0,absorb:!0})(f)(c),d={objects:n(u)(f),arrays:a(u)(f),tuples:o(u)(f)},y=i(u)({function:!1,recursive:!1})(s,[],[]);return x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("generator",x.default.factory.createTypeReferenceNode("Partial"),null!=r?r:x.default.factory.createToken(x.default.SyntaxKind.QuestionToken))],x.default.factory.createTypeReferenceNode("typia.Primitive<".concat(null!=l?l:I.TypeFactory.getFullName(e.checker)(c),">")),void 0,x.default.factory.createBlock(g(g(g(g(g([],h(u.declare(t)),!1),h(d.objects),!1),h(d.arrays),!1),h(d.tuples),!1),[x.default.factory.createReturnStatement(y)],!1),!0))}}}},n=function(e){return function(t){return t.objects().map(function(t,r){return T.StatementFactory.constant(M.object(r),x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("_recursive",I.TypeFactory.keyword("boolean"),x.default.factory.createIdentifier(String(t.recursive))),j.IdentifierFactory.parameter("_depth",I.TypeFactory.keyword("number"),x.default.factory.createNumericLiteral(0))],I.TypeFactory.keyword("any"),void 0,F.RandomJoiner.object(C(e))(i(e)({recursive:t.recursive,function:!0}))(t)))})}},a=function(e){return function(t){return t.arrays().filter(function(e){return e.recursive}).map(function(t,r){return T.StatementFactory.constant(M.array(r),x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("length",I.TypeFactory.keyword("number")),j.IdentifierFactory.parameter("_recursive",I.TypeFactory.keyword("boolean"),x.default.factory.createTrue()),j.IdentifierFactory.parameter("_depth",I.TypeFactory.keyword("number"),x.default.factory.createNumericLiteral(0))],I.TypeFactory.keyword("any"),void 0,F.RandomJoiner.array(C(e))(i(e)({recursive:!0,function:!0}))({recursive:!0,function:!0})(x.default.factory.createIdentifier("length"))(t.value,[],[])))})}},o=function(e){return function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,r){return T.StatementFactory.constant(M.tuple(r),x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("_recursive",I.TypeFactory.keyword("boolean"),x.default.factory.createTrue()),j.IdentifierFactory.parameter("_depth",I.TypeFactory.keyword("number"),x.default.factory.createNumericLiteral(0))],I.TypeFactory.keyword("any"),void 0,F.RandomJoiner.tuple(i(e)({function:!0,recursive:!0}))(t.elements,[],[])))})}},i=function(e){return function(t){return function(r,n,a){var o,v,h,g,b,S,j,P,w,T,E,I,O,F,k,A,M=[];r.any&&M.push(x.default.factory.createStringLiteral("any type used...")),!1===r.isRequired()&&M.push(x.default.factory.createIdentifier("undefined")),!0===r.nullable&&M.push(x.default.factory.createNull());try{for(var C=_(r.constants),L=C.next();!L.done;L=C.next()){var N=L.value;try{for(var R=(h=void 0,_(N.values)),D=R.next();!D.done;D=R.next()){var q=D.value;M.push(c(q))}}catch(e){h={error:e}}finally{try{D&&!D.done&&(g=R.return)&&g.call(R)}finally{if(h)throw h.error}}}}catch(e){o={error:e}}finally{try{L&&!L.done&&(v=C.return)&&v.call(C)}finally{if(o)throw o.error}}try{for(var U=_(r.templates),V=U.next();!V.done;V=U.next()){var B=V.value;M.push(l(e)(t)(B))}}catch(e){b={error:e}}finally{try{V&&!V.done&&(S=U.return)&&S.call(U)}finally{if(b)throw b.error}}try{for(var J=_(r.atomics),z=J.next();!z.done;z=J.next()){var G=z.value;"boolean"===G?M.push(u(e)):"number"===G?M.push(f(e)(n)(a)):"string"===G?M.push(d(e)(n)(a)):"bigint"===G&&M.push(s(e)(n)(a))}}catch(e){j={error:e}}finally{try{z&&!z.done&&(P=J.return)&&P.call(J)}finally{if(j)throw j.error}}r.resolved&&M.push(i(e)(t)(r.resolved.returns,n,a));try{for(var K=_(r.arrays),$=K.next();!$.done;$=K.next()){var W=$.value;M.push(y(e)(t)(W,n,a))}}catch(e){w={error:e}}finally{try{$&&!$.done&&(T=K.return)&&T.call(K)}finally{if(w)throw w.error}}try{for(var Q=_(r.tuples),Y=Q.next();!Y.done;Y=Q.next()){var X=Y.value;M.push(p(e)(t)(X,n,a))}}catch(e){E={error:e}}finally{try{Y&&!Y.done&&(I=Q.return)&&I.call(Q)}finally{if(E)throw E.error}}try{for(var H=_(r.objects),Z=H.next();!Z.done;Z=H.next()){var ee=Z.value;M.push(m(e)(t)(ee))}}catch(e){O={error:e}}finally{try{Z&&!Z.done&&(F=H.return)&&F.call(H)}finally{if(O)throw O.error}}try{for(var et=_(r.natives),er=et.next();!er.done;er=et.next()){var en=er.value;"Boolean"===en?M.push(u(e)):"Number"===en?M.push(f(e)(n)(a)):"String"===en?M.push(d(e)(n)(a)):M.push(x.default.factory.createIdentifier("{}"))}}catch(e){k={error:e}}finally{try{er&&!er.done&&(A=et.return)&&A.call(et)}finally{if(k)throw k.error}}return((r.sets.length||r.maps.length)&&M.push(x.default.factory.createIdentifier("{}")),1===M.length)?M[0]:x.default.factory.createCallExpression(x.default.factory.createCallExpression(e.use("pick"),void 0,[x.default.factory.createArrayLiteralExpression(M.map(function(e){return x.default.factory.createArrowFunction(void 0,void 0,[],void 0,void 0,e)}),!0)]),void 0,void 0)}}},u=function(e){return x.default.factory.createCallExpression(C(e)("boolean"),void 0,void 0)},c=function(e){return"boolean"==typeof e?x.default.factory.createIdentifier(e.toString()):"number"==typeof e?x.default.factory.createNumericLiteral(e):"string"==typeof e?x.default.factory.createStringLiteral(e):x.default.factory.createBigIntLiteral(e.toString())},l=function(e){return function(t){return function(r){return E.TemplateFactory.generate(r.map(function(r){return i(e)(t)(r,[],[])}))}}},f=function(e){return function(t){return function(r){var n=t.find(function(e){return"type"===e.kind&&"uint"===e.value})?"int":t.find(function(e){return"type"===e.kind&&"int"===e.value})?"uint":"double";return(0,A.random_custom)(C(e))("number")(r)(k.RandomRanger.number({type:n,transform:function(e){return x.default.factory.createNumericLiteral(e)},setter:function(r){return x.default.factory.createCallExpression("double"===n&&t.every(function(e){return"multipleOf"!==e.kind&&"step"!==e.kind})?C(e)("number"):C(e)("integer"),void 0,r.map(function(e){return x.default.factory.createNumericLiteral(e)}))}})({minimum:0,maximum:100,gap:10})(t))}}},s=function(e){return function(t){return function(r){return(0,A.random_custom)(C(e))("bigint")(r)(k.RandomRanger.number({type:t.find(function(e){return"type"===e.kind&&"uint"===e.value})?"uint":"int",transform:function(e){return x.default.factory.createCallExpression(x.default.factory.createIdentifier("BigInt"),void 0,[x.default.factory.createStringLiteral(e.toString())])},setter:function(t){return x.default.factory.createCallExpression(C(e)("bigint"),void 0,t.map(function(e){return x.default.factory.createCallExpression(x.default.factory.createIdentifier("BigInt"),void 0,[x.default.factory.createStringLiteral(e.toString())])}))}})({minimum:0,maximum:100,gap:10})(t))}}},d=function(e){return function(t){return function(r){return(0,A.random_custom)(C(e))("string")(r)(function(){try{for(var r,n,a=_(t),o=a.next();!o.done;o=a.next()){var i=o.value;if("format"===i.kind)return x.default.factory.createCallExpression(C(e)(i.value),void 0,void 0);if("pattern"===i.kind)return x.default.factory.createCallExpression(C(e)("pattern"),void 0,[x.default.factory.createIdentifier("/".concat(i.value,"/"))])}}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}var u=k.RandomRanger.length(C(e))({minimum:5,maximum:25,gap:5})({fixed:"length",minimum:"minLength",maximum:"maxLength"})(t);return x.default.factory.createCallExpression(C(e)("string"),void 0,u?[u]:void 0)}())}}},y=function(e){return function(t){return function(r,n,a){var o=k.RandomRanger.length(C(e))({minimum:0,maximum:3,gap:3})({fixed:"items",minimum:"minItems",maximum:"maxItems"})(n);if(r.recursive)return x.default.factory.createCallExpression(x.default.factory.createIdentifier(e.useLocal(M.array(r.index))),void 0,[null!=o?o:C(e)("length"),x.default.factory.createTrue(),t.recursive?x.default.factory.createAdd(x.default.factory.createNumericLiteral(1),x.default.factory.createIdentifier("_depth")):x.default.factory.createNumericLiteral(0)]);var u=F.RandomJoiner.array(C(e))(i(e)(t))(t)(o)(r.value,n,a);return t.recursive?x.default.factory.createConditionalExpression(x.default.factory.createLogicalAnd(x.default.factory.createIdentifier("_recursive"),x.default.factory.createLessThan(x.default.factory.createNumericLiteral(5),x.default.factory.createIdentifier("_depth"))),void 0,x.default.factory.createIdentifier("[]"),void 0,u):u}}},p=function(e){return function(t){return function(r,n,a){return r.recursive?x.default.factory.createCallExpression(x.default.factory.createIdentifier(e.useLocal(M.tuple(r.index))),void 0,[x.default.factory.createTrue(),t.recursive?x.default.factory.createAdd(x.default.factory.createNumericLiteral(1),x.default.factory.createIdentifier("_depth")):x.default.factory.createNumericLiteral(0)]):F.RandomJoiner.tuple(i(e)(t))(r.elements,n,a)}}},m=function(e){return function(t){return function(r){return x.default.factory.createCallExpression(x.default.factory.createIdentifier(e.useLocal(M.object(r.index))),void 0,t.function?[t.recursive?x.default.factory.createTrue():x.default.factory.createIdentifier("_recursive"),x.default.factory.createConditionalExpression(x.default.factory.createIdentifier("_recursive"),void 0,x.default.factory.createAdd(x.default.factory.createNumericLiteral(1),x.default.factory.createIdentifier("_depth")),void 0,x.default.factory.createIdentifier("_depth"))]:void 0)}}};var M={object:function(e){return"$ro".concat(e)},array:function(e){return"$ra".concat(e)},tuple:function(e){return"$rt".concat(e)}},C=function(e){return function(t){return S.ExpressionFactory.coalesce(x.default.factory.createPropertyAccessChain(x.default.factory.createIdentifier("generator"),x.default.factory.createToken(x.default.SyntaxKind.QuestionDotToken),x.default.factory.createIdentifier(t)))(j.IdentifierFactory.access(e.use("generator"))(t))}}},435:function(e,t,r){"use strict";var n,a,o,i,u,c,l,f,s,d,y,p,m,v,h,g,_,b,x,S,j,P,w=this&&this.__assign||function(){return(w=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},E=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},O=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StringifyProgrammer=void 0;var F=O(r(5423)),k=r(3906),A=r(2726),M=r(2595),C=r(3390),L=r(6152),N=r(2301),R=r(4411),D=r(9133),q=r(3346),U=r(2114),V=r(3348),B=r(6752),J=r(1959),z=r(3306),G=r(8252),K=r(1934),$=r(7144),W=r(572),Q=r(9687),Y=r(1058),X=r(9714);(P||(t.StringifyProgrammer=P={})).write=function(e){return function(t){var r=new J.FunctionImporter,n=x(e)(r);return U.FeatureProgrammer.write(e)(w(w({},n),{addition:function(n){return E(E([],T(V.IsProgrammer.write_function_statements(e)(r)(n)),!1),T(r.declare(t)),!1)}}))(r)}},n=function(e){return function(t){return function(r){return function(a,i,c){if(!0===i.any)return v(a,i,c)(g(a,i,c)(F.default.factory.createCallExpression(F.default.factory.createIdentifier("JSON.stringify"),void 0,[a])));if(0===i.size()&&(!1===i.isRequired()||!0===i.nullable))return!1===i.isRequired()&&!0===i.nullable?"array"===c.from?F.default.factory.createStringLiteral("null"):F.default.factory.createConditionalExpression(F.default.factory.createStrictEquality(F.default.factory.createNull(),a),void 0,F.default.factory.createStringLiteral("null"),void 0,F.default.factory.createIdentifier("undefined")):!1===i.isRequired()?"array"===c.from?F.default.factory.createStringLiteral("null"):F.default.factory.createIdentifier("undefined"):F.default.factory.createStringLiteral("null");var m,b,x,S,j,P,O,A,M,C,L,R=[];if(null!==i.resolved?R.push({type:"resolved",is:function(){return V.IsProgrammer.decode_to_json(!1)(a)},value:function(){return s(e)(t)(r)(a,i.resolved.returns,c)}}):!0===i.functional&&R.push({type:"functional",is:function(){return V.IsProgrammer.decode_functional(a)},value:function(){return d(c)}}),(i.templates.length||q.ArrayUtil.has(i.constants,function(e){return"string"===e.type}))&&B.AtomicPredicator.template(i)){var U=D.Metadata.initialize();U.atomics.push("string"),R.push({type:"template literal",is:function(){return V.IsProgrammer.decode(e)(r)(a,U,c,[],[])},value:function(){return l(e)(r)(a,"string",c)}})}var J=function(t){if(!1===B.AtomicPredicator.constant(i)(t.type))return"continue";"string"!==t.type?R.push({type:"atomic",is:function(){var n;return V.IsProgrammer.decode(e)(r)(a,((n=D.Metadata.initialize()).atomics.push(t.type),n),c,[],[])},value:function(){return l(e)(r)(a,t.type,c)}}):0===i.templates.length&&R.push({type:"const string",is:function(){var t;return V.IsProgrammer.decode(e)(r)(a,((t=D.Metadata.initialize()).atomics.push("string"),t),c,[],[])},value:function(){return f(e)(r)(a,E([],T(t.values),!1),c)}})};try{for(var z=I(i.constants),$=z.next();!$.done;$=z.next()){var Q=$.value;J(Q)}}catch(e){b={error:e}}finally{try{$&&!$.done&&(x=z.return)&&x.call(z)}finally{if(b)throw b.error}}var X=function(t){B.AtomicPredicator.atomic(i)(t)&&R.push({type:"atomic",is:function(){var n;return V.IsProgrammer.decode(e)(r)(a,((n=D.Metadata.initialize()).atomics.push(t),n),c,[],[])},value:function(){return l(e)(r)(a,t,c)}})};try{for(var H=I(i.atomics),Z=H.next();!Z.done;Z=H.next()){var ee=Z.value;X(ee)}}catch(e){S={error:e}}finally{try{Z&&!Z.done&&(j=H.return)&&j.call(H)}finally{if(S)throw S.error}}var et=function(n){var o,l;try{for(var f=(o=void 0,I(n.elements)),s=f.next();!s.done;s=f.next()){var d=s.value;if(K.StringifyPredicator.undefindable(i))throw Error("Error on typia.stringify(): tuple cannot contain undefined value - (".concat(d.getName(),")."))}}catch(e){o={error:e}}finally{try{s&&!s.done&&(l=f.return)&&l.call(f)}finally{if(o)throw o.error}}R.push({type:"tuple",is:function(){var t;return V.IsProgrammer.decode(e)(r)(a,((t=D.Metadata.initialize()).tuples.push(n),t),c,[],[])},value:function(){return u(e)(t)(r)(a,n,c)}})};try{for(var er=I(i.tuples),en=er.next();!en.done;en=er.next()){var ea=en.value;et(ea)}}catch(e){P={error:e}}finally{try{en&&!en.done&&(O=er.return)&&O.call(er)}finally{if(P)throw P.error}}if(i.arrays.length){try{for(var eo=I(i.arrays),ei=eo.next();!ei.done;ei=eo.next()){var eu=ei.value;if(K.StringifyPredicator.undefindable(eu.value))throw Error("Error on typia.stringify(): array cannot contain undefined value (".concat(eu.value.getName(),")."))}}catch(e){A={error:e}}finally{try{ei&&!ei.done&&(M=eo.return)&&M.call(eo)}finally{if(A)throw A.error}}var ec=1===i.arrays.length?function(){return o(t)(r)(a,i.arrays[0],w(w({},c),{from:"array"}))}:i.arrays.some(function(e){return e.value.any})?function(){return F.default.factory.createCallExpression(F.default.factory.createIdentifier("JSON.stringify"),void 0,[a])}:function(){return p(e)(t)(r)(a,i.arrays,w(w({},c),{from:"array"}))};R.push({type:"array",is:function(){return k.ExpressionFactory.isArray(a)},value:ec})}if(i.natives.length){var el=function(t){R.push({type:"object",is:function(){return(0,W.check_native)(t)(a)},value:function(){return B.AtomicPredicator.native(t)?l(e)(r)(a,t.toLowerCase(),c):F.default.factory.createStringLiteral("{}")}})};try{for(var ef=I(i.natives),es=ef.next();!es.done;es=ef.next()){var ed=es.value;el(ed)}}catch(e){C={error:e}}finally{try{es&&!es.done&&(L=ef.return)&&L.call(ef)}finally{if(C)throw C.error}}}i.sets.length&&R.push({type:"object",is:function(){return k.ExpressionFactory.isInstanceOf("Set")(a)},value:function(){return F.default.factory.createStringLiteral("{}")}}),i.maps.length&&R.push({type:"object",is:function(){return k.ExpressionFactory.isInstanceOf("Map")(a)},value:function(){return F.default.factory.createStringLiteral("{}")}}),i.objects.length&&R.push({type:"object",is:function(){return k.ExpressionFactory.isObject({checkNull:!0,checkArray:i.objects.some(function(e){return e.properties.every(function(e){return!e.key.isSoleLiteral()||!e.value.isRequired()})})})(a)},value:function(){var o,u;return!1===i.isParentResolved()&&1===i.objects.length&&i.objects[0]._Is_simple("top"===c.from?0:1)?(o=i.objects[0],u=(0,Y.feature_object_entries)({decoder:function(){return n(e)(t)(r)},trace:!1,path:!1})(r)(o)(F.default.factory.createAsExpression(a,N.TypeFactory.keyword("any"))),G.StringifyJoiner.object(r)(F.default.factory.createAsExpression(a,N.TypeFactory.keyword("any")),u)):y(t)(r)(a,i,w(w({},c),{from:"object"}))}});return 0===R.length?F.default.factory.createCallExpression(F.default.factory.createIdentifier("JSON.stringify"),void 0,[a]):(m=1===R.length?R[0].value():F.default.factory.createCallExpression(F.default.factory.createArrowFunction(void 0,void 0,[],void 0,void 0,_(r,a,R,i.getName())),void 0,void 0),v(a,i,c)(h(a,i)(m)))}}}},a=function(e){return U.FeatureProgrammer.decode_object({trace:!1,path:!1,prefix:b})(e)},o=function(e){return function(t){return function(r,n,a){return n.recursive?F.default.factory.createCallExpression(F.default.factory.createIdentifier(t.useLocal("".concat(e.prefix,"a").concat(n.index))),void 0,U.FeatureProgrammer.argumentsArray(e)(w(w({},a),{source:"function",from:"array"}))(r)):i(e)(t)(r,n,a)}}},i=function(e){return function(t){return function(r,n,a){return U.FeatureProgrammer.decode_array(e)(t)(G.StringifyJoiner.array)(r,n,a,[],[])}}},u=function(e){return function(t){return function(r){return function(n,a,o){return a.recursive?F.default.factory.createCallExpression(F.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,U.FeatureProgrammer.argumentsArray(t)(w(w({},o),{source:"function"}))(n)):c(e)(t)(r)(n,a,o)}}}},c=function(e){return function(t){return function(r){return function(a,o,i){var u=o.elements.filter(function(e){return null===e.rest}).map(function(o,u){return n(e)(t)(r)(F.default.factory.createElementAccessExpression(a,u),o,w(w({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(u,']"'):'"['.concat(u,']"')}))}),c=function(){if(0===o.elements.length||null===o.elements.at(-1).rest)return null;var u=n(e)(t)(r)(F.default.factory.createCallExpression(A.IdentifierFactory.access(a)("slice"),void 0,[F.default.factory.createNumericLiteral(o.elements.length-1)]),(0,X.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),w(w({},i),{start:o.elements.length-1}));return F.default.factory.createCallExpression(r.use("rest"),void 0,[u])}();return G.StringifyJoiner.tuple(u,c)}}}},l=function(e){return function(t){return function(r,n,a){return"string"===n?F.default.factory.createCallExpression(t.use("string"),void 0,[r]):("number"===n&&z.OptionPredicator.numeric(e.options)&&(r=F.default.factory.createCallExpression(t.use("number"),void 0,[r])),"top"!==a.from?r:F.default.factory.createCallExpression(A.IdentifierFactory.access(r)("toString"),void 0,void 0))}}},f=function(e){return function(t){return function(r,n,a){return n.every(function(e){return!K.StringifyPredicator.require_escape(e)})?[F.default.factory.createStringLiteral('"'),r,F.default.factory.createStringLiteral('"')].reduce(function(e,t){return F.default.factory.createAdd(e,t)}):l(e)(t)(r,"string",a)}}},s=function(e){return function(t){return function(r){return function(a,o,i){return n(e)(t)(r)(F.default.factory.createCallExpression(A.IdentifierFactory.access(a)("toJSON"),void 0,[]),o,i)}}}},d=function(e){return"array"===e.from?F.default.factory.createStringLiteral("null"):F.default.factory.createIdentifier("undefined")},y=function(e){return function(t){return function(r,n,o){return 1===n.objects.length?a(t)(r,n.objects[0],o):F.default.factory.createCallExpression(F.default.factory.createIdentifier(t.useLocal("".concat(b,"u").concat(n.union_index))),void 0,U.FeatureProgrammer.argumentsArray(e)(o)(r))}}},p=function(e){return function(t){return function(r){return function(n,a,i){return m(t)(r)($.UnionExplorer.array({checker:V.IsProgrammer.decode(e)(r),decoder:o(t)(r),empty:F.default.factory.createStringLiteral("[]"),success:F.default.factory.createTrue(),failure:function(e,t){return j(r)(t)(e)}}))(n,a,i)}}}},m=function(e){return function(t){return function(r){return function(n,a,o){var i=function(e){return function(t){return function(n){return r(e)(n,a,t,[],[])}}};return a.every(function(e){return!1===e.recursive})&&F.default.factory.createCallExpression(i([])(o)(n),void 0,[]),o=w(w({},o),{source:"function",from:"array"}),F.default.factory.createCallExpression(F.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return i(U.FeatureProgrammer.parameterDeclarations(e)(N.TypeFactory.keyword("any"))(F.default.factory.createIdentifier("input")))(w(w({},o),{postfix:""}))(F.default.factory.createIdentifier("input"))})),void 0,U.FeatureProgrammer.argumentsArray(e)(o)(n))}}}},v=function(e,t,r){return!0===t.isRequired()&&!1===t.any?function(e){return e}:function(t){return F.default.factory.createConditionalExpression(F.default.factory.createStrictInequality(F.default.factory.createIdentifier("undefined"),e),void 0,t,void 0,"array"===r.from?F.default.factory.createStringLiteral("null"):F.default.factory.createIdentifier("undefined"))}},h=function(e,t){return!1===t.nullable?function(e){return e}:function(t){return F.default.factory.createConditionalExpression(F.default.factory.createStrictInequality(F.default.factory.createNull(),e),void 0,t,void 0,F.default.factory.createStringLiteral("null"))}},g=function(e,t,r){return!1===t.functional?function(e){return e}:function(t){return F.default.factory.createConditionalExpression(F.default.factory.createStrictInequality(F.default.factory.createStringLiteral("function"),R.ValueFactory.TYPEOF(e)),void 0,t,void 0,d(r))}},_=function(e,t,r,n){return F.default.factory.createBlock(E(E([],T(r.map(function(e){return F.default.factory.createIfStatement(e.is(),F.default.factory.createReturnStatement(e.value()))})),!1),[j(e)(n)(t)],!1),!0)},b="$s",x=function(e){return function(t){var r={types:{input:function(t,r){return F.default.factory.createTypeReferenceNode(null!=r?r:N.TypeFactory.getFullName(e.checker)(t))},output:function(){return N.TypeFactory.keyword("string")}},prefix:b,trace:!1,path:!1,initializer:S,decoder:function(){return n(e)(r)(t)},objector:{checker:function(){return function(r,n,a){return V.IsProgrammer.decode(e)(t)(r,n,a,[],[])}},decoder:function(){return a(t)},joiner:G.StringifyJoiner.object(t),unionizer:(0,Q.decode_union_object)(V.IsProgrammer.decode_object(t))(a(t))(function(e){return e})(function(e,r){return j(t)(r)(e)}),failure:function(e,r){return j(t)(r)(e)}},generator:{arrays:function(){return function(e){return e.arrays().filter(function(e){return e.recursive}).map(function(e,n){return L.StatementFactory.constant("".concat(r.prefix,"a").concat(n),F.default.factory.createArrowFunction(void 0,void 0,U.FeatureProgrammer.parameterDeclarations(r)(N.TypeFactory.keyword("any"))(F.default.factory.createIdentifier("input")),N.TypeFactory.keyword("any"),void 0,i(r)(t)(F.default.factory.createIdentifier("input"),e,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}},tuples:function(){var n;return n=t,function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,a){return L.StatementFactory.constant("".concat(r.prefix,"t").concat(a),F.default.factory.createArrowFunction(void 0,void 0,U.FeatureProgrammer.parameterDeclarations(r)(N.TypeFactory.keyword("any"))(F.default.factory.createIdentifier("input")),N.TypeFactory.keyword("any"),void 0,c(e)(r)(n)(F.default.factory.createIdentifier("input"),t,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}}}};return r}},S=function(e){var t=e.checker;return function(e){var r=new M.MetadataCollection,n=C.MetadataFactory.analyze(t)({resolve:!0,constant:!0,absorb:!0,validate:function(e){if(e.atomics.find(function(e){return"bigint"===e}))throw Error(H)}})(r)(e);return[r,n]}},j=function(e){return function(t){return function(r){return F.default.factory.createExpressionStatement(F.default.factory.createCallExpression(e.use("throws"),[],[F.default.factory.createObjectLiteralExpression([F.default.factory.createPropertyAssignment("expected",F.default.factory.createStringLiteral(t)),F.default.factory.createPropertyAssignment("value",r)],!0)]))}}};var H="Error on typia.stringify(): does not allow bigint type."},2028:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r>")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",s.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!0})}))(t)(!1)(r,n)),c.StatementFactory.constant("clone",f.CloneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),c.StatementFactory.constant("output",i.default.factory.createAsExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")]),l.TypeFactory.keyword("any"))),i.default.factory.createIfStatement(i.default.factory.createIdentifier("output.success"),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("output.data"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("clone"),void 0,[i.default.factory.createIdentifier("input")])))),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},8646:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r>")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",f.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(!1)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("input"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("JSON.parse"),void 0,[i.default.factory.createIdentifier("input")]))),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createAsExpression(i.default.factory.createIdentifier("output"),i.default.factory.createTypeReferenceNode("any")))]))}}}},9345:function(e,t,r){"use strict";var n,a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")),void 0,u.default.factory.createBlock([l.StatementFactory.constant("errors",u.default.factory.createAsExpression(u.default.factory.createArrayLiteralExpression([]),u.default.factory.createArrayTypeNode(f.TypeFactory.keyword("any")))),l.StatementFactory.constant("__is",v),u.default.factory.createIfStatement(u.default.factory.createStrictEquality(u.default.factory.createFalse(),u.default.factory.createCallExpression(u.default.factory.createIdentifier("__is"),void 0,[u.default.factory.createIdentifier("input")])),u.default.factory.createBlock([l.StatementFactory.constant("$report",u.default.factory.createCallExpression(c.IdentifierFactory.access(u.default.factory.createParenthesizedExpression(u.default.factory.createAsExpression(t,f.TypeFactory.keyword("any"))))("report"),[],[u.default.factory.createIdentifier("errors")])),u.default.factory.createExpressionStatement(u.default.factory.createCallExpression(g,void 0,[u.default.factory.createIdentifier("input"),u.default.factory.createStringLiteral("$input"),u.default.factory.createTrue()]))])),l.StatementFactory.constant("success",u.default.factory.createStrictEquality(u.default.factory.createNumericLiteral(0),u.default.factory.createIdentifier("errors.length"))),u.default.factory.createReturnStatement(u.default.factory.createAsExpression(b(),f.TypeFactory.keyword("any")))],!0))}}}};var h=function(e){return function(t){return function(r){if(!1===r.tracable)return d.IsProgrammer.configure({object:g(e)(t),numeric:!0})(t).combiner(r);var n=r.postfix?"_path + ".concat(r.postfix):"_path";return function(e){return function(t,a,o){return"and"===e?a.map(function(e){return e.combined?e.expression:u.default.factory.createLogicalOr(e.expression,x("top"===r.source?u.default.factory.createTrue():u.default.factory.createIdentifier("_exceptionable"))(u.default.factory.createIdentifier(n),o,t))}).reduce(u.default.factory.createLogicalAnd):u.default.factory.createLogicalOr(a.map(function(e){return e.expression}).reduce(u.default.factory.createLogicalOr),x("top"===r.source?u.default.factory.createTrue():u.default.factory.createIdentifier("_exceptionable"))(u.default.factory.createIdentifier(n),o,t))}}}}},g=function(e){return function(t){return(0,v.check_object)({equals:e,undefined:!0,assert:!1,reduce:u.default.factory.createLogicalAnd,positive:u.default.factory.createTrue(),superfluous:function(e){return x()(u.default.factory.createAdd(u.default.factory.createIdentifier("_path"),u.default.factory.createCallExpression(t.use("join"),void 0,[u.default.factory.createIdentifier("key")])),"undefined",e)},halt:function(e){return u.default.factory.createLogicalOr(u.default.factory.createStrictEquality(u.default.factory.createFalse(),u.default.factory.createIdentifier("_exceptionable")),e)}})(t)}},_=function(e){return function(t){return{object:g(e)(t),array:function(e,t){return(0,m.check_everything)(u.default.factory.createCallExpression(c.IdentifierFactory.access(e)("map"),void 0,[t]))},failure:function(e,t,r){return x((null==r?void 0:r.from)==="top"?u.default.factory.createTrue():u.default.factory.createIdentifier("_exceptionable"))(u.default.factory.createIdentifier((null==r?void 0:r.postfix)?"_path + ".concat(r.postfix):"_path"),t,e)},tuple:function(e){return(0,m.check_everything)(u.default.factory.createArrayLiteralExpression(e,!0))}}}},b=function(){return u.default.factory.createObjectLiteralExpression([u.default.factory.createShorthandPropertyAssignment("success"),u.default.factory.createShorthandPropertyAssignment("errors"),u.default.factory.createPropertyAssignment("data",u.default.factory.createConditionalExpression(u.default.factory.createIdentifier("success"),void 0,u.default.factory.createIdentifier("input"),void 0,u.default.factory.createIdentifier("undefined")))],!0)},x=function(e){return function(t,r,n){return u.default.factory.createCallExpression(u.default.factory.createIdentifier("$report"),void 0,[null!=e?e:u.default.factory.createIdentifier("_exceptionable"),u.default.factory.createObjectLiteralExpression([u.default.factory.createPropertyAssignment("path",t),u.default.factory.createPropertyAssignment("expected",u.default.factory.createStringLiteral(r)),u.default.factory.createPropertyAssignment("value",n)],!0)])}}},5649:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",s.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!0})}))(t)(!1)(r,n)),c.StatementFactory.constant("prune",f.PruneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createIfStatement(i.default.factory.createIdentifier("output.success"),i.default.factory.createExpressionStatement(i.default.factory.createCallExpression(i.default.factory.createIdentifier("prune"),void 0,[i.default.factory.createIdentifier("input")]))),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},6640:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",s.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!0})}))(t)(!1)(r,n)),c.StatementFactory.constant("stringify",f.StringifyProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),c.StatementFactory.constant("output",i.default.factory.createAsExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")]),l.TypeFactory.keyword("any"))),i.default.factory.createIfStatement(i.default.factory.createIdentifier("output.success"),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("output.data"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("stringify"),void 0,[i.default.factory.createIdentifier("input")])))),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},6752:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AtomicPredicator=void 0;var n,a,o=r(3346);(n=a||(t.AtomicPredicator=a={})).constant=function(e){return function(t){return!o.ArrayUtil.has(e.atomics,function(e){return e===t})&&!o.ArrayUtil.has(e.natives,function(e){return e.toLowerCase()===t})}},n.atomic=function(e){return function(t){return!o.ArrayUtil.has(e.natives,function(e){return e.toLowerCase()===t})}},n.native=function(e){return i.has(e.toLowerCase())},n.template=function(e){return!o.ArrayUtil.has(e.atomics,function(e){return"string"===e})};var i=new Set(["boolean","number","string"])},1739:function(e,t,r){"use strict";var n,a,o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a"),index:null,recursive:!1,nullables:[],value:e})},element:function(e){return e.value},size:function(e){return s.IdentifierFactory.access(e)("size")},front:function(e){return s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(e)("values"),void 0,void 0))("next"),void 0,void 0))("value")},array:function(e){return l.default.factory.createArrayLiteralExpression([l.default.factory.createSpreadElement(e)],!1)},name:function(e,t){return"Set<".concat(t.getName(),">")}})(e)},n.map=function(e){return(0,m.check_union_array_like)({element:function(e){return e.value.tuples[0].elements},size:function(e){return s.IdentifierFactory.access(e)("size")},front:function(e){return s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(e)("entries"),void 0,void 0))("next"),void 0,void 0))("value")},array:function(e){return l.default.factory.createArrayLiteralExpression([l.default.factory.createSpreadElement(e)],!1)},name:function(e,t){var r=i(t,2),n=r[0],a=r[1];return"Map<".concat(n.getName(),", ").concat(a.getName(),">")},transform:function(e){return y.MetadataArray.create({name:"Map<".concat(e.key.getName(),", ").concat(e.value.getName(),">"),index:null,recursive:!1,nullables:[],value:d.Metadata.create(o(o({},d.Metadata.initialize()),{tuples:[p.MetadataTuple.create({name:"[".concat(e.key.getName(),", ").concat(e.value.getName(),"]"),index:null,recursive:!1,nullables:[],elements:[e.key,e.value]})]}))})}})(e)}},9560:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.UnionPredicator=void 0;var i=r(9133),u=r(3346),c=r(3224);(n||(t.UnionPredicator=n={})).object=function(e){var t,r,n,l,f=new Map;try{for(var s=o(e),d=s.next();!d.done;d=s.next()){var y=d.value;try{for(var p=(n=void 0,o(y.properties)),m=p.next();!m.done;m=p.next()){var v=m.value.key.getSoleLiteral();null!==v&&c.MapUtil.take(f)(v,function(){return u.ArrayUtil.repeat(e.length,function(){return null})})}}catch(e){n={error:e}}finally{try{m&&!m.done&&(l=p.return)&&l.call(p)}finally{if(n)throw n.error}}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}e.forEach(function(e,t){var r,n;try{for(var a=o(e.properties),i=a.next();!i.done;i=a.next()){var u=i.value,c=u.key.getSoleLiteral();null!==c&&(f.get(c)[t]=u)}}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}});var h=[];return e.forEach(function(e,t){var r=[];if(e.properties.forEach(function(e){if(!1!==e.value.isRequired()){var n=e.key.getSoleLiteral();if(null!==n){var a=f.get(n).filter(function(e,r){return t!==r&&null!==e});!0===(0===a.length||a.every(function(t){return!i.Metadata.intersects(e.value,t.value)}))&&r.push({property:e,neighbour:0!==a.length})}}}),0!==r.length){var n=r.find(function(e){return e.property.value.isConstant()})||r[0];h.push(a({index:t,object:e},n))}}),h}},1510:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.disable_function_importer_declare=void 0,t.disable_function_importer_declare=function(e){return r(e)};var r=function(e){return{empty:function(){return e.empty()},use:function(t){return e.use(t)},useLocal:function(t){return e.useLocal(t)},hasLocal:function(t){return e.hasLocal(t)},declare:function(e){return[]},increment:function(){return e.increment()},emplaceUnion:function(t,r,n){return e.emplaceUnion(t,r,n)},trace:function(){return e.trace()}}}},535:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JSON_COMPONENTS_PREFIX=void 0,t.JSON_COMPONENTS_PREFIX="#/components"},8379:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_array=void 0;var o=r(5566);t.application_array=function(e){return function(t){return function(r){return function(i){var u,c,l,f=n(n({},i),{type:"array",items:(0,o.application_schema)(e)(!1)(t)(r.value)(i)});try{for(var s=a(null!==(l=i["x-typia-metaTags"])&&void 0!==l?l:[]),d=s.next();!d.done;d=s.next()){var y=d.value;"minItems"===y.kind?f.minItems=y.value:"maxItems"===y.kind&&(f.maxItems=y.value)}}catch(e){u={error:e}}finally{try{d&&!d.done&&(c=s.return)&&c.call(s)}finally{if(u)throw u.error}}return f}}}}},141:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_default=void 0,t.application_default=function(e){return function(t){return function(n){var a,o,i,u,c=(null!==(i=e["x-typia-jsDocTags"])&&void 0!==i?i:[]).filter(function(e){return"default"===e.name});try{for(var l=r(c),f=l.next();!f.done;f=l.next()){var s=f.value;if((null===(u=s.text)||void 0===u?void 0:u.length)&&t(s.text[0].text))return n(s.text[0].text)}}catch(e){a={error:e}}finally{try{f&&!f.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}}}}},1683:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_default_string=void 0;var a=r(1494);t.application_default_string=function(e){return function(t){return function(r){return(0,a.application_default)(t)(function(t){var a,o,i,u,c=[];e.atomics.find(function(e){return"number"===e||"bigint"===e})&&c.push(Number.isNaN(Number(t))),e.atomics.find(function(e){return"boolean"===e})&&c.push("true"!==t&&"false"!==t);try{for(var l=n(e.constants),f=l.next();!f.done;f=l.next()){var s=f.value;try{for(var d=(i=void 0,n(s.values)),y=d.next();!y.done;y=d.next()){var p=y.value;c.push(t!==p.toString())}}catch(e){i={error:e}}finally{try{y&&!y.done&&(u=d.return)&&u.call(d)}finally{if(i)throw i.error}}}}catch(e){a={error:e}}finally{try{f&&!f.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}return void 0!==r.minLength&&c.push(t.length>=r.minLength),void 0!==r.maxLength&&c.push(t.length<=r.maxLength),void 0!==r.pattern&&c.push(new RegExp(r.pattern).test(t)),c.every(function(e){return e})})(function(e){return e})}}}},8072:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_number=void 0;var o=r(1494);t.application_number=function(e){var t,r,i,u,c=n(n({},e),{type:"number"});try{for(var l=a(null!==(i=e["x-typia-metaTags"])&&void 0!==i?i:[]),f=l.next();!f.done;f=l.next()){var s=f.value;"type"===s.kind&&("int"===s.value||"uint"===s.value||"{int}"===s.value||"{uint}"===s.value)?c.type="integer":"minimum"===s.kind?c.minimum=s.value:"maximum"===s.kind?c.maximum=s.value:"exclusiveMinimum"===s.kind?(c.minimum=s.value,c.exclusiveMinimum=!0):"exclusiveMaximum"===s.kind?(c.maximum=s.value,c.exclusiveMaximum=!0):"multipleOf"===s.kind&&(c.multipleOf=s.value)}}catch(e){t={error:e}}finally{try{f&&!f.done&&(r=l.return)&&r.call(l)}finally{if(t)throw t.error}}return"integer"===c.type&&(null!==(u=e["x-typia-metaTags"])&&void 0!==u?u:[]).find(function(e){return"type"===e.kind&&"uint"===e.value})&&(void 0===c.minimum||!0!==c.exclusiveMaximum&&c.minimum<0?c.minimum=0:!0===c.exclusiveMinimum&&c.minimum<-1&&(c.maximum=0,delete c.exclusiveMinimum)),c.default=(0,o.application_default)(e)(function(e){var t=Number(e),r=[!Number.isNaN(t)];return void 0!==c.minimum&&(!0===c.exclusiveMinimum?r.push(t>c.minimum):r.push(t>=c.minimum)),void 0!==c.maximum&&(!0===c.exclusiveMaximum?r.push(t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(t,"__esModule",{value:!0}),t.application_object=void 0;var i=r(7297),u=r(9133),c=r(8868),l=r(535),f=r(5566),s=r(6555);t.application_object=function(e){return function(t){return function(r){return function(u){var y,p,m,v,h,g,_="ajv"===e.purpose?r.name:"".concat(r.name).concat(u?".Nullable":""),b="".concat(l.JSON_COMPONENTS_PREFIX,"/schemas/").concat(_),x={$ref:b};if((null===(m=t.schemas)||void 0===m?void 0:m[_])!==void 0)return x;null!==(v=t.schemas)&&void 0!==v||(t.schemas={}),t.schemas[_]={};var S={},j={patternProperties:{},additionalProperties:void 0},P=[];try{for(var w=a(r.properties),T=w.next();!T.done;T=w.next()){var E=T.value;!function(r){if(!(!0===r.value.functional&&!1===r.value.nullable&&!0===r.value.isRequired()&&0===r.value.size()||r.jsDocTags.find(function(e){return"hidden"===e.name}))){var n,a,o=r.key.getSoleLiteral(),u=(0,f.application_schema)(e)(!0)(t)(r.value)({deprecated:r.jsDocTags.some(function(e){return"deprecated"===e.name})||void 0,title:(null===(n=null==(a=r.jsDocTags.find(function(e){return"title"===e.name}))?void 0:a.text)||void 0===n?void 0:n.length)?i.CommentFactory.merge(a.text):void 0,description:null!==(h=r.description)&&void 0!==h?h:void 0,"x-typia-metaTags":r.tags.length?r.tags:void 0,"x-typia-jsDocTags":r.jsDocTags.length?r.jsDocTags:void 0,"x-typia-required":r.value.required,"x-typia-optional":r.value.optional});if(null!==u){if(null!==o)S[o]=u,!0===r.value.isRequired()&&P.push(o);else{var l=(0,s.metadata_to_pattern)(!0)(r.key);l===c.PatternUtil.STRING?j.additionalProperties=[r.value,u]:j.patternProperties[l]=[r.value,u]}}}}(E)}}catch(e){y={error:e}}finally{try{T&&!T.done&&(p=w.return)&&p.call(w)}finally{if(y)throw y.error}}var I={additionalProperties:null===(g=j.additionalProperties)||void 0===g?void 0:g[1],patternProperties:function(){if(0!==Object.keys(j.patternProperties).length){var e,t,r={};try{for(var n=a(Object.entries(j.patternProperties)),i=n.next();!i.done;i=n.next()){var u=o(i.value,2),c=u[0],l=u[1];r[c]=l[1]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}return r}}()},O=n({$id:"ajv"===e.purpose?b:void 0,type:"object",properties:S,nullable:"swagger"===e.purpose?u:void 0,required:P.length?P:void 0,description:r.description,"x-typia-jsDocTags":r.jsDocTags},"ajv"===e.purpose?I:{"x-typia-additionalProperties":I.additionalProperties,"x-typia-patternProperties":I.patternProperties,additionalProperties:d(e)(t)(j)});return t.schemas[_]=O,x}}}};var d=function(e){return function(t){return function(r){var n,a=Object.values(r.patternProperties||{});if(r.additionalProperties&&a.push(r.additionalProperties),0!==a.length){if(1===a.length)return a[0][1];var o=a.map(function(e){return e[0]}).reduce(function(e,t){return u.Metadata.merge(e,t)});return null!==(n=(0,f.application_schema)(e)(!0)(t)(o)({"x-typia-required":!1}))&&void 0!==n?n:void 0}}}}},3823:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.application_resolved=void 0;var n=r(5566);t.application_resolved=function(e){return function(t){return function(r){return function(u){return function(c){var l=(0,n.application_schema)(e)(t)(r)(u.returns)(c);if(null===l)return[];if(i(new Set)(u.original)){var f=a(l)?l:o(l)?l.oneOf.find(a):void 0;void 0!==f&&"date"!==f.format&&"date-time"!==f.format&&(f.format="date-time")}return o(l)?l.oneOf:[l]}}}}};var a=function(e){return"string"===e.type},o=function(e){return Array.isArray(e.oneOf)},i=function(e){return function(t){return!e.has(t)&&(e.add(t),t.natives.some(function(e){return"Date"===e})||t.arrays.some(function(t){return i(e)(t.value)})||t.tuples.some(function(t){return t.elements.some(i(e))})||t.aliases.some(function(t){return i(e)(t.value)}))}}},5566:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_schema=void 0;var u=r(6752),c=r(8379),l=r(5333),f=r(141),s=r(9672),d=r(8072),y=r(4286),p=r(8725),m=r(3823),v=r(4014),h=r(3502),g=r(829);t.application_schema=function(e){return function(t){return function(r){return function(b){return function(x){if(!0===b.any)return n(n({},x),{type:void 0});if(b.nullable&&b.empty())return n({type:"null"},x);var S,j,P,w,T,E,I,O,F,k,A,M,C,L,N=[];b.nullable&&"swagger"!==e.purpose&&N.push(n(n({},x),{type:"null"}));var R=b.nullable&&"swagger"===e.purpose?function(e){return N.push(n(n({},e),{nullable:!!e.type||void 0}))}:function(e){return N.push(e)};null!==b.resolved&&N.push.apply(N,o([],a((0,m.application_resolved)(e)(t)(r)(b.resolved)(x)),!1)),b.templates.length&&u.AtomicPredicator.template(b)&&R((0,h.application_templates)(b)(x));try{for(var D=i(b.constants),q=D.next();!q.done;q=D.next()){var U=q.value;if("bigint"===U.type)throw Error(_);"string"===U.type&&b.templates.length||!1===u.AtomicPredicator.constant(b)(U.type)||R((0,s.application_constant)(U)(x))}}catch(e){S={error:e}}finally{try{q&&!q.done&&(j=D.return)&&j.call(D)}finally{if(S)throw S.error}}try{for(var V=i(b.atomics),B=V.next();!B.done;B=V.next()){var J=B.value;if("bigint"===J)throw Error(_);!1!==u.AtomicPredicator.atomic(b)(J)&&R("string"===J?(0,v.application_string)(b)(x):"boolean"===J?(0,f.application_boolean)(x):(0,y.application_number)(x))}}catch(e){P={error:e}}finally{try{B&&!B.done&&(w=V.return)&&w.call(V)}finally{if(P)throw P.error}}try{for(var z=i(b.arrays),G=z.next();!G.done;G=z.next()){var K=G.value;R((0,l.application_array)(e)(r)(K)(x))}}catch(e){T={error:e}}finally{try{G&&!G.done&&(E=z.return)&&E.call(z)}finally{if(T)throw T.error}}try{for(var $=i(b.tuples),W=$.next();!W.done;W=$.next()){var Q=W.value;R((0,g.application_tuple)(e)(r)(Q)(x))}}catch(e){I={error:e}}finally{try{W&&!W.done&&(O=$.return)&&O.call($)}finally{if(I)throw I.error}}try{for(var Y=i(b.natives),X=Y.next();!X.done;X=Y.next()){var H=X.value;R(u.AtomicPredicator.native(H)?"String"===H?(0,v.application_string)(b)(x):"Boolean"===H?(0,f.application_boolean)(x):(0,y.application_number)(x):(0,d.application_native)(e)(r)(H)({nullable:b.nullable,attribute:x}))}}catch(e){F={error:e}}finally{try{X&&!X.done&&(k=Y.return)&&k.call(Y)}finally{if(F)throw F.error}}b.sets.length&&R((0,d.application_native)(e)(r)("Set")({nullable:b.nullable,attribute:x})),b.maps.length&&R((0,d.application_native)(e)(r)("Map")({nullable:b.nullable,attribute:x}));try{for(var Z=i(b.objects),ee=Z.next();!ee.done;ee=Z.next()){var et=ee.value;R((0,p.application_object)(e)(r)(et)(b.nullable))}}catch(e){A={error:e}}finally{try{ee&&!ee.done&&(M=Z.return)&&M.call(Z)}finally{if(A)throw A.error}}try{for(var er=i(b.aliases),en=er.next();!en.done;en=er.next()){var ea=en.value;R((0,c.application_alias)(e)(t)(r)(ea)(b.nullable))}}catch(e){C={error:e}}finally{try{en&&!en.done&&(L=er.return)&&L.call(er)}finally{if(C)throw C.error}}return 0===N.length?!0===t?null:n(n({},x),{type:void 0}):1===N.length?N[0]:n({oneOf:N},x)}}}}};var _="Error on typia.application(): does not allow bigint type."},4014:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_string=void 0;var o=r(1683);t.application_string=function(e){return function(t){var r,u,c,l,f,s=n(n({},t),{type:"string"}),d=null===(c=t["x-typia-jsDocTags"])||void 0===c?void 0:c.find(function(e){return"format"===e.name});(null===(l=null==d?void 0:d.text)||void 0===l?void 0:l.length)&&(s.format=null==d?void 0:d.text.map(function(e){return e.text}).join(" "));try{for(var y=a(null!==(f=t["x-typia-metaTags"])&&void 0!==f?f:[]),p=y.next();!p.done;p=y.next()){var m=p.value;"minLength"===m.kind?s.minLength=m.value:"maxLength"===m.kind?s.maxLength=m.value:"format"===m.kind?s.format=i(m.value):"pattern"===m.kind&&(s.pattern=m.value)}}catch(e){r={error:e}}finally{try{p&&!p.done&&(u=y.return)&&u.call(y)}finally{if(r)throw r.error}}return s.default=(0,o.application_default_string)(e)(t)(s),s}};var i=function(e){return"datetime"===e?"date-time":e}},3502:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.check_string_tags=void 0;var i=o(r(5423)),u=r(2726);t.check_string_tags=function(e){return function(t){return function(r){var o,c,l=[];try{for(var f=n(t),s=f.next();!s.done;s=f.next()){var d=s.value;"format"===d.kind?l.push([d,i.default.factory.createCallExpression(e.use("is_".concat(d.value)),void 0,[r])]):"pattern"===d.kind?l.push([d,i.default.factory.createCallExpression(i.default.factory.createIdentifier("RegExp(/".concat(d.value,"/).test")),void 0,[r])]):"length"===d.kind?l.push([d,i.default.factory.createStrictEquality(i.default.factory.createNumericLiteral(d.value),u.IdentifierFactory.access(r)("length"))]):"minLength"===d.kind?l.push([d,i.default.factory.createLessThanEquals(i.default.factory.createNumericLiteral(d.value),u.IdentifierFactory.access(r)("length"))]):"maxLength"===d.kind&&l.push([d,i.default.factory.createGreaterThanEquals(i.default.factory.createNumericLiteral(d.value),u.IdentifierFactory.access(r)("length"))])}}catch(e){o={error:e}}finally{try{s&&!s.done&&(c=f.return)&&c.call(f)}finally{if(o)throw o.error}}return l.map(function(e){var t=a(e,2),r=t[0],n=t[1];return{expected:"string (@".concat(r.kind," ").concat(r.value,")"),expression:n}})}}}},9899:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.metadata_to_pattern=void 0;var a=r(3346),o=r(8868),i=r(6290);t.metadata_to_pattern=function(e){return function(t){if(void 0!==t.atomics.find(function(e){return"string"===e}))return"(.*)";var r,u,c,l,f=a.ArrayUtil.flat(t.constants.map(function(e){return"string"!==e.type?e.values.map(function(e){return e.toString()}):e.values.map(function(e){return o.PatternUtil.escape(e)})}));try{for(var s=n(t.atomics),d=s.next();!d.done;d=s.next()){var y=d.value;"number"===y||"bigint"===y?f.push(o.PatternUtil.NUMBER):"boolean"===y&&f.push(o.PatternUtil.BOOLEAN)}}catch(e){r={error:e}}finally{try{d&&!d.done&&(u=s.return)&&u.call(s)}finally{if(r)throw r.error}}try{for(var p=n(t.templates),m=p.next();!m.done;m=p.next()){var v=m.value;f.push("("+(0,i.template_to_pattern)(!1)(v)+")")}}catch(e){c={error:e}}finally{try{m&&!m.done&&(l=p.return)&&l.call(p)}finally{if(c)throw c.error}}var h=1===f.length?f[0]:"("+f.join("|")+")";return e?o.PatternUtil.fix(h):h}}},9973:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.prune_object_properties=void 0;var a=n(r(5423)),o=r(6152),i=r(6555);t.prune_object_properties=function(e){var t=a.default.factory.createIdentifier("input"),r=a.default.factory.createIdentifier("key"),n=e.properties.map(function(e){var t=e.key.getSoleLiteral();return null!==t?a.default.factory.createStrictEquality(a.default.factory.createStringLiteral(t),a.default.factory.createIdentifier("key")):a.default.factory.createCallExpression(a.default.factory.createIdentifier("RegExp(/".concat((0,i.metadata_to_pattern)(!0)(e.key),"/).test")),void 0,[r])}),u=[];return n.length&&u.push(a.default.factory.createIfStatement(n.reduce(function(e,t){return a.default.factory.createLogicalOr(e,t)}),a.default.factory.createContinueStatement())),u.push(a.default.factory.createExpressionStatement(a.default.factory.createDeleteExpression(a.default.factory.createElementAccessExpression(t,r)))),a.default.factory.createForOfStatement(void 0,o.StatementFactory.constant("key").declarationList,a.default.factory.createCallExpression(a.default.factory.createIdentifier("Object.keys"),void 0,[t]),1===u.length?u[0]:a.default.factory.createBlock(u,!0))}},9573:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.random_custom=void 0;var a=n(r(5423)),o=r(3906),i=r(7846);t.random_custom=function(e){return function(t){return function(r){return function(n){return o.ExpressionFactory.coalesce(a.default.factory.createCallChain(a.default.factory.createPropertyAccessChain(e("customs"),a.default.factory.createToken(a.default.SyntaxKind.QuestionDotToken),a.default.factory.createIdentifier(t)),a.default.factory.createToken(a.default.SyntaxKind.QuestionDotToken),void 0,[i.LiteralFactory.generate(r)]))(n)}}}}},1430:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.stringify_dynamic_properties=void 0;var o=a(r(5423)),i=r(2726),u=r(5374),c=r(6555);t.stringify_dynamic_properties=function(e,t){var r,a,u=[o.default.factory.createIfStatement(o.default.factory.createStrictEquality(o.default.factory.createIdentifier("undefined"),o.default.factory.createIdentifier("value")),o.default.factory.createReturnStatement(o.default.factory.createStringLiteral("")))],f=function(){var e=o.default.factory.createCallExpression(i.IdentifierFactory.access(o.default.factory.createCallExpression(o.default.factory.createIdentifier("Object.entries"),void 0,[o.default.factory.createIdentifier("input")]))("map"),void 0,[o.default.factory.createArrowFunction(void 0,void 0,[i.IdentifierFactory.parameter(o.default.factory.createArrayBindingPattern([o.default.factory.createBindingElement(void 0,void 0,"key"),o.default.factory.createBindingElement(void 0,void 0,"value")]),o.default.factory.createTypeReferenceNode("[string, any]"))],void 0,void 0,o.default.factory.createBlock(u))]),t=o.default.factory.createCallExpression(i.IdentifierFactory.access(e)("filter"),void 0,[o.default.factory.createArrowFunction(void 0,void 0,[i.IdentifierFactory.parameter("str")],void 0,void 0,o.default.factory.createStrictInequality(o.default.factory.createStringLiteral(""),o.default.factory.createIdentifier("str")))]);return o.default.factory.createCallExpression(i.IdentifierFactory.access(t)("join"),void 0,[o.default.factory.createStringLiteral(",")])};if(t.length&&u.push(o.default.factory.createIfStatement(o.default.factory.createCallExpression(i.IdentifierFactory.access(o.default.factory.createArrayLiteralExpression(t.map(function(e){return o.default.factory.createStringLiteral(e)})))("some"),void 0,[o.default.factory.createArrowFunction(void 0,void 0,[i.IdentifierFactory.parameter("regular")],void 0,void 0,o.default.factory.createStrictEquality(o.default.factory.createIdentifier("regular"),o.default.factory.createIdentifier("key")))]),o.default.factory.createReturnStatement(o.default.factory.createStringLiteral("")))),!0==(1===e.length&&1===e[0].key.size()&&"string"===e[0].key.atomics[0]))return u.push(l(e[0])),f();try{for(var s=n(e),d=s.next();!d.done;d=s.next()){var y=d.value,p=o.default.factory.createIfStatement(o.default.factory.createCallExpression(o.default.factory.createIdentifier("RegExp(/".concat((0,c.metadata_to_pattern)(!0)(y.key),"/).test")),void 0,[o.default.factory.createIdentifier("key")]),l(y));u.push(p)}}catch(e){r={error:e}}finally{try{d&&!d.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return u.push(o.default.factory.createReturnStatement(o.default.factory.createStringLiteral(""))),f()};var l=function(e){return o.default.factory.createReturnStatement(u.TemplateFactory.generate([o.default.factory.createCallExpression(o.default.factory.createIdentifier("JSON.stringify"),[],[o.default.factory.createIdentifier("key")]),o.default.factory.createStringLiteral(":"),e.expression]))}},1606:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.GenericTransformer=void 0;var c=u(r(5423));(n=o||(t.GenericTransformer=o={})).scalar=function(e){return function(t){return function(r){return function(n){return function(o){if(1!==o.arguments.length)throw Error("Error on typia.".concat(e,"(): no input value."));var u=i(o.typeArguments&&o.typeArguments[0]?[r.checker.getTypeFromTypeNode(o.typeArguments[0]),o.typeArguments[0],!0]:[r.checker.getTypeAtLocation(o.arguments[0]),o.arguments[0],!1],3),l=u[0],f=u[1],s=u[2];if(l.isTypeParameter())throw Error("Error on typia.".concat(e,"(): non-specified generic argument."));return c.default.factory.createCallExpression(t(r)(n)(l,s?f.getFullText().trim():a(r.checker)(l)(f)),void 0,[o.arguments[0]])}}}}},n.factory=function(e){return function(t){return function(r){return function(n){return function(a){if(!(null===(o=a.typeArguments)||void 0===o?void 0:o[0]))throw Error("Error on typia.".concat(e,"(): generic argument is not specified."));var o,i=a.typeArguments[0],u=r.checker.getTypeFromTypeNode(i);if(u.isTypeParameter())throw Error("Error on typia.".concat(e,"(): non-specified generic argument."));return t(r)(n)(u,i.getFullText().trim())}}}}},a=function(e){return function(t){return function(r){return e.typeToString(t,r,c.default.TypeFormatFlags.NodeBuilderFlagsMask)}}}},1261:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Writable=void 0,t.Writable=function(e){return e}},3346:function(e,t){"use strict";var r,n,a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.PatternUtil=void 0,(r=n||(t.PatternUtil=n={})).fix=function(e){var t=e.indexOf(r.STRING),n=e.lastIndexOf(r.STRING);return[-1===t||o("(")(e.slice(0,t))?"^":"",e,-1===n||o(")")(e.slice(n+r.STRING.length))?"$":""].join("")},r.escape=function(e){return e.replace(/[|\\/{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")},r.NUMBER="[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?",r.BOOLEAN="true|false",r.STRING="(.*)";var o=function(e){return function(t){var r,n;try{for(var o=a(t),i=o.next();!i.done;i=o.next())if(i.value!==e)return!0}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return!1}}},3764:function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?e.apply(this,a):function(){for(var e=arguments.length,n=Array(e),o=0;o=s.length?s.apply(this,n):function(){for(var r=arguments.length,a=Array(r),o=0;o1&&void 0!==arguments[1]?arguments[1]:{};p.initial(e),p.handler(t);var r={current:e},n=c(h)(r,t),a=c(v)(r),o=c(p.changes)(e),i=c(m)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return p.selector(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(t,["monaco"]);T(function(e){return{config:function e(t,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&t[n]&&Object.assign(r[n],e(t[n],r[n]))}),a(a({},t),r)}(e.config,n),monaco:r}})},init:function(){var e=w(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(T({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),j(k);if(window.monaco&&window.monaco.editor)return F(window.monaco),e.resolve(window.monaco),j(k);x(E,I)(O)}return j(k)},__getMonacoInstance:function(){return w(function(e){return e.monaco})}},M=r(7294),C={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},L={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},N=function({children:e}){return M.createElement("div",{style:L.container},e)},R=(0,M.memo)(function({width:e,height:t,isEditorReady:r,loading:n,_ref:a,className:o,wrapperProps:i}){return M.createElement("section",{style:{...C.wrapper,width:e,height:t},...i},!r&&M.createElement(N,null,n),M.createElement("div",{ref:a,style:{...C.fullWidth,...!r&&C.hide},className:o}))}),D=function(e){(0,M.useEffect)(e,[])},q=function(e,t,r=!0){let n=(0,M.useRef)(!0);(0,M.useEffect)(n.current||!r?()=>{n.current=!1}:e,t)};function U(){}function V(e,t,r,n){return e.editor.getModel(B(e,n))||e.editor.createModel(t,r,n?B(e,n):void 0)}function B(e,t){return e.Uri.parse(t)}(0,M.memo)(function({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:a,originalModelPath:o,modifiedModelPath:i,keepCurrentOriginalModel:u=!1,keepCurrentModifiedModel:c=!1,theme:l="light",loading:f="Loading...",options:s={},height:d="100%",width:y="100%",className:p,wrapperProps:m={},beforeMount:v=U,onMount:h=U}){let[g,_]=(0,M.useState)(!1),[b,x]=(0,M.useState)(!0),S=(0,M.useRef)(null),j=(0,M.useRef)(null),P=(0,M.useRef)(null),w=(0,M.useRef)(h),T=(0,M.useRef)(v),E=(0,M.useRef)(!1);D(()=>{let e=A.init();return e.then(e=>(j.current=e)&&x(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return S.current?(t=S.current?.getModel(),void(u||t?.original?.dispose(),c||t?.modified?.dispose(),S.current?.dispose())):e.cancel()}}),q(()=>{let e=S.current.getModifiedEditor();e.getOption(j.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],g),q(()=>{S.current?.getModel()?.original.setValue(e||"")},[e],g),q(()=>{let{original:e,modified:t}=S.current.getModel();j.current.editor.setModelLanguage(e,n||r||"text"),j.current.editor.setModelLanguage(t,a||r||"text")},[r,n,a],g),q(()=>{j.current?.editor.setTheme(l)},[l],g),q(()=>{S.current?.updateOptions(s)},[s],g);let I=(0,M.useCallback)(()=>{if(!j.current)return;T.current(j.current);let u=V(j.current,e||"",n||r||"text",o||""),c=V(j.current,t||"",a||r||"text",i||"");S.current?.setModel({original:u,modified:c})},[r,t,a,e,n,o,i]),O=(0,M.useCallback)(()=>{!E.current&&P.current&&(S.current=j.current.editor.createDiffEditor(P.current,{automaticLayout:!0,...s}),I(),j.current?.editor.setTheme(l),_(!0),E.current=!0)},[s,l,I]);return(0,M.useEffect)(()=>{g&&w.current(S.current,j.current)},[g]),(0,M.useEffect)(()=>{b||g||O()},[b,g,O]),q(()=>{if(S.current&&j.current){let t=S.current.getOriginalEditor(),a=V(j.current,e||"",n||r||"text",o||"");a!==t.getModel()&&t.setModel(a)}},[o],g),q(()=>{if(S.current&&j.current){let e=S.current.getModifiedEditor(),n=V(j.current,t||"",a||r||"text",i||"");n!==e.getModel()&&e.setModel(n)}},[i],g),M.createElement(R,{width:y,height:d,isEditorReady:g,loading:f,_ref:P,className:p,wrapperProps:m})});var J=function(e){let t=(0,M.useRef)();return(0,M.useEffect)(()=>{t.current=e},[e]),t.current},z=new Map,G=(0,M.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:a,path:o,theme:i="light",line:u,loading:c="Loading...",options:l={},overrideServices:f={},saveViewState:s=!0,keepCurrentModel:d=!1,width:y="100%",height:p="100%",className:m,wrapperProps:v={},beforeMount:h=U,onMount:g=U,onChange:_,onValidate:b=U}){let[x,S]=(0,M.useState)(!1),[j,P]=(0,M.useState)(!0),w=(0,M.useRef)(null),T=(0,M.useRef)(null),E=(0,M.useRef)(null),I=(0,M.useRef)(g),O=(0,M.useRef)(h),F=(0,M.useRef)(),k=(0,M.useRef)(n),C=J(o),L=(0,M.useRef)(!1),N=(0,M.useRef)(!1);D(()=>{let e=A.init();return e.then(e=>(w.current=e)&&P(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>T.current?void(F.current?.dispose(),d?s&&z.set(o,T.current.saveViewState()):T.current.getModel()?.dispose(),T.current.dispose()):e.cancel()}),q(()=>{let i=V(w.current,e||n||"",t||a||"",o||r||"");i!==T.current?.getModel()&&(s&&z.set(C,T.current?.saveViewState()),T.current?.setModel(i),s&&T.current?.restoreViewState(z.get(o)))},[o],x),q(()=>{T.current?.updateOptions(l)},[l],x),q(()=>{T.current&&void 0!==n&&(T.current.getOption(w.current.editor.EditorOption.readOnly)?T.current.setValue(n):n===T.current.getValue()||(N.current=!0,T.current.executeEdits("",[{range:T.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),T.current.pushUndoStop(),N.current=!1))},[n],x),q(()=>{let e=T.current?.getModel();e&&a&&w.current?.editor.setModelLanguage(e,a)},[a],x),q(()=>{void 0!==u&&T.current?.revealLine(u)},[u],x),q(()=>{w.current?.editor.setTheme(i)},[i],x);let B=(0,M.useCallback)(()=>{if(!(!E.current||!w.current)&&!L.current){O.current(w.current);let u=o||r,c=V(w.current,n||e||"",t||a||"",u||"");T.current=w.current?.editor.create(E.current,{model:c,automaticLayout:!0,...l},f),s&&T.current.restoreViewState(z.get(u)),w.current.editor.setTheme(i),S(!0),L.current=!0}},[e,t,r,n,a,o,l,f,s,i]);return(0,M.useEffect)(()=>{x&&I.current(T.current,w.current)},[x]),(0,M.useEffect)(()=>{j||x||B()},[j,x,B]),k.current=n,(0,M.useEffect)(()=>{x&&_&&(F.current?.dispose(),F.current=T.current?.onDidChangeModelContent(e=>{N.current||_(T.current.getValue(),e)}))},[x,_]),(0,M.useEffect)(()=>{if(x){let e=w.current.editor.onDidChangeMarkers(e=>{let t=T.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=w.current.editor.getModelMarkers({resource:t});b?.(e)}});return()=>{e?.dispose()}}return()=>{}},[x,b]),M.createElement(R,{width:y,height:p,isEditorReady:x,loading:c,_ref:E,className:m,wrapperProps:v})})}}]); \ No newline at end of file diff --git a/_next/static/chunks/583-f1ddf16b954956a8.js b/_next/static/chunks/583-f1ddf16b954956a8.js new file mode 100644 index 0000000000..704c6896e5 --- /dev/null +++ b/_next/static/chunks/583-f1ddf16b954956a8.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[583],{6961:function(e,t,r){var n,a=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function a(e,t){if(!n[e]){n[e]={};for(var r=0;r>>8,r[2*n+1]=i%256}return r},decompressFromUint8Array:function(t){if(null==t)return o.decompress(t);for(var r=Array(t.length/2),n=0,a=r.length;nf.charCodeAt(0)){for(n=0;n>=1}else{for(n=0,a=1;n>=1}0==--s&&(s=Math.pow(2,y),y++),delete u[f]}else for(n=0,a=i[f];n>=1;0==--s&&(s=Math.pow(2,y),y++),i[l]=d++,f=String(c)}if(""!==f){if(Object.prototype.hasOwnProperty.call(u,f)){if(256>f.charCodeAt(0)){for(n=0;n>=1}else{for(n=0,a=1;n>=1}0==--s&&(s=Math.pow(2,y),y++),delete u[f]}else for(n=0,a=i[f];n>=1;0==--s&&(s=Math.pow(2,y),y++)}for(n=0,a=2;n>=1;for(;;){if(m<<=1,v==t-1){p.push(r(m));break}v++}return p.join("")},decompress:function(e){return null==e?"":""==e?null:o._decompress(e.length,32768,function(t){return e.charCodeAt(t)})},_decompress:function(t,r,n){var a,o,i,u,c,l,f,s=[],d=4,y=4,p=3,m="",v=[],h={val:n(0),position:r,index:1};for(a=0;a<3;a+=1)s[a]=a;for(i=0,c=4,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;switch(i){case 0:for(i=0,c=256,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;f=e(i);break;case 1:for(i=0,c=65536,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;f=e(i);break;case 2:return""}for(s[3]=f,o=f,v.push(f);;){if(h.index>t)return"";for(i=0,c=Math.pow(2,p),l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;switch(f=i){case 0:for(i=0,c=256,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;s[y++]=e(i),f=y-1,d--;break;case 1:for(i=0,c=65536,l=1;l!=c;)u=h.val&h.position,h.position>>=1,0==h.position&&(h.position=r,h.val=n(h.index++)),i|=(u>0?1:0)*l,l<<=1;s[y++]=e(i),f=y-1,d--;break;case 2:return v.join("")}if(0==d&&(d=Math.pow(2,p),p++),s[f])m=s[f];else{if(f!==y)return null;m=o+o.charAt(0)}v.push(m),s[y++]=o+m.charAt(0),d--,o=m,0==d&&(d=Math.pow(2,p),p++)}}};return o}();void 0!==(n=(function(){return a}).call(t,r,t,e))&&(e.exports=n)},7297:function(e,t,r){"use strict";var n,a,o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CommentFactory=void 0;var c=u(r(5423));(n=a||(t.CommentFactory=a={})).description=function(e,t){void 0===t&&(t=!1);var r,n,a,u,f,s,d,y,p,m=null===(d=e.declarations)||void 0===d?void 0:d[0];if(m){var v=o(c.default.versionMajorMinor.split(".").map(Number),2),h=v[0],g=v[1];if(h<5||5===h&&g<1){var _=[],b=c.default.displayPartsToString(e.getDocumentationComment(void 0));if(b.length&&(_.push(b),t&&e.getJsDocTags().length&&_.push("")),t)try{for(var x=i(e.getJsDocTags()),S=x.next();!S.done;S=x.next()){var j=S.value;_.push(j.text?"@".concat(j.name," ").concat(c.default.displayPartsToString(j.text)):"@".concat(j.name))}}catch(e){r={error:e}}finally{try{S&&!S.done&&(n=x.return)&&n.call(x)}finally{if(r)throw r.error}}return _.length?_.map(function(e){return e.split("\r\n").join("\n")}).join("\n"):void 0}var P=c.default.getJSDocCommentsAndTags(m);if(0!==P.length){var w=[];try{for(var T=i(P),E=T.next();!E.done;E=T.next()){var O=E.value;if(c.default.isJSDoc(O)){var I=c.default.getTextOfJSDocComment(O.comment);if((null==I?void 0:I.length)&&(w.push(I),t&&(null===(y=O.tags)||void 0===y?void 0:y.length)&&w.push("")),t)try{for(var F=(f=void 0,i(null!==(p=O.tags)&&void 0!==p?p:[])),k=F.next();!k.done;k=F.next()){var j=k.value;w.push(l(j))}}catch(e){f={error:e}}finally{try{k&&!k.done&&(s=F.return)&&s.call(F)}finally{if(f)throw f.error}}}else t&&w.push(l(O))}}catch(e){a={error:e}}finally{try{E&&!E.done&&(u=T.return)&&u.call(T)}finally{if(a)throw a.error}}var A=w.map(function(e){return e.split("\r\n").join("\n")}).join("\n");return A.length?A:void 0}}},n.merge=function(e){return e.map(function(e){return e.text}).map(function(e){return e.split("\r\n").join("\n")}).join("")};var l=function(e){var t,r=null===(t=e.name)||void 0===t?void 0:t.getText(),n=c.default.getTextOfJSDocComment(e.comment);return["@".concat(e.tagName.text),r,n].filter(function(e){return!!(null==e?void 0:e.length)}).join(" ")}},3906:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ExpressionFactory=void 0;var i=o(r(5423));(n=a||(t.ExpressionFactory=a={})).isRequired=function(e){return i.default.factory.createStrictInequality(i.default.factory.createIdentifier("undefined"),e)},n.isArray=function(e){return i.default.factory.createCallExpression(i.default.factory.createIdentifier("Array.isArray"),void 0,[e])},n.isObject=function(e){return function(t){var r=[i.default.factory.createStrictEquality(i.default.factory.createStringLiteral("object"),i.default.factory.createTypeOfExpression(t))];return!0===e.checkNull&&r.push(i.default.factory.createStrictInequality(i.default.factory.createNull(),t)),!0===e.checkArray&&r.push(i.default.factory.createStrictEquality(i.default.factory.createFalse(),i.default.factory.createCallExpression(i.default.factory.createIdentifier("Array.isArray"),void 0,[t]))),1===r.length?r[0]:r.reduce(function(e,t){return i.default.factory.createLogicalAnd(e,t)})}},n.isInstanceOf=function(e){return function(t){return i.default.factory.createBinaryExpression(t,i.default.factory.createToken(i.default.SyntaxKind.InstanceOfKeyword),i.default.factory.createIdentifier(e))}},n.coalesce=function(e){return function(t){return i.default.factory.createBinaryExpression(e,i.default.factory.createToken(i.default.SyntaxKind.QuestionQuestionToken),t)}}},1387:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.IdentifierFactory=void 0;var i=o(r(5423)),u=r(5724),c=r(2301);(n=a||(t.IdentifierFactory=a={})).identifier=function(e){return u.Escaper.variable(e)?i.default.factory.createIdentifier(e):i.default.factory.createStringLiteral(e)},n.access=function(e){return function(t){var r=n.identifier(t);return i.default.isStringLiteral(r)?i.default.factory.createElementAccessExpression(e,r):i.default.factory.createPropertyAccessExpression(e,r)}},n.postfix=function(e){return u.Escaper.variable(e)?'".'.concat(e,'"'):'"['.concat(JSON.stringify(e).split('"').join('\\"'),']"')},n.parameter=function(e,t,r){return void 0!==i.default.getDecorators?i.default.factory.createParameterDeclaration(void 0,void 0,e,(null==r?void 0:r.kind)===i.default.SyntaxKind.QuestionToken?i.default.factory.createToken(i.default.SyntaxKind.QuestionToken):void 0,null!=t?t:c.TypeFactory.keyword("any"),r&&r.kind!==i.default.SyntaxKind.QuestionToken?r:void 0):i.default.factory.createParameterDeclaration(void 0,void 0,void 0,e,(null==r?void 0:r.kind)===i.default.SyntaxKind.QuestionToken?i.default.factory.createToken(i.default.SyntaxKind.QuestionToken):void 0,t,r&&r.kind!==i.default.SyntaxKind.QuestionToken?r:void 0)}},7846:function(e,t,r){"use strict";var n,a,o,i,u,c,l=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},f=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.LiteralFactory=void 0;var s=f(r(5423)),d=r(1387);(n=c||(t.LiteralFactory=c={})).generate=function(e){if(null===e)return s.default.factory.createNull();if(s.default.isIdentifier(e))return e;if(e instanceof Array)return o(e);if("object"==typeof e)return a(e);if("string"==typeof e)return u(e);if("boolean"==typeof e)return i(e);if("number"==typeof e)return i(e);else if("bigint"==typeof e)return i(e);else throw Error("Unknown type.")},a=function(e){return s.default.factory.createObjectLiteralExpression(Object.entries(e).filter(function(e){return void 0!==e[1]}).map(function(e){var t=l(e,2),r=t[0],a=t[1];return s.default.factory.createPropertyAssignment(d.IdentifierFactory.identifier(r),n.generate(a))}),!0)},o=function(e){return s.default.factory.createArrayLiteralExpression(e.map(n.generate),!0)},i=function(e){return s.default.factory.createIdentifier(e.toString())},u=function(e){return s.default.factory.createStringLiteral(e)}},2595:function(e,t,r){"use strict";var n,a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataCollection=void 0;var u=r(4981),c=r(8975),l=r(5136),f=r(4712),s=r(1261),d=r(3224),y=r(7297),p=r(2301),m=function(){function e(e){this.options=e,this.entire_=new Set,this.objects_=new Map,this.object_unions_=new Map,this.aliases_=new Map,this.arrays_=new Map,this.tuples_=new Map,this.names_=new Map,this.object_index_=0,this.recursive_array_index_=0,this.recursive_tuple_index_=0}return e.prototype.aliases=function(){return o([],a(this.aliases_.values()),!1)},e.prototype.objects=function(){return o([],a(this.objects_.values()),!1)},e.prototype.unions=function(){return o([],a(this.object_unions_.values()),!1)},e.prototype.arrays=function(){return o([],a(this.arrays_.values()),!1)},e.prototype.tuples=function(){return o([],a(this.tuples_.values()),!1)},e.prototype.getName=function(e,t){var r,n,a=(n=p.TypeFactory.getFullName(e)(t),(null===(r=this.options)||void 0===r?void 0:r.replace)?this.options.replace(n):n),o=d.MapUtil.take(this.names_)(a,function(){return new Map}),i=o.get(t);if(void 0!==i)return i;var u=o.size?"".concat(a,".o").concat(o.size):a;return o.set(t,u),u},e.prototype.getUnionIndex=function(e){var t=e.objects.map(function(e){return e.name}).join(" | ");return d.MapUtil.take(this.object_unions_)(t,function(){return e.objects}),o([],a(this.object_unions_.keys()),!1).indexOf(t)},e.prototype.emplace=function(e,t){var r,n,a,o=this.objects_.get(t);if(void 0!==o)return[o,!1];var i=this.getName(e,t),u=l.MetadataObject.create({name:i,properties:[],description:null!==(r=t.symbol&&y.CommentFactory.description(t.symbol))&&void 0!==r?r:void 0,jsDocTags:null!==(a=null===(n=t.symbol)||void 0===n?void 0:n.getJsDocTags())&&void 0!==a?a:[],validated:!1,index:this.object_index_++,recursive:null,nullables:[]});return this.objects_.set(t,u),[u,!0]},e.prototype.emplaceAlias=function(e,t,r){var n,a,o=this.aliases_.get(t);if(void 0!==o)return[o,!1,function(){}];var i=this.getName(e,t),c=u.MetadataAlias.create({name:i,value:null,description:null!==(n=y.CommentFactory.description(r))&&void 0!==n?n:null,recursive:null,nullables:[],tags:[],jsDocTags:null!==(a=r.getJsDocTags())&&void 0!==a?a:[]});return this.aliases_.set(t,c),[c,!0,function(e){return(0,s.Writable)(c).value=e}]},e.prototype.emplaceArray=function(e,t){var r=this.arrays_.get(t);if(void 0!==r)return[r,!1,function(){}];var n=this.getName(e,t),a=c.MetadataArray.create({name:n,value:null,index:null,recursive:null,nullables:[]});return this.arrays_.set(t,a),[a,!0,function(e){return(0,s.Writable)(a).value=e}]},e.prototype.emplaceTuple=function(e,t){var r=this.tuples_.get(t);if(void 0!==r)return[r,!1,function(){}];var n=this.getName(e,t),a=f.MetadataTuple.create({name:n,elements:null,index:null,recursive:null,nullables:[]});return this.tuples_.set(t,a),[a,!0,function(e){return(0,s.Writable)(a).elements=e}]},e.prototype.setObjectRecursive=function(e,t){(0,s.Writable)(e).recursive=t},e.prototype.setAliasRecursive=function(e,t){(0,s.Writable)(e).recursive=t},e.prototype.setArrayRecursive=function(e,t){(0,s.Writable)(e).recursive=t,t&&((0,s.Writable)(e).index=this.recursive_array_index_++)},e.prototype.setTupleRecursive=function(e,t){(0,s.Writable)(e).recursive=t,t&&((0,s.Writable)(e).index=this.recursive_tuple_index_++)},e.prototype.toJSON=function(){return{objects:this.objects().map(function(e){return e.toJSON()}),aliases:this.aliases().map(function(e){return e.toJSON()}),arrays:o([],a(this.arrays_.values()),!1).map(function(e){return e.toJSON()}),tuples:o([],a(this.tuples_.values()),!1).map(function(e){return e.toJSON()})}},e}();t.MetadataCollection=m,(n=m||(t.MetadataCollection=m={})).replace=function(e){var t,r;try{for(var n=i(v),o=n.next();!o.done;o=n.next()){var u=a(o.value,2),c=u[0],l=u[1];e=e.split(c).join(l)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return e},n.escape=function(e){var t,r;try{for(var n=i(v),o=n.next();!o.done;o=n.next()){var u=a(o.value,2),c=u[0],l=u[1];""!==l&&(e=e.split(l).join(c))}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return e};var v=[["$","_dollar_"],["&","_and_"],["|","_or_"],["{","_blt_"],["}","_bgt_"],["<","_lt_"],[">","_gt_"],["[","_alt_"],["]","_agt_"],[",","_comma_"],["`","_backquote_"],["'","_singlequote_"],['"',"_doublequote_"],[" ","_space_"]]},3390:function(e,t,r){"use strict";var n,a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataFactory=void 0;var o=r(1903),i=r(628),u=r(6896);(n||(t.MetadataFactory=n={})).analyze=function(e){return function(t){return function(r){return function(n){var c,l,f=(0,o.explore_metadata)(e)(t)(r)(n,!1);if((0,i.iterate_metadata_collection)(r),(0,u.iterate_metadata_sort)(r)(f),t.validate)try{for(var s=a(r.entire_),d=s.next();!d.done;d=s.next()){var y=d.value;t.validate(y)}}catch(e){c={error:e}}finally{try{d&&!d.done&&(l=s.return)&&l.call(s)}finally{if(c)throw c.error}}return r.entire_.clear(),f}}}}},8954:function(e,t){"use strict";var r,n,a,o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataTagFactory=void 0,(r=a||(t.MetadataTagFactory=a={})).generate=function(e){return function(t){return function(r){var a,i,u=[];try{for(var c=o(t),l=c.next();!l.done;l=c.next()){var f=l.value,s=n(r,e,f,u);null!==s&&u.push(s)}}catch(e){a={error:e}}finally{try{l&&!l.done&&(i=c.return)&&i.call(c)}finally{if(a)throw a.error}}return u}}},n=function(e,t,n,a){var o,i=r._PARSER[n.name];if(void 0===i)return null;var c=null===(o=(n.text||[])[0])||void 0===o?void 0:o.text;if(void 0===c)throw Error("".concat(u,": no tag value on ").concat(e()));return i(e,t,c,a)},r._PARSER={items:function(e,t,r,n){return f(e,t,n,"items","array",["minItems"]),{kind:"items",value:i(e,r)}},minItems:function(e,t,r,n){return f(e,t,n,"minItems","array",["items"]),{kind:"minItems",value:i(e,r)}},maxItems:function(e,t,r,n){return f(e,t,n,"maxItems","array",["items"]),{kind:"maxItems",value:i(e,r)}},type:function(e,t,r,n){return s("number")(new Set)(t)&&("int"===r||"uint"===r)?{kind:"type",value:r}:"{int}"===r||"{uint}"===r?{kind:"type",value:r.slice(1,-1)}:null},minimum:function(e,t,r,n){return f(e,t,n,"minimum","number",["exclusiveMinimum"]),{kind:"minimum",value:i(e,r)}},maximum:function(e,t,r,n){return f(e,t,n,"maximum","number",["exclusiveMaximum"]),{kind:"maximum",value:i(e,r)}},exclusiveMinimum:function(e,t,r,n){return f(e,t,n,"exclusiveMinimum","number",["minimum"]),{kind:"exclusiveMinimum",value:i(e,r)}},exclusiveMaximum:function(e,t,r,n){return f(e,t,n,"exclusiveMaximum","number",["maximum"]),{kind:"exclusiveMaximum",value:i(e,r)}},multipleOf:function(e,t,r,n){return f(e,t,n,"multipleOf","number",["step"]),{kind:"multipleOf",value:i(e,r)}},step:function(e,t,r,n){if(f(e,t,n,"step","number",["multipleOf"]),void 0===n.some(function(e){return"minimum"===e.kind||"exclusiveMinimum"===e.kind}))throw Error("".concat(u,': step requires minimum or exclusiveMinimum tag on "').concat(e(),'".'));return{kind:"step",value:i(e,r)}},format:function(e,t,r,n){var a=c.get(r);return(f(e,t,n,"format","date"===a||"datetime"===a?"Date":"string",["pattern"]),void 0===a)?null:{kind:"format",value:a}},pattern:function(e,t,r,n){return f(e,t,n,"pattern","string",["format"]),{kind:"pattern",value:r}},length:function(e,t,r,n){return f(e,t,n,"length","string",["minLength","maxLength"]),{kind:"length",value:i(e,r)}},minLength:function(e,t,r,n){return f(e,t,n,"minLength","string",["length"]),{kind:"minLength",value:i(e,r)}},maxLength:function(e,t,r,n){return f(e,t,n,"maxLength","string",["length"]),{kind:"maxLength",value:i(e,r)}}};var i=function(e,t){var r=Number(t);if(!0===isNaN(r))throw Error("".concat(u,': invalid number on "').concat(e(),'".'));return r},u="Error on typia.MetadataTagFactory.generate()",c=new Map([["uuid","uuid"],["email","email"],["url","url"],["ipv4","ipv4"],["ipv6","ipv6"],["date","date"],["datetime","datetime"],["date-time","datetime"],["dateTime","datetime"]]),l=function(e,t,r){return"".concat(u,": ").concat(e," requires ").concat(t,' type, but no "').concat(r(),'".')},f=function(e,t,r,n,a,i){if("array"===a){if(!1===y(new Set)(t))throw Error(l(n,"array",e))}else if("Date"===a){if(!1===d("Date")(new Set)(t)&&!1===s("string")(new Set)(t))throw Error(l(n,"string",e))}else if(!1===s(a)(new Set)(t))throw Error(l(n,a,e));if(r.some(function(e){return e.kind===n}))throw Error("".concat(u,": duplicated ").concat(n,' tags on "').concat(e(),'".'));var c,f,p=function(t){if(r.some(function(e){return e.kind===t}))throw Error("".concat(u,": ").concat(n," and ").concat(t,' tags on "').concat(e(),'".'))};try{for(var m=o(i),v=m.next();!v.done;v=m.next()){var h=v.value;p(h)}}catch(e){c={error:e}}finally{try{v&&!v.done&&(f=m.return)&&f.call(m)}finally{if(c)throw c.error}}},s=function(e){return function(t){return function(r){return!t.has(r)&&(t.add(r),void 0!==r.atomics.find("number"===e?function(t){return t===e||"bigint"===t}:function(t){return t===e})||r.arrays.some(function(r){return s(e)(t)(r.value)})||r.tuples.some(function(r){return r.elements.some(s(e)(t))})||r.aliases.some(function(r){return s(e)(t)(r.value)})||null!==r.resolved&&s(e)(t)(r.resolved.returns))}}},d=function(e){return function(t){return function(r){return!t.has(r)&&(t.add(r),void 0!==r.natives.find(function(t){return t===e})||r.arrays.some(function(r){return d(e)(t)(r.value)})||r.tuples.some(function(r){return r.elements.some(d(e)(t))})||r.aliases.some(function(r){return d(e)(t)(r.value)})||null!==r.resolved&&d(e)(t)(r.resolved.returns))}}},y=function(e){return function(t){return!e.has(t)&&(e.add(t),0!==t.arrays.length||t.tuples.some(function(t){return t.elements.some(y(e))})||t.aliases.some(function(t){return y(e)(t.value)})||null!==t.resolved&&y(e)(t.resolved.returns))}}},6152:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StatementFactory=void 0;var i=o(r(5423));(n=a||(t.StatementFactory=a={})).constant=function(e,t){return i.default.factory.createVariableStatement(void 0,i.default.factory.createVariableDeclarationList([i.default.factory.createVariableDeclaration(e,void 0,void 0,t)],i.default.NodeFlags.Const))},n.transpile=function(e){return i.default.factory.createExpressionStatement(i.default.factory.createIdentifier(i.default.transpile(e)))}},5374:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TemplateFactory=void 0;var i=o(r(5423));(a||(t.TemplateFactory=a={})).generate=function(e){if(e.every(function(e){return i.default.isStringLiteral(e)}))return i.default.factory.createStringLiteral(e.map(function(e){return e.text}).join(""));var t={value:"",index:0};n(e)(t);for(var r=i.default.factory.createTemplateHead(t.value),a=[];;){var o=e[t.index++];n(e)(t);var u=t.index===e.length;if(a.push(i.default.factory.createTemplateSpan(o,u?i.default.factory.createTemplateTail(t.value):i.default.factory.createTemplateMiddle(t.value))),!0===u)break}return i.default.factory.createTemplateExpression(r,a)},n=function(e){return function(t){var r=e.findIndex(function(e,r){return r>=t.index&&!i.default.isStringLiteral(e)}),n=-1!==r?r:e.length;t.value=e.slice(t.index,n).map(function(e){return e.text}).reduce(function(e,t){return e+t},""),t.index=n}}},2301:function(e,t,r){"use strict";var n,a,o,i,u,c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TypeFactory=void 0;var l=c(r(5423));(n=u||(t.TypeFactory=u={})).resolve=function(e){return function(t){return n.getReturnType(e)(t)("toJSON")}},n.isFunction=function(e){return null!==a(e)},a=function(e){var t,r,n=null===(r=null===(t=e.symbol)||void 0===t?void 0:t.declarations)||void 0===r?void 0:r[0];return void 0===n?null:l.default.isFunctionLike(n)?n:(l.default.isPropertyAssignment(n)||l.default.isPropertyDeclaration(n))&&l.default.isFunctionLike(n.initializer)?n.initializer:null},n.getReturnType=function(e){return function(t){return function(r){var n=t.getProperty(r);if(!n||!n.valueDeclaration)return null;var a=e.getTypeOfSymbolAtLocation(n,n.valueDeclaration),o=e.getSignaturesOfType(a,l.default.SignatureKind.Call)[0];return o?o.getReturnType():null}}},n.getFullName=function(e){return function(t,r){if(null!=r||(r=null!==(a=t.aliasSymbol)&&void 0!==a?a:t.getSymbol()),void 0===r)return e.typeToString(t);if(void 0===t.aliasSymbol&&t.isUnionOrIntersection()){var a,o=t.isIntersection()?" & ":" | ";return t.types.map(function(t){return n.getFullName(e)(t)}).join(o)}var u=i(r),c=t.aliasSymbol?t.aliasTypeArguments||[]:e.getTypeArguments(t);return c.length?"Promise"===u?n.getFullName(e)(c[0]):"".concat(u,"<").concat(c.map(function(t){return n.getFullName(e)(t)}).join(", "),">"):u}},o=function(e){return function(t){return l.default.isModuleBlock(e)?o(e.parent.parent)("".concat(e.parent.name.getFullText().trim(),".").concat(t)):t}},i=function(e){var t,r,n=null===(r=null===(t=e.getDeclarations())||void 0===t?void 0:t[0])||void 0===r?void 0:r.parent;return n?o(n)(e.escapedName.toString()):"__type"},n.keyword=function(e){return l.default.factory.createKeywordTypeNode("void"===e?l.default.SyntaxKind.VoidKeyword:"any"===e?l.default.SyntaxKind.AnyKeyword:"unknown"===e?l.default.SyntaxKind.UnknownKeyword:"boolean"===e?l.default.SyntaxKind.BooleanKeyword:"number"===e?l.default.SyntaxKind.NumberKeyword:"bigint"===e?l.default.SyntaxKind.BigIntKeyword:l.default.SyntaxKind.StringKeyword)}},4411:function(e,t,r){"use strict";var n,a,o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ValueFactory=void 0;var i=o(r(5423));(n=a||(t.ValueFactory=a={})).NULL=function(){return i.default.factory.createNull()},n.UNDEFINED=function(){return i.default.factory.createIdentifier("undefined")},n.BOOLEAN=function(e){return e?i.default.factory.createTrue():i.default.factory.createFalse()},n.INPUT=function(e){return void 0===e&&(e="input"),i.default.factory.createIdentifier(e)},n.TYPEOF=function(e){return i.default.factory.createTypeOfExpression(e)}},9614:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataHelper=void 0;var n,a=r(9133);(n||(t.MetadataHelper=n={})).literal_to_metadata=function(e){var t=a.Metadata.initialize();return t.constants.push({type:"string",values:[e]}),t}},500:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.emend_metadata_atomics=void 0;var a=r(3346);t.emend_metadata_atomics=function(e){var t,r,o=function(t){var r=e.constants.findIndex(function(e){return e.type===t});-1!==r&&e.constants.splice(r,1)};try{for(var i=n(e.atomics),u=i.next();!u.done;u=i.next()){var c=u.value;o(c)}}catch(e){t={error:e}}finally{try{u&&!u.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}var l=e.constants.findIndex(function(e){return"boolean"===e.type});-1!==l&&2===e.constants[l].values.length&&(e.constants.splice(l,1),a.ArrayUtil.take(e.atomics,function(e){return"boolean"===e},function(){return"boolean"})),e.templates.length&&void 0!==e.atomics.find(function(e){return"string"===e})&&e.templates.splice(0,e.templates.length)}},3389:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(t,"__esModule",{value:!0}),t.emplace_metadata_array=void 0;var a=r(3346),o=r(1903);t.emplace_metadata_array=function(e){return function(t){return function(r){return function(i,u){var c=n(r.emplaceArray(e,i),3),l=c[0],f=c[1],s=c[2];return a.ArrayUtil.add(l.nullables,u),!1===f||s((0,o.explore_metadata)(e)(t)(r)(i.getNumberIndexType(),!1,!1)),l}}}}},8083:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emplace_metadata_object=void 0;var i=o(r(5423)),u=r(2416),c=r(1261),l=r(3346),f=r(7297),s=r(9614),d=r(1903);t.emplace_metadata_object=function(e){return function(t){return function(r){return function(o,p){var m,v,h,g,_,b,x=n(r.emplace(e,o),2),S=x[0],j=x[1];if(l.ArrayUtil.add(S.nullables,p,function(e){return e===p}),!1===j)return S;var P=o.isClass()?function(e){var t,r,n=null===(r=null===(t=e.getChildren()[0])||void 0===t?void 0:t.getChildren()[0])||void 0===r?void 0:r.kind;return n!==i.default.SyntaxKind.PrivateKeyword&&n!==i.default.SyntaxKind.ProtectedKeyword&&(i.default.isParameter(e)||y(e))}:function(e){return y(e)},w=function(e){return function(t){return function(r,n){var a,o,i=r&&null!==(a=f.CommentFactory.description(r))&&void 0!==a?a:null,c=(null!==(o=null==r?void 0:r.getJsDocTags())&&void 0!==o?o:[]).filter(null!=n?n:function(){return!0}),l=u.MetadataProperty.create({key:e,value:t,description:i,jsDocTags:c,tags:[]});return S.properties.push(l),l}}};try{for(var T=a(o.getApparentProperties()),E=T.next();!E.done;E=T.next()){var O=E.value;!function(a){if(void 0===(null!==(_=a.getJsDocTags(e))&&void 0!==_?_:[]).find(function(e){return"internal"===e.name})){var i,u,l,f=n((l=(u=(null!==(i=a.getDeclarations())&&void 0!==i?i:[])[0])?e.getTypeOfSymbolAtLocation(a,u):"getTypeOfPropertyOfType"in e?e.getTypeOfPropertyOfType(o,a.name):void 0,[u,l]),2),y=f[0],p=f[1];if((!y||!1!==P(y))&&void 0!==p){var m=s.MetadataHelper.literal_to_metadata(a.name),v=(0,d.explore_metadata)(e)(t)(r)(p,!1);(null==y?void 0:y.questionToken)&&((0,c.Writable)(v).optional=!0),w(m)(v)(a)}}}(O)}}catch(e){m={error:e}}finally{try{E&&!E.done&&(v=T.return)&&v.call(T)}finally{if(m)throw m.error}}try{for(var I=a(e.getIndexInfosOfType(o)),F=I.next();!F.done;F=I.next()){var k=F.value,A=function(n){return(0,d.explore_metadata)(e)(t)(r)(n,!1)},M=A(k.keyType),C=A(k.type);w(M)(C)((null===(b=k.declaration)||void 0===b?void 0:b.parent)?e.getSymbolAtLocation(k.declaration.parent):void 0,function(e){return"default"!==e.name})}}catch(e){h={error:e}}finally{try{F&&!F.done&&(g=I.return)&&g.call(I)}finally{if(h)throw h.error}}return S}}}};var y=function(e){return i.default.isPropertyDeclaration(e)||i.default.isPropertyAssignment(e)||i.default.isPropertySignature(e)||i.default.isTypeLiteralNode(e)}},373:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.emplace_metadata_tuple=void 0;var o=a(r(5423)),i=r(9133),u=r(1261),c=r(3346),l=r(1903);t.emplace_metadata_tuple=function(e){return function(t){return function(r){return function(a,f){var s,d,y,p=n(r.emplaceTuple(e,a),3),m=p[0],v=p[1],h=p[2];if(c.ArrayUtil.add(m.nullables,f),!1===v)return m;var g=null!==(y=null!==(s=a.elementFlags)&&void 0!==s?s:null===(d=a.target)||void 0===d?void 0:d.elementFlags)&&void 0!==y?y:[];return h(e.getTypeArguments(a).map(function(n,a){var c=(0,l.explore_metadata)(e)(t)(r)(n,!1,!1),f=g[a];if(f===o.default.ElementFlags.Optional&&((0,u.Writable)(c).optional=!0),f!==o.default.ElementFlags.Rest)return c;var s=i.Metadata.initialize();return(0,u.Writable)(s).rest=c,s})),m}}}}},1903:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.explore_metadata=void 0;var n=r(9133),a=r(500),o=r(3055);t.explore_metadata=function(e){return function(t){return function(r){return function(i,u,c){void 0===c&&(c=!1);var l=n.Metadata.initialize(u);return r.entire_.add(l),null===i||((0,o.iterate_metadata)(e)(t)(r)(l,i,u,c),(0,a.emend_metadata_atomics)(l),l.resolved&&((0,a.emend_metadata_atomics)(l.resolved.original),(0,a.emend_metadata_atomics)(l.resolved.returns))),l}}}}},3055:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata=void 0;var n=r(8352),a=r(2481),o=r(1333),i=r(8167),u=r(5032),c=r(4991),l=r(7540),f=r(4053),s=r(9859),d=r(6322),y=r(1985),p=r(2861),m=r(2402),v=r(7219);t.iterate_metadata=function(e){return function(t){return function(r){return function(h,g,_,b){if(!0===g.isTypeParameter())throw Error("Error on typia.MetadataFactory.generate(): non-specified generic argument on ".concat(h.getName(),"."));!(!0!==b&&(0,n.iterate_metadata_alias)(e)(t)(r)(h,g)||(0,c.iterate_metadata_intersection)(e)(t)(r)(h,g,_,b)||(0,v.iterate_metadata_union)(e)(t)(r)(h,g,_)||(0,d.iterate_metadata_resolve)(e)(t)(r)(h,g,_,b))&&((0,i.iterate_metadata_coalesce)(h,g)||(0,u.iterate_metadata_constant)(e)(t)(h,g)||(0,p.iterate_metadata_template)(e)(t)(r)(h,g)||(0,o.iterate_metadata_atomic)(h,g)||(0,m.iterate_metadata_tuple)(e)(t)(r)(h,g)||(0,a.iterate_metadata_array)(e)(t)(r)(h,g)||(0,f.iterate_metadata_native)(e)(h,g)||(0,l.iterate_metadata_map)(e)(t)(r)(h,g)||(0,y.iterate_metadata_set)(e)(t)(r)(h,g)||(0,s.iterate_metadata_object)(e)(t)(r)(h,g))}}}}},8352:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_alias=void 0;var n=r(3346),a=r(3389);t.iterate_metadata_alias=function(e){return function(t){return function(r){return function(o,i){if(!1!==t.absorb||void 0===i.aliasSymbol||void 0===(null===(u=i.aliasSymbol.declarations)||void 0===u?void 0:u[0]))return!1;var u,c=(0,a.emplace_metadata_alias)(e)(t)(r)(i,o.nullable);return n.ArrayUtil.add(o.aliases,c,function(e){return e.name===c.name}),!0}}}}},2481:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_array=void 0;var n=r(3346),a=r(5441);t.iterate_metadata_array=function(e){return function(t){return function(r){return function(o,i){if(!e.isArrayType(i))return!1;var u=(0,a.emplace_metadata_array)(e)(t)(r)(i,o.nullable);return n.ArrayUtil.add(o.arrays,u,function(e){return e.name===u.name}),!0}}}}},1333:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_atomic=void 0;var a=n(r(5423)),o=r(3346);t.iterate_metadata_atomic=function(e,t){var r=null===t?function(){return!1}:function(e){return(t.getFlags()&e)!=0};return i.some(function(t){return!!(r(t.atomic)||r(t.literal))&&(o.ArrayUtil.add(e.atomics,t.name),!0)})};var i=[{name:"boolean",atomic:a.default.TypeFlags.BooleanLike,literal:a.default.TypeFlags.BooleanLiteral},{name:"number",atomic:a.default.TypeFlags.NumberLike,literal:a.default.TypeFlags.NumberLiteral},{name:"bigint",atomic:a.default.TypeFlags.BigInt,literal:a.default.TypeFlags.BigIntLiteral},{name:"string",atomic:a.default.TypeFlags.StringLike,literal:a.default.TypeFlags.StringLiteral}]},8167:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_coalesce=void 0;var a=n(r(5423)),o=r(1261),i=r(2301);t.iterate_metadata_coalesce=function(e,t){var r=function(e){return(t.getFlags()&e)!=0};return r(a.default.TypeFlags.Unknown)||r(a.default.TypeFlags.Any)?((0,o.Writable)(e).any=!0,!0):r(a.default.TypeFlags.Null)?((0,o.Writable)(e).nullable=!0,!0):r(a.default.TypeFlags.Undefined)||r(a.default.TypeFlags.Never)||r(a.default.TypeFlags.Void)||r(a.default.TypeFlags.VoidLike)?((0,o.Writable)(e).required=!1,!0):!0===i.TypeFactory.isFunction(t)&&((0,o.Writable)(e).functional=!0,!0)}},628:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_collection=void 0;var a=r(9191);t.iterate_metadata_collection=function(e){try{for(var t,r,c,l,f,s,d=n(e.arrays()),y=d.next();!y.done;y=d.next()){var p=y.value;null===p.recursive&&e.setArrayRecursive(p,o(new Set)(p)(p.value))}}catch(e){t={error:e}}finally{try{y&&!y.done&&(r=d.return)&&r.call(d)}finally{if(t)throw t.error}}try{for(var m=n(e.tuples()),v=m.next();!v.done;v=m.next()){var h=v.value;if(null===h.recursive){var g=new Set;e.setTupleRecursive(h,h.elements.some(i(g)(h)))}}}catch(e){c={error:e}}finally{try{v&&!v.done&&(l=m.return)&&l.call(m)}finally{if(c)throw c.error}}var _=function(t){if((0,a.iterate_metadata_tag)(t),null===t.recursive){var r=new Set;e.setObjectRecursive(t,t.properties.some(function(e){return u(r)(t)(e.value)}))}};try{for(var b=n(e.objects()),x=b.next();!x.done;x=b.next()){var S=x.value;_(S)}}catch(e){f={error:e}}finally{try{x&&!x.done&&(s=b.return)&&s.call(b)}finally{if(f)throw f.error}}};var o=function(e){return function(t){return function(r){return!e.has(r)&&(e.add(r),r.arrays.some(function(r){return r===t||o(e)(t)(r.value)})||r.aliases.some(function(r){return o(e)(t)(r.value)})||r.tuples.some(function(r){return!r.recursive&&r.elements.some(function(r){return o(e)(t)(r)})})||r.maps.some(function(r){return o(e)(t)(r.value)})||r.sets.some(function(r){return o(e)(t)(r)})||null!==r.resolved&&o(e)(t)(r.resolved.returns)||null!==r.rest&&o(e)(t)(r.rest))}}},i=function(e){return function(t){return function(r){return!e.has(r)&&(e.add(r),r.tuples.some(function(r){return r===t||r.elements.some(function(r){return i(e)(t)(r)})})||r.arrays.some(function(r){return!r.recursive&&i(e)(t)(r.value)})||r.maps.some(function(r){return i(e)(t)(r.value)})||r.sets.some(function(r){return i(e)(t)(r)})||r.aliases.some(function(r){return i(e)(t)(r.value)})||null!==r.resolved&&i(e)(t)(r.resolved.returns)||null!==r.rest&&i(e)(t)(r.rest))}}},u=function(e){return function(t){return function(r){return!e.has(r)&&(e.add(r),r.objects.some(function(r){return t===r||r.properties.some(function(r){return u(e)(t)(r.value)})})||r.aliases.some(function(r){return u(e)(t)(r.value)})||r.arrays.some(function(r){return!r.recursive&&u(e)(t)(r.value)})||r.tuples.some(function(r){return!r.recursive&&r.elements.some(function(r){return u(e)(t)(r)})})||r.maps.some(function(r){return u(e)(t)(r.value)})||r.sets.some(function(r){return u(e)(t)(r)})||null!==r.resolved&&u(e)(t)(r.resolved.returns)||null!==r.rest&&u(e)(t)(r.rest))}}}},5032:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_constant=void 0;var a=n(r(5423)),o=r(3346);t.iterate_metadata_constant=function(e){return function(t){return function(r,n){if(!t.constant)return!1;if(n.isLiteral()){var i,u="object"==typeof n.value?BigInt("".concat(n.value.negative?"-":"").concat(n.value.base10Value)):n.value,c=o.ArrayUtil.take(r.constants,function(e){return e.type===typeof u},function(){return{type:typeof u,values:[]}});return o.ArrayUtil.add(c.values,u,function(e,t){return e===t}),!0}if(i=a.default.TypeFlags.BooleanLiteral,(n.getFlags()&i)!=0){var l="true"===e.typeToString(n),c=o.ArrayUtil.take(r.constants,function(e){return"boolean"===e.type},function(){return{type:"boolean",values:[]}});return o.ArrayUtil.add(c.values,l,function(e,t){return e===t}),!0}return!1}}}},4991:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")}),!0}}}}},4053:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_sort=void 0;var a=r(9133),o=r(5136);t.iterate_metadata_sort=function(e){return function(t){var r,a,o,u,c,l,f,s,d,y,p=new Set;try{for(var m=n(e.arrays()),v=m.next();!v.done;v=m.next()){var h=v.value;i(p)(e)(h.value)}}catch(e){r={error:e}}finally{try{v&&!v.done&&(a=m.return)&&a.call(m)}finally{if(r)throw r.error}}try{for(var g=n(e.tuples()),_=g.next();!_.done;_=g.next()){var b=_.value;try{for(var x=(c=void 0,n(b.elements)),S=x.next();!S.done;S=x.next()){var j=S.value;i(p)(e)(j)}}catch(e){c={error:e}}finally{try{S&&!S.done&&(l=x.return)&&l.call(x)}finally{if(c)throw c.error}}}}catch(e){o={error:e}}finally{try{_&&!_.done&&(u=g.return)&&u.call(g)}finally{if(o)throw o.error}}try{for(var P=n(e.objects()),w=P.next();!w.done;w=P.next()){var T=w.value;try{for(var E=(d=void 0,n(T.properties)),O=E.next();!O.done;O=E.next()){var I=O.value;i(p)(e)(I.value)}}catch(e){d={error:e}}finally{try{O&&!O.done&&(y=E.return)&&y.call(E)}finally{if(d)throw d.error}}}}catch(e){f={error:e}}finally{try{w&&!w.done&&(s=P.return)&&s.call(P)}finally{if(f)throw f.error}}i(p)(e)(t)}};var i=function(e){return function(t){return function(r){var u,c,l,f;if(!e.has(r)){e.add(r);try{for(var s=n(r.maps),d=s.next();!d.done;d=s.next()){var y=d.value;i(e)(t)(y.value)}}catch(e){u={error:e}}finally{try{d&&!d.done&&(c=s.return)&&c.call(s)}finally{if(u)throw u.error}}try{for(var p=n(r.sets),m=p.next();!m.done;m=p.next()){var v=m.value;i(e)(t)(v)}}catch(e){l={error:e}}finally{try{m&&!m.done&&(f=p.return)&&f.call(p)}finally{if(l)throw l.error}}null!==r.resolved&&i(e)(t)(r.resolved.returns),null!==r.rest&&i(e)(t)(r.rest),r.objects.length>1&&(r.objects.sort(function(e,t){return o.MetadataObject.covers(e,t)?-1:o.MetadataObject.covers(t,e)?1:0}),r.union_index=t.getUnionIndex(r)),r.arrays.length>1&&r.arrays.sort(function(e,t){return a.Metadata.covers(e.value,t.value)?-1:a.Metadata.covers(t.value,e.value)?1:0}),r.tuples.length>1&&r.tuples.sort(function(e,t){var r=a.Metadata.initialize(),n=a.Metadata.initialize();return r.tuples.push(e),n.tuples.push(t),a.Metadata.covers(r,n)?-1:a.Metadata.covers(n,r)?1:0})}}}}},9191:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_tag=void 0;var a=r(1261),o=r(5724),i=r(8954);t.iterate_metadata_tag=function(e){if(!0!==e.tagged_){var t,r;e.tagged_=!0;try{for(var u=n(e.properties),c=u.next();!c.done;c=u.next()){var l=c.value;!function(t){var r=t.key.getName(),n=r.length>=3&&'"'===r[0]&&'"'===r[r.length-1]&&o.Escaper.variable(r.slice(1,-1))?r.slice(1,-1):null;(0,a.Writable)(t).tags=i.MetadataTagFactory.generate(t.value)(t.jsDocTags)(null!==n?function(){return"".concat(e.name,".").concat(n)}:function(){return"".concat(e.name,"[").concat(r,"]")})}(l)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}}}},2861:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_template=void 0;var a=n(r(5423)),o=r(9614),i=r(1903);t.iterate_metadata_template=function(e){return function(t){return function(r){return function(n,u){if(c=a.default.TypeFlags.TemplateLiteral,(u.getFlags()&c)==0)return!1;var c,l=[];return u.texts.forEach(function(n,a){""!==n&&l.push(o.MetadataHelper.literal_to_metadata(n));var c=u.types[a];c&&l.push((0,i.explore_metadata)(e)(t)(r)(c,!1))}),n.templates.push(l),!0}}}}},2402:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_tuple=void 0;var n=r(3346),a=r(373);t.iterate_metadata_tuple=function(e){return function(t){return function(r){return function(o,i){if(!e.isTupleType(i))return!1;var u=(0,a.emplace_metadata_tuple)(e)(t)(r)(i,o.nullable);return n.ArrayUtil.add(o.tuples,u,function(e){return e.name===u.name}),!0}}}}},7219:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.iterate_metadata_union=void 0;var n=r(3055);t.iterate_metadata_union=function(e){return function(t){return function(r){return function(a,o,i){return!!o.isUnion()&&(o.types.forEach(function(o){return(0,n.iterate_metadata)(e)(t)(r)(a,o,i,!1)}),!0)}}}}},9133:function(e,t,r){"use strict";var n,a=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a1},e.prototype.getSoleLiteral=function(){return 1===this.size()&&1===this.constants.length&&"string"===this.constants[0].type&&1===this.constants[0].values.length?this.constants[0].values[0]:null},e.prototype.isSoleLiteral=function(){return null!==this.getSoleLiteral()},e.prototype.isParentResolved=function(){return this.parent_resolved_},e}();t.Metadata=m,(n=m||(t.Metadata=m={})).intersects=function(e,t){if(e.any||t.any||!1===e.isRequired()&&!1===t.isRequired()||!0===e.nullable&&!0===t.nullable||!0===e.functional&&!0===t.functional||e.arrays.length&&t.arrays.length||e.tuples.length&&t.tuples.length||e.objects.length&&t.objects.length||e.aliases.length&&t.aliases.length||e.natives.length&&t.natives.length&&e.natives.some(function(e){return t.natives.some(function(t){return e===t})}))return!0;try{for(var r,n,u,c,l=a(e.atomics),f=l.next();!f.done;f=l.next()){var s=f.value;if(t.atomics.includes(s))return!0}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}var d=function(e){var r=t.constants.find(function(t){return t.type===e.type});return void 0===r?"continue":new Set(i(i([],o(e.values),!1),o(r.values),!1)).size!==e.values.length+r.values.length?{value:!0}:void 0};try{for(var y=a(e.constants),p=y.next();!p.done;p=y.next()){var m=p.value,v=d(m);if("object"==typeof v)return v.value}}catch(e){u={error:e}}finally{try{p&&!p.done&&(c=y.return)&&c.call(y)}finally{if(u)throw u.error}}return!1},n.covers=function(e,t,r){if(void 0===r&&(r=0),e===t)return!1;if(e.any)return!0;if(t.any)return!1;if(0===r){var o,i,u,c,l,f,d,y,p,m,v,h,g,_,b=function(t){if(!e.arrays.some(function(e){return n.covers(e.value,t.value,r+1)}))return{value:!1}};try{for(var x=a(t.arrays),S=x.next();!S.done;S=x.next()){var j=S.value,P=b(j);if("object"==typeof P)return P.value}}catch(e){o={error:e}}finally{try{S&&!S.done&&(i=x.return)&&i.call(x)}finally{if(o)throw o.error}}var w=function(t){if(0!==t.elements.length&&!1===e.tuples.some(function(e){return e.elements.length>=t.elements.length&&e.elements.slice(t.elements.length).every(function(e,a){return n.covers(e,t.elements[a],r+1)})}))return{value:!1}};try{for(var T=a(t.tuples),E=T.next();!E.done;E=T.next()){var O=E.value,I=w(O);if("object"==typeof I)return I.value}}catch(e){u={error:e}}finally{try{E&&!E.done&&(c=T.return)&&c.call(T)}finally{if(u)throw u.error}}}var F=function(t){if(!1===e.objects.some(function(e){return s.MetadataObject.covers(e,t)}))return{value:!1}};try{for(var k=a(t.objects),A=k.next();!A.done;A=k.next()){var M=A.value,C=F(M);if("object"==typeof C)return C.value}}catch(e){l={error:e}}finally{try{A&&!A.done&&(f=k.return)&&f.call(k)}finally{if(l)throw l.error}}var L=function(t){if(!1===e.aliases.some(function(e){return e.name===t.name}))return{value:!1}};try{for(var N=a(t.aliases),R=N.next();!R.done;R=N.next()){var D=R.value,q=L(D);if("object"==typeof q)return q.value}}catch(e){d={error:e}}finally{try{R&&!R.done&&(y=N.return)&&y.call(N)}finally{if(d)throw d.error}}var U=function(t){if(!1===e.natives.some(function(e){return e===t}))return{value:!1}};try{for(var V=a(t.natives),B=V.next();!B.done;B=V.next()){var J=B.value,z=U(J);if("object"==typeof z)return z.value}}catch(e){p={error:e}}finally{try{B&&!B.done&&(m=V.return)&&m.call(V)}finally{if(p)throw p.error}}var G=function(t){if(!1===e.sets.some(function(e){return n.covers(e,t)}))return{value:!1}};try{for(var K=a(t.sets),$=K.next();!$.done;$=K.next()){var W=$.value,Q=G(W);if("object"==typeof Q)return Q.value}}catch(e){v={error:e}}finally{try{$&&!$.done&&(h=K.return)&&h.call(K)}finally{if(v)throw v.error}}if(t.atomics.some(function(t){return!1===e.atomics.includes(t)}))return!1;var Y=function(t){if(e.atomics.some(function(e){return t.type===e}))return"continue";var r=e.constants.find(function(e){return e.type===t.type});return void 0===r?{value:!1}:t.values.some(function(e){return!1===r.values.includes(e)})?{value:!1}:void 0};try{for(var X=a(t.constants),H=X.next();!H.done;H=X.next()){var Z=H.value,ee=Y(Z);if("object"==typeof ee)return ee.value}}catch(e){g={error:e}}finally{try{H&&!H.done&&(_=X.return)&&_.call(X)}finally{if(g)throw g.error}}return!1!==e.functional||!t.functional},n.merge=function(e,t){var r,u,l,f,s,d,p,m,v,h,g,_,b=n.create({any:e.any||t.any,nullable:e.nullable||t.nullable,required:e.required&&t.required,optional:e.optional||t.optional,functional:e.functional||t.functional,resolved:null!==e.resolved&&null!==t.resolved?y.MetadataResolved.create({original:n.merge(e.resolved.original,t.resolved.original),returns:n.merge(e.resolved.returns,t.resolved.returns)}):null!==(g=e.resolved)&&void 0!==g?g:t.resolved,atomics:i([],o(new Set(i(i([],o(e.atomics),!1),o(t.atomics),!1))),!1),constants:i([],o(e.constants),!1),templates:e.templates.slice(),rest:null!==e.rest&&null!==t.rest?n.merge(e.rest,t.rest):null!==(_=e.rest)&&void 0!==_?_:t.rest,arrays:e.arrays.slice(),tuples:e.tuples.slice(),objects:e.objects.slice(),aliases:e.aliases.slice(),natives:i([],o(new Set(i(i([],o(e.natives),!1),o(t.natives),!1))),!1),sets:e.sets.slice(),maps:e.maps.slice()}),x=function(e){var t,r,n=c.ArrayUtil.take(b.constants,function(t){return t.type===e.type},function(){return{type:e.type,values:[]}});try{for(var o=(t=void 0,a(e.values)),i=o.next();!i.done;i=o.next()){var u=i.value;c.ArrayUtil.add(n.values,u)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}};try{for(var S=a(t.constants),j=S.next();!j.done;j=S.next()){var P=j.value;x(P)}}catch(e){r={error:e}}finally{try{j&&!j.done&&(u=S.return)&&u.call(S)}finally{if(r)throw r.error}}try{for(var w=a(t.arrays),T=w.next();!T.done;T=w.next()){var E=T.value;c.ArrayUtil.set(b.arrays,E,function(e){return e.name})}}catch(e){l={error:e}}finally{try{T&&!T.done&&(f=w.return)&&f.call(w)}finally{if(l)throw l.error}}try{for(var O=a(t.tuples),I=O.next();!I.done;I=O.next()){var F=I.value;c.ArrayUtil.set(b.tuples,F,function(e){return e.name})}}catch(e){s={error:e}}finally{try{I&&!I.done&&(d=O.return)&&d.call(O)}finally{if(s)throw s.error}}try{for(var k=a(t.objects),A=k.next();!A.done;A=k.next()){var M=A.value;c.ArrayUtil.set(b.objects,M,function(e){return e.name})}}catch(e){p={error:e}}finally{try{A&&!A.done&&(m=k.return)&&m.call(k)}finally{if(p)throw p.error}}try{for(var C=a(t.aliases),L=C.next();!L.done;L=C.next()){var N=L.value;c.ArrayUtil.set(b.aliases,N,function(e){return e.name})}}catch(e){v={error:e}}finally{try{L&&!L.done&&(h=C.return)&&h.call(C)}finally{if(v)throw v.error}}return b};var v=function(e){if(!0===e.any)return"any";var t,r,n,o,i,u,c,l,f,s,d,y,p,m,v,h,g,_,b,x,S,j,P=[];!0===e.nullable&&P.push("null"),!1===e.isRequired()&&P.push("undefined");try{for(var w=a(e.atomics),T=w.next();!T.done;T=w.next()){var E=T.value;P.push(E)}}catch(e){t={error:e}}finally{try{T&&!T.done&&(r=w.return)&&r.call(w)}finally{if(t)throw t.error}}try{for(var O=a(e.constants),I=O.next();!I.done;I=O.next()){var F=I.value;try{for(var k=(i=void 0,a(F.values)),A=k.next();!A.done;A=k.next()){var M=A.value;P.push(JSON.stringify(M))}}catch(e){i={error:e}}finally{try{A&&!A.done&&(u=k.return)&&u.call(k)}finally{if(i)throw i.error}}}}catch(e){n={error:e}}finally{try{I&&!I.done&&(o=O.return)&&o.call(O)}finally{if(n)throw n.error}}try{for(var C=a(e.templates),L=C.next();!L.done;L=C.next()){var N=L.value;P.push("`"+N.map(function(e){return e.isConstant()&&1===e.size()?e.constants[0].values[0]:"${".concat(e.getName(),"}")}).join("").split("`").join("\\`")+"`")}}catch(e){c={error:e}}finally{try{L&&!L.done&&(l=C.return)&&l.call(C)}finally{if(c)throw c.error}}try{for(var R=a(e.natives),D=R.next();!D.done;D=R.next()){var q=D.value;P.push(q)}}catch(e){f={error:e}}finally{try{D&&!D.done&&(s=R.return)&&s.call(R)}finally{if(f)throw f.error}}try{for(var U=a(e.sets),V=U.next();!V.done;V=U.next()){var B=V.value;P.push("Set<".concat(B.getName(),">"))}}catch(e){d={error:e}}finally{try{V&&!V.done&&(y=U.return)&&y.call(U)}finally{if(d)throw d.error}}try{for(var J=a(e.maps),z=J.next();!z.done;z=J.next()){var G=z.value;P.push("Map<".concat(G.key.getName(),", ").concat(G.value.getName(),">"))}}catch(e){p={error:e}}finally{try{z&&!z.done&&(m=J.return)&&m.call(J)}finally{if(p)throw p.error}}null!==e.rest&&P.push("...".concat(e.rest.getName()));try{for(var K=a(e.tuples),$=K.next();!$.done;$=K.next()){var W=$.value;P.push(W.name)}}catch(e){v={error:e}}finally{try{$&&!$.done&&(h=K.return)&&h.call(K)}finally{if(v)throw v.error}}try{for(var Q=a(e.arrays),Y=Q.next();!Y.done;Y=Q.next()){var X=Y.value;P.push(X.name)}}catch(e){g={error:e}}finally{try{Y&&!Y.done&&(_=Q.return)&&_.call(Q)}finally{if(g)throw g.error}}try{for(var H=a(e.objects),Z=H.next();!Z.done;Z=H.next()){var ee=Z.value;P.push(ee.name)}}catch(e){b={error:e}}finally{try{Z&&!Z.done&&(x=H.return)&&x.call(H)}finally{if(b)throw b.error}}try{for(var et=a(e.aliases),er=et.next();!er.done;er=et.next()){var en=er.value;P.push(en.name)}}catch(e){S={error:e}}finally{try{er&&!er.done&&(j=et.return)&&j.call(et)}finally{if(S)throw S.error}}return(null!==e.resolved&&P.push(e.resolved.getName()),0===P.length)?"unknown":1===P.length?P[0]:(P.sort(),"(".concat(P.join(" | "),")"))}},4981:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataAlias=void 0;var r=function(){function e(e){this.name=e.name,this.value=e.value,this.description=e.description,this.tags=e.tags,this.jsDocTags=e.jsDocTags,this.recursive=e.recursive,this.nullables=e.nullables}return e.create=function(t){return new e(t)},e._From_without_value=function(e){return this.create({name:e.name,value:null,description:e.description,recursive:e.recursive,tags:e.tags.slice(),jsDocTags:e.jsDocTags.slice(),nullables:e.nullables.slice()})},e.prototype.toJSON=function(){return{name:this.name,value:this.value.toJSON(),description:this.description,recursive:this.recursive,tags:this.tags.slice(),jsDocTags:this.jsDocTags.slice(),nullables:this.nullables.slice()}},e}();t.MetadataAlias=r},8975:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataArray=void 0;var r=function(){function e(e){this.name=e.name,this.value=e.value,this.index=e.index,this.recursive=e.recursive,this.nullables=e.nullables}return e._From_without_value=function(e){return this.create({name:e.name,value:null,index:e.index,recursive:e.recursive,nullables:e.nullables})},e.create=function(t){return new e(t)},e.prototype.toJSON=function(){return{name:this.name,value:this.value.toJSON(),nullables:this.nullables,recursive:this.recursive,index:this.index}},e}();t.MetadataArray=r},5136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataObject=void 0;var r,n=function(){function e(e){this.nullables=[],this.tagged_=!1,this.name=e.name,this.properties=e.properties,this.description=e.description,this.jsDocTags=e.jsDocTags,this.index=e.index,this.validated=e.validated,this.recursive=e.recursive,this.nullables=[],this.tagged_=!1}return e.create=function(t){return new e(t)},e._From_without_properties=function(e){return this.create({name:e.name,properties:[],description:e.description,jsDocTags:e.jsDocTags,index:e.index,validated:e.validated,recursive:e.recursive,nullables:e.nullables.slice()})},e.prototype._Is_simple=function(e){return void 0===e&&(e=0),!1===this.recursive&&this.properties.length<10&&this.properties.every(function(t){return t.key.isSoleLiteral()&&1===t.value.size()&&!0===t.value.isRequired()&&!1===t.value.nullable&&(1===t.value.atomics.length||e<1&&1===t.value.objects.length&&t.value.objects[0]._Is_simple(e+1))})},e.prototype.toJSON=function(){return{name:this.name,properties:this.properties.map(function(e){return e.toJSON()}),description:this.description,jsDocTags:this.jsDocTags,index:this.index,validated:this.validated,recursive:this.recursive,nullables:this.nullables.slice()}},e}();t.MetadataObject=n,(r=n||(t.MetadataObject=n={})).intersects=function(e,t){return e.properties.some(function(e){return void 0!==t.properties.find(function(t){return e.key.getName()===t.key.getName()})})},r.covers=function(e,t){return e.properties.length>=t.properties.length&&e.properties.every(function(e){return void 0!==t.properties.find(function(t){return e.key.getName()===t.key.getName()})})}},2416:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataProperty=void 0;var n=r(9133),a=function(){function e(e){this.key=e.key,this.value=e.value,this.description=e.description,this.tags=e.tags,this.jsDocTags=e.jsDocTags}return e.create=function(t){return new e(t)},e._From=function(e,t){return this.create({key:n.Metadata._From(e.key,t),value:n.Metadata._From(e.value,t),description:e.description,tags:e.tags.slice(),jsDocTags:e.jsDocTags.slice()})},e.prototype.toJSON=function(){return{key:this.key.toJSON(),value:this.value.toJSON(),description:this.description,tags:this.tags,jsDocTags:this.jsDocTags}},e}();t.MetadataProperty=a},6282:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataResolved=void 0;var n=r(9133),a=function(){function e(e){this.original=e.original,this.returns=e.returns}return e._From=function(e,t){return this.create({original:n.Metadata._From(e.original,t),returns:n.Metadata._From(e.returns,t)})},e.create=function(t){return new e(t)},e.prototype.getName=function(){return this.returns.getName()},e.prototype.toJSON=function(){return{original:this.original.toJSON(),returns:this.returns.toJSON()}},e}();t.MetadataResolved=a},4712:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MetadataTuple=void 0;var r=function(){function e(e){this.name=e.name,this.elements=e.elements,this.index=e.index,this.recursive=e.recursive,this.nullables=e.nullables}return e._From_without_elements=function(e){return this.create({name:e.name,index:e.index,elements:null,recursive:e.recursive,nullables:e.nullables.slice()})},e.create=function(t){return new e(t)},e.prototype.toJSON=function(){return{name:this.name,index:this.index,elements:this.elements.map(function(e){return e.toJSON()}),recursive:this.recursive,nullables:this.nullables.slice()}},e}();t.MetadataTuple=r},4375:function(e,t,r){"use strict";var n,a,o,i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("assert",f.AssertProgrammer.write(e)(t)(!1)(r,n)),c.StatementFactory.constant("clone",s.CloneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createCallExpression(i.default.factory.createIdentifier("assert"),void 0,[i.default.factory.createIdentifier("input")])),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("clone"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},5872:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("assert",f.AssertProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(!1)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("input"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("JSON.parse"),void 0,[i.default.factory.createIdentifier("input")]))),i.default.factory.createReturnStatement(i.default.factory.createAsExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("assert"),void 0,[i.default.factory.createIdentifier("input")]),i.default.factory.createTypeReferenceNode("any")))]))}}}},4023:function(e,t,r){"use strict";var n,a,o,i,u,c=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},l=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},_=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},b=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")}).join(" | "));ea(a.sets.some(function(e){return e.any})?null:l(e)(t)(r)(n,a.sets,h(h({},i),{from:"array"}),[],[]))}if(a.maps.length){var ea=en((0,D.check_native)("Map")(n),a.maps.map(function(e){var t=e.key,r=e.value;return"Map<".concat(t,", ").concat(r,">")}).join(" | "));ea(a.maps.some(function(e){return e.key.any&&e.value.any})?null:f(e)(t)(r)(n,a.maps,h(h({},i),{from:"array"}),[],[]))}if(a.tuples.length+a.arrays.length>0){var ea=en(t.atomist(i)((0,L.check_array)(r)(0===a.tuples.length?c:[])(p)(n))(n),b(b([],_(a.tuples),!1),_(a.arrays),!1).map(function(e){return e.name}).join(" | "));ea(0===a.arrays.length?1===a.tuples.length?u(e)(t)(r)(n,a.tuples[0],h(h({},i),{from:"array"}),c,p):s(e)(t)(r)(n,a.tuples,h(h({},i),{from:"array"}),c,p):a.arrays.some(function(e){return e.value.any})?null:0===a.tuples.length?1===a.arrays.length?o(e)(t)(r)(n,a.arrays[0],h(h({},i),{from:"array"}),c,p):d(e)(t)(r)(n,a.arrays,h(h({},i),{from:"array"}),c,p):y(e)(t)(r)(n,b(b([],_(a.tuples),!1),_(a.arrays),!1),i,c,p))}if(a.objects.length>0&&en(j.ExpressionFactory.isObject({checkNull:!0,checkArray:a.objects.some(function(e){return e.properties.every(function(e){return!e.key.isSoleLiteral()||!e.value.isRequired()})})})(n),a.objects.map(function(e){return e.name}).join(" | "))(m(t)(r)(n,a,h(h({},i),{from:"object"}))),er.length){var eo=function(e){return function(t){return t.body?{expression:e(t.pre,t.body),combined:!0}:{expression:t.pre,combined:!1}}};1===er.length?C.push(eo(function(e,r){return t.combiner(i)("and")(n,[e,r].map(function(t){return{expression:t,combined:t!==e}}),a.getName())})(er[0])):C.push({expression:t.combiner(i)("or")(n,er.map(eo(S.default.factory.createLogicalAnd)),a.getName()),combined:!0})}return k.length&&C.length?t.combiner(i)("and")(n,b(b([],_(k),!1),[{expression:t.combiner(i)("or")(n,C,a.getName()),combined:!0}],!1),a.getName()):C.length?t.combiner(i)("or")(n,C,a.getName()):t.success}}}},n.decode_object=function(e){return function(t){var r=k.FeatureProgrammer.decode_object(e)(t);return function(e,t,n){return t.validated=!0,r(e,t,n)}}},o=function(e){return function(t){return function(r){return function(n,a,o,u,c){return!1===a.recursive?i(e)(t)(r)(n,a,o,u,c):(o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createLogicalOr(S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"a").concat(a.index))),void 0,k.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function",from:"array"}))(n)),t.joiner.failure(n,a.name,o)))}}}},i=function(e){return function(t){return function(r){return k.FeatureProgrammer.decode_array({prefix:t.prefix,trace:t.trace,path:t.path,decoder:function(){return n.decode(e)(t)(r)}})(r)(t.joiner.array)}}},u=function(e){return function(t){return function(r){return function(n,a,o,i,u){return!1===a.recursive?c(e)(t)(r)(n,a,o,i,u):(o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createLogicalOr(S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,k.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function"}))(n)),t.joiner.failure(n,a.name,o)))}}}},c=function(e){return function(t){return function(r){return function(a,o,i,u,c){var l=o.elements.filter(function(e){return null===e.rest}).map(function(o,l){return n.decode(e)(t)(r)(S.default.factory.createElementAccessExpression(a,l),o,h(h({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(l,']"'):'"['.concat(l,']"')}),u,c)}),f=o.elements.length&&null!==o.elements.at(-1).rest?n.decode(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("slice"),void 0,[S.default.factory.createNumericLiteral(o.elements.length-1)]),(0,J.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),h(h({},i),{start:o.elements.length-1}),u,c):null,s=S.default.factory.createPropertyAccessExpression(a,"length");return t.combiner(i)("and")(a,b(b(b([],_(null===f?o.elements.every(function(e){return!1===e.optional})?[{combined:!1,expression:S.default.factory.createStrictEquality(s,S.default.factory.createNumericLiteral(o.elements.length))}]:[{combined:!1,expression:S.default.factory.createLogicalAnd(S.default.factory.createLessThanEquals(S.default.factory.createNumericLiteral(o.elements.filter(function(e){return!1===e.optional}).length),s),S.default.factory.createGreaterThanEquals(S.default.factory.createNumericLiteral(o.elements.length),s))}]:[]),!1),_(t.joiner.tuple?[{expression:t.joiner.tuple(l),combined:!0}]:l.map(function(e){return{expression:e,combined:!0}})),!1),_(null!==f?[{expression:f,combined:!0}]:[]),!1),"[".concat(o.elements.map(function(e){return e.getName()}).join(", "),"]"))}}}},l=function(e){return function(t){return function(r){return function(a,i,u,c,l){return S.default.factory.createCallExpression(C.UnionExplorer.set({checker:n.decode(e)(t)(r),decoder:o(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}})([])(a,i,u,c,l),void 0,void 0)}}}},f=function(e){return function(t){return function(r){return function(a,i,u,c,l){return S.default.factory.createCallExpression(C.UnionExplorer.map({checker:function(a,o,i){var u=n.decode(e)(t)(r);return S.default.factory.createLogicalAnd(u(S.default.factory.createElementAccessExpression(a,0),o[0],h(h({},i),{postfix:"".concat(i.postfix,"[0]")}),[],[]),u(S.default.factory.createElementAccessExpression(a,1),o[1],h(h({},i),{postfix:"".concat(i.postfix,"[1]")}),[],[]))},decoder:o(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}})([])(a,i,u,c,l),void 0,void 0)}}}},s=function(e){return function(t){return function(r){return function(n,a,o,i,c){return p(t)(r)(C.UnionExplorer.tuple({checker:u(e)(t)(r),decoder:u(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}}))(n,a,o,i,c)}}}},d=function(e){return function(t){return function(r){return function(a,i,u,c,l){return p(t)(r)(C.UnionExplorer.array({checker:n.decode(e)(t)(r),decoder:o(e)(t)(r),empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}}))(a,i,u,c,l)}}}},y=function(e){return function(t){return function(r){return function(a,i,c,l,f){return p(t)(r)(C.UnionExplorer.array_or_tuple({checker:function(a,o,i,c,l,f){return o instanceof F.MetadataTuple?u(e)(t)(r)(a,o,i,c,l):t.atomist(i)({expression:n.decode(e)(t)(r)(a,o,i,c,l),tags:(0,N.check_array_length)(c)(f)})(f)},decoder:function(n,a,i,c,l){return a instanceof F.MetadataTuple?u(e)(t)(r)(n,a,i,c,l):o(e)(t)(r)(n,a,i,c,l)},empty:t.success,success:t.success,failure:function(e,r,n){return S.default.factory.createReturnStatement(t.joiner.failure(e,r,n))}}))(a,i,c,l,f)}}}},p=function(e){return function(t){return function(r){return function(n,a,o,i,u){var c=function(e){return function(t){return function(n){return r(e)(n,a,t,i,u)}}};return a.every(function(e){return!1===e.recursive})&&S.default.factory.createCallExpression(c([])(o)(n),void 0,[]),o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createLogicalOr(S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return c(k.FeatureProgrammer.parameterDeclarations(e)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")))(h(h({},o),{postfix:""}))(S.default.factory.createIdentifier("input"))})),void 0,k.FeatureProgrammer.argumentsArray(e)(o)(n)),e.joiner.failure(n,a.map(function(e){return e.name}).join(" | "),o))}}}},m=function(e){return function(t){return function(r,a,o){return 1===a.objects.length?n.decode_object(e)(t)(r,a.objects[0],o):S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.useLocal("".concat(e.prefix,"u").concat(a.union_index))),void 0,k.FeatureProgrammer.argumentsArray(e)(o)(r))}}};var z=function(e){return function(t){return function(r,n,a){void 0===a&&(a=t);var o=r?S.default.factory.createStrictEquality:S.default.factory.createStrictInequality;e.push({expression:o(n,a),combined:!1})}}}},1062:function(e,t,r){"use strict";var n,a,o,i,u,c,l,f,s,d,y,p,m,v,h=this&&this.__assign||function(){return(h=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},_=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},x=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CloneProgrammer=void 0;var S=x(r(5423)),j=r(3906),P=r(1387),w=r(2595),T=r(3390),E=r(6152),O=r(2301),I=r(9133),F=r(2114),k=r(3348),A=r(1739),M=r(1959),C=r(7144),L=r(9687),N=r(9714);(v||(t.CloneProgrammer=v={})).write=function(e){return function(t){var r=new M.FunctionImporter;return F.FeatureProgrammer.write(e)(h(h({},y(e)(r)),{addition:function(n){return _(_([],g(k.IsProgrammer.write_function_statements(e)(r)(n)),!1),g(r.declare(t)),!1)}}))(r)}},n=function(e){return function(t){return function(r){return function(n,o,i){if(o.any||o.arrays.some(function(e){return e.value.any})||o.tuples.some(function(e){return e.elements.every(function(e){return e.any})}))return S.default.factory.createCallExpression(r.use("any"),void 0,[n]);var c,s,d,y,p,m,v=[];null!==o.resolved&&v.push({type:"resolved",is:function(){return k.IsProgrammer.decode_to_json(!0)(n)},value:function(){return a(e)(t)(r)(n,o.resolved.returns,i)}});var g=function(a){v.push({type:"tuple",is:function(){var t;return k.IsProgrammer.decode(e)(r)(n,((t=I.Metadata.initialize()).tuples.push(a),t),i,[],[])},value:function(){return u(e)(t)(r)(n,a,i)}})};try{for(var _=b(o.tuples),x=_.next();!x.done;x=_.next()){var w=x.value;g(w)}}catch(e){c={error:e}}finally{try{x&&!x.done&&(s=_.return)&&s.call(_)}finally{if(c)throw c.error}}o.arrays.length&&v.push({type:"array",is:function(){return j.ExpressionFactory.isArray(n)},value:function(){return f(e)(t)(r)(n,o.arrays,h(h({},i),{from:"array"}))}}),o.sets.length&&v.push({type:"set",is:function(){return j.ExpressionFactory.isInstanceOf("Set")(n)},value:function(){return S.default.factory.createIdentifier("{}")}}),o.maps.length&&v.push({type:"map",is:function(){return j.ExpressionFactory.isInstanceOf("Map")(n)},value:function(){return S.default.factory.createIdentifier("{}")}});var T=function(e){v.push({type:"native",is:function(){return j.ExpressionFactory.isInstanceOf(e)(n)},value:function(){return"Boolean"===e||"Number"===e||"String"===e?S.default.factory.createCallExpression(P.IdentifierFactory.access(n)("valueOf"),void 0,void 0):S.default.factory.createIdentifier("{}")}})};try{for(var E=b(o.natives),F=E.next();!F.done;F=E.next()){var A=F.value;T(A)}}catch(e){d={error:e}}finally{try{F&&!F.done&&(y=E.return)&&y.call(E)}finally{if(d)throw d.error}}o.objects.length&&v.push({type:"object",is:function(){return j.ExpressionFactory.isObject({checkNull:!0,checkArray:!1})(n)},value:function(){return l(t)(r)(n,o,h(h({},i),{from:"object"}))}});var M=n;try{for(var C=b(v.reverse()),L=C.next();!L.done;L=C.next()){var N=L.value;M=S.default.factory.createConditionalExpression(N.is(),void 0,N.value(),void 0,M)}}catch(e){p={error:e}}finally{try{L&&!L.done&&(m=C.return)&&m.call(C)}finally{if(p)throw p.error}}return S.default.factory.createAsExpression(M,O.TypeFactory.keyword("any"))}}}},a=function(e){return function(t){return function(r){return function(a,o,i){return n(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("toJSON"),void 0,[]),o,i)}}}},o=function(e){return F.FeatureProgrammer.decode_object({trace:!1,path:!1,prefix:d})(e)},i=function(e){return function(t){return function(r,n,a){return F.FeatureProgrammer.decode_array(e)(t)(A.CloneJoiner.array)(r,n,a,[],[])}}},u=function(e){return function(t){return function(r){return function(n,a,o){return a.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function"}))(n)):c(e)(t)(r)(n,a,o)}}}},c=function(e){return function(t){return function(r){return function(a,o,i){var u=o.elements.filter(function(e){return null===e.rest}).map(function(o,u){return n(e)(t)(r)(S.default.factory.createElementAccessExpression(a,u),o,h(h({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(u,']"'):'"['.concat(u,']"')}))}),c=0===o.elements.length||null===o.elements.at(-1).rest?null:n(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("slice"),void 0,[S.default.factory.createNumericLiteral(o.elements.length-1)]),(0,N.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),h(h({},i),{start:o.elements.length-1}));return A.CloneJoiner.tuple(u,c)}}}},l=function(e){return function(t){return function(r,n,a){return 1===n.objects.length?o(t)(r,n.objects[0],a):S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.useLocal("".concat(d,"u").concat(n.union_index))),void 0,F.FeatureProgrammer.argumentsArray(e)(a)(r))}}},f=function(e){return function(t){return function(r){return function(n,a,o){return s(t)(r)(C.UnionExplorer.array({checker:k.IsProgrammer.decode(e)(r),decoder:function(e,n,a){return n.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"a").concat(n.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},a),{source:"function",from:"array"}))(e)):i(t)(r)(e,n,a)},empty:S.default.factory.createIdentifier("[]"),success:S.default.factory.createTrue(),failure:function(e,t){return m(r)(t)(e)}}))(n,a,o)}}}},s=function(e){return function(t){return function(r){return function(n,a,o){var i=function(e){return function(t){return function(n){return r(e)(n,a,t,[],[])}}};return a.every(function(e){return!1===e.recursive})&&S.default.factory.createCallExpression(i([])(o)(n),void 0,[]),o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return i(F.FeatureProgrammer.parameterDeclarations(e)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")))(h(h({},o),{postfix:""}))(S.default.factory.createIdentifier("input"))})),void 0,F.FeatureProgrammer.argumentsArray(e)(o)(n))}}}},d="$c",y=function(e){return function(t){var r={types:{input:function(t,r){return S.default.factory.createTypeReferenceNode(null!=r?r:O.TypeFactory.getFullName(e.checker)(t))},output:function(t,r){return S.default.factory.createTypeReferenceNode("typia.Primitive<".concat(null!=r?r:O.TypeFactory.getFullName(e.checker)(t),">"))}},prefix:d,trace:!1,path:!1,initializer:p,decoder:function(){return n(e)(r)(t)},objector:{checker:function(){return k.IsProgrammer.decode(e)(t)},decoder:function(){return o(t)},joiner:A.CloneJoiner.object,unionizer:(0,L.decode_union_object)(k.IsProgrammer.decode_object(t))(o(t))(function(e){return e})(function(e,r){return m(t)(r)(e)}),failure:function(e,r){return m(t)(r)(e)}},generator:{arrays:function(){return function(e){return e.arrays().filter(function(e){return e.recursive}).map(function(e,n){return E.StatementFactory.constant("".concat(r.prefix,"a").concat(n),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),O.TypeFactory.keyword("any"),void 0,i(r)(t)(S.default.factory.createIdentifier("input"),e,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}},tuples:function(){var n;return n=t,function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,a){return E.StatementFactory.constant("".concat(r.prefix,"t").concat(a),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),O.TypeFactory.keyword("any"),void 0,c(e)(r)(n)(S.default.factory.createIdentifier("input"),t,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}}}};return r}},p=function(e){var t=e.checker;return function(e){var r=new w.MetadataCollection,n=T.MetadataFactory.analyze(t)({resolve:!0,constant:!0,absorb:!0})(r)(e);return[r,n]}},m=function(e){return function(t){return function(r){return S.default.factory.createExpressionStatement(S.default.factory.createCallExpression(e.use("throws"),[],[S.default.factory.createObjectLiteralExpression([S.default.factory.createPropertyAssignment("expected",S.default.factory.createStringLiteral(t)),S.default.factory.createPropertyAssignment("value",r)],!0)]))}}}},2114:function(e,t,r){"use strict";var n,a,o,i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")),i.default.factory.createLiteralTypeNode(i.default.factory.createNull())]),void 0,i.default.factory.createBlock([c.StatementFactory.constant("is",s.IsProgrammer.write(e)(t)(!1)(r,n)),c.StatementFactory.constant("clone",f.CloneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),i.default.factory.createIfStatement(i.default.factory.createPrefixUnaryExpression(i.default.SyntaxKind.ExclamationToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("is"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createNull())),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("clone"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},6154:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("is",f.IsProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(!1)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("input"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("JSON.parse"),void 0,[i.default.factory.createIdentifier("input")]))),i.default.factory.createReturnStatement(i.default.factory.createConditionalExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("is"),void 0,[i.default.factory.createIdentifier("input")]),void 0,i.default.factory.createAsExpression(i.default.factory.createIdentifier("input"),l.TypeFactory.keyword("any")),void 0,i.default.factory.createNull()))]))}}}},3348:function(e,t,r){"use strict";var n,a,o=this&&this.__assign||function(){return(o=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},_=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},x=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PruneProgrammer=void 0;var S=x(r(5423)),j=r(3906),P=r(1387),w=r(2595),T=r(3390),E=r(6152),O=r(2301),I=r(9133),F=r(2114),k=r(3348),A=r(1959),M=r(3065),C=r(7144),L=r(9687),N=r(9714);(v||(t.PruneProgrammer=v={})).write=function(e){return function(t){var r=new A.FunctionImporter;return F.FeatureProgrammer.write(e)(h(h({},y(e)(r)),{addition:function(n){return _(_([],g(k.IsProgrammer.write_function_statements(e)(r)(n)),!1),g(r.declare(t)),!1)}}))(r)}},n=function(e){return function(t){return function(r){return function(n,a,o){if(!1===s(a))return S.default.factory.createBlock([]);var u,f,d,y,p=[],m=function(a){p.push({type:"tuple",is:function(){var t;return k.IsProgrammer.decode(e)(r)(n,((t=I.Metadata.initialize()).tuples.push(a),t),o,[],[])},value:function(){return i(e)(t)(r)(n,a,o)}})};try{for(var v=b(a.tuples.filter(function(e){return e.elements.some(function(e){var t;return s(null!==(t=e.rest)&&void 0!==t?t:e)})})),g=v.next();!g.done;g=v.next()){var _=g.value;m(_)}}catch(e){u={error:e}}finally{try{g&&!g.done&&(f=v.return)&&f.call(v)}finally{if(u)throw u.error}}if(a.arrays.filter(function(e){return s(e.value)}).length&&p.push({type:"array",is:function(){return j.ExpressionFactory.isArray(n)},value:function(){return l(e)(t)(r)(n,a.arrays,h(h({},o),{from:"array"}))}}),a.natives.length){var x=function(e){p.push({type:"native",is:function(){return j.ExpressionFactory.isInstanceOf(e)(n)},value:function(){return S.default.factory.createReturnStatement()}})};try{for(var P=b(a.natives),w=P.next();!w.done;w=P.next()){var T=w.value;x(T)}}catch(e){d={error:e}}finally{try{w&&!w.done&&(y=P.return)&&y.call(P)}finally{if(d)throw d.error}}}a.sets.length&&p.push({type:"set",is:function(){return j.ExpressionFactory.isInstanceOf("Set")(n)},value:function(){return S.default.factory.createReturnStatement()}}),a.maps.length&&p.push({type:"map",is:function(){return j.ExpressionFactory.isInstanceOf("Map")(n)},value:function(){return S.default.factory.createReturnStatement()}}),a.objects.length&&p.push({type:"object",is:function(){return j.ExpressionFactory.isObject({checkNull:!0,checkArray:!1})(n)},value:function(){return c(t)(r)(n,a,h(h({},o),{from:"object"}))}});var E=p.map(function(e){var t;return S.default.factory.createIfStatement(e.is(),(t=e.value(),S.default.isReturnStatement(t)||S.default.isBlock(t)?t:S.default.factory.createExpressionStatement(t)))});return S.default.factory.createBlock(E,!0)}}}},a=function(e){return F.FeatureProgrammer.decode_object({trace:!1,path:!1,prefix:d})(e)},o=function(e){return function(t){return function(r,n,a){return F.FeatureProgrammer.decode_array(e)(t)(M.PruneJoiner.array)(r,n,a,[],[])}}},i=function(e){return function(t){return function(r){return function(n,a,o){return a.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},o),{source:"function"}))(n)):u(e)(t)(r)(n,a,o)}}}},u=function(e){return function(t){return function(r){return function(a,o,i){var u=o.elements.map(function(e,t){return[e,t]}).filter(function(e){var t=g(e,1)[0];return s(t)&&null===t.rest}).map(function(o){var u=g(o,2),c=u[0],l=u[1];return n(e)(t)(r)(S.default.factory.createElementAccessExpression(a,l),c,h(h({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(l,']"'):'"['.concat(l,']"')}))}),c=function(){if(0===o.elements.length)return null;var u=o.elements.at(-1).rest;return null===u||!1===s(u)?null:n(e)(t)(r)(S.default.factory.createCallExpression(P.IdentifierFactory.access(a)("slice"),void 0,[S.default.factory.createNumericLiteral(o.elements.length-1)]),(0,N.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),h(h({},i),{start:o.elements.length-1}))}();return M.PruneJoiner.tuple(u,c)}}}},c=function(e){return function(t){return function(r,n,o){return 1===n.objects.length?a(t)(r,n.objects[0],o):S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.useLocal("".concat(d,"u").concat(n.union_index))),void 0,F.FeatureProgrammer.argumentsArray(e)(o)(r))}}},l=function(e){return function(t){return function(r){return function(n,a,i){return f(t)(r)(C.UnionExplorer.array({checker:k.IsProgrammer.decode(e)(r),decoder:function(e,n,a){return n.recursive?S.default.factory.createCallExpression(S.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"a").concat(n.index))),void 0,F.FeatureProgrammer.argumentsArray(t)(h(h({},a),{source:"function",from:"array"}))(e)):o(t)(r)(e,n,a)},empty:S.default.factory.createStringLiteral("[]"),success:S.default.factory.createTrue(),failure:function(e,t){return m(r)(t)(e)}}))(n,a,i)}}}},f=function(e){return function(t){return function(r){return function(n,a,o){var i=function(e){return function(t){return function(n){return r(e)(n,a,t,[],[])}}};return a.every(function(e){return!1===e.recursive})&&S.default.factory.createCallExpression(i([])(o)(n),void 0,[]),o=h(h({},o),{source:"function",from:"array"}),S.default.factory.createCallExpression(S.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return i(F.FeatureProgrammer.parameterDeclarations(e)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")))(h(h({},o),{postfix:""}))(S.default.factory.createIdentifier("input"))})),void 0,F.FeatureProgrammer.argumentsArray(e)(o)(n))}}}},s=function(e){return!1===e.any&&(0!==e.objects.length||e.tuples.some(function(e){return e.elements.some(function(e){var t;return s(null!==(t=e.rest)&&void 0!==t?t:e)})})||e.arrays.some(function(e){return s(e.value)}))},d="$p",y=function(e){return function(t){var r={types:{input:function(t,r){return S.default.factory.createTypeReferenceNode(null!=r?r:O.TypeFactory.getFullName(e.checker)(t))},output:function(){return O.TypeFactory.keyword("void")}},prefix:d,trace:!1,path:!1,initializer:p,decoder:function(){return n(e)(r)(t)},objector:{checker:function(){return k.IsProgrammer.decode(e)(t)},decoder:function(){return a(t)},joiner:M.PruneJoiner.object,unionizer:(0,L.decode_union_object)(k.IsProgrammer.decode_object(t))(a(t))(function(e){return e})(function(e,r){return m(t)(r)(e)}),failure:function(e,r){return m(t)(r)(e)}},generator:{arrays:function(){return function(e){return e.arrays().filter(function(e){return e.recursive}).map(function(e,n){return E.StatementFactory.constant("".concat(r.prefix,"a").concat(n),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),O.TypeFactory.keyword("any"),void 0,o(r)(t)(S.default.factory.createIdentifier("input"),e,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}},tuples:function(){var n;return n=t,function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,a){return E.StatementFactory.constant("".concat(r.prefix,"t").concat(a),S.default.factory.createArrowFunction(void 0,void 0,F.FeatureProgrammer.parameterDeclarations(r)(O.TypeFactory.keyword("any"))(S.default.factory.createIdentifier("input")),O.TypeFactory.keyword("any"),void 0,u(e)(r)(n)(S.default.factory.createIdentifier("input"),t,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}}}};return r}},p=function(e){var t=e.checker;return function(e){var r=new w.MetadataCollection,n=T.MetadataFactory.analyze(t)({resolve:!1,constant:!0,absorb:!0})(r)(e);return[r,n]}},m=function(e){return function(t){return function(r){return S.default.factory.createExpressionStatement(S.default.factory.createCallExpression(e.use("throws"),[],[S.default.factory.createObjectLiteralExpression([S.default.factory.createPropertyAssignment("expected",S.default.factory.createStringLiteral(t)),S.default.factory.createPropertyAssignment("value",r)],!0)]))}}}},6175:function(e,t,r){"use strict";var n,a,o,i,u,c,l,f,s,d,y,p,m,v,h=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},g=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},b=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RandomProgrammer=void 0;var x=b(r(5423)),S=r(3906),j=r(1387),P=r(2595),w=r(3390),T=r(6152),E=r(5374),O=r(2301),I=r(1959),F=r(2112),k=r(3114),A=r(9573);(v||(t.RandomProgrammer=v={})).write=function(e){return function(t){return function(r){var u=new I.FunctionImporter;return function(c,l){var f=new P.MetadataCollection,s=w.MetadataFactory.analyze(e.checker)({resolve:!0,constant:!0,absorb:!0})(f)(c),d={objects:n(u)(f),arrays:a(u)(f),tuples:o(u)(f)},y=i(u)({function:!1,recursive:!1})(s,[],[]);return x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("generator",x.default.factory.createTypeReferenceNode("Partial"),null!=r?r:x.default.factory.createToken(x.default.SyntaxKind.QuestionToken))],x.default.factory.createTypeReferenceNode("typia.Primitive<".concat(null!=l?l:O.TypeFactory.getFullName(e.checker)(c),">")),void 0,x.default.factory.createBlock(g(g(g(g(g([],h(u.declare(t)),!1),h(d.objects),!1),h(d.arrays),!1),h(d.tuples),!1),[x.default.factory.createReturnStatement(y)],!1),!0))}}}},n=function(e){return function(t){return t.objects().map(function(t,r){return T.StatementFactory.constant(M.object(r),x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("_recursive",O.TypeFactory.keyword("boolean"),x.default.factory.createIdentifier(String(t.recursive))),j.IdentifierFactory.parameter("_depth",O.TypeFactory.keyword("number"),x.default.factory.createNumericLiteral(0))],O.TypeFactory.keyword("any"),void 0,F.RandomJoiner.object(C(e))(i(e)({recursive:t.recursive,function:!0}))(t)))})}},a=function(e){return function(t){return t.arrays().filter(function(e){return e.recursive}).map(function(t,r){return T.StatementFactory.constant(M.array(r),x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("length",O.TypeFactory.keyword("number")),j.IdentifierFactory.parameter("_recursive",O.TypeFactory.keyword("boolean"),x.default.factory.createTrue()),j.IdentifierFactory.parameter("_depth",O.TypeFactory.keyword("number"),x.default.factory.createNumericLiteral(0))],O.TypeFactory.keyword("any"),void 0,F.RandomJoiner.array(C(e))(i(e)({recursive:!0,function:!0}))({recursive:!0,function:!0})(x.default.factory.createIdentifier("length"))(t.value,[],[])))})}},o=function(e){return function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,r){return T.StatementFactory.constant(M.tuple(r),x.default.factory.createArrowFunction(void 0,void 0,[j.IdentifierFactory.parameter("_recursive",O.TypeFactory.keyword("boolean"),x.default.factory.createTrue()),j.IdentifierFactory.parameter("_depth",O.TypeFactory.keyword("number"),x.default.factory.createNumericLiteral(0))],O.TypeFactory.keyword("any"),void 0,F.RandomJoiner.tuple(i(e)({function:!0,recursive:!0}))(t.elements,[],[])))})}},i=function(e){return function(t){return function(r,n,a){var o,v,h,g,b,S,j,P,w,T,E,O,I,F,k,A,M=[];r.any&&M.push(x.default.factory.createStringLiteral("any type used...")),!1===r.isRequired()&&M.push(x.default.factory.createIdentifier("undefined")),!0===r.nullable&&M.push(x.default.factory.createNull());try{for(var C=_(r.constants),L=C.next();!L.done;L=C.next()){var N=L.value;try{for(var R=(h=void 0,_(N.values)),D=R.next();!D.done;D=R.next()){var q=D.value;M.push(c(q))}}catch(e){h={error:e}}finally{try{D&&!D.done&&(g=R.return)&&g.call(R)}finally{if(h)throw h.error}}}}catch(e){o={error:e}}finally{try{L&&!L.done&&(v=C.return)&&v.call(C)}finally{if(o)throw o.error}}try{for(var U=_(r.templates),V=U.next();!V.done;V=U.next()){var B=V.value;M.push(l(e)(t)(B))}}catch(e){b={error:e}}finally{try{V&&!V.done&&(S=U.return)&&S.call(U)}finally{if(b)throw b.error}}try{for(var J=_(r.atomics),z=J.next();!z.done;z=J.next()){var G=z.value;"boolean"===G?M.push(u(e)):"number"===G?M.push(f(e)(n)(a)):"string"===G?M.push(d(e)(n)(a)):"bigint"===G&&M.push(s(e)(n)(a))}}catch(e){j={error:e}}finally{try{z&&!z.done&&(P=J.return)&&P.call(J)}finally{if(j)throw j.error}}r.resolved&&M.push(i(e)(t)(r.resolved.returns,n,a));try{for(var K=_(r.arrays),$=K.next();!$.done;$=K.next()){var W=$.value;M.push(y(e)(t)(W,n,a))}}catch(e){w={error:e}}finally{try{$&&!$.done&&(T=K.return)&&T.call(K)}finally{if(w)throw w.error}}try{for(var Q=_(r.tuples),Y=Q.next();!Y.done;Y=Q.next()){var X=Y.value;M.push(p(e)(t)(X,n,a))}}catch(e){E={error:e}}finally{try{Y&&!Y.done&&(O=Q.return)&&O.call(Q)}finally{if(E)throw E.error}}try{for(var H=_(r.objects),Z=H.next();!Z.done;Z=H.next()){var ee=Z.value;M.push(m(e)(t)(ee))}}catch(e){I={error:e}}finally{try{Z&&!Z.done&&(F=H.return)&&F.call(H)}finally{if(I)throw I.error}}try{for(var et=_(r.natives),er=et.next();!er.done;er=et.next()){var en=er.value;"Boolean"===en?M.push(u(e)):"Number"===en?M.push(f(e)(n)(a)):"String"===en?M.push(d(e)(n)(a)):M.push(x.default.factory.createIdentifier("{}"))}}catch(e){k={error:e}}finally{try{er&&!er.done&&(A=et.return)&&A.call(et)}finally{if(k)throw k.error}}return((r.sets.length||r.maps.length)&&M.push(x.default.factory.createIdentifier("{}")),1===M.length)?M[0]:x.default.factory.createCallExpression(x.default.factory.createCallExpression(e.use("pick"),void 0,[x.default.factory.createArrayLiteralExpression(M.map(function(e){return x.default.factory.createArrowFunction(void 0,void 0,[],void 0,void 0,e)}),!0)]),void 0,void 0)}}},u=function(e){return x.default.factory.createCallExpression(C(e)("boolean"),void 0,void 0)},c=function(e){return"boolean"==typeof e?x.default.factory.createIdentifier(e.toString()):"number"==typeof e?x.default.factory.createNumericLiteral(e):"string"==typeof e?x.default.factory.createStringLiteral(e):x.default.factory.createBigIntLiteral(e.toString())},l=function(e){return function(t){return function(r){return E.TemplateFactory.generate(r.map(function(r){return i(e)(t)(r,[],[])}))}}},f=function(e){return function(t){return function(r){var n=t.find(function(e){return"type"===e.kind&&"uint"===e.value})?"int":t.find(function(e){return"type"===e.kind&&"int"===e.value})?"uint":"double";return(0,A.random_custom)(C(e))("number")(r)(k.RandomRanger.number({type:n,transform:function(e){return x.default.factory.createNumericLiteral(e)},setter:function(r){return x.default.factory.createCallExpression("double"===n&&t.every(function(e){return"multipleOf"!==e.kind&&"step"!==e.kind})?C(e)("number"):C(e)("integer"),void 0,r.map(function(e){return x.default.factory.createNumericLiteral(e)}))}})({minimum:0,maximum:100,gap:10})(t))}}},s=function(e){return function(t){return function(r){return(0,A.random_custom)(C(e))("bigint")(r)(k.RandomRanger.number({type:t.find(function(e){return"type"===e.kind&&"uint"===e.value})?"uint":"int",transform:function(e){return x.default.factory.createCallExpression(x.default.factory.createIdentifier("BigInt"),void 0,[x.default.factory.createStringLiteral(e.toString())])},setter:function(t){return x.default.factory.createCallExpression(C(e)("bigint"),void 0,t.map(function(e){return x.default.factory.createCallExpression(x.default.factory.createIdentifier("BigInt"),void 0,[x.default.factory.createStringLiteral(e.toString())])}))}})({minimum:0,maximum:100,gap:10})(t))}}},d=function(e){return function(t){return function(r){return(0,A.random_custom)(C(e))("string")(r)(function(){try{for(var r,n,a=_(t),o=a.next();!o.done;o=a.next()){var i=o.value;if("format"===i.kind)return x.default.factory.createCallExpression(C(e)(i.value),void 0,void 0);if("pattern"===i.kind)return x.default.factory.createCallExpression(C(e)("pattern"),void 0,[x.default.factory.createIdentifier("/".concat(i.value,"/"))])}}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}var u=k.RandomRanger.length(C(e))({minimum:5,maximum:25,gap:5})({fixed:"length",minimum:"minLength",maximum:"maxLength"})(t);return x.default.factory.createCallExpression(C(e)("string"),void 0,u?[u]:void 0)}())}}},y=function(e){return function(t){return function(r,n,a){var o=k.RandomRanger.length(C(e))({minimum:0,maximum:3,gap:3})({fixed:"items",minimum:"minItems",maximum:"maxItems"})(n);if(r.recursive)return x.default.factory.createCallExpression(x.default.factory.createIdentifier(e.useLocal(M.array(r.index))),void 0,[null!=o?o:C(e)("length"),x.default.factory.createTrue(),t.recursive?x.default.factory.createAdd(x.default.factory.createNumericLiteral(1),x.default.factory.createIdentifier("_depth")):x.default.factory.createNumericLiteral(0)]);var u=F.RandomJoiner.array(C(e))(i(e)(t))(t)(o)(r.value,n,a);return t.recursive?x.default.factory.createConditionalExpression(x.default.factory.createLogicalAnd(x.default.factory.createIdentifier("_recursive"),x.default.factory.createLessThan(x.default.factory.createNumericLiteral(5),x.default.factory.createIdentifier("_depth"))),void 0,x.default.factory.createIdentifier("[]"),void 0,u):u}}},p=function(e){return function(t){return function(r,n,a){return r.recursive?x.default.factory.createCallExpression(x.default.factory.createIdentifier(e.useLocal(M.tuple(r.index))),void 0,[x.default.factory.createTrue(),t.recursive?x.default.factory.createAdd(x.default.factory.createNumericLiteral(1),x.default.factory.createIdentifier("_depth")):x.default.factory.createNumericLiteral(0)]):F.RandomJoiner.tuple(i(e)(t))(r.elements,n,a)}}},m=function(e){return function(t){return function(r){return x.default.factory.createCallExpression(x.default.factory.createIdentifier(e.useLocal(M.object(r.index))),void 0,t.function?[t.recursive?x.default.factory.createTrue():x.default.factory.createIdentifier("_recursive"),x.default.factory.createConditionalExpression(x.default.factory.createIdentifier("_recursive"),void 0,x.default.factory.createAdd(x.default.factory.createNumericLiteral(1),x.default.factory.createIdentifier("_depth")),void 0,x.default.factory.createIdentifier("_depth"))]:void 0)}}};var M={object:function(e){return"$ro".concat(e)},array:function(e){return"$ra".concat(e)},tuple:function(e){return"$rt".concat(e)}},C=function(e){return function(t){return S.ExpressionFactory.coalesce(x.default.factory.createPropertyAccessChain(x.default.factory.createIdentifier("generator"),x.default.factory.createToken(x.default.SyntaxKind.QuestionDotToken),x.default.factory.createIdentifier(t)))(j.IdentifierFactory.access(e.use("generator"))(t))}}},435:function(e,t,r){"use strict";var n,a,o,i,u,c,l,f,s,d,y,p,m,v,h,g,_,b,x,S,j,P,w=this&&this.__assign||function(){return(w=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},E=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},I=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StringifyProgrammer=void 0;var F=I(r(5423)),k=r(3906),A=r(1387),M=r(2595),C=r(3390),L=r(6152),N=r(2301),R=r(4411),D=r(9133),q=r(3346),U=r(2114),V=r(3348),B=r(6752),J=r(1959),z=r(3306),G=r(8252),K=r(1934),$=r(7144),W=r(572),Q=r(9687),Y=r(1058),X=r(9714);(P||(t.StringifyProgrammer=P={})).write=function(e){return function(t){var r=new J.FunctionImporter,n=x(e)(r);return U.FeatureProgrammer.write(e)(w(w({},n),{addition:function(n){return E(E([],T(V.IsProgrammer.write_function_statements(e)(r)(n)),!1),T(r.declare(t)),!1)}}))(r)}},n=function(e){return function(t){return function(r){return function(a,i,c){if(!0===i.any)return v(a,i,c)(g(a,i,c)(F.default.factory.createCallExpression(F.default.factory.createIdentifier("JSON.stringify"),void 0,[a])));if(0===i.size()&&(!1===i.isRequired()||!0===i.nullable))return!1===i.isRequired()&&!0===i.nullable?"array"===c.from?F.default.factory.createStringLiteral("null"):F.default.factory.createConditionalExpression(F.default.factory.createStrictEquality(F.default.factory.createNull(),a),void 0,F.default.factory.createStringLiteral("null"),void 0,F.default.factory.createIdentifier("undefined")):!1===i.isRequired()?"array"===c.from?F.default.factory.createStringLiteral("null"):F.default.factory.createIdentifier("undefined"):F.default.factory.createStringLiteral("null");var m,b,x,S,j,P,I,A,M,C,L,R=[];if(null!==i.resolved?R.push({type:"resolved",is:function(){return V.IsProgrammer.decode_to_json(!1)(a)},value:function(){return s(e)(t)(r)(a,i.resolved.returns,c)}}):!0===i.functional&&R.push({type:"functional",is:function(){return V.IsProgrammer.decode_functional(a)},value:function(){return d(c)}}),(i.templates.length||q.ArrayUtil.has(i.constants,function(e){return"string"===e.type}))&&B.AtomicPredicator.template(i)){var U=D.Metadata.initialize();U.atomics.push("string"),R.push({type:"template literal",is:function(){return V.IsProgrammer.decode(e)(r)(a,U,c,[],[])},value:function(){return l(e)(r)(a,"string",c)}})}var J=function(t){if(!1===B.AtomicPredicator.constant(i)(t.type))return"continue";"string"!==t.type?R.push({type:"atomic",is:function(){var n;return V.IsProgrammer.decode(e)(r)(a,((n=D.Metadata.initialize()).atomics.push(t.type),n),c,[],[])},value:function(){return l(e)(r)(a,t.type,c)}}):0===i.templates.length&&R.push({type:"const string",is:function(){var t;return V.IsProgrammer.decode(e)(r)(a,((t=D.Metadata.initialize()).atomics.push("string"),t),c,[],[])},value:function(){return f(e)(r)(a,E([],T(t.values),!1),c)}})};try{for(var z=O(i.constants),$=z.next();!$.done;$=z.next()){var Q=$.value;J(Q)}}catch(e){b={error:e}}finally{try{$&&!$.done&&(x=z.return)&&x.call(z)}finally{if(b)throw b.error}}var X=function(t){B.AtomicPredicator.atomic(i)(t)&&R.push({type:"atomic",is:function(){var n;return V.IsProgrammer.decode(e)(r)(a,((n=D.Metadata.initialize()).atomics.push(t),n),c,[],[])},value:function(){return l(e)(r)(a,t,c)}})};try{for(var H=O(i.atomics),Z=H.next();!Z.done;Z=H.next()){var ee=Z.value;X(ee)}}catch(e){S={error:e}}finally{try{Z&&!Z.done&&(j=H.return)&&j.call(H)}finally{if(S)throw S.error}}var et=function(n){var o,l;try{for(var f=(o=void 0,O(n.elements)),s=f.next();!s.done;s=f.next()){var d=s.value;if(K.StringifyPredicator.undefindable(i))throw Error("Error on typia.stringify(): tuple cannot contain undefined value - (".concat(d.getName(),")."))}}catch(e){o={error:e}}finally{try{s&&!s.done&&(l=f.return)&&l.call(f)}finally{if(o)throw o.error}}R.push({type:"tuple",is:function(){var t;return V.IsProgrammer.decode(e)(r)(a,((t=D.Metadata.initialize()).tuples.push(n),t),c,[],[])},value:function(){return u(e)(t)(r)(a,n,c)}})};try{for(var er=O(i.tuples),en=er.next();!en.done;en=er.next()){var ea=en.value;et(ea)}}catch(e){P={error:e}}finally{try{en&&!en.done&&(I=er.return)&&I.call(er)}finally{if(P)throw P.error}}if(i.arrays.length){try{for(var eo=O(i.arrays),ei=eo.next();!ei.done;ei=eo.next()){var eu=ei.value;if(K.StringifyPredicator.undefindable(eu.value))throw Error("Error on typia.stringify(): array cannot contain undefined value (".concat(eu.value.getName(),")."))}}catch(e){A={error:e}}finally{try{ei&&!ei.done&&(M=eo.return)&&M.call(eo)}finally{if(A)throw A.error}}var ec=1===i.arrays.length?function(){return o(t)(r)(a,i.arrays[0],w(w({},c),{from:"array"}))}:i.arrays.some(function(e){return e.value.any})?function(){return F.default.factory.createCallExpression(F.default.factory.createIdentifier("JSON.stringify"),void 0,[a])}:function(){return p(e)(t)(r)(a,i.arrays,w(w({},c),{from:"array"}))};R.push({type:"array",is:function(){return k.ExpressionFactory.isArray(a)},value:ec})}if(i.natives.length){var el=function(t){R.push({type:"object",is:function(){return(0,W.check_native)(t)(a)},value:function(){return B.AtomicPredicator.native(t)?l(e)(r)(a,t.toLowerCase(),c):F.default.factory.createStringLiteral("{}")}})};try{for(var ef=O(i.natives),es=ef.next();!es.done;es=ef.next()){var ed=es.value;el(ed)}}catch(e){C={error:e}}finally{try{es&&!es.done&&(L=ef.return)&&L.call(ef)}finally{if(C)throw C.error}}}i.sets.length&&R.push({type:"object",is:function(){return k.ExpressionFactory.isInstanceOf("Set")(a)},value:function(){return F.default.factory.createStringLiteral("{}")}}),i.maps.length&&R.push({type:"object",is:function(){return k.ExpressionFactory.isInstanceOf("Map")(a)},value:function(){return F.default.factory.createStringLiteral("{}")}}),i.objects.length&&R.push({type:"object",is:function(){return k.ExpressionFactory.isObject({checkNull:!0,checkArray:i.objects.some(function(e){return e.properties.every(function(e){return!e.key.isSoleLiteral()||!e.value.isRequired()})})})(a)},value:function(){var o,u;return!1===i.isParentResolved()&&1===i.objects.length&&i.objects[0]._Is_simple("top"===c.from?0:1)?(o=i.objects[0],u=(0,Y.feature_object_entries)({decoder:function(){return n(e)(t)(r)},trace:!1,path:!1})(r)(o)(F.default.factory.createAsExpression(a,N.TypeFactory.keyword("any"))),G.StringifyJoiner.object(r)(F.default.factory.createAsExpression(a,N.TypeFactory.keyword("any")),u)):y(t)(r)(a,i,w(w({},c),{from:"object"}))}});return 0===R.length?F.default.factory.createCallExpression(F.default.factory.createIdentifier("JSON.stringify"),void 0,[a]):(m=1===R.length?R[0].value():F.default.factory.createCallExpression(F.default.factory.createArrowFunction(void 0,void 0,[],void 0,void 0,_(r,a,R,i.getName())),void 0,void 0),v(a,i,c)(h(a,i)(m)))}}}},a=function(e){return U.FeatureProgrammer.decode_object({trace:!1,path:!1,prefix:b})(e)},o=function(e){return function(t){return function(r,n,a){return n.recursive?F.default.factory.createCallExpression(F.default.factory.createIdentifier(t.useLocal("".concat(e.prefix,"a").concat(n.index))),void 0,U.FeatureProgrammer.argumentsArray(e)(w(w({},a),{source:"function",from:"array"}))(r)):i(e)(t)(r,n,a)}}},i=function(e){return function(t){return function(r,n,a){return U.FeatureProgrammer.decode_array(e)(t)(G.StringifyJoiner.array)(r,n,a,[],[])}}},u=function(e){return function(t){return function(r){return function(n,a,o){return a.recursive?F.default.factory.createCallExpression(F.default.factory.createIdentifier(r.useLocal("".concat(t.prefix,"t").concat(a.index))),void 0,U.FeatureProgrammer.argumentsArray(t)(w(w({},o),{source:"function"}))(n)):c(e)(t)(r)(n,a,o)}}}},c=function(e){return function(t){return function(r){return function(a,o,i){var u=o.elements.filter(function(e){return null===e.rest}).map(function(o,u){return n(e)(t)(r)(F.default.factory.createElementAccessExpression(a,u),o,w(w({},i),{from:"array",postfix:i.postfix.length?"".concat(i.postfix.slice(0,-1),"[").concat(u,']"'):'"['.concat(u,']"')}))}),c=function(){if(0===o.elements.length||null===o.elements.at(-1).rest)return null;var u=n(e)(t)(r)(F.default.factory.createCallExpression(A.IdentifierFactory.access(a)("slice"),void 0,[F.default.factory.createNumericLiteral(o.elements.length-1)]),(0,X.wrap_metadata_rest_tuple)(o.elements.at(-1).rest),w(w({},i),{start:o.elements.length-1}));return F.default.factory.createCallExpression(r.use("rest"),void 0,[u])}();return G.StringifyJoiner.tuple(u,c)}}}},l=function(e){return function(t){return function(r,n,a){return"string"===n?F.default.factory.createCallExpression(t.use("string"),void 0,[r]):("number"===n&&z.OptionPredicator.numeric(e.options)&&(r=F.default.factory.createCallExpression(t.use("number"),void 0,[r])),"top"!==a.from?r:F.default.factory.createCallExpression(A.IdentifierFactory.access(r)("toString"),void 0,void 0))}}},f=function(e){return function(t){return function(r,n,a){return n.every(function(e){return!K.StringifyPredicator.require_escape(e)})?[F.default.factory.createStringLiteral('"'),r,F.default.factory.createStringLiteral('"')].reduce(function(e,t){return F.default.factory.createAdd(e,t)}):l(e)(t)(r,"string",a)}}},s=function(e){return function(t){return function(r){return function(a,o,i){return n(e)(t)(r)(F.default.factory.createCallExpression(A.IdentifierFactory.access(a)("toJSON"),void 0,[]),o,i)}}}},d=function(e){return"array"===e.from?F.default.factory.createStringLiteral("null"):F.default.factory.createIdentifier("undefined")},y=function(e){return function(t){return function(r,n,o){return 1===n.objects.length?a(t)(r,n.objects[0],o):F.default.factory.createCallExpression(F.default.factory.createIdentifier(t.useLocal("".concat(b,"u").concat(n.union_index))),void 0,U.FeatureProgrammer.argumentsArray(e)(o)(r))}}},p=function(e){return function(t){return function(r){return function(n,a,i){return m(t)(r)($.UnionExplorer.array({checker:V.IsProgrammer.decode(e)(r),decoder:o(t)(r),empty:F.default.factory.createStringLiteral("[]"),success:F.default.factory.createTrue(),failure:function(e,t){return j(r)(t)(e)}}))(n,a,i)}}}},m=function(e){return function(t){return function(r){return function(n,a,o){var i=function(e){return function(t){return function(n){return r(e)(n,a,t,[],[])}}};return a.every(function(e){return!1===e.recursive})&&F.default.factory.createCallExpression(i([])(o)(n),void 0,[]),o=w(w({},o),{source:"function",from:"array"}),F.default.factory.createCallExpression(F.default.factory.createIdentifier(t.emplaceUnion(e.prefix,a.map(function(e){return e.name}).join(" | "),function(){return i(U.FeatureProgrammer.parameterDeclarations(e)(N.TypeFactory.keyword("any"))(F.default.factory.createIdentifier("input")))(w(w({},o),{postfix:""}))(F.default.factory.createIdentifier("input"))})),void 0,U.FeatureProgrammer.argumentsArray(e)(o)(n))}}}},v=function(e,t,r){return!0===t.isRequired()&&!1===t.any?function(e){return e}:function(t){return F.default.factory.createConditionalExpression(F.default.factory.createStrictInequality(F.default.factory.createIdentifier("undefined"),e),void 0,t,void 0,"array"===r.from?F.default.factory.createStringLiteral("null"):F.default.factory.createIdentifier("undefined"))}},h=function(e,t){return!1===t.nullable?function(e){return e}:function(t){return F.default.factory.createConditionalExpression(F.default.factory.createStrictInequality(F.default.factory.createNull(),e),void 0,t,void 0,F.default.factory.createStringLiteral("null"))}},g=function(e,t,r){return!1===t.functional?function(e){return e}:function(t){return F.default.factory.createConditionalExpression(F.default.factory.createStrictInequality(F.default.factory.createStringLiteral("function"),R.ValueFactory.TYPEOF(e)),void 0,t,void 0,d(r))}},_=function(e,t,r,n){return F.default.factory.createBlock(E(E([],T(r.map(function(e){return F.default.factory.createIfStatement(e.is(),F.default.factory.createReturnStatement(e.value()))})),!1),[j(e)(n)(t)],!1),!0)},b="$s",x=function(e){return function(t){var r={types:{input:function(t,r){return F.default.factory.createTypeReferenceNode(null!=r?r:N.TypeFactory.getFullName(e.checker)(t))},output:function(){return N.TypeFactory.keyword("string")}},prefix:b,trace:!1,path:!1,initializer:S,decoder:function(){return n(e)(r)(t)},objector:{checker:function(){return function(r,n,a){return V.IsProgrammer.decode(e)(t)(r,n,a,[],[])}},decoder:function(){return a(t)},joiner:G.StringifyJoiner.object(t),unionizer:(0,Q.decode_union_object)(V.IsProgrammer.decode_object(t))(a(t))(function(e){return e})(function(e,r){return j(t)(r)(e)}),failure:function(e,r){return j(t)(r)(e)}},generator:{arrays:function(){return function(e){return e.arrays().filter(function(e){return e.recursive}).map(function(e,n){return L.StatementFactory.constant("".concat(r.prefix,"a").concat(n),F.default.factory.createArrowFunction(void 0,void 0,U.FeatureProgrammer.parameterDeclarations(r)(N.TypeFactory.keyword("any"))(F.default.factory.createIdentifier("input")),N.TypeFactory.keyword("any"),void 0,i(r)(t)(F.default.factory.createIdentifier("input"),e,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}},tuples:function(){var n;return n=t,function(t){return t.tuples().filter(function(e){return e.recursive}).map(function(t,a){return L.StatementFactory.constant("".concat(r.prefix,"t").concat(a),F.default.factory.createArrowFunction(void 0,void 0,U.FeatureProgrammer.parameterDeclarations(r)(N.TypeFactory.keyword("any"))(F.default.factory.createIdentifier("input")),N.TypeFactory.keyword("any"),void 0,c(e)(r)(n)(F.default.factory.createIdentifier("input"),t,{tracable:r.trace,source:"function",from:"array",postfix:""})))})}}}};return r}},S=function(e){var t=e.checker;return function(e){var r=new M.MetadataCollection,n=C.MetadataFactory.analyze(t)({resolve:!0,constant:!0,absorb:!0,validate:function(e){if(e.atomics.find(function(e){return"bigint"===e}))throw Error(H);if(e.arrays.some(function(e){return!1===e.value.isRequired()}))throw Error(Z)}})(r)(e);return[r,n]}},j=function(e){return function(t){return function(r){return F.default.factory.createExpressionStatement(F.default.factory.createCallExpression(e.use("throws"),[],[F.default.factory.createObjectLiteralExpression([F.default.factory.createPropertyAssignment("expected",F.default.factory.createStringLiteral(t)),F.default.factory.createPropertyAssignment("value",r)],!0)]))}}};var H="Error on typia.stringify(): does not allow bigint type.",Z="Error on typia.stringify(): does not allow undefined type in array."},2028:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r>")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",s.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!0})}))(t)(!1)(r,n)),c.StatementFactory.constant("clone",f.CloneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),c.StatementFactory.constant("output",i.default.factory.createAsExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")]),l.TypeFactory.keyword("any"))),i.default.factory.createIfStatement(i.default.factory.createIdentifier("output.success"),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("output.data"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("clone"),void 0,[i.default.factory.createIdentifier("input")])))),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},8646:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r>")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",f.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(!1)(r,n)),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("input"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("JSON.parse"),void 0,[i.default.factory.createIdentifier("input")]))),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createReturnStatement(i.default.factory.createAsExpression(i.default.factory.createIdentifier("output"),i.default.factory.createTypeReferenceNode("any")))]))}}}},9345:function(e,t,r){"use strict";var n,a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a")),void 0,u.default.factory.createBlock([l.StatementFactory.constant("errors",u.default.factory.createAsExpression(u.default.factory.createArrayLiteralExpression([]),u.default.factory.createArrayTypeNode(f.TypeFactory.keyword("any")))),l.StatementFactory.constant("__is",v),u.default.factory.createIfStatement(u.default.factory.createStrictEquality(u.default.factory.createFalse(),u.default.factory.createCallExpression(u.default.factory.createIdentifier("__is"),void 0,[u.default.factory.createIdentifier("input")])),u.default.factory.createBlock([l.StatementFactory.constant("$report",u.default.factory.createCallExpression(c.IdentifierFactory.access(u.default.factory.createParenthesizedExpression(u.default.factory.createAsExpression(t,f.TypeFactory.keyword("any"))))("report"),[],[u.default.factory.createIdentifier("errors")])),u.default.factory.createExpressionStatement(u.default.factory.createCallExpression(g,void 0,[u.default.factory.createIdentifier("input"),u.default.factory.createStringLiteral("$input"),u.default.factory.createTrue()]))])),l.StatementFactory.constant("success",u.default.factory.createStrictEquality(u.default.factory.createNumericLiteral(0),u.default.factory.createIdentifier("errors.length"))),u.default.factory.createReturnStatement(u.default.factory.createAsExpression(b(),f.TypeFactory.keyword("any")))],!0))}}}};var h=function(e){return function(t){return function(r){if(!1===r.tracable)return d.IsProgrammer.configure({object:g(e)(t),numeric:!0})(t).combiner(r);var n=r.postfix?"_path + ".concat(r.postfix):"_path";return function(e){return function(t,a,o){return"and"===e?a.map(function(e){return e.combined?e.expression:u.default.factory.createLogicalOr(e.expression,x("top"===r.source?u.default.factory.createTrue():u.default.factory.createIdentifier("_exceptionable"))(u.default.factory.createIdentifier(n),o,t))}).reduce(u.default.factory.createLogicalAnd):u.default.factory.createLogicalOr(a.map(function(e){return e.expression}).reduce(u.default.factory.createLogicalOr),x("top"===r.source?u.default.factory.createTrue():u.default.factory.createIdentifier("_exceptionable"))(u.default.factory.createIdentifier(n),o,t))}}}}},g=function(e){return function(t){return(0,v.check_object)({equals:e,undefined:!0,assert:!1,reduce:u.default.factory.createLogicalAnd,positive:u.default.factory.createTrue(),superfluous:function(e){return x()(u.default.factory.createAdd(u.default.factory.createIdentifier("_path"),u.default.factory.createCallExpression(t.use("join"),void 0,[u.default.factory.createIdentifier("key")])),"undefined",e)},halt:function(e){return u.default.factory.createLogicalOr(u.default.factory.createStrictEquality(u.default.factory.createFalse(),u.default.factory.createIdentifier("_exceptionable")),e)}})(t)}},_=function(e){return function(t){return{object:g(e)(t),array:function(e,t){return(0,m.check_everything)(u.default.factory.createCallExpression(c.IdentifierFactory.access(e)("map"),void 0,[t]))},failure:function(e,t,r){return x((null==r?void 0:r.from)==="top"?u.default.factory.createTrue():u.default.factory.createIdentifier("_exceptionable"))(u.default.factory.createIdentifier((null==r?void 0:r.postfix)?"_path + ".concat(r.postfix):"_path"),t,e)},tuple:function(e){return(0,m.check_everything)(u.default.factory.createArrayLiteralExpression(e,!0))}}}},b=function(){return u.default.factory.createObjectLiteralExpression([u.default.factory.createShorthandPropertyAssignment("success"),u.default.factory.createShorthandPropertyAssignment("errors"),u.default.factory.createPropertyAssignment("data",u.default.factory.createConditionalExpression(u.default.factory.createIdentifier("success"),void 0,u.default.factory.createIdentifier("input"),void 0,u.default.factory.createIdentifier("undefined")))],!0)},x=function(e){return function(t,r,n){return u.default.factory.createCallExpression(u.default.factory.createIdentifier("$report"),void 0,[null!=e?e:u.default.factory.createIdentifier("_exceptionable"),u.default.factory.createObjectLiteralExpression([u.default.factory.createPropertyAssignment("path",t),u.default.factory.createPropertyAssignment("expected",u.default.factory.createStringLiteral(r)),u.default.factory.createPropertyAssignment("value",n)],!0)])}}},5649:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r")),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",s.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!0})}))(t)(!1)(r,n)),c.StatementFactory.constant("prune",f.PruneProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),c.StatementFactory.constant("output",i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")])),i.default.factory.createIfStatement(i.default.factory.createIdentifier("output.success"),i.default.factory.createExpressionStatement(i.default.factory.createCallExpression(i.default.factory.createIdentifier("prune"),void 0,[i.default.factory.createIdentifier("input")]))),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},6640:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r"),void 0,i.default.factory.createBlock([c.StatementFactory.constant("validate",s.ValidateProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!0})}))(t)(!1)(r,n)),c.StatementFactory.constant("stringify",f.StringifyProgrammer.write(a(a({},e),{options:a(a({},e.options),{functional:!1,numeric:!1})}))(t)(r,n)),c.StatementFactory.constant("output",i.default.factory.createAsExpression(i.default.factory.createCallExpression(i.default.factory.createIdentifier("validate"),void 0,[i.default.factory.createIdentifier("input")]),l.TypeFactory.keyword("any"))),i.default.factory.createIfStatement(i.default.factory.createIdentifier("output.success"),i.default.factory.createExpressionStatement(i.default.factory.createBinaryExpression(i.default.factory.createIdentifier("output.data"),i.default.SyntaxKind.EqualsToken,i.default.factory.createCallExpression(i.default.factory.createIdentifier("stringify"),void 0,[i.default.factory.createIdentifier("input")])))),i.default.factory.createReturnStatement(i.default.factory.createIdentifier("output"))]))}}}},6752:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AtomicPredicator=void 0;var n,a,o=r(3346);(n=a||(t.AtomicPredicator=a={})).constant=function(e){return function(t){return!o.ArrayUtil.has(e.atomics,function(e){return e===t})&&!o.ArrayUtil.has(e.natives,function(e){return e.toLowerCase()===t})}},n.atomic=function(e){return function(t){return!o.ArrayUtil.has(e.natives,function(e){return e.toLowerCase()===t})}},n.native=function(e){return i.has(e.toLowerCase())},n.template=function(e){return!o.ArrayUtil.has(e.atomics,function(e){return"string"===e})};var i=new Set(["boolean","number","string"])},1739:function(e,t,r){"use strict";var n,a,o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},i=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a"),index:null,recursive:!1,nullables:[],value:e})},element:function(e){return e.value},size:function(e){return s.IdentifierFactory.access(e)("size")},front:function(e){return s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(e)("values"),void 0,void 0))("next"),void 0,void 0))("value")},array:function(e){return l.default.factory.createArrayLiteralExpression([l.default.factory.createSpreadElement(e)],!1)},name:function(e,t){return"Set<".concat(t.getName(),">")}})(e)},n.map=function(e){return(0,m.check_union_array_like)({element:function(e){return e.value.tuples[0].elements},size:function(e){return s.IdentifierFactory.access(e)("size")},front:function(e){return s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(l.default.factory.createCallExpression(s.IdentifierFactory.access(e)("entries"),void 0,void 0))("next"),void 0,void 0))("value")},array:function(e){return l.default.factory.createArrayLiteralExpression([l.default.factory.createSpreadElement(e)],!1)},name:function(e,t){var r=i(t,2),n=r[0],a=r[1];return"Map<".concat(n.getName(),", ").concat(a.getName(),">")},transform:function(e){return y.MetadataArray.create({name:"Map<".concat(e.key.getName(),", ").concat(e.value.getName(),">"),index:null,recursive:!1,nullables:[],value:d.Metadata.create(o(o({},d.Metadata.initialize()),{tuples:[p.MetadataTuple.create({name:"[".concat(e.key.getName(),", ").concat(e.value.getName(),"]"),index:null,recursive:!1,nullables:[],elements:[e.key,e.value]})]}))})}})(e)}},9560:function(e,t,r){"use strict";var n,a=this&&this.__assign||function(){return(a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.UnionPredicator=void 0;var i=r(9133),u=r(3346),c=r(3224);(n||(t.UnionPredicator=n={})).object=function(e){var t,r,n,l,f=new Map;try{for(var s=o(e),d=s.next();!d.done;d=s.next()){var y=d.value;try{for(var p=(n=void 0,o(y.properties)),m=p.next();!m.done;m=p.next()){var v=m.value.key.getSoleLiteral();null!==v&&c.MapUtil.take(f)(v,function(){return u.ArrayUtil.repeat(e.length,function(){return null})})}}catch(e){n={error:e}}finally{try{m&&!m.done&&(l=p.return)&&l.call(p)}finally{if(n)throw n.error}}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}e.forEach(function(e,t){var r,n;try{for(var a=o(e.properties),i=a.next();!i.done;i=a.next()){var u=i.value,c=u.key.getSoleLiteral();null!==c&&(f.get(c)[t]=u)}}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}});var h=[];return e.forEach(function(e,t){var r=[];if(e.properties.forEach(function(e){if(!1!==e.value.isRequired()){var n=e.key.getSoleLiteral();if(null!==n){var a=f.get(n).filter(function(e,r){return t!==r&&null!==e});!0===(0===a.length||a.every(function(t){return!i.Metadata.intersects(e.value,t.value)}))&&r.push({property:e,neighbour:0!==a.length})}}}),0!==r.length){var n=r.find(function(e){return e.property.value.isConstant()})||r[0];h.push(a({index:t,object:e},n))}}),h}},1510:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.disable_function_importer_declare=void 0,t.disable_function_importer_declare=function(e){return r(e)};var r=function(e){return{empty:function(){return e.empty()},use:function(t){return e.use(t)},useLocal:function(t){return e.useLocal(t)},hasLocal:function(t){return e.hasLocal(t)},declare:function(e){return[]},increment:function(){return e.increment()},emplaceUnion:function(t,r,n){return e.emplaceUnion(t,r,n)},trace:function(){return e.trace()}}}},535:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.JSON_COMPONENTS_PREFIX=void 0,t.JSON_COMPONENTS_PREFIX="#/components"},8379:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_array=void 0;var o=r(5566);t.application_array=function(e){return function(t){return function(r){return function(i){var u,c,l,f=n(n({},i),{type:"array",items:(0,o.application_schema)(e)(!1)(t)(r.value)(i)});try{for(var s=a(null!==(l=i["x-typia-metaTags"])&&void 0!==l?l:[]),d=s.next();!d.done;d=s.next()){var y=d.value;"minItems"===y.kind?f.minItems=y.value:"maxItems"===y.kind&&(f.maxItems=y.value)}}catch(e){u={error:e}}finally{try{d&&!d.done&&(c=s.return)&&c.call(s)}finally{if(u)throw u.error}}return f}}}}},141:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_default=void 0,t.application_default=function(e){return function(t){return function(n){var a,o,i,u,c=(null!==(i=e["x-typia-jsDocTags"])&&void 0!==i?i:[]).filter(function(e){return"default"===e.name});try{for(var l=r(c),f=l.next();!f.done;f=l.next()){var s=f.value;if((null===(u=s.text)||void 0===u?void 0:u.length)&&t(s.text[0].text))return n(s.text[0].text)}}catch(e){a={error:e}}finally{try{f&&!f.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}}}}},1683:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_default_string=void 0;var a=r(1494);t.application_default_string=function(e){return function(t){return function(r){return(0,a.application_default)(t)(function(t){var a,o,i,u,c=[];e.atomics.find(function(e){return"number"===e||"bigint"===e})&&c.push(Number.isNaN(Number(t))),e.atomics.find(function(e){return"boolean"===e})&&c.push("true"!==t&&"false"!==t);try{for(var l=n(e.constants),f=l.next();!f.done;f=l.next()){var s=f.value;try{for(var d=(i=void 0,n(s.values)),y=d.next();!y.done;y=d.next()){var p=y.value;c.push(t!==p.toString())}}catch(e){i={error:e}}finally{try{y&&!y.done&&(u=d.return)&&u.call(d)}finally{if(i)throw i.error}}}}catch(e){a={error:e}}finally{try{f&&!f.done&&(o=l.return)&&o.call(l)}finally{if(a)throw a.error}}return void 0!==r.minLength&&c.push(t.length>=r.minLength),void 0!==r.maxLength&&c.push(t.length<=r.maxLength),void 0!==r.pattern&&c.push(new RegExp(r.pattern).test(t)),c.every(function(e){return e})})(function(e){return e})}}}},8072:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_number=void 0;var o=r(1494);t.application_number=function(e){var t,r,i,u,c=n(n({},e),{type:"number"});try{for(var l=a(null!==(i=e["x-typia-metaTags"])&&void 0!==i?i:[]),f=l.next();!f.done;f=l.next()){var s=f.value;"type"===s.kind&&("int"===s.value||"uint"===s.value||"{int}"===s.value||"{uint}"===s.value)?c.type="integer":"minimum"===s.kind?c.minimum=s.value:"maximum"===s.kind?c.maximum=s.value:"exclusiveMinimum"===s.kind?(c.minimum=s.value,c.exclusiveMinimum=!0):"exclusiveMaximum"===s.kind?(c.maximum=s.value,c.exclusiveMaximum=!0):"multipleOf"===s.kind&&(c.multipleOf=s.value)}}catch(e){t={error:e}}finally{try{f&&!f.done&&(r=l.return)&&r.call(l)}finally{if(t)throw t.error}}return"integer"===c.type&&(null!==(u=e["x-typia-metaTags"])&&void 0!==u?u:[]).find(function(e){return"type"===e.kind&&"uint"===e.value})&&(void 0===c.minimum||!0!==c.exclusiveMaximum&&c.minimum<0?c.minimum=0:!0===c.exclusiveMinimum&&c.minimum<-1&&(c.maximum=0,delete c.exclusiveMinimum)),c.default=(0,o.application_default)(e)(function(e){var t=Number(e),r=[!Number.isNaN(t)];return void 0!==c.minimum&&(!0===c.exclusiveMinimum?r.push(t>c.minimum):r.push(t>=c.minimum)),void 0!==c.maximum&&(!0===c.exclusiveMaximum?r.push(t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i};Object.defineProperty(t,"__esModule",{value:!0}),t.application_object=void 0;var i=r(7297),u=r(9133),c=r(8868),l=r(535),f=r(5566),s=r(6555);t.application_object=function(e){return function(t){return function(r){return function(u){var y,p,m,v,h,g,_="ajv"===e.purpose?r.name:"".concat(r.name).concat(u?".Nullable":""),b="".concat(l.JSON_COMPONENTS_PREFIX,"/schemas/").concat(_),x={$ref:b};if((null===(m=t.schemas)||void 0===m?void 0:m[_])!==void 0)return x;null!==(v=t.schemas)&&void 0!==v||(t.schemas={}),t.schemas[_]={};var S={},j={patternProperties:{},additionalProperties:void 0},P=[];try{for(var w=a(r.properties),T=w.next();!T.done;T=w.next()){var E=T.value;!function(r){if(!(!0===r.value.functional&&!1===r.value.nullable&&!0===r.value.isRequired()&&0===r.value.size()||r.jsDocTags.find(function(e){return"hidden"===e.name}))){var n,a,o=r.key.getSoleLiteral(),u=(0,f.application_schema)(e)(!0)(t)(r.value)({deprecated:r.jsDocTags.some(function(e){return"deprecated"===e.name})||void 0,title:(null===(n=null==(a=r.jsDocTags.find(function(e){return"title"===e.name}))?void 0:a.text)||void 0===n?void 0:n.length)?i.CommentFactory.merge(a.text):void 0,description:null!==(h=r.description)&&void 0!==h?h:void 0,"x-typia-metaTags":r.tags.length?r.tags:void 0,"x-typia-jsDocTags":r.jsDocTags.length?r.jsDocTags:void 0,"x-typia-required":r.value.required,"x-typia-optional":r.value.optional});if(null!==u){if(null!==o)S[o]=u,!0===r.value.isRequired()&&P.push(o);else{var l=(0,s.metadata_to_pattern)(!0)(r.key);l===c.PatternUtil.STRING?j.additionalProperties=[r.value,u]:j.patternProperties[l]=[r.value,u]}}}}(E)}}catch(e){y={error:e}}finally{try{T&&!T.done&&(p=w.return)&&p.call(w)}finally{if(y)throw y.error}}var O={additionalProperties:null===(g=j.additionalProperties)||void 0===g?void 0:g[1],patternProperties:function(){if(0!==Object.keys(j.patternProperties).length){var e,t,r={};try{for(var n=a(Object.entries(j.patternProperties)),i=n.next();!i.done;i=n.next()){var u=o(i.value,2),c=u[0],l=u[1];r[c]=l[1]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}return r}}()},I=n({$id:"ajv"===e.purpose?b:void 0,type:"object",properties:S,nullable:"swagger"===e.purpose?u:void 0,required:P.length?P:void 0,description:r.description,"x-typia-jsDocTags":r.jsDocTags},"ajv"===e.purpose?O:{"x-typia-additionalProperties":O.additionalProperties,"x-typia-patternProperties":O.patternProperties,additionalProperties:d(e)(t)(j)});return t.schemas[_]=I,x}}}};var d=function(e){return function(t){return function(r){var n,a=Object.values(r.patternProperties||{});if(r.additionalProperties&&a.push(r.additionalProperties),0!==a.length){if(1===a.length)return a[0][1];var o=a.map(function(e){return e[0]}).reduce(function(e,t){return u.Metadata.merge(e,t)});return null!==(n=(0,f.application_schema)(e)(!0)(t)(o)({"x-typia-required":!1}))&&void 0!==n?n:void 0}}}}},3823:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.application_resolved=void 0;var n=r(5566);t.application_resolved=function(e){return function(t){return function(r){return function(u){return function(c){var l=(0,n.application_schema)(e)(t)(r)(u.returns)(c);if(null===l)return[];if(i(new Set)(u.original)){var f=a(l)?l:o(l)?l.oneOf.find(a):void 0;void 0!==f&&"date"!==f.format&&"date-time"!==f.format&&(f.format="date-time")}return o(l)?l.oneOf:[l]}}}}};var a=function(e){return"string"===e.type},o=function(e){return Array.isArray(e.oneOf)},i=function(e){return function(t){return!e.has(t)&&(e.add(t),t.natives.some(function(e){return"Date"===e})||t.arrays.some(function(t){return i(e)(t.value)})||t.tuples.some(function(t){return t.elements.some(i(e))})||t.aliases.some(function(t){return i(e)(t.value)}))}}},5566:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_schema=void 0;var u=r(6752),c=r(8379),l=r(5333),f=r(141),s=r(9672),d=r(8072),y=r(4286),p=r(8725),m=r(3823),v=r(4014),h=r(3502),g=r(829);t.application_schema=function(e){return function(t){return function(r){return function(b){return function(x){if(!0===b.any)return n(n({},x),{type:void 0});if(b.nullable&&b.empty())return n({type:"null"},x);var S,j,P,w,T,E,O,I,F,k,A,M,C,L,N=[];b.nullable&&"swagger"!==e.purpose&&N.push(n(n({},x),{type:"null"}));var R=b.nullable&&"swagger"===e.purpose?function(e){return N.push(n(n({},e),{nullable:!!e.type||void 0}))}:function(e){return N.push(e)};null!==b.resolved&&N.push.apply(N,o([],a((0,m.application_resolved)(e)(t)(r)(b.resolved)(x)),!1)),b.templates.length&&u.AtomicPredicator.template(b)&&R((0,h.application_templates)(b)(x));try{for(var D=i(b.constants),q=D.next();!q.done;q=D.next()){var U=q.value;if("bigint"===U.type)throw Error(_);"string"===U.type&&b.templates.length||!1===u.AtomicPredicator.constant(b)(U.type)||R((0,s.application_constant)(U)(x))}}catch(e){S={error:e}}finally{try{q&&!q.done&&(j=D.return)&&j.call(D)}finally{if(S)throw S.error}}try{for(var V=i(b.atomics),B=V.next();!B.done;B=V.next()){var J=B.value;if("bigint"===J)throw Error(_);!1!==u.AtomicPredicator.atomic(b)(J)&&R("string"===J?(0,v.application_string)(b)(x):"boolean"===J?(0,f.application_boolean)(x):(0,y.application_number)(x))}}catch(e){P={error:e}}finally{try{B&&!B.done&&(w=V.return)&&w.call(V)}finally{if(P)throw P.error}}try{for(var z=i(b.arrays),G=z.next();!G.done;G=z.next()){var K=G.value;R((0,l.application_array)(e)(r)(K)(x))}}catch(e){T={error:e}}finally{try{G&&!G.done&&(E=z.return)&&E.call(z)}finally{if(T)throw T.error}}try{for(var $=i(b.tuples),W=$.next();!W.done;W=$.next()){var Q=W.value;R((0,g.application_tuple)(e)(r)(Q)(x))}}catch(e){O={error:e}}finally{try{W&&!W.done&&(I=$.return)&&I.call($)}finally{if(O)throw O.error}}try{for(var Y=i(b.natives),X=Y.next();!X.done;X=Y.next()){var H=X.value;R(u.AtomicPredicator.native(H)?"String"===H?(0,v.application_string)(b)(x):"Boolean"===H?(0,f.application_boolean)(x):(0,y.application_number)(x):(0,d.application_native)(e)(r)(H)({nullable:b.nullable,attribute:x}))}}catch(e){F={error:e}}finally{try{X&&!X.done&&(k=Y.return)&&k.call(Y)}finally{if(F)throw F.error}}b.sets.length&&R((0,d.application_native)(e)(r)("Set")({nullable:b.nullable,attribute:x})),b.maps.length&&R((0,d.application_native)(e)(r)("Map")({nullable:b.nullable,attribute:x}));try{for(var Z=i(b.objects),ee=Z.next();!ee.done;ee=Z.next()){var et=ee.value;R((0,p.application_object)(e)(r)(et)(b.nullable))}}catch(e){A={error:e}}finally{try{ee&&!ee.done&&(M=Z.return)&&M.call(Z)}finally{if(A)throw A.error}}try{for(var er=i(b.aliases),en=er.next();!en.done;en=er.next()){var ea=en.value;R((0,c.application_alias)(e)(t)(r)(ea)(b.nullable))}}catch(e){C={error:e}}finally{try{en&&!en.done&&(L=er.return)&&L.call(er)}finally{if(C)throw C.error}}return 0===N.length?!0===t?null:n(n({},x),{type:void 0}):1===N.length?N[0]:n({oneOf:N},x)}}}}};var _="Error on typia.application(): does not allow bigint type."},4014:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.application_string=void 0;var o=r(1683);t.application_string=function(e){return function(t){var r,u,c,l,f,s=n(n({},t),{type:"string"}),d=null===(c=t["x-typia-jsDocTags"])||void 0===c?void 0:c.find(function(e){return"format"===e.name});(null===(l=null==d?void 0:d.text)||void 0===l?void 0:l.length)&&(s.format=null==d?void 0:d.text.map(function(e){return e.text}).join(" "));try{for(var y=a(null!==(f=t["x-typia-metaTags"])&&void 0!==f?f:[]),p=y.next();!p.done;p=y.next()){var m=p.value;"minLength"===m.kind?s.minLength=m.value:"maxLength"===m.kind?s.maxLength=m.value:"format"===m.kind?s.format=i(m.value):"pattern"===m.kind&&(s.pattern=m.value)}}catch(e){r={error:e}}finally{try{p&&!p.done&&(u=y.return)&&u.call(y)}finally{if(r)throw r.error}}return s.default=(0,o.application_default_string)(e)(t)(s),s}};var i=function(e){return"datetime"===e?"date-time":e}},3502:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return(n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.check_string_tags=void 0;var i=o(r(5423)),u=r(1387);t.check_string_tags=function(e){return function(t){return function(r){var o,c,l=[];try{for(var f=n(t),s=f.next();!s.done;s=f.next()){var d=s.value;"format"===d.kind?l.push([d,i.default.factory.createCallExpression(e.use("is_".concat(d.value)),void 0,[r])]):"pattern"===d.kind?l.push([d,i.default.factory.createCallExpression(i.default.factory.createIdentifier("RegExp(/".concat(d.value,"/).test")),void 0,[r])]):"length"===d.kind?l.push([d,i.default.factory.createStrictEquality(i.default.factory.createNumericLiteral(d.value),u.IdentifierFactory.access(r)("length"))]):"minLength"===d.kind?l.push([d,i.default.factory.createLessThanEquals(i.default.factory.createNumericLiteral(d.value),u.IdentifierFactory.access(r)("length"))]):"maxLength"===d.kind&&l.push([d,i.default.factory.createGreaterThanEquals(i.default.factory.createNumericLiteral(d.value),u.IdentifierFactory.access(r)("length"))])}}catch(e){o={error:e}}finally{try{s&&!s.done&&(c=f.return)&&c.call(f)}finally{if(o)throw o.error}}return l.map(function(e){var t=a(e,2),r=t[0],n=t[1];return{expected:"string (@".concat(r.kind," ").concat(r.value,")"),expression:n}})}}}},9899:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.metadata_to_pattern=void 0;var a=r(3346),o=r(8868),i=r(6290);t.metadata_to_pattern=function(e){return function(t){if(void 0!==t.atomics.find(function(e){return"string"===e}))return"(.*)";var r,u,c,l,f=a.ArrayUtil.flat(t.constants.map(function(e){return"string"!==e.type?e.values.map(function(e){return e.toString()}):e.values.map(function(e){return o.PatternUtil.escape(e)})}));try{for(var s=n(t.atomics),d=s.next();!d.done;d=s.next()){var y=d.value;"number"===y||"bigint"===y?f.push(o.PatternUtil.NUMBER):"boolean"===y&&f.push(o.PatternUtil.BOOLEAN)}}catch(e){r={error:e}}finally{try{d&&!d.done&&(u=s.return)&&u.call(s)}finally{if(r)throw r.error}}try{for(var p=n(t.templates),m=p.next();!m.done;m=p.next()){var v=m.value;f.push("("+(0,i.template_to_pattern)(!1)(v)+")")}}catch(e){c={error:e}}finally{try{m&&!m.done&&(l=p.return)&&l.call(p)}finally{if(c)throw c.error}}var h=1===f.length?f[0]:"("+f.join("|")+")";return e?o.PatternUtil.fix(h):h}}},9973:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.prune_object_properties=void 0;var a=n(r(5423)),o=r(6152),i=r(6555);t.prune_object_properties=function(e){var t=a.default.factory.createIdentifier("input"),r=a.default.factory.createIdentifier("key"),n=e.properties.map(function(e){var t=e.key.getSoleLiteral();return null!==t?a.default.factory.createStrictEquality(a.default.factory.createStringLiteral(t),a.default.factory.createIdentifier("key")):a.default.factory.createCallExpression(a.default.factory.createIdentifier("RegExp(/".concat((0,i.metadata_to_pattern)(!0)(e.key),"/).test")),void 0,[r])}),u=[];return n.length&&u.push(a.default.factory.createIfStatement(n.reduce(function(e,t){return a.default.factory.createLogicalOr(e,t)}),a.default.factory.createContinueStatement())),u.push(a.default.factory.createExpressionStatement(a.default.factory.createDeleteExpression(a.default.factory.createElementAccessExpression(t,r)))),a.default.factory.createForOfStatement(void 0,o.StatementFactory.constant("key").declarationList,a.default.factory.createCallExpression(a.default.factory.createIdentifier("Object.keys"),void 0,[t]),1===u.length?u[0]:a.default.factory.createBlock(u,!0))}},9573:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.random_custom=void 0;var a=n(r(5423)),o=r(3906),i=r(7846);t.random_custom=function(e){return function(t){return function(r){return function(n){return o.ExpressionFactory.coalesce(a.default.factory.createCallChain(a.default.factory.createPropertyAccessChain(e("customs"),a.default.factory.createToken(a.default.SyntaxKind.QuestionDotToken),a.default.factory.createIdentifier(t)),a.default.factory.createToken(a.default.SyntaxKind.QuestionDotToken),void 0,[i.LiteralFactory.generate(r)]))(n)}}}}},1430:function(e,t,r){"use strict";var n=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.stringify_dynamic_properties=void 0;var o=a(r(5423)),i=r(1387),u=r(5374),c=r(6555);t.stringify_dynamic_properties=function(e,t){var r,a,u=[o.default.factory.createIfStatement(o.default.factory.createStrictEquality(o.default.factory.createIdentifier("undefined"),o.default.factory.createIdentifier("value")),o.default.factory.createReturnStatement(o.default.factory.createStringLiteral("")))],f=function(){var e=o.default.factory.createCallExpression(i.IdentifierFactory.access(o.default.factory.createCallExpression(o.default.factory.createIdentifier("Object.entries"),void 0,[o.default.factory.createIdentifier("input")]))("map"),void 0,[o.default.factory.createArrowFunction(void 0,void 0,[i.IdentifierFactory.parameter(o.default.factory.createArrayBindingPattern([o.default.factory.createBindingElement(void 0,void 0,"key"),o.default.factory.createBindingElement(void 0,void 0,"value")]),o.default.factory.createTypeReferenceNode("[string, any]"))],void 0,void 0,o.default.factory.createBlock(u))]),t=o.default.factory.createCallExpression(i.IdentifierFactory.access(e)("filter"),void 0,[o.default.factory.createArrowFunction(void 0,void 0,[i.IdentifierFactory.parameter("str")],void 0,void 0,o.default.factory.createStrictInequality(o.default.factory.createStringLiteral(""),o.default.factory.createIdentifier("str")))]);return o.default.factory.createCallExpression(i.IdentifierFactory.access(t)("join"),void 0,[o.default.factory.createStringLiteral(",")])};if(t.length&&u.push(o.default.factory.createIfStatement(o.default.factory.createCallExpression(i.IdentifierFactory.access(o.default.factory.createArrayLiteralExpression(t.map(function(e){return o.default.factory.createStringLiteral(e)})))("some"),void 0,[o.default.factory.createArrowFunction(void 0,void 0,[i.IdentifierFactory.parameter("regular")],void 0,void 0,o.default.factory.createStrictEquality(o.default.factory.createIdentifier("regular"),o.default.factory.createIdentifier("key")))]),o.default.factory.createReturnStatement(o.default.factory.createStringLiteral("")))),!0==(1===e.length&&1===e[0].key.size()&&"string"===e[0].key.atomics[0]))return u.push(l(e[0])),f();try{for(var s=n(e),d=s.next();!d.done;d=s.next()){var y=d.value,p=o.default.factory.createIfStatement(o.default.factory.createCallExpression(o.default.factory.createIdentifier("RegExp(/".concat((0,c.metadata_to_pattern)(!0)(y.key),"/).test")),void 0,[o.default.factory.createIdentifier("key")]),l(y));u.push(p)}}catch(e){r={error:e}}finally{try{d&&!d.done&&(a=s.return)&&a.call(s)}finally{if(r)throw r.error}}return u.push(o.default.factory.createReturnStatement(o.default.factory.createStringLiteral(""))),f()};var l=function(e){return o.default.factory.createReturnStatement(u.TemplateFactory.generate([o.default.factory.createCallExpression(o.default.factory.createIdentifier("JSON.stringify"),[],[o.default.factory.createIdentifier("key")]),o.default.factory.createStringLiteral(":"),e.expression]))}},1606:function(e,t,r){"use strict";var n=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},a=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.GenericTransformer=void 0;var c=u(r(5423));(n=o||(t.GenericTransformer=o={})).scalar=function(e){return function(t){return function(r){return function(n){return function(o){if(1!==o.arguments.length)throw Error("Error on typia.".concat(e,"(): no input value."));var u=i(o.typeArguments&&o.typeArguments[0]?[r.checker.getTypeFromTypeNode(o.typeArguments[0]),o.typeArguments[0],!0]:[r.checker.getTypeAtLocation(o.arguments[0]),o.arguments[0],!1],3),l=u[0],f=u[1],s=u[2];if(l.isTypeParameter())throw Error("Error on typia.".concat(e,"(): non-specified generic argument."));return c.default.factory.createCallExpression(t(r)(n)(l,s?f.getFullText().trim():a(r.checker)(l)(f)),void 0,[o.arguments[0]])}}}}},n.factory=function(e){return function(t){return function(r){return function(n){return function(a){if(!(null===(o=a.typeArguments)||void 0===o?void 0:o[0]))throw Error("Error on typia.".concat(e,"(): generic argument is not specified."));var o,i=a.typeArguments[0],u=r.checker.getTypeFromTypeNode(i);if(u.isTypeParameter())throw Error("Error on typia.".concat(e,"(): non-specified generic argument."));return t(r)(n)(u,i.getFullText().trim())}}}}},a=function(e){return function(t){return function(r){return e.typeToString(t,r,c.default.TypeFormatFlags.NodeBuilderFlagsMask)}}}},1261:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Writable=void 0,t.Writable=function(e){return e}},3346:function(e,t){"use strict";var r,n,a=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,a,o=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(e){a={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(a)throw a.error}}return i},o=this&&this.__spreadArray||function(e,t,r){if(r||2==arguments.length)for(var n,a=0,o=t.length;a=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};Object.defineProperty(t,"__esModule",{value:!0}),t.PatternUtil=void 0,(r=n||(t.PatternUtil=n={})).fix=function(e){var t=e.indexOf(r.STRING),n=e.lastIndexOf(r.STRING);return[-1===t||o("(")(e.slice(0,t))?"^":"",e,-1===n||o(")")(e.slice(n+r.STRING.length))?"$":""].join("")},r.escape=function(e){return e.replace(/[|\\/{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")},r.NUMBER="[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?",r.BOOLEAN="true|false",r.STRING="(.*)";var o=function(e){return function(t){var r,n;try{for(var o=a(t),i=o.next();!i.done;i=o.next())if(i.value!==e)return!0}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return!1}}},3764:function(e,t,r){"use strict";function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?e.apply(this,a):function(){for(var e=arguments.length,n=Array(e),o=0;o=s.length?s.apply(this,n):function(){for(var r=arguments.length,a=Array(r),o=0;o1&&void 0!==arguments[1]?arguments[1]:{};p.initial(e),p.handler(t);var r={current:e},n=c(h)(r,t),a=c(v)(r),o=c(p.changes)(e),i=c(m)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return p.selector(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(t,["monaco"]);T(function(e){return{config:function e(t,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&t[n]&&Object.assign(r[n],e(t[n],r[n]))}),a(a({},t),r)}(e.config,n),monaco:r}})},init:function(){var e=w(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(T({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),j(k);if(window.monaco&&window.monaco.editor)return F(window.monaco),e.resolve(window.monaco),j(k);x(E,O)(I)}return j(k)},__getMonacoInstance:function(){return w(function(e){return e.monaco})}},M=r(7294),C={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},L={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},N=function({children:e}){return M.createElement("div",{style:L.container},e)},R=(0,M.memo)(function({width:e,height:t,isEditorReady:r,loading:n,_ref:a,className:o,wrapperProps:i}){return M.createElement("section",{style:{...C.wrapper,width:e,height:t},...i},!r&&M.createElement(N,null,n),M.createElement("div",{ref:a,style:{...C.fullWidth,...!r&&C.hide},className:o}))}),D=function(e){(0,M.useEffect)(e,[])},q=function(e,t,r=!0){let n=(0,M.useRef)(!0);(0,M.useEffect)(n.current||!r?()=>{n.current=!1}:e,t)};function U(){}function V(e,t,r,n){return e.editor.getModel(B(e,n))||e.editor.createModel(t,r,n?B(e,n):void 0)}function B(e,t){return e.Uri.parse(t)}(0,M.memo)(function({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:a,originalModelPath:o,modifiedModelPath:i,keepCurrentOriginalModel:u=!1,keepCurrentModifiedModel:c=!1,theme:l="light",loading:f="Loading...",options:s={},height:d="100%",width:y="100%",className:p,wrapperProps:m={},beforeMount:v=U,onMount:h=U}){let[g,_]=(0,M.useState)(!1),[b,x]=(0,M.useState)(!0),S=(0,M.useRef)(null),j=(0,M.useRef)(null),P=(0,M.useRef)(null),w=(0,M.useRef)(h),T=(0,M.useRef)(v),E=(0,M.useRef)(!1);D(()=>{let e=A.init();return e.then(e=>(j.current=e)&&x(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return S.current?(t=S.current?.getModel(),void(u||t?.original?.dispose(),c||t?.modified?.dispose(),S.current?.dispose())):e.cancel()}}),q(()=>{let e=S.current.getModifiedEditor();e.getOption(j.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],g),q(()=>{S.current?.getModel()?.original.setValue(e||"")},[e],g),q(()=>{let{original:e,modified:t}=S.current.getModel();j.current.editor.setModelLanguage(e,n||r||"text"),j.current.editor.setModelLanguage(t,a||r||"text")},[r,n,a],g),q(()=>{j.current?.editor.setTheme(l)},[l],g),q(()=>{S.current?.updateOptions(s)},[s],g);let O=(0,M.useCallback)(()=>{if(!j.current)return;T.current(j.current);let u=V(j.current,e||"",n||r||"text",o||""),c=V(j.current,t||"",a||r||"text",i||"");S.current?.setModel({original:u,modified:c})},[r,t,a,e,n,o,i]),I=(0,M.useCallback)(()=>{!E.current&&P.current&&(S.current=j.current.editor.createDiffEditor(P.current,{automaticLayout:!0,...s}),O(),j.current?.editor.setTheme(l),_(!0),E.current=!0)},[s,l,O]);return(0,M.useEffect)(()=>{g&&w.current(S.current,j.current)},[g]),(0,M.useEffect)(()=>{b||g||I()},[b,g,I]),q(()=>{if(S.current&&j.current){let t=S.current.getOriginalEditor(),a=V(j.current,e||"",n||r||"text",o||"");a!==t.getModel()&&t.setModel(a)}},[o],g),q(()=>{if(S.current&&j.current){let e=S.current.getModifiedEditor(),n=V(j.current,t||"",a||r||"text",i||"");n!==e.getModel()&&e.setModel(n)}},[i],g),M.createElement(R,{width:y,height:d,isEditorReady:g,loading:f,_ref:P,className:p,wrapperProps:m})});var J=function(e){let t=(0,M.useRef)();return(0,M.useEffect)(()=>{t.current=e},[e]),t.current},z=new Map,G=(0,M.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:a,path:o,theme:i="light",line:u,loading:c="Loading...",options:l={},overrideServices:f={},saveViewState:s=!0,keepCurrentModel:d=!1,width:y="100%",height:p="100%",className:m,wrapperProps:v={},beforeMount:h=U,onMount:g=U,onChange:_,onValidate:b=U}){let[x,S]=(0,M.useState)(!1),[j,P]=(0,M.useState)(!0),w=(0,M.useRef)(null),T=(0,M.useRef)(null),E=(0,M.useRef)(null),O=(0,M.useRef)(g),I=(0,M.useRef)(h),F=(0,M.useRef)(),k=(0,M.useRef)(n),C=J(o),L=(0,M.useRef)(!1),N=(0,M.useRef)(!1);D(()=>{let e=A.init();return e.then(e=>(w.current=e)&&P(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>T.current?void(F.current?.dispose(),d?s&&z.set(o,T.current.saveViewState()):T.current.getModel()?.dispose(),T.current.dispose()):e.cancel()}),q(()=>{let i=V(w.current,e||n||"",t||a||"",o||r||"");i!==T.current?.getModel()&&(s&&z.set(C,T.current?.saveViewState()),T.current?.setModel(i),s&&T.current?.restoreViewState(z.get(o)))},[o],x),q(()=>{T.current?.updateOptions(l)},[l],x),q(()=>{T.current&&void 0!==n&&(T.current.getOption(w.current.editor.EditorOption.readOnly)?T.current.setValue(n):n===T.current.getValue()||(N.current=!0,T.current.executeEdits("",[{range:T.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),T.current.pushUndoStop(),N.current=!1))},[n],x),q(()=>{let e=T.current?.getModel();e&&a&&w.current?.editor.setModelLanguage(e,a)},[a],x),q(()=>{void 0!==u&&T.current?.revealLine(u)},[u],x),q(()=>{w.current?.editor.setTheme(i)},[i],x);let B=(0,M.useCallback)(()=>{if(!(!E.current||!w.current)&&!L.current){I.current(w.current);let u=o||r,c=V(w.current,n||e||"",t||a||"",u||"");T.current=w.current?.editor.create(E.current,{model:c,automaticLayout:!0,...l},f),s&&T.current.restoreViewState(z.get(u)),w.current.editor.setTheme(i),S(!0),L.current=!0}},[e,t,r,n,a,o,l,f,s,i]);return(0,M.useEffect)(()=>{x&&O.current(T.current,w.current)},[x]),(0,M.useEffect)(()=>{j||x||B()},[j,x,B]),k.current=n,(0,M.useEffect)(()=>{x&&_&&(F.current?.dispose(),F.current=T.current?.onDidChangeModelContent(e=>{N.current||_(T.current.getValue(),e)}))},[x,_]),(0,M.useEffect)(()=>{if(x){let e=w.current.editor.onDidChangeMarkers(e=>{let t=T.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=w.current.editor.getModelMarkers({resource:t});b?.(e)}});return()=>{e?.dispose()}}return()=>{}},[x,b]),M.createElement(R,{width:y,height:p,isEditorReady:x,loading:c,_ref:E,className:m,wrapperProps:v})})}}]); \ No newline at end of file diff --git a/_next/static/chunks/851-979d583276f1ec45.js b/_next/static/chunks/851-47e68c656a411178.js similarity index 99% rename from _next/static/chunks/851-979d583276f1ec45.js rename to _next/static/chunks/851-47e68c656a411178.js index aa3055c5f1..ed11913482 100644 --- a/_next/static/chunks/851-979d583276f1ec45.js +++ b/_next/static/chunks/851-47e68c656a411178.js @@ -71,13 +71,13 @@ animation-iteration-count: infinite; animation-delay: 200ms; } -`),q.rippleVisible,U,550,({theme:e})=>e.transitions.easing.easeInOut,q.ripplePulsate,({theme:e})=>e.transitions.duration.shorter,q.child,q.childLeaving,X,550,({theme:e})=>e.transitions.easing.easeInOut,q.childPulsate,Y,({theme:e})=>e.transitions.easing.easeInOut),ee=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiTouchRipple"}),{center:n=!1,classes:o={},className:i}=r,a=(0,s.Z)(r,G),[l,p]=u.useState([]),f=u.useRef(0),m=u.useRef(null);u.useEffect(()=>{m.current&&(m.current(),m.current=null)},[l]);let g=u.useRef(!1),y=u.useRef(null),v=u.useRef(null),b=u.useRef(null);u.useEffect(()=>()=>{clearTimeout(y.current)},[]);let x=u.useCallback(e=>{let{pulsate:t,rippleX:r,rippleY:n,rippleSize:i,cb:a}=e;p(e=>[...e,(0,k.jsx)(Q,{classes:{ripple:(0,d.Z)(o.ripple,q.ripple),rippleVisible:(0,d.Z)(o.rippleVisible,q.rippleVisible),ripplePulsate:(0,d.Z)(o.ripplePulsate,q.ripplePulsate),child:(0,d.Z)(o.child,q.child),childLeaving:(0,d.Z)(o.childLeaving,q.childLeaving),childPulsate:(0,d.Z)(o.childPulsate,q.childPulsate)},timeout:550,pulsate:t,rippleX:r,rippleY:n,rippleSize:i},f.current)]),f.current+=1,m.current=a},[o]),Z=u.useCallback((e={},t={},r=()=>{})=>{let o,i,a;let{pulsate:l=!1,center:s=n||t.pulsate,fakeElement:c=!1}=t;if((null==e?void 0:e.type)==="mousedown"&&g.current){g.current=!1;return}(null==e?void 0:e.type)==="touchstart"&&(g.current=!0);let u=c?null:b.current,d=u?u.getBoundingClientRect():{width:0,height:0,left:0,top:0};if(!s&&void 0!==e&&(0!==e.clientX||0!==e.clientY)&&(e.clientX||e.touches)){let{clientX:t,clientY:r}=e.touches&&e.touches.length>0?e.touches[0]:e;o=Math.round(t-d.left),i=Math.round(r-d.top)}else o=Math.round(d.width/2),i=Math.round(d.height/2);if(s)(a=Math.sqrt((2*d.width**2+d.height**2)/3))%2==0&&(a+=1);else{let e=2*Math.max(Math.abs((u?u.clientWidth:0)-o),o)+2,t=2*Math.max(Math.abs((u?u.clientHeight:0)-i),i)+2;a=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===v.current&&(v.current=()=>{x({pulsate:l,rippleX:o,rippleY:i,rippleSize:a,cb:r})},y.current=setTimeout(()=>{v.current&&(v.current(),v.current=null)},80)):x({pulsate:l,rippleX:o,rippleY:i,rippleSize:a,cb:r})},[n,x]),w=u.useCallback(()=>{Z({},{pulsate:!0})},[Z]),$=u.useCallback((e,t)=>{if(clearTimeout(y.current),(null==e?void 0:e.type)==="touchend"&&v.current){v.current(),v.current=null,y.current=setTimeout(()=>{$(e,t)});return}v.current=null,p(e=>e.length>0?e.slice(1):e),m.current=t},[]);return u.useImperativeHandle(t,()=>({pulsate:w,start:Z,stop:$}),[w,Z,$]),(0,k.jsx)(J,(0,c.Z)({className:(0,d.Z)(q.root,o.root,i),ref:b},a,{children:(0,k.jsx)(W,{component:null,exit:!0,children:l})}))});function et(e){return(0,b.Z)("MuiButtonBase",e)}let er=(0,v.Z)("MuiButtonBase",["root","disabled","focusVisible"]),en=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],eo=e=>{let{disabled:t,focusVisible:r,focusVisibleClassName:n,classes:o}=e,i=(0,p.Z)({root:["root",t&&"disabled",r&&"focusVisible"]},et,o);return r&&n&&(i.root+=` ${n}`),i},ei=(0,m.ZP)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${er.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),ea=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiButtonBase"}),{action:n,centerRipple:o=!1,children:i,className:a,component:l="button",disabled:p=!1,disableRipple:f=!1,disableTouchRipple:m=!1,focusRipple:g=!1,LinkComponent:y="a",onBlur:v,onClick:b,onContextMenu:x,onDragLeave:Z,onFocus:w,onFocusVisible:$,onKeyDown:S,onKeyUp:A,onMouseDown:P,onMouseLeave:O,onMouseUp:M,onTouchEnd:E,onTouchMove:T,onTouchStart:j,tabIndex:_=0,TouchRippleProps:I,touchRippleRef:L,type:B}=r,N=(0,s.Z)(r,en),F=u.useRef(null),K=u.useRef(null),W=C(K,L),{isFocusVisibleRef:V,onFocus:D,onBlur:H,ref:q}=z(),[G,U]=u.useState(!1);p&&G&&U(!1),u.useImperativeHandle(n,()=>({focusVisible:()=>{U(!0),F.current.focus()}}),[]);let[X,Y]=u.useState(!1);function J(e,t,r=m){return R(n=>(t&&t(n),!r&&K.current&&K.current[e](n),!0))}u.useEffect(()=>{Y(!0)},[]),u.useEffect(()=>{G&&g&&!f&&X&&K.current.pulsate()},[f,g,G,X]);let Q=J("start",P),et=J("stop",x),er=J("stop",Z),ea=J("stop",M),el=J("stop",e=>{G&&e.preventDefault(),O&&O(e)}),es=J("start",j),ec=J("stop",E),eu=J("stop",T),ed=J("stop",e=>{H(e),!1===V.current&&U(!1),v&&v(e)},!1),ep=R(e=>{F.current||(F.current=e.currentTarget),D(e),!0===V.current&&(U(!0),$&&$(e)),w&&w(e)}),ef=()=>{let e=F.current;return l&&"button"!==l&&!("A"===e.tagName&&e.href)},em=u.useRef(!1),eh=R(e=>{g&&!em.current&&G&&K.current&&" "===e.key&&(em.current=!0,K.current.stop(e,()=>{K.current.start(e)})),e.target===e.currentTarget&&ef()&&" "===e.key&&e.preventDefault(),S&&S(e),e.target===e.currentTarget&&ef()&&"Enter"===e.key&&!p&&(e.preventDefault(),b&&b(e))}),eg=R(e=>{g&&" "===e.key&&K.current&&G&&!e.defaultPrevented&&(em.current=!1,K.current.stop(e,()=>{K.current.pulsate(e)})),A&&A(e),b&&e.target===e.currentTarget&&ef()&&" "===e.key&&!e.defaultPrevented&&b(e)}),ey=l;"button"===ey&&(N.href||N.to)&&(ey=y);let ev={};"button"===ey?(ev.type=void 0===B?"button":B,ev.disabled=p):(N.href||N.to||(ev.role="button"),p&&(ev["aria-disabled"]=p));let eb=C(t,q,F),ex=(0,c.Z)({},r,{centerRipple:o,component:l,disabled:p,disableRipple:f,disableTouchRipple:m,focusRipple:g,tabIndex:_,focusVisible:G}),ek=eo(ex);return(0,k.jsxs)(ei,(0,c.Z)({as:ey,className:(0,d.Z)(ek.root,a),ownerState:ex,onBlur:ed,onClick:b,onContextMenu:et,onFocus:ep,onKeyDown:eh,onKeyUp:eg,onMouseDown:Q,onMouseLeave:el,onMouseUp:ea,onDragLeave:er,onTouchEnd:ec,onTouchMove:eu,onTouchStart:es,ref:eb,tabIndex:p?-1:_,type:B},ev,N,{children:[i,!X||f||p?null:(0,k.jsx)(ee,(0,c.Z)({ref:W,center:o},I))]}))});function el(e){return(0,b.Z)("MuiIconButton",e)}let es=(0,v.Z)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),ec=["edge","children","className","color","disabled","disableFocusRipple","size"],eu=e=>{let{classes:t,disabled:r,color:n,edge:o,size:i}=e,a={root:["root",r&&"disabled","default"!==n&&`color${(0,g.Z)(n)}`,o&&`edge${(0,g.Z)(o)}`,`size${(0,g.Z)(i)}`]};return(0,p.Z)(a,el,t)},ed=(0,m.ZP)(ea,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,"default"!==r.color&&t[`color${(0,g.Z)(r.color)}`],r.edge&&t[`edge${(0,g.Z)(r.edge)}`],t[`size${(0,g.Z)(r.size)}`]]}})(({theme:e,ownerState:t})=>(0,c.Z)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,f.Fq)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12}),({theme:e,ownerState:t})=>{var r;let n=null==(r=(e.vars||e).palette)?void 0:r[t.color];return(0,c.Z)({},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"default"!==t.color&&(0,c.Z)({color:null==n?void 0:n.main},!t.disableRipple&&{"&:hover":(0,c.Z)({},n&&{backgroundColor:e.vars?`rgba(${n.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,f.Fq)(n.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===t.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===t.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${es.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})}),ep=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiIconButton"}),{edge:n=!1,children:o,className:i,color:a="default",disabled:l=!1,disableFocusRipple:u=!1,size:p="medium"}=r,f=(0,s.Z)(r,ec),m=(0,c.Z)({},r,{edge:n,color:a,disabled:l,disableFocusRipple:u,size:p}),g=eu(m);return(0,k.jsx)(ed,(0,c.Z)({className:(0,d.Z)(g.root,i),centerRipple:!0,focusRipple:!u,disabled:l,ref:t,ownerState:m},f,{children:o}))});function ef(e){return(0,b.Z)("MuiSvgIcon",e)}(0,v.Z)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);let em=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],eh=e=>{let{color:t,fontSize:r,classes:n}=e,o={root:["root","inherit"!==t&&`color${(0,g.Z)(t)}`,`fontSize${(0,g.Z)(r)}`]};return(0,p.Z)(o,ef,n)},eg=(0,m.ZP)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,"inherit"!==r.color&&t[`color${(0,g.Z)(r.color)}`],t[`fontSize${(0,g.Z)(r.fontSize)}`]]}})(({theme:e,ownerState:t})=>{var r,n,o,i,a,l,s,c,u,d,p,f,m,h,g,y,v;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:"currentColor",flexShrink:0,transition:null==(r=e.transitions)?void 0:null==(n=r.create)?void 0:n.call(r,"fill",{duration:null==(o=e.transitions)?void 0:null==(i=o.duration)?void 0:i.shorter}),fontSize:({inherit:"inherit",small:(null==(a=e.typography)?void 0:null==(l=a.pxToRem)?void 0:l.call(a,20))||"1.25rem",medium:(null==(s=e.typography)?void 0:null==(c=s.pxToRem)?void 0:c.call(s,24))||"1.5rem",large:(null==(u=e.typography)?void 0:null==(d=u.pxToRem)?void 0:d.call(u,35))||"2.1875rem"})[t.fontSize],color:null!=(p=null==(f=(e.vars||e).palette)?void 0:null==(m=f[t.color])?void 0:m.main)?p:({action:null==(h=(e.vars||e).palette)?void 0:null==(g=h.action)?void 0:g.active,disabled:null==(y=(e.vars||e).palette)?void 0:null==(v=y.action)?void 0:v.disabled,inherit:void 0})[t.color]}}),ey=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiSvgIcon"}),{children:n,className:o,color:i="inherit",component:a="svg",fontSize:l="medium",htmlColor:u,inheritViewBox:p=!1,titleAccess:f,viewBox:m="0 0 24 24"}=r,g=(0,s.Z)(r,em),y=(0,c.Z)({},r,{color:i,component:a,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:p,viewBox:m}),v={};p||(v.viewBox=m);let b=eh(y);return(0,k.jsxs)(eg,(0,c.Z)({as:a,className:(0,d.Z)(b.root,o),focusable:"false",color:u,"aria-hidden":!f||void 0,role:f?"img":void 0,ref:t},v,g,{ownerState:y,children:[n,f?(0,k.jsx)("title",{children:f}):null]}))});function ev(e,t){function r(r,n){return(0,k.jsx)(ey,(0,c.Z)({"data-testid":`${t}Icon`,ref:n},r,{children:e}))}return r.muiName=ey.muiName,u.memo(u.forwardRef(r))}ey.muiName="SvgIcon";var eb=ev((0,k.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),ex=ev((0,k.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),ek=ev((0,k.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),eZ=ev((0,k.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),ew=ev((0,k.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");let e$=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],eS=e=>{let{variant:t,color:r,severity:n,classes:o}=e,i={root:["root",`${t}${(0,g.Z)(r||n)}`,`${t}`],icon:["icon"],message:["message"],action:["action"]};return(0,p.Z)(i,A,o)},eA=(0,m.ZP)(S,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${(0,g.Z)(r.color||r.severity)}`]]}})(({theme:e,ownerState:t})=>{let r="light"===e.palette.mode?f._j:f.$n,n="light"===e.palette.mode?f.$n:f._j,o=t.color||t.severity;return(0,c.Z)({},e.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px"},o&&"standard"===t.variant&&{color:e.vars?e.vars.palette.Alert[`${o}Color`]:r(e.palette[o].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${o}StandardBg`]:n(e.palette[o].light,.9),[`& .${P.icon}`]:e.vars?{color:e.vars.palette.Alert[`${o}IconColor`]}:{color:e.palette[o].main}},o&&"outlined"===t.variant&&{color:e.vars?e.vars.palette.Alert[`${o}Color`]:r(e.palette[o].light,.6),border:`1px solid ${(e.vars||e).palette[o].light}`,[`& .${P.icon}`]:e.vars?{color:e.vars.palette.Alert[`${o}IconColor`]}:{color:e.palette[o].main}},o&&"filled"===t.variant&&(0,c.Z)({fontWeight:e.typography.fontWeightMedium},e.vars?{color:e.vars.palette.Alert[`${o}FilledColor`],backgroundColor:e.vars.palette.Alert[`${o}FilledBg`]}:{backgroundColor:"dark"===e.palette.mode?e.palette[o].dark:e.palette[o].main,color:e.palette.getContrastText(e.palette[o].main)}))}),eP=(0,m.ZP)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),eC=(0,m.ZP)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),eO=(0,m.ZP)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),eR={success:(0,k.jsx)(eb,{fontSize:"inherit"}),warning:(0,k.jsx)(ex,{fontSize:"inherit"}),error:(0,k.jsx)(ek,{fontSize:"inherit"}),info:(0,k.jsx)(eZ,{fontSize:"inherit"})},eM=u.forwardRef(function(e,t){var r,n,o,i,a,l;let u=(0,h.Z)({props:e,name:"MuiAlert"}),{action:p,children:f,className:m,closeText:g="Close",color:y,components:v={},componentsProps:b={},icon:x,iconMapping:Z=eR,onClose:w,role:$="alert",severity:S="success",slotProps:A={},slots:P={},variant:C="standard"}=u,O=(0,s.Z)(u,e$),R=(0,c.Z)({},u,{color:y,severity:S,variant:C}),M=eS(R),E=null!=(r=null!=(n=P.closeButton)?n:v.CloseButton)?r:ep,T=null!=(o=null!=(i=P.closeIcon)?i:v.CloseIcon)?o:ew,j=null!=(a=A.closeButton)?a:b.closeButton,_=null!=(l=A.closeIcon)?l:b.closeIcon;return(0,k.jsxs)(eA,(0,c.Z)({role:$,elevation:0,ownerState:R,className:(0,d.Z)(M.root,m),ref:t},O,{children:[!1!==x?(0,k.jsx)(eP,{ownerState:R,className:M.icon,children:x||Z[S]||eR[S]}):null,(0,k.jsx)(eC,{ownerState:R,className:M.message,children:f}),null!=p?(0,k.jsx)(eO,{ownerState:R,className:M.action,children:p}):null,null==p&&w?(0,k.jsx)(eO,{ownerState:R,className:M.action,children:(0,k.jsx)(E,(0,c.Z)({size:"small","aria-label":g,title:g,color:"inherit",onClick:w},j,{children:(0,k.jsx)(T,(0,c.Z)({fontSize:"small"},_))}))}):null]}))});var eE=eM},3230:function(e,t,r){r.d(t,{Z:function(){return I}});var n=r(7462),o=r(3366),i=r(1387),a=r(9766),l=r(6500),s=r(4920),c=r(6523),u=r(1796),d={black:"#000",white:"#fff"},p={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},f={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},m={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},h={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},g={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},y={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},v={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};let b=["mode","contrastThreshold","tonalOffset"],x={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.white,default:d.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},k={text:{primary:d.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:d.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function Z(e,t,r,n){let o=n.light||n,i=n.dark||1.5*n;e[t]||(e.hasOwnProperty(r)?e[t]=e[r]:"light"===t?e.light=(0,u.$n)(e.main,o):"dark"===t&&(e.dark=(0,u._j)(e.main,i)))}let w=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"],$={textTransform:"uppercase"},S='"Roboto", "Helvetica", "Arial", sans-serif';function A(...e){return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2),${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14),${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`}let P=["none",A(0,2,1,-1,0,1,1,0,0,1,3,0),A(0,3,1,-2,0,2,2,0,0,1,5,0),A(0,3,3,-2,0,3,4,0,0,1,8,0),A(0,2,4,-1,0,4,5,0,0,1,10,0),A(0,3,5,-1,0,5,8,0,0,1,14,0),A(0,3,5,-1,0,6,10,0,0,1,18,0),A(0,4,5,-2,0,7,10,1,0,2,16,1),A(0,5,5,-3,0,8,10,1,0,3,14,2),A(0,5,6,-3,0,9,12,1,0,3,16,2),A(0,6,6,-3,0,10,14,1,0,4,18,3),A(0,6,7,-4,0,11,15,1,0,4,20,3),A(0,7,8,-4,0,12,17,2,0,5,22,4),A(0,7,8,-4,0,13,19,2,0,5,24,4),A(0,7,9,-4,0,14,21,2,0,5,26,4),A(0,8,9,-5,0,15,22,2,0,6,28,5),A(0,8,10,-5,0,16,24,2,0,6,30,5),A(0,8,11,-5,0,17,26,2,0,6,32,5),A(0,9,11,-5,0,18,28,2,0,7,34,6),A(0,9,12,-6,0,19,29,2,0,7,36,6),A(0,10,13,-6,0,20,31,3,0,8,38,7),A(0,10,13,-6,0,21,33,3,0,8,40,7),A(0,10,14,-6,0,22,35,3,0,8,42,7),A(0,11,14,-7,0,23,36,3,0,9,44,8),A(0,11,15,-7,0,24,38,3,0,9,46,8)],C=["duration","easing","delay"],O={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},R={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function M(e){return`${Math.round(e)}ms`}function E(e){if(!e)return 0;let t=e/36;return Math.round((4+15*t**.25+t/5)*10)}var T={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};let j=["breakpoints","mixins","spacing","palette","transitions","typography","shape"],_=function(e={}){var t;let{mixins:r={},palette:A={},transitions:_={},typography:I={}}=e,z=(0,o.Z)(e,j);if(e.vars)throw Error((0,i.Z)(18));let L=function(e){let{mode:t="light",contrastThreshold:r=3,tonalOffset:l=.2}=e,s=(0,o.Z)(e,b),c=e.primary||function(e="light"){return"dark"===e?{main:g[200],light:g[50],dark:g[400]}:{main:g[700],light:g[400],dark:g[800]}}(t),w=e.secondary||function(e="light"){return"dark"===e?{main:f[200],light:f[50],dark:f[400]}:{main:f[500],light:f[300],dark:f[700]}}(t),$=e.error||function(e="light"){return"dark"===e?{main:m[500],light:m[300],dark:m[700]}:{main:m[700],light:m[400],dark:m[800]}}(t),S=e.info||function(e="light"){return"dark"===e?{main:y[400],light:y[300],dark:y[700]}:{main:y[700],light:y[500],dark:y[900]}}(t),A=e.success||function(e="light"){return"dark"===e?{main:v[400],light:v[300],dark:v[700]}:{main:v[800],light:v[500],dark:v[900]}}(t),P=e.warning||function(e="light"){return"dark"===e?{main:h[400],light:h[300],dark:h[700]}:{main:"#ed6c02",light:h[500],dark:h[900]}}(t);function C(e){let t=(0,u.mi)(e,k.text.primary)>=r?k.text.primary:x.text.primary;return t}let O=({color:e,name:t,mainShade:r=500,lightShade:o=300,darkShade:a=700})=>{if(!(e=(0,n.Z)({},e)).main&&e[r]&&(e.main=e[r]),!e.hasOwnProperty("main"))throw Error((0,i.Z)(11,t?` (${t})`:"",r));if("string"!=typeof e.main)throw Error((0,i.Z)(12,t?` (${t})`:"",JSON.stringify(e.main)));return Z(e,"light",o,l),Z(e,"dark",a,l),e.contrastText||(e.contrastText=C(e.main)),e},R=(0,a.Z)((0,n.Z)({common:(0,n.Z)({},d),mode:t,primary:O({color:c,name:"primary"}),secondary:O({color:w,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:O({color:$,name:"error"}),warning:O({color:P,name:"warning"}),info:O({color:S,name:"info"}),success:O({color:A,name:"success"}),grey:p,contrastThreshold:r,getContrastText:C,augmentColor:O,tonalOffset:l},{dark:k,light:x}[t]),s);return R}(A),B=(0,l.Z)(e),N=(0,a.Z)(B,{mixins:(t=B.breakpoints,(0,n.Z)({toolbar:{minHeight:56,[t.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[t.up("sm")]:{minHeight:64}}},r)),palette:L,shadows:P.slice(),typography:function(e,t){let r="function"==typeof t?t(e):t,{fontFamily:i=S,fontSize:l=14,fontWeightLight:s=300,fontWeightRegular:c=400,fontWeightMedium:u=500,fontWeightBold:d=700,htmlFontSize:p=16,allVariants:f,pxToRem:m}=r,h=(0,o.Z)(r,w),g=l/14,y=m||(e=>`${e/p*g}rem`),v=(e,t,r,o,a)=>(0,n.Z)({fontFamily:i,fontWeight:e,fontSize:y(t),lineHeight:r},i===S?{letterSpacing:`${Math.round(1e5*(o/t))/1e5}em`}:{},a,f),b={h1:v(s,96,1.167,-1.5),h2:v(s,60,1.2,-.5),h3:v(c,48,1.167,0),h4:v(c,34,1.235,.25),h5:v(c,24,1.334,0),h6:v(u,20,1.6,.15),subtitle1:v(c,16,1.75,.15),subtitle2:v(u,14,1.57,.1),body1:v(c,16,1.5,.15),body2:v(c,14,1.43,.15),button:v(u,14,1.75,.4,$),caption:v(c,12,1.66,.4),overline:v(c,12,2.66,1,$),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,a.Z)((0,n.Z)({htmlFontSize:p,pxToRem:y,fontFamily:i,fontSize:l,fontWeightLight:s,fontWeightRegular:c,fontWeightMedium:u,fontWeightBold:d},b),h,{clone:!1})}(L,I),transitions:function(e){let t=(0,n.Z)({},O,e.easing),r=(0,n.Z)({},R,e.duration),i=(e=["all"],n={})=>{let{duration:i=r.standard,easing:a=t.easeInOut,delay:l=0}=n;return(0,o.Z)(n,C),(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof i?i:M(i)} ${a} ${"string"==typeof l?l:M(l)}`).join(",")};return(0,n.Z)({getAutoHeightDuration:E,create:i},e,{easing:t,duration:r})}(_),zIndex:(0,n.Z)({},T)});return(N=[].reduce((e,t)=>(0,a.Z)(e,t),N=(0,a.Z)(N,z))).unstable_sxConfig=(0,n.Z)({},s.Z,null==z?void 0:z.unstable_sxConfig),N.unstable_sx=function(e){return(0,c.Z)({sx:e,theme:this})},N}();var I=_},606:function(e,t){t.Z="$$material"},948:function(e,t,r){var n=r(8974),o=r(3230),i=r(606);let a=e=>(0,n.x9)(e)&&"classes"!==e,l=(0,n.ZP)({themeId:i.Z,defaultTheme:o.Z,rootShouldForwardProp:a});t.ZP=l},1657:function(e,t,r){r.d(t,{Z:function(){return a}});var n=r(6986),o=r(3230),i=r(606);function a({props:e,name:t}){return(0,n.Z)({props:e,name:t,defaultTheme:o.Z,themeId:i.Z})}},8216:function(e,t,r){var n=r(8320);t.Z=n.Z},5408:function(e,t,r){r.d(t,{L7:function(){return s},P$:function(){return u},VO:function(){return o},W8:function(){return l},dt:function(){return c},k9:function(){return a}});var n=r(9766);let o={xs:0,sm:600,md:900,lg:1200,xl:1536},i={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${o[e]}px)`};function a(e,t,r){let n=e.theme||{};if(Array.isArray(t)){let e=n.breakpoints||i;return t.reduce((n,o,i)=>(n[e.up(e.keys[i])]=r(t[i]),n),{})}if("object"==typeof t){let e=n.breakpoints||i;return Object.keys(t).reduce((n,i)=>{if(-1!==Object.keys(e.values||o).indexOf(i)){let o=e.up(i);n[o]=r(t[i],i)}else n[i]=t[i];return n},{})}let a=r(t);return a}function l(e={}){var t;let r=null==(t=e.keys)?void 0:t.reduce((t,r)=>{let n=e.up(r);return t[n]={},t},{});return r||{}}function s(e,t){return e.reduce((e,t)=>{let r=e[t],n=!r||0===Object.keys(r).length;return n&&delete e[t],e},t)}function c(e,...t){let r=l(e),o=[r,...t].reduce((e,t)=>(0,n.Z)(e,t),{});return s(Object.keys(r),o)}function u({values:e,breakpoints:t,base:r}){let n;let o=r||function(e,t){if("object"!=typeof e)return{};let r={},n=Object.keys(t);return Array.isArray(e)?n.forEach((t,n)=>{n{null!=e[t]&&(r[t]=!0)}),r}(e,t),i=Object.keys(o);return 0===i.length?e:i.reduce((t,r,o)=>(Array.isArray(e)?(t[r]=null!=e[o]?e[o]:e[n],n=o):"object"==typeof e?(t[r]=null!=e[r]?e[r]:e[n],n=r):t[r]=e,t),{})}},1796:function(e,t,r){r.d(t,{$n:function(){return d},Fq:function(){return c},_j:function(){return u},mi:function(){return s}});var n=r(1387);function o(e,t=0,r=1){return Math.min(Math.max(t,e),r)}function i(e){let t;if(e.type)return e;if("#"===e.charAt(0))return i(function(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,"g"),r=e.match(t);return r&&1===r[0].length&&(r=r.map(e=>e+e)),r?`rgb${4===r.length?"a":""}(${r.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}(e));let r=e.indexOf("("),o=e.substring(0,r);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(o))throw Error((0,n.Z)(9,e));let a=e.substring(r+1,e.length-1);if("color"===o){if(t=(a=a.split(" ")).shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(t))throw Error((0,n.Z)(10,t))}else a=a.split(",");return{type:o,values:a=a.map(e=>parseFloat(e)),colorSpace:t}}function a(e){let{type:t,colorSpace:r}=e,{values:n}=e;return -1!==t.indexOf("rgb")?n=n.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(n[1]=`${n[1]}%`,n[2]=`${n[2]}%`),`${t}(${n=-1!==t.indexOf("color")?`${r} ${n.join(" ")}`:`${n.join(", ")}`})`}function l(e){let t="hsl"===(e=i(e)).type||"hsla"===e.type?i(function(e){e=i(e);let{values:t}=e,r=t[0],n=t[1]/100,o=t[2]/100,l=n*Math.min(o,1-o),s=(e,t=(e+r/30)%12)=>o-l*Math.max(Math.min(t-3,9-t,1),-1),c="rgb",u=[Math.round(255*s(0)),Math.round(255*s(8)),Math.round(255*s(4))];return"hsla"===e.type&&(c+="a",u.push(t[3])),a({type:c,values:u})}(e)).values:e.values;return Number((.2126*(t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)))[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function s(e,t){let r=l(e),n=l(t);return(Math.max(r,n)+.05)/(Math.min(r,n)+.05)}function c(e,t){return e=i(e),t=o(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,a(e)}function u(e,t){if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let r=0;r<3;r+=1)e.values[r]*=1-t;return a(e)}function d(e,t){if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let r=0;r<3;r+=1)e.values[r]+=(255-e.values[r])*t;else if(-1!==e.type.indexOf("color"))for(let r=0;r<3;r+=1)e.values[r]+=(1-e.values[r])*t;return a(e)}},8974:function(e,t,r){r.d(t,{ZP:function(){return T},x9:function(){return R}});var n=r(3366),o=r(7462),i=r(7294),a=r(5042),l=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,a.Z)(function(e){return l.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&91>e.charCodeAt(2)}),c=r(2443),u=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},d=function(e,t,r){u(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do e.insert(t===o?"."+n:"",o,e.sheet,!0),o=o.next;while(void 0!==o)}},p=r(8137),f=r(7278),m=function(e){return"theme"!==e},h=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?s:m},g=function(e,t,r){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},y=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return u(t,r,n),(0,f.L)(function(){return d(t,r,n)}),null},v=(function e(t,r){var n,a,l=t.__emotion_real===t,s=l&&t.__emotion_base||t;void 0!==r&&(n=r.label,a=r.target);var u=g(t,r,l),d=u||h(s),f=!d("as");return function(){var m=arguments,v=l&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==n&&v.push("label:"+n+";"),null==m[0]||void 0===m[0].raw)v.push.apply(v,m);else{v.push(m[0][0]);for(var b=m.length,x=1;x{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))};var x=r(6500),k=r(8320);let Z=["variant"];function w(e){return 0===e.length}function $(e){let{variant:t}=e,r=(0,n.Z)(e,Z),o=t||"";return Object.keys(r).sort().forEach(t=>{"color"===t?o+=w(o)?e[t]:(0,k.Z)(e[t]):o+=`${w(o)?t:(0,k.Z)(t)}${(0,k.Z)(e[t].toString())}`}),o}var S=r(6523);let A=["name","slot","skipVariantsResolver","skipSx","overridesResolver"],P=(e,t)=>t.components&&t.components[e]&&t.components[e].styleOverrides?t.components[e].styleOverrides:null,C=(e,t)=>{let r=[];t&&t.components&&t.components[e]&&t.components[e].variants&&(r=t.components[e].variants);let n={};return r.forEach(e=>{let t=$(e.props);n[t]=e.style}),n},O=(e,t,r,n)=>{var o,i;let{ownerState:a={}}=e,l=[],s=null==r?void 0:null==(o=r.components)?void 0:null==(i=o[n])?void 0:i.variants;return s&&s.forEach(r=>{let n=!0;Object.keys(r.props).forEach(t=>{a[t]!==r.props[t]&&e[t]!==r.props[t]&&(n=!1)}),n&&l.push(t[$(r.props)])}),l};function R(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}let M=(0,x.Z)();function E({defaultTheme:e,theme:t,themeId:r}){return 0===Object.keys(t).length?e:t[r]||t}function T(e={}){let{themeId:t,defaultTheme:r=M,rootShouldForwardProp:i=R,slotShouldForwardProp:a=R}=e,l=e=>(0,S.Z)((0,o.Z)({},e,{theme:E((0,o.Z)({},e,{defaultTheme:r,themeId:t}))}));return l.__mui_systemSx=!0,(e,s={})=>{let c;b(e,e=>e.filter(e=>!(null!=e&&e.__mui_systemSx)));let{name:u,slot:d,skipVariantsResolver:p,skipSx:f,overridesResolver:m}=s,h=(0,n.Z)(s,A),g=void 0!==p?p:d&&"Root"!==d||!1,y=f||!1,x=R;"Root"===d?x=i:d?x=a:"string"==typeof e&&e.charCodeAt(0)>96&&(x=void 0);let k=/** +`),q.rippleVisible,U,550,({theme:e})=>e.transitions.easing.easeInOut,q.ripplePulsate,({theme:e})=>e.transitions.duration.shorter,q.child,q.childLeaving,X,550,({theme:e})=>e.transitions.easing.easeInOut,q.childPulsate,Y,({theme:e})=>e.transitions.easing.easeInOut),ee=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiTouchRipple"}),{center:n=!1,classes:o={},className:i}=r,a=(0,s.Z)(r,G),[l,p]=u.useState([]),f=u.useRef(0),m=u.useRef(null);u.useEffect(()=>{m.current&&(m.current(),m.current=null)},[l]);let g=u.useRef(!1),y=u.useRef(null),v=u.useRef(null),b=u.useRef(null);u.useEffect(()=>()=>{clearTimeout(y.current)},[]);let x=u.useCallback(e=>{let{pulsate:t,rippleX:r,rippleY:n,rippleSize:i,cb:a}=e;p(e=>[...e,(0,k.jsx)(Q,{classes:{ripple:(0,d.Z)(o.ripple,q.ripple),rippleVisible:(0,d.Z)(o.rippleVisible,q.rippleVisible),ripplePulsate:(0,d.Z)(o.ripplePulsate,q.ripplePulsate),child:(0,d.Z)(o.child,q.child),childLeaving:(0,d.Z)(o.childLeaving,q.childLeaving),childPulsate:(0,d.Z)(o.childPulsate,q.childPulsate)},timeout:550,pulsate:t,rippleX:r,rippleY:n,rippleSize:i},f.current)]),f.current+=1,m.current=a},[o]),Z=u.useCallback((e={},t={},r=()=>{})=>{let o,i,a;let{pulsate:l=!1,center:s=n||t.pulsate,fakeElement:c=!1}=t;if((null==e?void 0:e.type)==="mousedown"&&g.current){g.current=!1;return}(null==e?void 0:e.type)==="touchstart"&&(g.current=!0);let u=c?null:b.current,d=u?u.getBoundingClientRect():{width:0,height:0,left:0,top:0};if(!s&&void 0!==e&&(0!==e.clientX||0!==e.clientY)&&(e.clientX||e.touches)){let{clientX:t,clientY:r}=e.touches&&e.touches.length>0?e.touches[0]:e;o=Math.round(t-d.left),i=Math.round(r-d.top)}else o=Math.round(d.width/2),i=Math.round(d.height/2);if(s)(a=Math.sqrt((2*d.width**2+d.height**2)/3))%2==0&&(a+=1);else{let e=2*Math.max(Math.abs((u?u.clientWidth:0)-o),o)+2,t=2*Math.max(Math.abs((u?u.clientHeight:0)-i),i)+2;a=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===v.current&&(v.current=()=>{x({pulsate:l,rippleX:o,rippleY:i,rippleSize:a,cb:r})},y.current=setTimeout(()=>{v.current&&(v.current(),v.current=null)},80)):x({pulsate:l,rippleX:o,rippleY:i,rippleSize:a,cb:r})},[n,x]),w=u.useCallback(()=>{Z({},{pulsate:!0})},[Z]),$=u.useCallback((e,t)=>{if(clearTimeout(y.current),(null==e?void 0:e.type)==="touchend"&&v.current){v.current(),v.current=null,y.current=setTimeout(()=>{$(e,t)});return}v.current=null,p(e=>e.length>0?e.slice(1):e),m.current=t},[]);return u.useImperativeHandle(t,()=>({pulsate:w,start:Z,stop:$}),[w,Z,$]),(0,k.jsx)(J,(0,c.Z)({className:(0,d.Z)(q.root,o.root,i),ref:b},a,{children:(0,k.jsx)(W,{component:null,exit:!0,children:l})}))});function et(e){return(0,b.Z)("MuiButtonBase",e)}let er=(0,v.Z)("MuiButtonBase",["root","disabled","focusVisible"]),en=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],eo=e=>{let{disabled:t,focusVisible:r,focusVisibleClassName:n,classes:o}=e,i=(0,p.Z)({root:["root",t&&"disabled",r&&"focusVisible"]},et,o);return r&&n&&(i.root+=` ${n}`),i},ei=(0,m.ZP)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${er.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),ea=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiButtonBase"}),{action:n,centerRipple:o=!1,children:i,className:a,component:l="button",disabled:p=!1,disableRipple:f=!1,disableTouchRipple:m=!1,focusRipple:g=!1,LinkComponent:y="a",onBlur:v,onClick:b,onContextMenu:x,onDragLeave:Z,onFocus:w,onFocusVisible:$,onKeyDown:S,onKeyUp:A,onMouseDown:P,onMouseLeave:O,onMouseUp:M,onTouchEnd:E,onTouchMove:T,onTouchStart:j,tabIndex:_=0,TouchRippleProps:I,touchRippleRef:L,type:B}=r,N=(0,s.Z)(r,en),F=u.useRef(null),K=u.useRef(null),W=C(K,L),{isFocusVisibleRef:V,onFocus:D,onBlur:H,ref:q}=z(),[G,U]=u.useState(!1);p&&G&&U(!1),u.useImperativeHandle(n,()=>({focusVisible:()=>{U(!0),F.current.focus()}}),[]);let[X,Y]=u.useState(!1);function J(e,t,r=m){return R(n=>(t&&t(n),!r&&K.current&&K.current[e](n),!0))}u.useEffect(()=>{Y(!0)},[]),u.useEffect(()=>{G&&g&&!f&&X&&K.current.pulsate()},[f,g,G,X]);let Q=J("start",P),et=J("stop",x),er=J("stop",Z),ea=J("stop",M),el=J("stop",e=>{G&&e.preventDefault(),O&&O(e)}),es=J("start",j),ec=J("stop",E),eu=J("stop",T),ed=J("stop",e=>{H(e),!1===V.current&&U(!1),v&&v(e)},!1),ep=R(e=>{F.current||(F.current=e.currentTarget),D(e),!0===V.current&&(U(!0),$&&$(e)),w&&w(e)}),ef=()=>{let e=F.current;return l&&"button"!==l&&!("A"===e.tagName&&e.href)},em=u.useRef(!1),eh=R(e=>{g&&!em.current&&G&&K.current&&" "===e.key&&(em.current=!0,K.current.stop(e,()=>{K.current.start(e)})),e.target===e.currentTarget&&ef()&&" "===e.key&&e.preventDefault(),S&&S(e),e.target===e.currentTarget&&ef()&&"Enter"===e.key&&!p&&(e.preventDefault(),b&&b(e))}),eg=R(e=>{g&&" "===e.key&&K.current&&G&&!e.defaultPrevented&&(em.current=!1,K.current.stop(e,()=>{K.current.pulsate(e)})),A&&A(e),b&&e.target===e.currentTarget&&ef()&&" "===e.key&&!e.defaultPrevented&&b(e)}),ey=l;"button"===ey&&(N.href||N.to)&&(ey=y);let ev={};"button"===ey?(ev.type=void 0===B?"button":B,ev.disabled=p):(N.href||N.to||(ev.role="button"),p&&(ev["aria-disabled"]=p));let eb=C(t,q,F),ex=(0,c.Z)({},r,{centerRipple:o,component:l,disabled:p,disableRipple:f,disableTouchRipple:m,focusRipple:g,tabIndex:_,focusVisible:G}),ek=eo(ex);return(0,k.jsxs)(ei,(0,c.Z)({as:ey,className:(0,d.Z)(ek.root,a),ownerState:ex,onBlur:ed,onClick:b,onContextMenu:et,onFocus:ep,onKeyDown:eh,onKeyUp:eg,onMouseDown:Q,onMouseLeave:el,onMouseUp:ea,onDragLeave:er,onTouchEnd:ec,onTouchMove:eu,onTouchStart:es,ref:eb,tabIndex:p?-1:_,type:B},ev,N,{children:[i,!X||f||p?null:(0,k.jsx)(ee,(0,c.Z)({ref:W,center:o},I))]}))});function el(e){return(0,b.Z)("MuiIconButton",e)}let es=(0,v.Z)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),ec=["edge","children","className","color","disabled","disableFocusRipple","size"],eu=e=>{let{classes:t,disabled:r,color:n,edge:o,size:i}=e,a={root:["root",r&&"disabled","default"!==n&&`color${(0,g.Z)(n)}`,o&&`edge${(0,g.Z)(o)}`,`size${(0,g.Z)(i)}`]};return(0,p.Z)(a,el,t)},ed=(0,m.ZP)(ea,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,"default"!==r.color&&t[`color${(0,g.Z)(r.color)}`],r.edge&&t[`edge${(0,g.Z)(r.edge)}`],t[`size${(0,g.Z)(r.size)}`]]}})(({theme:e,ownerState:t})=>(0,c.Z)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,f.Fq)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12}),({theme:e,ownerState:t})=>{var r;let n=null==(r=(e.vars||e).palette)?void 0:r[t.color];return(0,c.Z)({},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"default"!==t.color&&(0,c.Z)({color:null==n?void 0:n.main},!t.disableRipple&&{"&:hover":(0,c.Z)({},n&&{backgroundColor:e.vars?`rgba(${n.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,f.Fq)(n.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===t.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===t.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${es.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})}),ep=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiIconButton"}),{edge:n=!1,children:o,className:i,color:a="default",disabled:l=!1,disableFocusRipple:u=!1,size:p="medium"}=r,f=(0,s.Z)(r,ec),m=(0,c.Z)({},r,{edge:n,color:a,disabled:l,disableFocusRipple:u,size:p}),g=eu(m);return(0,k.jsx)(ed,(0,c.Z)({className:(0,d.Z)(g.root,i),centerRipple:!0,focusRipple:!u,disabled:l,ref:t,ownerState:m},f,{children:o}))});function ef(e){return(0,b.Z)("MuiSvgIcon",e)}(0,v.Z)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);let em=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],eh=e=>{let{color:t,fontSize:r,classes:n}=e,o={root:["root","inherit"!==t&&`color${(0,g.Z)(t)}`,`fontSize${(0,g.Z)(r)}`]};return(0,p.Z)(o,ef,n)},eg=(0,m.ZP)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,"inherit"!==r.color&&t[`color${(0,g.Z)(r.color)}`],t[`fontSize${(0,g.Z)(r.fontSize)}`]]}})(({theme:e,ownerState:t})=>{var r,n,o,i,a,l,s,c,u,d,p,f,m,h,g,y,v;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:"currentColor",flexShrink:0,transition:null==(r=e.transitions)?void 0:null==(n=r.create)?void 0:n.call(r,"fill",{duration:null==(o=e.transitions)?void 0:null==(i=o.duration)?void 0:i.shorter}),fontSize:({inherit:"inherit",small:(null==(a=e.typography)?void 0:null==(l=a.pxToRem)?void 0:l.call(a,20))||"1.25rem",medium:(null==(s=e.typography)?void 0:null==(c=s.pxToRem)?void 0:c.call(s,24))||"1.5rem",large:(null==(u=e.typography)?void 0:null==(d=u.pxToRem)?void 0:d.call(u,35))||"2.1875rem"})[t.fontSize],color:null!=(p=null==(f=(e.vars||e).palette)?void 0:null==(m=f[t.color])?void 0:m.main)?p:({action:null==(h=(e.vars||e).palette)?void 0:null==(g=h.action)?void 0:g.active,disabled:null==(y=(e.vars||e).palette)?void 0:null==(v=y.action)?void 0:v.disabled,inherit:void 0})[t.color]}}),ey=u.forwardRef(function(e,t){let r=(0,h.Z)({props:e,name:"MuiSvgIcon"}),{children:n,className:o,color:i="inherit",component:a="svg",fontSize:l="medium",htmlColor:u,inheritViewBox:p=!1,titleAccess:f,viewBox:m="0 0 24 24"}=r,g=(0,s.Z)(r,em),y=(0,c.Z)({},r,{color:i,component:a,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:p,viewBox:m}),v={};p||(v.viewBox=m);let b=eh(y);return(0,k.jsxs)(eg,(0,c.Z)({as:a,className:(0,d.Z)(b.root,o),focusable:"false",color:u,"aria-hidden":!f||void 0,role:f?"img":void 0,ref:t},v,g,{ownerState:y,children:[n,f?(0,k.jsx)("title",{children:f}):null]}))});function ev(e,t){function r(r,n){return(0,k.jsx)(ey,(0,c.Z)({"data-testid":`${t}Icon`,ref:n},r,{children:e}))}return r.muiName=ey.muiName,u.memo(u.forwardRef(r))}ey.muiName="SvgIcon";var eb=ev((0,k.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),ex=ev((0,k.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),ek=ev((0,k.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),eZ=ev((0,k.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),ew=ev((0,k.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close");let e$=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],eS=e=>{let{variant:t,color:r,severity:n,classes:o}=e,i={root:["root",`${t}${(0,g.Z)(r||n)}`,`${t}`],icon:["icon"],message:["message"],action:["action"]};return(0,p.Z)(i,A,o)},eA=(0,m.ZP)(S,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${(0,g.Z)(r.color||r.severity)}`]]}})(({theme:e,ownerState:t})=>{let r="light"===e.palette.mode?f._j:f.$n,n="light"===e.palette.mode?f.$n:f._j,o=t.color||t.severity;return(0,c.Z)({},e.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px"},o&&"standard"===t.variant&&{color:e.vars?e.vars.palette.Alert[`${o}Color`]:r(e.palette[o].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${o}StandardBg`]:n(e.palette[o].light,.9),[`& .${P.icon}`]:e.vars?{color:e.vars.palette.Alert[`${o}IconColor`]}:{color:e.palette[o].main}},o&&"outlined"===t.variant&&{color:e.vars?e.vars.palette.Alert[`${o}Color`]:r(e.palette[o].light,.6),border:`1px solid ${(e.vars||e).palette[o].light}`,[`& .${P.icon}`]:e.vars?{color:e.vars.palette.Alert[`${o}IconColor`]}:{color:e.palette[o].main}},o&&"filled"===t.variant&&(0,c.Z)({fontWeight:e.typography.fontWeightMedium},e.vars?{color:e.vars.palette.Alert[`${o}FilledColor`],backgroundColor:e.vars.palette.Alert[`${o}FilledBg`]}:{backgroundColor:"dark"===e.palette.mode?e.palette[o].dark:e.palette[o].main,color:e.palette.getContrastText(e.palette[o].main)}))}),eP=(0,m.ZP)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),eC=(0,m.ZP)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),eO=(0,m.ZP)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),eR={success:(0,k.jsx)(eb,{fontSize:"inherit"}),warning:(0,k.jsx)(ex,{fontSize:"inherit"}),error:(0,k.jsx)(ek,{fontSize:"inherit"}),info:(0,k.jsx)(eZ,{fontSize:"inherit"})},eM=u.forwardRef(function(e,t){var r,n,o,i,a,l;let u=(0,h.Z)({props:e,name:"MuiAlert"}),{action:p,children:f,className:m,closeText:g="Close",color:y,components:v={},componentsProps:b={},icon:x,iconMapping:Z=eR,onClose:w,role:$="alert",severity:S="success",slotProps:A={},slots:P={},variant:C="standard"}=u,O=(0,s.Z)(u,e$),R=(0,c.Z)({},u,{color:y,severity:S,variant:C}),M=eS(R),E=null!=(r=null!=(n=P.closeButton)?n:v.CloseButton)?r:ep,T=null!=(o=null!=(i=P.closeIcon)?i:v.CloseIcon)?o:ew,j=null!=(a=A.closeButton)?a:b.closeButton,_=null!=(l=A.closeIcon)?l:b.closeIcon;return(0,k.jsxs)(eA,(0,c.Z)({role:$,elevation:0,ownerState:R,className:(0,d.Z)(M.root,m),ref:t},O,{children:[!1!==x?(0,k.jsx)(eP,{ownerState:R,className:M.icon,children:x||Z[S]||eR[S]}):null,(0,k.jsx)(eC,{ownerState:R,className:M.message,children:f}),null!=p?(0,k.jsx)(eO,{ownerState:R,className:M.action,children:p}):null,null==p&&w?(0,k.jsx)(eO,{ownerState:R,className:M.action,children:(0,k.jsx)(E,(0,c.Z)({size:"small","aria-label":g,title:g,color:"inherit",onClick:w},j,{children:(0,k.jsx)(T,(0,c.Z)({fontSize:"small"},_))}))}):null]}))});var eE=eM},3230:function(e,t,r){r.d(t,{Z:function(){return I}});var n=r(7462),o=r(3366),i=r(6939),a=r(9766),l=r(6500),s=r(9043),c=r(6523),u=r(1796),d={black:"#000",white:"#fff"},p={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},f={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},m={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},h={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},g={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},y={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},v={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};let b=["mode","contrastThreshold","tonalOffset"],x={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.white,default:d.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},k={text:{primary:d.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:d.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function Z(e,t,r,n){let o=n.light||n,i=n.dark||1.5*n;e[t]||(e.hasOwnProperty(r)?e[t]=e[r]:"light"===t?e.light=(0,u.$n)(e.main,o):"dark"===t&&(e.dark=(0,u._j)(e.main,i)))}let w=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"],$={textTransform:"uppercase"},S='"Roboto", "Helvetica", "Arial", sans-serif';function A(...e){return`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2),${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14),${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`}let P=["none",A(0,2,1,-1,0,1,1,0,0,1,3,0),A(0,3,1,-2,0,2,2,0,0,1,5,0),A(0,3,3,-2,0,3,4,0,0,1,8,0),A(0,2,4,-1,0,4,5,0,0,1,10,0),A(0,3,5,-1,0,5,8,0,0,1,14,0),A(0,3,5,-1,0,6,10,0,0,1,18,0),A(0,4,5,-2,0,7,10,1,0,2,16,1),A(0,5,5,-3,0,8,10,1,0,3,14,2),A(0,5,6,-3,0,9,12,1,0,3,16,2),A(0,6,6,-3,0,10,14,1,0,4,18,3),A(0,6,7,-4,0,11,15,1,0,4,20,3),A(0,7,8,-4,0,12,17,2,0,5,22,4),A(0,7,8,-4,0,13,19,2,0,5,24,4),A(0,7,9,-4,0,14,21,2,0,5,26,4),A(0,8,9,-5,0,15,22,2,0,6,28,5),A(0,8,10,-5,0,16,24,2,0,6,30,5),A(0,8,11,-5,0,17,26,2,0,6,32,5),A(0,9,11,-5,0,18,28,2,0,7,34,6),A(0,9,12,-6,0,19,29,2,0,7,36,6),A(0,10,13,-6,0,20,31,3,0,8,38,7),A(0,10,13,-6,0,21,33,3,0,8,40,7),A(0,10,14,-6,0,22,35,3,0,8,42,7),A(0,11,14,-7,0,23,36,3,0,9,44,8),A(0,11,15,-7,0,24,38,3,0,9,46,8)],C=["duration","easing","delay"],O={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},R={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function M(e){return`${Math.round(e)}ms`}function E(e){if(!e)return 0;let t=e/36;return Math.round((4+15*t**.25+t/5)*10)}var T={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};let j=["breakpoints","mixins","spacing","palette","transitions","typography","shape"],_=function(e={}){var t;let{mixins:r={},palette:A={},transitions:_={},typography:I={}}=e,z=(0,o.Z)(e,j);if(e.vars)throw Error((0,i.Z)(18));let L=function(e){let{mode:t="light",contrastThreshold:r=3,tonalOffset:l=.2}=e,s=(0,o.Z)(e,b),c=e.primary||function(e="light"){return"dark"===e?{main:g[200],light:g[50],dark:g[400]}:{main:g[700],light:g[400],dark:g[800]}}(t),w=e.secondary||function(e="light"){return"dark"===e?{main:f[200],light:f[50],dark:f[400]}:{main:f[500],light:f[300],dark:f[700]}}(t),$=e.error||function(e="light"){return"dark"===e?{main:m[500],light:m[300],dark:m[700]}:{main:m[700],light:m[400],dark:m[800]}}(t),S=e.info||function(e="light"){return"dark"===e?{main:y[400],light:y[300],dark:y[700]}:{main:y[700],light:y[500],dark:y[900]}}(t),A=e.success||function(e="light"){return"dark"===e?{main:v[400],light:v[300],dark:v[700]}:{main:v[800],light:v[500],dark:v[900]}}(t),P=e.warning||function(e="light"){return"dark"===e?{main:h[400],light:h[300],dark:h[700]}:{main:"#ed6c02",light:h[500],dark:h[900]}}(t);function C(e){let t=(0,u.mi)(e,k.text.primary)>=r?k.text.primary:x.text.primary;return t}let O=({color:e,name:t,mainShade:r=500,lightShade:o=300,darkShade:a=700})=>{if(!(e=(0,n.Z)({},e)).main&&e[r]&&(e.main=e[r]),!e.hasOwnProperty("main"))throw Error((0,i.Z)(11,t?` (${t})`:"",r));if("string"!=typeof e.main)throw Error((0,i.Z)(12,t?` (${t})`:"",JSON.stringify(e.main)));return Z(e,"light",o,l),Z(e,"dark",a,l),e.contrastText||(e.contrastText=C(e.main)),e},R=(0,a.Z)((0,n.Z)({common:(0,n.Z)({},d),mode:t,primary:O({color:c,name:"primary"}),secondary:O({color:w,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:O({color:$,name:"error"}),warning:O({color:P,name:"warning"}),info:O({color:S,name:"info"}),success:O({color:A,name:"success"}),grey:p,contrastThreshold:r,getContrastText:C,augmentColor:O,tonalOffset:l},{dark:k,light:x}[t]),s);return R}(A),B=(0,l.Z)(e),N=(0,a.Z)(B,{mixins:(t=B.breakpoints,(0,n.Z)({toolbar:{minHeight:56,[t.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[t.up("sm")]:{minHeight:64}}},r)),palette:L,shadows:P.slice(),typography:function(e,t){let r="function"==typeof t?t(e):t,{fontFamily:i=S,fontSize:l=14,fontWeightLight:s=300,fontWeightRegular:c=400,fontWeightMedium:u=500,fontWeightBold:d=700,htmlFontSize:p=16,allVariants:f,pxToRem:m}=r,h=(0,o.Z)(r,w),g=l/14,y=m||(e=>`${e/p*g}rem`),v=(e,t,r,o,a)=>(0,n.Z)({fontFamily:i,fontWeight:e,fontSize:y(t),lineHeight:r},i===S?{letterSpacing:`${Math.round(1e5*(o/t))/1e5}em`}:{},a,f),b={h1:v(s,96,1.167,-1.5),h2:v(s,60,1.2,-.5),h3:v(c,48,1.167,0),h4:v(c,34,1.235,.25),h5:v(c,24,1.334,0),h6:v(u,20,1.6,.15),subtitle1:v(c,16,1.75,.15),subtitle2:v(u,14,1.57,.1),body1:v(c,16,1.5,.15),body2:v(c,14,1.43,.15),button:v(u,14,1.75,.4,$),caption:v(c,12,1.66,.4),overline:v(c,12,2.66,1,$),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,a.Z)((0,n.Z)({htmlFontSize:p,pxToRem:y,fontFamily:i,fontSize:l,fontWeightLight:s,fontWeightRegular:c,fontWeightMedium:u,fontWeightBold:d},b),h,{clone:!1})}(L,I),transitions:function(e){let t=(0,n.Z)({},O,e.easing),r=(0,n.Z)({},R,e.duration),i=(e=["all"],n={})=>{let{duration:i=r.standard,easing:a=t.easeInOut,delay:l=0}=n;return(0,o.Z)(n,C),(Array.isArray(e)?e:[e]).map(e=>`${e} ${"string"==typeof i?i:M(i)} ${a} ${"string"==typeof l?l:M(l)}`).join(",")};return(0,n.Z)({getAutoHeightDuration:E,create:i},e,{easing:t,duration:r})}(_),zIndex:(0,n.Z)({},T)});return(N=[].reduce((e,t)=>(0,a.Z)(e,t),N=(0,a.Z)(N,z))).unstable_sxConfig=(0,n.Z)({},s.Z,null==z?void 0:z.unstable_sxConfig),N.unstable_sx=function(e){return(0,c.Z)({sx:e,theme:this})},N}();var I=_},606:function(e,t){t.Z="$$material"},948:function(e,t,r){var n=r(8974),o=r(3230),i=r(606);let a=e=>(0,n.x9)(e)&&"classes"!==e,l=(0,n.ZP)({themeId:i.Z,defaultTheme:o.Z,rootShouldForwardProp:a});t.ZP=l},1657:function(e,t,r){r.d(t,{Z:function(){return a}});var n=r(6986),o=r(3230),i=r(606);function a({props:e,name:t}){return(0,n.Z)({props:e,name:t,defaultTheme:o.Z,themeId:i.Z})}},8216:function(e,t,r){var n=r(8320);t.Z=n.Z},5408:function(e,t,r){r.d(t,{L7:function(){return s},P$:function(){return u},VO:function(){return o},W8:function(){return l},dt:function(){return c},k9:function(){return a}});var n=r(9766);let o={xs:0,sm:600,md:900,lg:1200,xl:1536},i={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${o[e]}px)`};function a(e,t,r){let n=e.theme||{};if(Array.isArray(t)){let e=n.breakpoints||i;return t.reduce((n,o,i)=>(n[e.up(e.keys[i])]=r(t[i]),n),{})}if("object"==typeof t){let e=n.breakpoints||i;return Object.keys(t).reduce((n,i)=>{if(-1!==Object.keys(e.values||o).indexOf(i)){let o=e.up(i);n[o]=r(t[i],i)}else n[i]=t[i];return n},{})}let a=r(t);return a}function l(e={}){var t;let r=null==(t=e.keys)?void 0:t.reduce((t,r)=>{let n=e.up(r);return t[n]={},t},{});return r||{}}function s(e,t){return e.reduce((e,t)=>{let r=e[t],n=!r||0===Object.keys(r).length;return n&&delete e[t],e},t)}function c(e,...t){let r=l(e),o=[r,...t].reduce((e,t)=>(0,n.Z)(e,t),{});return s(Object.keys(r),o)}function u({values:e,breakpoints:t,base:r}){let n;let o=r||function(e,t){if("object"!=typeof e)return{};let r={},n=Object.keys(t);return Array.isArray(e)?n.forEach((t,n)=>{n{null!=e[t]&&(r[t]=!0)}),r}(e,t),i=Object.keys(o);return 0===i.length?e:i.reduce((t,r,o)=>(Array.isArray(e)?(t[r]=null!=e[o]?e[o]:e[n],n=o):"object"==typeof e?(t[r]=null!=e[r]?e[r]:e[n],n=r):t[r]=e,t),{})}},1796:function(e,t,r){r.d(t,{$n:function(){return d},Fq:function(){return c},_j:function(){return u},mi:function(){return s}});var n=r(6939);function o(e,t=0,r=1){return Math.min(Math.max(t,e),r)}function i(e){let t;if(e.type)return e;if("#"===e.charAt(0))return i(function(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,"g"),r=e.match(t);return r&&1===r[0].length&&(r=r.map(e=>e+e)),r?`rgb${4===r.length?"a":""}(${r.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}(e));let r=e.indexOf("("),o=e.substring(0,r);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(o))throw Error((0,n.Z)(9,e));let a=e.substring(r+1,e.length-1);if("color"===o){if(t=(a=a.split(" ")).shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(t))throw Error((0,n.Z)(10,t))}else a=a.split(",");return{type:o,values:a=a.map(e=>parseFloat(e)),colorSpace:t}}function a(e){let{type:t,colorSpace:r}=e,{values:n}=e;return -1!==t.indexOf("rgb")?n=n.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(n[1]=`${n[1]}%`,n[2]=`${n[2]}%`),`${t}(${n=-1!==t.indexOf("color")?`${r} ${n.join(" ")}`:`${n.join(", ")}`})`}function l(e){let t="hsl"===(e=i(e)).type||"hsla"===e.type?i(function(e){e=i(e);let{values:t}=e,r=t[0],n=t[1]/100,o=t[2]/100,l=n*Math.min(o,1-o),s=(e,t=(e+r/30)%12)=>o-l*Math.max(Math.min(t-3,9-t,1),-1),c="rgb",u=[Math.round(255*s(0)),Math.round(255*s(8)),Math.round(255*s(4))];return"hsla"===e.type&&(c+="a",u.push(t[3])),a({type:c,values:u})}(e)).values:e.values;return Number((.2126*(t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)))[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function s(e,t){let r=l(e),n=l(t);return(Math.max(r,n)+.05)/(Math.min(r,n)+.05)}function c(e,t){return e=i(e),t=o(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,a(e)}function u(e,t){if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let r=0;r<3;r+=1)e.values[r]*=1-t;return a(e)}function d(e,t){if(e=i(e),t=o(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let r=0;r<3;r+=1)e.values[r]+=(255-e.values[r])*t;else if(-1!==e.type.indexOf("color"))for(let r=0;r<3;r+=1)e.values[r]+=(1-e.values[r])*t;return a(e)}},8974:function(e,t,r){r.d(t,{ZP:function(){return T},x9:function(){return R}});var n=r(3366),o=r(7462),i=r(7294),a=r(5042),l=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,a.Z)(function(e){return l.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&91>e.charCodeAt(2)}),c=r(2443),u=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},d=function(e,t,r){u(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do e.insert(t===o?"."+n:"",o,e.sheet,!0),o=o.next;while(void 0!==o)}},p=r(8137),f=r(7278),m=function(e){return"theme"!==e},h=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?s:m},g=function(e,t,r){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},y=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return u(t,r,n),(0,f.L)(function(){return d(t,r,n)}),null},v=(function e(t,r){var n,a,l=t.__emotion_real===t,s=l&&t.__emotion_base||t;void 0!==r&&(n=r.label,a=r.target);var u=g(t,r,l),d=u||h(s),f=!d("as");return function(){var m=arguments,v=l&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==n&&v.push("label:"+n+";"),null==m[0]||void 0===m[0].raw)v.push.apply(v,m);else{v.push(m[0][0]);for(var b=m.length,x=1;x{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))};var x=r(6500),k=r(8320);let Z=["variant"];function w(e){return 0===e.length}function $(e){let{variant:t}=e,r=(0,n.Z)(e,Z),o=t||"";return Object.keys(r).sort().forEach(t=>{"color"===t?o+=w(o)?e[t]:(0,k.Z)(e[t]):o+=`${w(o)?t:(0,k.Z)(t)}${(0,k.Z)(e[t].toString())}`}),o}var S=r(6523);let A=["name","slot","skipVariantsResolver","skipSx","overridesResolver"],P=(e,t)=>t.components&&t.components[e]&&t.components[e].styleOverrides?t.components[e].styleOverrides:null,C=(e,t)=>{let r=[];t&&t.components&&t.components[e]&&t.components[e].variants&&(r=t.components[e].variants);let n={};return r.forEach(e=>{let t=$(e.props);n[t]=e.style}),n},O=(e,t,r,n)=>{var o,i;let{ownerState:a={}}=e,l=[],s=null==r?void 0:null==(o=r.components)?void 0:null==(i=o[n])?void 0:i.variants;return s&&s.forEach(r=>{let n=!0;Object.keys(r.props).forEach(t=>{a[t]!==r.props[t]&&e[t]!==r.props[t]&&(n=!1)}),n&&l.push(t[$(r.props)])}),l};function R(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}let M=(0,x.Z)();function E({defaultTheme:e,theme:t,themeId:r}){return 0===Object.keys(t).length?e:t[r]||t}function T(e={}){let{themeId:t,defaultTheme:r=M,rootShouldForwardProp:i=R,slotShouldForwardProp:a=R}=e,l=e=>(0,S.Z)((0,o.Z)({},e,{theme:E((0,o.Z)({},e,{defaultTheme:r,themeId:t}))}));return l.__mui_systemSx=!0,(e,s={})=>{let c;b(e,e=>e.filter(e=>!(null!=e&&e.__mui_systemSx)));let{name:u,slot:d,skipVariantsResolver:p,skipSx:f,overridesResolver:m}=s,h=(0,n.Z)(s,A),g=void 0!==p?p:d&&"Root"!==d||!1,y=f||!1,x=R;"Root"===d?x=i:d?x=a:"string"==typeof e&&e.charCodeAt(0)>96&&(x=void 0);let k=/** * @mui/styled-engine v5.12.0 * * @license MIT * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */function(e,t){let r=v(e,t);return r}(e,(0,o.Z)({shouldForwardProp:x,label:c},h)),Z=(n,...i)=>{let a=i?i.map(e=>"function"==typeof e&&e.__emotion_real!==e?n=>e((0,o.Z)({},n,{theme:E((0,o.Z)({},n,{defaultTheme:r,themeId:t}))})):e):[],s=n;u&&m&&a.push(e=>{let n=E((0,o.Z)({},e,{defaultTheme:r,themeId:t})),i=P(u,n);if(i){let t={};return Object.entries(i).forEach(([r,i])=>{t[r]="function"==typeof i?i((0,o.Z)({},e,{theme:n})):i}),m(e,t)}return null}),u&&!g&&a.push(e=>{let n=E((0,o.Z)({},e,{defaultTheme:r,themeId:t}));return O(e,C(u,n),n,u)}),y||a.push(l);let c=a.length-i.length;if(Array.isArray(n)&&c>0){let e=Array(c).fill("");(s=[...n,...e]).raw=[...n.raw,...e]}else"function"==typeof n&&n.__emotion_real!==n&&(s=e=>n((0,o.Z)({},e,{theme:E((0,o.Z)({},e,{defaultTheme:r,themeId:t}))})));let d=k(s,...a);return e.muiName&&(d.muiName=e.muiName),d};return k.withConfig&&(Z.withConfig=k.withConfig),Z}}},6500:function(e,t,r){r.d(t,{Z:function(){return f}});var n=r(7462),o=r(3366),i=r(9766);let a=["values","unit","step"],l=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>(0,n.Z)({},e,{[t.key]:t.val}),{})};var s={borderRadius:4},c=r(8700),u=r(6523),d=r(4920);let p=["breakpoints","palette","spacing","shape"];var f=function(e={},...t){let{breakpoints:r={},palette:f={},spacing:m,shape:h={}}=e,g=(0,o.Z)(e,p),y=function(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:r="px",step:i=5}=e,s=(0,o.Z)(e,a),c=l(t),u=Object.keys(c);function d(e){let n="number"==typeof t[e]?t[e]:e;return`@media (min-width:${n}${r})`}function p(e){let n="number"==typeof t[e]?t[e]:e;return`@media (max-width:${n-i/100}${r})`}function f(e,n){let o=u.indexOf(n);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${r}) and (max-width:${(-1!==o&&"number"==typeof t[u[o]]?t[u[o]]:n)-i/100}${r})`}return(0,n.Z)({keys:u,values:c,up:d,down:p,between:f,only:function(e){return u.indexOf(e)+1{let r=0===e.length?[1]:e;return r.map(e=>{let r=t(e);return"number"==typeof r?`${r}px`:r}).join(" ")};return r.mui=!0,r}(m),b=(0,i.Z)({breakpoints:y,direction:"ltr",components:{},palette:(0,n.Z)({mode:"light"},f),spacing:v,shape:(0,n.Z)({},s,h)},g);return(b=t.reduce((e,t)=>(0,i.Z)(e,t),b)).unstable_sxConfig=(0,n.Z)({},d.Z,null==g?void 0:g.unstable_sxConfig),b.unstable_sx=function(e){return(0,u.Z)({sx:e,theme:this})},b}},7730:function(e,t,r){var n=r(9766);t.Z=function(e,t){return t?(0,n.Z)(e,t,{clone:!1}):e}},8700:function(e,t,r){r.d(t,{hB:function(){return m},eI:function(){return f},NA:function(){return h},e6:function(){return y},o3:function(){return v}});var n=r(5408),o=r(4844),i=r(7730);let a={m:"margin",p:"padding"},l={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},s={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},c=function(e){let t={};return r=>(void 0===t[r]&&(t[r]=e(r)),t[r])}(e=>{if(e.length>2){if(!s[e])return[e];e=s[e]}let[t,r]=e.split(""),n=a[t],o=l[r]||"";return Array.isArray(o)?o.map(e=>n+e):[n+o]}),u=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[...u,...d];function f(e,t,r,n){var i;let a=null!=(i=(0,o.DW)(e,t,!1))?i:r;return"number"==typeof a?e=>"string"==typeof e?e:a*e:Array.isArray(a)?e=>"string"==typeof e?e:a[e]:"function"==typeof a?a:()=>void 0}function m(e){return f(e,"spacing",8,"spacing")}function h(e,t){if("string"==typeof t||null==t)return t;let r=e(Math.abs(t));return t>=0?r:"number"==typeof r?-r:`-${r}`}function g(e,t){let r=m(e.theme);return Object.keys(e).map(o=>(function(e,t,r,o){if(-1===t.indexOf(r))return null;let i=c(r),a=e=>i.reduce((t,r)=>(t[r]=h(o,e),t),{}),l=e[r];return(0,n.k9)(e,l,a)})(e,t,o,r)).reduce(i.Z,{})}function y(e){return g(e,u)}function v(e){return g(e,d)}function b(e){return g(e,p)}y.propTypes={},y.filterProps=u,v.propTypes={},v.filterProps=d,b.propTypes={},b.filterProps=p},4844:function(e,t,r){r.d(t,{DW:function(){return i},Jq:function(){return a}});var n=r(8320),o=r(5408);function i(e,t,r=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&r){let r=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=r)return r}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function a(e,t,r,n=r){let o;return o="function"==typeof e?e(r):Array.isArray(e)?e[r]||n:i(e,r)||n,t&&(o=t(o,n,e)),o}t.ZP=function(e){let{prop:t,cssProperty:r=e.prop,themeKey:l,transform:s}=e,c=e=>{if(null==e[t])return null;let c=e[t],u=e.theme,d=i(u,l)||{},p=e=>{let o=a(d,s,e);return(e===o&&"string"==typeof e&&(o=a(d,s,`${t}${"default"===e?"":(0,n.Z)(e)}`,e)),!1===r)?o:{[r]:o}};return(0,o.k9)(e,c,p)};return c.propTypes={},c.filterProps=[t],c}},4920:function(e,t,r){r.d(t,{Z:function(){return D}});var n=r(8700),o=r(4844),i=r(7730),a=function(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(r=>{e[r]=t}),e),{}),r=e=>Object.keys(e).reduce((r,n)=>t[n]?(0,i.Z)(r,t[n](e)):r,{});return r.propTypes={},r.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),r},l=r(5408);function s(e){return"number"!=typeof e?e:`${e}px solid`}let c=(0,o.ZP)({prop:"border",themeKey:"borders",transform:s}),u=(0,o.ZP)({prop:"borderTop",themeKey:"borders",transform:s}),d=(0,o.ZP)({prop:"borderRight",themeKey:"borders",transform:s}),p=(0,o.ZP)({prop:"borderBottom",themeKey:"borders",transform:s}),f=(0,o.ZP)({prop:"borderLeft",themeKey:"borders",transform:s}),m=(0,o.ZP)({prop:"borderColor",themeKey:"palette"}),h=(0,o.ZP)({prop:"borderTopColor",themeKey:"palette"}),g=(0,o.ZP)({prop:"borderRightColor",themeKey:"palette"}),y=(0,o.ZP)({prop:"borderBottomColor",themeKey:"palette"}),v=(0,o.ZP)({prop:"borderLeftColor",themeKey:"palette"}),b=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){let t=(0,n.eI)(e.theme,"shape.borderRadius",4,"borderRadius"),r=e=>({borderRadius:(0,n.NA)(t,e)});return(0,l.k9)(e,e.borderRadius,r)}return null};b.propTypes={},b.filterProps=["borderRadius"],a(c,u,d,p,f,m,h,g,y,v,b);let x=e=>{if(void 0!==e.gap&&null!==e.gap){let t=(0,n.eI)(e.theme,"spacing",8,"gap"),r=e=>({gap:(0,n.NA)(t,e)});return(0,l.k9)(e,e.gap,r)}return null};x.propTypes={},x.filterProps=["gap"];let k=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){let t=(0,n.eI)(e.theme,"spacing",8,"columnGap"),r=e=>({columnGap:(0,n.NA)(t,e)});return(0,l.k9)(e,e.columnGap,r)}return null};k.propTypes={},k.filterProps=["columnGap"];let Z=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){let t=(0,n.eI)(e.theme,"spacing",8,"rowGap"),r=e=>({rowGap:(0,n.NA)(t,e)});return(0,l.k9)(e,e.rowGap,r)}return null};Z.propTypes={},Z.filterProps=["rowGap"];let w=(0,o.ZP)({prop:"gridColumn"}),$=(0,o.ZP)({prop:"gridRow"}),S=(0,o.ZP)({prop:"gridAutoFlow"}),A=(0,o.ZP)({prop:"gridAutoColumns"}),P=(0,o.ZP)({prop:"gridAutoRows"}),C=(0,o.ZP)({prop:"gridTemplateColumns"}),O=(0,o.ZP)({prop:"gridTemplateRows"}),R=(0,o.ZP)({prop:"gridTemplateAreas"}),M=(0,o.ZP)({prop:"gridArea"});function E(e,t){return"grey"===t?t:e}a(x,k,Z,w,$,S,A,P,C,O,R,M);let T=(0,o.ZP)({prop:"color",themeKey:"palette",transform:E}),j=(0,o.ZP)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:E}),_=(0,o.ZP)({prop:"backgroundColor",themeKey:"palette",transform:E});function I(e){return e<=1&&0!==e?`${100*e}%`:e}a(T,j,_);let z=(0,o.ZP)({prop:"width",transform:I}),L=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){let t=t=>{var r,n,o;let i=(null==(r=e.theme)?void 0:null==(n=r.breakpoints)?void 0:null==(o=n.values)?void 0:o[t])||l.VO[t];return{maxWidth:i||I(t)}};return(0,l.k9)(e,e.maxWidth,t)}return null};L.filterProps=["maxWidth"];let B=(0,o.ZP)({prop:"minWidth",transform:I}),N=(0,o.ZP)({prop:"height",transform:I}),F=(0,o.ZP)({prop:"maxHeight",transform:I}),K=(0,o.ZP)({prop:"minHeight",transform:I});(0,o.ZP)({prop:"size",cssProperty:"width",transform:I}),(0,o.ZP)({prop:"size",cssProperty:"height",transform:I});let W=(0,o.ZP)({prop:"boxSizing"});a(z,L,B,N,F,K,W);let V={border:{themeKey:"borders",transform:s},borderTop:{themeKey:"borders",transform:s},borderRight:{themeKey:"borders",transform:s},borderBottom:{themeKey:"borders",transform:s},borderLeft:{themeKey:"borders",transform:s},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:b},color:{themeKey:"palette",transform:E},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:E},backgroundColor:{themeKey:"palette",transform:E},p:{style:n.o3},pt:{style:n.o3},pr:{style:n.o3},pb:{style:n.o3},pl:{style:n.o3},px:{style:n.o3},py:{style:n.o3},padding:{style:n.o3},paddingTop:{style:n.o3},paddingRight:{style:n.o3},paddingBottom:{style:n.o3},paddingLeft:{style:n.o3},paddingX:{style:n.o3},paddingY:{style:n.o3},paddingInline:{style:n.o3},paddingInlineStart:{style:n.o3},paddingInlineEnd:{style:n.o3},paddingBlock:{style:n.o3},paddingBlockStart:{style:n.o3},paddingBlockEnd:{style:n.o3},m:{style:n.e6},mt:{style:n.e6},mr:{style:n.e6},mb:{style:n.e6},ml:{style:n.e6},mx:{style:n.e6},my:{style:n.e6},margin:{style:n.e6},marginTop:{style:n.e6},marginRight:{style:n.e6},marginBottom:{style:n.e6},marginLeft:{style:n.e6},marginX:{style:n.e6},marginY:{style:n.e6},marginInline:{style:n.e6},marginInlineStart:{style:n.e6},marginInlineEnd:{style:n.e6},marginBlock:{style:n.e6},marginBlockStart:{style:n.e6},marginBlockEnd:{style:n.e6},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:x},rowGap:{style:Z},columnGap:{style:k},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:I},maxWidth:{style:L},minWidth:{transform:I},height:{transform:I},maxHeight:{transform:I},minHeight:{transform:I},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}};var D=V},9707:function(e,t,r){r.d(t,{Z:function(){return c}});var n=r(7462),o=r(3366),i=r(9766),a=r(4920);let l=["sx"],s=e=>{var t,r;let n={systemProps:{},otherProps:{}},o=null!=(t=null==e?void 0:null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:a.Z;return Object.keys(e).forEach(t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]}),n};function c(e){let t;let{sx:r}=e,a=(0,o.Z)(e,l),{systemProps:c,otherProps:u}=s(a);return t=Array.isArray(r)?[c,...r]:"function"==typeof r?(...e)=>{let t=r(...e);return(0,i.P)(t)?(0,n.Z)({},c,t):c}:(0,n.Z)({},c,r),(0,n.Z)({},u,{sx:t})}},6523:function(e,t,r){var n=r(8320),o=r(7730),i=r(4844),a=r(5408),l=r(4920);let s=function(){function e(e,t,r,o){let l={[e]:t,theme:r},s=o[e];if(!s)return{[e]:t};let{cssProperty:c=e,themeKey:u,transform:d,style:p}=s;if(null==t)return null;if("typography"===u&&"inherit"===t)return{[e]:t};let f=(0,i.DW)(r,u)||{};if(p)return p(l);let m=t=>{let r=(0,i.Jq)(f,d,t);return(t===r&&"string"==typeof t&&(r=(0,i.Jq)(f,d,`${e}${"default"===t?"":(0,n.Z)(t)}`,t)),!1===c)?r:{[c]:r}};return(0,a.k9)(l,t,m)}return function t(r){var n;let{sx:i,theme:s={}}=r||{};if(!i)return null;let c=null!=(n=s.unstable_sxConfig)?n:l.Z;function u(r){let n=r;if("function"==typeof r)n=r(s);else if("object"!=typeof r)return r;if(!n)return null;let i=(0,a.W8)(s.breakpoints),l=Object.keys(i),u=i;return Object.keys(n).forEach(r=>{var i;let l="function"==typeof(i=n[r])?i(s):i;if(null!=l){if("object"==typeof l){if(c[r])u=(0,o.Z)(u,e(r,l,s,c));else{let e=(0,a.k9)({theme:s},l,e=>({[r]:e}));(function(...e){let t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),r=new Set(t);return e.every(e=>r.size===Object.keys(e).length)})(e,l)?u[r]=t({sx:l,theme:s}):u=(0,o.Z)(u,e)}}else u=(0,o.Z)(u,e(r,l,s,c))}}),(0,a.L7)(l,u)}return Array.isArray(i)?i.map(u):u(i)}}();s.filterProps=["sx"],t.Z=s},6986:function(e,t,r){r.d(t,{Z:function(){return c}});var n=r(7462),o=r(6500),i=r(7294),a=r(2443),l=function(e=null){let t=i.useContext(a.T);return t&&0!==Object.keys(t).length?t:e};let s=(0,o.Z)();function c({props:e,name:t,defaultTheme:r,themeId:o}){let i=function(e=s){return l(e)}(r);o&&(i=i[o]||i);let a=function(e){let{theme:t,name:r,props:o}=e;return t&&t.components&&t.components[r]&&t.components[r].defaultProps?function e(t,r){let o=(0,n.Z)({},r);return Object.keys(t).forEach(i=>{if(i.toString().match(/^(components|slots)$/))o[i]=(0,n.Z)({},t[i],o[i]);else if(i.toString().match(/^(componentsProps|slotProps)$/)){let a=t[i]||{},l=r[i];o[i]={},l&&Object.keys(l)?a&&Object.keys(a)?(o[i]=(0,n.Z)({},l),Object.keys(a).forEach(t=>{o[i][t]=e(a[t],l[t])})):o[i]=l:o[i]=a}else void 0===o[i]&&(o[i]=t[i])}),o}(t.components[r].defaultProps,o):o}({theme:i,name:t,props:e});return a}},8320:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(1387);function o(e){if("string"!=typeof e)throw Error((0,n.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},4780:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e,t,r){let n={};return Object.keys(e).forEach(o=>{n[o]=e[o].reduce((e,n)=>{if(n){let o=t(n);""!==o&&e.push(o),r&&r[n]&&e.push(r[n])}return e},[]).join(" ")}),n}},9766:function(e,t,r){r.d(t,{P:function(){return o},Z:function(){return function e(t,r,i={clone:!0}){let a=i.clone?(0,n.Z)({},t):t;return o(t)&&o(r)&&Object.keys(r).forEach(n=>{"__proto__"!==n&&(o(r[n])&&n in t&&o(t[n])?a[n]=e(t[n],r[n],i):i.clone?a[n]=o(r[n])?function e(t){if(!o(t))return t;let r={};return Object.keys(t).forEach(n=>{r[n]=e(t[n])}),r}(r[n]):r[n]:a[n]=r[n])}),a}}});var n=r(7462);function o(e){return null!==e&&"object"==typeof e&&e.constructor===Object}},1387:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;ee,i=(n=o,{configure(e){n=e},generate:e=>n(e),reset(){n=o}}),a={active:"active",checked:"checked",completed:"completed",disabled:"disabled",readOnly:"readOnly",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",required:"required",selected:"selected"};function l(e,t,r="Mui"){let n=a[t];return n?`${r}-${n}`:`${i.generate(e)}-${t}`}},1588:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(7621);function o(e,t,r="Mui"){let o={};return t.forEach(t=>{o[t]=(0,n.Z)(e,t,r)}),o}},8679:function(e,t,r){var n=r(1296),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return n.isMemo(e)?a:l[e.$$typeof]||o}l[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[n.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,r,n){if("string"!=typeof r){if(m){var o=f(r);o&&o!==m&&e(t,o,n)}var a=u(r);d&&(a=a.concat(d(r)));for(var l=s(t),h=s(r),g=0;g{let a=i?i.map(e=>"function"==typeof e&&e.__emotion_real!==e?n=>e((0,o.Z)({},n,{theme:E((0,o.Z)({},n,{defaultTheme:r,themeId:t}))})):e):[],s=n;u&&m&&a.push(e=>{let n=E((0,o.Z)({},e,{defaultTheme:r,themeId:t})),i=P(u,n);if(i){let t={};return Object.entries(i).forEach(([r,i])=>{t[r]="function"==typeof i?i((0,o.Z)({},e,{theme:n})):i}),m(e,t)}return null}),u&&!g&&a.push(e=>{let n=E((0,o.Z)({},e,{defaultTheme:r,themeId:t}));return O(e,C(u,n),n,u)}),y||a.push(l);let c=a.length-i.length;if(Array.isArray(n)&&c>0){let e=Array(c).fill("");(s=[...n,...e]).raw=[...n.raw,...e]}else"function"==typeof n&&n.__emotion_real!==n&&(s=e=>n((0,o.Z)({},e,{theme:E((0,o.Z)({},e,{defaultTheme:r,themeId:t}))})));let d=k(s,...a);return e.muiName&&(d.muiName=e.muiName),d};return k.withConfig&&(Z.withConfig=k.withConfig),Z}}},6500:function(e,t,r){r.d(t,{Z:function(){return f}});var n=r(7462),o=r(3366),i=r(9766);let a=["values","unit","step"],l=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>(0,n.Z)({},e,{[t.key]:t.val}),{})};var s={borderRadius:4},c=r(8700),u=r(6523),d=r(9043);let p=["breakpoints","palette","spacing","shape"];var f=function(e={},...t){let{breakpoints:r={},palette:f={},spacing:m,shape:h={}}=e,g=(0,o.Z)(e,p),y=function(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:r="px",step:i=5}=e,s=(0,o.Z)(e,a),c=l(t),u=Object.keys(c);function d(e){let n="number"==typeof t[e]?t[e]:e;return`@media (min-width:${n}${r})`}function p(e){let n="number"==typeof t[e]?t[e]:e;return`@media (max-width:${n-i/100}${r})`}function f(e,n){let o=u.indexOf(n);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${r}) and (max-width:${(-1!==o&&"number"==typeof t[u[o]]?t[u[o]]:n)-i/100}${r})`}return(0,n.Z)({keys:u,values:c,up:d,down:p,between:f,only:function(e){return u.indexOf(e)+1{let r=0===e.length?[1]:e;return r.map(e=>{let r=t(e);return"number"==typeof r?`${r}px`:r}).join(" ")};return r.mui=!0,r}(m),b=(0,i.Z)({breakpoints:y,direction:"ltr",components:{},palette:(0,n.Z)({mode:"light"},f),spacing:v,shape:(0,n.Z)({},s,h)},g);return(b=t.reduce((e,t)=>(0,i.Z)(e,t),b)).unstable_sxConfig=(0,n.Z)({},d.Z,null==g?void 0:g.unstable_sxConfig),b.unstable_sx=function(e){return(0,u.Z)({sx:e,theme:this})},b}},7730:function(e,t,r){var n=r(9766);t.Z=function(e,t){return t?(0,n.Z)(e,t,{clone:!1}):e}},8700:function(e,t,r){r.d(t,{hB:function(){return m},eI:function(){return f},NA:function(){return h},e6:function(){return y},o3:function(){return v}});var n=r(5408),o=r(4844),i=r(7730);let a={m:"margin",p:"padding"},l={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},s={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},c=function(e){let t={};return r=>(void 0===t[r]&&(t[r]=e(r)),t[r])}(e=>{if(e.length>2){if(!s[e])return[e];e=s[e]}let[t,r]=e.split(""),n=a[t],o=l[r]||"";return Array.isArray(o)?o.map(e=>n+e):[n+o]}),u=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[...u,...d];function f(e,t,r,n){var i;let a=null!=(i=(0,o.DW)(e,t,!1))?i:r;return"number"==typeof a?e=>"string"==typeof e?e:a*e:Array.isArray(a)?e=>"string"==typeof e?e:a[e]:"function"==typeof a?a:()=>void 0}function m(e){return f(e,"spacing",8,"spacing")}function h(e,t){if("string"==typeof t||null==t)return t;let r=e(Math.abs(t));return t>=0?r:"number"==typeof r?-r:`-${r}`}function g(e,t){let r=m(e.theme);return Object.keys(e).map(o=>(function(e,t,r,o){if(-1===t.indexOf(r))return null;let i=c(r),a=e=>i.reduce((t,r)=>(t[r]=h(o,e),t),{}),l=e[r];return(0,n.k9)(e,l,a)})(e,t,o,r)).reduce(i.Z,{})}function y(e){return g(e,u)}function v(e){return g(e,d)}function b(e){return g(e,p)}y.propTypes={},y.filterProps=u,v.propTypes={},v.filterProps=d,b.propTypes={},b.filterProps=p},4844:function(e,t,r){r.d(t,{DW:function(){return i},Jq:function(){return a}});var n=r(8320),o=r(5408);function i(e,t,r=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&r){let r=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=r)return r}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function a(e,t,r,n=r){let o;return o="function"==typeof e?e(r):Array.isArray(e)?e[r]||n:i(e,r)||n,t&&(o=t(o,n,e)),o}t.ZP=function(e){let{prop:t,cssProperty:r=e.prop,themeKey:l,transform:s}=e,c=e=>{if(null==e[t])return null;let c=e[t],u=e.theme,d=i(u,l)||{},p=e=>{let o=a(d,s,e);return(e===o&&"string"==typeof e&&(o=a(d,s,`${t}${"default"===e?"":(0,n.Z)(e)}`,e)),!1===r)?o:{[r]:o}};return(0,o.k9)(e,c,p)};return c.propTypes={},c.filterProps=[t],c}},9043:function(e,t,r){r.d(t,{Z:function(){return D}});var n=r(8700),o=r(4844),i=r(7730),a=function(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(r=>{e[r]=t}),e),{}),r=e=>Object.keys(e).reduce((r,n)=>t[n]?(0,i.Z)(r,t[n](e)):r,{});return r.propTypes={},r.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),r},l=r(5408);function s(e){return"number"!=typeof e?e:`${e}px solid`}let c=(0,o.ZP)({prop:"border",themeKey:"borders",transform:s}),u=(0,o.ZP)({prop:"borderTop",themeKey:"borders",transform:s}),d=(0,o.ZP)({prop:"borderRight",themeKey:"borders",transform:s}),p=(0,o.ZP)({prop:"borderBottom",themeKey:"borders",transform:s}),f=(0,o.ZP)({prop:"borderLeft",themeKey:"borders",transform:s}),m=(0,o.ZP)({prop:"borderColor",themeKey:"palette"}),h=(0,o.ZP)({prop:"borderTopColor",themeKey:"palette"}),g=(0,o.ZP)({prop:"borderRightColor",themeKey:"palette"}),y=(0,o.ZP)({prop:"borderBottomColor",themeKey:"palette"}),v=(0,o.ZP)({prop:"borderLeftColor",themeKey:"palette"}),b=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){let t=(0,n.eI)(e.theme,"shape.borderRadius",4,"borderRadius"),r=e=>({borderRadius:(0,n.NA)(t,e)});return(0,l.k9)(e,e.borderRadius,r)}return null};b.propTypes={},b.filterProps=["borderRadius"],a(c,u,d,p,f,m,h,g,y,v,b);let x=e=>{if(void 0!==e.gap&&null!==e.gap){let t=(0,n.eI)(e.theme,"spacing",8,"gap"),r=e=>({gap:(0,n.NA)(t,e)});return(0,l.k9)(e,e.gap,r)}return null};x.propTypes={},x.filterProps=["gap"];let k=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){let t=(0,n.eI)(e.theme,"spacing",8,"columnGap"),r=e=>({columnGap:(0,n.NA)(t,e)});return(0,l.k9)(e,e.columnGap,r)}return null};k.propTypes={},k.filterProps=["columnGap"];let Z=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){let t=(0,n.eI)(e.theme,"spacing",8,"rowGap"),r=e=>({rowGap:(0,n.NA)(t,e)});return(0,l.k9)(e,e.rowGap,r)}return null};Z.propTypes={},Z.filterProps=["rowGap"];let w=(0,o.ZP)({prop:"gridColumn"}),$=(0,o.ZP)({prop:"gridRow"}),S=(0,o.ZP)({prop:"gridAutoFlow"}),A=(0,o.ZP)({prop:"gridAutoColumns"}),P=(0,o.ZP)({prop:"gridAutoRows"}),C=(0,o.ZP)({prop:"gridTemplateColumns"}),O=(0,o.ZP)({prop:"gridTemplateRows"}),R=(0,o.ZP)({prop:"gridTemplateAreas"}),M=(0,o.ZP)({prop:"gridArea"});function E(e,t){return"grey"===t?t:e}a(x,k,Z,w,$,S,A,P,C,O,R,M);let T=(0,o.ZP)({prop:"color",themeKey:"palette",transform:E}),j=(0,o.ZP)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:E}),_=(0,o.ZP)({prop:"backgroundColor",themeKey:"palette",transform:E});function I(e){return e<=1&&0!==e?`${100*e}%`:e}a(T,j,_);let z=(0,o.ZP)({prop:"width",transform:I}),L=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){let t=t=>{var r,n,o;let i=(null==(r=e.theme)?void 0:null==(n=r.breakpoints)?void 0:null==(o=n.values)?void 0:o[t])||l.VO[t];return{maxWidth:i||I(t)}};return(0,l.k9)(e,e.maxWidth,t)}return null};L.filterProps=["maxWidth"];let B=(0,o.ZP)({prop:"minWidth",transform:I}),N=(0,o.ZP)({prop:"height",transform:I}),F=(0,o.ZP)({prop:"maxHeight",transform:I}),K=(0,o.ZP)({prop:"minHeight",transform:I});(0,o.ZP)({prop:"size",cssProperty:"width",transform:I}),(0,o.ZP)({prop:"size",cssProperty:"height",transform:I});let W=(0,o.ZP)({prop:"boxSizing"});a(z,L,B,N,F,K,W);let V={border:{themeKey:"borders",transform:s},borderTop:{themeKey:"borders",transform:s},borderRight:{themeKey:"borders",transform:s},borderBottom:{themeKey:"borders",transform:s},borderLeft:{themeKey:"borders",transform:s},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:b},color:{themeKey:"palette",transform:E},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:E},backgroundColor:{themeKey:"palette",transform:E},p:{style:n.o3},pt:{style:n.o3},pr:{style:n.o3},pb:{style:n.o3},pl:{style:n.o3},px:{style:n.o3},py:{style:n.o3},padding:{style:n.o3},paddingTop:{style:n.o3},paddingRight:{style:n.o3},paddingBottom:{style:n.o3},paddingLeft:{style:n.o3},paddingX:{style:n.o3},paddingY:{style:n.o3},paddingInline:{style:n.o3},paddingInlineStart:{style:n.o3},paddingInlineEnd:{style:n.o3},paddingBlock:{style:n.o3},paddingBlockStart:{style:n.o3},paddingBlockEnd:{style:n.o3},m:{style:n.e6},mt:{style:n.e6},mr:{style:n.e6},mb:{style:n.e6},ml:{style:n.e6},mx:{style:n.e6},my:{style:n.e6},margin:{style:n.e6},marginTop:{style:n.e6},marginRight:{style:n.e6},marginBottom:{style:n.e6},marginLeft:{style:n.e6},marginX:{style:n.e6},marginY:{style:n.e6},marginInline:{style:n.e6},marginInlineStart:{style:n.e6},marginInlineEnd:{style:n.e6},marginBlock:{style:n.e6},marginBlockStart:{style:n.e6},marginBlockEnd:{style:n.e6},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:x},rowGap:{style:Z},columnGap:{style:k},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:I},maxWidth:{style:L},minWidth:{transform:I},height:{transform:I},maxHeight:{transform:I},minHeight:{transform:I},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}};var D=V},9707:function(e,t,r){r.d(t,{Z:function(){return c}});var n=r(7462),o=r(3366),i=r(9766),a=r(9043);let l=["sx"],s=e=>{var t,r;let n={systemProps:{},otherProps:{}},o=null!=(t=null==e?void 0:null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:a.Z;return Object.keys(e).forEach(t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]}),n};function c(e){let t;let{sx:r}=e,a=(0,o.Z)(e,l),{systemProps:c,otherProps:u}=s(a);return t=Array.isArray(r)?[c,...r]:"function"==typeof r?(...e)=>{let t=r(...e);return(0,i.P)(t)?(0,n.Z)({},c,t):c}:(0,n.Z)({},c,r),(0,n.Z)({},u,{sx:t})}},6523:function(e,t,r){var n=r(8320),o=r(7730),i=r(4844),a=r(5408),l=r(9043);let s=function(){function e(e,t,r,o){let l={[e]:t,theme:r},s=o[e];if(!s)return{[e]:t};let{cssProperty:c=e,themeKey:u,transform:d,style:p}=s;if(null==t)return null;if("typography"===u&&"inherit"===t)return{[e]:t};let f=(0,i.DW)(r,u)||{};if(p)return p(l);let m=t=>{let r=(0,i.Jq)(f,d,t);return(t===r&&"string"==typeof t&&(r=(0,i.Jq)(f,d,`${e}${"default"===t?"":(0,n.Z)(t)}`,t)),!1===c)?r:{[c]:r}};return(0,a.k9)(l,t,m)}return function t(r){var n;let{sx:i,theme:s={}}=r||{};if(!i)return null;let c=null!=(n=s.unstable_sxConfig)?n:l.Z;function u(r){let n=r;if("function"==typeof r)n=r(s);else if("object"!=typeof r)return r;if(!n)return null;let i=(0,a.W8)(s.breakpoints),l=Object.keys(i),u=i;return Object.keys(n).forEach(r=>{var i;let l="function"==typeof(i=n[r])?i(s):i;if(null!=l){if("object"==typeof l){if(c[r])u=(0,o.Z)(u,e(r,l,s,c));else{let e=(0,a.k9)({theme:s},l,e=>({[r]:e}));(function(...e){let t=e.reduce((e,t)=>e.concat(Object.keys(t)),[]),r=new Set(t);return e.every(e=>r.size===Object.keys(e).length)})(e,l)?u[r]=t({sx:l,theme:s}):u=(0,o.Z)(u,e)}}else u=(0,o.Z)(u,e(r,l,s,c))}}),(0,a.L7)(l,u)}return Array.isArray(i)?i.map(u):u(i)}}();s.filterProps=["sx"],t.Z=s},6986:function(e,t,r){r.d(t,{Z:function(){return c}});var n=r(7462),o=r(6500),i=r(7294),a=r(2443),l=function(e=null){let t=i.useContext(a.T);return t&&0!==Object.keys(t).length?t:e};let s=(0,o.Z)();function c({props:e,name:t,defaultTheme:r,themeId:o}){let i=function(e=s){return l(e)}(r);o&&(i=i[o]||i);let a=function(e){let{theme:t,name:r,props:o}=e;return t&&t.components&&t.components[r]&&t.components[r].defaultProps?function e(t,r){let o=(0,n.Z)({},r);return Object.keys(t).forEach(i=>{if(i.toString().match(/^(components|slots)$/))o[i]=(0,n.Z)({},t[i],o[i]);else if(i.toString().match(/^(componentsProps|slotProps)$/)){let a=t[i]||{},l=r[i];o[i]={},l&&Object.keys(l)?a&&Object.keys(a)?(o[i]=(0,n.Z)({},l),Object.keys(a).forEach(t=>{o[i][t]=e(a[t],l[t])})):o[i]=l:o[i]=a}else void 0===o[i]&&(o[i]=t[i])}),o}(t.components[r].defaultProps,o):o}({theme:i,name:t,props:e});return a}},8320:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(6939);function o(e){if("string"!=typeof e)throw Error((0,n.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},4780:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e,t,r){let n={};return Object.keys(e).forEach(o=>{n[o]=e[o].reduce((e,n)=>{if(n){let o=t(n);""!==o&&e.push(o),r&&r[n]&&e.push(r[n])}return e},[]).join(" ")}),n}},9766:function(e,t,r){r.d(t,{P:function(){return o},Z:function(){return function e(t,r,i={clone:!0}){let a=i.clone?(0,n.Z)({},t):t;return o(t)&&o(r)&&Object.keys(r).forEach(n=>{"__proto__"!==n&&(o(r[n])&&n in t&&o(t[n])?a[n]=e(t[n],r[n],i):i.clone?a[n]=o(r[n])?function e(t){if(!o(t))return t;let r={};return Object.keys(t).forEach(n=>{r[n]=e(t[n])}),r}(r[n]):r[n]:a[n]=r[n])}),a}}});var n=r(7462);function o(e){return null!==e&&"object"==typeof e&&e.constructor===Object}},6939:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;ee,i=(n=o,{configure(e){n=e},generate:e=>n(e),reset(){n=o}}),a={active:"active",checked:"checked",completed:"completed",disabled:"disabled",readOnly:"readOnly",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",required:"required",selected:"selected"};function l(e,t,r="Mui"){let n=a[t];return n?`${r}-${n}`:`${i.generate(e)}-${t}`}},1588:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(7621);function o(e,t,r="Mui"){let o={};return t.forEach(t=>{o[t]=(0,n.Z)(e,t,r)}),o}},8679:function(e,t,r){var n=r(1296),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return n.isMemo(e)?a:l[e.$$typeof]||o}l[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[n.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,r,n){if("string"!=typeof r){if(m){var o=f(r);o&&o!==m&&e(t,o,n)}var a=u(r);d&&(a=a.concat(d(r)));for(var l=s(t),h=s(r),g=0;g(input: unknown | T): input is T; // returns boolean\nexport function assert(input: unknown | T): T; // throws TypeGuardError\nexport function validate(input: unknown | T): IValidation; // detailed\nexport const customValidators: CustomValidatorMap; // customizable\n\n// ENHANCED JSON\nexport function application<...Args>(): IJsonApplication; // JSON schema\nexport function assertParse(input: string): T; // type safe parser\nexport function assertStringify(input: T): string; // safe and faster\n// +) isParse, validateParse\n// +) stringify, isStringify, validateStringify\n\n// RANDOM DATA GENERATOR\nexport function random(g?: Partial): Primitive;\nTypia is a transformer library, supporting those features:\nSuper-fast Runtime Validators\nSafe JSON parse and fast stringify\nJSON schema generator\nRandom data generator\n\n\n\n\n\nOnly one line required, with pure TypeScript type\n\nRuntime validator is 20,000x faster than class-validator\n\nJSON serialization is 200x faster than class-transformer","sponsors#Sponsors":"Thanks for your support.Your donation would encourage typia development."}},"/docs/json/parse":{"title":"Parse","data":{"":"","parse-functions#parse() functions":"export function isParse(input: string): T | null;\nexport function assertParse(input: string): T;\nexport function validateParse(input: string): IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nType safe JSON parser.Unlike native JSON.parse() function which returns any typed instance without type checking, typia.assertParse() function validates instance type after the parsing. If the parsed value is not following the promised type T, it throws TypeGuardError with the first type error info.If you want to know every type error infos detaily, you can use typia.validateParse() function instead. Otherwise, you just only want to know whether the parsed value is following the type T or not, just call typia.isParse() function.\ntypia.isParse(): JSON.parse() + typia.is()\ntypia.assertParse(): JSON.parse() + typia.assert()\ntypia.validateParse(): JSON.parse() + typia.validate()\n\nLook at the below code, then you may understand how the typia.assertParse() function works.\n\n\nimport typia from \"typia\";\n\nconst json: string = JSON.stringify(typia.random());\nconst parsed: IMember = typia.assertParse(json);\n\nconsole.log(json === JSON.stringify(parsed)); // true\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst json = JSON.stringify(\n((generator) => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\",\n},\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nemail:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"email\",\n},\n]) ?? (generator?.email ?? $generator.email)(),\nage:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\",\n},\n{\nname: \"maximum\",\nvalue: \"100\",\n},\n]) ?? (generator?.number ?? $generator.number)(19, 100),\n});\nreturn $ro0();\n})(),\n);\nconst parsed = ((input) => {\nconst assert = (input) => {\nconst $guard = typia.assertParse.guard;\nconst $is_uuid = typia.assertParse.is_uuid;\nconst $is_email = typia.assertParse.is_email;\nconst __is = (input) => {\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n};\ninput = JSON.parse(input);\nreturn assert(input);\n})(json);\n\nconsole.log(json === JSON.stringify(parsed)); // true","reusable-functions#Reusable functions":"export function createIsParse(): (input: string) => T | null;\nexport function createAssertParse(): (input: string) => T;\nexport function createValidateParse(): (input: string) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nReusable typia.isParse() function generators.If you repeat to call typia.isParse() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createIsParse() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const parseMember = typia.createIsParse();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const parseMember = (input) => {\nconst is = (input) => {\nconst $is_uuid = typia.createIsParse.is_uuid;\nconst $is_email = typia.createIsParse.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age\n);\n};\ninput = JSON.parse(input);\nreturn is(input) ? input : null;\n};"}},"/docs/json/stringify":{"title":"Stringify","data":{"":"","stringify-functions#stringify() functions":"export function stringify(input: T): string;\nexport function isStringify(input: unknown | T): string | null;\nexport function assertStringify(input: unknown | T): string;\nexport function validateStringify(input: unknown | T): IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nYou can boost up JSON serialization speed just by calling typia.stringify() function. Also, you even can ensure type safety of JSON serialization by calling other functions like typia.isStringify() and typia.assertStringify() functions.As typia.stringify() function writes dedicated JSON serialization code only for the target type T, its performance is much faster than native JSON.stringify() function. However, because of the dedicated optimal JSON serialization code, when wrong typed data comes, unexpected error be occured.Instead, typia supports type safe JSON serialization functions like typia.isStringify(). The typia.isStringify() is a combination function of typia.is() and typia.stringify() function. It checks whether the input value is valid for the target type T or not first, and operate JSON serialization later. If the input value is not matched with the type T, it returns null value.\ntypia.isStringify(): typia.is() + typia.stringify()\ntypia.assertStringify(): typia.assert() + typia.stringify()\ntypia.validateStringify(): typia.validate() + typia.stringify()\n\n\n\n\n\nAOT compliation\ntypia.isStringify() and other similar functions are still much faster than native JSON.stringify() function, even though they include type checking process. This is the power of AOT compilation, writing optimal dedicated code by analyzing TypeScript type, in the compilation level.\n\n\n\nimport typia from \"typia\";\n\nconst department: IDepartment = typia.random();\nconst json: string = typia.isStringify(department);\n\nconsole.log(json); // not null, but string\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\nimport typia from \"typia\";\n\nconst department = ((generator) => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\",\n},\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nname:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"minLength\",\nvalue: \"3\",\n},\n]) ??\n(generator?.string ?? $generator.string)(\n(generator?.integer ?? $generator.integer)(3, 25),\n),\nlimit:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"type\",\nvalue: \"uint\",\n},\n]) ?? (generator?.integer ?? $generator.integer)(0, 10),\nclerks: (generator?.array ?? $generator.array)(() =>\n$ro1(_recursive, _recursive ? 1 + _depth : _depth),\n),\n});\nconst $ro1 = (_recursive = false, _depth = 0) => ({\nname:\n(generator?.customs ?? $generator.customs)?.string?.([]) ??\n(generator?.string ?? $generator.string)(),\nage:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\",\n},\n{\nname: \"maximum\",\nvalue: \"100\",\n},\n]) ?? (generator?.number ?? $generator.number)(19, 100),\nauthority:\n(generator?.customs ?? $generator.customs)?.number?.([]) ??\n(generator?.number ?? $generator.number)(0, 100),\njoined_at:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"date\",\n},\n]) ?? (generator?.date ?? $generator.date)(),\n});\nreturn $ro0();\n})();\n\nconst json = ((input) => {\nconst is = (input) => {\nconst $is_uuid = typia.isStringify.is_uuid;\nconst $is_date = typia.isStringify.is_date;\nconst $io0 = (input) =>\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.name && 3 <= input.name.length &&\n\"number\" === typeof input.limit && !Number.isNaN(input.limit) && parseInt(input.limit) === input.limit && 0 <= input.limit &&\nArray.isArray(input.clerks) && input.clerks.every(\n(elem) =>\n\"object\" === typeof elem && null !== elem && $io1(elem),\n);\nconst $io1 = (input) =>\n\"string\" === typeof input.name &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age &&\n\"number\" === typeof input.authority && !Number.isNaN(input.authority) &&\n\"string\" === typeof input.joined_at && $is_date(input.joined_at);\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nconst stringify = (input) => {\nconst $string = typia.isStringify.string;\n$is_date(input.joined_at);\nconst $so0 = (input) =>\n`{\"id\":${'\"' + input.id + '\"'},\"name\":${$string(\ninput.name,\n)},\"limit\":${input.limit},\"clerks\":${`[${input.clerks\n.map((elem) => $so1(elem))\n.join(\",\")}]`}}`;\nconst $so1 = (input) =>\n`{\"name\":${$string(input.name)},\"age\":${input.age},\"authority\":${\ninput.authority\n},\"joined_at\":${'\"' + input.joined_at + '\"'}}`;\nreturn $so0(input);\n};\nreturn is(input) ? stringify(input) : null;\n})(department);\n\nconsole.log(json); // not null, but string","reusable-functions#Reusable functions":"export function createStringify: (input: T) => string;\nexport function createIsStringify: (input: unknown | T) => string | null;\nexport function createAssertStringify: (input: unknown) => string;\nexport function createValidateStringify: (input: unknown) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nReusable typia.stringify() function generators.If you repeat to call typia.stringify() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createStringify() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const assertDepartment = typia.createAssertStringify();\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const assertDepartment = (input) => {\nconst assert = (input) => {\nconst $guard = typia.createAssertStringify.guard;\nconst $is_uuid = typia.createAssertStringify.is_uuid;\nconst $is_date = typia.createAssertStringify.is_date;\nconst __is = (input) => {\nconst $is_uuid = typia.createAssertStringify.is_uuid;\nconst $is_date = typia.createAssertStringify.is_date;\nconst $io0 = (input) =>\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.name && 3 <= input.name.length &&\n\"number\" === typeof input.limit && !Number.isNaN(input.limit) && parseInt(input.limit) === input.limit && 0 <= input.limit &&\nArray.isArray(input.clerks) && input.clerks.every(\n(elem) =>\n\"object\" === typeof elem && null !== elem && $io1(elem),\n);\nconst $io1 = (input) =>\n\"string\" === typeof input.name &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age &&\n\"number\" === typeof input.authority && !Number.isNaN(input.authority) &&\n\"string\" === typeof input.joined_at && $is_date(input.joined_at);\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.name &&\n(3 <= input.name.length ||\n$guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@minLength 3)\",\nvalue: input.name,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name,\n})) &&\n((\"number\" === typeof input.limit &&\n!Number.isNaN(input.limit) &&\n(parseInt(input.limit) === input.limit ||\n$guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit,\n})) &&\n(0 <= input.limit ||\n$guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number\",\nvalue: input.limit,\n})) &&\n(Array.isArray(input.clerks) ||\n$guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks,\n})) &&\ninput.clerks.every(\n(elem, _index1) =>\n((\"object\" === typeof elem && null !== elem) ||\n$guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem,\n})) &&\n$ao1(\nelem,\n_path + \".clerks[\" + _index1 + \"]\",\ntrue && _exceptionable,\n),\n);\nconst $ao1 = (input, _path, _exceptionable = true) =>\n(\"string\" === typeof input.name ||\n$guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name,\n})) &&\n((\"number\" === typeof input.age &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n})) &&\n((\"number\" === typeof input.authority &&\n!Number.isNaN(input.authority)) ||\n$guard(_exceptionable, {\npath: _path + \".authority\",\nexpected: \"number\",\nvalue: input.authority,\n})) &&\n((\"string\" === typeof input.joined_at &&\n($is_date(input.joined_at) ||\n$guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string (@format date)\",\nvalue: input.joined_at,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string\",\nvalue: input.joined_at,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n};\nconst stringify = (input) => {\nconst $string = typia.createAssertStringify.string;\nconst $so0 = (input) =>\n`{\"id\":${'\"' + input.id + '\"'},\"name\":${$string(\ninput.name,\n)},\"limit\":${input.limit},\"clerks\":${`[${input.clerks\n.map((elem) => $so1(elem))\n.join(\",\")}]`}}`;\nconst $so1 = (input) =>\n`{\"name\":${$string(input.name)},\"age\":${input.age},\"authority\":${\ninput.authority\n},\"joined_at\":${'\"' + input.joined_at + '\"'}}`;\nreturn $so0(input);\n};\nreturn stringify(assert(input));\n};","performance#Performance":"Comparing JSON serialization speed with others, it is maximum 200x faster than class-transformer.For reference, class-transformer is the most famous library used in NestJS with class-validator. Also, fast-json-stringify is another famous one used in fastify. However, whether they are fast or slow, both of them require extra schema definition, that is different with TypeScript type. If you see the code below without experience of them, you may get shocked: how complicate and inefficient they are:\nfast-json-stringify requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\n\nMeasured on Intel i5-1135g7, Surface Pro 8","server-performance#Server Performance":"Someone may ask:\nJSON serialization speed affects on the server performance?I think that the JSON serialization is just a tiny thing in the server side, isn't it?\nMy answer is, \"Yes, it affects on the server performance\".Most operations in NodeJS server are asynchronously executed in background thread, what are called \"event based non-blocking I/O model\". However, JSON serialization is a synchronous operation running on the main thread. Therefore, if the JSON serialization speed is slow, it makes the entire server program slow.I'll show you the benchmark result that, how JSON serizliation speed affects on the server performance.\nMeasured on Intel i5-1135g7, Surface Pro 8"}},"/docs/json/schema":{"title":"Schema","data":{"":"","application-function#application() function":"export function application<\nSchemas extends unknown[],\nPurpose extends \"ajv\" | \"swagger\",\n>(): IJsonApplication;\n\n\n\nexport interface IJsonApplication {\nschemas: IJsonSchema[];\ncomponents: IJsonComponents;\npurpose: \"swagger\" | \"ajv\";\n}\n\n\n\nexport interface IJsonComponents {\nschemas: Record;\n}\nexport namespace IJsonComponents {\nexport interface IObject {\n$id?: string;\n$recursiveAnchor?: boolean;\n\ntype: \"object\";\nnullable: boolean;\n\nproperties: Record;\npatternProperties?: Record;\nadditionalProperties?: IJsonSchema;\n\nrequired?: string[];\ndescription?: string;\n\"x-typia-jsDocTags\"?: IJsDocTagInfo[];\n\"x-typia-patternProperties\"?: Record;\n\"x-typia-additionalProperties\"?: IJsonSchema;\n}\n}\n\n\n\nexport type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;\nexport namespace IJsonSchema {\nexport type NotUnknown =\n| IEnumeration<\"boolean\">\n| IEnumeration<\"number\">\n| IEnumeration<\"string\">\n| IBoolean\n| IInteger\n| INumber\n| IString\n| IArray\n| ITuple\n| IOneOf\n| IReference\n| IRecursiveReference\n| INullOnly;\n\n/* -----------------------------------------------------------\nATOMICS\n----------------------------------------------------------- */\nexport interface IEnumeration<\nLiteral extends Exclude,\n> extends IAtomic {\nenum: Array;\n}\nexport interface IAtomic>\nextends ISignificant {\ndefault?: Atomic.Mapper[Literal];\n}\nexport interface IString extends IAtomic<\"string\"> {\n/**\n* @type uint\n*/\nminLength?: number;\n/**\n* @type uint\n*/\nmaxLength?: number;\npattern?: string;\nformat?: string;\n}\nexport interface INumber extends IAtomic<\"number\"> {\nminimum?: number;\nmaximum?: number;\nexclusiveMinimum?: boolean;\nexclusiveMaximum?: boolean;\nmultipleOf?: number;\n}\nexport interface IInteger extends IAtomic<\"integer\"> {\n/**\n* @type int\n*/\nminimum?: number;\n/**\n* @type int\n*/\nmaximum?: number;\nexclusiveMinimum?: boolean;\nexclusiveMaximum?: boolean;\n/**\n* @type int\n*/\nmultipleOf?: number;\n}\nexport interface IBoolean extends IAtomic<\"boolean\"> {}\n\n/* -----------------------------------------------------------\nOBJECTS\n----------------------------------------------------------- */\nexport interface IArray extends ISignificant<\"array\"> {\nitems: IJsonSchema;\n/**\n* @type uint\n*/\nminItems?: number;\n/**\n* @type uint\n*/\nmaxItems?: number;\n\"x-typia-tuple\"?: ITuple;\n}\nexport interface ITuple extends ISignificant<\"array\"> {\nitems: IJsonSchema[];\n}\nexport interface IReference extends IAttribute {\n$ref: string;\n}\nexport interface IRecursiveReference extends IAttribute {\n$recursiveRef: string;\n}\nexport interface INullOnly extends IAttribute {\ntype: \"null\";\n}\n\n/* -----------------------------------------------------------\nMISCELLANEOUS\n----------------------------------------------------------- */\nexport interface IOneOf extends IAttribute {\noneOf: IJsonSchema[];\n}\nexport interface IUnknown {}\n\nexport interface ISignificant extends IAttribute {\ntype: Literal;\nnullable: boolean;\n}\nexport interface IAttribute {\ndeprecated?: boolean;\ntitle?: string;\ndescription?: string;\n\"x-typia-metaTags\"?: IMetadataTag[];\n\"x-typia-jsDocTags\"?: IJsDocTagInfo[];\n\"x-typia-required\"?: boolean;\n\"x-typia-rest\"?: boolean;\n}\n}\n\n\nJSON schema generator.\nDefinitions:\nIJsonApplication\nIJsonComponents\nIJsonSchema\n\n\n\nWhen you need JSON schema, do not write it by yourself, but just call typia.application() function.If you call the typia.application() with specialization of target Schemas, typia will analyze your Schemas and generate JSON schema definition in the compilation level. However, note that, JSON schema definitions of AJV and Swagger are a little bit different. Therefore, you have to consider which value to assign in the Purpose argument.\nSwagger can't express tuple type\nSwagger can't express pattern property\n\n\n\n\nimport typia from \"typia\";\n\nexport const MemberSchema = typia.application<[IMember], \"ajv\">();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const MemberSchema = {\nschemas: [\n{\n$ref: \"components#/schemas/IMember\",\n},\n],\ncomponents: {\nschemas: {\nIMember: {\n$id: \"components#/schemas/IMember\",\ntype: \"object\",\nproperties: {\nid: {\ntype: \"string\",\nnullable: false,\nformat: \"uuid\",\n},\nemail: {\ntype: \"string\",\nnullable: false,\nformat: \"email\",\n},\nage: {\ntype: \"number\",\nnullable: false,\nminimum: 19,\nexclusiveMinimum: true,\nmaximum: 100,\n},\n},\nnullable: false,\nrequired: [\"id\", \"email\", \"age\"],\n},\n},\n},\npurpose: \"ajv\",\n};","comment-tags#Comment Tags":"https://swagger.io/docs/specification/data-models/data-types/You can utilize comments and comment tags to constructing special fields of JSON schema.If you write any comment on a property, it would fill the IJsonSchema.description value. When you write some comment tags starting with @ symbol, they would be placed into the proper properties of IJsonSchema. Below is the list of supported comment tags in the typia.application() function.Let's see how those comment tags work with example code.\nSupported comment tags\ncommon\n@deprecated\n@hidden\n@internal\n@title {string}\n@default {value}\n\n\nnumber\n@type {\"int\"|\"uint\"}\n@minimum {number}\n@maximum {number}\n@exclusiveMinimum {number}\n@exclusiveMaximum {number}\n@multipleOf {number}\n\n\nstring\n@minLength {number}\n@maxLength {number}\n@pattern {regex}\n@format {keyword}\nemail\nuuid\nipv4\nipv6\nurl\ndate: YYYY-MM-DD\ndate-time: Date.toISOString()\n\n\n\n\narray\n@minItems {number}\n@maxItems {number}\n\n\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const CommentTagSchema = typia.application<[CommentTag], \"swagger\">();\n\ninterface CommentTag {\n/**\n* Deprecated tags are just used for marking.\n*\n* @title Unsigned integer\n* @type uint\n* @deprecated\n*/\ntype: number;\n\n/**\n* Internal tagged property never be shown in JSON schema.\n*\n* It even doesn't be shown in other `typia` functions like `assert()`.\n*\n* @internal\n*/\ninternal: number[];\n\n/**\n* Hidden tagged property never be shown in JSON schema.\n*\n* However, it would be shown in other `typia` functions like `stringify()`.\n*\n* @hidden\n*/\nhidden: boolean;\n\n/**\n* You can limit the range of number.\n*\n* @exclusiveMinimum 19\n* @maximum 100\n* @default 30\n*/\nnumber?: number;\n\n/**\n* You can limit the length of string.\n*\n* @minLength 3\n*/\nstring: string;\n\n/**\n* You can limit the pattern of string.\n*\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* You can limit the format of string.\n*\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const CommentTagSchema = {\nschemas: [\n{\n$ref: \"#/components/schemas/CommentTag\"\n}\n],\ncomponents: {\nschemas: {\nCommentTag: {\n$id: \"#/components/schemas/CommentTag\",\ntype: \"object\",\nproperties: {\ntype: {\ndeprecated: true,\ntitle: \"Unsigned integer\",\ndescription: \"Deprecated tags are just used for marking.\\n\\n@title Unsigned integer\\n@type uint\\n@deprecated\",\ntype: \"integer\",\nminimum: 0\n},\nnumber: {\ndescription: \"You can limit the range of number.\\n\\n@exclusiveMinimum 19\\n@maximum 100\\n@default 30\",\ntype: \"number\",\nminimum: 19,\nexclusiveMinimum: true,\nmaximum: 100,\n\"default\": 30\n},\nstring: {\ndescription: \"You can limit the length of string.\\n\\n@minLength 3\",\ntype: \"string\",\nminLength: 3\n},\npattern: {\ndescription: \"You can limit the pattern of string.\\n\\n@pattern ^[a-z]+$\",\ntype: \"string\",\npattern: \"^[a-z]+$\"\n},\nformat: {\ndescription: \"You can limit the format of string.\\n\\n@format date-time\",\ntype: \"string\",\nformat: \"date-time\",\nnullable: true\n},\narray: {\ndescription: \"In the Array case, possible to restrict its elements.\\n\\n@minItems 3\\n@maxItems 100\\n@format uuid\",\ntype: \"array\",\nitems: {\ndescription: \"In the Array case, possible to restrict its elements.\\n\\n@minItems 3\\n@maxItems 100\\n@format uuid\",\ntype: \"string\",\nformat: \"uuid\"\n},\nminItems: 3,\nmaxItems: 100\n}\n},\nrequired: [\n\"type\",\n\"hidden\",\n\"string\",\n\"pattern\",\n\"format\",\n\"array\"\n],\ndescription: \"In the Array case, possible to restrict its elements.\\n\\n@minItems 3\\n@maxItems 100\\n@format uuid\",\n}\n}\n},\npurpose: \"ajv\"\n};"}},"/docs/miscellaneous":{"title":"Miscellaneous","data":{"":"","clone-functions#clone() functions":"export function clone(input: T): T;\nexport function isClone(input: unknown): T | null;\nexport function assertClone(input: unknown): T;\nexport function validateClone(input: unknown): IValidation;\n\nexport function createClone(): (input: T) => T;\nexport function createIsClone(): (input: unknown) => T | null;\nexport function createAssertClone(): (input: unknown) => T;\nexport function createValidateClone(): (input: unknown) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nDeep copy function.When you want to copy an instance, just call typia.clone() function. It would perform deep copy including nested objects, so you can get a new instance with same values. Also, if you want type safe deep copy function, you can use typia.isClone(), typia.assertClone() or typia.validateClone() functions instead.\ntypia.isClone(): typia.is() + typia.clone()\ntypia.assertClone(): typia.assert() + typia.clone()\ntypia.validateClone(): typia.validate() + typia.clone()\n\n\n\n\nimport typia from \"typia\";\n\nconst department: IDepartment = typia.random();\nconst cloned: IDepartment = typia.assertClone(department);\n\nconsole.log(cloned);\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\nreturn (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst typia_1 = __importDefault(require(\"typia\"));\nconst department = (generator => {\nconst $generator = typia_1.default.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; return ({\nid: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.uuid) !== null && _e !== void 0 ? _e : $generator.uuid)(),\nname: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.string) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"minLength\",\nvalue: \"3\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _k !== void 0 ? _k : $generator.string)(((_l = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _l !== void 0 ? _l : $generator.integer)(3, 25)),\nlimit: (_q = (_p = (_o = ((_m = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _m !== void 0 ? _m : $generator.customs)) === null || _o === void 0 ? void 0 : _o.number) === null || _p === void 0 ? void 0 : _p.call(_o, [\n{\nname: \"type\",\nvalue: \"int\"\n}\n])) !== null && _q !== void 0 ? _q : ((_r = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _r !== void 0 ? _r : $generator.integer)(0, 100),\nclerks: ((_s = generator === null || generator === void 0 ? void 0 : generator.array) !== null && _s !== void 0 ? _s : $generator.array)(() => $ro1(_recursive, _recursive ? 1 + _depth : _depth))\n}); };\nconst $ro1 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; return ({\nname: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _e !== void 0 ? _e : $generator.string)(),\nage: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.number) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _k !== void 0 ? _k : $generator.number)(19, 100),\nauthority: (_p = (_o = (_m = ((_l = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _l !== void 0 ? _l : $generator.customs)) === null || _m === void 0 ? void 0 : _m.number) === null || _o === void 0 ? void 0 : _o.call(_m, [])) !== null && _p !== void 0 ? _p : ((_q = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _q !== void 0 ? _q : $generator.number)(0, 100),\njoined_at: (_u = (_t = (_s = ((_r = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _r !== void 0 ? _r : $generator.customs)) === null || _s === void 0 ? void 0 : _s.string) === null || _t === void 0 ? void 0 : _t.call(_s, [\n{\nname: \"format\",\nvalue: \"date\"\n}\n])) !== null && _u !== void 0 ? _u : ((_v = generator === null || generator === void 0 ? void 0 : generator.date) !== null && _v !== void 0 ? _v : $generator.date)()\n}); };\nreturn $ro0();\n})();\nconst cloned = (input => { const assert = input => {\nconst __is = input => {\nconst $is_uuid = typia_1.default.assertClone.is_uuid;\nconst $is_date = typia_1.default.assertClone.is_date;\nconst $io0 = input => \"string\" === typeof input.id && $is_uuid(input.id) && (\"string\" === typeof input.name && 3 <= input.name.length) && (\"number\" === typeof input.limit && parseInt(input.limit) === input.limit) && (Array.isArray(input.clerks) && input.clerks.every(elem => \"object\" === typeof elem && null !== elem && $io1(elem)));\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $guard = typia_1.default.assertClone.guard;\nconst $is_uuid = typia_1.default.assertClone.is_uuid;\nconst $is_date = typia_1.default.assertClone.is_date;\nconst $ao0 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.id && ($is_uuid(input.id) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id\n})) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id\n})) && (\"string\" === typeof input.name && (3 <= input.name.length || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@minLength 3)\",\nvalue: input.name\n})) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.limit && (parseInt(input.limit) === input.limit || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit\n})) || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number\",\nvalue: input.limit\n})) && ((Array.isArray(input.clerks) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n})) && input.clerks.every((elem, _index1) => (\"object\" === typeof elem && null !== elem || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) && $ao1(elem, _path + \".clerks[\" + _index1 + \"]\", true && _exceptionable) || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n}));\nconst $ao1 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.name || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.age && (19 < input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age\n})) && (100 >= input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age\n})) || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age\n})) && (\"number\" === typeof input.authority || $guard(_exceptionable, {\npath: _path + \".authority\",\nexpected: \"number\",\nvalue: input.authority\n})) && (\"string\" === typeof input.joined_at && ($is_date(input.joined_at) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string (@format date)\",\nvalue: input.joined_at\n})) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string\",\nvalue: input.joined_at\n}));\nreturn (\"object\" === typeof input && null !== input || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n})) && $ao0(input, _path + \"\", true) || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n});\n})(input, \"$input\", true);\nreturn input;\n}; const clone = input => {\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nconst $is_uuid = typia_1.default.assertClone.is_uuid;\nconst $is_date = typia_1.default.assertClone.is_date;\nconst $cp0 = input => input.map(elem => \"object\" === typeof elem && null !== elem ? $co1(elem) : elem);\nconst $co0 = input => ({\nid: input.id,\nname: input.name,\nlimit: input.limit,\nclerks: Array.isArray(input.clerks) ? $cp0(input.clerks) : input.clerks\n});\nconst $co1 = input => ({\nname: input.name,\nage: input.age,\nauthority: input.authority,\njoined_at: input.joined_at\n});\nreturn \"object\" === typeof input && null !== input ? $co0(input) : input;\n}; assert(input); const output = clone(input); return output; })(department);\nconsole.log(cloned);","prune-functions#prune() functions":"export function prune(input: T): T;\nexport function isPrune(input: unknown): T | null;\nexport function assertPrune(input: unknown): T;\nexport function validatePrune(input: unknown): IValidation;\n\nexport function createPrune(): (input: T) => T;\nexport function createIsPrune(): (input: unknown) => T | null;\nexport function createAssertPrune(): (input: unknown) => T;\nexport function createValidatePrune(): (input: unknown) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nDeep prune functions.When you want to remove every extra properties that are not defined in the type including nested objects, you can use typia.prune() function. Also, if you want to perform type safe pruning, you can use typia.isPrune(), typia.assertPrune() or typia.validatePrune() functions instead.\ntypia.isPrune(): typia.is() + typia.prune()\ntypia.assertPrune(): typia.assert() + typia.prune()\ntypia.validatePrune(): typia.validate() + typia.prune()\n\n\n\n\nimport typia from \"typia\";\n\nconst department: IDepartment = typia.random();\nconst pruned: IDepartment = typia.assertPrune(department);\nconsole.log(pruned);\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\nreturn (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst typia_1 = __importDefault(require(\"typia\"));\nconst department = (generator => {\nconst $generator = typia_1.default.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; return ({\nid: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.uuid) !== null && _e !== void 0 ? _e : $generator.uuid)(),\nname: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.string) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"minLength\",\nvalue: \"3\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _k !== void 0 ? _k : $generator.string)(((_l = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _l !== void 0 ? _l : $generator.integer)(3, 25)),\nlimit: (_q = (_p = (_o = ((_m = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _m !== void 0 ? _m : $generator.customs)) === null || _o === void 0 ? void 0 : _o.number) === null || _p === void 0 ? void 0 : _p.call(_o, [\n{\nname: \"type\",\nvalue: \"int\"\n}\n])) !== null && _q !== void 0 ? _q : ((_r = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _r !== void 0 ? _r : $generator.integer)(0, 100),\nclerks: ((_s = generator === null || generator === void 0 ? void 0 : generator.array) !== null && _s !== void 0 ? _s : $generator.array)(() => $ro1(_recursive, _recursive ? 1 + _depth : _depth))\n}); };\nconst $ro1 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; return ({\nname: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _e !== void 0 ? _e : $generator.string)(),\nage: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.number) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _k !== void 0 ? _k : $generator.number)(19, 100),\nauthority: (_p = (_o = (_m = ((_l = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _l !== void 0 ? _l : $generator.customs)) === null || _m === void 0 ? void 0 : _m.number) === null || _o === void 0 ? void 0 : _o.call(_m, [])) !== null && _p !== void 0 ? _p : ((_q = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _q !== void 0 ? _q : $generator.number)(0, 100),\njoined_at: (_u = (_t = (_s = ((_r = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _r !== void 0 ? _r : $generator.customs)) === null || _s === void 0 ? void 0 : _s.string) === null || _t === void 0 ? void 0 : _t.call(_s, [\n{\nname: \"format\",\nvalue: \"date\"\n}\n])) !== null && _u !== void 0 ? _u : ((_v = generator === null || generator === void 0 ? void 0 : generator.date) !== null && _v !== void 0 ? _v : $generator.date)()\n}); };\nreturn $ro0();\n})();\nconst pruned = (input => { const assert = input => {\nconst __is = input => {\nconst $is_uuid = typia_1.default.assertPrune.is_uuid;\nconst $is_date = typia_1.default.assertPrune.is_date;\nconst $io0 = input => \"string\" === typeof input.id && $is_uuid(input.id) && (\"string\" === typeof input.name && 3 <= input.name.length) && (\"number\" === typeof input.limit && parseInt(input.limit) === input.limit) && (Array.isArray(input.clerks) && input.clerks.every(elem => \"object\" === typeof elem && null !== elem && $io1(elem)));\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $guard = typia_1.default.assertPrune.guard;\nconst $is_uuid = typia_1.default.assertPrune.is_uuid;\nconst $is_date = typia_1.default.assertPrune.is_date;\nconst $ao0 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.id && ($is_uuid(input.id) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id\n})) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id\n})) && (\"string\" === typeof input.name && (3 <= input.name.length || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@minLength 3)\",\nvalue: input.name\n})) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.limit && (parseInt(input.limit) === input.limit || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit\n})) || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number\",\nvalue: input.limit\n})) && ((Array.isArray(input.clerks) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n})) && input.clerks.every((elem, _index1) => (\"object\" === typeof elem && null !== elem || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) && $ao1(elem, _path + \".clerks[\" + _index1 + \"]\", true && _exceptionable) || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n}));\nconst $ao1 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.name || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.age && (19 < input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age\n})) && (100 >= input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age\n})) || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age\n})) && (\"number\" === typeof input.authority || $guard(_exceptionable, {\npath: _path + \".authority\",\nexpected: \"number\",\nvalue: input.authority\n})) && (\"string\" === typeof input.joined_at && ($is_date(input.joined_at) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string (@format date)\",\nvalue: input.joined_at\n})) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string\",\nvalue: input.joined_at\n}));\nreturn (\"object\" === typeof input && null !== input || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n})) && $ao0(input, _path + \"\", true) || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n});\n})(input, \"$input\", true);\nreturn input;\n}; const prune = input => {\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nconst $is_uuid = typia_1.default.assertPrune.is_uuid;\nconst $is_date = typia_1.default.assertPrune.is_date;\nconst $pp0 = input => input.forEach(elem => {\nif (\"object\" === typeof elem && null !== elem)\n$po1(elem);\n});\nconst $po0 = input => {\nif (Array.isArray(input.clerks))\n$pp0(input.clerks);\nfor (const key of Object.keys(input)) {\nif (\"id\" === key || \"name\" === key || \"limit\" === key || \"clerks\" === key)\ncontinue;\ndelete input[key];\n}\n};\nconst $po1 = input => {\nfor (const key of Object.keys(input)) {\nif (\"name\" === key || \"age\" === key || \"authority\" === key || \"joined_at\" === key)\ncontinue;\ndelete input[key];\n}\n};\nif (\"object\" === typeof input && null !== input)\n$po0(input);\n}; assert(input); prune(input); return input; })(department);\nconsole.log(pruned);"}},"/docs/random":{"title":"Random","data":{"":"","random-function#random() function":"export function random(g?: IRandomGenerator): T;\n\n\n\nexport interface IRandomGenerator {\nboolean(): boolean;\ninteger(minimum?: number, maximum?: number): number;\nnumber(minimum?: number, maximum?: number): number;\nbigint(minimum?: bigint, maximum?: bigint): bigint;\nstring(length?: number): string;\narray(closure: (index: number) => T, count?: number): T[];\n\nuuid(): string;\nemail(): string;\nurl(): string;\nipv4(): string;\nipv6(): string;\npattern(regex: RegExp): string;\ndate(minimum?: number, maximum?: number): string;\ndatetime(minimum?: number, maximum?: number): string;\n\ncustoms?: IRandomGenerator.CustomMap;\n}\nexport namespace IRandomGenerator {\nexport type CustomMap = {\n[Type in keyof Customizable]?:\n(tags: ICommentTag[]) => Customizable[Type] | undefined;\n};\n\nexport interface ICommentTag {\nname: string;\nvalue?: string;\n}\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nYou can make every random data just by calling typia.random() function.When you call the typia.random() function, typia will analyze your type T, and writes optimal random generation code for the type T, in the compilation level. This is called AOT (Ahead of Time) compliation, and you may understand what it is just by reading below example code.\n\n\nimport typia from \"typia\";\n\nconst member: IMember = typia.random();\n\nconsole.log(member);\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst member = ((generator) => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\",\n},\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nemail:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"email\",\n},\n]) ?? (generator?.email ?? $generator.email)(),\nage:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\",\n},\n{\nname: \"maximum\",\nvalue: \"100\",\n},\n]) ?? (generator?.number ?? $generator.number)(19, 100),\n});\nreturn $ro0();\n})();\n\nconsole.log(member);","reusable-function#Reusable function":"export function createRandom(): (g?: IRandomGenerator) => T;\n\n\n\nexport interface IRandomGenerator {\nboolean(): boolean;\ninteger(minimum?: number, maximum?: number): number;\nnumber(minimum?: number, maximum?: number): number;\nbigint(minimum?: bigint, maximum?: bigint): bigint;\nstring(length?: number): string;\narray(closure: (index: number) => T, count?: number): T[];\n\nuuid(): string;\nemail(): string;\nurl(): string;\nipv4(): string;\nipv6(): string;\npattern(regex: RegExp): string;\ndate(minimum?: number, maximum?: number): string;\ndatetime(minimum?: number, maximum?: number): string;\n\ncustoms?: IRandomGenerator.CustomMap;\n}\nexport namespace IRandomGenerator {\nexport type CustomMap = {\n[Type in keyof Customizable]?:\n(tags: ICommentTag[]) => Customizable[Type] | undefined;\n};\n\nexport interface ICommentTag {\nname: string;\nvalue?: string;\n}\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nReusable typia.random() function generators.If you repeat to call typia.random() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createRandom() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const createRandomMember = typia.createRandom();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const createRandomMember = generator => {\nconst $generator = typia.createRandom.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nemail: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"email\"\n}\n]) ?? (generator?.email ?? $generator.email)(),\nage: (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"type\",\nvalue: \"int\"\n},\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n]) ?? (generator?.integer ?? $generator.integer)(20, 100)\n});\nreturn $ro0();\n};","comment-tags#Comment Tags":"You can specialize the behavior of typia.random() function by using comment tags.Below list shows which comment tags are supported in the typia.random() function.Let's see how those comment tags work with example code.\nSupported comment tags\nnumber\n@type {\"int\"|\"uint\"}\n@minimum {number}\n@maximum {number}\n@exclusiveMinimum {number}\n@exclusiveMaximum {number}\n@multipleOf {number}\n\n\nstring\n@minLength {number}\n@maxLength {number}\n@pattern {regex}\n@format {keyword}\nemail\nuuid\nipv4\nipv6\nurl\ndate: YYYY-MM-DD\ndate-time: Date.toISOString()\n\n\n\n\narray\n@minItems {number}\n@maxItems {number}\n\n\n\n\n\n\n\n\nimport typia from \"typia\";\n\nconst data: CommentTag = typia.random();\n\nconsole.log(data);\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nconst data = (generator => {\nconst $generator = typia.random.generator;\nconst $pick = typia.random.pick;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\ntype: (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"type\",\nvalue: \"uint\"\n}\n]) ?? (generator?.integer ?? $generator.integer)(0, 10),\nnumber: $pick([\n() => undefined,\n() => (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n]) ?? (generator?.number ?? $generator.number)(19, 100)\n])(),\nstring: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"minLength\",\nvalue: \"3\"\n}\n]) ?? (generator?.string ?? $generator.string)((generator?.integer ?? $generator.integer)(3, 25)),\npattern: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"pattern\",\nvalue: \"^[a-z]+$\"\n}\n]) ?? (generator?.pattern ?? $generator.pattern)(/^[a-z]+$/),\nformat: $pick([\n() => null,\n() => (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"date-time\"\n}\n]) ?? (generator?.datetime ?? $generator.datetime)()\n])(),\narray: (generator?.array ?? $generator.array)(() => (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"minItems\",\nvalue: \"3\"\n},\n{\nname: \"maxItems\",\nvalue: \"100\"\n},\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n]) ?? (generator?.uuid ?? $generator.uuid)(), (generator?.integer ?? $generator.integer)(3, 100))\n});\nreturn $ro0();\n})();\n\nconsole.log(data);","customization#Customization":"export function random(g?: IRandomGenerator): T;\nexport function createRandom: (g?: IRandomGenerator) => T;\n\n\n\nexport interface IRandomGenerator {\nboolean(): boolean;\ninteger(minimum?: number, maximum?: number): number;\nnumber(minimum?: number, maximum?: number): number;\nbigint(minimum?: bigint, maximum?: bigint): bigint;\nstring(length?: number): string;\narray(closure: (index: number) => T, count?: number): T[];\n\nuuid(): string;\nemail(): string;\nurl(): string;\nipv4(): string;\nipv6(): string;\npattern(regex: RegExp): string;\ndate(minimum?: number, maximum?: number): string;\ndatetime(minimum?: number, maximum?: number): string;\n\ncustoms?: IRandomGenerator.CustomMap;\n}\nexport namespace IRandomGenerator {\nexport type CustomMap = {\n[Type in keyof Customizable]?:\n(tags: ICommentTag[]) => Customizable[Type] | undefined;\n};\n\nexport interface ICommentTag {\nname: string;\nvalue?: string;\n}\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nYou can add custom comment tags for random data generation.As above IRandomGenerator.CustomMap has complicate currying function type, it may hard to understand for newcomers. However, such newcomers may easily understand, how to customize the random generation, after reading the following example.Just define custom comment tags like below, then everything would be done.\n\n\nimport typia from \"typia\";\nimport { RandomGenerator } from \"typia/lib/utils/RandomGenerator\";\n\nconst data: TagCustom = typia.random({\ncustoms: {\nstring: (tags: typia.IRandomGenerator.ICommentTag[]) => {\nif (tags.find((t) => t.name === \"dollar\") !== undefined)\nreturn \"$\" + RandomGenerator.integer();\n\nconst postfix = tags.find((t) => t.name === \"postfix\");\nif (postfix !== undefined)\nreturn RandomGenerator.string() + postfix.value;\n},\nnumber: (tags: typia.IRandomGenerator.ICommentTag[]) => {\nconst powerOf = tags.find((t) => t.name === \"powerOf\");\nif (powerOf !== undefined)\nreturn Math.pow(\nNumber(powerOf.value),\nRandomGenerator.integer(1, 4),\n);\n},\n}\n});\n\nconsole.log(data);\n\ninterface TagCustom {\n/**\n* Regular feature supported by typia\n*\n* @format uuid\n*/\nid: string;\n\n/**\n* Custom feature composed with \"$\" + number\n*\n* @dollar\n*/\ndollar: string;\n\n/**\n* Custom feature composed with string + \"abcd\"\n*\n* @postfix abcd\n*/\npostfix: string;\n\n/**\n* Custom feature meaning x^y\n*\n* @powerOf 10\n*/\npower: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { RandomGenerator } from \"typia/lib/utils/RandomGenerator\";\n\nconst data = (generator => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n]) ?? (generator?.uuid ?? $generator.uuid)(),\ndollar: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"dollar\"\n}\n]) ?? (generator?.string ?? $generator.string)(),\npostfix: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"postfix\",\nvalue: \"abcd\"\n}\n]) ?? (generator?.string ?? $generator.string)(),\npower: (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"powerOf\",\nvalue: \"10\"\n}\n]) ?? (generator?.number ?? $generator.number)(0, 100)\n});\nreturn $ro0();\n})({\ncustoms: {\nstring: (tags) => {\nif (tags.find((t) => t.name === \"dollar\") !== undefined)\nreturn \"$\" + RandomGenerator.integer();\nconst postfix = tags.find((t) => t.name === \"postfix\");\nif (postfix !== undefined)\nreturn RandomGenerator.string() + postfix.value;\n},\nnumber: (tags) => {\nconst powerOf = tags.find((t) => t.name === \"powerOf\");\nif (powerOf !== undefined)\nreturn Math.pow(Number(powerOf.value), RandomGenerator.integer(1, 4));\n},\n},\n});\n\nconsole.log(data);"}},"/docs/setup":{"title":"Setup","data":{"":"","summary#Summary":"npm install typia\nnpx typia setup\n\n\n\npnpm install typia\npnpm typia setup --manager pnpm\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn add typia\nyarn typia setup --manager yarn\n\n\nIf you're using standard TypeScript compiler, you can use transform mode.Just run npx typia setup command, then everything be prepared.\nStandard TypeScript Compiler: Microsoft/TypeScript\n\n\n\n\nnpm install typia\nnpm install --save-dev typescript\n\nnpx typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\npnpm install typia\npnpm install --save-dev typescript\n\npnpm typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\nyarn add typia\nyarn add -D typescript\n\nyarn typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\nOtherwise you are using non-standard TypeScript compiler, then you can't use transformation mode.Instead, you can use generation mode.Run typia generate command with input directory, then transformed TypeScript files would be generated into the output directory.\nNon-standard TypeScript Compilers\nSWC\nESBuild\nBabel","transformation#Transformation":"","concepts#Concepts":"AOT (Ahead of Time) compilation mode.When you write a TypeScript code calling typia.createIs() function and compile it through tsc command, typia will replace the typia.createIs() statement to optimal validation code in the compiled JavaScript file, for the IMember type.This is the transform mode performing AOT (Ahead of Time) compilation.\n\n\nimport typia from \"typia\";\n\nexport const check = typia.createIs();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nexport const check = input => {\nconst $is_uuid = typia.createIs.is_uuid;\nconst $is_email = typia.createIs.is_email;\nreturn \"object\" === typeof input &&\nnull !== input &&\n(\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n(\"string\" === typeof input.email && $is_email(input.email)) &&\n(\"number\" === typeof input.age && 19 < input.age && 100 >= input.age)\n);\n};","setup-wizard#Setup Wizard":"npm install --save typia\nnpx typia setup\n\n\n\npnpm install --save typia\npnpm typia setup --manager pnpm\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn add typia\nyarn typia setup --manager yarn\n\n\nYou can turn on transformation mode just by running npx typia setup command.Setup wizard would be executed, and it will do everything for the transformation.","manual-setup#Manual Setup":"npm install --save typia\nnpm install --save-dev typescript ts-patch ts-node\n\n\n\npnpm install --save typia\npnpm install --save-dev typescript ts-patch ts-node\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn add typia\nyarn add -D typescript ts-patch ts-node\n\n\nIf you want to install typia manually, just follow the steps.At first, install typia as depepdency. And then, install typescript, ts-patch and ts-node as devDependencies.\n{\n\"strict\": true,\n\"strictNullChecks\": true,\n\"compilerOptions\": {\n\"plugins\": [\n{ \"transform\": \"typia/lib/transform\" }\n]\n}\n}\nAt second, open your tsconfig.json file and configure like above.As typia generates optimal operation code through transformation, you've to configure it as a plugin. Also, never forget to configure strict (or strictNullChecks) to be true. It is essential option for modern TypeScript development.\n{\n\"scripts\": {\n\"postinstall\": \"ts-patch install\"\n},\n\"dependencies\": {\n\"typia\": \"^4.1.8\"\n},\n\"devDependencies\": {\n\"ts-node\": \"^10.9.1\",\n\"ts-patch\": \"^3.0.2\",\n\"typescript\": \"^5.1.6\"\n}\n}\n\n\n\nnpm run postinstall\n\n\n\npnpm postinstall\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn postinstall\n\n\nAt last, open package.json file and configure npm run postinstall command like above.Of course, you've to run the npm run postinstall command after the configuration.For reference, ts-patch is an helper library of TypeScript compiler that supporting custom transformations by plugins. From now on, whenever you run tsc command, your typia function call statements would be transformed to the optimal operation codes in the compiled JavaScript files.","generation#Generation":"# INSTALL TYPIA\nnpm install --save typia\nnpm install --save-dev typescript\n\n# GENERATE TRANSFORMED TYPESCRIPT CODES\nnpx typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\n# INSTALL TYPIA\npnpm install --save typia\npnpm install --save-dev typescript\n\n# GENERATE TRANSFORMED TYPESCRIPT CODES\npnpm typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\n# INSTALL TYPIA\nyarn add typia\nyarn add -D typescript\n\n# GENERATE TRANSFORMED TYPESCRIPT CODES\nyarn typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\nFor frontend projects.If you're using non-standard TypeScript compiler, you can't use [transform mode\nNon-standard TypeScript compilers:\nSWC in Next.JS\nESBuild in Vite\nBabel in Create-React-App\n\n\n\nInstead, you should utilize the generation mode.Install typia through npm install command, and run typia generate command. Then, generator of typia reads your TypeScript codes of --input, and writes transformed TypeScript files into the --output directory, like below.If you want to specify other TypeScript project file instead of tsconfig.json, you can use --project option.\n\n\nimport typia from \"typia\";\n\nimport { IMember } from \"../structures/IMember\";\n\nexport const check = typia.createIs();\n\n\n\nimport typia from \"typia\";\nimport { IMember } from \"../structures/IMember\";\nexport const check = (input: any): input is IMember => {\nconst $is_uuid = (typia.createIs as any).is_uuid;\nconst $is_email = (typia.createIs as any).is_email;\nreturn \"object\" === typeof input &&\nnull !== input &&\n(\n\"string\" === typeof input.id && is_uuid(input.id) &&\n(\"string\" === typeof input.email && $is_email(input.email)) &&\n(\"number\" === typeof input.age && 19 <= input.age && 100 >= input.age)\n);\n};\n\n\n\n\n\n\nWhy not support non-standard compilers?\nNon-standard TypeScript compilers are removing every type informations, and skipping type checkings for repid compilation. By the way, without those type informations, typia can't do anything. This is the reason why typia doesn't support non-standard TypeScript compilers.By the way, SWC is preparing a new project STC keeping type informations. Therefore, typia will support it.","vite#Vite":"If you've made your frontend project through vite, you can still utilize the transformation mode.Just configure vite.config.ts file below, that's all.\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport typescript from \"rollup-plugin-typescript2\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\nesbuild: false,\nplugins: [\nreact(),\ntypescript()\n]\n});","webpack#Webpack":"# TYPIA\nnpm install typia\nnpx typia setup\n\n# WEBPACK + TS-LOADER\nnpm install --save-dev ts-loader\nnpm install --save-dev webpack webpack-cli\n\n\n\n# TYPIA\npnpm install typia\npnpm typia setup --manager pnpm\n\n# WEBPACK + TS-LOADER\npnpm install --save-dev ts-loader\npnpm install --save-dev webpack webpack-cli\n\n\n\n##############################\n# YARN BERRY IS NOT SUPPORTED\n##############################\n# TYPIA\nyarn add typia\nyarn typia setup --manager yarn\n\n# WEBPACK + TS-LOADER\nyarn add -D ts-loader\nyarn add -D webpack webpack-cli\n\n\nWhen you're using webpack as a bundler, you can still utilize the transformation mode.Just install ts-loader as well as webpack, and configure webpack.config.js file like below, that's all.\nconst path = require(\"path\");\nconst nodeExternals = require('webpack-node-externals');\n\nmodule.exports = {\n// CUSTOMIZE HERE\nentry: ['./src/index.tsx'],\noutput: {\npath: path.join(__dirname, 'dist'),\nfilename: 'index.js',\n},\noptimization: {\nminimize: false\n},\n\n// JUST KEEP THEM\nmode: 'development',\ntarget: 'node',\nmodule: {\nrules: [\n{\ntest: /\\.ts$/,\nexclude: /node_modules/,\nloader: 'ts-loader',\n}\n]\n},\nresolve: {\nextensions: ['.tsx', '.ts', '.js'],\n},\n};"}},"/docs/utilization/prisma":{"title":"Prisma","data":{"":"model bbs_articles {\nid String @id @db.Uuid /// @format uuid\ncreated_at DateTime @db.Timestamptz\n\n/// @minItems 1\nsnapshots bbs_article_snapshots[]\n}\n\nmodel bbs_article_snapshots {\nid String @id @db.Uuid /// @format uuid\nbbs_article_id String @db.Uuid /// @format uuid\nformat String @db.VarChar\n\n/// @minLength 5\n/// @maxLength 80\ntitle String @db.VarChar\nbody String\ncreated_at DateTime @db.Timestamptz\n\narticle bbs_articles @relation(fields: [bbs_article_id], references: [id])\n}\n\n\n\n/**\n* Model bbs_articles\n*/\nexport type bbs_articles = {\n/**\n* @format uuid\n*/\nid: string\ncreated_at: Date\n}\n\n/**\n* Model bbs_article_snapshots\n*/\nexport type bbs_article_snapshots = {\n/**\n* @format uuid\n*/\nid: string\n/**\n* @format uuid\n*/\nbbs_article_id: string\nformat: string\n/**\n* @minLength 5\n* @maxLength 80\n*/\ntitle: string\nbody: string\ncreated_at: Date\n}\n\n\nWhen defining prisma.schema file, you can write comment tags just by using /// statement.After the definition, you utillize some validate function like typia.assert(), for type safe insertion."}},"/docs/utilization/nestjs":{"title":"Nestjs","data":{"":"Nestia is a set of helper libraries for NestJS, supporting below features:\n@nestia/core: superfast decorators using typia\n@nestia/sdk: evolved SDK and Swagger generators\n@nestia/migrate: Swagger to NestJS\nnestia: just CLI (command line interface) tool\n\n\nimport { Controller } from \"@nestjs/common\";\nimport { TypedBody, TypedRoute } from \"@nestia/core\";\n\nimport type { IBbsArticle } from \"@bbs-api/structures/IBbsArticle\";\n\n@Controller(\"bbs/articles\")\nexport class BbsArticlesController {\n/**\n* Store a new content.\n*\n* @param inupt Content to store\n* @returns Newly archived article\n*/\n@TypedRoute.Post() // 200x faster and safer JSON.stringify()\npublic async store(\n@TypedBody() input: IBbsArticle.IStore // 20,000x faster validator\n): Promise;\n// do not need DTO class definition,\n// just fine with interface\n}\n\nLeft: NestJS server code\nRight: Client code using SDK"}},"/docs/utilization/trpc":{"title":"Trpc","data":{"":"import { initTRPC } from \"@trpc/server\";\nimport { v4 } from \"uuid\";\nimport typia from \"typia\";\n\nimport { IBbsArticle } from \"../structures/IBbsArticle\";\n\nconst server = initTRPC.create();\n\nexport const appRouter = server.router({\nstore: server.procedure\n.input(typia.createAssert())\n.output(typia.createAssert())\n.query(({ input }) => {\nreturn {\nid: v4(),\nwriter: input.writer,\ntitle: input.title,\nbody: input.body,\ncreated_at: new Date().toString(),\n};\n})\n});\nexport type AppRouter = typeof appRouter;"}},"/docs/validators/is":{"title":"Is","data":{"":"","is-function#is() function":"export function is(input: T): input is T;\nexport function is(input: unknown): input is T;\nTests a value type.When you need to test an instance type, just call typia.is() function.If the input value is following type T, true value would be returned. Otherwise, false would be returned.\n\n\n\nAOT compliation\nIf you'd used other competitive validator libraries like ajv or class-validator, you may found that typia does not require any extra schema definition. If you have not experienced them, I can sure that you may get shocked after reading below extra schema definition files.\najv requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\nYeah, typia needs only pure TypeScript type. As typia is a compiler library, it can analyze TypeScript type by itself, and possible to write the optimal validation code like below. This is the key principle of typia, which needs only one line with pure TypeScript type.\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst matched: boolean = typia.is({\nid: v4(),\nemail: \"samchon.github@gmai19l.com\",\nage: 30,\n});\n\nconsole.log(matched); // true\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst matched = (input => {\nconst $is_uuid = typia_1.default.is.is_uuid;\nconst $is_email = typia_1.default.is.is_email;\nreturn \"object\" === typeof input &&\nnull !== input &&\n(\n\"string\" === typeof input.id && true === $is_uuid(input.id) &&\n(\"string\" === typeof input.email && $is_email(input.email)) &&\n(\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n)\n);\n})({\nid: (0, uuid_1.v4)(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\n});\n\nconsole.log(matched); // true","equals-function#equals() function":"export function equals(input: T): input is T;\nexport function equals(input: unknown): input is T;\nMore strict checker prohibiting superfluous properties.typia.is() can test instance type, but it allows superfluous properties.If you want to prohibit those superfluous properties, you can use typia.equals() function instead.\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst input: unknown = {\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nextra: \"superfluous property\", // extra\n};\nconst is: boolean = typia.is(input);\nconst equals: boolean = typia.equals(input);\n\nconsole.log(is, equals); // true, false\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst input = {\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nextra: \"superfluous property\", // extra\n};\n\nconst is = ((input) => {\nconst $is_uuid = typia.is.is_uuid;\nconst $is_email = typia.is.is_email;\nreturn (\n\"object\" === typeof input &&\nnull !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n})(input);\nconst equals = ((input, _exceptionable = true) => {\nconst $is_uuid = typia.equals.is_uuid;\nconst $is_email = typia.equals.is_email;\nconst $io0 = (input, _exceptionable = true) =>\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n(3 === Object.keys(input).length ||\nObject.keys(input).every((key) => {\nif ([\"id\", \"email\", \"age\"].some((prop) => key === prop))\nreturn true;\nconst value = input[key];\nif (undefined === value) return true;\nreturn false;\n}));\nreturn \"object\" === typeof input && null !== input && $io0(input, true);\n})(input);\n\nconsole.log(is, equals); // true, false","reusable-functions#Reusable functions":"export function createIs(): (input: unknown) => input is T;\nexport function createEquals(): (input: unknown) => input is T;\nReusable typia.is() function generators.If you repeat to call typia.is() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createIs() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const check = typia.createIs();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const check = (input) => {\nconst $is_uuid = typia.createIs.is_uuid;\nconst $is_email = typia.createIs.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};","auto-type-casting#Auto Type Casting":"export function is(input: unknown): input is T;\nexport function equals(input: unknown): input is T;\nexport function createIs(): (input: unknown) => input is T;\nexport function createEquals(): (input: unknown) => input is T;\ntypia.is() function can be used for type casting.When target input value is following the type T, therefore true value be returned, typia.is() function automatically casts the input value to the type T. Therefore, you can utilize the typia.is() function for safe type casting tool like below:\nconst input: unknown = {\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\n} as any;\nif (typia.is(input)) // auto type casting\nconsole.log(input.id, input.email, input.age);","customization#Customization":"You can enhance validation logic by using comment tags.Also, with the comment tags, you can add your custom validation logic, too.If you want to know about such comment tags detaily, read below article:\nComment Tags\nOutline\nSupported Tags\nCustomization\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","performance#Performance":"Super-fast and super-safe.Comparing typia.is() function with other competitive libraries, maximum 20,000x faster.Furthermore, only typia can validate complicate union types.\nMeasured on Intel i5-1135g7, Surface Pro 8\n\nComponents\ttypia\tTypeBox\tajv\tio-ts\tzod\tC.V.\tEasy to use\t✅\t❌\t❌\t❌\t❌\t❌\tObject (simple)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (recursive)\t✔\t❌\t✔\t✔\t✔\t✔\t✔\tObject (union, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tObject (union, explicit)\t✔\t✔\t✔\t✔\t✔\t❌\tObject (additional tags)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (template literal types)\t✔\t✔\t✔\t❌\t❌\t❌\tObject (dynamic properties)\t✔\t✔\t✔\t❌\t❌\t❌\tArray (rest tuple)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tArray (recursive)\t✔\t✔\t✔\t✔\t✔\t❌\tArray (recursive, union)\t✔\t✔\t❌\t✔\t✔\t❌\tArray (R+U, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated, union)\t✅\t❌\t❌\t❌\t❌\t❌\tUltimate Union Type\t✅\t❌\t❌\t❌\t❌\t❌\n\nC.V. means class-validator"}},"/docs/validators/assert":{"title":"Assert","data":{"":"","assert-function#assert() function":"export function assert(input: T): T;\nexport function assert(input: unknown): T;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\nAsserts a value type.typia.assert() function throws a TypeGuardError when wrong type comes.The TypeGuardError instance has only the first type error info, with access path and expected type. In the below example case, as the age property is wrong with its definition (@exclusiveMinimum), such TypeGuardError would be thrown:\nmethod: typia.assert()\npath: input.age\nvalue: 18,\nexpected: number (@exclusiveMinimum 19)\n\n\n\n\n\nAOT compliation\nIf you'd used other competitive validator libraries like ajv or class-validator, you may found that typia does not require any extra schema definition. If you have not experienced them, I can sure that you may get shocked after reading below extra schema definition files.\najv requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\nYeah, typia needs only pure TypeScript type. As typia is a compiler library, it can analyze TypeScript type by itself, and possible to write the optimal validation code like below. This is the key principle of typia, which needs only one line with pure TypeScript type.\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\ntypia.assert({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 18, // wrong, must be greater than 19\n});\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\n((input) => {\nconst $guard = typia.assert.guard;\nconst $is_uuid = typia.assert.is_uuid;\nconst $is_email = typia.assert.is_email;\nconst __is = (input) => {\nconst $is_uuid = typia.assert.is_uuid;\nconst $is_email = typia.assert.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n})({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\n});","assertequals-function#assertEquals() function":"export function assertEquals(input: T): T;\nexport function assertEquals(input: unknown): T;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\nMore strict assert function prohibiting superfluous properties.typia.assert() function inspects input value type and throws TypeGuardError when mismatched, however, it can't detect superfluous properties. If you want to prohibit those superfluous properties, therefore throws an TypeGuardError when superfluous property exists, use typia.assertEquals function instead.In the below example case, as sex property is not defined in the IMember type, such TypeGuardError would be thrown:\nmethod: typia.assertEquals()\npath: input.sex\nvalue: 1,\nexpected: undefined\n\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\ntypia.assert({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nsex: 1, // extra\n});\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\n((input) => {\nconst $guard = typia.assert.guard;\nconst $is_uuid = typia.assert.is_uuid;\nconst $is_email = typia.assert.is_email;\nconst __is = (input) => {\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n})({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nsex: 1, // extra\n});","reusable-functions#Reusable functions":"export function createAssert(): (input: unknown) => T;\nexport function createAssertEquals(): (input: unknown) => T;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\nReusable typia.assert() function generators.If you repeat to call typia.assert() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createAssert() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const assertMember = typia.createAssert();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const assertMember = (input) => {\nconst $guard = typia.createAssert.guard;\nconst $is_uuid = typia.createAssert.is_uuid;\nconst $is_email = typia.createAssert.is_email;\nconst __is = (input) => {\nconst $is_uuid = typia.createAssert.is_uuid;\nconst $is_email = typia.createAssert.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age &&\n100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n};","customization#Customization":"You can enhance validation logic by using comment tags.Also, with the comment tags, you can add your custom validation logic, too.If you want to know about such comment tags detaily, read below article:\nComment Tags\nOutline\nSupported Tags\nCustomization\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","performance#Performance":"Super-fast and super-safe.Comparing typia.assert() function with other competitive libraries, maximum 20,000x faster.Furthermore, only typia can validate complicate union types.\nMeasured on Intel i5-1135g7, Surface Pro 8\n\nComponents\ttypia\tTypeBox\tajv\tio-ts\tzod\tC.V.\tEasy to use\t✅\t❌\t❌\t❌\t❌\t❌\tObject (simple)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (recursive)\t✔\t❌\t✔\t✔\t✔\t✔\t✔\tObject (union, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tObject (union, explicit)\t✔\t✔\t✔\t✔\t✔\t❌\tObject (additional tags)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (template literal types)\t✔\t✔\t✔\t❌\t❌\t❌\tObject (dynamic properties)\t✔\t✔\t✔\t❌\t❌\t❌\tArray (rest tuple)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tArray (recursive)\t✔\t✔\t✔\t✔\t✔\t❌\tArray (recursive, union)\t✔\t✔\t❌\t✔\t✔\t❌\tArray (R+U, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated, union)\t✅\t❌\t❌\t❌\t❌\t❌\tUltimate Union Type\t✅\t❌\t❌\t❌\t❌\t❌\n\nC.V. means class-validator"}},"/docs/validators/comment-tags":{"title":"Comment Tags","data":{"":"","outline#Outline":"typia can use comment tags for type validation.In TypeScript (and JavaScript), writing @ character in comment is called \"Comment Tag\", and typia utilizes such comment tags for enhancing type validation logic. As you can see from below example code, typia analyzes @tagName value patterned comment tags, and generates optimal validation logic in the compilation level.Therefore, don't be afraid typia uses only pure TypeScript types for type validation schema. Don't be afraid about TypeScript does not support integer type. With those comment tags, you can express any type that exists in the world.\nQ: How to validate integer type? TypeScript does not support it\nA: Write a comment tag @type int on the target property\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","supported-tags#Supported Tags":"typia supports those comment tags.I think below list is not hard to understand.\nnumber\n@type {\"int\"|\"uint\"}\n@minimum {number}\n@maximum {number}\n@exclusiveMinimum {number}\n@exclusiveMaximum {number}\n@multipleOf {number}\n\n\nstring\n@minLength {number}\n@maxLength {number}\n@pattern {regex}\n@format {keyword}\nemail\nuuid\nipv4\nipv6\nurl\ndate: YYYY-MM-DD\ndate-time: Date.toISOString()\n\n\n\n\narray\n@minItems {number}\n@maxItems {number}","customization#Customization":"export function is(input: unknown): input is T;\nexport function assert(input: unknown): T;\nexport function validate(input: unknown): IValidation;\n\nexport const customValidators: CustomValidatorMap;\n\n\n\nexport interface CustomValidatorMap {\nsize(): number;\nsize(name: string): number;\n\n// Type: {number, bigint, string}\nhas: (name: string) => (type: keyof Customizable) => boolean;\nget:\n(name: string) =>\n(type: Type) =>\nCustomValidatorMap.Closure | undefined;\nerase:\n(name: string) =>\n(type: keyof Customizable) => boolean;\ninsert:\n(name: string) =>\n(type: Type) =>\n(closure: CustomValidatorMap.Closure) => boolean;\n}\nexport namespace CustomValidatorMap {\nexport type Closure =\n(text: string) => // tag name\n(value: Customizable[Type]) => boolean; // instance value\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nYou can add custom comment tags for type validation.If you need addtional comment tag for type validation, just define it by yourself. Write your custom validation logic as a closure function, and register it through typia.customValidationMap.insert() function, following above CustomValidatorMap and Customizable types.Note that, 1st parameter of typia.customValidationMap.insert() function means tag name, and 2nd parameter means instance type (boolean|number|bigint|string). Also, when defining closure currying function of validation logic, 1st parameter means tag name and 2nd means input value.If you're not familiar with functional programming, just read below example code:\n\n\nimport typia from \"typia\";\n\nexport const checkTagCustom = typia.createIs();\n\ntypia.customValidators.insert(\"powerOf\")(\"number\")(\n(text: string) => { // tag name\nconst denominator: number = Math.log(Number(text));\nreturn (value: number) => { // input value\nvalue = Math.log(value) / denominator;\nreturn Math.abs(value - Math.floor(value)) < .000001;\n};\n}\n);\ntypia.customValidators.insert(\"dollar\")(\"string\")(\n() => (value: string) => value.startsWith(\"$\"),\n);\n\ninterface TagCustom {\n/**\n* @powerOf 10\n*/\npowerOf: number;\n\n/**\n* @dollar\n*/\ndollar: string;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkTagCustom = (input) => {\nconst $is_custom = typia.createIs.is_custom;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"number\" === typeof input.powerOf &&\n$is_custom(\"powerOf\", \"number\", \"10\", input.powerOf) &&\n\"string\" === typeof input.dollar &&\n$is_custom(\"dollar\", \"string\", \"\", input.dollar)\n);\n};\n\ntypia.customValidators.insert(\"powerOf\")(\"number\")(\n(text) => {\nconst denominator = Math.log(Number(text));\nreturn (value) => {\nvalue = Math.log(value) / denominator;\nreturn Math.abs(value - Math.floor(value)) < 0.000001;\n};\n}\n);\ntypia.customValidators.insert(\"dollar\")(\"string\")(\n() => (value) => value.startsWith(\"$\"),\n);"}},"/docs/validators/validate":{"title":"Validate","data":{"":"","validate-function#validate() function":"export function validate(input: T): IValidation;\nexport function validate(input: unknown): IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nValidates a value type.typia.validate() function validates input value type, and archives every type errors detaily into IValidation.IFailure.errors array, when the input value is not following the promised type T. Of course, if the parametric input value is following the type T, IValidation.ISuccess instance would be returned.In the below example case, as id and age values are different with its definition of IMember, such errors would be archived into the IValidation.IFailure.errors array.\nerrors[0]\npath: input.id\nexpected: string\nvalue: 5\n\n\nerrors[1]\npath: input.age\nexpected: number (@type int)\nvalue: 20.75\n\n\n\n\n\n\n\nAOT compliation\nIf you'd used other competitive validator libraries like ajv or class-validator, you may found that typia does not require any extra schema definition. If you have not experienced them, I can sure that you may get shocked after reading below extra schema definition files.\najv requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\nYeah, typia needs only pure TypeScript type. As typia is a compiler library, it can analyze TypeScript type by itself, and possible to write the optimal validation code like below. This is the key principle of typia, which needs only one line with pure TypeScript type.\n\n\n\nimport typia from \"typia\";\n\nconst res: typia.IValidation = typia.validate({\nid: 5, // wrong, must be string (uuid)\nage: 20.75, // wrong, not integer\nemail: \"samchon.github@gmail.com\",\n});\n\nif (!res.success) console.log(res.errors);\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst res = ((input) => {\nconst __is = (input) => {\nconst $is_uuid = typia.validate.is_uuid;\nconst $is_email = typia.validate.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nconst errors = [];\nconst $report = typia.validate.report(errors);\nconst $is_uuid = typia.validate.is_uuid;\nconst $is_email = typia.validate.is_email;\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $vo0 = (input, _path, _exceptionable = true) =>\n[\n(\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n}),\n(\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n}),\n(\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}),\n].every((flag) => flag);\nreturn (\n(((\"object\" === typeof input && null !== input) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$vo0(input, _path + \"\", true)) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})\n);\n})(input, \"$input\", true);\nconst success = 0 === errors.length;\nreturn {\nsuccess,\nerrors,\ndata: success ? input : undefined,\n};\n})({\nid: 5, // wrong, must be string (uuid)\nage: 20.75, // wrong, not integer\nemail: \"samchon.github@gmail.com\",\n});\nif (!res.success) console.log(res.errors);","validateequals-function#validateEquals() function":"export function validateEquals(input: T): IValidation;\nexport function validateEquals(input: unknown): IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nMore strict validatae function prohibiting superfluous properties.typia.validate function detects every type errors of input value, however, it can't detect superfluous properties. If you want to prohibit those superfluous properties, so that archive them into IValidation.IFailure.errors array, use typia.validateEquals() function instead.In the below example case, as id property is different with its type definition and sex property is not defined in the IMember type, such errors would be archived into the IValidation.IFailure.errors array:\nerrors[0]\npath: input.id\nexpected: string (@format uuid)\nvalue: something\n\n\nerrors[1]\npath: input.sex\nexpected: undefined\nvalue: 1\n\n\n\n\n\n\nimport typia from \"typia\";\n\nconst res: typia.IValidation = typia.validateEquals({\nage: 30,\nemail: \"samchon.github@gmail.com\",\nid: \"something\", // wrong, must be string (uuid)\nsex: 1, // extra property\n});\n\nif (!res.success) console.log(res.errors);\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst res = ((input) => {\nconst __is = (input, _exceptionable = true) => {\nconst $is_uuid = typia.validateEquals.is_uuid;\nconst $is_email = typia.validateEquals.is_email;\nconst $io0 = (input, _exceptionable = true) =>\n\"string\" === typeof input.id &&\n$is_uuid(input.id) &&\n\"string\" === typeof input.email &&\n$is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age &&\n(3 === Object.keys(input).length ||\nObject.keys(input).every((key) => {\nif ([\"id\", \"email\", \"age\"].some((prop) => key === prop))\nreturn true;\nconst value = input[key];\nif (undefined === value) return true;\nreturn false;\n}));\nreturn \"object\" === typeof input && null !== input && $io0(input, true);\n};\nconst errors = [];\nconst $report = typia.validateEquals.report(errors);\nconst $is_uuid = typia.validateEquals.is_uuid;\nconst $is_email = typia.validateEquals.is_email;\nconst $join = typia.validateEquals.join;\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $vo0 = (input, _path, _exceptionable = true) =>\n[\n(\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n}),\n(\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n}),\n(\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}),\n3 === Object.keys(input).length ||\nfalse === _exceptionable ||\nObject.keys(input)\n.map((key) => {\nif (\n[\"id\", \"email\", \"age\"].some(\n(prop) => key === prop,\n)\n)\nreturn true;\nconst value = input[key];\nif (undefined === value) return true;\nreturn $report(_exceptionable, {\npath: _path + $join(key),\nexpected: \"undefined\",\nvalue: value,\n});\n})\n.every((flag) => flag),\n].every((flag) => flag);\nreturn (\n(((\"object\" === typeof input && null !== input) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$vo0(input, _path + \"\", true)) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})\n);\n})(input, \"$input\", true);\nconst success = 0 === errors.length;\nreturn {\nsuccess,\nerrors,\ndata: success ? input : undefined,\n};\n})({\nage: 30,\nemail: \"samchon.github@gmail.com\",\nid: \"something\", // wrong, must be string (uuid)\nsex: 1, // extra property\n});\n\nif (!res.success) console.log(res.errors);","reusable-functions#Reusable functions":"export function createValidate = (input: unknown) => IValidation;\nexport function createValidateEquals = (input: unknown) => IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nReusable typia.validate() function generators.If you repeat to call typia.validate() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createValidate() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const validateMember = typia.createValidate();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const validateMember = (input) => {\nconst __is = (input) => {\nconst $is_uuid = typia.createValidate.is_uuid;\nconst $is_email = typia.createValidate.is_email;\nreturn (\n\"object\" === typeof input &&\nnull !== input &&\n\"string\" === typeof input.id &&\n$is_uuid(input.id) &&\n\"string\" === typeof input.email &&\n$is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nconst errors = [];\nconst $report = typia.createValidate.report(errors);\nconst $is_uuid = typia.createValidate.is_uuid;\nconst $is_email = typia.createValidate.is_email;\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $vo0 = (input, _path, _exceptionable = true) =>\n[\n(\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n}),\n(\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n}),\n(\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}),\n].every((flag) => flag);\nreturn (\n(((\"object\" === typeof input && null !== input) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$vo0(input, _path + \"\", true)) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})\n);\n})(input, \"$input\", true);\nconst success = 0 === errors.length;\nreturn {\nsuccess,\nerrors,\ndata: success ? input : undefined,\n};\n};","discriminated-union#Discriminated Union":"export function validate(input: T): IValidation;\nexport function validate(input: unknown): IValidation;\nexport function createValidate(): (input: unknown) => IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nSpecify type through if condition.typia.IValidation is an union type of typia.IValidation.ISuccess and typia.IValidation.IFailure. Also, they have a common property success of boolean type, but different literal values. In that case, if you write a if condition about the success property, you can specify the union type like below.In TypeScript, such union type specification through common property (of different literal value() is called \"Discriminated Union\". Therefore, when using typia.validate() function, let's utilize such discriminated union specification for convenience.\nimport typia from \"typia\";\n\nconst something: unknown = ...;\nconst result: typia.IValidation = typia.validate(something);\n\nif (results.success) {\n// become typia.IValidation.Success type\nresult.data; // accessible\n}\nelse {\n// become typia.IValidation.Failure type\nresult.errors; //accessible\n}","customization#Customization":"You can enhance validation logic by using comment tags.Also, with the comment tags, you can add your custom validation logic, too.If you want to know about such comment tags detaily, read below article:\nComment Tags\nOutline\nSupported Tags\nCustomization\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","performance#Performance":"Super-fast and super-safe.Comparing typia.validate() function with other competitive libraries, maximum 20,000x faster.Furthermore, only typia can validate complicate union types.\nMeasured on Intel i5-1135g7, Surface Pro 8\n\nComponents\ttypia\tTypeBox\tajv\tio-ts\tzod\tC.V.\tEasy to use\t✅\t❌\t❌\t❌\t❌\t❌\tObject (simple)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (recursive)\t✔\t❌\t✔\t✔\t✔\t✔\t✔\tObject (union, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tObject (union, explicit)\t✔\t✔\t✔\t✔\t✔\t❌\tObject (additional tags)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (template literal types)\t✔\t✔\t✔\t❌\t❌\t❌\tObject (dynamic properties)\t✔\t✔\t✔\t❌\t❌\t❌\tArray (rest tuple)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tArray (recursive)\t✔\t✔\t✔\t✔\t✔\t❌\tArray (recursive, union)\t✔\t✔\t❌\t✔\t✔\t❌\tArray (R+U, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated, union)\t✅\t❌\t❌\t❌\t❌\t❌\tUltimate Union Type\t✅\t❌\t❌\t❌\t❌\t❌\n\nC.V. means class-validator"}},"/playground":{"title":"Index","data":{"":""}},"/":{"title":"Index","data":{"":"","outline#Outline":"// RUNTIME VALIDATORS\nexport function is(input: unknown | T): input is T; // returns boolean\nexport function assert(input: unknown | T): T; // throws TypeGuardError\nexport function validate(input: unknown | T): IValidation; // detailed\nexport const customValidators: CustomValidatorMap; // customizable\n\n// ENHANCED JSON\nexport function application<...Args>(): IJsonApplication; // JSON schema\nexport function assertParse(input: string): T; // type safe parser\nexport function assertStringify(input: T): string; // safe and faster\n// +) isParse, validateParse\n// +) stringify, isStringify, validateStringify\n\n// RANDOM DATA GENERATOR\nexport function random(g?: Partial): Primitive;\nTypia is a transformer library, supporting those features:\nSuper-fast Runtime Validators\nSafe JSON parse and fast stringify\nJSON schema generator\nRandom data generator\n\n\n\n\n\nOnly one line required, with pure TypeScript type\n\nRuntime validator is 20,000x faster than class-validator\n\nJSON serialization is 200x faster than class-transformer","sponsors#Sponsors":"Thanks for your support.Your donation would encourage typia development."}},"/docs/pure":{"title":"Pure TypeScript","data":{"":"","outline#Outline":"typia.assert(article);\ntypia needs only one line with pure TypeScript type.You know what? Every other validator libraries need extra schema definition, that is different with pure TypeScript type. For an example, class-validator is the most famouse validator due to used in NestJS. However, NestJS and class-validator force you to define triple duplicated DTO schema.\nTypeScript Type\nclass-validator decorators\n@nestjs/swagger decorators\n\nAnother famous validator library ajv requires JSON schema definition. Move to the #Demonstration, and click the ajv (JSON Schema) tab, then you may understand how it terrible. It requires hundreds of lines of JSON schema definition even just for a simple DTO.Those duplicated schema definitions are not only annoying, but also error-prone. If you take any mistake on the extra schema definition, such mistake can't be detected by TypeScript compiler. It will be detected only at runtime, therefore become a critical runtime error. Another words, it is not type safe.Besides, typia only needs pure TypeScript type. You don't need to define any extra schema like class-validator or ajv. Just define pure TypeScript type only (especially recommend to use interface type), then typia will do all the rest.","demonstration#Demonstration":"If you're confusing how typia is different with others, just see example codes below.At first, look at the first (class-validator) tab, and find the BbsArticle.files property, enhanced by blue coloured blocks. Looking at the files property, how do you feel? Just defining an array object type, you've to call 7 decorator functions. If you take any mistake when using the decorator like omitting isArray property, it would be a critical runtime erorr.Besides, typia needs only one line. Click the third (typia) tab, and find the IAttachmentFile.files property. Only one line being used, and they are even not class, but just interface types. Comparing it to the first and second tabs, how do you feel? Isn't it more simple and readable?This is the power of typia, with pure TypeScript type.\n\n\nimport { ApiProperty } from \"@nestjs/swagger\";\nimport { ArrayNotEmpty, IsArray, IsObject, IsOptional, IsString, Match, MaxLength, Type, ValidateNested } from \"class-validator\";\n\nexport class BbsArticle {\n@ApiProperty({\nformat: \"uuid\",\n})\n@IsString()\nid!: string;\n\n// DUPLICATED SCHEMA DEFINITION\n// - duplicated function call + property type\n// - have to specify `isArray` and `nullable` props by yourself\n@ApiProperty({\ntype: () => AttachmentFile,\nnullable: true,\nisArray: true,\nminItems: 1,\ndescription: \"List of attached files.\",\n})\n@Type(() => AttachmentFile)\n@IsArray()\n@ArrayNotEmpty()\n@IsOptional()\n@IsObject({ each: true })\n@ValidateNested({ each: true })\nfiles!: AttachmentFile[] | null;\n\n@ApiProperty({\ntype: \"string\",\nnullable: true,\nminLength: 5,\nmaxLength: 100,\ndescription: \"Title of the article.\",\n})\n@IsOptional()\n@IsString()\ntitle!: string | null;\n\n@ApiProperty({\ndescription: \"Main content body of the article.\"\n})\n@IsString()\nbody!: string;\n\n@ApiProperty({\nformat: \"date-time\",\ndescription: \"Creation time of article\",\n})\n@IsString()\ncreated_at!: string;\n}\n\nexport class AttachmentFile {\n@ApiProperty({\ntype: \"string\",\nnullable: true,\nmaxLength: 255,\npattern: \"^[a-zA-Z0-9-_]+$\",\ndescription: \"File name.\",\n})\n@Matches(/^[a-z0-9]+$/)\n@MaxLength(255)\n@IsOptional()\n@IsString()\nname!: string | null;\n\n@ApiProperty({\ntype: \"string\",\nnullable: true,\nmaxLength: 255,\npattern: \"^[a-zA-Z0-9-_]+$\",\ndescription: \"File extension.\",\n})\n@Matches(/^[a-z0-9]+$/)\n@MaxLength(8)\n@IsOptional()\n@IsString()\nextension!: string | null;\n\n@ApiProperty({\nformat: \"url\",\ndescription: \"URL of the file.\",\n})\n@IsString()\nurl!: string;\n}\n\n\n\n{\n\"schemas\": [\n{\n\"$ref\": \"components#/schemas/IBbsArticle\"\n}\n],\n\"components\": {\n\"schemas\": {\n\"IBbsArticle\": {\n\"$id\": \"components#/schemas/IBbsArticle\",\n\"type\": \"object\",\n\"properties\": {\n\"id\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"Primary Key.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"format\",\n\"value\": \"uuid\"\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"format\",\n\"text\": [\n{\n\"text\": \"uuid\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"format\": \"uuid\"\n},\n\"files\": {\n\"type\": \"array\",\n\"items\": {\n\"$ref\": \"components#/schemas/IAttachmentFile\",\n\"description\": \"List of attached files.\",\n\"minItems\": 1,\n\"x-typia-required\": true,\n\"x-typia-optional\": false\n},\n\"nullable\": true,\n\"description\": \"List of attached files.\",\n\"x-typia-required\": true,\n\"x-typia-optional\": false\n},\n\"title\": {\n\"type\": \"string\",\n\"nullable\": true,\n\"description\": \"Title of the article.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"minLength\",\n\"value\": 5\n},\n{\n\"kind\": \"maxLength\",\n\"value\": 100\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"minLength\",\n\"text\": [\n{\n\"text\": \"5\",\n\"kind\": \"text\"\n}\n]\n},\n{\n\"name\": \"maxLength\",\n\"text\": [\n{\n\"text\": \"100\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"minLength\": 5,\n\"maxLength\": 100\n},\n\"body\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"Main content body of the article.\",\n\"x-typia-required\": true,\n\"x-typia-optional\": false\n},\n\"created_at\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"Creation time of article.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"format\",\n\"value\": \"datetime\"\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"format\",\n\"text\": [\n{\n\"text\": \"date-time\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"format\": \"date-time\"\n}\n},\n\"nullable\": false,\n\"required\": [\n\"id\",\n\"files\",\n\"title\",\n\"body\",\n\"created_at\"\n],\n\"x-typia-jsDocTags\": []\n},\n\"IAttachmentFile\": {\n\"$id\": \"components#/schemas/IAttachmentFile\",\n\"type\": \"object\",\n\"properties\": {\n\"name\": {\n\"type\": \"string\",\n\"nullable\": true,\n\"description\": \"File name.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"pattern\",\n\"value\": \"^[a-z0-9]+$\"\n},\n{\n\"kind\": \"maxLength\",\n\"value\": 255\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"pattern\",\n\"text\": [\n{\n\"text\": \"^[a-z0-9]+$\",\n\"kind\": \"text\"\n}\n]\n},\n{\n\"name\": \"maxLength\",\n\"text\": [\n{\n\"text\": \"255\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"pattern\": \"^[a-z0-9]+$\",\n\"maxLength\": 255\n},\n\"extension\": {\n\"type\": \"string\",\n\"nullable\": true,\n\"description\": \"File extension.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"pattern\",\n\"value\": \"^[a-z0-9]+$\"\n},\n{\n\"kind\": \"maxLength\",\n\"value\": 8\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"pattern\",\n\"text\": [\n{\n\"text\": \"^[a-z0-9]+$\",\n\"kind\": \"text\"\n}\n]\n},\n{\n\"name\": \"maxLength\",\n\"text\": [\n{\n\"text\": \"8\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"pattern\": \"^[a-z0-9]+$\",\n\"maxLength\": 8\n},\n\"url\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"URL of the file.\",\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"format\",\n\"text\": [\n{\n\"text\": \"uri\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"format\": \"uri\"\n}\n},\n\"nullable\": false,\n\"required\": [\n\"name\",\n\"extension\",\n\"url\"\n],\n\"x-typia-jsDocTags\": []\n}\n}\n},\n\"purpose\": \"ajv\",\n\"prefix\": \"components#/schemas\"\n}\n\n\n\nexport interface IBbsArticle {\n/**\n* Primary Key.\n*\n* @format uuid\n*/\nid: string;\n\n/**\n* List of attached files.\n*\n* @minItems 1\n*/\nfiles: IAttachmentFile[] | null;\n\n/**\n* Title of the article.\n*\n* @minLength 5\n* @maxLength 100\n*/\ntitle: string | null;\n\n/**\n* Main content body of the article.\n*/\nbody: string;\n\n/**\n* Creation time of article.\n*\n* @format date-time\n*/\ncreated_at: string;\n}\n\nexport interface IAttachmentFile {\n/**\n* File name.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 255\n*/\nname: string | null;\n\n/**\n* File extension.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 8\n*/\nextension: string | null;\n\n/**\n* URL of the file.\n*\n* @format uri\n*/\nurl: string;\n}","aot-compilation#AOT Compilation":"Someone may be suspicious of the phrase \"Pure TypeScript Type\".\n\"As you know, TypeScript types do not have any tangible instance when compiled to JS.However, with only these fictitious TypeScript types, how can typia validates types at runtime? How typia builds much faster JSON serializer only with these types? Are these things really possible without extra schema definition like class-validator or ajv?\"\nMy answer is: \"Yes, it is possible due to typia analyzes your server code, and performs AOT compilation\".Such compile time optimization is called AOT (Ahead of Time) compilation. And this is the secret why typia can do everything with only pure TypeScript type. Read below example codes, and just look how JavaScript file being compiled. Then you may understand why typia is much easier, and futhermore much faster.\nRuntime validator is 20,000x faster than class-validator\nJSON serialization is 200x faster than class-transformer\n\n\n\n\nexport interface IBbsArticle {\n/**\n* Primary Key.\n*\n* @format uuid\n*/\nid: string;\n\n/**\n* List of attached files.\n*\n* @minItems 1\n*/\nfiles: IAttachmentFile[] | null;\n\n/**\n* Title of the article.\n*\n* @minLength 5\n* @maxLength 100\n*/\ntitle: string | null;\n\n/**\n* Main content body of the article.\n*/\nbody: string;\n\n/**\n* Creation time of article.\n*\n* @format date-time\n*/\ncreated_at: string;\n}\n\nexport interface IAttachmentFile {\n/**\n* File name.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 255\n*/\nname: string | null;\n\n/**\n* File extension.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 8\n*/\nextension: string | null;\n\n/**\n* URL of the file.\n*\n* @format uri\n*/\nurl: string;\n}\n\n\n\nimport typia from \"typia\";\n\nimport { IBbsArticle } from \"./IBbsArticle\";\n\nexport const assertArticle = typia.createAssert();\n\n\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\nreturn (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertArticle = void 0;\nconst typia_1 = __importDefault(require(\"typia\"));\nconst assertArticle = input => {\nconst $guard = typia_1.default.createAssert.guard;\nconst $is_uuid = typia_1.default.createAssert.is_uuid;\nconst $is_datetime = typia_1.default.createAssert.is_datetime;\nconst __is = input => {\nconst $is_uuid = typia_1.default.createAssert.is_uuid;\nconst $is_datetime = typia_1.default.createAssert.is_datetime;\nconst $io0 = input => \"string\" === typeof input.id && $is_uuid(input.id) && (null === input.files || Array.isArray(input.files) && 1 <= input.files.length && input.files.every(elem => \"object\" === typeof elem && null !== elem && $io1(elem))) && (null === input.title || \"string\" === typeof input.title && 5 <= input.title.length && 100 >= input.title.length) && \"string\" === typeof input.body && (\"string\" === typeof input.created_at && $is_datetime(input.created_at));\nconst $io1 = input => (null === input.name || \"string\" === typeof input.name && RegExp(/^[a-z0-9]+$/).test(input.name) && 255 >= input.name.length) && (null === input.extension || \"string\" === typeof input.extension && RegExp(/^[a-z0-9]+$/).test(input.extension) && 8 >= input.extension.length) && \"string\" === typeof input.url;\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.id && ($is_uuid(input.id) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id\n})) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id\n})) && (null === input.files || (Array.isArray(input.files) && (1 <= input.files.length || $guard(_exceptionable, {\npath: _path + \".files\",\nexpected: \"Array.length (@minItems 1)\",\nvalue: input.files\n})) || $guard(_exceptionable, {\npath: _path + \".files\",\nexpected: \"(Array | null)\",\nvalue: input.files\n})) && input.files.every((elem, _index1) => (\"object\" === typeof elem && null !== elem || $guard(_exceptionable, {\npath: _path + \".files[\" + _index1 + \"]\",\nexpected: \"IAttachmentFile\",\nvalue: elem\n})) && $ao1(elem, _path + \".files[\" + _index1 + \"]\", true && _exceptionable))) && (null === input.title || \"string\" === typeof input.title && (5 <= input.title.length || $guard(_exceptionable, {\npath: _path + \".title\",\nexpected: \"string (@minLength 5)\",\nvalue: input.title\n})) && (100 >= input.title.length || $guard(_exceptionable, {\npath: _path + \".title\",\nexpected: \"string (@maxLength 100)\",\nvalue: input.title\n})) || $guard(_exceptionable, {\npath: _path + \".title\",\nexpected: \"(null | string)\",\nvalue: input.title\n})) && (\"string\" === typeof input.body || $guard(_exceptionable, {\npath: _path + \".body\",\nexpected: \"string\",\nvalue: input.body\n})) && (\"string\" === typeof input.created_at && ($is_datetime(input.created_at) || $guard(_exceptionable, {\npath: _path + \".created_at\",\nexpected: \"string (@format datetime)\",\nvalue: input.created_at\n})) || $guard(_exceptionable, {\npath: _path + \".created_at\",\nexpected: \"string\",\nvalue: input.created_at\n}));\nconst $ao1 = (input, _path, _exceptionable = true) => (null === input.name || \"string\" === typeof input.name && (RegExp(/^[a-z0-9]+$/).test(input.name) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@pattern ^[a-z0-9]+$)\",\nvalue: input.name\n})) && (255 >= input.name.length || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@maxLength 255)\",\nvalue: input.name\n})) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"(null | string)\",\nvalue: input.name\n})) && (null === input.extension || \"string\" === typeof input.extension && (RegExp(/^[a-z0-9]+$/).test(input.extension) || $guard(_exceptionable, {\npath: _path + \".extension\",\nexpected: \"string (@pattern ^[a-z0-9]+$)\",\nvalue: input.extension\n})) && (8 >= input.extension.length || $guard(_exceptionable, {\npath: _path + \".extension\",\nexpected: \"string (@maxLength 8)\",\nvalue: input.extension\n})) || $guard(_exceptionable, {\npath: _path + \".extension\",\nexpected: \"(null | string)\",\nvalue: input.extension\n})) && (\"string\" === typeof input.url || $guard(_exceptionable, {\npath: _path + \".url\",\nexpected: \"string\",\nvalue: input.url\n}));\nreturn (\"object\" === typeof input && null !== input || $guard(true, {\npath: _path + \"\",\nexpected: \"IBbsArticle\",\nvalue: input\n})) && $ao0(input, _path + \"\", true);\n})(input, \"$input\", true);\nreturn input;\n};\nexports.assertArticle = assertArticle;\n\n\n\nMeasured on Intel i5-1135g7, Surface Pro 8"}}} \ No newline at end of file +{"/docs":{"title":"Index","data":{"":"","outline#Outline":"// RUNTIME VALIDATORS\nexport function is(input: unknown | T): input is T; // returns boolean\nexport function assert(input: unknown | T): T; // throws TypeGuardError\nexport function validate(input: unknown | T): IValidation; // detailed\nexport const customValidators: CustomValidatorMap; // customizable\n\n// ENHANCED JSON\nexport function application<...Args>(): IJsonApplication; // JSON schema\nexport function assertParse(input: string): T; // type safe parser\nexport function assertStringify(input: T): string; // safe and faster\n// +) isParse, validateParse\n// +) stringify, isStringify, validateStringify\n\n// RANDOM DATA GENERATOR\nexport function random(g?: Partial): Primitive;\nTypia is a transformer library, supporting those features:\nSuper-fast Runtime Validators\nSafe JSON parse and fast stringify\nJSON schema generator\nRandom data generator\n\n\n\n\n\nOnly one line required, with pure TypeScript type\n\nRuntime validator is 20,000x faster than class-validator\n\nJSON serialization is 200x faster than class-transformer","sponsors#Sponsors":"Thanks for your support.Your donation would encourage typia development."}},"/docs/json/parse":{"title":"Parse","data":{"":"","parse-functions#parse() functions":"export function isParse(input: string): T | null;\nexport function assertParse(input: string): T;\nexport function validateParse(input: string): IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nType safe JSON parser.Unlike native JSON.parse() function which returns any typed instance without type checking, typia.assertParse() function validates instance type after the parsing. If the parsed value is not following the promised type T, it throws TypeGuardError with the first type error info.If you want to know every type error infos detaily, you can use typia.validateParse() function instead. Otherwise, you just only want to know whether the parsed value is following the type T or not, just call typia.isParse() function.\ntypia.isParse(): JSON.parse() + typia.is()\ntypia.assertParse(): JSON.parse() + typia.assert()\ntypia.validateParse(): JSON.parse() + typia.validate()\n\nLook at the below code, then you may understand how the typia.assertParse() function works.\n\n\nimport typia from \"typia\";\n\nconst json: string = JSON.stringify(typia.random());\nconst parsed: IMember = typia.assertParse(json);\n\nconsole.log(json === JSON.stringify(parsed)); // true\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst json = JSON.stringify(\n((generator) => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\",\n},\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nemail:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"email\",\n},\n]) ?? (generator?.email ?? $generator.email)(),\nage:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\",\n},\n{\nname: \"maximum\",\nvalue: \"100\",\n},\n]) ?? (generator?.number ?? $generator.number)(19, 100),\n});\nreturn $ro0();\n})(),\n);\nconst parsed = ((input) => {\nconst assert = (input) => {\nconst $guard = typia.assertParse.guard;\nconst $is_uuid = typia.assertParse.is_uuid;\nconst $is_email = typia.assertParse.is_email;\nconst __is = (input) => {\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n};\ninput = JSON.parse(input);\nreturn assert(input);\n})(json);\n\nconsole.log(json === JSON.stringify(parsed)); // true","reusable-functions#Reusable functions":"export function createIsParse(): (input: string) => T | null;\nexport function createAssertParse(): (input: string) => T;\nexport function createValidateParse(): (input: string) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nReusable typia.isParse() function generators.If you repeat to call typia.isParse() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createIsParse() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const parseMember = typia.createIsParse();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const parseMember = (input) => {\nconst is = (input) => {\nconst $is_uuid = typia.createIsParse.is_uuid;\nconst $is_email = typia.createIsParse.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age\n);\n};\ninput = JSON.parse(input);\nreturn is(input) ? input : null;\n};"}},"/docs/json/schema":{"title":"Schema","data":{"":"","application-function#application() function":"export function application<\nSchemas extends unknown[],\nPurpose extends \"ajv\" | \"swagger\",\n>(): IJsonApplication;\n\n\n\nexport interface IJsonApplication {\nschemas: IJsonSchema[];\ncomponents: IJsonComponents;\npurpose: \"swagger\" | \"ajv\";\n}\n\n\n\nexport interface IJsonComponents {\nschemas: Record;\n}\nexport namespace IJsonComponents {\nexport interface IObject {\n$id?: string;\n$recursiveAnchor?: boolean;\n\ntype: \"object\";\nnullable: boolean;\n\nproperties: Record;\npatternProperties?: Record;\nadditionalProperties?: IJsonSchema;\n\nrequired?: string[];\ndescription?: string;\n\"x-typia-jsDocTags\"?: IJsDocTagInfo[];\n\"x-typia-patternProperties\"?: Record;\n\"x-typia-additionalProperties\"?: IJsonSchema;\n}\n}\n\n\n\nexport type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;\nexport namespace IJsonSchema {\nexport type NotUnknown =\n| IEnumeration<\"boolean\">\n| IEnumeration<\"number\">\n| IEnumeration<\"string\">\n| IBoolean\n| IInteger\n| INumber\n| IString\n| IArray\n| ITuple\n| IOneOf\n| IReference\n| IRecursiveReference\n| INullOnly;\n\n/* -----------------------------------------------------------\nATOMICS\n----------------------------------------------------------- */\nexport interface IEnumeration<\nLiteral extends Exclude,\n> extends IAtomic {\nenum: Array;\n}\nexport interface IAtomic>\nextends ISignificant {\ndefault?: Atomic.Mapper[Literal];\n}\nexport interface IString extends IAtomic<\"string\"> {\n/**\n* @type uint\n*/\nminLength?: number;\n/**\n* @type uint\n*/\nmaxLength?: number;\npattern?: string;\nformat?: string;\n}\nexport interface INumber extends IAtomic<\"number\"> {\nminimum?: number;\nmaximum?: number;\nexclusiveMinimum?: boolean;\nexclusiveMaximum?: boolean;\nmultipleOf?: number;\n}\nexport interface IInteger extends IAtomic<\"integer\"> {\n/**\n* @type int\n*/\nminimum?: number;\n/**\n* @type int\n*/\nmaximum?: number;\nexclusiveMinimum?: boolean;\nexclusiveMaximum?: boolean;\n/**\n* @type int\n*/\nmultipleOf?: number;\n}\nexport interface IBoolean extends IAtomic<\"boolean\"> {}\n\n/* -----------------------------------------------------------\nOBJECTS\n----------------------------------------------------------- */\nexport interface IArray extends ISignificant<\"array\"> {\nitems: IJsonSchema;\n/**\n* @type uint\n*/\nminItems?: number;\n/**\n* @type uint\n*/\nmaxItems?: number;\n\"x-typia-tuple\"?: ITuple;\n}\nexport interface ITuple extends ISignificant<\"array\"> {\nitems: IJsonSchema[];\n}\nexport interface IReference extends IAttribute {\n$ref: string;\n}\nexport interface IRecursiveReference extends IAttribute {\n$recursiveRef: string;\n}\nexport interface INullOnly extends IAttribute {\ntype: \"null\";\n}\n\n/* -----------------------------------------------------------\nMISCELLANEOUS\n----------------------------------------------------------- */\nexport interface IOneOf extends IAttribute {\noneOf: IJsonSchema[];\n}\nexport interface IUnknown {}\n\nexport interface ISignificant extends IAttribute {\ntype: Literal;\nnullable: boolean;\n}\nexport interface IAttribute {\ndeprecated?: boolean;\ntitle?: string;\ndescription?: string;\n\"x-typia-metaTags\"?: IMetadataTag[];\n\"x-typia-jsDocTags\"?: IJsDocTagInfo[];\n\"x-typia-required\"?: boolean;\n\"x-typia-rest\"?: boolean;\n}\n}\n\n\nJSON schema generator.\nDefinitions:\nIJsonApplication\nIJsonComponents\nIJsonSchema\n\n\n\nWhen you need JSON schema, do not write it by yourself, but just call typia.application() function.If you call the typia.application() with specialization of target Schemas, typia will analyze your Schemas and generate JSON schema definition in the compilation level. However, note that, JSON schema definitions of AJV and Swagger are a little bit different. Therefore, you have to consider which value to assign in the Purpose argument.\nSwagger can't express tuple type\nSwagger can't express pattern property\n\n\n\n\nimport typia from \"typia\";\n\nexport const MemberSchema = typia.application<[IMember], \"ajv\">();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const MemberSchema = {\nschemas: [\n{\n$ref: \"components#/schemas/IMember\",\n},\n],\ncomponents: {\nschemas: {\nIMember: {\n$id: \"components#/schemas/IMember\",\ntype: \"object\",\nproperties: {\nid: {\ntype: \"string\",\nnullable: false,\nformat: \"uuid\",\n},\nemail: {\ntype: \"string\",\nnullable: false,\nformat: \"email\",\n},\nage: {\ntype: \"number\",\nnullable: false,\nminimum: 19,\nexclusiveMinimum: true,\nmaximum: 100,\n},\n},\nnullable: false,\nrequired: [\"id\", \"email\", \"age\"],\n},\n},\n},\npurpose: \"ajv\",\n};","comment-tags#Comment Tags":"https://swagger.io/docs/specification/data-models/data-types/You can utilize comments and comment tags to constructing special fields of JSON schema.If you write any comment on a property, it would fill the IJsonSchema.description value. When you write some comment tags starting with @ symbol, they would be placed into the proper properties of IJsonSchema. Below is the list of supported comment tags in the typia.application() function.Let's see how those comment tags work with example code.\nSupported comment tags\ncommon\n@deprecated\n@hidden\n@internal\n@title {string}\n@default {value}\n\n\nnumber\n@type {\"int\"|\"uint\"}\n@minimum {number}\n@maximum {number}\n@exclusiveMinimum {number}\n@exclusiveMaximum {number}\n@multipleOf {number}\n\n\nstring\n@minLength {number}\n@maxLength {number}\n@pattern {regex}\n@format {keyword}\nemail\nuuid\nipv4\nipv6\nurl\ndate: YYYY-MM-DD\ndate-time: Date.toISOString()\n\n\n\n\narray\n@minItems {number}\n@maxItems {number}\n\n\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const CommentTagSchema = typia.application<[CommentTag], \"swagger\">();\n\ninterface CommentTag {\n/**\n* Deprecated tags are just used for marking.\n*\n* @title Unsigned integer\n* @type uint\n* @deprecated\n*/\ntype: number;\n\n/**\n* Internal tagged property never be shown in JSON schema.\n*\n* It even doesn't be shown in other `typia` functions like `assert()`.\n*\n* @internal\n*/\ninternal: number[];\n\n/**\n* Hidden tagged property never be shown in JSON schema.\n*\n* However, it would be shown in other `typia` functions like `stringify()`.\n*\n* @hidden\n*/\nhidden: boolean;\n\n/**\n* You can limit the range of number.\n*\n* @exclusiveMinimum 19\n* @maximum 100\n* @default 30\n*/\nnumber?: number;\n\n/**\n* You can limit the length of string.\n*\n* @minLength 3\n*/\nstring: string;\n\n/**\n* You can limit the pattern of string.\n*\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* You can limit the format of string.\n*\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const CommentTagSchema = {\nschemas: [\n{\n$ref: \"#/components/schemas/CommentTag\"\n}\n],\ncomponents: {\nschemas: {\nCommentTag: {\n$id: \"#/components/schemas/CommentTag\",\ntype: \"object\",\nproperties: {\ntype: {\ndeprecated: true,\ntitle: \"Unsigned integer\",\ndescription: \"Deprecated tags are just used for marking.\\n\\n@title Unsigned integer\\n@type uint\\n@deprecated\",\ntype: \"integer\",\nminimum: 0\n},\nnumber: {\ndescription: \"You can limit the range of number.\\n\\n@exclusiveMinimum 19\\n@maximum 100\\n@default 30\",\ntype: \"number\",\nminimum: 19,\nexclusiveMinimum: true,\nmaximum: 100,\n\"default\": 30\n},\nstring: {\ndescription: \"You can limit the length of string.\\n\\n@minLength 3\",\ntype: \"string\",\nminLength: 3\n},\npattern: {\ndescription: \"You can limit the pattern of string.\\n\\n@pattern ^[a-z]+$\",\ntype: \"string\",\npattern: \"^[a-z]+$\"\n},\nformat: {\ndescription: \"You can limit the format of string.\\n\\n@format date-time\",\ntype: \"string\",\nformat: \"date-time\",\nnullable: true\n},\narray: {\ndescription: \"In the Array case, possible to restrict its elements.\\n\\n@minItems 3\\n@maxItems 100\\n@format uuid\",\ntype: \"array\",\nitems: {\ndescription: \"In the Array case, possible to restrict its elements.\\n\\n@minItems 3\\n@maxItems 100\\n@format uuid\",\ntype: \"string\",\nformat: \"uuid\"\n},\nminItems: 3,\nmaxItems: 100\n}\n},\nrequired: [\n\"type\",\n\"hidden\",\n\"string\",\n\"pattern\",\n\"format\",\n\"array\"\n],\ndescription: \"In the Array case, possible to restrict its elements.\\n\\n@minItems 3\\n@maxItems 100\\n@format uuid\",\n}\n}\n},\npurpose: \"ajv\"\n};"}},"/docs/json/stringify":{"title":"Stringify","data":{"":"","stringify-functions#stringify() functions":"export function stringify(input: T): string;\nexport function isStringify(input: unknown | T): string | null;\nexport function assertStringify(input: unknown | T): string;\nexport function validateStringify(input: unknown | T): IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nYou can boost up JSON serialization speed just by calling typia.stringify() function. Also, you even can ensure type safety of JSON serialization by calling other functions like typia.isStringify() and typia.assertStringify() functions.As typia.stringify() function writes dedicated JSON serialization code only for the target type T, its performance is much faster than native JSON.stringify() function. However, because of the dedicated optimal JSON serialization code, when wrong typed data comes, unexpected error be occured.Instead, typia supports type safe JSON serialization functions like typia.isStringify(). The typia.isStringify() is a combination function of typia.is() and typia.stringify() function. It checks whether the input value is valid for the target type T or not first, and operate JSON serialization later. If the input value is not matched with the type T, it returns null value.\ntypia.isStringify(): typia.is() + typia.stringify()\ntypia.assertStringify(): typia.assert() + typia.stringify()\ntypia.validateStringify(): typia.validate() + typia.stringify()\n\n\n\n\n\nAOT compliation\ntypia.isStringify() and other similar functions are still much faster than native JSON.stringify() function, even though they include type checking process. This is the power of AOT compilation, writing optimal dedicated code by analyzing TypeScript type, in the compilation level.\n\n\n\nimport typia from \"typia\";\n\nconst department: IDepartment = typia.random();\nconst json: string = typia.isStringify(department);\n\nconsole.log(json); // not null, but string\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\nimport typia from \"typia\";\n\nconst department = ((generator) => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\",\n},\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nname:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"minLength\",\nvalue: \"3\",\n},\n]) ??\n(generator?.string ?? $generator.string)(\n(generator?.integer ?? $generator.integer)(3, 25),\n),\nlimit:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"type\",\nvalue: \"uint\",\n},\n]) ?? (generator?.integer ?? $generator.integer)(0, 10),\nclerks: (generator?.array ?? $generator.array)(() =>\n$ro1(_recursive, _recursive ? 1 + _depth : _depth),\n),\n});\nconst $ro1 = (_recursive = false, _depth = 0) => ({\nname:\n(generator?.customs ?? $generator.customs)?.string?.([]) ??\n(generator?.string ?? $generator.string)(),\nage:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\",\n},\n{\nname: \"maximum\",\nvalue: \"100\",\n},\n]) ?? (generator?.number ?? $generator.number)(19, 100),\nauthority:\n(generator?.customs ?? $generator.customs)?.number?.([]) ??\n(generator?.number ?? $generator.number)(0, 100),\njoined_at:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"date\",\n},\n]) ?? (generator?.date ?? $generator.date)(),\n});\nreturn $ro0();\n})();\n\nconst json = ((input) => {\nconst is = (input) => {\nconst $is_uuid = typia.isStringify.is_uuid;\nconst $is_date = typia.isStringify.is_date;\nconst $io0 = (input) =>\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.name && 3 <= input.name.length &&\n\"number\" === typeof input.limit && !Number.isNaN(input.limit) && parseInt(input.limit) === input.limit && 0 <= input.limit &&\nArray.isArray(input.clerks) && input.clerks.every(\n(elem) =>\n\"object\" === typeof elem && null !== elem && $io1(elem),\n);\nconst $io1 = (input) =>\n\"string\" === typeof input.name &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age &&\n\"number\" === typeof input.authority && !Number.isNaN(input.authority) &&\n\"string\" === typeof input.joined_at && $is_date(input.joined_at);\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nconst stringify = (input) => {\nconst $string = typia.isStringify.string;\n$is_date(input.joined_at);\nconst $so0 = (input) =>\n`{\"id\":${'\"' + input.id + '\"'},\"name\":${$string(\ninput.name,\n)},\"limit\":${input.limit},\"clerks\":${`[${input.clerks\n.map((elem) => $so1(elem))\n.join(\",\")}]`}}`;\nconst $so1 = (input) =>\n`{\"name\":${$string(input.name)},\"age\":${input.age},\"authority\":${\ninput.authority\n},\"joined_at\":${'\"' + input.joined_at + '\"'}}`;\nreturn $so0(input);\n};\nreturn is(input) ? stringify(input) : null;\n})(department);\n\nconsole.log(json); // not null, but string","reusable-functions#Reusable functions":"export function createStringify: (input: T) => string;\nexport function createIsStringify: (input: unknown | T) => string | null;\nexport function createAssertStringify: (input: unknown) => string;\nexport function createValidateStringify: (input: unknown) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nReusable typia.stringify() function generators.If you repeat to call typia.stringify() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createStringify() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const assertDepartment = typia.createAssertStringify();\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const assertDepartment = (input) => {\nconst assert = (input) => {\nconst $guard = typia.createAssertStringify.guard;\nconst $is_uuid = typia.createAssertStringify.is_uuid;\nconst $is_date = typia.createAssertStringify.is_date;\nconst __is = (input) => {\nconst $is_uuid = typia.createAssertStringify.is_uuid;\nconst $is_date = typia.createAssertStringify.is_date;\nconst $io0 = (input) =>\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.name && 3 <= input.name.length &&\n\"number\" === typeof input.limit && !Number.isNaN(input.limit) && parseInt(input.limit) === input.limit && 0 <= input.limit &&\nArray.isArray(input.clerks) && input.clerks.every(\n(elem) =>\n\"object\" === typeof elem && null !== elem && $io1(elem),\n);\nconst $io1 = (input) =>\n\"string\" === typeof input.name &&\n\"number\" === typeof input.age && 19 < input.age && 100 >= input.age &&\n\"number\" === typeof input.authority && !Number.isNaN(input.authority) &&\n\"string\" === typeof input.joined_at && $is_date(input.joined_at);\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.name &&\n(3 <= input.name.length ||\n$guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@minLength 3)\",\nvalue: input.name,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name,\n})) &&\n((\"number\" === typeof input.limit &&\n!Number.isNaN(input.limit) &&\n(parseInt(input.limit) === input.limit ||\n$guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit,\n})) &&\n(0 <= input.limit ||\n$guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number\",\nvalue: input.limit,\n})) &&\n(Array.isArray(input.clerks) ||\n$guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks,\n})) &&\ninput.clerks.every(\n(elem, _index1) =>\n((\"object\" === typeof elem && null !== elem) ||\n$guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem,\n})) &&\n$ao1(\nelem,\n_path + \".clerks[\" + _index1 + \"]\",\ntrue && _exceptionable,\n),\n);\nconst $ao1 = (input, _path, _exceptionable = true) =>\n(\"string\" === typeof input.name ||\n$guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name,\n})) &&\n((\"number\" === typeof input.age &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n})) &&\n((\"number\" === typeof input.authority &&\n!Number.isNaN(input.authority)) ||\n$guard(_exceptionable, {\npath: _path + \".authority\",\nexpected: \"number\",\nvalue: input.authority,\n})) &&\n((\"string\" === typeof input.joined_at &&\n($is_date(input.joined_at) ||\n$guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string (@format date)\",\nvalue: input.joined_at,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string\",\nvalue: input.joined_at,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n};\nconst stringify = (input) => {\nconst $string = typia.createAssertStringify.string;\nconst $so0 = (input) =>\n`{\"id\":${'\"' + input.id + '\"'},\"name\":${$string(\ninput.name,\n)},\"limit\":${input.limit},\"clerks\":${`[${input.clerks\n.map((elem) => $so1(elem))\n.join(\",\")}]`}}`;\nconst $so1 = (input) =>\n`{\"name\":${$string(input.name)},\"age\":${input.age},\"authority\":${\ninput.authority\n},\"joined_at\":${'\"' + input.joined_at + '\"'}}`;\nreturn $so0(input);\n};\nreturn stringify(assert(input));\n};","performance#Performance":"Comparing JSON serialization speed with others, it is maximum 200x faster than class-transformer.For reference, class-transformer is the most famous library used in NestJS with class-validator. Also, fast-json-stringify is another famous one used in fastify. However, whether they are fast or slow, both of them require extra schema definition, that is different with TypeScript type. If you see the code below without experience of them, you may get shocked: how complicate and inefficient they are:\nfast-json-stringify requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\n\nMeasured on Intel i5-1135g7, Surface Pro 8","server-performance#Server Performance":"Someone may ask:\nJSON serialization speed affects on the server performance?I think that the JSON serialization is just a tiny thing in the server side, isn't it?\nMy answer is, \"Yes, it affects on the server performance\".Most operations in NodeJS server are asynchronously executed in background thread, what are called \"event based non-blocking I/O model\". However, JSON serialization is a synchronous operation running on the main thread. Therefore, if the JSON serialization speed is slow, it makes the entire server program slow.I'll show you the benchmark result that, how JSON serizliation speed affects on the server performance.\nMeasured on Intel i5-1135g7, Surface Pro 8"}},"/docs/random":{"title":"Random","data":{"":"","random-function#random() function":"export function random(g?: IRandomGenerator): T;\n\n\n\nexport interface IRandomGenerator {\nboolean(): boolean;\ninteger(minimum?: number, maximum?: number): number;\nnumber(minimum?: number, maximum?: number): number;\nbigint(minimum?: bigint, maximum?: bigint): bigint;\nstring(length?: number): string;\narray(closure: (index: number) => T, count?: number): T[];\n\nuuid(): string;\nemail(): string;\nurl(): string;\nipv4(): string;\nipv6(): string;\npattern(regex: RegExp): string;\ndate(minimum?: number, maximum?: number): string;\ndatetime(minimum?: number, maximum?: number): string;\n\ncustoms?: IRandomGenerator.CustomMap;\n}\nexport namespace IRandomGenerator {\nexport type CustomMap = {\n[Type in keyof Customizable]?:\n(tags: ICommentTag[]) => Customizable[Type] | undefined;\n};\n\nexport interface ICommentTag {\nname: string;\nvalue?: string;\n}\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nYou can make every random data just by calling typia.random() function.When you call the typia.random() function, typia will analyze your type T, and writes optimal random generation code for the type T, in the compilation level. This is called AOT (Ahead of Time) compliation, and you may understand what it is just by reading below example code.\n\n\nimport typia from \"typia\";\n\nconst member: IMember = typia.random();\n\nconsole.log(member);\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst member = ((generator) => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\",\n},\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nemail:\n(generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"email\",\n},\n]) ?? (generator?.email ?? $generator.email)(),\nage:\n(generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\",\n},\n{\nname: \"maximum\",\nvalue: \"100\",\n},\n]) ?? (generator?.number ?? $generator.number)(19, 100),\n});\nreturn $ro0();\n})();\n\nconsole.log(member);","reusable-function#Reusable function":"export function createRandom(): (g?: IRandomGenerator) => T;\n\n\n\nexport interface IRandomGenerator {\nboolean(): boolean;\ninteger(minimum?: number, maximum?: number): number;\nnumber(minimum?: number, maximum?: number): number;\nbigint(minimum?: bigint, maximum?: bigint): bigint;\nstring(length?: number): string;\narray(closure: (index: number) => T, count?: number): T[];\n\nuuid(): string;\nemail(): string;\nurl(): string;\nipv4(): string;\nipv6(): string;\npattern(regex: RegExp): string;\ndate(minimum?: number, maximum?: number): string;\ndatetime(minimum?: number, maximum?: number): string;\n\ncustoms?: IRandomGenerator.CustomMap;\n}\nexport namespace IRandomGenerator {\nexport type CustomMap = {\n[Type in keyof Customizable]?:\n(tags: ICommentTag[]) => Customizable[Type] | undefined;\n};\n\nexport interface ICommentTag {\nname: string;\nvalue?: string;\n}\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nReusable typia.random() function generators.If you repeat to call typia.random() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createRandom() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const createRandomMember = typia.createRandom();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const createRandomMember = generator => {\nconst $generator = typia.createRandom.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n]) ?? (generator?.uuid ?? $generator.uuid)(),\nemail: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"email\"\n}\n]) ?? (generator?.email ?? $generator.email)(),\nage: (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"type\",\nvalue: \"int\"\n},\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n]) ?? (generator?.integer ?? $generator.integer)(20, 100)\n});\nreturn $ro0();\n};","comment-tags#Comment Tags":"You can specialize the behavior of typia.random() function by using comment tags.Below list shows which comment tags are supported in the typia.random() function.Let's see how those comment tags work with example code.\nSupported comment tags\nnumber\n@type {\"int\"|\"uint\"}\n@minimum {number}\n@maximum {number}\n@exclusiveMinimum {number}\n@exclusiveMaximum {number}\n@multipleOf {number}\n\n\nstring\n@minLength {number}\n@maxLength {number}\n@pattern {regex}\n@format {keyword}\nemail\nuuid\nipv4\nipv6\nurl\ndate: YYYY-MM-DD\ndate-time: Date.toISOString()\n\n\n\n\narray\n@minItems {number}\n@maxItems {number}\n\n\n\n\n\n\n\n\nimport typia from \"typia\";\n\nconst data: CommentTag = typia.random();\n\nconsole.log(data);\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nconst data = (generator => {\nconst $generator = typia.random.generator;\nconst $pick = typia.random.pick;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\ntype: (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"type\",\nvalue: \"uint\"\n}\n]) ?? (generator?.integer ?? $generator.integer)(0, 10),\nnumber: $pick([\n() => undefined,\n() => (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n]) ?? (generator?.number ?? $generator.number)(19, 100)\n])(),\nstring: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"minLength\",\nvalue: \"3\"\n}\n]) ?? (generator?.string ?? $generator.string)((generator?.integer ?? $generator.integer)(3, 25)),\npattern: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"pattern\",\nvalue: \"^[a-z]+$\"\n}\n]) ?? (generator?.pattern ?? $generator.pattern)(/^[a-z]+$/),\nformat: $pick([\n() => null,\n() => (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"date-time\"\n}\n]) ?? (generator?.datetime ?? $generator.datetime)()\n])(),\narray: (generator?.array ?? $generator.array)(() => (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"minItems\",\nvalue: \"3\"\n},\n{\nname: \"maxItems\",\nvalue: \"100\"\n},\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n]) ?? (generator?.uuid ?? $generator.uuid)(), (generator?.integer ?? $generator.integer)(3, 100))\n});\nreturn $ro0();\n})();\n\nconsole.log(data);","customization#Customization":"export function random(g?: IRandomGenerator): T;\nexport function createRandom: (g?: IRandomGenerator) => T;\n\n\n\nexport interface IRandomGenerator {\nboolean(): boolean;\ninteger(minimum?: number, maximum?: number): number;\nnumber(minimum?: number, maximum?: number): number;\nbigint(minimum?: bigint, maximum?: bigint): bigint;\nstring(length?: number): string;\narray(closure: (index: number) => T, count?: number): T[];\n\nuuid(): string;\nemail(): string;\nurl(): string;\nipv4(): string;\nipv6(): string;\npattern(regex: RegExp): string;\ndate(minimum?: number, maximum?: number): string;\ndatetime(minimum?: number, maximum?: number): string;\n\ncustoms?: IRandomGenerator.CustomMap;\n}\nexport namespace IRandomGenerator {\nexport type CustomMap = {\n[Type in keyof Customizable]?:\n(tags: ICommentTag[]) => Customizable[Type] | undefined;\n};\n\nexport interface ICommentTag {\nname: string;\nvalue?: string;\n}\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nYou can add custom comment tags for random data generation.As above IRandomGenerator.CustomMap has complicate currying function type, it may hard to understand for newcomers. However, such newcomers may easily understand, how to customize the random generation, after reading the following example.Just define custom comment tags like below, then everything would be done.\n\n\nimport typia from \"typia\";\nimport { RandomGenerator } from \"typia/lib/utils/RandomGenerator\";\n\nconst data: TagCustom = typia.random({\ncustoms: {\nstring: (tags: typia.IRandomGenerator.ICommentTag[]) => {\nif (tags.find((t) => t.name === \"dollar\") !== undefined)\nreturn \"$\" + RandomGenerator.integer();\n\nconst postfix = tags.find((t) => t.name === \"postfix\");\nif (postfix !== undefined)\nreturn RandomGenerator.string() + postfix.value;\n},\nnumber: (tags: typia.IRandomGenerator.ICommentTag[]) => {\nconst powerOf = tags.find((t) => t.name === \"powerOf\");\nif (powerOf !== undefined)\nreturn Math.pow(\nNumber(powerOf.value),\nRandomGenerator.integer(1, 4),\n);\n},\n}\n});\n\nconsole.log(data);\n\ninterface TagCustom {\n/**\n* Regular feature supported by typia\n*\n* @format uuid\n*/\nid: string;\n\n/**\n* Custom feature composed with \"$\" + number\n*\n* @dollar\n*/\ndollar: string;\n\n/**\n* Custom feature composed with string + \"abcd\"\n*\n* @postfix abcd\n*/\npostfix: string;\n\n/**\n* Custom feature meaning x^y\n*\n* @powerOf 10\n*/\npower: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { RandomGenerator } from \"typia/lib/utils/RandomGenerator\";\n\nconst data = (generator => {\nconst $generator = typia.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => ({\nid: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n]) ?? (generator?.uuid ?? $generator.uuid)(),\ndollar: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"dollar\"\n}\n]) ?? (generator?.string ?? $generator.string)(),\npostfix: (generator?.customs ?? $generator.customs)?.string?.([\n{\nname: \"postfix\",\nvalue: \"abcd\"\n}\n]) ?? (generator?.string ?? $generator.string)(),\npower: (generator?.customs ?? $generator.customs)?.number?.([\n{\nname: \"powerOf\",\nvalue: \"10\"\n}\n]) ?? (generator?.number ?? $generator.number)(0, 100)\n});\nreturn $ro0();\n})({\ncustoms: {\nstring: (tags) => {\nif (tags.find((t) => t.name === \"dollar\") !== undefined)\nreturn \"$\" + RandomGenerator.integer();\nconst postfix = tags.find((t) => t.name === \"postfix\");\nif (postfix !== undefined)\nreturn RandomGenerator.string() + postfix.value;\n},\nnumber: (tags) => {\nconst powerOf = tags.find((t) => t.name === \"powerOf\");\nif (powerOf !== undefined)\nreturn Math.pow(Number(powerOf.value), RandomGenerator.integer(1, 4));\n},\n},\n});\n\nconsole.log(data);"}},"/docs/miscellaneous":{"title":"Miscellaneous","data":{"":"","clone-functions#clone() functions":"export function clone(input: T): T;\nexport function isClone(input: unknown): T | null;\nexport function assertClone(input: unknown): T;\nexport function validateClone(input: unknown): IValidation;\n\nexport function createClone(): (input: T) => T;\nexport function createIsClone(): (input: unknown) => T | null;\nexport function createAssertClone(): (input: unknown) => T;\nexport function createValidateClone(): (input: unknown) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nDeep copy function.When you want to copy an instance, just call typia.clone() function. It would perform deep copy including nested objects, so you can get a new instance with same values. Also, if you want type safe deep copy function, you can use typia.isClone(), typia.assertClone() or typia.validateClone() functions instead.\ntypia.isClone(): typia.is() + typia.clone()\ntypia.assertClone(): typia.assert() + typia.clone()\ntypia.validateClone(): typia.validate() + typia.clone()\n\n\n\n\nimport typia from \"typia\";\n\nconst department: IDepartment = typia.random();\nconst cloned: IDepartment = typia.assertClone(department);\n\nconsole.log(cloned);\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\nreturn (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst typia_1 = __importDefault(require(\"typia\"));\nconst department = (generator => {\nconst $generator = typia_1.default.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; return ({\nid: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.uuid) !== null && _e !== void 0 ? _e : $generator.uuid)(),\nname: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.string) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"minLength\",\nvalue: \"3\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _k !== void 0 ? _k : $generator.string)(((_l = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _l !== void 0 ? _l : $generator.integer)(3, 25)),\nlimit: (_q = (_p = (_o = ((_m = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _m !== void 0 ? _m : $generator.customs)) === null || _o === void 0 ? void 0 : _o.number) === null || _p === void 0 ? void 0 : _p.call(_o, [\n{\nname: \"type\",\nvalue: \"int\"\n}\n])) !== null && _q !== void 0 ? _q : ((_r = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _r !== void 0 ? _r : $generator.integer)(0, 100),\nclerks: ((_s = generator === null || generator === void 0 ? void 0 : generator.array) !== null && _s !== void 0 ? _s : $generator.array)(() => $ro1(_recursive, _recursive ? 1 + _depth : _depth))\n}); };\nconst $ro1 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; return ({\nname: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _e !== void 0 ? _e : $generator.string)(),\nage: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.number) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _k !== void 0 ? _k : $generator.number)(19, 100),\nauthority: (_p = (_o = (_m = ((_l = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _l !== void 0 ? _l : $generator.customs)) === null || _m === void 0 ? void 0 : _m.number) === null || _o === void 0 ? void 0 : _o.call(_m, [])) !== null && _p !== void 0 ? _p : ((_q = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _q !== void 0 ? _q : $generator.number)(0, 100),\njoined_at: (_u = (_t = (_s = ((_r = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _r !== void 0 ? _r : $generator.customs)) === null || _s === void 0 ? void 0 : _s.string) === null || _t === void 0 ? void 0 : _t.call(_s, [\n{\nname: \"format\",\nvalue: \"date\"\n}\n])) !== null && _u !== void 0 ? _u : ((_v = generator === null || generator === void 0 ? void 0 : generator.date) !== null && _v !== void 0 ? _v : $generator.date)()\n}); };\nreturn $ro0();\n})();\nconst cloned = (input => { const assert = input => {\nconst __is = input => {\nconst $is_uuid = typia_1.default.assertClone.is_uuid;\nconst $is_date = typia_1.default.assertClone.is_date;\nconst $io0 = input => \"string\" === typeof input.id && $is_uuid(input.id) && (\"string\" === typeof input.name && 3 <= input.name.length) && (\"number\" === typeof input.limit && parseInt(input.limit) === input.limit) && (Array.isArray(input.clerks) && input.clerks.every(elem => \"object\" === typeof elem && null !== elem && $io1(elem)));\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $guard = typia_1.default.assertClone.guard;\nconst $is_uuid = typia_1.default.assertClone.is_uuid;\nconst $is_date = typia_1.default.assertClone.is_date;\nconst $ao0 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.id && ($is_uuid(input.id) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id\n})) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id\n})) && (\"string\" === typeof input.name && (3 <= input.name.length || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@minLength 3)\",\nvalue: input.name\n})) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.limit && (parseInt(input.limit) === input.limit || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit\n})) || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number\",\nvalue: input.limit\n})) && ((Array.isArray(input.clerks) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n})) && input.clerks.every((elem, _index1) => (\"object\" === typeof elem && null !== elem || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) && $ao1(elem, _path + \".clerks[\" + _index1 + \"]\", true && _exceptionable) || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n}));\nconst $ao1 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.name || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.age && (19 < input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age\n})) && (100 >= input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age\n})) || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age\n})) && (\"number\" === typeof input.authority || $guard(_exceptionable, {\npath: _path + \".authority\",\nexpected: \"number\",\nvalue: input.authority\n})) && (\"string\" === typeof input.joined_at && ($is_date(input.joined_at) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string (@format date)\",\nvalue: input.joined_at\n})) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string\",\nvalue: input.joined_at\n}));\nreturn (\"object\" === typeof input && null !== input || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n})) && $ao0(input, _path + \"\", true) || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n});\n})(input, \"$input\", true);\nreturn input;\n}; const clone = input => {\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nconst $is_uuid = typia_1.default.assertClone.is_uuid;\nconst $is_date = typia_1.default.assertClone.is_date;\nconst $cp0 = input => input.map(elem => \"object\" === typeof elem && null !== elem ? $co1(elem) : elem);\nconst $co0 = input => ({\nid: input.id,\nname: input.name,\nlimit: input.limit,\nclerks: Array.isArray(input.clerks) ? $cp0(input.clerks) : input.clerks\n});\nconst $co1 = input => ({\nname: input.name,\nage: input.age,\nauthority: input.authority,\njoined_at: input.joined_at\n});\nreturn \"object\" === typeof input && null !== input ? $co0(input) : input;\n}; assert(input); const output = clone(input); return output; })(department);\nconsole.log(cloned);","prune-functions#prune() functions":"export function prune(input: T): T;\nexport function isPrune(input: unknown): T | null;\nexport function assertPrune(input: unknown): T;\nexport function validatePrune(input: unknown): IValidation;\n\nexport function createPrune(): (input: T) => T;\nexport function createIsPrune(): (input: unknown) => T | null;\nexport function createAssertPrune(): (input: unknown) => T;\nexport function createValidatePrune(): (input: unknown) => IValidation;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nDeep prune functions.When you want to remove every extra properties that are not defined in the type including nested objects, you can use typia.prune() function. Also, if you want to perform type safe pruning, you can use typia.isPrune(), typia.assertPrune() or typia.validatePrune() functions instead.\ntypia.isPrune(): typia.is() + typia.prune()\ntypia.assertPrune(): typia.assert() + typia.prune()\ntypia.validatePrune(): typia.validate() + typia.prune()\n\n\n\n\nimport typia from \"typia\";\n\nconst department: IDepartment = typia.random();\nconst pruned: IDepartment = typia.assertPrune(department);\nconsole.log(pruned);\n\ninterface IDepartment {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @minLength 3\n*/\nname: string;\n\n/**\n* @type int\n*/\nlimit: number;\n\nclerks: IClerk[];\n}\ninterface IClerk {\nname: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n\nauthority: number;\n\n/**\n* @format date\n*/\njoined_at: string;\n}\n\n\n\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\nreturn (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst typia_1 = __importDefault(require(\"typia\"));\nconst department = (generator => {\nconst $generator = typia_1.default.random.generator;\nconst $ro0 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s; return ({\nid: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [\n{\nname: \"format\",\nvalue: \"uuid\"\n}\n])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.uuid) !== null && _e !== void 0 ? _e : $generator.uuid)(),\nname: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.string) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"minLength\",\nvalue: \"3\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _k !== void 0 ? _k : $generator.string)(((_l = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _l !== void 0 ? _l : $generator.integer)(3, 25)),\nlimit: (_q = (_p = (_o = ((_m = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _m !== void 0 ? _m : $generator.customs)) === null || _o === void 0 ? void 0 : _o.number) === null || _p === void 0 ? void 0 : _p.call(_o, [\n{\nname: \"type\",\nvalue: \"int\"\n}\n])) !== null && _q !== void 0 ? _q : ((_r = generator === null || generator === void 0 ? void 0 : generator.integer) !== null && _r !== void 0 ? _r : $generator.integer)(0, 100),\nclerks: ((_s = generator === null || generator === void 0 ? void 0 : generator.array) !== null && _s !== void 0 ? _s : $generator.array)(() => $ro1(_recursive, _recursive ? 1 + _depth : _depth))\n}); };\nconst $ro1 = (_recursive = false, _depth = 0) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; return ({\nname: (_d = (_c = (_b = ((_a = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _a !== void 0 ? _a : $generator.customs)) === null || _b === void 0 ? void 0 : _b.string) === null || _c === void 0 ? void 0 : _c.call(_b, [])) !== null && _d !== void 0 ? _d : ((_e = generator === null || generator === void 0 ? void 0 : generator.string) !== null && _e !== void 0 ? _e : $generator.string)(),\nage: (_j = (_h = (_g = ((_f = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _f !== void 0 ? _f : $generator.customs)) === null || _g === void 0 ? void 0 : _g.number) === null || _h === void 0 ? void 0 : _h.call(_g, [\n{\nname: \"exclusiveMinimum\",\nvalue: \"19\"\n},\n{\nname: \"maximum\",\nvalue: \"100\"\n}\n])) !== null && _j !== void 0 ? _j : ((_k = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _k !== void 0 ? _k : $generator.number)(19, 100),\nauthority: (_p = (_o = (_m = ((_l = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _l !== void 0 ? _l : $generator.customs)) === null || _m === void 0 ? void 0 : _m.number) === null || _o === void 0 ? void 0 : _o.call(_m, [])) !== null && _p !== void 0 ? _p : ((_q = generator === null || generator === void 0 ? void 0 : generator.number) !== null && _q !== void 0 ? _q : $generator.number)(0, 100),\njoined_at: (_u = (_t = (_s = ((_r = generator === null || generator === void 0 ? void 0 : generator.customs) !== null && _r !== void 0 ? _r : $generator.customs)) === null || _s === void 0 ? void 0 : _s.string) === null || _t === void 0 ? void 0 : _t.call(_s, [\n{\nname: \"format\",\nvalue: \"date\"\n}\n])) !== null && _u !== void 0 ? _u : ((_v = generator === null || generator === void 0 ? void 0 : generator.date) !== null && _v !== void 0 ? _v : $generator.date)()\n}); };\nreturn $ro0();\n})();\nconst pruned = (input => { const assert = input => {\nconst __is = input => {\nconst $is_uuid = typia_1.default.assertPrune.is_uuid;\nconst $is_date = typia_1.default.assertPrune.is_date;\nconst $io0 = input => \"string\" === typeof input.id && $is_uuid(input.id) && (\"string\" === typeof input.name && 3 <= input.name.length) && (\"number\" === typeof input.limit && parseInt(input.limit) === input.limit) && (Array.isArray(input.clerks) && input.clerks.every(elem => \"object\" === typeof elem && null !== elem && $io1(elem)));\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $guard = typia_1.default.assertPrune.guard;\nconst $is_uuid = typia_1.default.assertPrune.is_uuid;\nconst $is_date = typia_1.default.assertPrune.is_date;\nconst $ao0 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.id && ($is_uuid(input.id) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id\n})) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id\n})) && (\"string\" === typeof input.name && (3 <= input.name.length || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@minLength 3)\",\nvalue: input.name\n})) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.limit && (parseInt(input.limit) === input.limit || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number (@type int)\",\nvalue: input.limit\n})) || $guard(_exceptionable, {\npath: _path + \".limit\",\nexpected: \"number\",\nvalue: input.limit\n})) && ((Array.isArray(input.clerks) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n})) && input.clerks.every((elem, _index1) => (\"object\" === typeof elem && null !== elem || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) && $ao1(elem, _path + \".clerks[\" + _index1 + \"]\", true && _exceptionable) || $guard(_exceptionable, {\npath: _path + \".clerks[\" + _index1 + \"]\",\nexpected: \"IClerk\",\nvalue: elem\n})) || $guard(_exceptionable, {\npath: _path + \".clerks\",\nexpected: \"Array\",\nvalue: input.clerks\n}));\nconst $ao1 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.name || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string\",\nvalue: input.name\n})) && (\"number\" === typeof input.age && (19 < input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age\n})) && (100 >= input.age || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age\n})) || $guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age\n})) && (\"number\" === typeof input.authority || $guard(_exceptionable, {\npath: _path + \".authority\",\nexpected: \"number\",\nvalue: input.authority\n})) && (\"string\" === typeof input.joined_at && ($is_date(input.joined_at) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string (@format date)\",\nvalue: input.joined_at\n})) || $guard(_exceptionable, {\npath: _path + \".joined_at\",\nexpected: \"string\",\nvalue: input.joined_at\n}));\nreturn (\"object\" === typeof input && null !== input || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n})) && $ao0(input, _path + \"\", true) || $guard(true, {\npath: _path + \"\",\nexpected: \"IDepartment\",\nvalue: input\n});\n})(input, \"$input\", true);\nreturn input;\n}; const prune = input => {\nconst $io1 = input => \"string\" === typeof input.name && (\"number\" === typeof input.age && 19 < input.age && 100 >= input.age) && \"number\" === typeof input.authority && (\"string\" === typeof input.joined_at && $is_date(input.joined_at));\nconst $is_uuid = typia_1.default.assertPrune.is_uuid;\nconst $is_date = typia_1.default.assertPrune.is_date;\nconst $pp0 = input => input.forEach(elem => {\nif (\"object\" === typeof elem && null !== elem)\n$po1(elem);\n});\nconst $po0 = input => {\nif (Array.isArray(input.clerks))\n$pp0(input.clerks);\nfor (const key of Object.keys(input)) {\nif (\"id\" === key || \"name\" === key || \"limit\" === key || \"clerks\" === key)\ncontinue;\ndelete input[key];\n}\n};\nconst $po1 = input => {\nfor (const key of Object.keys(input)) {\nif (\"name\" === key || \"age\" === key || \"authority\" === key || \"joined_at\" === key)\ncontinue;\ndelete input[key];\n}\n};\nif (\"object\" === typeof input && null !== input)\n$po0(input);\n}; assert(input); prune(input); return input; })(department);\nconsole.log(pruned);"}},"/docs/setup":{"title":"Setup","data":{"":"","summary#Summary":"npm install typia\nnpx typia setup\n\n\n\npnpm install typia\npnpm typia setup --manager pnpm\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn add typia\nyarn typia setup --manager yarn\n\n\nIf you're using standard TypeScript compiler, you can use transform mode.Just run npx typia setup command, then everything be prepared.\nStandard TypeScript Compiler: Microsoft/TypeScript\n\n\n\n\nnpm install typia\nnpm install --save-dev typescript\n\nnpx typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\npnpm install typia\npnpm install --save-dev typescript\n\npnpm typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\nyarn add typia\nyarn add -D typescript\n\nyarn typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\nOtherwise you are using non-standard TypeScript compiler, then you can't use transformation mode.Instead, you can use generation mode.Run typia generate command with input directory, then transformed TypeScript files would be generated into the output directory.\nNon-standard TypeScript Compilers\nSWC\nESBuild\nBabel","transformation#Transformation":"","concepts#Concepts":"AOT (Ahead of Time) compilation mode.When you write a TypeScript code calling typia.createIs() function and compile it through tsc command, typia will replace the typia.createIs() statement to optimal validation code in the compiled JavaScript file, for the IMember type.This is the transform mode performing AOT (Ahead of Time) compilation.\n\n\nimport typia from \"typia\";\n\nexport const check = typia.createIs();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nexport const check = input => {\nconst $is_uuid = typia.createIs.is_uuid;\nconst $is_email = typia.createIs.is_email;\nreturn \"object\" === typeof input &&\nnull !== input &&\n(\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n(\"string\" === typeof input.email && $is_email(input.email)) &&\n(\"number\" === typeof input.age && 19 < input.age && 100 >= input.age)\n);\n};","setup-wizard#Setup Wizard":"npm install --save typia\nnpx typia setup\n\n\n\npnpm install --save typia\npnpm typia setup --manager pnpm\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn add typia\nyarn typia setup --manager yarn\n\n\nYou can turn on transformation mode just by running npx typia setup command.Setup wizard would be executed, and it will do everything for the transformation.","manual-setup#Manual Setup":"npm install --save typia\nnpm install --save-dev typescript ts-patch ts-node\n\n\n\npnpm install --save typia\npnpm install --save-dev typescript ts-patch ts-node\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn add typia\nyarn add -D typescript ts-patch ts-node\n\n\nIf you want to install typia manually, just follow the steps.At first, install typia as depepdency. And then, install typescript, ts-patch and ts-node as devDependencies.\n{\n\"strict\": true,\n\"strictNullChecks\": true,\n\"compilerOptions\": {\n\"plugins\": [\n{ \"transform\": \"typia/lib/transform\" }\n]\n}\n}\nAt second, open your tsconfig.json file and configure like above.As typia generates optimal operation code through transformation, you've to configure it as a plugin. Also, never forget to configure strict (or strictNullChecks) to be true. It is essential option for modern TypeScript development.\n{\n\"scripts\": {\n\"postinstall\": \"ts-patch install\"\n},\n\"dependencies\": {\n\"typia\": \"^4.1.8\"\n},\n\"devDependencies\": {\n\"ts-node\": \"^10.9.1\",\n\"ts-patch\": \"^3.0.2\",\n\"typescript\": \"^5.1.6\"\n}\n}\n\n\n\nnpm run postinstall\n\n\n\npnpm postinstall\n\n\n\n# YARN BERRY IS NOT SUPPORTED\nyarn postinstall\n\n\nAt last, open package.json file and configure npm run postinstall command like above.Of course, you've to run the npm run postinstall command after the configuration.For reference, ts-patch is an helper library of TypeScript compiler that supporting custom transformations by plugins. From now on, whenever you run tsc command, your typia function call statements would be transformed to the optimal operation codes in the compiled JavaScript files.","generation#Generation":"# INSTALL TYPIA\nnpm install --save typia\nnpm install --save-dev typescript\n\n# GENERATE TRANSFORMED TYPESCRIPT CODES\nnpx typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\n# INSTALL TYPIA\npnpm install --save typia\npnpm install --save-dev typescript\n\n# GENERATE TRANSFORMED TYPESCRIPT CODES\npnpm typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\n\n# INSTALL TYPIA\nyarn add typia\nyarn add -D typescript\n\n# GENERATE TRANSFORMED TYPESCRIPT CODES\nyarn typia generate \\\n--input src/templates \\\n--output src/generated \\\n--project tsconfig.json\n\n\nFor frontend projects.If you're using non-standard TypeScript compiler, you can't use [transform mode\nNon-standard TypeScript compilers:\nSWC in Next.JS\nESBuild in Vite\nBabel in Create-React-App\n\n\n\nInstead, you should utilize the generation mode.Install typia through npm install command, and run typia generate command. Then, generator of typia reads your TypeScript codes of --input, and writes transformed TypeScript files into the --output directory, like below.If you want to specify other TypeScript project file instead of tsconfig.json, you can use --project option.\n\n\nimport typia from \"typia\";\n\nimport { IMember } from \"../structures/IMember\";\n\nexport const check = typia.createIs();\n\n\n\nimport typia from \"typia\";\nimport { IMember } from \"../structures/IMember\";\nexport const check = (input: any): input is IMember => {\nconst $is_uuid = (typia.createIs as any).is_uuid;\nconst $is_email = (typia.createIs as any).is_email;\nreturn \"object\" === typeof input &&\nnull !== input &&\n(\n\"string\" === typeof input.id && is_uuid(input.id) &&\n(\"string\" === typeof input.email && $is_email(input.email)) &&\n(\"number\" === typeof input.age && 19 <= input.age && 100 >= input.age)\n);\n};\n\n\n\n\n\n\nWhy not support non-standard compilers?\nNon-standard TypeScript compilers are removing every type informations, and skipping type checkings for repid compilation. By the way, without those type informations, typia can't do anything. This is the reason why typia doesn't support non-standard TypeScript compilers.By the way, SWC is preparing a new project STC keeping type informations. Therefore, typia will support it.","vite#Vite":"If you've made your frontend project through vite, you can still utilize the transformation mode.Just configure vite.config.ts file below, that's all.\nimport { defineConfig } from 'vite'\nimport react from '@vitejs/plugin-react'\nimport typescript from \"rollup-plugin-typescript2\";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\nesbuild: false,\nplugins: [\nreact(),\ntypescript()\n]\n});","webpack#Webpack":"# TYPIA\nnpm install typia\nnpx typia setup\n\n# WEBPACK + TS-LOADER\nnpm install --save-dev ts-loader\nnpm install --save-dev webpack webpack-cli\n\n\n\n# TYPIA\npnpm install typia\npnpm typia setup --manager pnpm\n\n# WEBPACK + TS-LOADER\npnpm install --save-dev ts-loader\npnpm install --save-dev webpack webpack-cli\n\n\n\n##############################\n# YARN BERRY IS NOT SUPPORTED\n##############################\n# TYPIA\nyarn add typia\nyarn typia setup --manager yarn\n\n# WEBPACK + TS-LOADER\nyarn add -D ts-loader\nyarn add -D webpack webpack-cli\n\n\nWhen you're using webpack as a bundler, you can still utilize the transformation mode.Just install ts-loader as well as webpack, and configure webpack.config.js file like below, that's all.\nconst path = require(\"path\");\nconst nodeExternals = require('webpack-node-externals');\n\nmodule.exports = {\n// CUSTOMIZE HERE\nentry: ['./src/index.tsx'],\noutput: {\npath: path.join(__dirname, 'dist'),\nfilename: 'index.js',\n},\noptimization: {\nminimize: false\n},\n\n// JUST KEEP THEM\nmode: 'development',\ntarget: 'node',\nmodule: {\nrules: [\n{\ntest: /\\.ts$/,\nexclude: /node_modules/,\nloader: 'ts-loader',\n}\n]\n},\nresolve: {\nextensions: ['.tsx', '.ts', '.js'],\n},\n};"}},"/docs/utilization/nestjs":{"title":"Nestjs","data":{"":"Nestia is a set of helper libraries for NestJS, supporting below features:\n@nestia/core: superfast decorators using typia\n@nestia/sdk: evolved SDK and Swagger generators\n@nestia/migrate: Swagger to NestJS\nnestia: just CLI (command line interface) tool\n\n\nimport { Controller } from \"@nestjs/common\";\nimport { TypedBody, TypedRoute } from \"@nestia/core\";\n\nimport type { IBbsArticle } from \"@bbs-api/structures/IBbsArticle\";\n\n@Controller(\"bbs/articles\")\nexport class BbsArticlesController {\n/**\n* Store a new content.\n*\n* @param inupt Content to store\n* @returns Newly archived article\n*/\n@TypedRoute.Post() // 200x faster and safer JSON.stringify()\npublic async store(\n@TypedBody() input: IBbsArticle.IStore // 20,000x faster validator\n): Promise;\n// do not need DTO class definition,\n// just fine with interface\n}\n\nLeft: NestJS server code\nRight: Client code using SDK"}},"/docs/utilization/prisma":{"title":"Prisma","data":{"":"model bbs_articles {\nid String @id @db.Uuid /// @format uuid\ncreated_at DateTime @db.Timestamptz\n\n/// @minItems 1\nsnapshots bbs_article_snapshots[]\n}\n\nmodel bbs_article_snapshots {\nid String @id @db.Uuid /// @format uuid\nbbs_article_id String @db.Uuid /// @format uuid\nformat String @db.VarChar\n\n/// @minLength 5\n/// @maxLength 80\ntitle String @db.VarChar\nbody String\ncreated_at DateTime @db.Timestamptz\n\narticle bbs_articles @relation(fields: [bbs_article_id], references: [id])\n}\n\n\n\n/**\n* Model bbs_articles\n*/\nexport type bbs_articles = {\n/**\n* @format uuid\n*/\nid: string\ncreated_at: Date\n}\n\n/**\n* Model bbs_article_snapshots\n*/\nexport type bbs_article_snapshots = {\n/**\n* @format uuid\n*/\nid: string\n/**\n* @format uuid\n*/\nbbs_article_id: string\nformat: string\n/**\n* @minLength 5\n* @maxLength 80\n*/\ntitle: string\nbody: string\ncreated_at: Date\n}\n\n\nWhen defining prisma.schema file, you can write comment tags just by using /// statement.After the definition, you utillize some validate function like typia.assert(), for type safe insertion."}},"/docs/utilization/trpc":{"title":"Trpc","data":{"":"import { initTRPC } from \"@trpc/server\";\nimport { v4 } from \"uuid\";\nimport typia from \"typia\";\n\nimport { IBbsArticle } from \"../structures/IBbsArticle\";\n\nconst server = initTRPC.create();\n\nexport const appRouter = server.router({\nstore: server.procedure\n.input(typia.createAssert())\n.output(typia.createAssert())\n.query(({ input }) => {\nreturn {\nid: v4(),\nwriter: input.writer,\ntitle: input.title,\nbody: input.body,\ncreated_at: new Date().toString(),\n};\n})\n});\nexport type AppRouter = typeof appRouter;"}},"/docs/validators/comment-tags":{"title":"Comment Tags","data":{"":"","outline#Outline":"typia can use comment tags for type validation.In TypeScript (and JavaScript), writing @ character in comment is called \"Comment Tag\", and typia utilizes such comment tags for enhancing type validation logic. As you can see from below example code, typia analyzes @tagName value patterned comment tags, and generates optimal validation logic in the compilation level.Therefore, don't be afraid typia uses only pure TypeScript types for type validation schema. Don't be afraid about TypeScript does not support integer type. With those comment tags, you can express any type that exists in the world.\nQ: How to validate integer type? TypeScript does not support it\nA: Write a comment tag @type int on the target property\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","supported-tags#Supported Tags":"typia supports those comment tags.I think below list is not hard to understand.\nnumber\n@type {\"int\"|\"uint\"}\n@minimum {number}\n@maximum {number}\n@exclusiveMinimum {number}\n@exclusiveMaximum {number}\n@multipleOf {number}\n\n\nstring\n@minLength {number}\n@maxLength {number}\n@pattern {regex}\n@format {keyword}\nemail\nuuid\nipv4\nipv6\nurl\ndate: YYYY-MM-DD\ndate-time: Date.toISOString()\n\n\n\n\narray\n@minItems {number}\n@maxItems {number}","customization#Customization":"export function is(input: unknown): input is T;\nexport function assert(input: unknown): T;\nexport function validate(input: unknown): IValidation;\n\nexport const customValidators: CustomValidatorMap;\n\n\n\nexport interface CustomValidatorMap {\nsize(): number;\nsize(name: string): number;\n\n// Type: {number, bigint, string}\nhas: (name: string) => (type: keyof Customizable) => boolean;\nget:\n(name: string) =>\n(type: Type) =>\nCustomValidatorMap.Closure | undefined;\nerase:\n(name: string) =>\n(type: keyof Customizable) => boolean;\ninsert:\n(name: string) =>\n(type: Type) =>\n(closure: CustomValidatorMap.Closure) => boolean;\n}\nexport namespace CustomValidatorMap {\nexport type Closure =\n(text: string) => // tag name\n(value: Customizable[Type]) => boolean; // instance value\n}\n\n\n\nexport interface Customizable {\nnumber: number;\nstring: string;\nbigint: bigint;\n}\n\n\nYou can add custom comment tags for type validation.If you need addtional comment tag for type validation, just define it by yourself. Write your custom validation logic as a closure function, and register it through typia.customValidationMap.insert() function, following above CustomValidatorMap and Customizable types.Note that, 1st parameter of typia.customValidationMap.insert() function means tag name, and 2nd parameter means instance type (boolean|number|bigint|string). Also, when defining closure currying function of validation logic, 1st parameter means tag name and 2nd means input value.If you're not familiar with functional programming, just read below example code:\n\n\nimport typia from \"typia\";\n\nexport const checkTagCustom = typia.createIs();\n\ntypia.customValidators.insert(\"powerOf\")(\"number\")(\n(text: string) => { // tag name\nconst denominator: number = Math.log(Number(text));\nreturn (value: number) => { // input value\nvalue = Math.log(value) / denominator;\nreturn Math.abs(value - Math.floor(value)) < .000001;\n};\n}\n);\ntypia.customValidators.insert(\"dollar\")(\"string\")(\n() => (value: string) => value.startsWith(\"$\"),\n);\n\ninterface TagCustom {\n/**\n* @powerOf 10\n*/\npowerOf: number;\n\n/**\n* @dollar\n*/\ndollar: string;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkTagCustom = (input) => {\nconst $is_custom = typia.createIs.is_custom;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"number\" === typeof input.powerOf &&\n$is_custom(\"powerOf\", \"number\", \"10\", input.powerOf) &&\n\"string\" === typeof input.dollar &&\n$is_custom(\"dollar\", \"string\", \"\", input.dollar)\n);\n};\n\ntypia.customValidators.insert(\"powerOf\")(\"number\")(\n(text) => {\nconst denominator = Math.log(Number(text));\nreturn (value) => {\nvalue = Math.log(value) / denominator;\nreturn Math.abs(value - Math.floor(value)) < 0.000001;\n};\n}\n);\ntypia.customValidators.insert(\"dollar\")(\"string\")(\n() => (value) => value.startsWith(\"$\"),\n);"}},"/docs/validators/assert":{"title":"Assert","data":{"":"","assert-function#assert() function":"export function assert(input: T): T;\nexport function assert(input: unknown): T;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\nAsserts a value type.typia.assert() function throws a TypeGuardError when wrong type comes.The TypeGuardError instance has only the first type error info, with access path and expected type. In the below example case, as the age property is wrong with its definition (@exclusiveMinimum), such TypeGuardError would be thrown:\nmethod: typia.assert()\npath: input.age\nvalue: 18,\nexpected: number (@exclusiveMinimum 19)\n\n\n\n\n\nAOT compliation\nIf you'd used other competitive validator libraries like ajv or class-validator, you may found that typia does not require any extra schema definition. If you have not experienced them, I can sure that you may get shocked after reading below extra schema definition files.\najv requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\nYeah, typia needs only pure TypeScript type. As typia is a compiler library, it can analyze TypeScript type by itself, and possible to write the optimal validation code like below. This is the key principle of typia, which needs only one line with pure TypeScript type.\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\ntypia.assert({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 18, // wrong, must be greater than 19\n});\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\n((input) => {\nconst $guard = typia.assert.guard;\nconst $is_uuid = typia.assert.is_uuid;\nconst $is_email = typia.assert.is_email;\nconst __is = (input) => {\nconst $is_uuid = typia.assert.is_uuid;\nconst $is_email = typia.assert.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n})({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\n});","assertequals-function#assertEquals() function":"export function assertEquals(input: T): T;\nexport function assertEquals(input: unknown): T;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\nMore strict assert function prohibiting superfluous properties.typia.assert() function inspects input value type and throws TypeGuardError when mismatched, however, it can't detect superfluous properties. If you want to prohibit those superfluous properties, therefore throws an TypeGuardError when superfluous property exists, use typia.assertEquals function instead.In the below example case, as sex property is not defined in the IMember type, such TypeGuardError would be thrown:\nmethod: typia.assertEquals()\npath: input.sex\nvalue: 1,\nexpected: undefined\n\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\ntypia.assert({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nsex: 1, // extra\n});\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\n((input) => {\nconst $guard = typia.assert.guard;\nconst $is_uuid = typia.assert.is_uuid;\nconst $is_email = typia.assert.is_email;\nconst __is = (input) => {\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n})({\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nsex: 1, // extra\n});","reusable-functions#Reusable functions":"export function createAssert(): (input: unknown) => T;\nexport function createAssertEquals(): (input: unknown) => T;\n\n\n\nexport class TypeGuardError extends Error {\npublic readonly method: string;\npublic readonly path: string | undefined;\npublic readonly expected: string;\npublic readonly value: any;\n}\n\n\nReusable typia.assert() function generators.If you repeat to call typia.assert() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createAssert() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const assertMember = typia.createAssert();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const assertMember = (input) => {\nconst $guard = typia.createAssert.guard;\nconst $is_uuid = typia.createAssert.is_uuid;\nconst $is_email = typia.createAssert.is_email;\nconst __is = (input) => {\nconst $is_uuid = typia.createAssert.is_uuid;\nconst $is_email = typia.createAssert.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age &&\n100 >= input.age\n);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) =>\n((\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n})) &&\n((\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n})) &&\n((\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$guard(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}));\nreturn (\n((\"object\" === typeof input && null !== input) ||\n$guard(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$ao0(input, _path + \"\", true)\n);\n})(input, \"$input\", true);\nreturn input;\n};","customization#Customization":"You can enhance validation logic by using comment tags.Also, with the comment tags, you can add your custom validation logic, too.If you want to know about such comment tags detaily, read below article:\nComment Tags\nOutline\nSupported Tags\nCustomization\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","performance#Performance":"Super-fast and super-safe.Comparing typia.assert() function with other competitive libraries, maximum 20,000x faster.Furthermore, only typia can validate complicate union types.\nMeasured on Intel i5-1135g7, Surface Pro 8\n\nComponents\ttypia\tTypeBox\tajv\tio-ts\tzod\tC.V.\tEasy to use\t✅\t❌\t❌\t❌\t❌\t❌\tObject (simple)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (recursive)\t✔\t❌\t✔\t✔\t✔\t✔\t✔\tObject (union, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tObject (union, explicit)\t✔\t✔\t✔\t✔\t✔\t❌\tObject (additional tags)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (template literal types)\t✔\t✔\t✔\t❌\t❌\t❌\tObject (dynamic properties)\t✔\t✔\t✔\t❌\t❌\t❌\tArray (rest tuple)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tArray (recursive)\t✔\t✔\t✔\t✔\t✔\t❌\tArray (recursive, union)\t✔\t✔\t❌\t✔\t✔\t❌\tArray (R+U, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated, union)\t✅\t❌\t❌\t❌\t❌\t❌\tUltimate Union Type\t✅\t❌\t❌\t❌\t❌\t❌\n\nC.V. means class-validator"}},"/docs/validators/is":{"title":"Is","data":{"":"","is-function#is() function":"export function is(input: T): input is T;\nexport function is(input: unknown): input is T;\nTests a value type.When you need to test an instance type, just call typia.is() function.If the input value is following type T, true value would be returned. Otherwise, false would be returned.\n\n\n\nAOT compliation\nIf you'd used other competitive validator libraries like ajv or class-validator, you may found that typia does not require any extra schema definition. If you have not experienced them, I can sure that you may get shocked after reading below extra schema definition files.\najv requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\nYeah, typia needs only pure TypeScript type. As typia is a compiler library, it can analyze TypeScript type by itself, and possible to write the optimal validation code like below. This is the key principle of typia, which needs only one line with pure TypeScript type.\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst matched: boolean = typia.is({\nid: v4(),\nemail: \"samchon.github@gmai19l.com\",\nage: 30,\n});\n\nconsole.log(matched); // true\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst matched = (input => {\nconst $is_uuid = typia_1.default.is.is_uuid;\nconst $is_email = typia_1.default.is.is_email;\nreturn \"object\" === typeof input &&\nnull !== input &&\n(\n\"string\" === typeof input.id && true === $is_uuid(input.id) &&\n(\"string\" === typeof input.email && $is_email(input.email)) &&\n(\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n)\n);\n})({\nid: (0, uuid_1.v4)(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\n});\n\nconsole.log(matched); // true","equals-function#equals() function":"export function equals(input: T): input is T;\nexport function equals(input: unknown): input is T;\nMore strict checker prohibiting superfluous properties.typia.is() can test instance type, but it allows superfluous properties.If you want to prohibit those superfluous properties, you can use typia.equals() function instead.\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst input: unknown = {\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nextra: \"superfluous property\", // extra\n};\nconst is: boolean = typia.is(input);\nconst equals: boolean = typia.equals(input);\n\nconsole.log(is, equals); // true, false\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\nimport { v4 } from \"uuid\";\n\nconst input = {\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\nextra: \"superfluous property\", // extra\n};\n\nconst is = ((input) => {\nconst $is_uuid = typia.is.is_uuid;\nconst $is_email = typia.is.is_email;\nreturn (\n\"object\" === typeof input &&\nnull !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n})(input);\nconst equals = ((input, _exceptionable = true) => {\nconst $is_uuid = typia.equals.is_uuid;\nconst $is_email = typia.equals.is_email;\nconst $io0 = (input, _exceptionable = true) =>\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n(3 === Object.keys(input).length ||\nObject.keys(input).every((key) => {\nif ([\"id\", \"email\", \"age\"].some((prop) => key === prop))\nreturn true;\nconst value = input[key];\nif (undefined === value) return true;\nreturn false;\n}));\nreturn \"object\" === typeof input && null !== input && $io0(input, true);\n})(input);\n\nconsole.log(is, equals); // true, false","reusable-functions#Reusable functions":"export function createIs(): (input: unknown) => input is T;\nexport function createEquals(): (input: unknown) => input is T;\nReusable typia.is() function generators.If you repeat to call typia.is() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createIs() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const check = typia.createIs();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const check = (input) => {\nconst $is_uuid = typia.createIs.is_uuid;\nconst $is_email = typia.createIs.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};","auto-type-casting#Auto Type Casting":"export function is(input: unknown): input is T;\nexport function equals(input: unknown): input is T;\nexport function createIs(): (input: unknown) => input is T;\nexport function createEquals(): (input: unknown) => input is T;\ntypia.is() function can be used for type casting.When target input value is following the type T, therefore true value be returned, typia.is() function automatically casts the input value to the type T. Therefore, you can utilize the typia.is() function for safe type casting tool like below:\nconst input: unknown = {\nid: v4(),\nemail: \"samchon.github@gmail.com\",\nage: 30,\n} as any;\nif (typia.is(input)) // auto type casting\nconsole.log(input.id, input.email, input.age);","customization#Customization":"You can enhance validation logic by using comment tags.Also, with the comment tags, you can add your custom validation logic, too.If you want to know about such comment tags detaily, read below article:\nComment Tags\nOutline\nSupported Tags\nCustomization\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","performance#Performance":"Super-fast and super-safe.Comparing typia.is() function with other competitive libraries, maximum 20,000x faster.Furthermore, only typia can validate complicate union types.\nMeasured on Intel i5-1135g7, Surface Pro 8\n\nComponents\ttypia\tTypeBox\tajv\tio-ts\tzod\tC.V.\tEasy to use\t✅\t❌\t❌\t❌\t❌\t❌\tObject (simple)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (recursive)\t✔\t❌\t✔\t✔\t✔\t✔\t✔\tObject (union, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tObject (union, explicit)\t✔\t✔\t✔\t✔\t✔\t❌\tObject (additional tags)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (template literal types)\t✔\t✔\t✔\t❌\t❌\t❌\tObject (dynamic properties)\t✔\t✔\t✔\t❌\t❌\t❌\tArray (rest tuple)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tArray (recursive)\t✔\t✔\t✔\t✔\t✔\t❌\tArray (recursive, union)\t✔\t✔\t❌\t✔\t✔\t❌\tArray (R+U, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated, union)\t✅\t❌\t❌\t❌\t❌\t❌\tUltimate Union Type\t✅\t❌\t❌\t❌\t❌\t❌\n\nC.V. means class-validator"}},"/docs/validators/validate":{"title":"Validate","data":{"":"","validate-function#validate() function":"export function validate(input: T): IValidation;\nexport function validate(input: unknown): IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nValidates a value type.typia.validate() function validates input value type, and archives every type errors detaily into IValidation.IFailure.errors array, when the input value is not following the promised type T. Of course, if the parametric input value is following the type T, IValidation.ISuccess instance would be returned.In the below example case, as id and age values are different with its definition of IMember, such errors would be archived into the IValidation.IFailure.errors array.\nerrors[0]\npath: input.id\nexpected: string\nvalue: 5\n\n\nerrors[1]\npath: input.age\nexpected: number (@type int)\nvalue: 20.75\n\n\n\n\n\n\n\nAOT compliation\nIf you'd used other competitive validator libraries like ajv or class-validator, you may found that typia does not require any extra schema definition. If you have not experienced them, I can sure that you may get shocked after reading below extra schema definition files.\najv requires JSON schema definition.\nclass-validator requires DTO class with decorator function calls.\n\nYeah, typia needs only pure TypeScript type. As typia is a compiler library, it can analyze TypeScript type by itself, and possible to write the optimal validation code like below. This is the key principle of typia, which needs only one line with pure TypeScript type.\n\n\n\nimport typia from \"typia\";\n\nconst res: typia.IValidation = typia.validate({\nid: 5, // wrong, must be string (uuid)\nage: 20.75, // wrong, not integer\nemail: \"samchon.github@gmail.com\",\n});\n\nif (!res.success) console.log(res.errors);\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst res = ((input) => {\nconst __is = (input) => {\nconst $is_uuid = typia.validate.is_uuid;\nconst $is_email = typia.validate.is_email;\nreturn (\n\"object\" === typeof input && null !== input &&\n\"string\" === typeof input.id && $is_uuid(input.id) &&\n\"string\" === typeof input.email && $is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nconst errors = [];\nconst $report = typia.validate.report(errors);\nconst $is_uuid = typia.validate.is_uuid;\nconst $is_email = typia.validate.is_email;\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $vo0 = (input, _path, _exceptionable = true) =>\n[\n(\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n}),\n(\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n}),\n(\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}),\n].every((flag) => flag);\nreturn (\n(((\"object\" === typeof input && null !== input) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$vo0(input, _path + \"\", true)) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})\n);\n})(input, \"$input\", true);\nconst success = 0 === errors.length;\nreturn {\nsuccess,\nerrors,\ndata: success ? input : undefined,\n};\n})({\nid: 5, // wrong, must be string (uuid)\nage: 20.75, // wrong, not integer\nemail: \"samchon.github@gmail.com\",\n});\nif (!res.success) console.log(res.errors);","validateequals-function#validateEquals() function":"export function validateEquals(input: T): IValidation;\nexport function validateEquals(input: unknown): IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nMore strict validatae function prohibiting superfluous properties.typia.validate function detects every type errors of input value, however, it can't detect superfluous properties. If you want to prohibit those superfluous properties, so that archive them into IValidation.IFailure.errors array, use typia.validateEquals() function instead.In the below example case, as id property is different with its type definition and sex property is not defined in the IMember type, such errors would be archived into the IValidation.IFailure.errors array:\nerrors[0]\npath: input.id\nexpected: string (@format uuid)\nvalue: something\n\n\nerrors[1]\npath: input.sex\nexpected: undefined\nvalue: 1\n\n\n\n\n\n\nimport typia from \"typia\";\n\nconst res: typia.IValidation = typia.validateEquals({\nage: 30,\nemail: \"samchon.github@gmail.com\",\nid: \"something\", // wrong, must be string (uuid)\nsex: 1, // extra property\n});\n\nif (!res.success) console.log(res.errors);\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nconst res = ((input) => {\nconst __is = (input, _exceptionable = true) => {\nconst $is_uuid = typia.validateEquals.is_uuid;\nconst $is_email = typia.validateEquals.is_email;\nconst $io0 = (input, _exceptionable = true) =>\n\"string\" === typeof input.id &&\n$is_uuid(input.id) &&\n\"string\" === typeof input.email &&\n$is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age &&\n(3 === Object.keys(input).length ||\nObject.keys(input).every((key) => {\nif ([\"id\", \"email\", \"age\"].some((prop) => key === prop))\nreturn true;\nconst value = input[key];\nif (undefined === value) return true;\nreturn false;\n}));\nreturn \"object\" === typeof input && null !== input && $io0(input, true);\n};\nconst errors = [];\nconst $report = typia.validateEquals.report(errors);\nconst $is_uuid = typia.validateEquals.is_uuid;\nconst $is_email = typia.validateEquals.is_email;\nconst $join = typia.validateEquals.join;\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $vo0 = (input, _path, _exceptionable = true) =>\n[\n(\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n}),\n(\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n}),\n(\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}),\n3 === Object.keys(input).length ||\nfalse === _exceptionable ||\nObject.keys(input)\n.map((key) => {\nif (\n[\"id\", \"email\", \"age\"].some(\n(prop) => key === prop,\n)\n)\nreturn true;\nconst value = input[key];\nif (undefined === value) return true;\nreturn $report(_exceptionable, {\npath: _path + $join(key),\nexpected: \"undefined\",\nvalue: value,\n});\n})\n.every((flag) => flag),\n].every((flag) => flag);\nreturn (\n(((\"object\" === typeof input && null !== input) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$vo0(input, _path + \"\", true)) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})\n);\n})(input, \"$input\", true);\nconst success = 0 === errors.length;\nreturn {\nsuccess,\nerrors,\ndata: success ? input : undefined,\n};\n})({\nage: 30,\nemail: \"samchon.github@gmail.com\",\nid: \"something\", // wrong, must be string (uuid)\nsex: 1, // extra property\n});\n\nif (!res.success) console.log(res.errors);","reusable-functions#Reusable functions":"export function createValidate = (input: unknown) => IValidation;\nexport function createValidateEquals = (input: unknown) => IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nReusable typia.validate() function generators.If you repeat to call typia.validate() function on the same type, size of JavaScript files would be larger because of duplicated AOT compilation. To prevent it, you can generate reusable function through typia.createValidate() function.Just look at the code below, then you may understand how to use it.\n\n\nimport typia from \"typia\";\n\nexport const validateMember = typia.createValidate();\n\ninterface IMember {\n/**\n* @format uuid\n*/\nid: string;\n\n/**\n* @format email\n*/\nemail: string;\n\n/**\n* @type int\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nage: number;\n}\n\n\n\nimport typia from \"typia\";\n\nexport const validateMember = (input) => {\nconst __is = (input) => {\nconst $is_uuid = typia.createValidate.is_uuid;\nconst $is_email = typia.createValidate.is_email;\nreturn (\n\"object\" === typeof input &&\nnull !== input &&\n\"string\" === typeof input.id &&\n$is_uuid(input.id) &&\n\"string\" === typeof input.email &&\n$is_email(input.email) &&\n\"number\" === typeof input.age &&\nparseInt(input.age) === input.age &&\n19 < input.age && 100 >= input.age\n);\n};\nconst errors = [];\nconst $report = typia.createValidate.report(errors);\nconst $is_uuid = typia.createValidate.is_uuid;\nconst $is_email = typia.createValidate.is_email;\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $vo0 = (input, _path, _exceptionable = true) =>\n[\n(\"string\" === typeof input.id &&\n($is_uuid(input.id) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id,\n}),\n(\"string\" === typeof input.email &&\n($is_email(input.email) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string (@format email)\",\nvalue: input.email,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".email\",\nexpected: \"string\",\nvalue: input.email,\n}),\n(\"number\" === typeof input.age &&\n(parseInt(input.age) === input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@type int)\",\nvalue: input.age,\n})) &&\n(19 < input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@exclusiveMinimum 19)\",\nvalue: input.age,\n})) &&\n(100 >= input.age ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number (@maximum 100)\",\nvalue: input.age,\n}))) ||\n$report(_exceptionable, {\npath: _path + \".age\",\nexpected: \"number\",\nvalue: input.age,\n}),\n].every((flag) => flag);\nreturn (\n(((\"object\" === typeof input && null !== input) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})) &&\n$vo0(input, _path + \"\", true)) ||\n$report(true, {\npath: _path + \"\",\nexpected: \"IMember\",\nvalue: input,\n})\n);\n})(input, \"$input\", true);\nconst success = 0 === errors.length;\nreturn {\nsuccess,\nerrors,\ndata: success ? input : undefined,\n};\n};","discriminated-union#Discriminated Union":"export function validate(input: T): IValidation;\nexport function validate(input: unknown): IValidation;\nexport function createValidate(): (input: unknown) => IValidation;\n\n\n\nexport type IValidation =\n| IValidation.ISuccess\n| IValidation.IFailure;\nexport namespace IValidation {\nexport interface ISuccess {\nsuccess: true;\ndata: T;\n}\nexport interface IFailure {\nsuccess: false;\nerrors: IError[];\n}\nexport interface IError {\npath: string;\nexpected: string;\nvalue: any;\n}\n}\n\n\nSpecify type through if condition.typia.IValidation is an union type of typia.IValidation.ISuccess and typia.IValidation.IFailure. Also, they have a common property success of boolean type, but different literal values. In that case, if you write a if condition about the success property, you can specify the union type like below.In TypeScript, such union type specification through common property (of different literal value() is called \"Discriminated Union\". Therefore, when using typia.validate() function, let's utilize such discriminated union specification for convenience.\nimport typia from \"typia\";\n\nconst something: unknown = ...;\nconst result: typia.IValidation = typia.validate(something);\n\nif (results.success) {\n// become typia.IValidation.Success type\nresult.data; // accessible\n}\nelse {\n// become typia.IValidation.Failure type\nresult.errors; //accessible\n}","customization#Customization":"You can enhance validation logic by using comment tags.Also, with the comment tags, you can add your custom validation logic, too.If you want to know about such comment tags detaily, read below article:\nComment Tags\nOutline\nSupported Tags\nCustomization\n\n\n\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = typia.createIs();\n\ninterface CommentTag {\n/**\n* @type int\n*/\ntype: number;\n\n/**\n* @exclusiveMinimum 19\n* @maximum 100\n*/\nnumber?: number;\n\n/**\n* @minLength 3\n*/\nstring: string;\n\n/**\n* @pattern ^[a-z]+$\n*/\npattern: string;\n\n/**\n* @format date-time\n*/\nformat: string | null;\n\n/**\n* In the Array case, possible to restrict its elements.\n*\n* @minItems 3\n* @maxItems 100\n* @format uuid\n*/\narray: string[];\n}\n\n\n\nimport typia from \"typia\";\n\nexport const checkCommentTag = (input) => {\nconst $is_datetime = typia.createIs.is_datetime;\nconst $is_uuid = typia.createIs.is_uuid;\nconst $io0 = (input) =>\n\"number\" === typeof input.type &&\nparseInt(input.type) === input.type &&\n(undefined === input.number ||\n(\"number\" === typeof input.number &&\n19 < input.number &&\n100 >= input.number)) &&\n\"string\" === typeof input.string &&\n3 <= input.string.length &&\n\"string\" === typeof input.pattern &&\nRegExp(/^[a-z]+$/).test(input.pattern) &&\n(null === input.format ||\n(\"string\" === typeof input.format && $is_datetime(input.format))) &&\nArray.isArray(input.array) &&\n3 <= input.array.length &&\n100 >= input.array.length &&\ninput.array.every((elem) => \"string\" === typeof elem && $is_uuid(elem));\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};","performance#Performance":"Super-fast and super-safe.Comparing typia.validate() function with other competitive libraries, maximum 20,000x faster.Furthermore, only typia can validate complicate union types.\nMeasured on Intel i5-1135g7, Surface Pro 8\n\nComponents\ttypia\tTypeBox\tajv\tio-ts\tzod\tC.V.\tEasy to use\t✅\t❌\t❌\t❌\t❌\t❌\tObject (simple)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (recursive)\t✔\t❌\t✔\t✔\t✔\t✔\t✔\tObject (union, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tObject (union, explicit)\t✔\t✔\t✔\t✔\t✔\t❌\tObject (additional tags)\t✔\t✔\t✔\t✔\t✔\t✔\tObject (template literal types)\t✔\t✔\t✔\t❌\t❌\t❌\tObject (dynamic properties)\t✔\t✔\t✔\t❌\t❌\t❌\tArray (rest tuple)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (hierarchical)\t✔\t✔\t✔\t✔\t✔\t✔\tArray (recursive)\t✔\t✔\t✔\t✔\t✔\t❌\tArray (recursive, union)\t✔\t✔\t❌\t✔\t✔\t❌\tArray (R+U, implicit)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated)\t✅\t❌\t❌\t❌\t❌\t❌\tArray (repeated, union)\t✅\t❌\t❌\t❌\t❌\t❌\tUltimate Union Type\t✅\t❌\t❌\t❌\t❌\t❌\n\nC.V. means class-validator"}},"/":{"title":"Index","data":{"":"","outline#Outline":"// RUNTIME VALIDATORS\nexport function is(input: unknown | T): input is T; // returns boolean\nexport function assert(input: unknown | T): T; // throws TypeGuardError\nexport function validate(input: unknown | T): IValidation; // detailed\nexport const customValidators: CustomValidatorMap; // customizable\n\n// ENHANCED JSON\nexport function application<...Args>(): IJsonApplication; // JSON schema\nexport function assertParse(input: string): T; // type safe parser\nexport function assertStringify(input: T): string; // safe and faster\n// +) isParse, validateParse\n// +) stringify, isStringify, validateStringify\n\n// RANDOM DATA GENERATOR\nexport function random(g?: Partial): Primitive;\nTypia is a transformer library, supporting those features:\nSuper-fast Runtime Validators\nSafe JSON parse and fast stringify\nJSON schema generator\nRandom data generator\n\n\n\n\n\nOnly one line required, with pure TypeScript type\n\nRuntime validator is 20,000x faster than class-validator\n\nJSON serialization is 200x faster than class-transformer","sponsors#Sponsors":"Thanks for your support.Your donation would encourage typia development."}},"/playground":{"title":"Index","data":{"":""}},"/docs/pure":{"title":"Pure TypeScript","data":{"":"","outline#Outline":"typia.assert(article);\ntypia needs only one line with pure TypeScript type.You know what? Every other validator libraries need extra schema definition, that is different with pure TypeScript type. For an example, class-validator is the most famouse validator due to used in NestJS. However, NestJS and class-validator force you to define triple duplicated DTO schema.\nTypeScript Type\nclass-validator decorators\n@nestjs/swagger decorators\n\nAnother famous validator library ajv requires JSON schema definition. Move to the #Demonstration, and click the ajv (JSON Schema) tab, then you may understand how it terrible. It requires hundreds of lines of JSON schema definition even just for a simple DTO.Those duplicated schema definitions are not only annoying, but also error-prone. If you take any mistake on the extra schema definition, such mistake can't be detected by TypeScript compiler. It will be detected only at runtime, therefore become a critical runtime error. Another words, it is not type safe.Besides, typia only needs pure TypeScript type. You don't need to define any extra schema like class-validator or ajv. Just define pure TypeScript type only (especially recommend to use interface type), then typia will do all the rest.","demonstration#Demonstration":"If you're confusing how typia is different with others, just see example codes below.At first, look at the first (class-validator) tab, and find the BbsArticle.files property, enhanced by blue coloured blocks. Looking at the files property, how do you feel? Just defining an array object type, you've to call 7 decorator functions. If you take any mistake when using the decorator like omitting isArray property, it would be a critical runtime erorr.Besides, typia needs only one line. Click the third (typia) tab, and find the IAttachmentFile.files property. Only one line being used, and they are even not class, but just interface types. Comparing it to the first and second tabs, how do you feel? Isn't it more simple and readable?This is the power of typia, with pure TypeScript type.\n\n\nimport { ApiProperty } from \"@nestjs/swagger\";\nimport { ArrayNotEmpty, IsArray, IsObject, IsOptional, IsString, Match, MaxLength, Type, ValidateNested } from \"class-validator\";\n\nexport class BbsArticle {\n@ApiProperty({\nformat: \"uuid\",\n})\n@IsString()\nid!: string;\n\n// DUPLICATED SCHEMA DEFINITION\n// - duplicated function call + property type\n// - have to specify `isArray` and `nullable` props by yourself\n@ApiProperty({\ntype: () => AttachmentFile,\nnullable: true,\nisArray: true,\nminItems: 1,\ndescription: \"List of attached files.\",\n})\n@Type(() => AttachmentFile)\n@IsArray()\n@ArrayNotEmpty()\n@IsOptional()\n@IsObject({ each: true })\n@ValidateNested({ each: true })\nfiles!: AttachmentFile[] | null;\n\n@ApiProperty({\ntype: \"string\",\nnullable: true,\nminLength: 5,\nmaxLength: 100,\ndescription: \"Title of the article.\",\n})\n@IsOptional()\n@IsString()\ntitle!: string | null;\n\n@ApiProperty({\ndescription: \"Main content body of the article.\"\n})\n@IsString()\nbody!: string;\n\n@ApiProperty({\nformat: \"date-time\",\ndescription: \"Creation time of article\",\n})\n@IsString()\ncreated_at!: string;\n}\n\nexport class AttachmentFile {\n@ApiProperty({\ntype: \"string\",\nnullable: true,\nmaxLength: 255,\npattern: \"^[a-zA-Z0-9-_]+$\",\ndescription: \"File name.\",\n})\n@Matches(/^[a-z0-9]+$/)\n@MaxLength(255)\n@IsOptional()\n@IsString()\nname!: string | null;\n\n@ApiProperty({\ntype: \"string\",\nnullable: true,\nmaxLength: 255,\npattern: \"^[a-zA-Z0-9-_]+$\",\ndescription: \"File extension.\",\n})\n@Matches(/^[a-z0-9]+$/)\n@MaxLength(8)\n@IsOptional()\n@IsString()\nextension!: string | null;\n\n@ApiProperty({\nformat: \"url\",\ndescription: \"URL of the file.\",\n})\n@IsString()\nurl!: string;\n}\n\n\n\n{\n\"schemas\": [\n{\n\"$ref\": \"components#/schemas/IBbsArticle\"\n}\n],\n\"components\": {\n\"schemas\": {\n\"IBbsArticle\": {\n\"$id\": \"components#/schemas/IBbsArticle\",\n\"type\": \"object\",\n\"properties\": {\n\"id\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"Primary Key.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"format\",\n\"value\": \"uuid\"\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"format\",\n\"text\": [\n{\n\"text\": \"uuid\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"format\": \"uuid\"\n},\n\"files\": {\n\"type\": \"array\",\n\"items\": {\n\"$ref\": \"components#/schemas/IAttachmentFile\",\n\"description\": \"List of attached files.\",\n\"minItems\": 1,\n\"x-typia-required\": true,\n\"x-typia-optional\": false\n},\n\"nullable\": true,\n\"description\": \"List of attached files.\",\n\"x-typia-required\": true,\n\"x-typia-optional\": false\n},\n\"title\": {\n\"type\": \"string\",\n\"nullable\": true,\n\"description\": \"Title of the article.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"minLength\",\n\"value\": 5\n},\n{\n\"kind\": \"maxLength\",\n\"value\": 100\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"minLength\",\n\"text\": [\n{\n\"text\": \"5\",\n\"kind\": \"text\"\n}\n]\n},\n{\n\"name\": \"maxLength\",\n\"text\": [\n{\n\"text\": \"100\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"minLength\": 5,\n\"maxLength\": 100\n},\n\"body\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"Main content body of the article.\",\n\"x-typia-required\": true,\n\"x-typia-optional\": false\n},\n\"created_at\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"Creation time of article.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"format\",\n\"value\": \"datetime\"\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"format\",\n\"text\": [\n{\n\"text\": \"date-time\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"format\": \"date-time\"\n}\n},\n\"nullable\": false,\n\"required\": [\n\"id\",\n\"files\",\n\"title\",\n\"body\",\n\"created_at\"\n],\n\"x-typia-jsDocTags\": []\n},\n\"IAttachmentFile\": {\n\"$id\": \"components#/schemas/IAttachmentFile\",\n\"type\": \"object\",\n\"properties\": {\n\"name\": {\n\"type\": \"string\",\n\"nullable\": true,\n\"description\": \"File name.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"pattern\",\n\"value\": \"^[a-z0-9]+$\"\n},\n{\n\"kind\": \"maxLength\",\n\"value\": 255\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"pattern\",\n\"text\": [\n{\n\"text\": \"^[a-z0-9]+$\",\n\"kind\": \"text\"\n}\n]\n},\n{\n\"name\": \"maxLength\",\n\"text\": [\n{\n\"text\": \"255\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"pattern\": \"^[a-z0-9]+$\",\n\"maxLength\": 255\n},\n\"extension\": {\n\"type\": \"string\",\n\"nullable\": true,\n\"description\": \"File extension.\",\n\"x-typia-metaTags\": [\n{\n\"kind\": \"pattern\",\n\"value\": \"^[a-z0-9]+$\"\n},\n{\n\"kind\": \"maxLength\",\n\"value\": 8\n}\n],\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"pattern\",\n\"text\": [\n{\n\"text\": \"^[a-z0-9]+$\",\n\"kind\": \"text\"\n}\n]\n},\n{\n\"name\": \"maxLength\",\n\"text\": [\n{\n\"text\": \"8\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"pattern\": \"^[a-z0-9]+$\",\n\"maxLength\": 8\n},\n\"url\": {\n\"type\": \"string\",\n\"nullable\": false,\n\"description\": \"URL of the file.\",\n\"x-typia-jsDocTags\": [\n{\n\"name\": \"format\",\n\"text\": [\n{\n\"text\": \"uri\",\n\"kind\": \"text\"\n}\n]\n}\n],\n\"x-typia-required\": true,\n\"x-typia-optional\": false,\n\"format\": \"uri\"\n}\n},\n\"nullable\": false,\n\"required\": [\n\"name\",\n\"extension\",\n\"url\"\n],\n\"x-typia-jsDocTags\": []\n}\n}\n},\n\"purpose\": \"ajv\",\n\"prefix\": \"components#/schemas\"\n}\n\n\n\nexport interface IBbsArticle {\n/**\n* Primary Key.\n*\n* @format uuid\n*/\nid: string;\n\n/**\n* List of attached files.\n*\n* @minItems 1\n*/\nfiles: IAttachmentFile[] | null;\n\n/**\n* Title of the article.\n*\n* @minLength 5\n* @maxLength 100\n*/\ntitle: string | null;\n\n/**\n* Main content body of the article.\n*/\nbody: string;\n\n/**\n* Creation time of article.\n*\n* @format date-time\n*/\ncreated_at: string;\n}\n\nexport interface IAttachmentFile {\n/**\n* File name.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 255\n*/\nname: string | null;\n\n/**\n* File extension.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 8\n*/\nextension: string | null;\n\n/**\n* URL of the file.\n*\n* @format uri\n*/\nurl: string;\n}","aot-compilation#AOT Compilation":"Someone may be suspicious of the phrase \"Pure TypeScript Type\".\n\"As you know, TypeScript types do not have any tangible instance when compiled to JS.However, with only these fictitious TypeScript types, how can typia validates types at runtime? How typia builds much faster JSON serializer only with these types? Are these things really possible without extra schema definition like class-validator or ajv?\"\nMy answer is: \"Yes, it is possible due to typia analyzes your server code, and performs AOT compilation\".Such compile time optimization is called AOT (Ahead of Time) compilation. And this is the secret why typia can do everything with only pure TypeScript type. Read below example codes, and just look how JavaScript file being compiled. Then you may understand why typia is much easier, and futhermore much faster.\nRuntime validator is 20,000x faster than class-validator\nJSON serialization is 200x faster than class-transformer\n\n\n\n\nexport interface IBbsArticle {\n/**\n* Primary Key.\n*\n* @format uuid\n*/\nid: string;\n\n/**\n* List of attached files.\n*\n* @minItems 1\n*/\nfiles: IAttachmentFile[] | null;\n\n/**\n* Title of the article.\n*\n* @minLength 5\n* @maxLength 100\n*/\ntitle: string | null;\n\n/**\n* Main content body of the article.\n*/\nbody: string;\n\n/**\n* Creation time of article.\n*\n* @format date-time\n*/\ncreated_at: string;\n}\n\nexport interface IAttachmentFile {\n/**\n* File name.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 255\n*/\nname: string | null;\n\n/**\n* File extension.\n*\n* @pattern ^[a-z0-9]+$\n* @maxLength 8\n*/\nextension: string | null;\n\n/**\n* URL of the file.\n*\n* @format uri\n*/\nurl: string;\n}\n\n\n\nimport typia from \"typia\";\n\nimport { IBbsArticle } from \"./IBbsArticle\";\n\nexport const assertArticle = typia.createAssert();\n\n\n\n\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\nreturn (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertArticle = void 0;\nconst typia_1 = __importDefault(require(\"typia\"));\nconst assertArticle = input => {\nconst $guard = typia_1.default.createAssert.guard;\nconst $is_uuid = typia_1.default.createAssert.is_uuid;\nconst $is_datetime = typia_1.default.createAssert.is_datetime;\nconst __is = input => {\nconst $is_uuid = typia_1.default.createAssert.is_uuid;\nconst $is_datetime = typia_1.default.createAssert.is_datetime;\nconst $io0 = input => \"string\" === typeof input.id && $is_uuid(input.id) && (null === input.files || Array.isArray(input.files) && 1 <= input.files.length && input.files.every(elem => \"object\" === typeof elem && null !== elem && $io1(elem))) && (null === input.title || \"string\" === typeof input.title && 5 <= input.title.length && 100 >= input.title.length) && \"string\" === typeof input.body && (\"string\" === typeof input.created_at && $is_datetime(input.created_at));\nconst $io1 = input => (null === input.name || \"string\" === typeof input.name && RegExp(/^[a-z0-9]+$/).test(input.name) && 255 >= input.name.length) && (null === input.extension || \"string\" === typeof input.extension && RegExp(/^[a-z0-9]+$/).test(input.extension) && 8 >= input.extension.length) && \"string\" === typeof input.url;\nreturn \"object\" === typeof input && null !== input && $io0(input);\n};\nif (false === __is(input))\n((input, _path, _exceptionable = true) => {\nconst $ao0 = (input, _path, _exceptionable = true) => (\"string\" === typeof input.id && ($is_uuid(input.id) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string (@format uuid)\",\nvalue: input.id\n})) || $guard(_exceptionable, {\npath: _path + \".id\",\nexpected: \"string\",\nvalue: input.id\n})) && (null === input.files || (Array.isArray(input.files) && (1 <= input.files.length || $guard(_exceptionable, {\npath: _path + \".files\",\nexpected: \"Array.length (@minItems 1)\",\nvalue: input.files\n})) || $guard(_exceptionable, {\npath: _path + \".files\",\nexpected: \"(Array | null)\",\nvalue: input.files\n})) && input.files.every((elem, _index1) => (\"object\" === typeof elem && null !== elem || $guard(_exceptionable, {\npath: _path + \".files[\" + _index1 + \"]\",\nexpected: \"IAttachmentFile\",\nvalue: elem\n})) && $ao1(elem, _path + \".files[\" + _index1 + \"]\", true && _exceptionable))) && (null === input.title || \"string\" === typeof input.title && (5 <= input.title.length || $guard(_exceptionable, {\npath: _path + \".title\",\nexpected: \"string (@minLength 5)\",\nvalue: input.title\n})) && (100 >= input.title.length || $guard(_exceptionable, {\npath: _path + \".title\",\nexpected: \"string (@maxLength 100)\",\nvalue: input.title\n})) || $guard(_exceptionable, {\npath: _path + \".title\",\nexpected: \"(null | string)\",\nvalue: input.title\n})) && (\"string\" === typeof input.body || $guard(_exceptionable, {\npath: _path + \".body\",\nexpected: \"string\",\nvalue: input.body\n})) && (\"string\" === typeof input.created_at && ($is_datetime(input.created_at) || $guard(_exceptionable, {\npath: _path + \".created_at\",\nexpected: \"string (@format datetime)\",\nvalue: input.created_at\n})) || $guard(_exceptionable, {\npath: _path + \".created_at\",\nexpected: \"string\",\nvalue: input.created_at\n}));\nconst $ao1 = (input, _path, _exceptionable = true) => (null === input.name || \"string\" === typeof input.name && (RegExp(/^[a-z0-9]+$/).test(input.name) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@pattern ^[a-z0-9]+$)\",\nvalue: input.name\n})) && (255 >= input.name.length || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"string (@maxLength 255)\",\nvalue: input.name\n})) || $guard(_exceptionable, {\npath: _path + \".name\",\nexpected: \"(null | string)\",\nvalue: input.name\n})) && (null === input.extension || \"string\" === typeof input.extension && (RegExp(/^[a-z0-9]+$/).test(input.extension) || $guard(_exceptionable, {\npath: _path + \".extension\",\nexpected: \"string (@pattern ^[a-z0-9]+$)\",\nvalue: input.extension\n})) && (8 >= input.extension.length || $guard(_exceptionable, {\npath: _path + \".extension\",\nexpected: \"string (@maxLength 8)\",\nvalue: input.extension\n})) || $guard(_exceptionable, {\npath: _path + \".extension\",\nexpected: \"(null | string)\",\nvalue: input.extension\n})) && (\"string\" === typeof input.url || $guard(_exceptionable, {\npath: _path + \".url\",\nexpected: \"string\",\nvalue: input.url\n}));\nreturn (\"object\" === typeof input && null !== input || $guard(true, {\npath: _path + \"\",\nexpected: \"IBbsArticle\",\nvalue: input\n})) && $ao0(input, _path + \"\", true);\n})(input, \"$input\", true);\nreturn input;\n};\nexports.assertArticle = assertArticle;\n\n\n\nMeasured on Intel i5-1135g7, Surface Pro 8"}}} \ No newline at end of file diff --git a/_next/static/chunks/pages/playground-195035bb96921020.js b/_next/static/chunks/pages/playground-d432daed69d01e4d.js similarity index 99% rename from _next/static/chunks/pages/playground-195035bb96921020.js rename to _next/static/chunks/pages/playground-d432daed69d01e4d.js index b522b8bc4f..2a032a6dee 100644 --- a/_next/static/chunks/pages/playground-195035bb96921020.js +++ b/_next/static/chunks/pages/playground-d432daed69d01e4d.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[311],{3589:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/playground",function(){return t(805)}])},9369:function(e,n,t){"use strict";var r=t(5893);t(7294),n.Z={logo:()=>(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("img",{src:"/favicon/android-chrome-192x192.png",width:32,height:32}),(0,r.jsx)("span",{style:{fontWeight:"bold",fontSize:"1.2rem",paddingLeft:10,paddingRight:10},children:"Typia"}),(0,r.jsx)("span",{children:"Superfast Runtime Validator"})]}),project:{link:"https://github.com/samchon/typia"},docsRepositoryBase:"https://github.com/samchon/typia/blob/master/website",footer:{text:()=>(0,r.jsxs)("span",{children:["Made by"," ",(0,r.jsx)("a",{href:"https://github.com/samchon",target:"_blank",style:{color:"blue"},children:(0,r.jsx)("u",{children:" Samchon "})})]})},useNextSeoProps:()=>({defaultTitle:"Typia Guide Documents",titleTemplate:"Typia Guide Documents - %s",additionalLinkTags:[{rel:"apple-touch-icon",sizes:"180x180",href:"/favicon/apple-touch-icon.png"},{rel:"manifest",href:"/favicon/site.webmanifest"},...[16,32].map(e=>({rel:"icon",type:"image/png",sizes:"".concat(e,"x").concat(e),href:"/favicon/favicon-".concat(e,"x").concat(e,".png")}))],additionalMetaTags:[{property:"og:image",content:"/og.jpg"},{property:"og:type",content:"object"},{property:"og:title",content:"Typia Guide Documents"},{property:"og:description",content:"Superfast Runtime Validator with only one line"},{property:"og:site_name",content:"Typia Guide Documents"},{property:"og:url",content:"https://typia.io"},{name:"twitter:card",content:"summary"},{name:"twitter:image",content:"https://typia.io/og.jpg"},{name:"twitter:title",content:"Typia Guide Documents"},{name:"twitter:description",content:"Superfast Runtime Validator with only one line"},{name:"twitter:site",content:"@SamchonGithub"}]})}},805:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return N}});var r,o,a,i=t(5893),s=t(4319),l=t(9271),d=t(9369);t(9966);var c=t(1151);t(5675);var p=t(6961),m=t(7294),u=t(5423),f=t.n(u),h=t(8781),y=t.n(h);let g=[["file:///node_modules/typia/package.json",'{\n "name": "typia",\n "version": "4.2.2",\n "description": "Superfast runtime validators with only one line",\n "main": "lib/index.js",\n "typings": "lib/index.d.ts",\n "bin": {\n "typia": "./lib/executable/typia.js"\n },\n "scripts": {\n "benchmark": "npm run build:benchmark && node measure/benchmark",\n "benchmark:generate": "ts-node benchmark/generate && npm run build:benchmark",\n "test:generate": "npx ts-node src/executable/typia generate --input test/features --output test/generated/output --project test/tsconfig.json",\n "test:template": "npx tsc && ts-node -P build/tsconfig.json build/test.ts",\n "----------------------------------------------": "",\n "build": "rimraf lib && tsc --removeComments --declaration false && tsc --emitDeclarationOnly",\n "build:test": "rimraf bin && tsc -p test/tsconfig.json",\n "build:benchmark": "rimraf measure && tsc -p benchmark/tsconfig.json",\n "build:test:prettier": "npm run build:test && prettier --write ./bin/**/*.js",\n "dev": "rimraf lib && tsc --watch",\n "dev:test": "rimraf bin && tsc -p test/tsconfig.json --watch",\n "eslint": "eslint ./**/*.ts",\n "eslint:fix": "eslint ./**/*.ts --fix",\n "prettier": "prettier --write ./**/*.ts",\n "-----------------------------------------------": "",\n "issue": "node test/issue",\n "issue:generate": "ts-node src/executable/typia generate --input test/issues/generate/input --output test/issues/generate --project test/tsconfig.json",\n "test": "node bin/test",\n "test:manual": "node test/manual",\n "------------------------------------------------": "",\n "package:latest": "ts-node build/publish.ts latest",\n "package:next": "ts-node build/publish.ts next",\n "package:patch": "ts-node build/publish.ts patch",\n "package:deprecate": "npm deprecate typescript-json "Renamed to typia"",\n "prepare": "ts-patch install"\n },\n "repository": {\n "type": "git",\n "url": "https://github.com/samchon/typia"\n },\n "keywords": [\n "fast",\n "json",\n "stringify",\n "typescript",\n "transform",\n "ajv",\n "io-ts",\n "schema",\n "jsonschema",\n "generator",\n "assert",\n "clone",\n "is",\n "validate",\n "equal",\n "runtime",\n "type",\n "typebox",\n "checker",\n "validator",\n "safe",\n "parse",\n "prune",\n "random"\n ],\n "author": "Jeongho Nam",\n "license": "MIT",\n "bugs": {\n "url": "https://github.com/samchon/typia/issues"\n },\n "homepage": "https://typia.io",\n "dependencies": {\n "commander": "^10.0.0",\n "comment-json": "^4.2.3",\n "inquirer": "^8.2.5",\n "randexp": "^0.5.3"\n },\n "peerDependencies": {\n "typescript": ">= 4.7.4"\n },\n "devDependencies": {\n "@fastify/type-provider-typebox": "^3.0.0",\n "@trivago/prettier-plugin-sort-imports": "^3.3.0",\n "@typegoose/typegoose": "^10.1.1",\n "@types/autocannon": "^7.9.0",\n "@types/benchmark": "^2.1.2",\n "@types/cli": "^0.11.20",\n "@types/commander": "^2.12.2",\n "@types/d3": "^7.4.0",\n "@types/express": "^4.17.14",\n "@types/inquirer": "^8.2.5",\n "@types/nested-error-stacks": "^2.1.0",\n "@types/node": "^18.15.12",\n "@types/physical-cpu-count": "^2.0.0",\n "@types/uuid": "^8.3.4",\n "@typescript-eslint/eslint-plugin": "^5.59.11",\n "@typescript-eslint/parser": "^5.59.11",\n "ajv": "^8.12.0",\n "autocannon": "^7.10.0",\n "benchmark": "^2.1.4",\n "body-parser": "^1.20.2",\n "chalk": "^4.1.0",\n "class-transformer": "^0.5.1",\n "class-validator": "^0.14.0",\n "cli": "^1.0.1",\n "d3": "^5.16.0",\n "eslint-plugin-deprecation": "^1.4.1",\n "express": "^4.18.2",\n "fast-json-stringify": "^5.8.0",\n "fastify": "^4.9.2",\n "io-ts": "^2.2.19",\n "jsdom": "^21.1.1",\n "physical-cpu-count": "^2.0.0",\n "prettier": "^2.6.2",\n "reflect-metadata": "^0.1.13",\n "rimraf": "^3.0.2",\n "sloc": "^0.2.1",\n "source-map-support": "^0.5.21",\n "suppress-warnings": "^1.0.2",\n "tgrid": "^0.8.7",\n "ts-node": "^10.9.1",\n "ts-patch": "^3.0.2",\n "tstl": "^2.5.13",\n "typescript": "^5.1.6",\n "typescript-transform-paths": "^3.4.6",\n "uuid": "^8.3.2",\n "zod": "^3.19.1"\n },\n "stackblitzs": {\n "startCommand": "npm run postinstall && npm run build && npm run build:test && npm run test"\n },\n "files": [\n "LICENSE",\n "README.md",\n "package.json",\n "lib",\n "src"\n ]\n}'],["file:///node_modules/typia/index.d.ts",'import * as typia from "./lib";\nexport * from "./lib";\nexport default typia;'],["file:///node_modules/typia/lib/CustomValidatorMap.d.ts",'import { Customizable } from "./typings/Customizable";\n/**\n * Map of custom validators.\n *\n * Map of custom validator functions, storing tag name and type of target value\n * as key, and custom validator function as value.\n *\n * When you want to add a custom validation logic utilizing comment tags, you\n * can insert a custom validator function with specific tag name and type of\n * the target value like below.\n *\n * ```ts\n * typia.customValidators.insert("powerOf")("number")(\n * (text: string) => {\n * const denominator: number = Math.log(Number(text));\n * return (value: number) => {\n * value = Math.log(value) / denominator;\n * return value === Math.floor(value);\n * };\n * }\n * );\n * typia.customValidators.insert("dollar")("string")(\n * () => (value: string) => value.startsWith("$"),\n * );\n *\n * interface TagCustom {\n * /**\n * * @powerOf 10\n * */\n * powerOf: number;\n *\n * /**\n * * @dollar\n * */\n * dollar: string;\n * }\n * ```\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport interface CustomValidatorMap {\n /**\n * Get number of stored tags.\n *\n * @return Number of stored tags\n */\n size(): number;\n /**\n * Get number of stored types of the specified tag name.\n *\n * In other words, number of stored custom validator functions of\n * the specified tag name.\n *\n * @param name Tag name\n * @return Number of stored types function\n */\n size(name: string): number;\n /**\n * Test whether custom validator function exists or not.\n *\n * @param name Tag name\n * @param type Type of the target value\n * @returns Whether exists or not\n */\n has: (name: string) => (type: keyof Customizable) => boolean;\n /**\n * Get custom validator function.\n *\n * @param name Tag name\n * @param type Type of the target value\n * @returns Custom validator function or undefined value\n */\n get(name: string): (type: Type) => CustomValidatorMap.Closure | undefined;\n /**\n * Insert a new custom validator function.\n *\n * You can add a custom validation logic utilizing comment tags,\n * by inserting a function which returns a boolean value, with specific\n * tag name and type of the target value.\n *\n * However, if you try to insert a duplicated tag name and type, the\n * closure function would not be enrolled and `false` value would be\n * returned.\n *\n * @param name Tag name\n * @param type Type of the target value\n * @param closure Custom validator function\n * @returns Whether succeeded to insert or not\n */\n insert(name: string): (type: Type) => (closure: CustomValidatorMap.Closure) => boolean;\n /**\n * Erase custom validator function.\n *\n * @param name Tag name\n * @param type Type of the target value\n * @returns Whether succeeded to erase or not\n */\n erase(name: string): (type: keyof Customizable) => boolean;\n}\nexport declare namespace CustomValidatorMap {\n /**\n * Type of closure function of custom validation.\n *\n * @template Type Type of the target value\n * @param text Text of the tag. For example, if the tag is `@powerOf 10`, `text` is 10.\n * @param value Value to validate\n * @returns Whether the value is valid or not\n */\n type Closure = (text: string) => (value: Customizable[Type]) => boolean;\n}\n'],["file:///node_modules/typia/lib/executable/setup/ArgumentParser.d.ts",'import commander from "commander";\nimport inquirer from "inquirer";\nimport { PackageManager } from "./PackageManager";\nexport declare namespace ArgumentParser {\n type Inquiry = (pack: PackageManager, command: commander.Command, prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule, action: (closure: (options: Partial) => Promise) => Promise) => Promise;\n const parse: (pack: PackageManager) => (inquiry: (pack: PackageManager, command: commander.Command, prompt: (opt?: inquirer.StreamOptions) => inquirer.PromptModule, action: (closure: (options: Partial) => Promise) => Promise) => Promise) => Promise;\n}\n'],["file:///node_modules/typia/lib/executable/setup/CommandExecutor.d.ts","export declare namespace CommandExecutor {\n const run: (str: string) => void;\n}\n"],["file:///node_modules/typia/lib/executable/setup/FileRetriever.d.ts","export declare namespace FileRetriever {\n const directory: (name: string) => (dir: string, depth?: number) => string | null;\n const file: (name: string) => (directory: string, depth?: number) => string | null;\n}\n"],["file:///node_modules/typia/lib/executable/setup/PackageManager.d.ts","export declare class PackageManager {\n readonly directory: string;\n data: Package.Data;\n manager: string;\n get file(): string;\n static mount(): Promise;\n save(modifier: (data: Package.Data) => void): Promise;\n install(props: {\n dev: boolean;\n modulo: string;\n version: string;\n }): boolean;\n private constructor();\n private static load;\n}\nexport declare namespace Package {\n interface Data {\n scripts?: Record;\n dependencies?: Record;\n devDependencies?: Record;\n }\n}\n"],["file:///node_modules/typia/lib/executable/setup/PluginConfigurator.d.ts",'import { TypiaSetupWizard } from "../TypiaSetupWizard";\nexport declare namespace PluginConfigurator {\n function configure(args: TypiaSetupWizard.IArguments): Promise;\n}\n'],["file:///node_modules/typia/lib/executable/typia.d.ts",'#!/usr/bin/env node\ndeclare const USAGE = "Wrong command has been detected. Use like below:\n\n npx typia setup \\\n --manager (npm|pnpm|yarn) \\\n --project {tsconfig.json file path}\n\n - npx typia setup\n - npx typia setup --manager pnpm\n - npx typia setup --project tsconfig.test.json\n\n npx typia generate \n --input {directory} \\\n --output {directory}\n\n --npx typia generate --input src/templates --output src/functinoal\n";\ndeclare const halt: (desc: string) => never;\ndeclare const main: () => Promise;\n'],["file:///node_modules/typia/lib/executable/TypiaGenerateWizard.d.ts","export declare namespace TypiaGenerateWizard {\n function generate(): Promise;\n interface IArguments {\n input: string;\n output: string;\n project: string;\n }\n}\n"],["file:///node_modules/typia/lib/executable/TypiaSetupWizard.d.ts",'export declare namespace TypiaSetupWizard {\n interface IArguments {\n manager: "npm" | "pnpm" | "yarn";\n project: string | null;\n }\n function setup(): Promise;\n}\n'],["file:///node_modules/typia/lib/factories/CommentFactory.d.ts",'import ts from "typescript";\nexport declare namespace CommentFactory {\n const description: (symbol: ts.Symbol, includeTags?: boolean) => string | undefined;\n const merge: (comments: ts.SymbolDisplayPart[]) => string;\n}\n'],["file:///node_modules/typia/lib/factories/ExpressionFactory.d.ts",'import ts from "typescript";\nexport declare namespace ExpressionFactory {\n const isRequired: (input: ts.Expression) => ts.Expression;\n const isArray: (input: ts.Expression) => ts.Expression;\n const isObject: (options: {\n checkNull: boolean;\n checkArray: boolean;\n }) => (input: ts.Expression) => ts.Expression;\n const isInstanceOf: (type: string) => (input: ts.Expression) => ts.Expression;\n const coalesce: (x: ts.Expression) => (y: ts.Expression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/factories/IdentifierFactory.d.ts",'import ts from "typescript";\nexport declare namespace IdentifierFactory {\n const identifier: (name: string) => ts.Identifier | ts.StringLiteral;\n const access: (target: ts.Expression) => (property: string) => ts.ElementAccessExpression | ts.PropertyAccessExpression;\n const postfix: (str: string) => string;\n const parameter: (name: string | ts.BindingName, type?: ts.TypeNode, init?: ts.Expression | ts.PunctuationToken) => any;\n}\n'],["file:///node_modules/typia/lib/factories/internal/metadata/emend_metadata_atomics.d.ts",'import { Metadata } from "../../../metadata/Metadata";\nexport declare const emend_metadata_atomics: (meta: Metadata) => void;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/emplace_metadata_alias.d.ts",'import ts from "typescript";\nimport { MetadataAlias } from "../../../metadata/MetadataAlias";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const emplace_metadata_alias: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (type: ts.Type, nullable: boolean) => MetadataAlias;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/emplace_metadata_array.d.ts",'import ts from "typescript";\nimport { MetadataArray } from "../../../metadata/MetadataArray";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const emplace_metadata_array: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (type: ts.Type, nullable: boolean) => MetadataArray;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/emplace_metadata_object.d.ts",'import ts from "typescript";\nimport { MetadataObject } from "../../../metadata/MetadataObject";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const emplace_metadata_object: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (parent: ts.Type, nullable: boolean) => MetadataObject;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts",'import ts from "typescript";\nimport { MetadataTuple } from "../../../metadata/MetadataTuple";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const emplace_metadata_tuple: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (type: ts.TupleType, nullable: boolean) => MetadataTuple;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/explore_metadata.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const explore_metadata: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (type: ts.Type | null, parentResolved: boolean, aliased?: boolean) => Metadata;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type, resolved: boolean, aliased: boolean) => void;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_alias.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_alias: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_array.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_array: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nexport declare const iterate_metadata_atomic: (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nexport declare const iterate_metadata_coalesce: (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_collection.d.ts",'import { MetadataCollection } from "../../MetadataCollection";\nexport declare const iterate_metadata_collection: (collection: MetadataCollection) => void;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_constant.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_constant: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_intersection: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type, resolved: boolean, aliased: boolean) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_map.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_map: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_native.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nexport declare const iterate_metadata_native: (checker: ts.TypeChecker) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_object.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_object: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type, ensure?: boolean) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_resolve.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_resolve: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type, resolved: boolean, aliased: boolean) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_set.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_set: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_sort.d.ts",'import { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nexport declare const iterate_metadata_sort: (collection: MetadataCollection) => (meta: Metadata) => void;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_tag.d.ts",'import { MetadataObject } from "../../../metadata/MetadataObject";\nexport declare const iterate_metadata_tag: (obj: MetadataObject) => void;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_template.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_template: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_tuple: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.TupleType) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/iterate_metadata_union.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../../metadata/Metadata";\nimport { MetadataCollection } from "../../MetadataCollection";\nimport { MetadataFactory } from "../../MetadataFactory";\nexport declare const iterate_metadata_union: (checker: ts.TypeChecker) => (options: MetadataFactory.IOptions) => (collection: MetadataCollection) => (meta: Metadata, type: ts.Type, parentResolved: boolean) => boolean;\n'],["file:///node_modules/typia/lib/factories/internal/metadata/MetadataHelper.d.ts",'import { Metadata } from "../../../metadata/Metadata";\nexport declare namespace MetadataHelper {\n const literal_to_metadata: (key: string) => Metadata;\n}\n'],["file:///node_modules/typia/lib/factories/LiteralFactory.d.ts",'import ts from "typescript";\nexport declare namespace LiteralFactory {\n const generate: (input: any) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/factories/MetadataCollection.d.ts",'import ts from "typescript";\nimport { IMetadataCollection } from "../metadata/IMetadataCollection";\nimport { Metadata } from "../metadata/Metadata";\nimport { MetadataAlias } from "../metadata/MetadataAlias";\nimport { MetadataArray } from "../metadata/MetadataArray";\nimport { MetadataObject } from "../metadata/MetadataObject";\nimport { MetadataTuple } from "../metadata/MetadataTuple";\nexport declare class MetadataCollection {\n private readonly options?;\n private readonly objects_;\n private readonly object_unions_;\n private readonly aliases_;\n private readonly arrays_;\n private readonly tuples_;\n private readonly names_;\n private object_index_;\n private recursive_array_index_;\n private recursive_tuple_index_;\n constructor(options?: Partial | undefined);\n aliases(): MetadataAlias[];\n objects(): MetadataObject[];\n unions(): MetadataObject[][];\n arrays(): MetadataArray[];\n tuples(): MetadataTuple[];\n private getName;\n emplace(checker: ts.TypeChecker, type: ts.Type): [MetadataObject, boolean];\n emplaceAlias(checker: ts.TypeChecker, type: ts.Type, symbol: ts.Symbol): [MetadataAlias, boolean, (meta: Metadata) => void];\n emplaceArray(checker: ts.TypeChecker, type: ts.Type): [MetadataArray, boolean, (meta: Metadata) => void];\n emplaceTuple(checker: ts.TypeChecker, type: ts.TupleType): [MetadataTuple, boolean, (elements: Metadata[]) => void];\n setTupleRecursive(tuple: MetadataTuple, recursive: boolean): void;\n toJSON(): IMetadataCollection;\n}\nexport declare namespace MetadataCollection {\n interface IOptions {\n replace?(str: string): string;\n }\n const replace: (str: string) => string;\n const escape: (str: string) => string;\n}\n'],["file:///node_modules/typia/lib/factories/MetadataFactory.d.ts",'import ts from "typescript";\nimport { Metadata } from "../metadata/Metadata";\nimport { MetadataCollection } from "./MetadataCollection";\nexport declare namespace MetadataFactory {\n interface IOptions {\n resolve: boolean;\n constant: boolean;\n absorb: boolean;\n validate?: (meta: Metadata) => void;\n }\n const analyze: (checker: ts.TypeChecker) => (options: IOptions) => (collection: MetadataCollection) => (type: ts.Type | null) => Metadata;\n}\n'],["file:///node_modules/typia/lib/factories/MetadataTagFactory.d.ts",'import ts from "typescript";\nimport { IMetadataTag } from "../metadata/IMetadataTag";\nimport { Metadata } from "../metadata/Metadata";\nexport declare namespace MetadataTagFactory {\n const generate: (metadata: Metadata) => (tagList: ts.JSDocTagInfo[]) => (identifier: () => string) => IMetadataTag[];\n}\n'],["file:///node_modules/typia/lib/factories/StatementFactory.d.ts",'import ts from "typescript";\nexport declare namespace StatementFactory {\n const constant: (name: string, initializer?: ts.Expression) => ts.VariableStatement;\n const transpile: (script: string) => ts.ExpressionStatement;\n}\n'],["file:///node_modules/typia/lib/factories/TemplateFactory.d.ts",'import ts from "typescript";\nexport declare namespace TemplateFactory {\n const generate: (expressions: ts.Expression[]) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/factories/TypeFactory.d.ts",'import ts from "typescript";\nexport declare namespace TypeFactory {\n const resolve: (checker: ts.TypeChecker) => (type: ts.Type) => ts.Type | null;\n const isFunction: (type: ts.Type) => boolean;\n const getReturnType: (checker: ts.TypeChecker) => (type: ts.Type) => (name: string) => ts.Type | null;\n const getFullName: (checker: ts.TypeChecker) => (type: ts.Type, symbol?: ts.Symbol) => string;\n const keyword: (type: "void" | "any" | "unknown" | "boolean" | "number" | "bigint" | "string") => ts.KeywordTypeNode;\n}\n'],["file:///node_modules/typia/lib/factories/ValueFactory.d.ts",'import ts from "typescript";\nexport declare namespace ValueFactory {\n const NULL: () => ts.NullLiteral;\n const UNDEFINED: () => ts.Identifier;\n const BOOLEAN: (value: boolean) => ts.FalseLiteral | ts.TrueLiteral;\n const INPUT: (str?: string) => ts.Identifier;\n const TYPEOF: (input: ts.Expression) => ts.TypeOfExpression;\n}\n'],["file:///node_modules/typia/lib/functional/$any.d.ts","export declare const $any: (val: any) => any;\n"],["file:///node_modules/typia/lib/functional/$dictionary.d.ts",'import { Customizable } from "../typings/Customizable";\nexport declare const $dictionary: Map (value: any) => boolean>>;\n'],["file:///node_modules/typia/lib/functional/$every.d.ts",'import { TypeGuardError } from "../TypeGuardError";\nexport declare const $every: (array: T[], pred: (value: T, i: number) => null | Omit) => null | Omit;\n'],["file:///node_modules/typia/lib/functional/$guard.d.ts","export {};\n"],["file:///node_modules/typia/lib/functional/$is_between.d.ts","export declare const $is_between: (value: number, minimum: number, maximum: number) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_custom.d.ts",'import { Customizable } from "../typings/Customizable";\nexport declare const $is_custom: (name: string, type: Type, text: string, value: Customizable[Type]) => boolean;\n'],["file:///node_modules/typia/lib/functional/$is_date.d.ts","export declare const $is_date: (value: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_datetime.d.ts","export declare const $is_datetime: (value: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_email.d.ts","export declare const $is_email: (str: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_ipv4.d.ts","export declare const $is_ipv4: (str: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_ipv6.d.ts","export declare const $is_ipv6: (str: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_url.d.ts","export declare const $is_url: (str: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$is_uuid.d.ts","export declare const $is_uuid: (str: string) => boolean;\n"],["file:///node_modules/typia/lib/functional/$join.d.ts","export declare const $join: (str: string) => string;\n"],["file:///node_modules/typia/lib/functional/$number.d.ts","export declare const $number: (value: number) => number;\n"],["file:///node_modules/typia/lib/functional/$report.d.ts",'import { IValidation } from "../IValidation";\nexport declare const $report: (array: IValidation.IError[]) => (exceptable: boolean, error: IValidation.IError) => false;\n'],["file:///node_modules/typia/lib/functional/$rest.d.ts","export declare const $rest: (str: string) => string;\n"],["file:///node_modules/typia/lib/functional/$string.d.ts","export {};\n"],["file:///node_modules/typia/lib/functional/$tail.d.ts","export {};\n"],["file:///node_modules/typia/lib/functional/Namespace.d.ts","export {};\n"],["file:///node_modules/typia/lib/index.d.ts",'import * as typia from "./module";\nexport default typia;\nexport * from "./module";\n'],["file:///node_modules/typia/lib/IRandomGenerator.d.ts",'import { Customizable } from "./typings/Customizable";\nexport interface IRandomGenerator {\n boolean(): boolean;\n integer(minimum?: number, maximum?: number): number;\n number(minimum?: number, maximum?: number): number;\n bigint(minimum?: bigint, maximum?: bigint): bigint;\n string(length?: number): string;\n array(closure: (index: number) => T, count?: number): T[];\n length(): number;\n uuid(): string;\n email(): string;\n url(): string;\n ipv4(): string;\n ipv6(): string;\n pattern(regex: RegExp): string;\n date(minimum?: number, maximum?: number): string;\n datetime(minimum?: number, maximum?: number): string;\n customs?: IRandomGenerator.CustomMap;\n}\nexport declare namespace IRandomGenerator {\n type CustomMap = {\n [Type in keyof Customizable]?: (tags: ICommentTag[]) => Customizable[Type] | undefined;\n };\n interface ICommentTag {\n name: string;\n value?: string;\n }\n}\n'],["file:///node_modules/typia/lib/IValidation.d.ts","export type IValidation = IValidation.ISuccess | IValidation.IFailure;\nexport declare namespace IValidation {\n interface ISuccess {\n success: true;\n data: T;\n errors: [];\n }\n interface IFailure {\n success: false;\n errors: IError[];\n }\n interface IError {\n path: string;\n expected: string;\n value: any;\n }\n}\n"],["file:///node_modules/typia/lib/metadata/ICommentTag.d.ts","export interface ICommentTag {\n name: string;\n value?: string;\n}\n"],["file:///node_modules/typia/lib/metadata/IJsDocTagInfo.d.ts","export interface IJsDocTagInfo {\n name: string;\n text?: IJsDocTagInfo.IText[];\n}\nexport declare namespace IJsDocTagInfo {\n interface IText {\n text: string;\n kind: string;\n }\n}\n"],["file:///node_modules/typia/lib/metadata/IMetadata.d.ts",'import { Atomic } from "../typings/Atomic";\nimport { IMetadataConstant } from "./IMetadataConstant";\nimport { IMetadataEntry } from "./IMetadataEntry";\nimport { IMetadataResolved } from "./IMetadataResolved";\nexport interface IMetadata {\n any: boolean;\n required: boolean;\n optional: boolean;\n nullable: boolean;\n functional: boolean;\n atomics: Atomic.Literal[];\n constants: IMetadataConstant[];\n templates: IMetadata[][];\n resolved: IMetadataResolved | null;\n rest: IMetadata | null;\n arrays: string[];\n tuples: string[];\n objects: string[];\n aliases: string[];\n natives: string[];\n sets: IMetadata[];\n maps: IMetadataEntry[];\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataAlias.d.ts",'import { IJsDocTagInfo } from "./IJsDocTagInfo";\nimport { IMetadata } from "./IMetadata";\nimport { IMetadataTag } from "./IMetadataTag";\nexport interface IMetadataAlias {\n name: string;\n value: IMetadata;\n nullables: boolean[];\n description: string | null;\n tags: IMetadataTag[];\n jsDocTags: IJsDocTagInfo[];\n recursive: boolean;\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataApplication.d.ts",'import { IMetadata } from "./IMetadata";\nimport { IMetadataCollection } from "./IMetadataCollection";\nexport interface IMetadataApplication {\n metadatas: IMetadata[];\n collection: IMetadataCollection;\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataArray.d.ts",'import { IMetadata } from "./IMetadata";\nexport interface IMetadataArray {\n name: string;\n value: IMetadata;\n nullables: boolean[];\n recursive: boolean;\n index: number | null;\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataCollection.d.ts",'import { IMetadataAlias } from "./IMetadataAlias";\nimport { IMetadataArray } from "./IMetadataArray";\nimport { IMetadataObject } from "./IMetadataObject";\nimport { IMetadataTuple } from "./IMetadataTuple";\nexport interface IMetadataCollection {\n objects: IMetadataObject[];\n aliases: IMetadataAlias[];\n arrays: IMetadataArray[];\n tuples: IMetadataTuple[];\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataConstant.d.ts",'import { Atomic } from "../typings/Atomic";\nexport type IMetadataConstant = IMetadataConstant.IBase<"boolean", boolean> | IMetadataConstant.IBase<"number", number> | IMetadataConstant.IBase<"string", string> | IMetadataConstant.IBase<"bigint", bigint>;\nexport declare namespace IMetadataConstant {\n interface IBase {\n type: Type;\n values: Value[];\n }\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataDictionary.d.ts","export {};\n"],["file:///node_modules/typia/lib/metadata/IMetadataEntry.d.ts",'import { IMetadata } from "./IMetadata";\nexport interface IMetadataEntry {\n key: IMetadata;\n value: IMetadata;\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataObject.d.ts",'import { IJsDocTagInfo } from "./IJsDocTagInfo";\nimport { IMetadataProperty } from "./IMetadataProperty";\nexport interface IMetadataObject {\n name: string;\n properties: IMetadataProperty[];\n description?: string;\n jsDocTags: IJsDocTagInfo[];\n index: number;\n recursive: boolean;\n nullables: boolean[];\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataProperty.d.ts",'import { IJsDocTagInfo } from "./IJsDocTagInfo";\nimport { IMetadata } from "./IMetadata";\nimport { IMetadataTag } from "./IMetadataTag";\nexport interface IMetadataProperty {\n key: IMetadata;\n value: IMetadata;\n description: string | null;\n tags: IMetadataTag[];\n jsDocTags: IJsDocTagInfo[];\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataResolved.d.ts",'import { IMetadata } from "./IMetadata";\nexport interface IMetadataResolved {\n original: IMetadata;\n returns: IMetadata;\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataTag.d.ts",'export type IMetadataTag = IMetadataTag.IType | IMetadataTag.IMinimum | IMetadataTag.IMaximum | IMetadataTag.IExclusiveMinimum | IMetadataTag.IExclusiveMaximum | IMetadataTag.IMultipleOf | IMetadataTag.IStep | IMetadataTag.IFormat | IMetadataTag.IPattern | IMetadataTag.ILength | IMetadataTag.IMinLength | IMetadataTag.IMaxLength | IMetadataTag.IItems | IMetadataTag.IMinItems | IMetadataTag.IMaxItems;\nexport declare namespace IMetadataTag {\n interface IType {\n kind: "type";\n value: "int" | "uint";\n }\n interface IMinimum {\n kind: "minimum";\n value: number;\n }\n interface IMaximum {\n kind: "maximum";\n value: number;\n }\n interface IExclusiveMinimum {\n kind: "exclusiveMinimum";\n value: number;\n }\n interface IExclusiveMaximum {\n kind: "exclusiveMaximum";\n value: number;\n }\n interface IMultipleOf {\n kind: "multipleOf";\n value: number;\n }\n interface IStep {\n kind: "step";\n value: number;\n }\n interface IFormat {\n kind: "format";\n value: "uuid" | "email" | "url" | "ipv4" | "ipv6" | "date" | "datetime";\n }\n interface IPattern {\n kind: "pattern";\n value: string;\n }\n interface ILength {\n kind: "length";\n value: number;\n }\n interface IMinLength {\n kind: "minLength";\n value: number;\n }\n interface IMaxLength {\n kind: "maxLength";\n value: number;\n }\n interface IItems {\n kind: "items";\n value: number;\n }\n interface IMinItems {\n kind: "minItems";\n value: number;\n }\n interface IMaxItems {\n kind: "maxItems";\n value: number;\n }\n}\n'],["file:///node_modules/typia/lib/metadata/IMetadataTuple.d.ts",'import { IMetadata } from "./IMetadata";\nexport interface IMetadataTuple {\n name: string;\n elements: IMetadata[];\n index: number | null;\n recursive: boolean;\n nullables: boolean[];\n}\n'],["file:///node_modules/typia/lib/metadata/Metadata.d.ts",'import { Atomic } from "../typings/Atomic";\nimport { IMetadata } from "./IMetadata";\nimport { IMetadataCollection } from "./IMetadataCollection";\nimport { MetadataAlias } from "./MetadataAlias";\nimport { MetadataArray } from "./MetadataArray";\nimport { MetadataConstant } from "./MetadataConstant";\nimport { MetadataObject } from "./MetadataObject";\nimport { MetadataResolved } from "./MetadataResolved";\nimport { MetadataTuple } from "./MetadataTuple";\nexport declare class Metadata {\n any: boolean;\n required: boolean;\n optional: boolean;\n nullable: boolean;\n functional: boolean;\n resolved: MetadataResolved | null;\n atomics: Atomic.Literal[];\n constants: MetadataConstant[];\n templates: Metadata[][];\n rest: Metadata | null;\n aliases: MetadataAlias[];\n arrays: MetadataArray[];\n tuples: MetadataTuple[];\n objects: MetadataObject[];\n natives: string[];\n sets: Metadata[];\n maps: Metadata.Entry[];\n /**\n * @hidden\n */\n private constructor();\n toJSON(): IMetadata;\n static from(meta: IMetadata, collection: IMetadataCollection): Metadata;\n getName(): string;\n empty(): boolean;\n size(): number;\n bucket(): number;\n isConstant(): boolean;\n isRequired(): boolean;\n isSoleLiteral(): boolean;\n}\nexport declare namespace Metadata {\n const intersects: (x: Metadata, y: Metadata) => boolean;\n const covers: (x: Metadata, y: Metadata, level?: number) => boolean;\n}\nexport declare namespace Metadata {\n interface Entry {\n key: Metadata;\n value: Metadata;\n }\n}\n'],["file:///node_modules/typia/lib/metadata/MetadataAlias.d.ts",'import { IJsDocTagInfo } from "./IJsDocTagInfo";\nimport { IMetadataAlias } from "./IMetadataAlias";\nimport { IMetadataTag } from "./IMetadataTag";\nimport { Metadata } from "./Metadata";\nexport declare class MetadataAlias {\n readonly name: string;\n readonly value: Metadata;\n readonly description: string | null;\n readonly tags: IMetadataTag[];\n readonly jsDocTags: IJsDocTagInfo[];\n readonly recursive: boolean;\n readonly nullables: boolean[];\n /**\n * @hidden\n */\n private constructor();\n toJSON(): IMetadataAlias;\n}\n'],["file:///node_modules/typia/lib/metadata/MetadataArray.d.ts",'import { IMetadataArray } from "./IMetadataArray";\nimport { Metadata } from "./Metadata";\nexport declare class MetadataArray {\n readonly name: string;\n readonly value: Metadata;\n readonly nullables: boolean[];\n readonly recursive: boolean;\n readonly index: number | null;\n /**\n * @hidden\n */\n private constructor();\n toJSON(): IMetadataArray;\n}\n'],["file:///node_modules/typia/lib/metadata/MetadataConstant.d.ts",'import { IMetadataConstant } from "./IMetadataConstant";\nexport type MetadataConstant = IMetadataConstant;\n'],["file:///node_modules/typia/lib/metadata/MetadataObject.d.ts",'import { IJsDocTagInfo } from "./IJsDocTagInfo";\nimport { IMetadataObject } from "./IMetadataObject";\nimport { MetadataProperty } from "./MetadataProperty";\nexport declare class MetadataObject {\n readonly name: string;\n readonly properties: Array;\n readonly description: string | undefined;\n readonly jsDocTags: IJsDocTagInfo[];\n readonly index: number;\n validated: boolean;\n recursive: boolean;\n nullables: boolean[];\n /**\n * @hidden\n */\n private constructor();\n toJSON(): IMetadataObject;\n}\n'],["file:///node_modules/typia/lib/metadata/MetadataProperty.d.ts",'import { IJsDocTagInfo } from "./IJsDocTagInfo";\nimport { IMetadataProperty } from "./IMetadataProperty";\nimport { IMetadataTag } from "./IMetadataTag";\nimport { Metadata } from "./Metadata";\nexport declare class MetadataProperty {\n readonly key: Metadata;\n readonly value: Metadata;\n readonly description: string | null;\n readonly tags: IMetadataTag[];\n readonly jsDocTags: IJsDocTagInfo[];\n /**\n * @hidden\n */\n private constructor();\n toJSON(): IMetadataProperty;\n}\n'],["file:///node_modules/typia/lib/metadata/MetadataResolved.d.ts",'import { IMetadataResolved } from "./IMetadataResolved";\nimport { Metadata } from "./Metadata";\nexport declare class MetadataResolved {\n readonly original: Metadata;\n readonly returns: Metadata;\n /**\n * @hidden\n */\n private constructor();\n getName(): string;\n toJSON(): IMetadataResolved;\n}\n'],["file:///node_modules/typia/lib/metadata/MetadataTuple.d.ts",'import { ClassProperties } from "../typings/ClassProperties";\nimport { IMetadataTuple } from "./IMetadataTuple";\nimport { Metadata } from "./Metadata";\nexport declare class MetadataTuple {\n readonly name: string;\n readonly elements: Metadata[];\n readonly index: number | null;\n readonly recursive: boolean;\n readonly nullables: boolean[];\n static create(props: ClassProperties): MetadataTuple;\n toJSON(): IMetadataTuple;\n}\n'],["file:///node_modules/typia/lib/module.d.ts",'import { IJsonApplication } from "./schemas/IJsonApplication";\nimport { Atomic } from "./typings/Atomic";\nimport { CustomValidatorMap } from "./CustomValidatorMap";\nimport { IRandomGenerator } from "./IRandomGenerator";\nimport { IValidation } from "./IValidation";\nimport { Primitive } from "./Primitive";\nexport * from "./schemas/IJsonApplication";\nexport * from "./schemas/IJsonComponents";\nexport * from "./schemas/IJsonSchema";\nexport * from "./IRandomGenerator";\nexport * from "./IValidation";\nexport * from "./Primitive";\nexport * from "./TypeGuardError";\n/**\n * Asserts a value type.\n *\n * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed\n * reason, if the parametric value is not following the type `T`. Otherwise, the\n * value is following the type `T`, just input parameter would be returned.\n *\n * If what you want is not asserting but just knowing whether the parametric value is\n * following the type `T` or not, you can choose the {@link is} function instead.\n * Otherwise you want to know all the errors, {@link validate} is the way to go.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link assertEquals} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be asserted\n * @returns Parametric input value\n * @throws A {@link TypeGuardError} instance with detailed reason\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assert(input: T): T;\n/**\n * Asserts a value type.\n *\n * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed\n * reason, if the parametric value is not following the type `T`. Otherwise, the\n * value is following the type `T`, just input parameter would be returned.\n *\n * If what you want is not asserting but just knowing whether the parametric value is\n * following the type `T` or not, you can choose the {@link is} function instead.\n * Otherwise, you want to know all the errors, {@link validate} is the way to go.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link assertEquals} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be asserted\n * @returns Parametric input value casted as `T`\n * @throws A {@link TypeGuardError} instance with detailed reason\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assert(input: unknown): T;\n/**\n * Asserts a value type.\n *\n * Duplicated function of {@link assert} for `typescript-is` users.\n *\n * @template T Type of the input value\n * @param input A value to be asserted\n * @returns Parametric input value\n * @throws A {@link TypeGuardError} instance with detailed reason\n *\n * @author Jeongho Nam - https://github.com/samchon\n * @deprecated\n */\nexport declare function assertType(input: T): T;\n/**\n * Asserts a value type.\n *\n * Duplicated function of {@link assert} for `typescript-is` users.\n *\n * @template T Type of the input value\n * @param input A value to be asserted\n * @returns Parametric input value\n * @throws A {@link TypeGuardError} instance with detailed reason\n *\n * @author Jeongho Nam - https://github.com/samchon\n * @deprecated\n */\nexport declare function assertType(input: unknown): T;\n/**\n * Tests a value type.\n *\n * Tests a parametric value type and returns whether it\'s following the type `T` or not.\n * If the parametric value is matched with the type `T`, `true` value would be returned.\n * Otherwise, the parametric value is not following the type `T`, `false` value would be\n * returned.\n *\n * If what you want is not just knowing whether the parametric value is following the\n * type `T` or not, but throwing an exception with detailed reason, you can choose\n * {@link assert} function instead. Also, if you want to know all the errors with\n * detailed reasons, {@link validate} function would be useful.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link equals} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be tested\n * @returns Whether the parametric value is following the type `T` or not\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function is(input: T): input is T;\n/**\n * Tests a value type.\n *\n * Tests a parametric value type and returns whether it\'s following the type `T` or not.\n * If the parametric value is matched with the type `T`, `true` value would be returned.\n * Otherwise, the parametric value is not following the type `T`, `false` value would be\n * returned.\n *\n * If what you want is not just knowing whether the parametric value is following the\n * type `T` or not, but throwing an exception with detailed reason, you can choose\n * {@link assert} function instead. Also, if you want to know all the errors with\n * detailed reasons, {@link validate} function would be useful.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link equals} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be tested\n * @returns Whether the parametric value is following the type `T` or not\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function is(input: unknown): input is T;\n/**\n * Validates a value type.\n *\n * Validates a parametric value type and archives all the type errors into an\n * {@link IValidation.errors} array, if the parametric value is not following the\n * type `T`. Of course, if the parametric value is following the type `T`, the\n * {@link IValidation.errors} array would be empty and {@link IValidation.success}\n * would have the `true` value.\n *\n * If what you want is not finding all the error, but asserting the parametric value\n * type with exception throwing, you can choose {@link assert} function instead.\n * Otherwise, you just want to know whether the parametric value is matched with the\n * type `T`, {@link is} function is the way to go.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link validateEquals} function instead.\n *\n * @template Type of the input value\n * @param input A value to be validated\n * @returns Validation result\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validate(input: T): IValidation;\n/**\n * Validates a value type.\n *\n * Validates a parametric value type and archives all the type errors into an\n * {@link IValidation.errors} array, if the parametric value is not following the\n * type `T`. Of course, if the parametric value is following the type `T`, the\n * {@link IValidation.errors} array would be empty and {@link IValidation.success}\n * would have the `true` value.\n *\n * If what you want is not finding all the error, but asserting the parametric value\n * type with exception throwing, you can choose {@link assert} function instead.\n * Otherwise, you just want to know whether the parametric value is matched with the\n * type `T`, {@link is} function is the way to go.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link validateEquals} function instead.\n *\n * @template Type of the input value\n * @param input A value to be validated\n * @returns Validation result\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validate(input: unknown): IValidation;\n/**\n * Asserts equality between a value and its type.\n *\n * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed\n * reason, if the parametric value is not following the type `T` or some superfluous\n * property that is not listed on the type `T` has been found. Otherwise, the value is\n * following the type `T` without any superfluous property, just input parameter would\n * be returned.\n *\n * If what you want is not asserting but just knowing whether the parametric value is\n * following the type `T` or not, you can choose the {@link equals} function instead.\n * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.\n *\n * On the other hand, if you want to allow superfluous property that is not enrolled\n * to the type `T`, you can use {@link assert} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be asserted\n * @returns Parametric input value\n * @throws A {@link TypeGuardError} instance with detailed reason\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertEquals(input: T): T;\n/**\n * Asserts equality between a value and its type.\n *\n * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed\n * reason, if the parametric value is not following the type `T` or some superfluous\n * property that is not listed on the type `T` has been found. Otherwise, the value is\n * following the type `T` without any superfluous property, just input parameter would\n * be returned.\n *\n * If what you want is not asserting but just knowing whether the parametric value is\n * following the type `T` or not, you can choose the {@link equals} function instead.\n * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.\n *\n * On the other hand, if you want to allow superfluous property that is not enrolled\n * to the type `T`, you can use {@link assert} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be asserted\n * @returns Parametric input value casted as `T`\n * @throws A {@link TypeGuardError} instance with detailed reason\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertEquals(input: unknown): T;\n/**\n * Tests equality between a value and its type.\n *\n * Tests a parametric value type and returns whether it\'s equivalent to the type `T`\n * or not. If the parametric value is matched with the type `T` and there\'s not any\n * superfluous property that is not listed on the type `T`, `true` value would be\n * returned. Otherwise, the parametric value is not following the type `T` or some\n * superfluous property exists, `false` value would be returned.\n *\n * If what you want is not just knowing whether the parametric value is following the\n * type `T` or not, but throwing an exception with detailed reason, you can choose\n * {@link assertEquals} function instead. Also, if you want to know all the errors with\n * detailed reasons, {@link validateEquals} function would be useful.\n *\n * On the other hand, if you want to allow superfluous property that is not enrolled\n * to the type `T`, you can use {@link is} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be tested\n * @returns Whether the parametric value is equivalent to the type `T` or not\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function equals(input: T): input is T;\n/**\n * Tests equality between a value and its type.\n *\n * Tests a parametric value type and returns whether it\'s equivalent to the type `T`\n * or not. If the parametric value is matched with the type `T` and there\'s not any\n * superfluous property that is not listed on the type `T`, `true` value would be\n * returned. Otherwise, the parametric value is not following the type `T` or some\n * superfluous property exists, `false` value would be returned.\n *\n * If what you want is not just knowing whether the parametric value is following the\n * type `T` or not, but throwing an exception with detailed reason, you can choose\n * {@link assertEquals} function instead. Also, if you want to know all the errors with\n * detailed reasons, {@link validateEquals} function would be useful.\n *\n * On the other hand, if you want to allow superfluous property that is not enrolled\n * to the type `T`, you can use {@link is} function instead.\n *\n * @template T Type of the input value\n * @param input A value to be tested\n * @returns Whether the parametric value is equivalent to the type `T` or not\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function equals(input: unknown): input is T;\n/**\n * Validates equality between a value and its type.\n *\n * Validates a parametric value type and archives all the type errors into an\n * {@link IValidation.errors} array, if the parametric value is not following the\n * type `T` or some superfluous property that is not listed on the type `T` has been\n * found. Of course, if the parametric value is following the type `T` and no\n * superfluous property exists, the {@link IValidation.errors} array would be empty\n * and {@link IValidation.success} would have the `true` value.\n *\n * If what you want is not finding all the error, but asserting the parametric value\n * type with exception throwing, you can choose {@link assert} function instead.\n * Otherwise, you just want to know whether the parametric value is matched with the\n * type `T`, {@link is} function is the way to go.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link validateEquals} function instead.\n *\n * @template Type of the input value\n * @param input A value to be validated\n * @returns Validation result\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validateEquals(input: T): IValidation;\n/**\n * Validates equality between a value and its type.\n *\n * Validates a parametric value type and archives all the type errors into an\n * {@link IValidation.errors} array, if the parametric value is not following the\n * type `T` or some superfluous property that is not listed on the type `T` has been\n * found. Of course, if the parametric value is following the type `T` and no\n * superfluous property exists, the {@link IValidation.errors} array would be empty\n * and {@link IValidation.success} would have the `true` value.\n *\n * If what you want is not finding all the error, but asserting the parametric value\n * type with exception throwing, you can choose {@link assert} function instead.\n * Otherwise, you just want to know whether the parametric value is matched with the\n * type `T`, {@link is} function is the way to go.\n *\n * On the other and, if you don\'t want to allow any superfluous property that is not\n * enrolled to the type `T`, you can use {@link validateEquals} function instead.\n *\n * @template Type of the input value\n * @param input A value to be validated\n * @returns Validation result\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validateEquals(input: unknown): IValidation;\n/**\n * Custom validators.\n *\n * If you want to add a custom validation logic utilizing comment tags,\n * add a closure function with its tag and type name. Below example code\n * would helpful to understand how to use this instance.\n *\n * ```ts\n * typia.customValidators.insert("powerOf")("number")(\n * (text: string) => {\n * const denominator: number = Math.log(Number(text));\n * return (value: number) => {\n * value = Math.log(value) / denominator;\n * return value === Math.floor(value);\n * };\n * }\n * );\n * typia.customValidators.insert("dollar")("string")(\n * () => (value: string) => value.startsWith("$"),\n * );\n *\n * interface TagCustom {\n * /**\n * * @powerOf 10\n * */\n * powerOf: number;\n *\n * /**\n * * @dollar\n * */\n * dollar: string;\n * }\n * ```\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare const customValidators: CustomValidatorMap;\n/**\n * > You must configure the generic argument `T`.\n *\n * JSON Schema Application.\n *\n * Creates a JSON schema application which contains both main JSON schemas and components.\n * Note that, all of the object types are stored in the {@link IJsonApplication.components}\n * property for the `$ref` referencing.\n *\n * Also, `typia.application()` has additional generic arguments, *Purpose*.\n * As JSON schema definitions used by `swagger` and `ajv` are different a little bit,\n * you should configure the *Purpose* appropriately.\n *\n * For an example, `ajv` has an extra property "$recursiveRef" that are not exists\n * in the standard JSON schema definition spec. Otherwise, `swagger` can\'t identify\n * the tuple definition.\n *\n * @template Types Tuple of target types\n * @template Purpose Purpose of the JSON schema`\n * @return JSON schema application\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function application(): never;\n/**\n * JSON Schema Application.\n *\n * Creates a JSON schema application which contains both main JSON schemas and components.\n * Note that, all of the object types are stored in the {@link IJsonApplication.components}\n * property for the `$ref` referencing.\n *\n * Also, `typia.application()` has additional generic arguments, *Purpose*.\n * As JSON schema definitions used by `swagger` and `ajv` are different a little bit,\n * you should configure the *Purpose* appropriately.\n *\n * For an example, `ajv` has an extra property "$recursiveRef" that are not exists\n * in the standard JSON schema definition spec. Otherwise, `swagger` can\'t identify\n * the tuple definition.\n *\n * @template Types Tuple of target types\n * @template Purpose Purpose of the JSON schema\n * @return JSON schema application\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function application(): IJsonApplication;\n/**\n * > You must configure the generic argument `T`.\n *\n * Safe `JSON.parse()` function with type assertion.\n *\n * `typia.assertParse()` is a combination function of `JSON.parse()` and {@link assert}.\n * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed\n * instance with type assertion.\n *\n * In such reason, when parsed JSON string value is not matched with the type `T`, it\n * throws {@link TypeGuardError}. Otherwise, there\'s no problem on the parsed value,\n * the parsed value would be returned.\n *\n * @template T Expected type of parsed value\n * @param input JSON string\n * @returns Parsed value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertParse(input: string): never;\n/**\n * Safe `JSON.parse()` function with type assertion.\n *\n * `typia.assertParse()` is a combination function of `JSON.parse()` and {@link assert}.\n * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed\n * instance with type assertion.\n *\n * In such reason, when parsed JSON string value is not matched with the type `T`, it\n * throws {@link TypeGuardError}. Otherwise, there\'s no problem on the parsed value,\n * the parsed value would be returned.\n *\n * @template T Expected type of parsed value\n * @param input JSON string\n * @returns Parsed value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertParse(input: string): Primitive;\n/**\n * > You must configure the generic argument `T`.\n *\n * Safe `JSON.parse()` function with type checking.\n *\n * `typia.isParse()` is a combination function of `JSON.parse()` and {@link is}.\n * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed\n * instance with type checking.\n *\n * In such reason, when parsed JSON string value is not matched with the type `T`, it\n * returns `null` value. Otherwise, there\'s no problem on the parsed value, the parsed\n * value would be returned.\n *\n * @template T Expected type of parsed value\n * @param input JSON string\n * @returns Parsed value when exact type, otherwise `null`\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isParse(input: string): never;\n/**\n * Safe `JSON.parse()` function with type checking.\n *\n * `typia.isParse()` is a combination function of `JSON.parse()` and {@link is}.\n * Therefore, it convers a JSON (JavaScript Object Notation) string to a `T` typed\n * instance with type checking.\n *\n * In such reason, when parsed JSON string value is not matched with the type `T`, it\n * returns `null` value. Otherwise, there\'s no problem on the parsed value, the parsed\n * value would be returned.\n *\n * @template T Expected type of parsed value\n * @param input JSON string\n * @returns Parsed value when exact type, otherwise `null`\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isParse(input: string): Primitive | null;\n/**\n * > You must configure the generic argument `T`.\n *\n * Safe `JSON.parse()` function with detailed type validation.\n *\n * `typia.validateParse()` is a combination function of `JSON.parse()` and\n * {@link validate}. Therefore, it convers a JSON (JavaScript Object Notation) string\n * to a `T` typed instance with detailed type validation.\n *\n * In such reason, when parsed JSON string value is not matched with the type `T`, it\n * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,\n * there\'s no problem on the parsed value, the parsed value would be stored in `data`\n * property of the output {@link IValidation.ISuccess} instance.\n *\n * @template T Expected type of parsed value\n * @param input JSON string\n * @returns Validation result with JSON parsed value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validateParse(input: string): never;\n/**\n * Safe `JSON.parse()` function with detailed type validation.\n *\n * `typia.validateParse()` is a combination function of `JSON.parse()` and\n * {@link validate}. Therefore, it convers a JSON (JavaScript Object Notation) string\n * to a `T` typed instance with detailed type validation.\n *\n * In such reason, when parsed JSON string value is not matched with the type `T`, it\n * returns {@link IValidation.IFailure} value with detailed error reasons. Otherwise,\n * there\'s no problem on the parsed value, the parsed value would be stored in `data`\n * property of the output {@link IValidation.ISuccess} instance.\n *\n * @template T Expected type of parsed value\n * @param input JSON string\n * @returns Validation result with JSON parsed value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validateParse(input: string): IValidation>;\n/**\n * 8x faster `JSON.stringify()` function.\n *\n * Converts an input value to a JSON (JavaScript Object Notation) string, about 8x faster\n * than the native `JSON.stringify()` function. The 5x faster principle is because\n * it writes an optimized JSON conversion plan, only for the type `T`.\n *\n * For reference, this `typia.stringify()` does not validate the input value type.\n * It just believes that the input value is following the type `T`. Therefore, if you\n * can\'t ensure the input value type, it would be better to call one of below functions\n * instead.\n *\n * - {@link assertStringify}\n * - {@link isStringify}\n * - {@link validateStringify}\n *\n * @template T Type of the input value\n * @param input A value to be converted\n * @return JSON string value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function stringify(input: T): string;\n/**\n * 5x faster `JSON.stringify()` function with type assertion.\n *\n * `typia.assertStringify()` is a combination function of {@link assert} and\n * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object\n * Notation) string, with type assertion.\n *\n * In such reason, when `input` value is not matched with the type `T`, it throws an\n * {@link TypeGuardError}. Otherwise, there\'s no problem on the `input` value, JSON\n * string would be returned.\n *\n * For reference, with type assertion, it is even 5x times faster than the native\n * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion\n * with confidence.\n *\n * @template T Type of the input value\n * @param input A value to be asserted and converted\n * @return JSON string value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertStringify(input: T): string;\n/**\n * 5x faster `JSON.stringify()` function with type assertion.\n *\n * `typia.assertStringify()` is a combination function of {@link assert} and\n * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object\n * Notation) string, with type assertion.\n *\n * In such reason, when `input` value is not matched with the type `T`, it throws an\n * {@link TypeGuardError}. Otherwise, there\'s no problem on the `input` value, JSON\n * string would be returned.\n *\n * For reference, with type assertion, it is even 5x times faster than the native\n * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion\n * with confidence.\n *\n * @template T Type of the input value\n * @param input A value to be asserted and converted\n * @return JSON string value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertStringify(input: T): unknown;\n/**\n * 7x faster `JSON.stringify()` function with type checking.\n *\n * `typia.stringify()` is a combination function of {@link is} and\n * {@link stringify}. Therefore, it converts an input value to JSON\n * (JavaScript Object Notation) string, with type checking.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * `null` value. Otherwise, there\'s no problem on the `input` value, JSON string would\n * be returned.\n *\n * For reference, with type checking, it is even 7x times faster than the native\n * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion\n * with confidence.\n *\n * @template T Type of the input value\n * @param input A value to be checked and converted\n * @return JSON string value when exact type, otherwise null\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isStringify(input: T): string | null;\n/**\n * 7x faster `JSON.stringify()` function with type checking.\n *\n * `typia.isStringify()` is a combination function of {@link is} and\n * {@link stringify}. Therefore, it converts an input value to JSON\n * (JavaScript Object Notation) string, with type checking.\n *f\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * `null` value. Otherwise, there\'s no problem on the `input` value, JSON string would\n * be returned.\n *\n * For reference, with type checking, it is even 7x times faster than the native\n * `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion\n * with confidence.\n *\n * @template T Type of the input value\n * @param input A value to be checked and converted\n * @return JSON string value when exact type, otherwise null\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isStringify(input: unknown): string | null;\n/**\n * 5x faster `JSON.stringify()` function with detailed type validation.\n *\n * `typia.validateStringify()` is a combination function of {@link validate} and\n * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object\n * Notation) string, with detailed type validation.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there\'s no\n * problem on the `input` value, JSON string would be stored in `data` property of\n * the output {@link IValidation.ISuccess} instance.\n *\n * For reference, with detailed type validation, it is even 5x times faster than the\n * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion\n * with confidence.\n *\n * @template T Type of the input value\n * @param input A value to be checked and converted\n * @returns Validation result with JSON string value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validateStringify(input: T): IValidation;\n/**\n * 5x faster `JSON.stringify()` function with detailed type validation.\n *\n * `typia.validateStringify()` is a combination function of {@link validate} and\n * {@link stringify}. Therefore, it converts an input value to JSON (JavaScript Object\n * Notation) string, with detailed type validation.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there\'s no\n * problem on the `input` value, JSON string would be stored in `data` property of\n * the output {@link IValidation.ISuccess} instance.\n *\n * For reference, with detailed type validation, it is even 5x times faster than the\n * native `JSON.stringify()` function. So, just enjoy the safe and fast JSON conversion\n * with confidence.\n *\n * @template T Type of the input value\n * @param input A value to be checked and converted\n * @returns Validation result with JSON string value\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validateStringify(input: unknown): IValidation;\n/**\n * > You must configure the generic argument `T`.\n *\n * Generate random data.\n *\n * Generates a random data following type the `T`.\n *\n * For reference, this `typia.random()` function generates only primitive type.\n * If there\'re some methods in the type `T` or its nested instances, those would\n * be ignored. Also, when the type `T` has a `toJSON()` method, its return type\n * would be generated instead.\n *\n * @template T Type of data to generate\n * @param generator Random data generator\n * @return Randomly generated data\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function random(generator?: Partial): never;\n/**\n * Generate random data.\n *\n * Generates a random data following type the `T`.\n *\n * For reference, this `typia.random()` function generates only primitive type.\n * If there\'re some methods in the type `T` or its nested instances, those would\n * be ignored. Also, when the type `T` has a `toJSON()` method, its return type\n * would be generated instead.\n *\n * @template T Type of data to generate\n * @param generator Random data generator\n * @return Randomly generated data\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function random(generator?: Partial): Primitive;\n/**\n * > You must configure the generic argument `T`.\n *\n * Union literal type to array.\n *\n * Converts a union literal type to an array of its members.\n *\n * ```typescript\n * literals<"A" | "B" | 1>; // ["A", "B", 1]\n * ```\n *\n * @template T Union literal type\n * @return Array of union literal type\'s members\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function literals(): never;\n/**\n * Union literal type to array.\n *\n * Converts a union literal type to an array of its members.\n *\n * ```typescript\n * literals<"A" | "B" | 1>; // ["A", "B", 1]\n * ```\n *\n * @template T Union literal type\n * @return Array of union literal type\'s members\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function literals(): T[];\n/**\n * Clone a data.\n *\n * Clones an instance following type `T`. If the target *input* value or its member\n * variable contains a class instance that is having a `toJSON()` method, its return\n * value would be cloned.\n *\n * For reference, this `typia.clone()` function does not validate the input value type.\n * It just believes that the input value is following the type `T`. Therefore, if you\n * can\'t ensure the input value type, it would be better to call {@link assertClone}\n * function instead.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @return Cloned data\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function clone(input: T): Primitive;\n/**\n * Clone a data with type assertion.\n *\n * Clones an instance following type `T`, with type assertion. If the target `input`\n * value or its member variable contains a class instance that is having a `toJSON()`\n * method, its return value would be cloned.\n *\n * In such reason, when `input` value is not matched with the type `T`, it throws an\n * {@link TypeGuardError}. Otherwise, there\'s no problem on the `input` value, cloned\n * data would be returned.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @return Cloned data\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertClone(input: T): Primitive;\n/**\n * Clone a data with type assertion.\n *\n * Clones an instance following type `T`, with type assertion. If the target `input`\n * value or its member variable contains a class instance that is having a `toJSON()`\n * method, its return value would be cloned.\n *\n * In such reason, when `input` value is not matched with the type `T`, it throws an\n * {@link TypeGuardError}. Otherwise, there\'s no problem on the `input` value, cloned\n * data would be returned.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @return Cloned data\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertClone(input: unknown): Primitive;\n/**\n * Clone a data with type checking.\n *\n * Clones an instance following type `T`, with type checking. If the target `input`\n * value or its member variable contains a class instance that is having a `toJSON()`\n * method, its return value would be cloned.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * `null` value instead. Otherwise, there\'s no problem on the `input` value, cloned\n * data would be returned.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @return Cloned data when exact type, otherwise null\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isClone(input: T): Primitive | null;\n/**\n * Clone a data with type checking.\n *\n * Clones an instance following type `T`, with type checking. If the target `input`\n * value or its member variable contains a class instance that is having a `toJSON()`\n * method, its return value would be cloned.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * `null` value instead. Otherwise, there\'s no problem on the `input` value, cloned\n * data would be returned.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @return Cloned data when exact type, otherwise null\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isClone(input: unknown): Primitive | null;\n/**\n * Clone a data with detailed type validation.\n *\n * Clones an instance following type `T`, with detailed type validation. If the target\n * `input` value or its member variable contains a class instance that is having a\n * `toJSON()` method, its return value would be cloned.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * {@link IValidation.Failure} value. Otherwise, there\'s no problem on the `input`\n * value, cloned data would be stored in `data` property of the output\n * {@link IValidation.Success} instance.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @returns Validation result with cloned value\n */\nexport declare function validateClone(input: T): IValidation>;\n/**\n * Clone a data with detailed type validation.\n *\n * Clones an instance following type `T`, with detailed type validation. If the target\n * `input` value or its member variable contains a class instance that is having a\n * `toJSON()` method, its return value would be cloned.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * {@link IValidation.Failure} value. Otherwise, there\'s no problem on the `input`\n * value, cloned data would be stored in `data` property of the output\n * {@link IValidation.Success} instance.\n *\n * @template T Type of the input value\n * @param input A value to be cloned\n * @returns Validation result with cloned value\n */\nexport declare function validateClone(input: unknown): IValidation>;\n/**\n * Prune, erase superfluous properties.\n *\n * Remove every superfluous properties from the `input` object, even including nested\n * objects. Note that, as every superfluous properties would be deleted, you never can\n * read those superfluous properties after calling this `prune()` function.\n *\n * For reference, this `typia.prune()` function does not validate the input value type.\n * It just believes that the input value is following the type `T`. Therefore, if you\n * can\'t ensure the input value type, it would better to call one of below functions\n * instead.\n *\n * - {@link assertPrune}\n * - {@link isPrune}\n * - {@link validatePrune}\n *\n * @template T Type of the input value\n * @param input Target instance to prune\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function prune(input: T): void;\n/**\n * Prune, erase superfluous properties, with type assertion.\n *\n * `typia.assertPrune()` is a combination function of {@link assert} and {@link prune}.\n * Therefore, it removes every superfluous properties from the `input` object including\n * nested objects, with type assertion.\n *\n * In such reason, when `input` value is not matched with the type `T`, it throws an\n * {@link TypeGuardError}. Otherwise, there\'s no problem on the `input` value, its\n * every superfluous properties would be removed, including nested objects.\n *\n * @template T Type of the input value\n * @param input Target instance to assert and prune\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertPrune(input: T): T;\n/**\n * Prune, erase superfluous properties, with type assertion.\n *\n * `typia.assertPrune()` is a combination function of {@link assert} and {@link prune}.\n * Therefore, it removes every superfluous properties from the `input` object including\n * nested objects, with type assertion.\n *\n * In such reason, when `input` value is not matched with the type `T`, it throws an\n * {@link TypeGuardError}. Otherwise, there\'s no problem on the `input` value, its\n * every superfluous properties would be removed, including nested objects.\n *\n * @template T Type of the input value\n * @param input Target instance to assert and prune\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function assertPrune(input: unknown): T;\n/**\n * Prune, erase superfluous properties, with type checking.\n *\n * `typia.assertPrune()` is a combination function of {@link is} and {@link prune}.\n * Therefore, it removes every superfluous properties from the `input` object including\n * nested objects, with type checking.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * `false` value. Otherwise, there\'s no problem on the `input` value, it returns\n * `true` after removing every superfluous properties, including nested objects.\n *\n * @template T Type of the input value\n * @param input Target instance to check and prune\n * @returns Whether the parametric value is following the type `T` or not\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isPrune(input: T): input is T;\n/**\n * Prune, erase superfluous properties, with type checking.\n *\n * `typia.assertPrune()` is a combination function of {@link is} and {@link prune}.\n * Therefore, it removes every superfluous properties from the `input` object including\n * nested objects, with type checking.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * `false` value. Otherwise, there\'s no problem on the `input` value, it returns\n * `true` after removing every superfluous properties, including nested objects.\n *\n * @template T Type of the input value\n * @param input Target instance to check and prune\n * @returns Whether the parametric value is following the type `T` or not\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function isPrune(input: unknown): input is T;\n/**\n * Prune, erase superfluous properties, with type validation.\n *\n * `typia.validatePrune()` is a combination function of {@link validate} and {@link prune}.\n * Therefore, it removes every superfluous properties from the `input` object including\n * nested objects, with type validation.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there\'s\n * no problem on the `input` value, it returns {@link IValidation.ISucess} value after\n * removing every superfluous properties, including nested objects.\n *\n * @template T Type of the input value\n * @param input Target instance to validate and prune\n * @returns Validation result\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validatePrune(input: T): IValidation;\n/**\n * Prune, erase superfluous properties, with type validation.\n *\n * `typia.validatePrune()` is a combination function of {@link validate} and {@link prune}.\n * Therefore, it removes every superfluous properties from the `input` object including\n * nested objects, with type validation.\n *\n * In such reason, when `input` value is not matched with the type `T`, it returns\n * {@link IValidation.IFailure} value with detailed error reasons. Otherwise, there\'s\n * no problem on the `input` value, it returns {@link IValidation.ISucess} value after\n * removing every superfluous properties, including nested objects.\n *\n * @template T Type of the input value\n * @param input Target instance to validate and prune\n * @returns Validation result\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function validatePrune(input: unknown): IValidation;\n/**\n * Creates a reusable {@link assert} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssert(): never;\n/**\n * Creates a reusable {@link assert} function.\n *\n * @template T Type of the input value\n * @returns A reusable `assert` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssert(): (input: unknown) => T;\n/**\n * Creates a reusable {@link assertType} function.\n *\n * Duplicated function of {@link createAssert} for `typescript-is` users.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n * @deprecated\n */\nexport declare function createAssertType(): never;\n/**\n * Creates a reusable {@link assertType} function.\n *\n * Duplicated function of {@link createAssert} for `typescript-is` users.\n *\n * @template T Type of the input value\n * @returns A reusable `assert` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n * @deprecated\n */\nexport declare function createAssertType(): (input: unknown) => T;\n/**\n * Creates a reusable {@link is} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIs(): never;\n/**\n * Creates a reusable {@link is} function.\n *\n * @template T Type of the input value\n * @returns A reusable `is` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIs(): (input: unknown) => input is T;\n/**\n * Creates a reusable {@link validate} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidate(): never;\n/**\n * Creates a reusable {@link validate} function.\n *\n * @template T Type of the input value\n * @returns A reusable `validate` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidate(): (input: unknown) => IValidation;\n/**\n * Creates a reusable {@link assertEquals} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertEquals(): never;\n/**\n * Creates a reusable {@link assertEquals} function.\n *\n * @template T Type of the input value\n * @returns A reusable `assertEquals` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertEquals(): (input: unknown) => T;\n/**\n * Creates a reusable {@link equals} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createEquals(): never;\n/**\n * Creates a reusable {@link equals} function.\n *\n * @template T Type of the input value\n * @returns A reusable `equals` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createEquals(): (input: unknown) => input is T;\n/**\n * Creates a reusable {@link validateEquals} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateEquals(): never;\n/**\n * Creates a reusable {@link validateEquals} function.\n *\n * @template T Type of the input value\n * @returns A reusable `validateEquals` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateEquals(): (input: unknown) => IValidation;\n/**\n * Creates a reusable {@link isParse} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsParse(): never;\n/**\n * Creates a reusable {@link isParse} function.\n *\n * @template T Expected type of parsed value\n * @returns A reusable `isParse` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsParse(): (input: string) => Primitive | null;\n/**\n * Creates a reusable {@link assertParse} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertParse(): never;\n/**\n * Creates a reusable {@link assertParse} function.\n *\n * @template T Expected type of parsed value\n * @returns A reusable `assertParse` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertParse(): (input: string) => Primitive;\n/**\n * Creates a reusable {@link validateParse} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateParse(): never;\n/**\n * Creates a reusable {@link validateParse} function.\n *\n * @template T Expected type of parsed value\n * @returns A reusable `validateParse` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateParse(): (input: string) => IValidation>;\n/**\n * Creates a reusable {@link stringify} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createStringify(): never;\n/**\n * Creates a reusable {@link stringify} function.\n *\n * @template T Type of the input value\n * @returns A reusable `stringify` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createStringify(): (input: T) => string;\n/**\n * Creates a reusable {@link assertStringify} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertStringify(): never;\n/**\n * Creates a reusable {@link assertStringify} function.\n *\n * @template T Type of the input value\n * @returns A reusable `assertStringify` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertStringify(): (input: unknown) => string;\n/**\n * Creates a reusable {@link isStringify} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsStringify(): never;\n/**\n * Creates a reusable {@link isStringify} function.\n *\n * @template T Type of the input value\n * @returns A reusable `isStringify` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsStringify(): (input: unknown) => string | null;\n/**\n * Creates a reusable {@link validateStringify} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateStringify(): never;\n/**\n * Creates a reusable {@link validateStringify} function.\n *\n * @template T Type of the input value\n * @returns A reusable `validateStringify` function\n\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateStringify(): (input: unknown) => IValidation;\n/**\n * Creates a reusable {@link random} function.\n *\n * @danger You have to specify the generic argument `T`\n * @param generator Random data generator\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createRandom(generator?: Partial): never;\n/**\n * Creates a resuable {@link random} function.\n *\n * @template T Type of the input value\n * @param generator Random data generator\n * @returns A reusable `random` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createRandom(generator?: Partial): () => Primitive;\n/**\n * Creates a reusable {@link clone} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createClone(): never;\n/**\n * Creates a resuable {@link clone} function.\n *\n * @template T Type of the input value\n * @returns A reusable `clone` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createClone(): (input: T) => Primitive;\n/**\n * Creates a reusable {@link assertClone} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertClone(): never;\n/**\n * Creates a resuable {@link assertClone} function.\n *\n * @template T Type of the input value\n * @returns A reusable `clone` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertClone(): (input: unknown) => Primitive;\n/**\n * Creates a reusable {@link isClone} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsClone(): never;\n/**\n * Creates a resuable {@link isClone} function.\n *\n * @template T Type of the input value\n * @returns A reusable `clone` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsClone(): (input: unknown) => Primitive | null;\n/**\n * Creates a reusable {@link validateClone} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateClone(): never;\n/**\n * Creates a resuable {@link validateClone} function.\n *\n * @template T Type of the input value\n * @returns A reusable `clone` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidateClone(): (input: unknown) => IValidation>;\n/**\n * Creates a reusable {@link prune} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createPrune(): never;\n/**\n * Creates a resuable {@link prune} function.\n *\n * @template T Type of the input value\n * @returns A reusable `prune` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createPrune(): (input: T) => void;\n/**\n * Creates a reusable {@link assertPrune} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertPrune(): never;\n/**\n * Creates a resuable {@link assertPrune} function.\n *\n * @template T Type of the input value\n * @returns A reusable `isPrune` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createAssertPrune(): (input: T) => T;\n/**\n * Creates a reusable {@link isPrune} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsPrune(): never;\n/**\n * Creates a resuable {@link isPrune} function.\n *\n * @template T Type of the input value\n * @returns A reusable `isPrune` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createIsPrune(): (input: T) => input is T;\n/**\n * Creates a reusable {@link validatePrune} function.\n *\n * @danger You have to specify the generic argument `T`\n * @return Nothing until specifying the generic argument `T`\n * @throws compile error\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidatePrune(): never;\n/**\n * Creates a resuable {@link validatePrune} function.\n *\n * @template T Type of the input value\n * @returns A reusable `validatePrune` function\n *\n * @author Jeongho Nam - https://github.com/samchon\n */\nexport declare function createValidatePrune(): (input: T) => IValidation;\n'],["file:///node_modules/typia/lib/Primitive.d.ts",'/**\n * Primitive type.\n *\n * `Primitive` is a type of TMP (Type Meta Programming) type who converts its argument as a\n * primitive type.\n *\n * If the target argument is a built-in class who returns its origin primitive type through\n * the `valueOf()` method like the `String` or `Number`, its return type would be the\n * `string` or `number`.\n *\n * Otherwise, the target argument is a type of custom class, all of its custom method would\n * be erased and its prototype would be changed to the primitive `object`. Therefore, return\n * type of the TMP type finally be the primitive object.\n *\n * In addition, if the target argument is a type of custom class and it has a special\n * method `toJSON()`, return type of this `Primitive` would be not `Primitive`\n * but `Primitive>`.\n *\n * Before | After\n * ------------------------|----------------------------------------\n * `Boolean` | `boolean`\n * `Number` | `number`\n * `String` | `string`\n * `Class` | `object`\n * `Class` with `toJSON()` | `Primitive>`\n * Others | No change\n *\n * @template Instance Target argument type.\n * @author Jenogho Nam - https://github.com/samchon\n * @author Kyungsu Kang - https://github.com/kakasoo\n * @author Michael - https://github.com/8471919\n */\nexport type Primitive = Equal> extends true ? T : PrimitiveMain;\ntype Equal = X extends Y ? (Y extends X ? true : false) : false;\ntype PrimitiveMain = Instance extends [never] ? never : ValueOf extends boolean | number | bigint | string ? ValueOf : ValueOf extends object ? Instance extends object ? Instance extends NativeClass ? {} : Instance extends IJsonable ? ValueOf extends object ? Raw extends object ? PrimitiveObject : never : ValueOf : PrimitiveObject : never : ValueOf;\ntype PrimitiveObject = Instance extends Array ? IsTuple extends true ? PrimitiveTuple : PrimitiveMain[] : {\n [P in keyof Instance]: Instance[P] extends Function ? never : PrimitiveMain;\n};\ntype PrimitiveTuple = T extends [] ? [] : T extends [infer F] ? [PrimitiveMain] : T extends [infer F, ...infer Rest extends readonly any[]] ? [PrimitiveMain, ...PrimitiveTuple] : T extends [(infer F)?] ? [PrimitiveMain?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [PrimitiveMain?, ...PrimitiveTuple] : [];\ntype ValueOf = IsValueOf extends true ? boolean : IsValueOf extends true ? number : IsValueOf extends true ? string : Instance;\ntype NativeClass = Set | Map | WeakSet | WeakMap | Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | BigUint64Array | Int8Array | Int16Array | Int32Array | BigInt64Array | Float32Array | Float64Array | ArrayBuffer | SharedArrayBuffer | DataView;\ntype IsTuple = [T] extends [\n never\n] ? false : T extends readonly any[] ? number extends T["length"] ? false : true : false;\ntype IsValueOf> = Instance extends Object ? Object extends IValueOf ? Instance extends Primitive ? false : true : false : false;\ninterface IValueOf {\n valueOf(): T;\n}\ninterface IJsonable {\n toJSON(): T;\n}\nexport {};\n'],["file:///node_modules/typia/lib/programmers/ApplicationProgrammer.d.ts",'import { Metadata } from "../metadata/Metadata";\nimport { IJsonApplication } from "../schemas/IJsonApplication";\nexport declare namespace ApplicationProgrammer {\n interface IOptions {\n purpose: "ajv" | "swagger";\n }\n const write: (options?: Partial) => (metadatas: Array) => IJsonApplication;\n}\n'],["file:///node_modules/typia/lib/programmers/AssertCloneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace AssertCloneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/AssertParseProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace AssertParseProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/AssertProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace AssertProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (equals: boolean) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/AssertPruneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace AssertPruneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/AssertStringifyProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace AssertStringifyProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/CheckerProgrammer.d.ts",'import ts from "typescript";\nimport { MetadataCollection } from "../factories/MetadataCollection";\nimport { Metadata } from "../metadata/Metadata";\nimport { MetadataObject } from "../metadata/MetadataObject";\nimport { IProject } from "../transformers/IProject";\nimport { FeatureProgrammer } from "./FeatureProgrammer";\nimport { FunctionImporter } from "./helpers/FunctionImporeter";\nimport { ICheckEntry } from "./helpers/ICheckEntry";\nimport { IExpressionEntry } from "./helpers/IExpressionEntry";\nexport declare namespace CheckerProgrammer {\n interface IConfig {\n prefix: string;\n path: boolean;\n trace: boolean;\n equals: boolean;\n numeric: boolean;\n addition?: () => ts.Statement[];\n decoder?: () => FeatureProgrammer.Decoder;\n combiner: IConfig.Combiner;\n atomist: (explore: IExplore) => (check: ICheckEntry) => (input: ts.Expression) => ts.Expression;\n joiner: IConfig.IJoiner;\n success: ts.Expression;\n }\n namespace IConfig {\n interface Combiner {\n (explorer: IExplore): {\n (logic: "and" | "or"): {\n (input: ts.Expression, binaries: IBinary[], expected: string): ts.Expression;\n };\n };\n }\n interface IJoiner {\n object(input: ts.Expression, entries: IExpressionEntry[]): ts.Expression;\n array(input: ts.Expression, arrow: ts.ArrowFunction): ts.Expression;\n tuple?(exprs: ts.Expression[]): ts.Expression;\n failure(value: ts.Expression, expected: string, explore?: FeatureProgrammer.IExplore): ts.Expression;\n is?(expression: ts.Expression): ts.Expression;\n required?(exp: ts.Expression): ts.Expression;\n full?: (condition: ts.Expression) => (input: ts.Expression, expected: string, explore: IExplore) => ts.Expression;\n }\n }\n type IExplore = FeatureProgrammer.IExplore;\n interface IBinary {\n expression: ts.Expression;\n combined: boolean;\n }\n const write: (project: IProject) => (config: IConfig) => (importer: FunctionImporter) => (type: ts.Type, name?: string | undefined) => ts.ArrowFunction;\n const write_object_functions: (project: IProject) => (config: IConfig) => (importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];\n const write_union_functions: (project: IProject) => (config: IConfig) => (importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];\n const write_array_functions: (project: IProject) => (config: IConfig) => (importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];\n const write_tuple_functions: (project: IProject) => (config: IConfig) => (importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];\n const decode_object: (config: IConfig) => (importer: FunctionImporter) => (input: ts.Expression, obj: MetadataObject, explore: IExplore) => ts.CallExpression;\n}\n'],["file:///node_modules/typia/lib/programmers/CloneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace CloneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string | undefined) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/FeatureProgrammer.d.ts",'import ts from "typescript";\nimport { MetadataCollection } from "../factories/MetadataCollection";\nimport { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";\nimport { IMetadataTag } from "../metadata/IMetadataTag";\nimport { Metadata } from "../metadata/Metadata";\nimport { MetadataArray } from "../metadata/MetadataArray";\nimport { MetadataObject } from "../metadata/MetadataObject";\nimport { IProject } from "../transformers/IProject";\nimport { CheckerProgrammer } from "./CheckerProgrammer";\nimport { FunctionImporter } from "./helpers/FunctionImporeter";\nimport { IExpressionEntry } from "./helpers/IExpressionEntry";\nexport declare namespace FeatureProgrammer {\n interface IConfig {\n types: IConfig.ITypes;\n /**\n * Prefix name of internal functions for specific types.\n */\n prefix: string;\n /**\n * Whether to archive access path or not.\n */\n path: boolean;\n /**\n * Whether to trace exception or not.\n */\n trace: boolean;\n addition?(collection: MetadataCollection): ts.Statement[];\n /**\n * Initializer of metadata.\n */\n initializer: (project: IProject) => (type: ts.Type) => [MetadataCollection, Metadata];\n /**\n * Decoder, station of every types.\n */\n decoder: () => Decoder;\n /**\n * Object configurator.\n */\n objector: IConfig.IObjector;\n /**\n * Generator of functions for object types.\n */\n generator: IConfig.IGenerator;\n }\n namespace IConfig {\n interface ITypes {\n input: (type: ts.Type, name?: string) => ts.TypeNode;\n output: (type: ts.Type, name?: string) => ts.TypeNode;\n }\n interface IObjector {\n /**\n * Type checker when union object type comes.\n */\n checker: () => Decoder;\n /**\n * Decoder, function call expression generator of specific typed objects.\n */\n decoder: () => Decoder;\n /**\n * Joiner of expressions from properties.\n */\n joiner(input: ts.Expression, entries: IExpressionEntry[], parent: MetadataObject): ts.ConciseBody;\n /**\n * Union type specificator.\n *\n * Expression of an algorithm specifying object type and calling\n * the `decoder` function of the specified object type.\n */\n unionizer: Decoder;\n /**\n * Handler of union type specification failure.\n *\n * @param value Expression of input parameter\n * @param expected Expected type name\n * @param explore Exploration info\n * @returns Statement of failure\n */\n failure(value: ts.Expression, expected: string, explore?: IExplore): ts.Statement;\n /**\n * Transformer of type checking expression by discrimination.\n *\n * When an object type has been specified by a discrimination without full\n * iteration, the `unionizer` will decode the object instance after\n * the last type checking.\n *\n * In such circumtance, you can transform the last type checking function.\n *\n * @param exp Current expression about type checking\n * @returns Transformed expression\n * @deprecated\n */\n is?(exp: ts.Expression): ts.Expression;\n /**\n * Transformer of non-undefined type checking by discrimination.\n *\n * When specifying an union type of objects, `typia` tries to find\n * descrimination way just by checking only one property type.\n * If succeeded to find the discrimination way, `typia` will check the target\n * property type and in the checking, non-undefined type checking would be\n * done.\n *\n * In such process, you can transform the non-undefined type checking.\n *\n * @param exp\n * @returns Transformed expression\n * @deprecated\n */\n required?(exp: ts.Expression): ts.Expression;\n /**\n * Conditon wrapper when unable to specify any object type.\n *\n * When failed to specify an object type through discrimination, full\n * iteration type checking would be happend. In such circumstance, you\n * can wrap the condition with additional function.\n *\n * @param condition Current condition\n * @returns A function wrapped current condition\n */\n full?: (condition: ts.Expression) => (input: ts.Expression, expected: string, explore: IExplore) => ts.Expression;\n /**\n * Return type.\n */\n type?: ts.TypeNode;\n }\n interface IGenerator {\n objects?(): (col: MetadataCollection) => ts.VariableStatement[];\n unions?(): (col: MetadataCollection) => ts.VariableStatement[];\n arrays(): (col: MetadataCollection) => ts.VariableStatement[];\n tuples(): (col: MetadataCollection) => ts.VariableStatement[];\n }\n }\n interface IExplore {\n tracable: boolean;\n source: "top" | "function";\n from: "top" | "array" | "object";\n postfix: string;\n start?: number;\n }\n interface Decoder {\n (input: ts.Expression, target: T, explore: IExplore, metaTags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]): Output;\n }\n const write: (project: IProject) => (config: IConfig) => (importer: FunctionImporter) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n const write_object_functions: (config: IConfig) => (importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];\n const write_union_functions: (config: IConfig) => (collection: MetadataCollection) => ts.VariableStatement[];\n const decode_array: (config: Pick) => (importer: FunctionImporter) => (combiner: (input: ts.Expression, arrow: ts.ArrowFunction, metaTags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.Expression) => (input: ts.Expression, array: MetadataArray, explore: IExplore, metaTags: IMetadataTag[], jsDocTags: IJsDocTagInfo[]) => ts.Expression;\n const decode_object: (config: Pick) => (importer: FunctionImporter) => (input: ts.Expression, obj: MetadataObject, explore: IExplore) => ts.CallExpression;\n const index: (start: number | null) => (prev: string) => (rand: string) => string;\n const argumentsArray: (config: Pick) => (explore: FeatureProgrammer.IExplore) => (input: ts.Expression) => ts.Expression[];\n const parameterDeclarations: (props: Pick) => (type: ts.TypeNode) => (input: ts.Identifier) => ts.ParameterDeclaration[];\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/AtomicPredicator.d.ts",'import { Metadata } from "../../metadata/Metadata";\nimport { Atomic } from "../../typings/Atomic";\nexport declare namespace AtomicPredicator {\n const constant: (meta: Metadata) => (name: Atomic.Literal) => boolean;\n const atomic: (meta: Metadata) => (name: Atomic.Literal) => boolean;\n const native: (name: string) => boolean;\n const template: (meta: Metadata) => boolean;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/CloneJoiner.d.ts",'import ts from "typescript";\nimport { IExpressionEntry } from "./IExpressionEntry";\nexport declare namespace CloneJoiner {\n const object: (input: ts.Expression, entries: IExpressionEntry[]) => ts.ConciseBody;\n const tuple: (children: ts.Expression[], rest: ts.Expression | null) => ts.Expression;\n const array: (input: ts.Expression, arrow: ts.Expression) => ts.CallExpression;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/disable_function_importer_declare.d.ts",'import { FunctionImporter } from "./FunctionImporeter";\nexport declare const disable_function_importer_declare: (importer: FunctionImporter) => FunctionImporter;\n'],["file:///node_modules/typia/lib/programmers/helpers/FunctionImporeter.d.ts",'import ts from "typescript";\nexport declare class FunctionImporter {\n private readonly used_;\n private readonly local_;\n private readonly unions_;\n private sequence_;\n empty(): boolean;\n use(name: string): ts.Identifier;\n useLocal(name: string): string;\n hasLocal(name: string): boolean;\n declare(modulo: ts.LeftHandSideExpression): ts.Statement[];\n increment(): number;\n emplaceUnion(prefix: string, name: string, factory: () => ts.ArrowFunction): string;\n trace(): void;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/ICheckEntry.d.ts",'import ts from "typescript";\nexport interface ICheckEntry {\n expression: ts.Expression;\n tags: ICheckEntry.ITag[];\n}\nexport declare namespace ICheckEntry {\n interface ITag {\n expected: string;\n expression: ts.Expression;\n }\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/IExpressionEntry.d.ts",'import ts from "typescript";\nimport { Metadata } from "../../metadata/Metadata";\nexport interface IExpressionEntry {\n input: ts.Expression;\n key: Metadata;\n meta: Metadata;\n expression: Expression;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/OptionPredicator.d.ts",'import { ITransformOptions } from "../../transformers/ITransformOptions";\nexport declare namespace OptionPredicator {\n const numeric: (options: ITransformOptions) => boolean;\n const functional: (options: ITransformOptions) => boolean;\n const finite: (options: ITransformOptions) => boolean;\n const undefined: (options: ITransformOptions) => boolean;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/PruneJoiner.d.ts",'import ts from "typescript";\nimport { MetadataObject } from "../../metadata/MetadataObject";\nimport { IExpressionEntry } from "./IExpressionEntry";\nexport declare namespace PruneJoiner {\n const object: (input: ts.Expression, entries: IExpressionEntry[], obj: MetadataObject) => ts.ConciseBody;\n const array: (input: ts.Expression, arrow: ts.ArrowFunction) => ts.CallExpression;\n const tuple: (children: ts.ConciseBody[], rest: ts.ConciseBody | null) => ts.Block;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/RandomJoiner.d.ts",'import ts from "typescript";\nimport { ICommentTag } from "../../metadata/ICommentTag";\nimport { IMetadataTag } from "../../metadata/IMetadataTag";\nimport { Metadata } from "../../metadata/Metadata";\nimport { MetadataObject } from "../../metadata/MetadataObject";\nexport declare namespace RandomJoiner {\n type Decoder = (meta: Metadata, tags: IMetadataTag[], comments: ICommentTag[]) => ts.Expression;\n const array: (coalesce: (method: string) => ts.Expression) => (decoder: Decoder) => (explore: IExplore) => (length: ts.Expression | undefined) => (item: Metadata, tags: IMetadataTag[], comments: ICommentTag[]) => ts.Expression;\n const tuple: (decoder: Decoder) => (items: Metadata[], tags: IMetadataTag[], comments: ICommentTag[]) => ts.ArrayLiteralExpression;\n const object: (coalesce: (method: string) => ts.Expression) => (decoder: Decoder) => (obj: MetadataObject) => ts.ConciseBody;\n}\ninterface IExplore {\n function: boolean;\n recursive: boolean;\n}\nexport {};\n'],["file:///node_modules/typia/lib/programmers/helpers/RandomRanger.d.ts",'import ts from "typescript";\nimport { IMetadataTag } from "../../metadata/IMetadataTag";\nexport declare namespace RandomRanger {\n interface IDefaults {\n minimum: number;\n maximum: number;\n gap: number;\n }\n const length: (coalesce: (method: string) => ts.Expression) => (defs: IDefaults) => (acc: length.IAccessors) => (tags: IMetadataTag[]) => ts.Expression | undefined;\n namespace length {\n interface IAccessors {\n minimum: IMetadataTag["kind"];\n maximum: IMetadataTag["kind"];\n fixed: IMetadataTag["kind"];\n }\n }\n const number: (config: number.IConfig) => (defs: IDefaults) => (tags: IMetadataTag[]) => ts.Expression;\n namespace number {\n interface IConfig {\n setter: (args: number[]) => ts.Expression;\n transform: (value: number) => ts.Expression;\n type: "int" | "uint" | "double";\n }\n }\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/StringifyJoinder.d.ts",'import ts from "typescript";\nimport { FunctionImporter } from "./FunctionImporeter";\nimport { IExpressionEntry } from "./IExpressionEntry";\nexport declare namespace StringifyJoiner {\n const object: (importer: FunctionImporter) => (_input: ts.Expression, entries: IExpressionEntry[]) => ts.Expression;\n const array: (input: ts.Expression, arrow: ts.ArrowFunction) => ts.Expression;\n const tuple: (children: ts.Expression[], rest: ts.Expression | null) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/StringifyPredicator.d.ts",'import { Metadata } from "../../metadata/Metadata";\nexport declare namespace StringifyPredicator {\n const require_escape: (value: string) => boolean;\n const undefindable: (meta: Metadata) => boolean;\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/UnionExplorer.d.ts",'import ts from "typescript";\nimport { IMetadataTag } from "../../metadata/IMetadataTag";\nimport { Metadata } from "../../metadata/Metadata";\nimport { MetadataArray } from "../../metadata/MetadataArray";\nimport { MetadataObject } from "../../metadata/MetadataObject";\nimport { MetadataTuple } from "../../metadata/MetadataTuple";\nimport { FeatureProgrammer } from "../FeatureProgrammer";\nimport { check_union_array_like } from "../internal/check_union_array_like";\nexport declare namespace UnionExplorer {\n interface Decoder {\n (input: ts.Expression, target: T, explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]): ts.Expression;\n }\n type ObjectCombiner = Decoder;\n const object: (config: FeatureProgrammer.IConfig, level?: number) => (input: ts.Expression, targets: MetadataObject[], explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.Expression;\n const tuple: (props: check_union_array_like.IProps) => (parameters: ts.ParameterDeclaration[]) => (input: ts.Expression, origins: MetadataTuple[], explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.ArrowFunction;\n namespace tuple {\n type IProps = check_union_array_like.IProps;\n }\n const array: (props: array.IProps) => (parameters: ts.ParameterDeclaration[]) => (input: ts.Expression, origins: MetadataArray[], explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.ArrowFunction;\n namespace array {\n type IProps = check_union_array_like.IProps;\n }\n const array_or_tuple: (props: array_or_tuple.IProps) => (parameters: ts.ParameterDeclaration[]) => (input: ts.Expression, origins: (MetadataArray | MetadataTuple)[], explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.ArrowFunction;\n namespace array_or_tuple {\n type IProps = check_union_array_like.IProps;\n }\n const set: (props: set.IProps) => (parameters: ts.ParameterDeclaration[]) => (input: ts.Expression, origins: Metadata[], explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.ArrowFunction;\n namespace set {\n type IProps = check_union_array_like.IProps;\n }\n const map: (props: map.IProps) => (parameters: ts.ParameterDeclaration[]) => (input: ts.Expression, origins: Metadata.Entry[], explore: FeatureProgrammer.IExplore, tags: IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.ArrowFunction;\n namespace map {\n type IProps = check_union_array_like.IProps;\n }\n}\n'],["file:///node_modules/typia/lib/programmers/helpers/UnionPredicator.d.ts",'import { MetadataObject } from "../../metadata/MetadataObject";\nimport { MetadataProperty } from "../../metadata/MetadataProperty";\nexport declare namespace UnionPredicator {\n interface ISpecialized {\n index: number;\n object: MetadataObject;\n property: MetadataProperty;\n neighbour: boolean;\n }\n const object: (targets: MetadataObject[]) => Array;\n}\n'],["file:///node_modules/typia/lib/programmers/internal/application_alias.d.ts",'import { MetadataAlias } from "../../metadata/MetadataAlias";\nimport { IJsonComponents } from "../../schemas/IJsonComponents";\nimport { IJsonSchema } from "../../module";\nimport { ApplicationProgrammer } from "../ApplicationProgrammer";\nexport declare const application_alias: (options: ApplicationProgrammer.IOptions) => (blockNever: BlockNever) => (components: IJsonComponents) => (alias: MetadataAlias) => (nullable: boolean) => IJsonSchema.IReference;\n'],["file:///node_modules/typia/lib/programmers/internal/application_array.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_boolean.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_constant.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_default.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_default_string.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_native.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_number.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_object.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_resolved.d.ts",'import { MetadataResolved } from "../../metadata/MetadataResolved";\nimport { IJsonComponents, IJsonSchema } from "../../module";\nimport { ApplicationProgrammer } from "../ApplicationProgrammer";\nexport declare const application_resolved: (options: ApplicationProgrammer.IOptions) => (blockNever: BlockNever) => (components: IJsonComponents) => (resolved: MetadataResolved) => (attribute: IJsonSchema.IAttribute) => IJsonSchema[];\n'],["file:///node_modules/typia/lib/programmers/internal/application_schema.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_string.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_templates.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/application_tuple.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_array.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_array_length.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_bigint.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_custom.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_dynamic_properties.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_everything.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_native.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_number.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_object.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_string.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_string_tags.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_template.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/check_union_array_like.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/decode_union_object.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/feature_object_entries.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/get_comment_tags.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/JSON_SCHEMA_PREFIX.d.ts",'export declare const JSON_COMPONENTS_PREFIX = "#/components";\n'],["file:///node_modules/typia/lib/programmers/internal/metadata_to_pattern.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/prune_object_properties.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/random_custom.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/stringify_dynamic_properties.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/stringify_native.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/stringify_regular_properties.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/template_to_pattern.d.ts","export {};\n"],["file:///node_modules/typia/lib/programmers/internal/wrap_metadata_rest_tuple.d.ts",'import { Metadata } from "../../metadata/Metadata";\nexport declare const wrap_metadata_rest_tuple: (rest: Metadata) => Metadata;\n'],["file:///node_modules/typia/lib/programmers/IsCloneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace IsCloneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/IsParseProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace IsParseProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/IsProgrammer.d.ts",'import ts from "typescript";\nimport { MetadataCollection } from "../factories/MetadataCollection";\nimport { MetadataObject } from "../metadata/MetadataObject";\nimport { IProject } from "../transformers/IProject";\nimport { CheckerProgrammer } from "./CheckerProgrammer";\nimport { FunctionImporter } from "./helpers/FunctionImporeter";\nimport { IExpressionEntry } from "./helpers/IExpressionEntry";\nexport declare namespace IsProgrammer {\n const configure: (options?: Partial) => (importer: FunctionImporter) => CheckerProgrammer.IConfig;\n namespace CONFIG {\n interface IOptions {\n numeric: boolean;\n undefined: boolean;\n object: (input: ts.Expression, entries: IExpressionEntry[]) => ts.Expression;\n }\n }\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression, disable?: boolean) => (equals: boolean) => (type: ts.Type, name?: string | undefined) => ts.ArrowFunction;\n const write_function_statements: (project: IProject) => (importer: FunctionImporter) => (collection: MetadataCollection) => ts.VariableStatement[];\n const decode: (project: IProject) => (importer: FunctionImporter) => (input: ts.Expression, meta: import("../metadata/Metadata").Metadata, explore: import("./FeatureProgrammer").FeatureProgrammer.IExplore, metaTags: import("../metadata/IMetadataTag").IMetadataTag[], jsDocTags: ts.JSDocTagInfo[]) => ts.Expression;\n const decode_object: (importer: FunctionImporter) => (input: ts.Expression, obj: MetadataObject, explore: import("./FeatureProgrammer").FeatureProgrammer.IExplore) => ts.CallExpression;\n const decode_to_json: (checkNull: boolean) => (input: ts.Expression) => ts.Expression;\n const decode_functional: (input: ts.Expression) => ts.BinaryExpression;\n}\n'],["file:///node_modules/typia/lib/programmers/IsPruneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace IsPruneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/IsStringifyProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace IsStringifyProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/LiteralsProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace LiteralsProgrammer {\n const write: (project: IProject) => (type: ts.Type) => ts.AsExpression;\n}\n'],["file:///node_modules/typia/lib/programmers/PruneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace PruneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string | undefined) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/RandomProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace RandomProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (init?: ts.Expression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/StringifyProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace StringifyProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string | undefined) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/TypiaProgrammer.d.ts","export declare namespace TypiaProgrammer {\n interface IProps {\n input: string;\n output: string;\n project: string;\n }\n const build: (props: TypiaProgrammer.IProps) => Promise;\n}\n"],["file:///node_modules/typia/lib/programmers/ValidateCloneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace ValidateCloneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/ValidateParseProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace ValidateParseProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/ValidateProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace ValidateProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (equals: boolean) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/ValidatePruneProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace ValidatePruneProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/programmers/ValidateStringifyProgrammer.d.ts",'import ts from "typescript";\nimport { IProject } from "../transformers/IProject";\nexport declare namespace ValidateStringifyProgrammer {\n const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name?: string) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/schemas/IJsonApplication.d.ts",'import { IJsonComponents } from "./IJsonComponents";\nimport { IJsonSchema } from "./IJsonSchema";\nexport interface IJsonApplication {\n schemas: IJsonSchema[];\n components: IJsonComponents;\n purpose: "swagger" | "ajv";\n}\n'],["file:///node_modules/typia/lib/schemas/IJsonComponents.d.ts",'import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";\nimport { IJsonSchema } from "./IJsonSchema";\nexport interface IJsonComponents {\n schemas?: Record;\n}\nexport declare namespace IJsonComponents {\n interface IObject {\n $id?: string;\n type: "object";\n /**\n * Only when swagger mode.\n */\n nullable?: boolean;\n properties: Record;\n patternProperties?: Record;\n additionalProperties?: IJsonSchema;\n required?: string[];\n description?: string;\n "x-typia-jsDocTags"?: IJsDocTagInfo[];\n "x-typia-patternProperties"?: Record;\n "x-typia-additionalProperties"?: IJsonSchema;\n }\n type IAlias = IJsonSchema & {\n $id?: string;\n $recursiveAnchor?: boolean;\n };\n}\n'],["file:///node_modules/typia/lib/schemas/IJsonSchema.d.ts",'import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";\nimport { IMetadataTag } from "../metadata/IMetadataTag";\nimport { Atomic } from "../typings/Atomic";\nexport type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;\nexport declare namespace IJsonSchema {\n type Known = IEnumeration<"boolean"> | IEnumeration<"number"> | IEnumeration<"string"> | IBoolean | IInteger | INumber | IString | IArray | ITuple | IOneOf | IReference | INullOnly;\n interface IUnknown extends IAttribute {\n type?: undefined;\n }\n interface IEnumeration> extends IAtomic {\n enum: Array;\n }\n interface IAtomic> extends ISignificant {\n default?: Atomic.Mapper[Literal];\n }\n interface IString extends IAtomic<"string"> {\n /**\n * @type uint\n */\n minLength?: number;\n /**\n * @type uint\n */\n maxLength?: number;\n pattern?: string;\n format?: string;\n }\n interface INumber extends IAtomic<"number"> {\n minimum?: number;\n maximum?: number;\n exclusiveMinimum?: boolean;\n exclusiveMaximum?: boolean;\n multipleOf?: number;\n }\n interface IInteger extends IAtomic<"integer"> {\n /**\n * @type int\n */\n minimum?: number;\n /**\n * @type int\n */\n maximum?: number;\n exclusiveMinimum?: boolean;\n exclusiveMaximum?: boolean;\n /**\n * @type int\n */\n multipleOf?: number;\n }\n interface IBoolean extends IAtomic<"boolean"> {\n }\n interface IArray extends ISignificant<"array"> {\n items: IJsonSchema;\n /**\n * @type uint\n */\n minItems?: number;\n /**\n * @type uint\n */\n maxItems?: number;\n "x-typia-tuple"?: ITuple;\n }\n interface ITuple extends ISignificant<"array"> {\n items: IJsonSchema[];\n /**\n * @type uint\n */\n minItems: number;\n /**\n * @type uint\n */\n maxItems?: number;\n }\n interface IReference extends IAttribute {\n $ref: string;\n }\n interface INullOnly extends IAttribute {\n type: "null";\n }\n interface IOneOf extends IAttribute {\n oneOf: IJsonSchema[];\n }\n interface ISignificant extends IAttribute {\n type: Literal;\n /**\n * Only when swagger mode.\n */\n nullable?: boolean;\n }\n interface IAttribute {\n deprecated?: boolean;\n title?: string;\n description?: string;\n "x-typia-metaTags"?: IMetadataTag[];\n "x-typia-jsDocTags"?: IJsDocTagInfo[];\n "x-typia-required"?: boolean;\n "x-typia-optional"?: boolean;\n "x-typia-rest"?: boolean;\n }\n}\n'],["file:///node_modules/typia/lib/transform.d.ts",'import ts from "typescript";\nimport { ITransformOptions } from "./transformers/ITransformOptions";\nexport declare const transform: (program: ts.Program, options?: ITransformOptions) => ts.TransformerFactory;\nexport default transform;\n'],["file:///node_modules/typia/lib/transformers/CallExpressionTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "./IProject";\nexport declare namespace CallExpressionTransformer {\n const transform: (project: IProject) => (expression: ts.CallExpression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/ApplicationTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "../../IProject";\nexport declare namespace ApplicationTransformer {\n const transform: ({ checker }: IProject) => (expression: ts.CallExpression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/AssertCloneTransformer.d.ts",'export declare namespace AssertCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/AssertPruneTransformer.d.ts",'export declare namespace AssertPruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CloneTransformer.d.ts",'export declare namespace CloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.d.ts",'export declare namespace CreateAssertCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.d.ts",'export declare namespace CreateAssertPruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateCloneTransformer.d.ts",'export declare namespace CreateCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.d.ts",'export declare namespace CreateIsCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.d.ts",'export declare namespace CreateIsPruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreatePruneTransformer.d.ts",'export declare namespace CreatePruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateRandomTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "../../IProject";\nexport declare namespace CreateRandomTransformer {\n const transform: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (expression: ts.CallExpression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.d.ts",'export declare namespace CreateValidateCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.d.ts",'export declare namespace CreateValidatePruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/IsCloneTransformer.d.ts",'export declare namespace IsCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/IsPruneTransformer.d.ts",'export declare namespace IsPruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/LiteralsTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "../../IProject";\nexport declare namespace LiteralsTransformer {\n const transform: (project: IProject) => (expression: ts.CallExpression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/MetadataTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "../../IProject";\nexport declare namespace MetadataTransformer {\n const transform: ({ checker }: IProject) => (expression: ts.CallExpression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/PruneTransformer.d.ts",'export declare namespace PruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/RandomTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "../../IProject";\nexport declare namespace RandomTransformer {\n const transform: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (expression: ts.CallExpression) => ts.Expression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/ValidateCloneTransformer.d.ts",'export declare namespace ValidateCloneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/miscellaneous/ValidatePruneTransformer.d.ts",'export declare namespace ValidatePruneTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/parsers/AssertParseTransformer.d.ts",'export declare namespace AssertParseTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/parsers/CreateAssertParseTransformer.d.ts",'export declare namespace CreateAssertParseTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/parsers/CreateIsParseTransformer.d.ts",'export declare namespace CreateIsParseTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/parsers/CreateValidateParseTransformer.d.ts",'export declare namespace CreateValidateParseTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/parsers/IsParseTransformer.d.ts",'export declare namespace IsParseTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/parsers/ValidateParseTransformer.d.ts",'export declare namespace ValidateParseTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/AssertStringifyTransformer.d.ts",'export declare namespace AssertStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.d.ts",'export declare namespace CreateAssertStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.d.ts",'export declare namespace CreateIsStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/CreateStringifyTransformer.d.ts",'export declare namespace CreateStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.d.ts",'export declare namespace CreateValidateStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/IsStringifyTransformer.d.ts",'export declare namespace IsStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/StringifyTransformer.d.ts",'export declare namespace StringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/stringifiers/ValidateStringifyTransformer.d.ts",'export declare namespace ValidateStringifyTransformer {\n const transform: (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/validators/AssertTransformer.d.ts",'export declare namespace AssertTransformer {\n const transform: (equals: boolean) => (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/validators/CreateAssertTransformer.d.ts",'export declare namespace CreateAssertTransformer {\n const transform: (equals: boolean) => (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/validators/CreateIsTransformer.d.ts",'export declare namespace CreateIsTransformer {\n const transform: (equals: boolean) => (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/validators/CreateValidateTransformer.d.ts",'export declare namespace CreateValidateTransformer {\n const transform: (equals: boolean) => (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/features/validators/IsTransformer.d.ts",'export declare namespace IsTransformer {\n const transform: (equals: boolean) => (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/features/validators/ValidateTransformer.d.ts",'export declare namespace ValidateTransformer {\n const transform: (equals: boolean) => (project: import("../../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;\n}\n'],["file:///node_modules/typia/lib/transformers/FileTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "./IProject";\nexport declare namespace FileTransformer {\n const transform: (project: IProject) => (context: ts.TransformationContext) => (file: ts.SourceFile) => ts.SourceFile;\n}\n'],["file:///node_modules/typia/lib/transformers/ImportTransformer.d.ts",'import ts from "typescript";\nexport declare namespace ImportTransformer {\n const transform: (from: string) => (to: string) => (context: ts.TransformationContext) => (file: ts.SourceFile) => ts.SourceFile;\n}\n'],["file:///node_modules/typia/lib/transformers/internal/GenericTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "../IProject";\nexport declare namespace GenericTransformer {\n const scalar: (method: string) => (programmer: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name: string) => ts.ArrowFunction) => (project: IProject) => (modulo: ts.LeftHandSideExpression) => (expression: ts.CallExpression) => ts.CallExpression;\n const factory: (method: string) => (programmer: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type, name: string) => ts.ArrowFunction) => (project: IProject) => (modulo: ts.LeftHandSideExpression) => (expression: ts.CallExpression) => ts.ArrowFunction;\n}\n'],["file:///node_modules/typia/lib/transformers/IProject.d.ts",'import ts from "typescript";\nimport { ITransformOptions } from "./ITransformOptions";\nexport interface IProject {\n program: ts.Program;\n compilerOptions: ts.CompilerOptions;\n checker: ts.TypeChecker;\n printer: ts.Printer;\n options: ITransformOptions;\n}\n'],["file:///node_modules/typia/lib/transformers/ITransformOptions.d.ts","export interface ITransformOptions {\n /**\n * Whether to validate finite number or not.\n *\n * If configured true, number typed values would be validated by Number.isNaN().\n *\n * However, whatever you configure, it would be ignored when marshaling or parsing.\n *\n * - when marshaling, always be true\n * - assertStringify()\n * - validateEncode()\n * - when parsing, always be false\n * - assertParse()\n * - isDecode()\n *\n * @default false\n */\n finite?: boolean;\n /**\n * Whether to validate finite number or not.\n *\n * If configured true, number typed values would be validated by Number.isFinite().\n *\n * However, whatever you configure, it can be ignored in below case.\n *\n * - when `finite` option is true, this option would be ignored\n * - when marshaling, always be true\n * - assertStringify()\n * - validateEncode()\n * - when parsing, always be false\n * - assertParse()\n * - isDecode()\n *\n * @default false\n */\n numeric?: boolean;\n /**\n * Whether to validate functional type or not.\n *\n * However, whatever you configure, it becomes false when marshaling or parsing.\n *\n * @default false\n */\n functional?: boolean;\n /**\n * Whether to check undefined value or not.\n *\n * JavaScript can assign `undefined` value to a specific property and it is an\n * issue when validating without allowing superfluous properties. Should undefined\n * value assigned superfluous property be allowed or not?\n *\n * Note that, this option only works on {@link equals} function. Other function\n * like {@link assertEquals} or {@link validateEquals} would ignore this option\n * value and always allow the `undefined` value.\n *\n * @default true\n */\n undefined?: boolean;\n}\n"],["file:///node_modules/typia/lib/transformers/NodeTransformer.d.ts",'import ts from "typescript";\nimport { IProject } from "./IProject";\nexport declare namespace NodeTransformer {\n const transform: (project: IProject) => (expression: ts.Node) => ts.Node;\n}\n'],["file:///node_modules/typia/lib/TypeGuardError.d.ts","export declare class TypeGuardError extends Error {\n readonly method: string;\n readonly path: string | undefined;\n readonly expected: string;\n readonly value: any;\n constructor(props: TypeGuardError.IProps);\n}\nexport declare namespace TypeGuardError {\n interface IProps {\n method: string;\n path?: string;\n expected: string;\n value: any;\n message?: string;\n }\n}\n"],["file:///node_modules/typia/lib/typings/Atomic.d.ts",'export declare namespace Atomic {\n type Type = boolean | number | string | bigint;\n type Literal = "boolean" | "integer" | "number" | "string" | "bigint";\n type Mapper = {\n boolean: boolean;\n integer: number;\n number: number;\n string: string;\n bigint: bigint;\n };\n}\n'],["file:///node_modules/typia/lib/typings/ClassProperties.d.ts",'import { OmitNever } from "./OmitNever";\nexport type ClassProperties = OmitNever<{\n [K in keyof T]: T[K] extends Function ? never : T[K];\n}>;\n'],["file:///node_modules/typia/lib/typings/Customizable.d.ts","export type Customizable = {\n number: number;\n string: string;\n bigint: bigint;\n};\n"],["file:///node_modules/typia/lib/typings/OmitNever.d.ts",'import { SpecialFields } from "./SpecialFields";\nexport type OmitNever = Omit>;\n'],["file:///node_modules/typia/lib/typings/SpecialFields.d.ts","export type SpecialFields = {\n [P in keyof Instance]: Instance[P] extends Target ? P : never;\n}[keyof Instance & string];\n"],["file:///node_modules/typia/lib/typings/Writable.d.ts",'import { ClassProperties } from "./ClassProperties";\nexport type Writable = {\n -readonly [P in keyof T]: T[P];\n};\nexport declare function Writable(elem: T): Writable>;\n'],["file:///node_modules/typia/lib/utils/ArrayUtil.d.ts","export declare namespace ArrayUtil {\n const has: (array: T[], pred: (elem: T) => boolean) => boolean;\n const add: (array: T[], value: T, pred?: (x: T, y: T) => boolean) => boolean;\n const set: (array: T[], value: T, key: (elem: T) => Key) => void;\n const take: (array: T[], pred: (elem: T) => boolean, init: () => T) => T;\n const repeat: (count: number, closure: (index: number, count: number) => T) => T[];\n const flat: (matrix: T[][]) => T[];\n}\n"],["file:///node_modules/typia/lib/utils/Escaper.d.ts","export declare namespace Escaper {\n const variable: (str: string) => boolean;\n const reserved: (str: string) => boolean;\n}\n"],["file:///node_modules/typia/lib/utils/MapUtil.d.ts","export declare namespace MapUtil {\n const take: (dict: Map) => (key: Key, generator: () => T) => T;\n}\n"],["file:///node_modules/typia/lib/utils/PatternUtil.d.ts",'export declare namespace PatternUtil {\n const fix: (str: string) => string;\n const escape: (str: string) => string;\n const NUMBER: string;\n const BOOLEAN = "true|false";\n const STRING = "(.*)";\n}\n'],["file:///node_modules/typia/lib/utils/RandomGenerator.d.ts","export {};\n"],["file:///node_modules/typia/lib/utils/Singleton.d.ts","export declare class Singleton {\n private readonly closure_;\n private value_;\n constructor(closure: (...args: Args) => T);\n get(...args: Args): T;\n}\n"],["file:///node_modules/typescript/lib/lib.d.ts",'/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the "License"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// \n\n/// \n/// \n/// \n/// \n'],["file:///node_modules/typescript/lib/lib.decorators.d.ts",'/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the "License"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// \n\n/**\n * The decorator context types provided to class element decorators.\n */\ntype ClassMemberDecoratorContext =\n | ClassMethodDecoratorContext\n | ClassGetterDecoratorContext\n | ClassSetterDecoratorContext\n | ClassFieldDecoratorContext\n | ClassAccessorDecoratorContext\n ;\n\n/**\n * The decorator context types provided to any decorator.\n */\ntype DecoratorContext =\n | ClassDecoratorContext\n | ClassMemberDecoratorContext\n ;\n\n/**\n * Context provided to a class decorator.\n * @template Class The type of the decorated class associated with this context.\n */\ninterface ClassDecoratorContext<\n Class extends abstract new (...args: any) => any = abstract new (...args: any) => any,\n> {\n /** The kind of element that was decorated. */\n readonly kind: "class";\n\n /** The name of the decorated class. */\n readonly name: string | undefined;\n\n /**\n * Adds a callback to be invoked after the class definition has been finalized.\n *\n * @example\n * ```ts\n * function customElement(name: string): ClassDecoratorFunction {\n * return (target, context) => {\n * context.addInitializer(function () {\n * customElements.define(name, this);\n * });\n * }\n * }\n *\n * @customElement("my-element")\n * class MyElement {}\n * ```\n */\n addInitializer(initializer: (this: Class) => void): void;\n}\n\n/**\n * Context provided to a class method decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of the decorated class method.\n */\ninterface ClassMethodDecoratorContext<\n This = unknown,\n Value extends (this: This, ...args: any) => any = (this: This, ...args: any) => any,\n> {\n /** The kind of class element that was decorated. */\n readonly kind: "method";\n\n /** The name of the decorated class element. */\n readonly name: string | symbol;\n\n /** A value indicating whether the class element is a static (`true`) or instance (`false`) element. */\n readonly static: boolean;\n\n /** A value indicating whether the class element has a private name. */\n readonly private: boolean;\n\n /** An object that can be used to access the current value of the class element at runtime. */\n readonly access: {\n /**\n * Determines whether an object has a property with the same name as the decorated element.\n */\n has(object: This): boolean;\n /**\n * Gets the current value of the method from the provided object.\n *\n * @example\n * let fn = context.access.get(instance);\n */\n get(object: This): Value;\n };\n\n /**\n * Adds a callback to be invoked either before static initializers are run (when\n * decorating a `static` element), or before instance initializers are run (when\n * decorating a non-`static` element).\n *\n * @example\n * ```ts\n * const bound: ClassMethodDecoratorFunction = (value, context) {\n * if (context.private) throw new TypeError("Not supported on private methods.");\n * context.addInitializer(function () {\n * this[context.name] = this[context.name].bind(this);\n * });\n * }\n *\n * class C {\n * message = "Hello";\n *\n * @bound\n * m() {\n * console.log(this.message);\n * }\n * }\n * ```\n */\n addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Context provided to a class getter decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The property type of the decorated class getter.\n */\ninterface ClassGetterDecoratorContext<\n This = unknown,\n Value = unknown,\n> {\n /** The kind of class element that was decorated. */\n readonly kind: "getter";\n\n /** The name of the decorated class element. */\n readonly name: string | symbol;\n\n /** A value indicating whether the class element is a static (`true`) or instance (`false`) element. */\n readonly static: boolean;\n\n /** A value indicating whether the class element has a private name. */\n readonly private: boolean;\n\n /** An object that can be used to access the current value of the class element at runtime. */\n readonly access: {\n /**\n * Determines whether an object has a property with the same name as the decorated element.\n */\n has(object: This): boolean;\n /**\n * Invokes the getter on the provided object.\n *\n * @example\n * let value = context.access.get(instance);\n */\n get(object: This): Value;\n };\n\n /**\n * Adds a callback to be invoked either before static initializers are run (when\n * decorating a `static` element), or before instance initializers are run (when\n * decorating a non-`static` element).\n */\n addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Context provided to a class setter decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of the decorated class setter.\n */\ninterface ClassSetterDecoratorContext<\n This = unknown,\n Value = unknown,\n> {\n /** The kind of class element that was decorated. */\n readonly kind: "setter";\n\n /** The name of the decorated class element. */\n readonly name: string | symbol;\n\n /** A value indicating whether the class element is a static (`true`) or instance (`false`) element. */\n readonly static: boolean;\n\n /** A value indicating whether the class element has a private name. */\n readonly private: boolean;\n\n /** An object that can be used to access the current value of the class element at runtime. */\n readonly access: {\n /**\n * Determines whether an object has a property with the same name as the decorated element.\n */\n has(object: This): boolean;\n /**\n * Invokes the setter on the provided object.\n *\n * @example\n * context.access.set(instance, value);\n */\n set(object: This, value: Value): void;\n };\n\n /**\n * Adds a callback to be invoked either before static initializers are run (when\n * decorating a `static` element), or before instance initializers are run (when\n * decorating a non-`static` element).\n */\n addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Context provided to a class `accessor` field decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of decorated class field.\n */\ninterface ClassAccessorDecoratorContext<\n This = unknown,\n Value = unknown,\n> {\n /** The kind of class element that was decorated. */\n readonly kind: "accessor";\n\n /** The name of the decorated class element. */\n readonly name: string | symbol;\n\n /** A value indicating whether the class element is a static (`true`) or instance (`false`) element. */\n readonly static: boolean;\n\n /** A value indicating whether the class element has a private name. */\n readonly private: boolean;\n\n /** An object that can be used to access the current value of the class element at runtime. */\n readonly access: {\n /**\n * Determines whether an object has a property with the same name as the decorated element.\n */\n has(object: This): boolean;\n\n /**\n * Invokes the getter on the provided object.\n *\n * @example\n * let value = context.access.get(instance);\n */\n get(object: This): Value;\n\n /**\n * Invokes the setter on the provided object.\n *\n * @example\n * context.access.set(instance, value);\n */\n set(object: This, value: Value): void;\n };\n\n /**\n * Adds a callback to be invoked either before static initializers are run (when\n * decorating a `static` element), or before instance initializers are run (when\n * decorating a non-`static` element).\n */\n addInitializer(initializer: (this: This) => void): void;\n}\n\n/**\n * Describes the target provided to class `accessor` field decorators.\n * @template This The `this` type to which the target applies.\n * @template Value The property type for the class `accessor` field.\n */\ninterface ClassAccessorDecoratorTarget {\n /**\n * Invokes the getter that was defined prior to decorator application.\n *\n * @example\n * let value = target.get.call(instance);\n */\n get(this: This): Value;\n\n /**\n * Invokes the setter that was defined prior to decorator application.\n *\n * @example\n * target.set.call(instance, value);\n */\n set(this: This, value: Value): void;\n}\n\n/**\n * Describes the allowed return value from a class `accessor` field decorator.\n * @template This The `this` type to which the target applies.\n * @template Value The property type for the class `accessor` field.\n */\ninterface ClassAccessorDecoratorResult {\n /**\n * An optional replacement getter function. If not provided, the existing getter function is used instead.\n */\n get?(this: This): Value;\n\n /**\n * An optional replacement setter function. If not provided, the existing setter function is used instead.\n */\n set?(this: This, value: Value): void;\n\n /**\n * An optional initializer mutator that is invoked when the underlying field initializer is evaluated.\n * @param value The incoming initializer value.\n * @returns The replacement initializer value.\n */\n init?(this: This, value: Value): Value;\n}\n\n/**\n * Context provided to a class field decorator.\n * @template This The type on which the class element will be defined. For a static class element, this will be\n * the type of the constructor. For a non-static class element, this will be the type of the instance.\n * @template Value The type of the decorated class field.\n */\ninterface ClassFieldDecoratorContext<\n This = unknown,\n Value = unknown,\n> {\n /** The kind of class element that was decorated. */\n readonly kind: "field";\n\n /** The name of the decorated class element. */\n readonly name: string | symbol;\n\n /** A value indicating whether the class element is a static (`true`) or instance (`false`) element. */\n readonly static: boolean;\n\n /** A value indicating whether the class element has a private name. */\n readonly private: boolean;\n\n /** An object that can be used to access the current value of the class element at runtime. */\n readonly access: {\n /**\n * Determines whether an object has a property with the same name as the decorated element.\n */\n has(object: This): boolean;\n\n /**\n * Gets the value of the field on the provided object.\n */\n get(object: This): Value;\n\n /**\n * Sets the value of the field on the provided object.\n */\n set(object: This, value: Value): void;\n };\n\n /**\n * Adds a callback to be invoked either before static initializers are run (when\n * decorating a `static` element), or before instance initializers are run (when\n * decorating a non-`static` element).\n */\n addInitializer(initializer: (this: This) => void): void;\n}\n'],["file:///node_modules/typescript/lib/lib.decorators.legacy.d.ts",'/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the "License"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// \n\ndeclare type ClassDecorator = (target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = (target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor) => TypedPropertyDescriptor | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol | undefined, parameterIndex: number) => void;\n'],["file:///node_modules/typescript/lib/lib.dom.d.ts",'/*! *****************************************************************************\nCopyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the "License"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\n\n\n/// \n\n/////////////////////////////\n/// Window APIs\n/////////////////////////////\n\ninterface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n signal?: AbortSignal;\n}\n\ninterface AesCbcParams extends Algorithm {\n iv: BufferSource;\n}\n\ninterface AesCtrParams extends Algorithm {\n counter: BufferSource;\n length: number;\n}\n\ninterface AesDerivedKeyParams extends Algorithm {\n length: number;\n}\n\ninterface AesGcmParams extends Algorithm {\n additionalData?: BufferSource;\n iv: BufferSource;\n tagLength?: number;\n}\n\ninterface AesKeyAlgorithm extends KeyAlgorithm {\n length: number;\n}\n\ninterface AesKeyGenParams extends Algorithm {\n length: number;\n}\n\ninterface Algorithm {\n name: string;\n}\n\ninterface AnalyserOptions extends AudioNodeOptions {\n fftSize?: number;\n maxDecibels?: number;\n minDecibels?: number;\n smoothingTimeConstant?: number;\n}\n\ninterface AnimationEventInit extends EventInit {\n animationName?: string;\n elapsedTime?: number;\n pseudoElement?: string;\n}\n\ninterface AnimationPlaybackEventInit extends EventInit {\n currentTime?: CSSNumberish | null;\n timelineTime?: CSSNumberish | null;\n}\n\ninterface AssignedNodesOptions {\n flatten?: boolean;\n}\n\ninterface AudioBufferOptions {\n length: number;\n numberOfChannels?: number;\n sampleRate: number;\n}\n\ninterface AudioBufferSourceOptions {\n buffer?: AudioBuffer | null;\n detune?: number;\n loop?: boolean;\n loopEnd?: number;\n loopStart?: number;\n playbackRate?: number;\n}\n\ninterface AudioConfiguration {\n bitrate?: number;\n channels?: string;\n contentType: string;\n samplerate?: number;\n spatialRendering?: boolean;\n}\n\ninterface AudioContextOptions {\n latencyHint?: AudioContextLatencyCategory | number;\n sampleRate?: number;\n}\n\ninterface AudioNodeOptions {\n channelCount?: number;\n channelCountMode?: ChannelCountMode;\n channelInterpretation?: ChannelInterpretation;\n}\n\ninterface AudioProcessingEventInit extends EventInit {\n inputBuffer: AudioBuffer;\n outputBuffer: AudioBuffer;\n playbackTime: number;\n}\n\ninterface AudioTimestamp {\n contextTime?: number;\n performanceTime?: DOMHighResTimeStamp;\n}\n\ninterface AudioWorkletNodeOptions extends AudioNodeOptions {\n numberOfInputs?: number;\n numberOfOutputs?: number;\n outputChannelCount?: number[];\n parameterData?: Record;\n processorOptions?: any;\n}\n\ninterface AuthenticationExtensionsClientInputs {\n appid?: string;\n credProps?: boolean;\n hmacCreateSecret?: boolean;\n}\n\ninterface AuthenticationExtensionsClientOutputs {\n appid?: boolean;\n credProps?: CredentialPropertiesOutput;\n hmacCreateSecret?: boolean;\n}\n\ninterface AuthenticatorSelectionCriteria {\n authenticatorAttachment?: AuthenticatorAttachment;\n requireResidentKey?: boolean;\n residentKey?: ResidentKeyRequirement;\n userVerification?: UserVerificationRequirement;\n}\n\ninterface AvcEncoderConfig {\n format?: AvcBitstreamFormat;\n}\n\ninterface BiquadFilterOptions extends AudioNodeOptions {\n Q?: number;\n detune?: number;\n frequency?: number;\n gain?: number;\n type?: BiquadFilterType;\n}\n\ninterface BlobEventInit {\n data: Blob;\n timecode?: DOMHighResTimeStamp;\n}\n\ninterface BlobPropertyBag {\n endings?: EndingType;\n type?: string;\n}\n\ninterface CSSMatrixComponentOptions {\n is2D?: boolean;\n}\n\ninterface CSSNumericType {\n angle?: number;\n flex?: number;\n frequency?: number;\n length?: number;\n percent?: number;\n percentHint?: CSSNumericBaseType;\n resolution?: number;\n time?: number;\n}\n\ninterface CSSStyleSheetInit {\n baseURL?: string;\n disabled?: boolean;\n media?: MediaList | string;\n}\n\ninterface CacheQueryOptions {\n ignoreMethod?: boolean;\n ignoreSearch?: boolean;\n ignoreVary?: boolean;\n}\n\ninterface CanvasRenderingContext2DSettings {\n alpha?: boolean;\n colorSpace?: PredefinedColorSpace;\n desynchronized?: boolean;\n willReadFrequently?: boolean;\n}\n\ninterface ChannelMergerOptions extends AudioNodeOptions {\n numberOfInputs?: number;\n}\n\ninterface ChannelSplitterOptions extends AudioNodeOptions {\n numberOfOutputs?: number;\n}\n\ninterface CheckVisibilityOptions {\n checkOpacity?: boolean;\n checkVisibilityCSS?: boolean;\n}\n\ninterface ClientQueryOptions {\n includeUncontrolled?: boolean;\n type?: ClientTypes;\n}\n\ninterface ClipboardEventInit extends EventInit {\n clipboardData?: DataTransfer | null;\n}\n\ninterface ClipboardItemOptions {\n presentationStyle?: PresentationStyle;\n}\n\ninterface CloseEventInit extends EventInit {\n code?: number;\n reason?: string;\n wasClean?: boolean;\n}\n\ninterface CompositionEventInit extends UIEventInit {\n data?: string;\n}\n\ninterface ComputedEffectTiming extends EffectTiming {\n activeDuration?: CSSNumberish;\n currentIteration?: number | null;\n endTime?: CSSNumberish;\n localTime?: CSSNumberish | null;\n progress?: number | null;\n startTime?: CSSNumberish;\n}\n\ninterface ComputedKeyframe {\n composite: CompositeOperationOrAuto;\n computedOffset: number;\n easing: string;\n offset: number | null;\n [property: string]: string | number | null | undefined;\n}\n\ninterface ConstantSourceOptions {\n offset?: number;\n}\n\ninterface ConstrainBooleanParameters {\n exact?: boolean;\n ideal?: boolean;\n}\n\ninterface ConstrainDOMStringParameters {\n exact?: string | string[];\n ideal?: string | string[];\n}\n\ninterface ConstrainDoubleRange extends DoubleRange {\n exact?: number;\n ideal?: number;\n}\n\ninterface ConstrainULongRange extends ULongRange {\n exact?: number;\n ideal?: number;\n}\n\ninterface ConvolverOptions extends AudioNodeOptions {\n buffer?: AudioBuffer | null;\n disableNormalization?: boolean;\n}\n\ninterface CredentialCreationOptions {\n publicKey?: PublicKeyCredentialCreationOptions;\n signal?: AbortSignal;\n}\n\ninterface CredentialPropertiesOutput {\n rk?: boolean;\n}\n\ninterface CredentialRequestOptions {\n mediation?: CredentialMediationRequirement;\n publicKey?: PublicKeyCredentialRequestOptions;\n signal?: AbortSignal;\n}\n\ninterface CryptoKeyPair {\n privateKey: CryptoKey;\n publicKey: CryptoKey;\n}\n\ninterface CustomEventInit extends EventInit {\n detail?: T;\n}\n\ninterface DOMMatrix2DInit {\n a?: number;\n b?: number;\n c?: number;\n d?: number;\n e?: number;\n f?: number;\n m11?: number;\n m12?: number;\n m21?: number;\n m22?: number;\n m41?: number;\n m42?: number;\n}\n\ninterface DOMMatrixInit extends DOMMatrix2DInit {\n is2D?: boolean;\n m13?: number;\n m14?: number;\n m23?: number;\n m24?: number;\n m31?: number;\n m32?: number;\n m33?: number;\n m34?: number;\n m43?: number;\n m44?: number;\n}\n\ninterface DOMPointInit {\n w?: number;\n x?: number;\n y?: number;\n z?: number;\n}\n\ninterface DOMQuadInit {\n p1?: DOMPointInit;\n p2?: DOMPointInit;\n p3?: DOMPointInit;\n p4?: DOMPointInit;\n}\n\ninterface DOMRectInit {\n height?: number;\n width?: number;\n x?: number;\n y?: number;\n}\n\ninterface DelayOptions extends AudioNodeOptions {\n delayTime?: number;\n maxDelayTime?: number;\n}\n\ninterface DeviceMotionEventAccelerationInit {\n x?: number | null;\n y?: number | null;\n z?: number | null;\n}\n\ninterface DeviceMotionEventInit extends EventInit {\n acceleration?: DeviceMotionEventAccelerationInit;\n accelerationIncludingGravity?: DeviceMotionEventAccelerationInit;\n interval?: number;\n rotationRate?: DeviceMotionEventRotationRateInit;\n}\n\ninterface DeviceMotionEventRotationRateInit {\n alpha?: number | null;\n beta?: number | null;\n gamma?: number | null;\n}\n\ninterface DeviceOrientationEventInit extends EventInit {\n absolute?: boolean;\n alpha?: number | null;\n beta?: number | null;\n gamma?: number | null;\n}\n\ninterface DisplayMediaStreamOptions {\n audio?: boolean | MediaTrackConstraints;\n video?: boolean | MediaTrackConstraints;\n}\n\ninterface DocumentTimelineOptions {\n originTime?: DOMHighResTimeStamp;\n}\n\ninterface DoubleRange {\n max?: number;\n min?: number;\n}\n\ninterface DragEventInit extends MouseEventInit {\n dataTransfer?: DataTransfer | null;\n}\n\ninterface DynamicsCompressorOptions extends AudioNodeOptions {\n attack?: number;\n knee?: number;\n ratio?: number;\n release?: number;\n threshold?: number;\n}\n\ninterface EcKeyAlgorithm extends KeyAlgorithm {\n namedCurve: NamedCurve;\n}\n\ninterface EcKeyGenParams extends Algorithm {\n namedCurve: NamedCurve;\n}\n\ninterface EcKeyImportParams extends Algorithm {\n namedCurve: NamedCurve;\n}\n\ninterface EcdhKeyDeriveParams extends Algorithm {\n public: CryptoKey;\n}\n\ninterface EcdsaParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n}\n\ninterface EffectTiming {\n delay?: number;\n direction?: PlaybackDirection;\n duration?: number | CSSNumericValue | string;\n easing?: string;\n endDelay?: number;\n fill?: FillMode;\n iterationStart?: number;\n iterations?: number;\n playbackRate?: number;\n}\n\ninterface ElementCreationOptions {\n is?: string;\n}\n\ninterface ElementDefinitionOptions {\n extends?: string;\n}\n\ninterface EncodedVideoChunkInit {\n data: BufferSource;\n duration?: number;\n timestamp: number;\n type: EncodedVideoChunkType;\n}\n\ninterface EncodedVideoChunkMetadata {\n decoderConfig?: VideoDecoderConfig;\n}\n\ninterface ErrorEventInit extends EventInit {\n colno?: number;\n error?: any;\n filename?: string;\n lineno?: number;\n message?: string;\n}\n\ninterface EventInit {\n bubbles?: boolean;\n cancelable?: boolean;\n composed?: boolean;\n}\n\ninterface EventListenerOptions {\n capture?: boolean;\n}\n\ninterface EventModifierInit extends UIEventInit {\n altKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n modifierAltGraph?: boolean;\n modifierCapsLock?: boolean;\n modifierFn?: boolean;\n modifierFnLock?: boolean;\n modifierHyper?: boolean;\n modifierNumLock?: boolean;\n modifierScrollLock?: boolean;\n modifierSuper?: boolean;\n modifierSymbol?: boolean;\n modifierSymbolLock?: boolean;\n shiftKey?: boolean;\n}\n\ninterface EventSourceInit {\n withCredentials?: boolean;\n}\n\ninterface FilePropertyBag extends BlobPropertyBag {\n lastModified?: number;\n}\n\ninterface FileSystemCreateWritableOptions {\n keepExistingData?: boolean;\n}\n\ninterface FileSystemFlags {\n create?: boolean;\n exclusive?: boolean;\n}\n\ninterface FileSystemGetDirectoryOptions {\n create?: boolean;\n}\n\ninterface FileSystemGetFileOptions {\n create?: boolean;\n}\n\ninterface FileSystemRemoveOptions {\n recursive?: boolean;\n}\n\ninterface FocusEventInit extends UIEventInit {\n relatedTarget?: EventTarget | null;\n}\n\ninterface FocusOptions {\n preventScroll?: boolean;\n}\n\ninterface FontFaceDescriptors {\n ascentOverride?: string;\n descentOverride?: string;\n display?: FontDisplay;\n featureSettings?: string;\n lineGapOverride?: string;\n stretch?: string;\n style?: string;\n unicodeRange?: string;\n variant?: string;\n weight?: string;\n}\n\ninterface FontFaceSetLoadEventInit extends EventInit {\n fontfaces?: FontFace[];\n}\n\ninterface FormDataEventInit extends EventInit {\n formData: FormData;\n}\n\ninterface FullscreenOptions {\n navigationUI?: FullscreenNavigationUI;\n}\n\ninterface GainOptions extends AudioNodeOptions {\n gain?: number;\n}\n\ninterface GamepadEffectParameters {\n duration?: number;\n startDelay?: number;\n strongMagnitude?: number;\n weakMagnitude?: number;\n}\n\ninterface GamepadEventInit extends EventInit {\n gamepad: Gamepad;\n}\n\ninterface GetAnimationsOptions {\n subtree?: boolean;\n}\n\ninterface GetNotificationOptions {\n tag?: string;\n}\n\ninterface GetRootNodeOptions {\n composed?: boolean;\n}\n\ninterface HashChangeEventInit extends EventInit {\n newURL?: string;\n oldURL?: string;\n}\n\ninterface HkdfParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n info: BufferSource;\n salt: BufferSource;\n}\n\ninterface HmacImportParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n length?: number;\n}\n\ninterface HmacKeyAlgorithm extends KeyAlgorithm {\n hash: KeyAlgorithm;\n length: number;\n}\n\ninterface HmacKeyGenParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n length?: number;\n}\n\ninterface IDBDatabaseInfo {\n name?: string;\n version?: number;\n}\n\ninterface IDBIndexParameters {\n multiEntry?: boolean;\n unique?: boolean;\n}\n\ninterface IDBObjectStoreParameters {\n autoIncrement?: boolean;\n keyPath?: string | string[] | null;\n}\n\ninterface IDBTransactionOptions {\n durability?: IDBTransactionDurability;\n}\n\ninterface IDBVersionChangeEventInit extends EventInit {\n newVersion?: number | null;\n oldVersion?: number;\n}\n\ninterface IIRFilterOptions extends AudioNodeOptions {\n feedback: number[];\n feedforward: number[];\n}\n\ninterface IdleRequestOptions {\n timeout?: number;\n}\n\ninterface ImageBitmapOptions {\n colorSpaceConversion?: ColorSpaceConversion;\n imageOrientation?: ImageOrientation;\n premultiplyAlpha?: PremultiplyAlpha;\n resizeHeight?: number;\n resizeQuality?: ResizeQuality;\n resizeWidth?: number;\n}\n\ninterface ImageBitmapRenderingContextSettings {\n alpha?: boolean;\n}\n\ninterface ImageDataSettings {\n colorSpace?: PredefinedColorSpace;\n}\n\ninterface ImageEncodeOptions {\n quality?: number;\n type?: string;\n}\n\ninterface ImportMeta {\n url: string;\n}\n\ninterface InputEventInit extends UIEventInit {\n data?: string | null;\n dataTransfer?: DataTransfer | null;\n inputType?: string;\n isComposing?: boolean;\n targetRanges?: StaticRange[];\n}\n\ninterface IntersectionObserverEntryInit {\n boundingClientRect: DOMRectInit;\n intersectionRatio: number;\n intersectionRect: DOMRectInit;\n isIntersecting: boolean;\n rootBounds: DOMRectInit | null;\n target: Element;\n time: DOMHighResTimeStamp;\n}\n\ninterface IntersectionObserverInit {\n root?: Element | Document | null;\n rootMargin?: string;\n threshold?: number | number[];\n}\n\ninterface JsonWebKey {\n alg?: string;\n crv?: string;\n d?: string;\n dp?: string;\n dq?: string;\n e?: string;\n ext?: boolean;\n k?: string;\n key_ops?: string[];\n kty?: string;\n n?: string;\n oth?: RsaOtherPrimesInfo[];\n p?: string;\n q?: string;\n qi?: string;\n use?: string;\n x?: string;\n y?: string;\n}\n\ninterface KeyAlgorithm {\n name: string;\n}\n\ninterface KeyboardEventInit extends EventModifierInit {\n /** @deprecated */\n charCode?: number;\n code?: string;\n isComposing?: boolean;\n key?: string;\n /** @deprecated */\n keyCode?: number;\n location?: number;\n repeat?: boolean;\n}\n\ninterface Keyframe {\n composite?: CompositeOperationOrAuto;\n easing?: string;\n offset?: number | null;\n [property: string]: string | number | null | undefined;\n}\n\ninterface KeyframeAnimationOptions extends KeyframeEffectOptions {\n id?: string;\n}\n\ninterface KeyframeEffectOptions extends EffectTiming {\n composite?: CompositeOperation;\n iterationComposite?: IterationCompositeOperation;\n pseudoElement?: string | null;\n}\n\ninterface LockInfo {\n clientId?: string;\n mode?: LockMode;\n name?: string;\n}\n\ninterface LockManagerSnapshot {\n held?: LockInfo[];\n pending?: LockInfo[];\n}\n\ninterface LockOptions {\n ifAvailable?: boolean;\n mode?: LockMode;\n signal?: AbortSignal;\n steal?: boolean;\n}\n\ninterface MIDIConnectionEventInit extends EventInit {\n port?: MIDIPort;\n}\n\ninterface MIDIMessageEventInit extends EventInit {\n data?: Uint8Array;\n}\n\ninterface MIDIOptions {\n software?: boolean;\n sysex?: boolean;\n}\n\ninterface MediaCapabilitiesDecodingInfo extends MediaCapabilitiesInfo {\n configuration?: MediaDecodingConfiguration;\n}\n\ninterface MediaCapabilitiesEncodingInfo extends MediaCapabilitiesInfo {\n configuration?: MediaEncodingConfiguration;\n}\n\ninterface MediaCapabilitiesInfo {\n powerEfficient: boolean;\n smooth: boolean;\n supported: boolean;\n}\n\ninterface MediaConfiguration {\n audio?: AudioConfiguration;\n video?: VideoConfiguration;\n}\n\ninterface MediaDecodingConfiguration extends MediaConfiguration {\n type: MediaDecodingType;\n}\n\ninterface MediaElementAudioSourceOptions {\n mediaElement: HTMLMediaElement;\n}\n\ninterface MediaEncodingConfiguration extends MediaConfiguration {\n type: MediaEncodingType;\n}\n\ninterface MediaEncryptedEventInit extends EventInit {\n initData?: ArrayBuffer | null;\n initDataType?: string;\n}\n\ninterface MediaImage {\n sizes?: string;\n src: string;\n type?: string;\n}\n\ninterface MediaKeyMessageEventInit extends EventInit {\n message: ArrayBuffer;\n messageType: MediaKeyMessageType;\n}\n\ninterface MediaKeySystemConfiguration {\n audioCapabilities?: MediaKeySystemMediaCapability[];\n distinctiveIdentifier?: MediaKeysRequirement;\n initDataTypes?: string[];\n label?: string;\n persistentState?: MediaKeysRequirement;\n sessionTypes?: string[];\n videoCapabilities?: MediaKeySystemMediaCapability[];\n}\n\ninterface MediaKeySystemMediaCapability {\n contentType?: string;\n encryptionScheme?: string | null;\n robustness?: string;\n}\n\ninterface MediaMetadataInit {\n album?: string;\n artist?: string;\n artwork?: MediaImage[];\n title?: string;\n}\n\ninterface MediaPositionState {\n duration?: number;\n playbackRate?: number;\n position?: number;\n}\n\ninterface MediaQueryListEventInit extends EventInit {\n matches?: boolean;\n media?: string;\n}\n\ninterface MediaRecorderOptions {\n audioBitsPerSecond?: number;\n bitsPerSecond?: number;\n mimeType?: string;\n videoBitsPerSecond?: number;\n}\n\ninterface MediaSessionActionDetails {\n action: MediaSessionAction;\n fastSeek?: boolean;\n seekOffset?: number;\n seekTime?: number;\n}\n\ninterface MediaStreamAudioSourceOptions {\n mediaStream: MediaStream;\n}\n\ninterface MediaStreamConstraints {\n audio?: boolean | MediaTrackConstraints;\n peerIdentity?: string;\n preferCurrentTab?: boolean;\n video?: boolean | MediaTrackConstraints;\n}\n\ninterface MediaStreamTrackEventInit extends EventInit {\n track: MediaStreamTrack;\n}\n\ninterface MediaTrackCapabilities {\n aspectRatio?: DoubleRange;\n autoGainControl?: boolean[];\n channelCount?: ULongRange;\n deviceId?: string;\n displaySurface?: string;\n echoCancellation?: boolean[];\n facingMode?: string[];\n frameRate?: DoubleRange;\n groupId?: string;\n height?: ULongRange;\n noiseSuppression?: boolean[];\n sampleRate?: ULongRange;\n sampleSize?: ULongRange;\n width?: ULongRange;\n}\n\ninterface MediaTrackConstraintSet {\n aspectRatio?: ConstrainDouble;\n autoGainControl?: ConstrainBoolean;\n channelCount?: ConstrainULong;\n deviceId?: ConstrainDOMString;\n displaySurface?: ConstrainDOMString;\n echoCancellation?: ConstrainBoolean;\n facingMode?: ConstrainDOMString;\n frameRate?: ConstrainDouble;\n groupId?: ConstrainDOMString;\n height?: ConstrainULong;\n noiseSuppression?: ConstrainBoolean;\n sampleRate?: ConstrainULong;\n sampleSize?: ConstrainULong;\n width?: ConstrainULong;\n}\n\ninterface MediaTrackConstraints extends MediaTrackConstraintSet {\n advanced?: MediaTrackConstraintSet[];\n}\n\ninterface MediaTrackSettings {\n aspectRatio?: number;\n autoGainControl?: boolean;\n channelCount?: number;\n deviceId?: string;\n displaySurface?: string;\n echoCancellation?: boolean;\n facingMode?: string;\n frameRate?: number;\n groupId?: string;\n height?: number;\n noiseSuppression?: boolean;\n sampleRate?: number;\n sampleSize?: number;\n width?: number;\n}\n\ninterface MediaTrackSupportedConstraints {\n aspectRatio?: boolean;\n autoGainControl?: boolean;\n channelCount?: boolean;\n deviceId?: boolean;\n displaySurface?: boolean;\n echoCancellation?: boolean;\n facingMode?: boolean;\n frameRate?: boolean;\n groupId?: boolean;\n height?: boolean;\n noiseSuppression?: boolean;\n sampleRate?: boolean;\n sampleSize?: boolean;\n width?: boolean;\n}\n\ninterface MessageEventInit extends EventInit {\n data?: T;\n lastEventId?: string;\n origin?: string;\n ports?: MessagePort[];\n source?: MessageEventSource | null;\n}\n\ninterface MouseEventInit extends EventModifierInit {\n button?: number;\n buttons?: number;\n clientX?: number;\n clientY?: number;\n movementX?: number;\n movementY?: number;\n relatedTarget?: EventTarget | null;\n screenX?: number;\n screenY?: number;\n}\n\ninterface MultiCacheQueryOptions extends CacheQueryOptions {\n cacheName?: string;\n}\n\ninterface MutationObserverInit {\n /** Set to a list of attribute local names (without namespace) if not all attribute mutations need to be observed and attributes is true or omitted. */\n attributeFilter?: string[];\n /** Set to true if attributes is true or omitted and target\'s attribute value before the mutation needs to be recorded. */\n attributeOldValue?: boolean;\n /** Set to true if mutations to target\'s attributes are to be observed. Can be omitted if attributeOldValue or attributeFilter is specified. */\n attributes?: boolean;\n /** Set to true if mutations to target\'s data are to be observed. Can be omitted if characterDataOldValue is specified. */\n characterData?: boolean;\n /** Set to true if characterData is set to true or omitted and target\'s data before the mutation needs to be recorded. */\n characterDataOldValue?: boolean;\n /** Set to true if mutations to target\'s children are to be observed. */\n childList?: boolean;\n /** Set to true if mutations to not just target, but also target\'s descendants are to be observed. */\n subtree?: boolean;\n}\n\ninterface NavigationPreloadState {\n enabled?: boolean;\n headerValue?: string;\n}\n\ninterface NotificationAction {\n action: string;\n icon?: string;\n title: string;\n}\n\ninterface NotificationOptions {\n actions?: NotificationAction[];\n badge?: string;\n body?: string;\n data?: any;\n dir?: NotificationDirection;\n icon?: string;\n image?: string;\n lang?: string;\n renotify?: boolean;\n requireInteraction?: boolean;\n silent?: boolean;\n tag?: string;\n timestamp?: EpochTimeStamp;\n vibrate?: VibratePattern;\n}\n\ninterface OfflineAudioCompletionEventInit extends EventInit {\n renderedBuffer: AudioBuffer;\n}\n\ninterface OfflineAudioContextOptions {\n length: number;\n numberOfChannels?: number;\n sampleRate: number;\n}\n\ninterface OptionalEffectTiming {\n delay?: number;\n direction?: PlaybackDirection;\n duration?: number | string;\n easing?: string;\n endDelay?: number;\n fill?: FillMode;\n iterationStart?: number;\n iterations?: number;\n playbackRate?: number;\n}\n\ninterface OscillatorOptions extends AudioNodeOptions {\n detune?: number;\n frequency?: number;\n periodicWave?: PeriodicWave;\n type?: OscillatorType;\n}\n\ninterface PageTransitionEventInit extends EventInit {\n persisted?: boolean;\n}\n\ninterface PannerOptions extends AudioNodeOptions {\n coneInnerAngle?: number;\n coneOuterAngle?: number;\n coneOuterGain?: number;\n distanceModel?: DistanceModelType;\n maxDistance?: number;\n orientationX?: number;\n orientationY?: number;\n orientationZ?: number;\n panningModel?: PanningModelType;\n positionX?: number;\n positionY?: number;\n positionZ?: number;\n refDistance?: number;\n rolloffFactor?: number;\n}\n\ninterface PaymentCurrencyAmount {\n currency: string;\n value: string;\n}\n\ninterface PaymentDetailsBase {\n displayItems?: PaymentItem[];\n modifiers?: PaymentDetailsModifier[];\n}\n\ninterface PaymentDetailsInit extends PaymentDetailsBase {\n id?: string;\n total: PaymentItem;\n}\n\ninterface PaymentDetailsModifier {\n additionalDisplayItems?: PaymentItem[];\n data?: any;\n supportedMethods: string;\n total?: PaymentItem;\n}\n\ninterface PaymentDetailsUpdate extends PaymentDetailsBase {\n paymentMethodErrors?: any;\n total?: PaymentItem;\n}\n\ninterface PaymentItem {\n amount: PaymentCurrencyAmount;\n label: string;\n pending?: boolean;\n}\n\ninterface PaymentMethodChangeEventInit extends PaymentRequestUpdateEventInit {\n methodDetails?: any;\n methodName?: string;\n}\n\ninterface PaymentMethodData {\n data?: any;\n supportedMethods: string;\n}\n\ninterface PaymentRequestUpdateEventInit extends EventInit {\n}\n\ninterface PaymentValidationErrors {\n error?: string;\n paymentMethod?: any;\n}\n\ninterface Pbkdf2Params extends Algorithm {\n hash: HashAlgorithmIdentifier;\n iterations: number;\n salt: BufferSource;\n}\n\ninterface PerformanceMarkOptions {\n detail?: any;\n startTime?: DOMHighResTimeStamp;\n}\n\ninterface PerformanceMeasureOptions {\n detail?: any;\n duration?: DOMHighResTimeStamp;\n end?: string | DOMHighResTimeStamp;\n start?: string | DOMHighResTimeStamp;\n}\n\ninterface PerformanceObserverInit {\n buffered?: boolean;\n entryTypes?: string[];\n type?: string;\n}\n\ninterface PeriodicWaveConstraints {\n disableNormalization?: boolean;\n}\n\ninterface PeriodicWaveOptions extends PeriodicWaveConstraints {\n imag?: number[] | Float32Array;\n real?: number[] | Float32Array;\n}\n\ninterface PermissionDescriptor {\n name: PermissionName;\n}\n\ninterface PictureInPictureEventInit extends EventInit {\n pictureInPictureWindow: PictureInPictureWindow;\n}\n\ninterface PlaneLayout {\n offset: number;\n stride: number;\n}\n\ninterface PointerEventInit extends MouseEventInit {\n coalescedEvents?: PointerEvent[];\n height?: number;\n isPrimary?: boolean;\n pointerId?: number;\n pointerType?: string;\n predictedEvents?: PointerEvent[];\n pressure?: number;\n tangentialPressure?: number;\n tiltX?: number;\n tiltY?: number;\n twist?: number;\n width?: number;\n}\n\ninterface PopStateEventInit extends EventInit {\n state?: any;\n}\n\ninterface PositionOptions {\n enableHighAccuracy?: boolean;\n maximumAge?: number;\n timeout?: number;\n}\n\ninterface ProgressEventInit extends EventInit {\n lengthComputable?: boolean;\n loaded?: number;\n total?: number;\n}\n\ninterface PromiseRejectionEventInit extends EventInit {\n promise: Promise;\n reason?: any;\n}\n\ninterface PropertyDefinition {\n inherits: boolean;\n initialValue?: string;\n name: string;\n syntax?: string;\n}\n\ninterface PropertyIndexedKeyframes {\n composite?: CompositeOperationOrAuto | CompositeOperationOrAuto[];\n easing?: string | string[];\n offset?: number | (number | null)[];\n [property: string]: string | string[] | number | null | (number | null)[] | undefined;\n}\n\ninterface PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n}\n\ninterface PublicKeyCredentialDescriptor {\n id: BufferSource;\n transports?: AuthenticatorTransport[];\n type: PublicKeyCredentialType;\n}\n\ninterface PublicKeyCredentialEntity {\n name: string;\n}\n\ninterface PublicKeyCredentialParameters {\n alg: COSEAlgorithmIdentifier;\n type: PublicKeyCredentialType;\n}\n\ninterface PublicKeyCredentialRequestOptions {\n allowCredentials?: PublicKeyCredentialDescriptor[];\n challenge: BufferSource;\n extensions?: AuthenticationExtensionsClientInputs;\n rpId?: string;\n timeout?: number;\n userVerification?: UserVerificationRequirement;\n}\n\ninterface PublicKeyCredentialRpEntity extends PublicKeyCredentialEntity {\n id?: string;\n}\n\ninterface PublicKeyCredentialUserEntity extends PublicKeyCredentialEntity {\n displayName: string;\n id: BufferSource;\n}\n\ninterface PushSubscriptionJSON {\n endpoint?: string;\n expirationTime?: EpochTimeStamp | null;\n keys?: Record;\n}\n\ninterface PushSubscriptionOptionsInit {\n applicationServerKey?: BufferSource | string | null;\n userVisibleOnly?: boolean;\n}\n\ninterface QueuingStrategy {\n highWaterMark?: number;\n size?: QueuingStrategySize;\n}\n\ninterface QueuingStrategyInit {\n /**\n * Creates a new ByteLengthQueuingStrategy with the provided high water mark.\n *\n * Note that the provided high water mark will not be validated ahead of time. Instead, if it is negative, NaN, or not a number, the resulting ByteLengthQueuingStrategy will cause the corresponding stream constructor to throw.\n */\n highWaterMark: number;\n}\n\ninterface RTCAnswerOptions extends RTCOfferAnswerOptions {\n}\n\ninterface RTCCertificateExpiration {\n expires?: number;\n}\n\ninterface RTCConfiguration {\n bundlePolicy?: RTCBundlePolicy;\n certificates?: RTCCertificate[];\n iceCandidatePoolSize?: number;\n iceServers?: RTCIceServer[];\n iceTransportPolicy?: RTCIceTransportPolicy;\n rtcpMuxPolicy?: RTCRtcpMuxPolicy;\n}\n\ninterface RTCDTMFToneChangeEventInit extends EventInit {\n tone?: string;\n}\n\ninterface RTCDataChannelEventInit extends EventInit {\n channel: RTCDataChannel;\n}\n\ninterface RTCDataChannelInit {\n id?: number;\n maxPacketLifeTime?: number;\n maxRetransmits?: number;\n negotiated?: boolean;\n ordered?: boolean;\n protocol?: string;\n}\n\ninterface RTCDtlsFingerprint {\n algorithm?: string;\n value?: string;\n}\n\ninterface RTCEncodedAudioFrameMetadata {\n contributingSources?: number[];\n synchronizationSource?: number;\n}\n\ninterface RTCEncodedVideoFrameMetadata {\n contributingSources?: number[];\n dependencies?: number[];\n frameId?: number;\n height?: number;\n spatialIndex?: number;\n synchronizationSource?: number;\n temporalIndex?: number;\n width?: number;\n}\n\ninterface RTCErrorEventInit extends EventInit {\n error: RTCError;\n}\n\ninterface RTCErrorInit {\n errorDetail: RTCErrorDetailType;\n httpRequestStatusCode?: number;\n receivedAlert?: number;\n sctpCauseCode?: number;\n sdpLineNumber?: number;\n sentAlert?: number;\n}\n\ninterface RTCIceCandidateInit {\n candidate?: string;\n sdpMLineIndex?: number | null;\n sdpMid?: string | null;\n usernameFragment?: string | null;\n}\n\ninterface RTCIceCandidatePair {\n local?: RTCIceCandidate;\n remote?: RTCIceCandidate;\n}\n\ninterface RTCIceCandidatePairStats extends RTCStats {\n availableIncomingBitrate?: number;\n availableOutgoingBitrate?: number;\n bytesReceived?: number;\n bytesSent?: number;\n currentRoundTripTime?: number;\n lastPacketReceivedTimestamp?: DOMHighResTimeStamp;\n lastPacketSentTimestamp?: DOMHighResTimeStamp;\n localCandidateId: string;\n nominated?: boolean;\n remoteCandidateId: string;\n requestsReceived?: number;\n requestsSent?: number;\n responsesReceived?: number;\n responsesSent?: number;\n state: RTCStatsIceCandidatePairState;\n totalRoundTripTime?: number;\n transportId: string;\n}\n\ninterface RTCIceServer {\n credential?: string;\n urls: string | string[];\n username?: string;\n}\n\ninterface RTCInboundRtpStreamStats extends RTCReceivedRtpStreamStats {\n audioLevel?: number;\n bytesReceived?: number;\n concealedSamples?: number;\n concealmentEvents?: number;\n decoderImplementation?: string;\n estimatedPlayoutTimestamp?: DOMHighResTimeStamp;\n fecPacketsDiscarded?: number;\n fecPacketsReceived?: number;\n firCount?: number;\n frameHeight?: number;\n frameWidth?: number;\n framesDecoded?: number;\n framesDropped?: number;\n framesPerSecond?: number;\n framesReceived?: number;\n headerBytesReceived?: number;\n insertedSamplesForDeceleration?: number;\n jitterBufferDelay?: number;\n jitterBufferEmittedCount?: number;\n keyFramesDecoded?: number;\n kind: string;\n lastPacketReceivedTimestamp?: DOMHighResTimeStamp;\n nackCount?: number;\n packetsDiscarded?: number;\n pliCount?: number;\n qpSum?: number;\n remoteId?: string;\n removedSamplesForAcceleration?: number;\n silentConcealedSamples?: number;\n totalAudioEnergy?: number;\n totalDecodeTime?: number;\n totalInterFrameDelay?: number;\n totalProcessingDelay?: number;\n totalSamplesDuration?: number;\n totalSamplesReceived?: number;\n totalSquaredInterFrameDelay?: number;\n}\n\ninterface RTCLocalSessionDescriptionInit {\n sdp?: string;\n type?: RTCSdpType;\n}\n\ninterface RTCOfferAnswerOptions {\n}\n\ninterface RTCOfferOptions extends RTCOfferAnswerOptions {\n iceRestart?: boolean;\n offerToReceiveAudio?: boolean;\n offerToReceiveVideo?: boolean;\n}\n\ninterface RTCOutboundRtpStreamStats extends RTCSentRtpStreamStats {\n firCount?: number;\n frameHeight?: number;\n frameWidth?: number;\n framesEncoded?: number;\n framesPerSecond?: number;\n framesSent?: number;\n headerBytesSent?: number;\n hugeFramesSent?: number;\n keyFramesEncoded?: number;\n mediaSourceId?: string;\n nackCount?: number;\n pliCount?: number;\n qpSum?: number;\n qualityLimitationResolutionChanges?: number;\n remoteId?: string;\n retransmittedBytesSent?: number;\n retransmittedPacketsSent?: number;\n rid?: string;\n targetBitrate?: number;\n totalEncodeTime?: number;\n totalEncodedBytesTarget?: number;\n totalPacketSendDelay?: number;\n}\n\ninterface RTCPeerConnectionIceErrorEventInit extends EventInit {\n address?: string | null;\n errorCode: number;\n errorText?: string;\n port?: number | null;\n url?: string;\n}\n\ninterface RTCPeerConnectionIceEventInit extends EventInit {\n candidate?: RTCIceCandidate | null;\n url?: string | null;\n}\n\ninterface RTCReceivedRtpStreamStats extends RTCRtpStreamStats {\n jitter?: number;\n packetsLost?: number;\n packetsReceived?: number;\n}\n\ninterface RTCRtcpParameters {\n cname?: string;\n reducedSize?: boolean;\n}\n\ninterface RTCRtpCapabilities {\n codecs: RTCRtpCodecCapability[];\n headerExtensions: RTCRtpHeaderExtensionCapability[];\n}\n\ninterface RTCRtpCodec {\n channels?: number;\n clockRate: number;\n mimeType: string;\n sdpFmtpLine?: string;\n}\n\ninterface RTCRtpCodecCapability extends RTCRtpCodec {\n}\n\ninterface RTCRtpCodecParameters extends RTCRtpCodec {\n payloadType: number;\n}\n\ninterface RTCRtpCodingParameters {\n rid?: string;\n}\n\ninterface RTCRtpContributingSource {\n audioLevel?: number;\n rtpTimestamp: number;\n source: number;\n timestamp: DOMHighResTimeStamp;\n}\n\ninterface RTCRtpEncodingParameters extends RTCRtpCodingParameters {\n active?: boolean;\n maxBitrate?: number;\n maxFramerate?: number;\n networkPriority?: RTCPriorityType;\n priority?: RTCPriorityType;\n scaleResolutionDownBy?: number;\n}\n\ninterface RTCRtpHeaderExtensionCapability {\n uri: string;\n}\n\ninterface RTCRtpHeaderExtensionParameters {\n encrypted?: boolean;\n id: number;\n uri: string;\n}\n\ninterface RTCRtpParameters {\n codecs: RTCRtpCodecParameters[];\n headerExtensions: RTCRtpHeaderExtensionParameters[];\n rtcp: RTCRtcpParameters;\n}\n\ninterface RTCRtpReceiveParameters extends RTCRtpParameters {\n}\n\ninterface RTCRtpSendParameters extends RTCRtpParameters {\n degradationPreference?: RTCDegradationPreference;\n encodings: RTCRtpEncodingParameters[];\n transactionId: string;\n}\n\ninterface RTCRtpStreamStats extends RTCStats {\n codecId?: string;\n kind: string;\n ssrc: number;\n transportId?: string;\n}\n\ninterface RTCRtpSynchronizationSource extends RTCRtpContributingSource {\n}\n\ninterface RTCRtpTransceiverInit {\n direction?: RTCRtpTransceiverDirection;\n sendEncodings?: RTCRtpEncodingParameters[];\n streams?: MediaStream[];\n}\n\ninterface RTCSentRtpStreamStats extends RTCRtpStreamStats {\n bytesSent?: number;\n packetsSent?: number;\n}\n\ninterface RTCSessionDescriptionInit {\n sdp?: string;\n type: RTCSdpType;\n}\n\ninterface RTCStats {\n id: string;\n timestamp: DOMHighResTimeStamp;\n type: RTCStatsType;\n}\n\ninterface RTCTrackEventInit extends EventInit {\n receiver: RTCRtpReceiver;\n streams?: MediaStream[];\n track: MediaStreamTrack;\n transceiver: RTCRtpTransceiver;\n}\n\ninterface RTCTransportStats extends RTCStats {\n bytesReceived?: number;\n bytesSent?: number;\n dtlsCipher?: string;\n dtlsState: RTCDtlsTransportState;\n localCertificateId?: string;\n remoteCertificateId?: string;\n selectedCandidatePairId?: string;\n srtpCipher?: string;\n tlsVersion?: string;\n}\n\ninterface ReadableStreamGetReaderOptions {\n /**\n * Creates a ReadableStreamBYOBReader and locks the stream to the new reader.\n *\n * This call behaves the same way as the no-argument variant, except that it only works on readable byte streams, i.e. streams which were constructed specifically with the ability to handle "bring your own buffer" reading. The returned BYOB reader provides the ability to directly read individual chunks from the stream via its read() method, into developer-supplied buffers, allowing more precise control over allocation.\n */\n mode?: ReadableStreamReaderMode;\n}\n\ninterface ReadableStreamReadDoneResult {\n done: true;\n value?: T;\n}\n\ninterface ReadableStreamReadValueResult {\n done: false;\n value: T;\n}\n\ninterface ReadableWritablePair {\n readable: ReadableStream;\n /**\n * Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.\n *\n * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n */\n writable: WritableStream;\n}\n\ninterface RegistrationOptions {\n scope?: string;\n type?: WorkerType;\n updateViaCache?: ServiceWorkerUpdateViaCache;\n}\n\ninterface ReportingObserverOptions {\n buffered?: boolean;\n types?: string[];\n}\n\ninterface RequestInit {\n /** A BodyInit object or null to set request\'s body. */\n body?: BodyInit | null;\n /** A string indicating how the request will interact with the browser\'s cache to set request\'s cache. */\n cache?: RequestCache;\n /** A string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. Sets request\'s credentials. */\n credentials?: RequestCredentials;\n /** A Headers object, an object literal, or an array of two-item arrays to set request\'s headers. */\n headers?: HeadersInit;\n /** A cryptographic hash of the resource to be fetched by request. Sets request\'s integrity. */\n integrity?: string;\n /** A boolean to set request\'s keepalive. */\n keepalive?: boolean;\n /** A string to set request\'s method. */\n method?: string;\n /** A string to indicate whether the request will use CORS, or will be restricted to same-origin URLs. Sets request\'s mode. */\n mode?: RequestMode;\n /** A string indicating whether request follows redirects, results in an error upon encountering a redirect, or returns the redirect (in an opaque fashion). Sets request\'s redirect. */\n redirect?: RequestRedirect;\n /** A string whose value is a same-origin URL, "about:client", or the empty string, to set request\'s referrer. */\n referrer?: string;\n /** A referrer policy to set request\'s referrerPolicy. */\n referrerPolicy?: ReferrerPolicy;\n /** An AbortSignal to set request\'s signal. */\n signal?: AbortSignal | null;\n /** Can only be null. Used to disassociate request from any Window. */\n window?: null;\n}\n\ninterface ResizeObserverOptions {\n box?: ResizeObserverBoxOptions;\n}\n\ninterface ResponseInit {\n headers?: HeadersInit;\n status?: number;\n statusText?: string;\n}\n\ninterface RsaHashedImportParams extends Algorithm {\n hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {\n hash: KeyAlgorithm;\n}\n\ninterface RsaHashedKeyGenParams extends RsaKeyGenParams {\n hash: HashAlgorithmIdentifier;\n}\n\ninterface RsaKeyAlgorithm extends KeyAlgorithm {\n modulusLength: number;\n publicExponent: BigInteger;\n}\n\ninterface RsaKeyGenParams extends Algorithm {\n modulusLength: number;\n publicExponent: BigInteger;\n}\n\ninterface RsaOaepParams extends Algorithm {\n label?: BufferSource;\n}\n\ninterface RsaOtherPrimesInfo {\n d?: string;\n r?: string;\n t?: string;\n}\n\ninterface RsaPssParams extends Algorithm {\n saltLength: number;\n}\n\ninterface SVGBoundingBoxOptions {\n clipped?: boolean;\n fill?: boolean;\n markers?: boolean;\n stroke?: boolean;\n}\n\ninterface ScrollIntoViewOptions extends ScrollOptions {\n block?: ScrollLogicalPosition;\n inline?: ScrollLogicalPosition;\n}\n\ninterface ScrollOptions {\n behavior?: ScrollBehavior;\n}\n\ninterface ScrollToOptions extends ScrollOptions {\n left?: number;\n top?: number;\n}\n\ninterface SecurityPolicyViolationEventInit extends EventInit {\n blockedURI?: string;\n columnNumber?: number;\n disposition: SecurityPolicyViolationEventDisposition;\n documentURI: string;\n effectiveDirective: string;\n lineNumber?: number;\n originalPolicy: string;\n referrer?: string;\n sample?: string;\n sourceFile?: string;\n statusCode: number;\n violatedDirective: string;\n}\n\ninterface ShadowRootInit {\n delegatesFocus?: boolean;\n mode: ShadowRootMode;\n slotAssignment?: SlotAssignmentMode;\n}\n\ninterface ShareData {\n files?: File[];\n text?: string;\n title?: string;\n url?: string;\n}\n\ninterface SpeechSynthesisErrorEventInit extends SpeechSynthesisEventInit {\n error: SpeechSynthesisErrorCode;\n}\n\ninterface SpeechSynthesisEventInit extends EventInit {\n charIndex?: number;\n charLength?: number;\n elapsedTime?: number;\n name?: string;\n utterance: SpeechSynthesisUtterance;\n}\n\ninterface StaticRangeInit {\n endContainer: Node;\n endOffset: number;\n startContainer: Node;\n startOffset: number;\n}\n\ninterface StereoPannerOptions extends AudioNodeOptions {\n pan?: number;\n}\n\ninterface StorageEstimate {\n quota?: number;\n usage?: number;\n}\n\ninterface StorageEventInit extends EventInit {\n key?: string | null;\n newValue?: string | null;\n oldValue?: string | null;\n storageArea?: Storage | null;\n url?: string;\n}\n\ninterface StreamPipeOptions {\n preventAbort?: boolean;\n preventCancel?: boolean;\n /**\n * Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.\n *\n * Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.\n *\n * Errors and closures of the source and destination streams propagate as follows:\n *\n * An error in this source readable stream will abort destination, unless preventAbort is truthy. The returned promise will be rejected with the source\'s error, or with any error that occurs during aborting the destination.\n *\n * An error in destination will cancel this source readable stream, unless preventCancel is truthy. The returned promise will be rejected with the destination\'s error, or with any error that occurs during canceling the source.\n *\n * When this source readable stream closes, destination will be closed, unless preventClose is truthy. The returned promise will be fulfilled once this process completes, unless an error is encountered while closing the destination, in which case it will be rejected with that error.\n *\n * If destination starts out closed or closing, this source readable stream will be canceled, unless preventCancel is true. The returned promise will be rejected with an error indicating piping to a closed stream failed, or with any error that occurs during canceling the source.\n *\n * The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.\n */\n preventClose?: boolean;\n signal?: AbortSignal;\n}\n\ninterface StructuredSerializeOptions {\n transfer?: Transferable[];\n}\n\ninterface SubmitEventInit extends EventInit {\n submitter?: HTMLElement | null;\n}\n\ninterface TextDecodeOptions {\n stream?: boolean;\n}\n\ninterface TextDecoderOptions {\n fatal?: boolean;\n ignoreBOM?: boolean;\n}\n\ninterface TextEncoderEncodeIntoResult {\n read?: number;\n written?: number;\n}\n\ninterface TouchEventInit extends EventModifierInit {\n changedTouches?: Touch[];\n targetTouches?: Touch[];\n touches?: Touch[];\n}\n\ninterface TouchInit {\n altitudeAngle?: number;\n azimuthAngle?: number;\n clientX?: number;\n clientY?: number;\n force?: number;\n identifier: number;\n pageX?: number;\n pageY?: number;\n radiusX?: number;\n radiusY?: number;\n rotationAngle?: number;\n screenX?: number;\n screenY?: number;\n target: EventTarget;\n touchType?: TouchType;\n}\n\ninterface TrackEventInit extends EventInit {\n track?: TextTrack | null;\n}\n\ninterface Transformer {\n flush?: TransformerFlushCallback;\n readableType?: undefined;\n start?: TransformerStartCallback;\n transform?: TransformerTransformCallback;\n writableType?: undefined;\n}\n\ninterface TransitionEventInit extends EventInit {\n elapsedTime?: number;\n propertyName?: string;\n pseudoElement?: string;\n}\n\ninterface UIEventInit extends EventInit {\n detail?: number;\n view?: Window | null;\n /** @deprecated */\n which?: number;\n}\n\ninterface ULongRange {\n max?: number;\n min?: number;\n}\n\ninterface UnderlyingByteSource {\n autoAllocateChunkSize?: number;\n cancel?: UnderlyingSourceCancelCallback;\n pull?: (controller: ReadableByteStreamController) => void | PromiseLike;\n start?: (controller: ReadableByteStreamController) => any;\n type: "bytes";\n}\n\ninterface UnderlyingDefaultSource {\n cancel?: UnderlyingSourceCancelCallback;\n pull?: (controller: ReadableStreamDefaultController) => void | PromiseLike;\n start?: (controller: ReadableStreamDefaultController) => any;\n type?: undefined;\n}\n\ninterface UnderlyingSink {\n abort?: UnderlyingSinkAbortCallback;\n close?: UnderlyingSinkCloseCallback;\n start?: UnderlyingSinkStartCallback;\n type?: undefined;\n write?: UnderlyingSinkWriteCallback;\n}\n\ninterface UnderlyingSource {\n autoAllocateChunkSize?: number;\n cancel?: UnderlyingSourceCancelCallback;\n pull?: UnderlyingSourcePullCallback;\n start?: UnderlyingSourceStartCallback;\n type?: ReadableStreamType;\n}\n\ninterface ValidityStateFlags {\n badInput?: boolean;\n customError?: boolean;\n patternMismatch?: boolean;\n rangeOverflow?: boolean;\n rangeUnderflow?: boolean;\n stepMismatch?: boolean;\n tooLong?: boolean;\n tooShort?: boolean;\n typeMismatch?: boolean;\n valueMissing?: boolean;\n}\n\ninterface VideoColorSpaceInit {\n fullRange?: boolean | null;\n matrix?: VideoMatrixCoefficients | null;\n primaries?: VideoColorPrimaries | null;\n transfer?: VideoTransferCharacteristics | null;\n}\n\ninterface VideoConfiguration {\n bitrate: number;\n colorGamut?: ColorGamut;\n contentType: string;\n framerate: number;\n hdrMetadataType?: HdrMetadataType;\n height: number;\n scalabilityMode?: string;\n transferFunction?: TransferFunction;\n width: number;\n}\n\ninterface VideoDecoderConfig {\n codec: string;\n codedHeight?: number;\n codedWidth?: number;\n colorSpace?: VideoColorSpaceInit;\n description?: BufferSource;\n displayAspectHeight?: number;\n displayAspectWidth?: number;\n hardwareAcceleration?: HardwareAcceleration;\n optimizeForLatency?: boolean;\n}\n\ninterface VideoDecoderInit {\n error: WebCodecsErrorCallback;\n output: VideoFrameOutputCallback;\n}\n\ninterface VideoDecoderSupport {\n config?: VideoDecoderConfig;\n supported?: boolean;\n}\n\ninterface VideoEncoderConfig {\n alpha?: AlphaOption;\n avc?: AvcEncoderConfig;\n bitrate?: number;\n bitrateMode?: VideoEncoderBitrateMode;\n codec: string;\n displayHeight?: number;\n displayWidth?: number;\n framerate?: number;\n hardwareAcceleration?: HardwareAcceleration;\n height: number;\n latencyMode?: LatencyMode;\n scalabilityMode?: string;\n width: number;\n}\n\ninterface VideoEncoderEncodeOptions {\n keyFrame?: boolean;\n}\n\ninterface VideoEncoderInit {\n error: WebCodecsErrorCallback;\n output: EncodedVideoChunkOutputCallback;\n}\n\ninterface VideoEncoderSupport {\n config?: VideoEncoderConfig;\n supported?: boolean;\n}\n\ninterface VideoFrameBufferInit {\n codedHeight: number;\n codedWidth: number;\n colorSpace?: VideoColorSpaceInit;\n displayHeight?: number;\n displayWidth?: number;\n duration?: number;\n format: VideoPixelFormat;\n layout?: PlaneLayout[];\n timestamp: number;\n visibleRect?: DOMRectInit;\n}\n\ninterface VideoFrameCallbackMetadata {\n captureTime?: DOMHighResTimeStamp;\n expectedDisplayTime: DOMHighResTimeStamp;\n height: number;\n mediaTime: number;\n presentationTime: DOMHighResTimeStamp;\n presentedFrames: number;\n processingDuration?: number;\n receiveTime?: DOMHighResTimeStamp;\n rtpTimestamp?: number;\n width: number;\n}\n\ninterface VideoFrameCopyToOptions {\n layout?: PlaneLayout[];\n rect?: DOMRectInit;\n}\n\ninterface VideoFrameInit {\n alpha?: AlphaOption;\n displayHeight?: number;\n displayWidth?: number;\n duration?: number;\n timestamp?: number;\n visibleRect?: DOMRectInit;\n}\n\ninterface WaveShaperOptions extends AudioNodeOptions {\n curve?: number[] | Float32Array;\n oversample?: OverSampleType;\n}\n\ninterface WebGLContextAttributes {\n alpha?: boolean;\n antialias?: boolean;\n depth?: boolean;\n desynchronized?: boolean;\n failIfMajorPerformanceCaveat?: boolean;\n powerPreference?: WebGLPowerPreference;\n premultipliedAlpha?: boolean;\n preserveDrawingBuffer?: boolean;\n stencil?: boolean;\n}\n\ninterface WebGLContextEventInit extends EventInit {\n statusMessage?: string;\n}\n\ninterface WheelEventInit extends MouseEventInit {\n deltaMode?: number;\n deltaX?: number;\n deltaY?: number;\n deltaZ?: number;\n}\n\ninterface WindowPostMessageOptions extends StructuredSerializeOptions {\n targetOrigin?: string;\n}\n\ninterface WorkerOptions {\n credentials?: RequestCredentials;\n name?: string;\n type?: WorkerType;\n}\n\ninterface WorkletOptions {\n credentials?: RequestCredentials;\n}\n\ninterface WriteParams {\n data?: BufferSource | Blob | string | null;\n position?: number | null;\n size?: number | null;\n type: WriteCommandType;\n}\n\ntype NodeFilter = ((node: Node) => number) | { acceptNode(node: Node): number; };\n\ndeclare var NodeFilter: {\n readonly FILTER_ACCEPT: 1;\n readonly FILTER_REJECT: 2;\n readonly FILTER_SKIP: 3;\n readonly SHOW_ALL: 0xFFFFFFFF;\n readonly SHOW_ELEMENT: 0x1;\n readonly SHOW_ATTRIBUTE: 0x2;\n readonly SHOW_TEXT: 0x4;\n readonly SHOW_CDATA_SECTION: 0x8;\n readonly SHOW_ENTITY_REFERENCE: 0x10;\n readonly SHOW_ENTITY: 0x20;\n readonly SHOW_PROCESSING_INSTRUCTION: 0x40;\n readonly SHOW_COMMENT: 0x80;\n readonly SHOW_DOCUMENT: 0x100;\n readonly SHOW_DOCUMENT_TYPE: 0x200;\n readonly SHOW_DOCUMENT_FRAGMENT: 0x400;\n readonly SHOW_NOTATION: 0x800;\n};\n\ntype XPathNSResolver = ((prefix: string | null) => string | null) | { lookupNamespaceURI(prefix: string | null): string | null; };\n\n/**\n * The ANGLE_instanced_arrays extension is part of the WebGL API and allows to draw the same object, or groups of similar objects multiple times, if they share the same vertex data, primitive count and type.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays)\n */\ninterface ANGLE_instanced_arrays {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays/drawArraysInstancedANGLE) */\n drawArraysInstancedANGLE(mode: GLenum, first: GLint, count: GLsizei, primcount: GLsizei): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays/drawElementsInstancedANGLE) */\n drawElementsInstancedANGLE(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr, primcount: GLsizei): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ANGLE_instanced_arrays/vertexAttribDivisorANGLE) */\n vertexAttribDivisorANGLE(index: GLuint, divisor: GLuint): void;\n readonly VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE: 0x88FE;\n}\n\ninterface ARIAMixin {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaAtomic) */\n ariaAtomic: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaAutoComplete) */\n ariaAutoComplete: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaBusy) */\n ariaBusy: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaChecked) */\n ariaChecked: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaColCount) */\n ariaColCount: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaColIndex) */\n ariaColIndex: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaColSpan) */\n ariaColSpan: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaCurrent) */\n ariaCurrent: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaDisabled) */\n ariaDisabled: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaExpanded) */\n ariaExpanded: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaHasPopup) */\n ariaHasPopup: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaHidden) */\n ariaHidden: string | null;\n ariaInvalid: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaKeyShortcuts) */\n ariaKeyShortcuts: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaLabel) */\n ariaLabel: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaLevel) */\n ariaLevel: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaLive) */\n ariaLive: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaModal) */\n ariaModal: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaMultiLine) */\n ariaMultiLine: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaMultiSelectable) */\n ariaMultiSelectable: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaOrientation) */\n ariaOrientation: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaPlaceholder) */\n ariaPlaceholder: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaPosInSet) */\n ariaPosInSet: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaPressed) */\n ariaPressed: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaReadOnly) */\n ariaReadOnly: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaRequired) */\n ariaRequired: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaRoleDescription) */\n ariaRoleDescription: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaRowCount) */\n ariaRowCount: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaRowIndex) */\n ariaRowIndex: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaRowSpan) */\n ariaRowSpan: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaSelected) */\n ariaSelected: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaSetSize) */\n ariaSetSize: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaSort) */\n ariaSort: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaValueMax) */\n ariaValueMax: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaValueMin) */\n ariaValueMin: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaValueNow) */\n ariaValueNow: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/ariaValueText) */\n ariaValueText: string | null;\n role: string | null;\n}\n\n/**\n * A controller object that allows you to abort one or more DOM requests as and when desired.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController)\n */\ninterface AbortController {\n /**\n * Returns the AbortSignal object associated with this object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/signal)\n */\n readonly signal: AbortSignal;\n /**\n * Invoking this method will set this object\'s AbortSignal\'s aborted flag and signal to any observers that the associated activity is to be aborted.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortController/abort)\n */\n abort(reason?: any): void;\n}\n\ndeclare var AbortController: {\n prototype: AbortController;\n new(): AbortController;\n};\n\ninterface AbortSignalEventMap {\n "abort": Event;\n}\n\n/**\n * A signal object that allows you to communicate with a DOM request (such as a Fetch) and abort it if required via an AbortController object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal)\n */\ninterface AbortSignal extends EventTarget {\n /**\n * Returns true if this AbortSignal\'s AbortController has signaled to abort, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/aborted)\n */\n readonly aborted: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort_event) */\n onabort: ((this: AbortSignal, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/reason) */\n readonly reason: any;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/throwIfAborted) */\n throwIfAborted(): void;\n addEventListener(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AbortSignal: {\n prototype: AbortSignal;\n new(): AbortSignal;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/abort) */\n abort(reason?: any): AbortSignal;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbortSignal/timeout) */\n timeout(milliseconds: number): AbortSignal;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbstractRange) */\ninterface AbstractRange {\n /**\n * Returns true if range is collapsed, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbstractRange/collapsed)\n */\n readonly collapsed: boolean;\n /**\n * Returns range\'s end node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbstractRange/endContainer)\n */\n readonly endContainer: Node;\n /**\n * Returns range\'s end offset.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbstractRange/endOffset)\n */\n readonly endOffset: number;\n /**\n * Returns range\'s start node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbstractRange/startContainer)\n */\n readonly startContainer: Node;\n /**\n * Returns range\'s start offset.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AbstractRange/startOffset)\n */\n readonly startOffset: number;\n}\n\ndeclare var AbstractRange: {\n prototype: AbstractRange;\n new(): AbstractRange;\n};\n\ninterface AbstractWorkerEventMap {\n "error": ErrorEvent;\n}\n\ninterface AbstractWorker {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ServiceWorker/error_event) */\n onerror: ((this: AbstractWorker, ev: ErrorEvent) => any) | null;\n addEventListener(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AbstractWorker, ev: AbstractWorkerEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/**\n * A node able to provide real-time frequency and time-domain analysis information. It is an AudioNode that passes the audio stream unchanged from the input to the output, but allows you to take the generated data, process it, and create audio visualizations.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode)\n */\ninterface AnalyserNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/fftSize) */\n fftSize: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/frequencyBinCount) */\n readonly frequencyBinCount: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/maxDecibels) */\n maxDecibels: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/minDecibels) */\n minDecibels: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/smoothingTimeConstant) */\n smoothingTimeConstant: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/getByteFrequencyData) */\n getByteFrequencyData(array: Uint8Array): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/getByteTimeDomainData) */\n getByteTimeDomainData(array: Uint8Array): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/getFloatFrequencyData) */\n getFloatFrequencyData(array: Float32Array): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnalyserNode/getFloatTimeDomainData) */\n getFloatTimeDomainData(array: Float32Array): void;\n}\n\ndeclare var AnalyserNode: {\n prototype: AnalyserNode;\n new(context: BaseAudioContext, options?: AnalyserOptions): AnalyserNode;\n};\n\ninterface Animatable {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animate) */\n animate(keyframes: Keyframe[] | PropertyIndexedKeyframes | null, options?: number | KeyframeAnimationOptions): Animation;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getAnimations) */\n getAnimations(options?: GetAnimationsOptions): Animation[];\n}\n\ninterface AnimationEventMap {\n "cancel": AnimationPlaybackEvent;\n "finish": AnimationPlaybackEvent;\n "remove": Event;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation) */\ninterface Animation extends EventTarget {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/currentTime) */\n currentTime: CSSNumberish | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/effect) */\n effect: AnimationEffect | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/finished) */\n readonly finished: Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/id) */\n id: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/cancel_event) */\n oncancel: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/finish_event) */\n onfinish: ((this: Animation, ev: AnimationPlaybackEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/remove_event) */\n onremove: ((this: Animation, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/pending) */\n readonly pending: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/playState) */\n readonly playState: AnimationPlayState;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/playbackRate) */\n playbackRate: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/ready) */\n readonly ready: Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/replaceState) */\n readonly replaceState: AnimationReplaceState;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/startTime) */\n startTime: CSSNumberish | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/timeline) */\n timeline: AnimationTimeline | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/cancel) */\n cancel(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/commitStyles) */\n commitStyles(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/finish) */\n finish(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/pause) */\n pause(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/persist) */\n persist(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/play) */\n play(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/reverse) */\n reverse(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Animation/updatePlaybackRate) */\n updatePlaybackRate(playbackRate: number): void;\n addEventListener(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Animation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Animation: {\n prototype: Animation;\n new(effect?: AnimationEffect | null, timeline?: AnimationTimeline | null): Animation;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEffect) */\ninterface AnimationEffect {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEffect/getComputedTiming) */\n getComputedTiming(): ComputedEffectTiming;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEffect/getTiming) */\n getTiming(): EffectTiming;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEffect/updateTiming) */\n updateTiming(timing?: OptionalEffectTiming): void;\n}\n\ndeclare var AnimationEffect: {\n prototype: AnimationEffect;\n new(): AnimationEffect;\n};\n\n/**\n * Events providing information related to animations.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEvent)\n */\ninterface AnimationEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEvent/animationName) */\n readonly animationName: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEvent/elapsedTime) */\n readonly elapsedTime: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationEvent/pseudoElement) */\n readonly pseudoElement: string;\n}\n\ndeclare var AnimationEvent: {\n prototype: AnimationEvent;\n new(type: string, animationEventInitDict?: AnimationEventInit): AnimationEvent;\n};\n\ninterface AnimationFrameProvider {\n cancelAnimationFrame(handle: number): void;\n requestAnimationFrame(callback: FrameRequestCallback): number;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent) */\ninterface AnimationPlaybackEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/currentTime) */\n readonly currentTime: CSSNumberish | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationPlaybackEvent/timelineTime) */\n readonly timelineTime: CSSNumberish | null;\n}\n\ndeclare var AnimationPlaybackEvent: {\n prototype: AnimationPlaybackEvent;\n new(type: string, eventInitDict?: AnimationPlaybackEventInit): AnimationPlaybackEvent;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationTimeline) */\ninterface AnimationTimeline {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AnimationTimeline/currentTime) */\n readonly currentTime: CSSNumberish | null;\n}\n\ndeclare var AnimationTimeline: {\n prototype: AnimationTimeline;\n new(): AnimationTimeline;\n};\n\n/**\n * A DOM element\'s attribute as an object. In most DOM methods, you will probably directly retrieve the attribute as a string (e.g., Element.getAttribute(), but certain functions (e.g., Element.getAttributeNode()) or means of iterating give Attr types.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr)\n */\ninterface Attr extends Node {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/localName) */\n readonly localName: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/namespaceURI) */\n readonly namespaceURI: string | null;\n readonly ownerDocument: Document;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/ownerElement) */\n readonly ownerElement: Element | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/prefix) */\n readonly prefix: string | null;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/specified)\n */\n readonly specified: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Attr/value) */\n value: string;\n}\n\ndeclare var Attr: {\n prototype: Attr;\n new(): Attr;\n};\n\n/**\n * A short audio asset residing in memory, created from an audio file using the AudioContext.decodeAudioData() method, or from raw data using AudioContext.createBuffer(). Once put into an AudioBuffer, the audio can then be played by being passed into an AudioBufferSourceNode.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer)\n */\ninterface AudioBuffer {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/duration) */\n readonly duration: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/length) */\n readonly length: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/numberOfChannels) */\n readonly numberOfChannels: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/sampleRate) */\n readonly sampleRate: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/copyFromChannel) */\n copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/copyToChannel) */\n copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBuffer/getChannelData) */\n getChannelData(channel: number): Float32Array;\n}\n\ndeclare var AudioBuffer: {\n prototype: AudioBuffer;\n new(options: AudioBufferOptions): AudioBuffer;\n};\n\n/**\n * An AudioScheduledSourceNode which represents an audio source consisting of in-memory audio data, stored in an AudioBuffer. It\'s especially useful for playing back audio which has particularly stringent timing accuracy requirements, such as for sounds that must match a specific rhythm and can be kept in memory rather than being played from disk or the network.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode)\n */\ninterface AudioBufferSourceNode extends AudioScheduledSourceNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/buffer) */\n buffer: AudioBuffer | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/detune) */\n readonly detune: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loop) */\n loop: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopEnd) */\n loopEnd: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/loopStart) */\n loopStart: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/playbackRate) */\n readonly playbackRate: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioBufferSourceNode/start) */\n start(when?: number, offset?: number, duration?: number): void;\n addEventListener(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioBufferSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioBufferSourceNode: {\n prototype: AudioBufferSourceNode;\n new(context: BaseAudioContext, options?: AudioBufferSourceOptions): AudioBufferSourceNode;\n};\n\n/**\n * An audio-processing graph built from audio modules linked together, each represented by an AudioNode.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext)\n */\ninterface AudioContext extends BaseAudioContext {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/baseLatency) */\n readonly baseLatency: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/outputLatency) */\n readonly outputLatency: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/close) */\n close(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaElementSource) */\n createMediaElementSource(mediaElement: HTMLMediaElement): MediaElementAudioSourceNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamDestination) */\n createMediaStreamDestination(): MediaStreamAudioDestinationNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/createMediaStreamSource) */\n createMediaStreamSource(mediaStream: MediaStream): MediaStreamAudioSourceNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/getOutputTimestamp) */\n getOutputTimestamp(): AudioTimestamp;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/resume) */\n resume(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioContext/suspend) */\n suspend(): Promise;\n addEventListener(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioContext: {\n prototype: AudioContext;\n new(contextOptions?: AudioContextOptions): AudioContext;\n};\n\n/**\n * AudioDestinationNode has no output (as it is the output, no more AudioNode can be linked after it in the audio graph) and one input. The number of channels in the input must be between 0 and the maxChannelCount value or an exception is raised.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioDestinationNode)\n */\ninterface AudioDestinationNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioDestinationNode/maxChannelCount) */\n readonly maxChannelCount: number;\n}\n\ndeclare var AudioDestinationNode: {\n prototype: AudioDestinationNode;\n new(): AudioDestinationNode;\n};\n\n/**\n * The position and orientation of the unique person listening to the audio scene, and is used in audio spatialization. All PannerNodes spatialize in relation to the AudioListener stored in the BaseAudioContext.listener attribute.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener)\n */\ninterface AudioListener {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/forwardX) */\n readonly forwardX: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/forwardY) */\n readonly forwardY: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/forwardZ) */\n readonly forwardZ: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/positionX) */\n readonly positionX: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/positionY) */\n readonly positionY: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/positionZ) */\n readonly positionZ: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/upX) */\n readonly upX: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/upY) */\n readonly upY: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/upZ) */\n readonly upZ: AudioParam;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/setOrientation)\n */\n setOrientation(x: number, y: number, z: number, xUp: number, yUp: number, zUp: number): void;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioListener/setPosition)\n */\n setPosition(x: number, y: number, z: number): void;\n}\n\ndeclare var AudioListener: {\n prototype: AudioListener;\n new(): AudioListener;\n};\n\n/**\n * A generic interface for representing an audio processing module. Examples include:\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode)\n */\ninterface AudioNode extends EventTarget {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/channelCount) */\n channelCount: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/channelCountMode) */\n channelCountMode: ChannelCountMode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/channelInterpretation) */\n channelInterpretation: ChannelInterpretation;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/context) */\n readonly context: BaseAudioContext;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfInputs) */\n readonly numberOfInputs: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/numberOfOutputs) */\n readonly numberOfOutputs: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/connect) */\n connect(destinationNode: AudioNode, output?: number, input?: number): AudioNode;\n connect(destinationParam: AudioParam, output?: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioNode/disconnect) */\n disconnect(): void;\n disconnect(output: number): void;\n disconnect(destinationNode: AudioNode): void;\n disconnect(destinationNode: AudioNode, output: number): void;\n disconnect(destinationNode: AudioNode, output: number, input: number): void;\n disconnect(destinationParam: AudioParam): void;\n disconnect(destinationParam: AudioParam, output: number): void;\n}\n\ndeclare var AudioNode: {\n prototype: AudioNode;\n new(): AudioNode;\n};\n\n/**\n * The Web Audio API\'s AudioParam interface represents an audio-related parameter, usually a parameter of an AudioNode (such as GainNode.gain).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam)\n */\ninterface AudioParam {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/automationRate) */\n automationRate: AutomationRate;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/defaultValue) */\n readonly defaultValue: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/maxValue) */\n readonly maxValue: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/minValue) */\n readonly minValue: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/value) */\n value: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/cancelAndHoldAtTime) */\n cancelAndHoldAtTime(cancelTime: number): AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/cancelScheduledValues) */\n cancelScheduledValues(cancelTime: number): AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/exponentialRampToValueAtTime) */\n exponentialRampToValueAtTime(value: number, endTime: number): AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/linearRampToValueAtTime) */\n linearRampToValueAtTime(value: number, endTime: number): AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/setTargetAtTime) */\n setTargetAtTime(target: number, startTime: number, timeConstant: number): AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/setValueAtTime) */\n setValueAtTime(value: number, startTime: number): AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParam/setValueCurveAtTime) */\n setValueCurveAtTime(values: number[] | Float32Array, startTime: number, duration: number): AudioParam;\n}\n\ndeclare var AudioParam: {\n prototype: AudioParam;\n new(): AudioParam;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioParamMap) */\ninterface AudioParamMap {\n forEach(callbackfn: (value: AudioParam, key: string, parent: AudioParamMap) => void, thisArg?: any): void;\n}\n\ndeclare var AudioParamMap: {\n prototype: AudioParamMap;\n new(): AudioParamMap;\n};\n\n/**\n * The Web Audio API events that occur when a ScriptProcessorNode input buffer is ready to be processed.\n * @deprecated As of the August 29 2014 Web Audio API spec publication, this feature has been marked as deprecated, and is soon to be replaced by AudioWorklet.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent)\n */\ninterface AudioProcessingEvent extends Event {\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/inputBuffer)\n */\n readonly inputBuffer: AudioBuffer;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/outputBuffer)\n */\n readonly outputBuffer: AudioBuffer;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioProcessingEvent/playbackTime)\n */\n readonly playbackTime: number;\n}\n\n/** @deprecated */\ndeclare var AudioProcessingEvent: {\n prototype: AudioProcessingEvent;\n new(type: string, eventInitDict: AudioProcessingEventInit): AudioProcessingEvent;\n};\n\ninterface AudioScheduledSourceNodeEventMap {\n "ended": Event;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioScheduledSourceNode) */\ninterface AudioScheduledSourceNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioScheduledSourceNode/ended_event) */\n onended: ((this: AudioScheduledSourceNode, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioScheduledSourceNode/start) */\n start(when?: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioScheduledSourceNode/stop) */\n stop(when?: number): void;\n addEventListener(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioScheduledSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioScheduledSourceNode: {\n prototype: AudioScheduledSourceNode;\n new(): AudioScheduledSourceNode;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioWorklet)\n */\ninterface AudioWorklet extends Worklet {\n}\n\ndeclare var AudioWorklet: {\n prototype: AudioWorklet;\n new(): AudioWorklet;\n};\n\ninterface AudioWorkletNodeEventMap {\n "processorerror": Event;\n}\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioWorkletNode)\n */\ninterface AudioWorkletNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/processorerror_event) */\n onprocessorerror: ((this: AudioWorkletNode, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/parameters) */\n readonly parameters: AudioParamMap;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AudioWorkletNode/port) */\n readonly port: MessagePort;\n addEventListener(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: AudioWorkletNode, ev: AudioWorkletNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var AudioWorkletNode: {\n prototype: AudioWorkletNode;\n new(context: BaseAudioContext, name: string, options?: AudioWorkletNodeOptions): AudioWorkletNode;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse)\n */\ninterface AuthenticatorAssertionResponse extends AuthenticatorResponse {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/authenticatorData) */\n readonly authenticatorData: ArrayBuffer;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/signature) */\n readonly signature: ArrayBuffer;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAssertionResponse/userHandle) */\n readonly userHandle: ArrayBuffer | null;\n}\n\ndeclare var AuthenticatorAssertionResponse: {\n prototype: AuthenticatorAssertionResponse;\n new(): AuthenticatorAssertionResponse;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse)\n */\ninterface AuthenticatorAttestationResponse extends AuthenticatorResponse {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/attestationObject) */\n readonly attestationObject: ArrayBuffer;\n getAuthenticatorData(): ArrayBuffer;\n getPublicKey(): ArrayBuffer | null;\n getPublicKeyAlgorithm(): COSEAlgorithmIdentifier;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorAttestationResponse/getTransports) */\n getTransports(): string[];\n}\n\ndeclare var AuthenticatorAttestationResponse: {\n prototype: AuthenticatorAttestationResponse;\n new(): AuthenticatorAttestationResponse;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorResponse)\n */\ninterface AuthenticatorResponse {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/AuthenticatorResponse/clientDataJSON) */\n readonly clientDataJSON: ArrayBuffer;\n}\n\ndeclare var AuthenticatorResponse: {\n prototype: AuthenticatorResponse;\n new(): AuthenticatorResponse;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BarProp) */\ninterface BarProp {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BarProp/visible) */\n readonly visible: boolean;\n}\n\ndeclare var BarProp: {\n prototype: BarProp;\n new(): BarProp;\n};\n\ninterface BaseAudioContextEventMap {\n "statechange": Event;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext) */\ninterface BaseAudioContext extends EventTarget {\n /**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/audioWorklet)\n */\n readonly audioWorklet: AudioWorklet;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/currentTime) */\n readonly currentTime: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/destination) */\n readonly destination: AudioDestinationNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/listener) */\n readonly listener: AudioListener;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/statechange_event) */\n onstatechange: ((this: BaseAudioContext, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/sampleRate) */\n readonly sampleRate: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/state) */\n readonly state: AudioContextState;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createAnalyser) */\n createAnalyser(): AnalyserNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBiquadFilter) */\n createBiquadFilter(): BiquadFilterNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBuffer) */\n createBuffer(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createBufferSource) */\n createBufferSource(): AudioBufferSourceNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createChannelMerger) */\n createChannelMerger(numberOfInputs?: number): ChannelMergerNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createChannelSplitter) */\n createChannelSplitter(numberOfOutputs?: number): ChannelSplitterNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConstantSource) */\n createConstantSource(): ConstantSourceNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createConvolver) */\n createConvolver(): ConvolverNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDelay) */\n createDelay(maxDelayTime?: number): DelayNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createDynamicsCompressor) */\n createDynamicsCompressor(): DynamicsCompressorNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createGain) */\n createGain(): GainNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createIIRFilter) */\n createIIRFilter(feedforward: number[], feedback: number[]): IIRFilterNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createOscillator) */\n createOscillator(): OscillatorNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPanner) */\n createPanner(): PannerNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createPeriodicWave) */\n createPeriodicWave(real: number[] | Float32Array, imag: number[] | Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createScriptProcessor)\n */\n createScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): ScriptProcessorNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createStereoPanner) */\n createStereoPanner(): StereoPannerNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/createWaveShaper) */\n createWaveShaper(): WaveShaperNode;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BaseAudioContext/decodeAudioData) */\n decodeAudioData(audioData: ArrayBuffer, successCallback?: DecodeSuccessCallback | null, errorCallback?: DecodeErrorCallback | null): Promise;\n addEventListener(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: BaseAudioContext, ev: BaseAudioContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BaseAudioContext: {\n prototype: BaseAudioContext;\n new(): BaseAudioContext;\n};\n\n/**\n * The beforeunload event is fired when the window, the document and its resources are about to be unloaded.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BeforeUnloadEvent)\n */\ninterface BeforeUnloadEvent extends Event {\n returnValue: any;\n}\n\ndeclare var BeforeUnloadEvent: {\n prototype: BeforeUnloadEvent;\n new(): BeforeUnloadEvent;\n};\n\n/**\n * A simple low-order filter, and is created using the AudioContext.createBiquadFilter() method. It is an AudioNode that can represent different kinds of filters, tone control devices, and graphic equalizers.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode)\n */\ninterface BiquadFilterNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/Q) */\n readonly Q: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/detune) */\n readonly detune: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/frequency) */\n readonly frequency: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/gain) */\n readonly gain: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/type) */\n type: BiquadFilterType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BiquadFilterNode/getFrequencyResponse) */\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\n}\n\ndeclare var BiquadFilterNode: {\n prototype: BiquadFilterNode;\n new(context: BaseAudioContext, options?: BiquadFilterOptions): BiquadFilterNode;\n};\n\n/**\n * A file-like object of immutable, raw data. Blobs represent data that isn\'t necessarily in a JavaScript-native format. The File interface is based on Blob, inheriting blob functionality and expanding it to support files on the user\'s system.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob)\n */\ninterface Blob {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/size) */\n readonly size: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/type) */\n readonly type: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/arrayBuffer) */\n arrayBuffer(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/slice) */\n slice(start?: number, end?: number, contentType?: string): Blob;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/stream) */\n stream(): ReadableStream;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Blob/text) */\n text(): Promise;\n}\n\ndeclare var Blob: {\n prototype: Blob;\n new(blobParts?: BlobPart[], options?: BlobPropertyBag): Blob;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BlobEvent) */\ninterface BlobEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BlobEvent/data) */\n readonly data: Blob;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BlobEvent/timecode) */\n readonly timecode: DOMHighResTimeStamp;\n}\n\ndeclare var BlobEvent: {\n prototype: BlobEvent;\n new(type: string, eventInitDict: BlobEventInit): BlobEvent;\n};\n\ninterface Body {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/body) */\n readonly body: ReadableStream | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/bodyUsed) */\n readonly bodyUsed: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/arrayBuffer) */\n arrayBuffer(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/blob) */\n blob(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/formData) */\n formData(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/json) */\n json(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/text) */\n text(): Promise;\n}\n\ninterface BroadcastChannelEventMap {\n "message": MessageEvent;\n "messageerror": MessageEvent;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BroadcastChannel) */\ninterface BroadcastChannel extends EventTarget {\n /**\n * Returns the channel name (as passed to the constructor).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BroadcastChannel/name)\n */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BroadcastChannel/message_event) */\n onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/BroadcastChannel/messageerror_event) */\n onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null;\n /**\n * Closes the BroadcastChannel object, opening it up to garbage collection.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BroadcastChannel/close)\n */\n close(): void;\n /**\n * Sends the given message to other BroadcastChannel objects set up for this channel. Messages can be structured objects, e.g. nested objects and arrays.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/BroadcastChannel/postMessage)\n */\n postMessage(message: any): void;\n addEventListener(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: BroadcastChannel, ev: BroadcastChannelEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var BroadcastChannel: {\n prototype: BroadcastChannel;\n new(name: string): BroadcastChannel;\n};\n\n/**\n * This Streams API interface provides\xa0a built-in byte length queuing strategy that can be used when constructing streams.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy)\n */\ninterface ByteLengthQueuingStrategy extends QueuingStrategy {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/highWaterMark) */\n readonly highWaterMark: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ByteLengthQueuingStrategy/size) */\n readonly size: QueuingStrategySize;\n}\n\ndeclare var ByteLengthQueuingStrategy: {\n prototype: ByteLengthQueuingStrategy;\n new(init: QueuingStrategyInit): ByteLengthQueuingStrategy;\n};\n\n/**\n * A CDATA section that can be used within XML to include extended portions of unescaped text. The symbols < and & don’t need escaping as they normally do when inside a CDATA section.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CDATASection)\n */\ninterface CDATASection extends Text {\n}\n\ndeclare var CDATASection: {\n prototype: CDATASection;\n new(): CDATASection;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSAnimation) */\ninterface CSSAnimation extends Animation {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSAnimation/animationName) */\n readonly animationName: string;\n addEventListener(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: CSSAnimation, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CSSAnimation: {\n prototype: CSSAnimation;\n new(): CSSAnimation;\n};\n\n/**\n * A single condition CSS at-rule, which consists of a condition and a statement block. It is a child of CSSGroupingRule.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSConditionRule)\n */\ninterface CSSConditionRule extends CSSGroupingRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSConditionRule/conditionText) */\n readonly conditionText: string;\n}\n\ndeclare var CSSConditionRule: {\n prototype: CSSConditionRule;\n new(): CSSConditionRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSContainerRule) */\ninterface CSSContainerRule extends CSSConditionRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSContainerRule/containerName) */\n readonly containerName: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSContainerRule/containerQuery) */\n readonly containerQuery: string;\n}\n\ndeclare var CSSContainerRule: {\n prototype: CSSContainerRule;\n new(): CSSContainerRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule) */\ninterface CSSCounterStyleRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/additiveSymbols) */\n additiveSymbols: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/fallback) */\n fallback: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/name) */\n name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/negative) */\n negative: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/pad) */\n pad: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/prefix) */\n prefix: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/range) */\n range: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/speakAs) */\n speakAs: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/suffix) */\n suffix: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/symbols) */\n symbols: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSCounterStyleRule/system) */\n system: string;\n}\n\ndeclare var CSSCounterStyleRule: {\n prototype: CSSCounterStyleRule;\n new(): CSSCounterStyleRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontFaceRule) */\ninterface CSSFontFaceRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontFaceRule/style) */\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSFontFaceRule: {\n prototype: CSSFontFaceRule;\n new(): CSSFontFaceRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontFeatureValuesRule) */\ninterface CSSFontFeatureValuesRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontFeatureValuesRule/fontFamily) */\n fontFamily: string;\n}\n\ndeclare var CSSFontFeatureValuesRule: {\n prototype: CSSFontFeatureValuesRule;\n new(): CSSFontFeatureValuesRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule) */\ninterface CSSFontPaletteValuesRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/basePalette) */\n readonly basePalette: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/fontFamily) */\n readonly fontFamily: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSFontPaletteValuesRule/overrideColors) */\n readonly overrideColors: string;\n}\n\ndeclare var CSSFontPaletteValuesRule: {\n prototype: CSSFontPaletteValuesRule;\n new(): CSSFontPaletteValuesRule;\n};\n\n/**\n * Any CSS at-rule that contains other rules nested within it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSGroupingRule)\n */\ninterface CSSGroupingRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/cssRules) */\n readonly cssRules: CSSRuleList;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/deleteRule) */\n deleteRule(index: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSGroupingRule/insertRule) */\n insertRule(rule: string, index?: number): number;\n}\n\ndeclare var CSSGroupingRule: {\n prototype: CSSGroupingRule;\n new(): CSSGroupingRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSImageValue) */\ninterface CSSImageValue extends CSSStyleValue {\n}\n\ndeclare var CSSImageValue: {\n prototype: CSSImageValue;\n new(): CSSImageValue;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSImportRule) */\ninterface CSSImportRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSImportRule/href) */\n readonly href: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSImportRule/layerName) */\n readonly layerName: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSImportRule/media) */\n readonly media: MediaList;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSImportRule/styleSheet) */\n readonly styleSheet: CSSStyleSheet;\n}\n\ndeclare var CSSImportRule: {\n prototype: CSSImportRule;\n new(): CSSImportRule;\n};\n\n/**\n * An object representing a set of style for a given keyframe. It corresponds to the contains of a single keyframe of a @keyframes at-rule. It implements the CSSRule interface with a type value of 8 (CSSRule.KEYFRAME_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule)\n */\ninterface CSSKeyframeRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/keyText) */\n keyText: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframeRule/style) */\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSKeyframeRule: {\n prototype: CSSKeyframeRule;\n new(): CSSKeyframeRule;\n};\n\n/**\n * An object representing a complete set of keyframes for a CSS animation. It corresponds to the contains of a whole @keyframes at-rule. It implements the CSSRule interface with a type value of 7 (CSSRule.KEYFRAMES_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule)\n */\ninterface CSSKeyframesRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/cssRules) */\n readonly cssRules: CSSRuleList;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/name) */\n name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/appendRule) */\n appendRule(rule: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/deleteRule) */\n deleteRule(select: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeyframesRule/findRule) */\n findRule(select: string): CSSKeyframeRule | null;\n [index: number]: CSSKeyframeRule;\n}\n\ndeclare var CSSKeyframesRule: {\n prototype: CSSKeyframesRule;\n new(): CSSKeyframesRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeywordValue) */\ninterface CSSKeywordValue extends CSSStyleValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSKeywordValue/value) */\n value: string;\n}\n\ndeclare var CSSKeywordValue: {\n prototype: CSSKeywordValue;\n new(value: string): CSSKeywordValue;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSLayerBlockRule) */\ninterface CSSLayerBlockRule extends CSSGroupingRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSLayerBlockRule/name) */\n readonly name: string;\n}\n\ndeclare var CSSLayerBlockRule: {\n prototype: CSSLayerBlockRule;\n new(): CSSLayerBlockRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSLayerStatementRule) */\ninterface CSSLayerStatementRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSLayerStatementRule/nameList) */\n readonly nameList: ReadonlyArray;\n}\n\ndeclare var CSSLayerStatementRule: {\n prototype: CSSLayerStatementRule;\n new(): CSSLayerStatementRule;\n};\n\ninterface CSSMathClamp extends CSSMathValue {\n readonly lower: CSSNumericValue;\n readonly upper: CSSNumericValue;\n readonly value: CSSNumericValue;\n}\n\ndeclare var CSSMathClamp: {\n prototype: CSSMathClamp;\n new(lower: CSSNumberish, value: CSSNumberish, upper: CSSNumberish): CSSMathClamp;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathInvert) */\ninterface CSSMathInvert extends CSSMathValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathInvert/value) */\n readonly value: CSSNumericValue;\n}\n\ndeclare var CSSMathInvert: {\n prototype: CSSMathInvert;\n new(arg: CSSNumberish): CSSMathInvert;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathMax) */\ninterface CSSMathMax extends CSSMathValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathMax/values) */\n readonly values: CSSNumericArray;\n}\n\ndeclare var CSSMathMax: {\n prototype: CSSMathMax;\n new(...args: CSSNumberish[]): CSSMathMax;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathMin) */\ninterface CSSMathMin extends CSSMathValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathMin/values) */\n readonly values: CSSNumericArray;\n}\n\ndeclare var CSSMathMin: {\n prototype: CSSMathMin;\n new(...args: CSSNumberish[]): CSSMathMin;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathNegate) */\ninterface CSSMathNegate extends CSSMathValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathNegate/value) */\n readonly value: CSSNumericValue;\n}\n\ndeclare var CSSMathNegate: {\n prototype: CSSMathNegate;\n new(arg: CSSNumberish): CSSMathNegate;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathProduct) */\ninterface CSSMathProduct extends CSSMathValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathProduct/values) */\n readonly values: CSSNumericArray;\n}\n\ndeclare var CSSMathProduct: {\n prototype: CSSMathProduct;\n new(...args: CSSNumberish[]): CSSMathProduct;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathSum) */\ninterface CSSMathSum extends CSSMathValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathSum/values) */\n readonly values: CSSNumericArray;\n}\n\ndeclare var CSSMathSum: {\n prototype: CSSMathSum;\n new(...args: CSSNumberish[]): CSSMathSum;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathValue) */\ninterface CSSMathValue extends CSSNumericValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMathValue/operator) */\n readonly operator: CSSMathOperator;\n}\n\ndeclare var CSSMathValue: {\n prototype: CSSMathValue;\n new(): CSSMathValue;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent) */\ninterface CSSMatrixComponent extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMatrixComponent/matrix) */\n matrix: DOMMatrix;\n}\n\ndeclare var CSSMatrixComponent: {\n prototype: CSSMatrixComponent;\n new(matrix: DOMMatrixReadOnly, options?: CSSMatrixComponentOptions): CSSMatrixComponent;\n};\n\n/**\n * A single CSS @media rule. It implements the CSSConditionRule interface, and therefore the CSSGroupingRule and the CSSRule interface with a type value of 4 (CSSRule.MEDIA_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMediaRule)\n */\ninterface CSSMediaRule extends CSSConditionRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSMediaRule/media) */\n readonly media: MediaList;\n}\n\ndeclare var CSSMediaRule: {\n prototype: CSSMediaRule;\n new(): CSSMediaRule;\n};\n\n/**\n * An object representing a single CSS @namespace at-rule. It implements the CSSRule interface, with a type value of 10 (CSSRule.NAMESPACE_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule)\n */\ninterface CSSNamespaceRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule/namespaceURI) */\n readonly namespaceURI: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNamespaceRule/prefix) */\n readonly prefix: string;\n}\n\ndeclare var CSSNamespaceRule: {\n prototype: CSSNamespaceRule;\n new(): CSSNamespaceRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericArray) */\ninterface CSSNumericArray {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericArray/length) */\n readonly length: number;\n forEach(callbackfn: (value: CSSNumericValue, key: number, parent: CSSNumericArray) => void, thisArg?: any): void;\n [index: number]: CSSNumericValue;\n}\n\ndeclare var CSSNumericArray: {\n prototype: CSSNumericArray;\n new(): CSSNumericArray;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue) */\ninterface CSSNumericValue extends CSSStyleValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/add) */\n add(...values: CSSNumberish[]): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/div) */\n div(...values: CSSNumberish[]): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/equals) */\n equals(...value: CSSNumberish[]): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/max) */\n max(...values: CSSNumberish[]): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/min) */\n min(...values: CSSNumberish[]): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/mul) */\n mul(...values: CSSNumberish[]): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/sub) */\n sub(...values: CSSNumberish[]): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/to) */\n to(unit: string): CSSUnitValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/toSum) */\n toSum(...units: string[]): CSSMathSum;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/type) */\n type(): CSSNumericType;\n}\n\ndeclare var CSSNumericValue: {\n prototype: CSSNumericValue;\n new(): CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSNumericValue/parse) */\n parse(cssText: string): CSSNumericValue;\n};\n\n/**\n * CSSPageRule is an interface representing a single CSS @page rule. It implements the CSSRule interface with a type value of 6 (CSSRule.PAGE_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPageRule)\n */\ninterface CSSPageRule extends CSSGroupingRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPageRule/selectorText) */\n selectorText: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPageRule/style) */\n readonly style: CSSStyleDeclaration;\n}\n\ndeclare var CSSPageRule: {\n prototype: CSSPageRule;\n new(): CSSPageRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPerspective) */\ninterface CSSPerspective extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPerspective/length) */\n length: CSSPerspectiveValue;\n}\n\ndeclare var CSSPerspective: {\n prototype: CSSPerspective;\n new(length: CSSPerspectiveValue): CSSPerspective;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPropertyRule) */\ninterface CSSPropertyRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/inherits) */\n readonly inherits: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/initialValue) */\n readonly initialValue: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSPropertyRule/syntax) */\n readonly syntax: string;\n}\n\ndeclare var CSSPropertyRule: {\n prototype: CSSPropertyRule;\n new(): CSSPropertyRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRotate) */\ninterface CSSRotate extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRotate/angle) */\n angle: CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRotate/x) */\n x: CSSNumberish;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRotate/y) */\n y: CSSNumberish;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRotate/z) */\n z: CSSNumberish;\n}\n\ndeclare var CSSRotate: {\n prototype: CSSRotate;\n new(angle: CSSNumericValue): CSSRotate;\n new(x: CSSNumberish, y: CSSNumberish, z: CSSNumberish, angle: CSSNumericValue): CSSRotate;\n};\n\n/**\n * A single CSS rule. There are several types of rules, listed in the Type constants section below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRule)\n */\ninterface CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRule/cssText) */\n cssText: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRule/parentRule) */\n readonly parentRule: CSSRule | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRule/parentStyleSheet) */\n readonly parentStyleSheet: CSSStyleSheet | null;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRule/type)\n */\n readonly type: number;\n readonly STYLE_RULE: 1;\n readonly CHARSET_RULE: 2;\n readonly IMPORT_RULE: 3;\n readonly MEDIA_RULE: 4;\n readonly FONT_FACE_RULE: 5;\n readonly PAGE_RULE: 6;\n readonly NAMESPACE_RULE: 10;\n readonly KEYFRAMES_RULE: 7;\n readonly KEYFRAME_RULE: 8;\n readonly SUPPORTS_RULE: 12;\n}\n\ndeclare var CSSRule: {\n prototype: CSSRule;\n new(): CSSRule;\n readonly STYLE_RULE: 1;\n readonly CHARSET_RULE: 2;\n readonly IMPORT_RULE: 3;\n readonly MEDIA_RULE: 4;\n readonly FONT_FACE_RULE: 5;\n readonly PAGE_RULE: 6;\n readonly NAMESPACE_RULE: 10;\n readonly KEYFRAMES_RULE: 7;\n readonly KEYFRAME_RULE: 8;\n readonly SUPPORTS_RULE: 12;\n};\n\n/**\n * A CSSRuleList is an (indirect-modify only) array-like object containing an ordered collection of CSSRule objects.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRuleList)\n */\ninterface CSSRuleList {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRuleList/length) */\n readonly length: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSRuleList/item) */\n item(index: number): CSSRule | null;\n [index: number]: CSSRule;\n}\n\ndeclare var CSSRuleList: {\n prototype: CSSRuleList;\n new(): CSSRuleList;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSScale) */\ninterface CSSScale extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSScale/x) */\n x: CSSNumberish;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSScale/y) */\n y: CSSNumberish;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSScale/z) */\n z: CSSNumberish;\n}\n\ndeclare var CSSScale: {\n prototype: CSSScale;\n new(x: CSSNumberish, y: CSSNumberish, z?: CSSNumberish): CSSScale;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkew) */\ninterface CSSSkew extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkew/ax) */\n ax: CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkew/ay) */\n ay: CSSNumericValue;\n}\n\ndeclare var CSSSkew: {\n prototype: CSSSkew;\n new(ax: CSSNumericValue, ay: CSSNumericValue): CSSSkew;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkewX) */\ninterface CSSSkewX extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkewX/ax) */\n ax: CSSNumericValue;\n}\n\ndeclare var CSSSkewX: {\n prototype: CSSSkewX;\n new(ax: CSSNumericValue): CSSSkewX;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkewY) */\ninterface CSSSkewY extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSkewY/ay) */\n ay: CSSNumericValue;\n}\n\ndeclare var CSSSkewY: {\n prototype: CSSSkewY;\n new(ay: CSSNumericValue): CSSSkewY;\n};\n\n/**\n * An object that is a CSS declaration block, and exposes style information and various style-related methods and properties.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration)\n */\ninterface CSSStyleDeclaration {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/accent-color) */\n accentColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-content) */\n alignContent: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-items) */\n alignItems: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-self) */\n alignSelf: string;\n alignmentBaseline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/all) */\n all: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation) */\n animation: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-composition) */\n animationComposition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-delay) */\n animationDelay: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-direction) */\n animationDirection: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-duration) */\n animationDuration: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode) */\n animationFillMode: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count) */\n animationIterationCount: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-name) */\n animationName: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-play-state) */\n animationPlayState: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-timing-function) */\n animationTimingFunction: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/appearance) */\n appearance: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/aspect-ratio) */\n aspectRatio: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/backdrop-filter) */\n backdropFilter: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/backface-visibility) */\n backfaceVisibility: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background) */\n background: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-attachment) */\n backgroundAttachment: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-blend-mode) */\n backgroundBlendMode: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-clip) */\n backgroundClip: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-color) */\n backgroundColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-image) */\n backgroundImage: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-origin) */\n backgroundOrigin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-position) */\n backgroundPosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-position-x) */\n backgroundPositionX: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-position-y) */\n backgroundPositionY: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-repeat) */\n backgroundRepeat: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-size) */\n backgroundSize: string;\n baselineShift: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/block-size) */\n blockSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border) */\n border: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block) */\n borderBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-color) */\n borderBlockColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-end) */\n borderBlockEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-end-color) */\n borderBlockEndColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-end-style) */\n borderBlockEndStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-end-width) */\n borderBlockEndWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-start) */\n borderBlockStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-start-color) */\n borderBlockStartColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-start-style) */\n borderBlockStartStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-start-width) */\n borderBlockStartWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-style) */\n borderBlockStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-block-width) */\n borderBlockWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom) */\n borderBottom: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-color) */\n borderBottomColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius) */\n borderBottomLeftRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius) */\n borderBottomRightRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-style) */\n borderBottomStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-width) */\n borderBottomWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-collapse) */\n borderCollapse: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-color) */\n borderColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius) */\n borderEndEndRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius) */\n borderEndStartRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-image) */\n borderImage: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-image-outset) */\n borderImageOutset: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-image-repeat) */\n borderImageRepeat: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-image-slice) */\n borderImageSlice: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-image-source) */\n borderImageSource: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-image-width) */\n borderImageWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline) */\n borderInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-color) */\n borderInlineColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-end) */\n borderInlineEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color) */\n borderInlineEndColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style) */\n borderInlineEndStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width) */\n borderInlineEndWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-start) */\n borderInlineStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color) */\n borderInlineStartColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style) */\n borderInlineStartStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width) */\n borderInlineStartWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-style) */\n borderInlineStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-inline-width) */\n borderInlineWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left) */\n borderLeft: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-color) */\n borderLeftColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-style) */\n borderLeftStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-left-width) */\n borderLeftWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-radius) */\n borderRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right) */\n borderRight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-color) */\n borderRightColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-style) */\n borderRightStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-right-width) */\n borderRightWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-spacing) */\n borderSpacing: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius) */\n borderStartEndRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius) */\n borderStartStartRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-style) */\n borderStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top) */\n borderTop: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-color) */\n borderTopColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius) */\n borderTopLeftRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius) */\n borderTopRightRadius: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-style) */\n borderTopStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-width) */\n borderTopWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-width) */\n borderWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/bottom) */\n bottom: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-shadow) */\n boxShadow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-sizing) */\n boxSizing: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/break-after) */\n breakAfter: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/break-before) */\n breakBefore: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/break-inside) */\n breakInside: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/caption-side) */\n captionSide: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/caret-color) */\n caretColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/clear) */\n clear: string;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/clip)\n */\n clip: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/clip-path) */\n clipPath: string;\n clipRule: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/color) */\n color: string;\n colorInterpolation: string;\n colorInterpolationFilters: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/color-scheme) */\n colorScheme: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-count) */\n columnCount: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-fill) */\n columnFill: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-gap) */\n columnGap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-rule) */\n columnRule: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-rule-color) */\n columnRuleColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-rule-style) */\n columnRuleStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-rule-width) */\n columnRuleWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-span) */\n columnSpan: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/column-width) */\n columnWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/columns) */\n columns: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/contain) */\n contain: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-block-size) */\n containIntrinsicBlockSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-height) */\n containIntrinsicHeight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-contain-intrinsic-inline-size) */\n containIntrinsicInlineSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-size) */\n containIntrinsicSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/contain-intrinsic-width) */\n containIntrinsicWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/container) */\n container: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/container-name) */\n containerName: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/container-type) */\n containerType: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/content) */\n content: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/counter-increment) */\n counterIncrement: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/counter-reset) */\n counterReset: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/counter-set) */\n counterSet: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/cssFloat) */\n cssFloat: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/cssText) */\n cssText: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/cursor) */\n cursor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/direction) */\n direction: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/display) */\n display: string;\n dominantBaseline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/empty-cells) */\n emptyCells: string;\n fill: string;\n fillOpacity: string;\n fillRule: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/filter) */\n filter: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex) */\n flex: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-basis) */\n flexBasis: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-direction) */\n flexDirection: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-flow) */\n flexFlow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-grow) */\n flexGrow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-shrink) */\n flexShrink: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-wrap) */\n flexWrap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/float) */\n float: string;\n floodColor: string;\n floodOpacity: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font) */\n font: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-family) */\n fontFamily: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-feature-settings) */\n fontFeatureSettings: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-kerning) */\n fontKerning: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing) */\n fontOpticalSizing: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-palette) */\n fontPalette: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-size) */\n fontSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-size-adjust) */\n fontSizeAdjust: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-stretch) */\n fontStretch: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-style) */\n fontStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-synthesis) */\n fontSynthesis: string;\n fontSynthesisSmallCaps: string;\n fontSynthesisStyle: string;\n fontSynthesisWeight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant) */\n fontVariant: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates) */\n fontVariantAlternates: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant-caps) */\n fontVariantCaps: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian) */\n fontVariantEastAsian: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures) */\n fontVariantLigatures: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric) */\n fontVariantNumeric: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variant-position) */\n fontVariantPosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-variation-settings) */\n fontVariationSettings: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/font-weight) */\n fontWeight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/gap) */\n gap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid) */\n grid: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-area) */\n gridArea: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns) */\n gridAutoColumns: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow) */\n gridAutoFlow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows) */\n gridAutoRows: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-column) */\n gridColumn: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-column-end) */\n gridColumnEnd: string;\n /** @deprecated This is a legacy alias of `columnGap`. */\n gridColumnGap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-column-start) */\n gridColumnStart: string;\n /** @deprecated This is a legacy alias of `gap`. */\n gridGap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-row) */\n gridRow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-row-end) */\n gridRowEnd: string;\n /** @deprecated This is a legacy alias of `rowGap`. */\n gridRowGap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-row-start) */\n gridRowStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-template) */\n gridTemplate: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-template-areas) */\n gridTemplateAreas: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-template-columns) */\n gridTemplateColumns: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/grid-template-rows) */\n gridTemplateRows: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/height) */\n height: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/hyphenate-character) */\n hyphenateCharacter: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/hyphens) */\n hyphens: string;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/image-orientation)\n */\n imageOrientation: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/image-rendering) */\n imageRendering: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inline-size) */\n inlineSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset) */\n inset: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset-block) */\n insetBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset-block-end) */\n insetBlockEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset-block-start) */\n insetBlockStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset-inline) */\n insetInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset-inline-end) */\n insetInlineEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/inset-inline-start) */\n insetInlineStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/isolation) */\n isolation: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/justify-content) */\n justifyContent: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/justify-items) */\n justifyItems: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/justify-self) */\n justifySelf: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/left) */\n left: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/length) */\n readonly length: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/letter-spacing) */\n letterSpacing: string;\n lightingColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/line-break) */\n lineBreak: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/line-height) */\n lineHeight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/list-style) */\n listStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/list-style-image) */\n listStyleImage: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/list-style-position) */\n listStylePosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/list-style-type) */\n listStyleType: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin) */\n margin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-block) */\n marginBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-block-end) */\n marginBlockEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-block-start) */\n marginBlockStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-bottom) */\n marginBottom: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-inline) */\n marginInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-inline-end) */\n marginInlineEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-inline-start) */\n marginInlineStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-left) */\n marginLeft: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-right) */\n marginRight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/margin-top) */\n marginTop: string;\n marker: string;\n markerEnd: string;\n markerMid: string;\n markerStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask) */\n mask: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-clip) */\n maskClip: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-composite) */\n maskComposite: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-image) */\n maskImage: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-mode) */\n maskMode: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-origin) */\n maskOrigin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-position) */\n maskPosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-repeat) */\n maskRepeat: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-size) */\n maskSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-type) */\n maskType: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/math-style) */\n mathStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-block-size) */\n maxBlockSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-height) */\n maxHeight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-inline-size) */\n maxInlineSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/max-width) */\n maxWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-block-size) */\n minBlockSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-height) */\n minHeight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-inline-size) */\n minInlineSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/min-width) */\n minWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode) */\n mixBlendMode: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/object-fit) */\n objectFit: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/object-position) */\n objectPosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/offset) */\n offset: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/offset-distance) */\n offsetDistance: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/offset-path) */\n offsetPath: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/offset-rotate) */\n offsetRotate: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/opacity) */\n opacity: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/order) */\n order: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/orphans) */\n orphans: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/outline) */\n outline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/outline-color) */\n outlineColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/outline-offset) */\n outlineOffset: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/outline-style) */\n outlineStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/outline-width) */\n outlineWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow) */\n overflow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow-anchor) */\n overflowAnchor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow-clip-margin) */\n overflowClipMargin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow-wrap) */\n overflowWrap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow-x) */\n overflowX: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow-y) */\n overflowY: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior) */\n overscrollBehavior: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block) */\n overscrollBehaviorBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline) */\n overscrollBehaviorInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x) */\n overscrollBehaviorX: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y) */\n overscrollBehaviorY: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding) */\n padding: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-block) */\n paddingBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-block-end) */\n paddingBlockEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-block-start) */\n paddingBlockStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-bottom) */\n paddingBottom: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-inline) */\n paddingInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-inline-end) */\n paddingInlineEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-inline-start) */\n paddingInlineStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-left) */\n paddingLeft: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-right) */\n paddingRight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/padding-top) */\n paddingTop: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/page) */\n page: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/page-break-after) */\n pageBreakAfter: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/page-break-before) */\n pageBreakBefore: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/page-break-inside) */\n pageBreakInside: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/paint-order) */\n paintOrder: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/parentRule) */\n readonly parentRule: CSSRule | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/perspective) */\n perspective: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/perspective-origin) */\n perspectiveOrigin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/place-content) */\n placeContent: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/place-items) */\n placeItems: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/place-self) */\n placeSelf: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/pointer-events) */\n pointerEvents: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/position) */\n position: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/print-color-adjust) */\n printColorAdjust: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/quotes) */\n quotes: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/resize) */\n resize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/right) */\n right: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/rotate) */\n rotate: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/row-gap) */\n rowGap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/ruby-position) */\n rubyPosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scale) */\n scale: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-behavior) */\n scrollBehavior: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin) */\n scrollMargin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block) */\n scrollMarginBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end) */\n scrollMarginBlockEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start) */\n scrollMarginBlockStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom) */\n scrollMarginBottom: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline) */\n scrollMarginInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end) */\n scrollMarginInlineEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start) */\n scrollMarginInlineStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left) */\n scrollMarginLeft: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right) */\n scrollMarginRight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top) */\n scrollMarginTop: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding) */\n scrollPadding: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block) */\n scrollPaddingBlock: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end) */\n scrollPaddingBlockEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start) */\n scrollPaddingBlockStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom) */\n scrollPaddingBottom: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline) */\n scrollPaddingInline: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end) */\n scrollPaddingInlineEnd: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start) */\n scrollPaddingInlineStart: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left) */\n scrollPaddingLeft: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right) */\n scrollPaddingRight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top) */\n scrollPaddingTop: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align) */\n scrollSnapAlign: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop) */\n scrollSnapStop: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type) */\n scrollSnapType: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/scrollbar-gutter) */\n scrollbarGutter: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold) */\n shapeImageThreshold: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/shape-margin) */\n shapeMargin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/shape-outside) */\n shapeOutside: string;\n shapeRendering: string;\n stopColor: string;\n stopOpacity: string;\n stroke: string;\n strokeDasharray: string;\n strokeDashoffset: string;\n strokeLinecap: string;\n strokeLinejoin: string;\n strokeMiterlimit: string;\n strokeOpacity: string;\n strokeWidth: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/tab-size) */\n tabSize: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/table-layout) */\n tableLayout: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-align) */\n textAlign: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-align-last) */\n textAlignLast: string;\n textAnchor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-combine-upright) */\n textCombineUpright: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration) */\n textDecoration: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-color) */\n textDecorationColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-line) */\n textDecorationLine: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink) */\n textDecorationSkipInk: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-style) */\n textDecorationStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness) */\n textDecorationThickness: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-emphasis) */\n textEmphasis: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color) */\n textEmphasisColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position) */\n textEmphasisPosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style) */\n textEmphasisStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-indent) */\n textIndent: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-orientation) */\n textOrientation: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-overflow) */\n textOverflow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-rendering) */\n textRendering: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-shadow) */\n textShadow: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-transform) */\n textTransform: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-underline-offset) */\n textUnderlineOffset: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-underline-position) */\n textUnderlinePosition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/top) */\n top: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/touch-action) */\n touchAction: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform) */\n transform: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform-box) */\n transformBox: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform-origin) */\n transformOrigin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform-style) */\n transformStyle: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition) */\n transition: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-delay) */\n transitionDelay: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-duration) */\n transitionDuration: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-property) */\n transitionProperty: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-timing-function) */\n transitionTimingFunction: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/translate) */\n translate: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/unicode-bidi) */\n unicodeBidi: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/user-select) */\n userSelect: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/vertical-align) */\n verticalAlign: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/visibility) */\n visibility: string;\n /**\n * @deprecated This is a legacy alias of `alignContent`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-content)\n */\n webkitAlignContent: string;\n /**\n * @deprecated This is a legacy alias of `alignItems`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-items)\n */\n webkitAlignItems: string;\n /**\n * @deprecated This is a legacy alias of `alignSelf`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/align-self)\n */\n webkitAlignSelf: string;\n /**\n * @deprecated This is a legacy alias of `animation`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation)\n */\n webkitAnimation: string;\n /**\n * @deprecated This is a legacy alias of `animationDelay`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-delay)\n */\n webkitAnimationDelay: string;\n /**\n * @deprecated This is a legacy alias of `animationDirection`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-direction)\n */\n webkitAnimationDirection: string;\n /**\n * @deprecated This is a legacy alias of `animationDuration`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-duration)\n */\n webkitAnimationDuration: string;\n /**\n * @deprecated This is a legacy alias of `animationFillMode`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode)\n */\n webkitAnimationFillMode: string;\n /**\n * @deprecated This is a legacy alias of `animationIterationCount`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count)\n */\n webkitAnimationIterationCount: string;\n /**\n * @deprecated This is a legacy alias of `animationName`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-name)\n */\n webkitAnimationName: string;\n /**\n * @deprecated This is a legacy alias of `animationPlayState`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-play-state)\n */\n webkitAnimationPlayState: string;\n /**\n * @deprecated This is a legacy alias of `animationTimingFunction`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/animation-timing-function)\n */\n webkitAnimationTimingFunction: string;\n /**\n * @deprecated This is a legacy alias of `appearance`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/appearance)\n */\n webkitAppearance: string;\n /**\n * @deprecated This is a legacy alias of `backfaceVisibility`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/backface-visibility)\n */\n webkitBackfaceVisibility: string;\n /**\n * @deprecated This is a legacy alias of `backgroundClip`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-clip)\n */\n webkitBackgroundClip: string;\n /**\n * @deprecated This is a legacy alias of `backgroundOrigin`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-origin)\n */\n webkitBackgroundOrigin: string;\n /**\n * @deprecated This is a legacy alias of `backgroundSize`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/background-size)\n */\n webkitBackgroundSize: string;\n /**\n * @deprecated This is a legacy alias of `borderBottomLeftRadius`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius)\n */\n webkitBorderBottomLeftRadius: string;\n /**\n * @deprecated This is a legacy alias of `borderBottomRightRadius`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius)\n */\n webkitBorderBottomRightRadius: string;\n /**\n * @deprecated This is a legacy alias of `borderRadius`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-radius)\n */\n webkitBorderRadius: string;\n /**\n * @deprecated This is a legacy alias of `borderTopLeftRadius`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius)\n */\n webkitBorderTopLeftRadius: string;\n /**\n * @deprecated This is a legacy alias of `borderTopRightRadius`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius)\n */\n webkitBorderTopRightRadius: string;\n /**\n * @deprecated This is a legacy alias of `boxAlign`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-align)\n */\n webkitBoxAlign: string;\n /**\n * @deprecated This is a legacy alias of `boxFlex`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-flex)\n */\n webkitBoxFlex: string;\n /**\n * @deprecated This is a legacy alias of `boxOrdinalGroup`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group)\n */\n webkitBoxOrdinalGroup: string;\n /**\n * @deprecated This is a legacy alias of `boxOrient`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-orient)\n */\n webkitBoxOrient: string;\n /**\n * @deprecated This is a legacy alias of `boxPack`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-pack)\n */\n webkitBoxPack: string;\n /**\n * @deprecated This is a legacy alias of `boxShadow`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-shadow)\n */\n webkitBoxShadow: string;\n /**\n * @deprecated This is a legacy alias of `boxSizing`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/box-sizing)\n */\n webkitBoxSizing: string;\n /**\n * @deprecated This is a legacy alias of `filter`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/filter)\n */\n webkitFilter: string;\n /**\n * @deprecated This is a legacy alias of `flex`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex)\n */\n webkitFlex: string;\n /**\n * @deprecated This is a legacy alias of `flexBasis`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-basis)\n */\n webkitFlexBasis: string;\n /**\n * @deprecated This is a legacy alias of `flexDirection`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-direction)\n */\n webkitFlexDirection: string;\n /**\n * @deprecated This is a legacy alias of `flexFlow`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-flow)\n */\n webkitFlexFlow: string;\n /**\n * @deprecated This is a legacy alias of `flexGrow`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-grow)\n */\n webkitFlexGrow: string;\n /**\n * @deprecated This is a legacy alias of `flexShrink`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-shrink)\n */\n webkitFlexShrink: string;\n /**\n * @deprecated This is a legacy alias of `flexWrap`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/flex-wrap)\n */\n webkitFlexWrap: string;\n /**\n * @deprecated This is a legacy alias of `justifyContent`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/justify-content)\n */\n webkitJustifyContent: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp) */\n webkitLineClamp: string;\n /**\n * @deprecated This is a legacy alias of `mask`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask)\n */\n webkitMask: string;\n /**\n * @deprecated This is a legacy alias of `maskBorder`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-border)\n */\n webkitMaskBoxImage: string;\n /**\n * @deprecated This is a legacy alias of `maskBorderOutset`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-border-outset)\n */\n webkitMaskBoxImageOutset: string;\n /**\n * @deprecated This is a legacy alias of `maskBorderRepeat`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-border-repeat)\n */\n webkitMaskBoxImageRepeat: string;\n /**\n * @deprecated This is a legacy alias of `maskBorderSlice`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-border-slice)\n */\n webkitMaskBoxImageSlice: string;\n /**\n * @deprecated This is a legacy alias of `maskBorderSource`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-border-source)\n */\n webkitMaskBoxImageSource: string;\n /**\n * @deprecated This is a legacy alias of `maskBorderWidth`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-border-width)\n */\n webkitMaskBoxImageWidth: string;\n /**\n * @deprecated This is a legacy alias of `maskClip`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-clip)\n */\n webkitMaskClip: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite) */\n webkitMaskComposite: string;\n /**\n * @deprecated This is a legacy alias of `maskImage`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-image)\n */\n webkitMaskImage: string;\n /**\n * @deprecated This is a legacy alias of `maskOrigin`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-origin)\n */\n webkitMaskOrigin: string;\n /**\n * @deprecated This is a legacy alias of `maskPosition`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-position)\n */\n webkitMaskPosition: string;\n /**\n * @deprecated This is a legacy alias of `maskRepeat`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-repeat)\n */\n webkitMaskRepeat: string;\n /**\n * @deprecated This is a legacy alias of `maskSize`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/mask-size)\n */\n webkitMaskSize: string;\n /**\n * @deprecated This is a legacy alias of `order`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/order)\n */\n webkitOrder: string;\n /**\n * @deprecated This is a legacy alias of `perspective`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/perspective)\n */\n webkitPerspective: string;\n /**\n * @deprecated This is a legacy alias of `perspectiveOrigin`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/perspective-origin)\n */\n webkitPerspectiveOrigin: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color) */\n webkitTextFillColor: string;\n /**\n * @deprecated This is a legacy alias of `textSizeAdjust`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/text-size-adjust)\n */\n webkitTextSizeAdjust: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke) */\n webkitTextStroke: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color) */\n webkitTextStrokeColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width) */\n webkitTextStrokeWidth: string;\n /**\n * @deprecated This is a legacy alias of `transform`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform)\n */\n webkitTransform: string;\n /**\n * @deprecated This is a legacy alias of `transformOrigin`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform-origin)\n */\n webkitTransformOrigin: string;\n /**\n * @deprecated This is a legacy alias of `transformStyle`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transform-style)\n */\n webkitTransformStyle: string;\n /**\n * @deprecated This is a legacy alias of `transition`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition)\n */\n webkitTransition: string;\n /**\n * @deprecated This is a legacy alias of `transitionDelay`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-delay)\n */\n webkitTransitionDelay: string;\n /**\n * @deprecated This is a legacy alias of `transitionDuration`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-duration)\n */\n webkitTransitionDuration: string;\n /**\n * @deprecated This is a legacy alias of `transitionProperty`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-property)\n */\n webkitTransitionProperty: string;\n /**\n * @deprecated This is a legacy alias of `transitionTimingFunction`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/transition-timing-function)\n */\n webkitTransitionTimingFunction: string;\n /**\n * @deprecated This is a legacy alias of `userSelect`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/user-select)\n */\n webkitUserSelect: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/white-space) */\n whiteSpace: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/widows) */\n widows: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/width) */\n width: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/will-change) */\n willChange: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/word-break) */\n wordBreak: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/word-spacing) */\n wordSpacing: string;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/overflow-wrap)\n */\n wordWrap: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/writing-mode) */\n writingMode: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/CSS/z-index) */\n zIndex: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/getPropertyPriority) */\n getPropertyPriority(property: string): string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/getPropertyValue) */\n getPropertyValue(property: string): string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/item) */\n item(index: number): string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/removeProperty) */\n removeProperty(property: string): string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleDeclaration/setProperty) */\n setProperty(property: string, value: string | null, priority?: string): void;\n [index: number]: string;\n}\n\ndeclare var CSSStyleDeclaration: {\n prototype: CSSStyleDeclaration;\n new(): CSSStyleDeclaration;\n};\n\n/**\n * CSSStyleRule represents a single CSS style rule. It implements the CSSRule interface with a type value of 1 (CSSRule.STYLE_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleRule)\n */\ninterface CSSStyleRule extends CSSRule {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleRule/selectorText) */\n selectorText: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleRule/style) */\n readonly style: CSSStyleDeclaration;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleRule/styleMap) */\n readonly styleMap: StylePropertyMap;\n}\n\ndeclare var CSSStyleRule: {\n prototype: CSSStyleRule;\n new(): CSSStyleRule;\n};\n\n/**\n * A single CSS style sheet. It inherits properties and methods from its parent, StyleSheet.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet)\n */\ninterface CSSStyleSheet extends StyleSheet {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/cssRules) */\n readonly cssRules: CSSRuleList;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/ownerRule) */\n readonly ownerRule: CSSRule | null;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/rules)\n */\n readonly rules: CSSRuleList;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/addRule)\n */\n addRule(selector?: string, style?: string, index?: number): number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/deleteRule) */\n deleteRule(index: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/insertRule) */\n insertRule(rule: string, index?: number): number;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/removeRule)\n */\n removeRule(index?: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/replace) */\n replace(text: string): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleSheet/replaceSync) */\n replaceSync(text: string): void;\n}\n\ndeclare var CSSStyleSheet: {\n prototype: CSSStyleSheet;\n new(options?: CSSStyleSheetInit): CSSStyleSheet;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleValue) */\ninterface CSSStyleValue {\n toString(): string;\n}\n\ndeclare var CSSStyleValue: {\n prototype: CSSStyleValue;\n new(): CSSStyleValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleValue/parse) */\n parse(property: string, cssText: string): CSSStyleValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSStyleValue/parseAll) */\n parseAll(property: string, cssText: string): CSSStyleValue[];\n};\n\n/**\n * An object representing a single CSS @supports at-rule. It implements the CSSConditionRule interface, and therefore the CSSRule and CSSGroupingRule interfaces with a type value of 12 (CSSRule.SUPPORTS_RULE).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSSupportsRule)\n */\ninterface CSSSupportsRule extends CSSConditionRule {\n}\n\ndeclare var CSSSupportsRule: {\n prototype: CSSSupportsRule;\n new(): CSSSupportsRule;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformComponent) */\ninterface CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/is2D) */\n is2D: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformComponent/toMatrix) */\n toMatrix(): DOMMatrix;\n toString(): string;\n}\n\ndeclare var CSSTransformComponent: {\n prototype: CSSTransformComponent;\n new(): CSSTransformComponent;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformValue) */\ninterface CSSTransformValue extends CSSStyleValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformValue/is2D) */\n readonly is2D: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformValue/length) */\n readonly length: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransformValue/toMatrix) */\n toMatrix(): DOMMatrix;\n forEach(callbackfn: (value: CSSTransformComponent, key: number, parent: CSSTransformValue) => void, thisArg?: any): void;\n [index: number]: CSSTransformComponent;\n}\n\ndeclare var CSSTransformValue: {\n prototype: CSSTransformValue;\n new(transforms: CSSTransformComponent[]): CSSTransformValue;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransition) */\ninterface CSSTransition extends Animation {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTransition/transitionProperty) */\n readonly transitionProperty: string;\n addEventListener(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: CSSTransition, ev: AnimationEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CSSTransition: {\n prototype: CSSTransition;\n new(): CSSTransition;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTranslate) */\ninterface CSSTranslate extends CSSTransformComponent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTranslate/x) */\n x: CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTranslate/y) */\n y: CSSNumericValue;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSTranslate/z) */\n z: CSSNumericValue;\n}\n\ndeclare var CSSTranslate: {\n prototype: CSSTranslate;\n new(x: CSSNumericValue, y: CSSNumericValue, z?: CSSNumericValue): CSSTranslate;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSUnitValue) */\ninterface CSSUnitValue extends CSSNumericValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSUnitValue/unit) */\n readonly unit: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSUnitValue/value) */\n value: number;\n}\n\ndeclare var CSSUnitValue: {\n prototype: CSSUnitValue;\n new(value: number, unit: string): CSSUnitValue;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSUnparsedValue) */\ninterface CSSUnparsedValue extends CSSStyleValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSUnparsedValue/length) */\n readonly length: number;\n forEach(callbackfn: (value: CSSUnparsedSegment, key: number, parent: CSSUnparsedValue) => void, thisArg?: any): void;\n [index: number]: CSSUnparsedSegment;\n}\n\ndeclare var CSSUnparsedValue: {\n prototype: CSSUnparsedValue;\n new(members: CSSUnparsedSegment[]): CSSUnparsedValue;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue) */\ninterface CSSVariableReferenceValue {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/fallback) */\n readonly fallback: CSSUnparsedValue | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CSSVariableReferenceValue/variable) */\n variable: string;\n}\n\ndeclare var CSSVariableReferenceValue: {\n prototype: CSSVariableReferenceValue;\n new(variable: string, fallback?: CSSUnparsedValue | null): CSSVariableReferenceValue;\n};\n\n/**\n * Provides a storage mechanism for Request / Response object pairs that are cached, for example as part of the ServiceWorker life cycle. Note that the Cache interface is exposed to windowed scopes as well as workers. You don\'t have to use it in conjunction with service workers, even though it is defined in the service worker spec.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache)\n */\ninterface Cache {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/add) */\n add(request: RequestInfo | URL): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/addAll) */\n addAll(requests: RequestInfo[]): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/delete) */\n delete(request: RequestInfo | URL, options?: CacheQueryOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/keys) */\n keys(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/match) */\n match(request: RequestInfo | URL, options?: CacheQueryOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/matchAll) */\n matchAll(request?: RequestInfo | URL, options?: CacheQueryOptions): Promise>;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Cache/put) */\n put(request: RequestInfo | URL, response: Response): Promise;\n}\n\ndeclare var Cache: {\n prototype: Cache;\n new(): Cache;\n};\n\n/**\n * The storage for Cache objects.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage)\n */\ninterface CacheStorage {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/delete) */\n delete(cacheName: string): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/has) */\n has(cacheName: string): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/keys) */\n keys(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/match) */\n match(request: RequestInfo | URL, options?: MultiCacheQueryOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CacheStorage/open) */\n open(cacheName: string): Promise;\n}\n\ndeclare var CacheStorage: {\n prototype: CacheStorage;\n new(): CacheStorage;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack) */\ninterface CanvasCaptureMediaStreamTrack extends MediaStreamTrack {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack/canvas) */\n readonly canvas: HTMLCanvasElement;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasCaptureMediaStreamTrack/requestFrame) */\n requestFrame(): void;\n addEventListener(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: CanvasCaptureMediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var CanvasCaptureMediaStreamTrack: {\n prototype: CanvasCaptureMediaStreamTrack;\n new(): CanvasCaptureMediaStreamTrack;\n};\n\ninterface CanvasCompositing {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalAlpha) */\n globalAlpha: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation) */\n globalCompositeOperation: GlobalCompositeOperation;\n}\n\ninterface CanvasDrawImage {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawImage) */\n drawImage(image: CanvasImageSource, dx: number, dy: number): void;\n drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void;\n drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;\n}\n\ninterface CanvasDrawPath {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/beginPath) */\n beginPath(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clip) */\n clip(fillRule?: CanvasFillRule): void;\n clip(path: Path2D, fillRule?: CanvasFillRule): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fill) */\n fill(fillRule?: CanvasFillRule): void;\n fill(path: Path2D, fillRule?: CanvasFillRule): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInPath) */\n isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean;\n isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/isPointInStroke) */\n isPointInStroke(x: number, y: number): boolean;\n isPointInStroke(path: Path2D, x: number, y: number): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/stroke) */\n stroke(): void;\n stroke(path: Path2D): void;\n}\n\ninterface CanvasFillStrokeStyles {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillStyle) */\n fillStyle: string | CanvasGradient | CanvasPattern;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeStyle) */\n strokeStyle: string | CanvasGradient | CanvasPattern;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createConicGradient) */\n createConicGradient(startAngle: number, x: number, y: number): CanvasGradient;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createLinearGradient) */\n createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createPattern) */\n createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createRadialGradient) */\n createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;\n}\n\ninterface CanvasFilters {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/filter) */\n filter: string;\n}\n\n/**\n * An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient().\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasGradient)\n */\ninterface CanvasGradient {\n /**\n * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end.\n *\n * Throws an "IndexSizeError" DOMException if the offset is out of range. Throws a "SyntaxError" DOMException if the color cannot be parsed.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasGradient/addColorStop)\n */\n addColorStop(offset: number, color: string): void;\n}\n\ndeclare var CanvasGradient: {\n prototype: CanvasGradient;\n new(): CanvasGradient;\n};\n\ninterface CanvasImageData {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/createImageData) */\n createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n createImageData(imagedata: ImageData): ImageData;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getImageData) */\n getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/putImageData) */\n putImageData(imagedata: ImageData, dx: number, dy: number): void;\n putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void;\n}\n\ninterface CanvasImageSmoothing {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingEnabled) */\n imageSmoothingEnabled: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality) */\n imageSmoothingQuality: ImageSmoothingQuality;\n}\n\ninterface CanvasPath {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/arc) */\n arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/arcTo) */\n arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/bezierCurveTo) */\n bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/closePath) */\n closePath(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/ellipse) */\n ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineTo) */\n lineTo(x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/moveTo) */\n moveTo(x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/quadraticCurveTo) */\n quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rect) */\n rect(x: number, y: number, w: number, h: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/roundRect) */\n roundRect(x: number, y: number, w: number, h: number, radii?: number | DOMPointInit | (number | DOMPointInit)[]): void;\n}\n\ninterface CanvasPathDrawingStyles {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineCap) */\n lineCap: CanvasLineCap;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineDashOffset) */\n lineDashOffset: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineJoin) */\n lineJoin: CanvasLineJoin;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/lineWidth) */\n lineWidth: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/miterLimit) */\n miterLimit: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getLineDash) */\n getLineDash(): number[];\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash) */\n setLineDash(segments: number[]): void;\n}\n\n/**\n * An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasPattern)\n */\ninterface CanvasPattern {\n /**\n * Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasPattern/setTransform)\n */\n setTransform(transform?: DOMMatrix2DInit): void;\n}\n\ndeclare var CanvasPattern: {\n prototype: CanvasPattern;\n new(): CanvasPattern;\n};\n\ninterface CanvasRect {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/clearRect) */\n clearRect(x: number, y: number, w: number, h: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillRect) */\n fillRect(x: number, y: number, w: number, h: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeRect) */\n strokeRect(x: number, y: number, w: number, h: number): void;\n}\n\n/**\n * The CanvasRenderingContext2D interface, part of the Canvas API, provides the 2D rendering context for the drawing surface of a element. It is used for drawing shapes, text, images, and other objects.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D)\n */\ninterface CanvasRenderingContext2D extends CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/canvas) */\n readonly canvas: HTMLCanvasElement;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getContextAttributes) */\n getContextAttributes(): CanvasRenderingContext2DSettings;\n}\n\ndeclare var CanvasRenderingContext2D: {\n prototype: CanvasRenderingContext2D;\n new(): CanvasRenderingContext2D;\n};\n\ninterface CanvasShadowStyles {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowBlur) */\n shadowBlur: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowColor) */\n shadowColor: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetX) */\n shadowOffsetX: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/shadowOffsetY) */\n shadowOffsetY: number;\n}\n\ninterface CanvasState {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/restore) */\n restore(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/save) */\n save(): void;\n}\n\ninterface CanvasText {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fillText) */\n fillText(text: string, x: number, y: number, maxWidth?: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/measureText) */\n measureText(text: string): TextMetrics;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/strokeText) */\n strokeText(text: string, x: number, y: number, maxWidth?: number): void;\n}\n\ninterface CanvasTextDrawingStyles {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/direction) */\n direction: CanvasDirection;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/font) */\n font: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/fontKerning) */\n fontKerning: CanvasFontKerning;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textAlign) */\n textAlign: CanvasTextAlign;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/textBaseline) */\n textBaseline: CanvasTextBaseline;\n}\n\ninterface CanvasTransform {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/getTransform) */\n getTransform(): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/resetTransform) */\n resetTransform(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/rotate) */\n rotate(angle: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/scale) */\n scale(x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setTransform) */\n setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n setTransform(transform?: DOMMatrix2DInit): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/transform) */\n transform(a: number, b: number, c: number, d: number, e: number, f: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/translate) */\n translate(x: number, y: number): void;\n}\n\ninterface CanvasUserInterface {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/drawFocusIfNeeded) */\n drawFocusIfNeeded(element: Element): void;\n drawFocusIfNeeded(path: Path2D, element: Element): void;\n}\n\n/**\n * The ChannelMergerNode interface, often used in conjunction with its opposite, ChannelSplitterNode, reunites different mono inputs into a single output. Each input is used to fill a channel of the output. This is useful for accessing each channels separately, e.g. for performing channel mixing where gain must be separately controlled on each channel.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ChannelMergerNode)\n */\ninterface ChannelMergerNode extends AudioNode {\n}\n\ndeclare var ChannelMergerNode: {\n prototype: ChannelMergerNode;\n new(context: BaseAudioContext, options?: ChannelMergerOptions): ChannelMergerNode;\n};\n\n/**\n * The ChannelSplitterNode interface, often used in conjunction with its opposite, ChannelMergerNode, separates the different channels of an audio source into a set of mono outputs. This is useful for accessing each channel separately, e.g. for performing channel mixing where gain must be separately controlled on each channel.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ChannelSplitterNode)\n */\ninterface ChannelSplitterNode extends AudioNode {\n}\n\ndeclare var ChannelSplitterNode: {\n prototype: ChannelSplitterNode;\n new(context: BaseAudioContext, options?: ChannelSplitterOptions): ChannelSplitterNode;\n};\n\n/**\n * The CharacterData abstract interface represents a Node object that contains characters. This is an abstract interface, meaning there aren\'t any object of type CharacterData: it is implemented by other interfaces, like Text, Comment, or ProcessingInstruction which aren\'t abstract.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData)\n */\ninterface CharacterData extends Node, ChildNode, NonDocumentTypeChildNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/data) */\n data: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/length) */\n readonly length: number;\n readonly ownerDocument: Document;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/appendData) */\n appendData(data: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/deleteData) */\n deleteData(offset: number, count: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/insertData) */\n insertData(offset: number, data: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceData) */\n replaceData(offset: number, count: number, data: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/substringData) */\n substringData(offset: number, count: number): string;\n}\n\ndeclare var CharacterData: {\n prototype: CharacterData;\n new(): CharacterData;\n};\n\ninterface ChildNode extends Node {\n /**\n * Inserts nodes just after node, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/after)\n */\n after(...nodes: (Node | string)[]): void;\n /**\n * Inserts nodes just before node, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/before)\n */\n before(...nodes: (Node | string)[]): void;\n /**\n * Removes node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/remove)\n */\n remove(): void;\n /**\n * Replaces node with nodes, while replacing strings in nodes with equivalent Text nodes.\n *\n * Throws a "HierarchyRequestError" DOMException if the constraints of the node tree are violated.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CharacterData/replaceWith)\n */\n replaceWith(...nodes: (Node | string)[]): void;\n}\n\n/** @deprecated */\ninterface ClientRect extends DOMRect {\n}\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Clipboard)\n */\ninterface Clipboard extends EventTarget {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Clipboard/read) */\n read(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Clipboard/readText) */\n readText(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Clipboard/write) */\n write(data: ClipboardItems): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Clipboard/writeText) */\n writeText(data: string): Promise;\n}\n\ndeclare var Clipboard: {\n prototype: Clipboard;\n new(): Clipboard;\n};\n\n/**\n * Events providing information related to modification of the clipboard, that is cut, copy, and paste events.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ClipboardEvent)\n */\ninterface ClipboardEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ClipboardEvent/clipboardData) */\n readonly clipboardData: DataTransfer | null;\n}\n\ndeclare var ClipboardEvent: {\n prototype: ClipboardEvent;\n new(type: string, eventInitDict?: ClipboardEventInit): ClipboardEvent;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ClipboardItem)\n */\ninterface ClipboardItem {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ClipboardItem/presentationStyle) */\n readonly presentationStyle: PresentationStyle;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ClipboardItem/types) */\n readonly types: ReadonlyArray;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ClipboardItem/getType) */\n getType(type: string): Promise;\n}\n\ndeclare var ClipboardItem: {\n prototype: ClipboardItem;\n new(items: Record>, options?: ClipboardItemOptions): ClipboardItem;\n};\n\n/**\n * A CloseEvent is sent to clients using WebSockets when the connection is closed. This is delivered to the listener indicated by the WebSocket object\'s onclose attribute.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent)\n */\ninterface CloseEvent extends Event {\n /**\n * Returns the WebSocket connection close code provided by the server.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/code)\n */\n readonly code: number;\n /**\n * Returns the WebSocket connection close reason provided by the server.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/reason)\n */\n readonly reason: string;\n /**\n * Returns true if the connection closed cleanly; false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CloseEvent/wasClean)\n */\n readonly wasClean: boolean;\n}\n\ndeclare var CloseEvent: {\n prototype: CloseEvent;\n new(type: string, eventInitDict?: CloseEventInit): CloseEvent;\n};\n\n/**\n * Textual notations within markup; although it is generally not visually shown, such comments are available to be read in the source view.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Comment)\n */\ninterface Comment extends CharacterData {\n}\n\ndeclare var Comment: {\n prototype: Comment;\n new(data?: string): Comment;\n};\n\n/**\n * The DOM CompositionEvent represents events that occur due to the user indirectly entering text.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompositionEvent)\n */\ninterface CompositionEvent extends UIEvent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompositionEvent/data) */\n readonly data: string;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompositionEvent/initCompositionEvent)\n */\n initCompositionEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: WindowProxy | null, dataArg?: string): void;\n}\n\ndeclare var CompositionEvent: {\n prototype: CompositionEvent;\n new(type: string, eventInitDict?: CompositionEventInit): CompositionEvent;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream) */\ninterface CompressionStream extends GenericTransformStream {\n}\n\ndeclare var CompressionStream: {\n prototype: CompressionStream;\n new(format: CompressionFormat): CompressionStream;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ConstantSourceNode) */\ninterface ConstantSourceNode extends AudioScheduledSourceNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ConstantSourceNode/offset) */\n readonly offset: AudioParam;\n addEventListener(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: ConstantSourceNode, ev: AudioScheduledSourceNodeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var ConstantSourceNode: {\n prototype: ConstantSourceNode;\n new(context: BaseAudioContext, options?: ConstantSourceOptions): ConstantSourceNode;\n};\n\n/**\n * An AudioNode that performs a Linear Convolution on a given AudioBuffer, often used to achieve a reverb effect. A ConvolverNode always has exactly one input and one output.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ConvolverNode)\n */\ninterface ConvolverNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ConvolverNode/buffer) */\n buffer: AudioBuffer | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ConvolverNode/normalize) */\n normalize: boolean;\n}\n\ndeclare var ConvolverNode: {\n prototype: ConvolverNode;\n new(context: BaseAudioContext, options?: ConvolverOptions): ConvolverNode;\n};\n\n/**\n * This Streams API interface provides\xa0a built-in byte length queuing strategy that can be used when constructing streams.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy)\n */\ninterface CountQueuingStrategy extends QueuingStrategy {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/highWaterMark) */\n readonly highWaterMark: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CountQueuingStrategy/size) */\n readonly size: QueuingStrategySize;\n}\n\ndeclare var CountQueuingStrategy: {\n prototype: CountQueuingStrategy;\n new(init: QueuingStrategyInit): CountQueuingStrategy;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Credential)\n */\ninterface Credential {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Credential/id) */\n readonly id: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Credential/type) */\n readonly type: string;\n}\n\ndeclare var Credential: {\n prototype: Credential;\n new(): Credential;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CredentialsContainer)\n */\ninterface CredentialsContainer {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CredentialsContainer/create) */\n create(options?: CredentialCreationOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CredentialsContainer/get) */\n get(options?: CredentialRequestOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CredentialsContainer/preventSilentAccess) */\n preventSilentAccess(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CredentialsContainer/store) */\n store(credential: Credential): Promise;\n}\n\ndeclare var CredentialsContainer: {\n prototype: CredentialsContainer;\n new(): CredentialsContainer;\n};\n\n/**\n * Basic cryptography features available in the current context. It allows access to a cryptographically strong random number generator and to cryptographic primitives.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto)\n */\ninterface Crypto {\n /**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/subtle)\n */\n readonly subtle: SubtleCrypto;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/getRandomValues) */\n getRandomValues(array: T): T;\n /**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Crypto/randomUUID)\n */\n randomUUID(): `${string}-${string}-${string}-${string}-${string}`;\n}\n\ndeclare var Crypto: {\n prototype: Crypto;\n new(): Crypto;\n};\n\n/**\n * The CryptoKey dictionary of the Web Crypto API represents a cryptographic key.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey)\n */\ninterface CryptoKey {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) */\n readonly algorithm: KeyAlgorithm;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) */\n readonly extractable: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) */\n readonly type: KeyType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) */\n readonly usages: KeyUsage[];\n}\n\ndeclare var CryptoKey: {\n prototype: CryptoKey;\n new(): CryptoKey;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomElementRegistry) */\ninterface CustomElementRegistry {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/define) */\n define(name: string, constructor: CustomElementConstructor, options?: ElementDefinitionOptions): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/get) */\n get(name: string): CustomElementConstructor | undefined;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/upgrade) */\n upgrade(root: Node): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomElementRegistry/whenDefined) */\n whenDefined(name: string): Promise;\n}\n\ndeclare var CustomElementRegistry: {\n prototype: CustomElementRegistry;\n new(): CustomElementRegistry;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent) */\ninterface CustomEvent extends Event {\n /**\n * Returns any custom data event was created with. Typically used for synthetic events.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent/detail)\n */\n readonly detail: T;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/CustomEvent/initCustomEvent)\n */\n initCustomEvent(type: string, bubbles?: boolean, cancelable?: boolean, detail?: T): void;\n}\n\ndeclare var CustomEvent: {\n prototype: CustomEvent;\n new(type: string, eventInitDict?: CustomEventInit): CustomEvent;\n};\n\n/**\n * An abnormal event (called an exception) which occurs as a result of calling a method or accessing a property of a web API.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException)\n */\ninterface DOMException extends Error {\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/code)\n */\n readonly code: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/message) */\n readonly message: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMException/name) */\n readonly name: string;\n readonly INDEX_SIZE_ERR: 1;\n readonly DOMSTRING_SIZE_ERR: 2;\n readonly HIERARCHY_REQUEST_ERR: 3;\n readonly WRONG_DOCUMENT_ERR: 4;\n readonly INVALID_CHARACTER_ERR: 5;\n readonly NO_DATA_ALLOWED_ERR: 6;\n readonly NO_MODIFICATION_ALLOWED_ERR: 7;\n readonly NOT_FOUND_ERR: 8;\n readonly NOT_SUPPORTED_ERR: 9;\n readonly INUSE_ATTRIBUTE_ERR: 10;\n readonly INVALID_STATE_ERR: 11;\n readonly SYNTAX_ERR: 12;\n readonly INVALID_MODIFICATION_ERR: 13;\n readonly NAMESPACE_ERR: 14;\n readonly INVALID_ACCESS_ERR: 15;\n readonly VALIDATION_ERR: 16;\n readonly TYPE_MISMATCH_ERR: 17;\n readonly SECURITY_ERR: 18;\n readonly NETWORK_ERR: 19;\n readonly ABORT_ERR: 20;\n readonly URL_MISMATCH_ERR: 21;\n readonly QUOTA_EXCEEDED_ERR: 22;\n readonly TIMEOUT_ERR: 23;\n readonly INVALID_NODE_TYPE_ERR: 24;\n readonly DATA_CLONE_ERR: 25;\n}\n\ndeclare var DOMException: {\n prototype: DOMException;\n new(message?: string, name?: string): DOMException;\n readonly INDEX_SIZE_ERR: 1;\n readonly DOMSTRING_SIZE_ERR: 2;\n readonly HIERARCHY_REQUEST_ERR: 3;\n readonly WRONG_DOCUMENT_ERR: 4;\n readonly INVALID_CHARACTER_ERR: 5;\n readonly NO_DATA_ALLOWED_ERR: 6;\n readonly NO_MODIFICATION_ALLOWED_ERR: 7;\n readonly NOT_FOUND_ERR: 8;\n readonly NOT_SUPPORTED_ERR: 9;\n readonly INUSE_ATTRIBUTE_ERR: 10;\n readonly INVALID_STATE_ERR: 11;\n readonly SYNTAX_ERR: 12;\n readonly INVALID_MODIFICATION_ERR: 13;\n readonly NAMESPACE_ERR: 14;\n readonly INVALID_ACCESS_ERR: 15;\n readonly VALIDATION_ERR: 16;\n readonly TYPE_MISMATCH_ERR: 17;\n readonly SECURITY_ERR: 18;\n readonly NETWORK_ERR: 19;\n readonly ABORT_ERR: 20;\n readonly URL_MISMATCH_ERR: 21;\n readonly QUOTA_EXCEEDED_ERR: 22;\n readonly TIMEOUT_ERR: 23;\n readonly INVALID_NODE_TYPE_ERR: 24;\n readonly DATA_CLONE_ERR: 25;\n};\n\n/**\n * An object providing methods which are not dependent on any particular document. Such an object is returned by the Document.implementation property.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMImplementation)\n */\ninterface DOMImplementation {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMImplementation/createDocument) */\n createDocument(namespace: string | null, qualifiedName: string | null, doctype?: DocumentType | null): XMLDocument;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMImplementation/createDocumentType) */\n createDocumentType(qualifiedName: string, publicId: string, systemId: string): DocumentType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMImplementation/createHTMLDocument) */\n createHTMLDocument(title?: string): Document;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMImplementation/hasFeature)\n */\n hasFeature(...args: any[]): true;\n}\n\ndeclare var DOMImplementation: {\n prototype: DOMImplementation;\n new(): DOMImplementation;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrix) */\ninterface DOMMatrix extends DOMMatrixReadOnly {\n a: number;\n b: number;\n c: number;\n d: number;\n e: number;\n f: number;\n m11: number;\n m12: number;\n m13: number;\n m14: number;\n m21: number;\n m22: number;\n m23: number;\n m24: number;\n m31: number;\n m32: number;\n m33: number;\n m34: number;\n m41: number;\n m42: number;\n m43: number;\n m44: number;\n invertSelf(): DOMMatrix;\n multiplySelf(other?: DOMMatrixInit): DOMMatrix;\n preMultiplySelf(other?: DOMMatrixInit): DOMMatrix;\n rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n rotateFromVectorSelf(x?: number, y?: number): DOMMatrix;\n rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrix/scale3dSelf) */\n scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrix/scaleSelf) */\n scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n setMatrixValue(transformList: string): DOMMatrix;\n skewXSelf(sx?: number): DOMMatrix;\n skewYSelf(sy?: number): DOMMatrix;\n translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix;\n}\n\ndeclare var DOMMatrix: {\n prototype: DOMMatrix;\n new(init?: string | number[]): DOMMatrix;\n fromFloat32Array(array32: Float32Array): DOMMatrix;\n fromFloat64Array(array64: Float64Array): DOMMatrix;\n fromMatrix(other?: DOMMatrixInit): DOMMatrix;\n};\n\ntype SVGMatrix = DOMMatrix;\ndeclare var SVGMatrix: typeof DOMMatrix;\n\ntype WebKitCSSMatrix = DOMMatrix;\ndeclare var WebKitCSSMatrix: typeof DOMMatrix;\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly) */\ninterface DOMMatrixReadOnly {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/a) */\n readonly a: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/b) */\n readonly b: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/c) */\n readonly c: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/d) */\n readonly d: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/e) */\n readonly e: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/f) */\n readonly f: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/is2D) */\n readonly is2D: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/isIdentity) */\n readonly isIdentity: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m11) */\n readonly m11: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m12) */\n readonly m12: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m13) */\n readonly m13: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m14) */\n readonly m14: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m21) */\n readonly m21: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m22) */\n readonly m22: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m23) */\n readonly m23: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m24) */\n readonly m24: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m31) */\n readonly m31: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m32) */\n readonly m32: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m33) */\n readonly m33: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m34) */\n readonly m34: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m41) */\n readonly m41: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m42) */\n readonly m42: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m43) */\n readonly m43: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/m44) */\n readonly m44: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipX) */\n flipX(): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/flipY) */\n flipY(): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/inverse) */\n inverse(): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/multiply) */\n multiply(other?: DOMMatrixInit): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotate) */\n rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotateAxisAngle) */\n rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/rotateFromVector) */\n rotateFromVector(x?: number, y?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scale) */\n scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scale3d) */\n scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/scaleNonUniform)\n */\n scaleNonUniform(scaleX?: number, scaleY?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/skewX) */\n skewX(sx?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/skewY) */\n skewY(sy?: number): DOMMatrix;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat32Array) */\n toFloat32Array(): Float32Array;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/toFloat64Array) */\n toFloat64Array(): Float64Array;\n toJSON(): any;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/transformPoint) */\n transformPoint(point?: DOMPointInit): DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMMatrixReadOnly/translate) */\n translate(tx?: number, ty?: number, tz?: number): DOMMatrix;\n toString(): string;\n}\n\ndeclare var DOMMatrixReadOnly: {\n prototype: DOMMatrixReadOnly;\n new(init?: string | number[]): DOMMatrixReadOnly;\n fromFloat32Array(array32: Float32Array): DOMMatrixReadOnly;\n fromFloat64Array(array64: Float64Array): DOMMatrixReadOnly;\n fromMatrix(other?: DOMMatrixInit): DOMMatrixReadOnly;\n};\n\n/**\n * Provides the ability to parse XML or HTML source code from a string into a DOM Document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMParser)\n */\ninterface DOMParser {\n /**\n * Parses string using either the HTML or XML parser, according to type, and returns the resulting Document. type can be "text/html" (which will invoke the HTML parser), or any of "text/xml", "application/xml", "application/xhtml+xml", or "image/svg+xml" (which will invoke the XML parser).\n *\n * For the XML parser, if string cannot be parsed, then the returned Document will contain elements describing the resulting error.\n *\n * Note that script elements are not evaluated during parsing, and the resulting document\'s encoding will always be UTF-8.\n *\n * Values other than the above for type will cause a TypeError exception to be thrown.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMParser/parseFromString)\n */\n parseFromString(string: string, type: DOMParserSupportedType): Document;\n}\n\ndeclare var DOMParser: {\n prototype: DOMParser;\n new(): DOMParser;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint) */\ninterface DOMPoint extends DOMPointReadOnly {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/w) */\n w: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/x) */\n x: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/y) */\n y: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/z) */\n z: number;\n}\n\ndeclare var DOMPoint: {\n prototype: DOMPoint;\n new(x?: number, y?: number, z?: number, w?: number): DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPoint/fromPoint) */\n fromPoint(other?: DOMPointInit): DOMPoint;\n};\n\ntype SVGPoint = DOMPoint;\ndeclare var SVGPoint: typeof DOMPoint;\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly) */\ninterface DOMPointReadOnly {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/w) */\n readonly w: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/x) */\n readonly x: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/y) */\n readonly y: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/z) */\n readonly z: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/matrixTransform) */\n matrixTransform(matrix?: DOMMatrixInit): DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/toJSON) */\n toJSON(): any;\n}\n\ndeclare var DOMPointReadOnly: {\n prototype: DOMPointReadOnly;\n new(x?: number, y?: number, z?: number, w?: number): DOMPointReadOnly;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMPointReadOnly/fromPoint) */\n fromPoint(other?: DOMPointInit): DOMPointReadOnly;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMQuad) */\ninterface DOMQuad {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMQuad/p1) */\n readonly p1: DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMQuad/p2) */\n readonly p2: DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMQuad/p3) */\n readonly p3: DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMQuad/p4) */\n readonly p4: DOMPoint;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMQuad/getBounds) */\n getBounds(): DOMRect;\n toJSON(): any;\n}\n\ndeclare var DOMQuad: {\n prototype: DOMQuad;\n new(p1?: DOMPointInit, p2?: DOMPointInit, p3?: DOMPointInit, p4?: DOMPointInit): DOMQuad;\n fromQuad(other?: DOMQuadInit): DOMQuad;\n fromRect(other?: DOMRectInit): DOMQuad;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRect) */\ninterface DOMRect extends DOMRectReadOnly {\n height: number;\n width: number;\n x: number;\n y: number;\n}\n\ndeclare var DOMRect: {\n prototype: DOMRect;\n new(x?: number, y?: number, width?: number, height?: number): DOMRect;\n fromRect(other?: DOMRectInit): DOMRect;\n};\n\ntype SVGRect = DOMRect;\ndeclare var SVGRect: typeof DOMRect;\n\ninterface DOMRectList {\n readonly length: number;\n item(index: number): DOMRect | null;\n [index: number]: DOMRect;\n}\n\ndeclare var DOMRectList: {\n prototype: DOMRectList;\n new(): DOMRectList;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly) */\ninterface DOMRectReadOnly {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/bottom) */\n readonly bottom: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/height) */\n readonly height: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/left) */\n readonly left: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/right) */\n readonly right: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/top) */\n readonly top: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/width) */\n readonly width: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/x) */\n readonly x: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/y) */\n readonly y: number;\n toJSON(): any;\n}\n\ndeclare var DOMRectReadOnly: {\n prototype: DOMRectReadOnly;\n new(x?: number, y?: number, width?: number, height?: number): DOMRectReadOnly;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMRectReadOnly/fromRect) */\n fromRect(other?: DOMRectInit): DOMRectReadOnly;\n};\n\n/**\n * A type returned by some APIs which contains a list of DOMString (strings).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMStringList)\n */\ninterface DOMStringList {\n /**\n * Returns the number of strings in strings.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMStringList/length)\n */\n readonly length: number;\n /**\n * Returns true if strings contains string, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMStringList/contains)\n */\n contains(string: string): boolean;\n /**\n * Returns the string with index index from strings.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMStringList/item)\n */\n item(index: number): string | null;\n [index: number]: string;\n}\n\ndeclare var DOMStringList: {\n prototype: DOMStringList;\n new(): DOMStringList;\n};\n\n/**\n * Used by the dataset\xa0HTML\xa0attribute to represent data for custom attributes added to elements.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMStringMap)\n */\ninterface DOMStringMap {\n [name: string]: string | undefined;\n}\n\ndeclare var DOMStringMap: {\n prototype: DOMStringMap;\n new(): DOMStringMap;\n};\n\n/**\n * A set of space-separated tokens. Such a set is returned by Element.classList, HTMLLinkElement.relList, HTMLAnchorElement.relList, HTMLAreaElement.relList, HTMLIframeElement.sandbox, or HTMLOutputElement.htmlFor. It is indexed beginning with 0 as with JavaScript Array objects. DOMTokenList is always case-sensitive.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList)\n */\ninterface DOMTokenList {\n /**\n * Returns the number of tokens.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/length)\n */\n readonly length: number;\n /**\n * Returns the associated set as string.\n *\n * Can be set, to change the associated attribute.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/value)\n */\n value: string;\n toString(): string;\n /**\n * Adds all arguments passed, except those already present.\n *\n * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.\n *\n * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/add)\n */\n add(...tokens: string[]): void;\n /**\n * Returns true if token is present, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/contains)\n */\n contains(token: string): boolean;\n /**\n * Returns the token with index index.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/item)\n */\n item(index: number): string | null;\n /**\n * Removes arguments passed, if they are present.\n *\n * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.\n *\n * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/remove)\n */\n remove(...tokens: string[]): void;\n /**\n * Replaces token with newToken.\n *\n * Returns true if token was replaced with newToken, and false otherwise.\n *\n * Throws a "SyntaxError" DOMException if one of the arguments is the empty string.\n *\n * Throws an "InvalidCharacterError" DOMException if one of the arguments contains any ASCII whitespace.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/replace)\n */\n replace(token: string, newToken: string): boolean;\n /**\n * Returns true if token is in the associated attribute\'s supported tokens. Returns false otherwise.\n *\n * Throws a TypeError if the associated attribute has no supported tokens defined.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/supports)\n */\n supports(token: string): boolean;\n /**\n * If force is not given, "toggles" token, removing it if it\'s present and adding it if it\'s not present. If force is true, adds token (same as add()). If force is false, removes token (same as remove()).\n *\n * Returns true if token is now present, and false otherwise.\n *\n * Throws a "SyntaxError" DOMException if token is empty.\n *\n * Throws an "InvalidCharacterError" DOMException if token contains any spaces.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMTokenList/toggle)\n */\n toggle(token: string, force?: boolean): boolean;\n forEach(callbackfn: (value: string, key: number, parent: DOMTokenList) => void, thisArg?: any): void;\n [index: number]: string;\n}\n\ndeclare var DOMTokenList: {\n prototype: DOMTokenList;\n new(): DOMTokenList;\n};\n\n/**\n * Used to hold the data that is being dragged during a drag and drop operation. It may hold one or more data items, each of one or more data types. For more information about drag and drop, see HTML Drag and Drop API.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer)\n */\ninterface DataTransfer {\n /**\n * Returns the kind of operation that is currently selected. If the kind of operation isn\'t one of those that is allowed by the effectAllowed attribute, then the operation will fail.\n *\n * Can be set, to change the selected operation.\n *\n * The possible values are "none", "copy", "link", and "move".\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/dropEffect)\n */\n dropEffect: "none" | "copy" | "link" | "move";\n /**\n * Returns the kinds of operations that are to be allowed.\n *\n * Can be set (during the dragstart event), to change the allowed operations.\n *\n * The possible values are "none", "copy", "copyLink", "copyMove", "link", "linkMove", "move", "all", and "uninitialized",\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/effectAllowed)\n */\n effectAllowed: "none" | "copy" | "copyLink" | "copyMove" | "link" | "linkMove" | "move" | "all" | "uninitialized";\n /**\n * Returns a FileList of the files being dragged, if any.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/files)\n */\n readonly files: FileList;\n /**\n * Returns a DataTransferItemList object, with the drag data.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/items)\n */\n readonly items: DataTransferItemList;\n /**\n * Returns a frozen array listing the formats that were set in the dragstart event. In addition, if any files are being dragged, then one of the types will be the string "Files".\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/types)\n */\n readonly types: ReadonlyArray;\n /**\n * Removes the data of the specified formats. Removes all data if the argument is omitted.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/clearData)\n */\n clearData(format?: string): void;\n /**\n * Returns the specified data. If there is no such data, returns the empty string.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/getData)\n */\n getData(format: string): string;\n /**\n * Adds the specified data.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/setData)\n */\n setData(format: string, data: string): void;\n /**\n * Uses the given element to update the drag feedback, replacing any previously specified feedback.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransfer/setDragImage)\n */\n setDragImage(image: Element, x: number, y: number): void;\n}\n\ndeclare var DataTransfer: {\n prototype: DataTransfer;\n new(): DataTransfer;\n};\n\n/**\n * One drag data item. During a drag operation, each drag event has a dataTransfer property which contains a list of drag data items. Each item in the list is a DataTransferItem object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItem)\n */\ninterface DataTransferItem {\n /**\n * Returns the drag data item kind, one of: "string", "file".\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItem/kind)\n */\n readonly kind: string;\n /**\n * Returns the drag data item type string.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItem/type)\n */\n readonly type: string;\n /**\n * Returns a File object, if the drag data item kind is File.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsFile)\n */\n getAsFile(): File | null;\n /**\n * Invokes the callback with the string data as the argument, if the drag data item kind is text.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItem/getAsString)\n */\n getAsString(callback: FunctionStringCallback | null): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItem/webkitGetAsEntry) */\n webkitGetAsEntry(): FileSystemEntry | null;\n}\n\ndeclare var DataTransferItem: {\n prototype: DataTransferItem;\n new(): DataTransferItem;\n};\n\n/**\n * A list of DataTransferItem objects representing items being dragged. During a drag operation, each DragEvent has a dataTransfer property and that property is a DataTransferItemList.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItemList)\n */\ninterface DataTransferItemList {\n /**\n * Returns the number of items in the drag data store.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItemList/length)\n */\n readonly length: number;\n /**\n * Adds a new entry for the given data to the drag data store. If the data is plain text then a type string has to be provided also.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItemList/add)\n */\n add(data: string, type: string): DataTransferItem | null;\n add(data: File): DataTransferItem | null;\n /**\n * Removes all the entries in the drag data store.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItemList/clear)\n */\n clear(): void;\n /**\n * Removes the indexth entry in the drag data store.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DataTransferItemList/remove)\n */\n remove(index: number): void;\n [index: number]: DataTransferItem;\n}\n\ndeclare var DataTransferItemList: {\n prototype: DataTransferItemList;\n new(): DataTransferItemList;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DecompressionStream) */\ninterface DecompressionStream extends GenericTransformStream {\n}\n\ndeclare var DecompressionStream: {\n prototype: DecompressionStream;\n new(format: CompressionFormat): DecompressionStream;\n};\n\n/**\n * A delay-line; an AudioNode audio-processing module that causes a delay between the arrival of an input data and its propagation to the output.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DelayNode)\n */\ninterface DelayNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DelayNode/delayTime) */\n readonly delayTime: AudioParam;\n}\n\ndeclare var DelayNode: {\n prototype: DelayNode;\n new(context: BaseAudioContext, options?: DelayOptions): DelayNode;\n};\n\n/**\n * The DeviceMotionEvent provides web developers with information about the speed of changes for the device\'s position and orientation.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent)\n */\ninterface DeviceMotionEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/acceleration) */\n readonly acceleration: DeviceMotionEventAcceleration | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/accelerationIncludingGravity) */\n readonly accelerationIncludingGravity: DeviceMotionEventAcceleration | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/interval) */\n readonly interval: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEvent/rotationRate) */\n readonly rotationRate: DeviceMotionEventRotationRate | null;\n}\n\ndeclare var DeviceMotionEvent: {\n prototype: DeviceMotionEvent;\n new(type: string, eventInitDict?: DeviceMotionEventInit): DeviceMotionEvent;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration)\n */\ninterface DeviceMotionEventAcceleration {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/x) */\n readonly x: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/y) */\n readonly y: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventAcceleration/z) */\n readonly z: number | null;\n}\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate)\n */\ninterface DeviceMotionEventRotationRate {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/alpha) */\n readonly alpha: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/beta) */\n readonly beta: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceMotionEventRotationRate/gamma) */\n readonly gamma: number | null;\n}\n\n/**\n * The DeviceOrientationEvent provides web developers with information from the physical orientation of the device running the web page.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent)\n */\ninterface DeviceOrientationEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/absolute) */\n readonly absolute: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/alpha) */\n readonly alpha: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/beta) */\n readonly beta: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DeviceOrientationEvent/gamma) */\n readonly gamma: number | null;\n}\n\ndeclare var DeviceOrientationEvent: {\n prototype: DeviceOrientationEvent;\n new(type: string, eventInitDict?: DeviceOrientationEventInit): DeviceOrientationEvent;\n};\n\ninterface DocumentEventMap extends GlobalEventHandlersEventMap {\n "DOMContentLoaded": Event;\n "fullscreenchange": Event;\n "fullscreenerror": Event;\n "pointerlockchange": Event;\n "pointerlockerror": Event;\n "readystatechange": Event;\n "visibilitychange": Event;\n}\n\n/**\n * Any web page loaded in the browser and serves as an entry point into the web page\'s content, which is the DOM tree.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document)\n */\ninterface Document extends Node, DocumentOrShadowRoot, FontFaceSource, GlobalEventHandlers, NonElementParentNode, ParentNode, XPathEvaluatorBase {\n /**\n * Sets or gets the URL for the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/URL)\n */\n readonly URL: string;\n /**\n * Sets or gets the color of all active links in the document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/alinkColor)\n */\n alinkColor: string;\n /**\n * Returns a reference to the collection of elements contained by the object.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/all)\n */\n readonly all: HTMLAllCollection;\n /**\n * Retrieves a collection of all a objects that have a name and/or id property. Objects in this collection are in HTML source order.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/anchors)\n */\n readonly anchors: HTMLCollectionOf;\n /**\n * Retrieves a collection of all applet objects in the document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/applets)\n */\n readonly applets: HTMLCollection;\n /**\n * Deprecated. Sets or retrieves a value that indicates the background color behind the object.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/bgColor)\n */\n bgColor: string;\n /**\n * Specifies the beginning and end of the document body.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/body)\n */\n body: HTMLElement;\n /**\n * Returns document\'s encoding.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/characterSet)\n */\n readonly characterSet: string;\n /**\n * Gets or sets the character set used to encode the object.\n * @deprecated This is a legacy alias of `characterSet`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/characterSet)\n */\n readonly charset: string;\n /**\n * Gets a value that indicates whether standards-compliant mode is switched on for the object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/compatMode)\n */\n readonly compatMode: string;\n /**\n * Returns document\'s content type.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/contentType)\n */\n readonly contentType: string;\n /**\n * Returns the HTTP cookies that apply to the Document. If there are no cookies or cookies can\'t be applied to this resource, the empty string will be returned.\n *\n * Can be set, to add a new cookie to the element\'s set of HTTP cookies.\n *\n * If the contents are sandboxed into a unique origin (e.g. in an iframe with the sandbox attribute), a "SecurityError" DOMException will be thrown on getting and setting.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/cookie)\n */\n cookie: string;\n /**\n * Returns the script element, or the SVG script element, that is currently executing, as long as the element represents a classic script. In the case of reentrant script execution, returns the one that most recently started executing amongst those that have not yet finished executing.\n *\n * Returns null if the Document is not currently executing a script or SVG script element (e.g., because the running script is an event handler, or a timeout), or if the currently executing script or SVG script element represents a module script.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/currentScript)\n */\n readonly currentScript: HTMLOrSVGScriptElement | null;\n /**\n * Returns the Window object of the active document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/defaultView)\n */\n readonly defaultView: (WindowProxy & typeof globalThis) | null;\n /**\n * Sets or gets a value that indicates whether the document can be edited.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/designMode)\n */\n designMode: string;\n /**\n * Sets or retrieves a value that indicates the reading order of the object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/dir)\n */\n dir: string;\n /**\n * Gets an object representing the document type declaration associated with the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/doctype)\n */\n readonly doctype: DocumentType | null;\n /**\n * Gets a reference to the root node of the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/documentElement)\n */\n readonly documentElement: HTMLElement;\n /**\n * Returns document\'s URL.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/documentURI)\n */\n readonly documentURI: string;\n /**\n * Sets or gets the security domain of the document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/domain)\n */\n domain: string;\n /**\n * Retrieves a collection of all embed objects in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/embeds)\n */\n readonly embeds: HTMLCollectionOf;\n /**\n * Sets or gets the foreground (text) color of the document.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fgColor)\n */\n fgColor: string;\n /**\n * Retrieves a collection, in source order, of all form objects in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/forms)\n */\n readonly forms: HTMLCollectionOf;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreen)\n */\n readonly fullscreen: boolean;\n /**\n * Returns true if document has the ability to display elements fullscreen and fullscreen is supported, or false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenEnabled)\n */\n readonly fullscreenEnabled: boolean;\n /**\n * Returns the head element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/head)\n */\n readonly head: HTMLHeadElement;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/hidden) */\n readonly hidden: boolean;\n /**\n * Retrieves a collection, in source order, of img objects in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/images)\n */\n readonly images: HTMLCollectionOf;\n /**\n * Gets the implementation object of the current document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/implementation)\n */\n readonly implementation: DOMImplementation;\n /**\n * Returns the character encoding used to create the webpage that is loaded into the document object.\n * @deprecated This is a legacy alias of `characterSet`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/characterSet)\n */\n readonly inputEncoding: string;\n /**\n * Gets the date that the page was last modified, if the page supplies one.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/lastModified)\n */\n readonly lastModified: string;\n /**\n * Sets or gets the color of the document links.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/linkColor)\n */\n linkColor: string;\n /**\n * Retrieves a collection of all a objects that specify the href property and all area objects in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/links)\n */\n readonly links: HTMLCollectionOf;\n /**\n * Contains information about the current URL.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/location)\n */\n get location(): Location;\n set location(href: string | Location);\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenchange_event) */\n onfullscreenchange: ((this: Document, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenerror_event) */\n onfullscreenerror: ((this: Document, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pointerlockchange_event) */\n onpointerlockchange: ((this: Document, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pointerlockerror_event) */\n onpointerlockerror: ((this: Document, ev: Event) => any) | null;\n /**\n * Fires when the state of the object has changed.\n * @param ev The event\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/readystatechange_event)\n */\n onreadystatechange: ((this: Document, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/visibilitychange_event) */\n onvisibilitychange: ((this: Document, ev: Event) => any) | null;\n readonly ownerDocument: null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureEnabled) */\n readonly pictureInPictureEnabled: boolean;\n /**\n * Return an HTMLCollection of the embed elements in the Document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/plugins)\n */\n readonly plugins: HTMLCollectionOf;\n /**\n * Retrieves a value that indicates the current state of the object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/readyState)\n */\n readonly readyState: DocumentReadyState;\n /**\n * Gets the URL of the location that referred the user to the current page.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/referrer)\n */\n readonly referrer: string;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/rootElement)\n */\n readonly rootElement: SVGSVGElement | null;\n /**\n * Retrieves a collection of all script objects in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scripts)\n */\n readonly scripts: HTMLCollectionOf;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scrollingElement) */\n readonly scrollingElement: Element | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/timeline) */\n readonly timeline: DocumentTimeline;\n /**\n * Contains the title of the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/title)\n */\n title: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/visibilityState) */\n readonly visibilityState: DocumentVisibilityState;\n /**\n * Sets or gets the color of the links that the user has visited.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/vlinkColor)\n */\n vlinkColor: string;\n /**\n * Moves node from another document and returns it.\n *\n * If node is a document, throws a "NotSupportedError" DOMException or, if node is a shadow root, throws a "HierarchyRequestError" DOMException.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/adoptNode)\n */\n adoptNode(node: T): T;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/captureEvents)\n */\n captureEvents(): void;\n /** @deprecated */\n caretRangeFromPoint(x: number, y: number): Range | null;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/clear)\n */\n clear(): void;\n /**\n * Closes an output stream and forces the sent data to display.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/close)\n */\n close(): void;\n /**\n * Creates an attribute object with a specified name.\n * @param name String that sets the attribute object\'s name.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createAttribute)\n */\n createAttribute(localName: string): Attr;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createAttributeNS) */\n createAttributeNS(namespace: string | null, qualifiedName: string): Attr;\n /**\n * Returns a CDATASection node whose data is data.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createCDATASection)\n */\n createCDATASection(data: string): CDATASection;\n /**\n * Creates a comment object with the specified data.\n * @param data Sets the comment object\'s data.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createComment)\n */\n createComment(data: string): Comment;\n /**\n * Creates a new document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createDocumentFragment)\n */\n createDocumentFragment(): DocumentFragment;\n /**\n * Creates an instance of the element for the specified tag.\n * @param tagName The name of an element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createElement)\n */\n createElement(tagName: K, options?: ElementCreationOptions): HTMLElementTagNameMap[K];\n /** @deprecated */\n createElement(tagName: K, options?: ElementCreationOptions): HTMLElementDeprecatedTagNameMap[K];\n createElement(tagName: string, options?: ElementCreationOptions): HTMLElement;\n /**\n * Returns an element with namespace namespace. Its namespace prefix will be everything before ":" (U+003E) in qualifiedName or null. Its local name will be everything after ":" (U+003E) in qualifiedName or qualifiedName.\n *\n * If localName does not match the Name production an "InvalidCharacterError" DOMException will be thrown.\n *\n * If one of the following conditions is true a "NamespaceError" DOMException will be thrown:\n *\n * localName does not match the QName production.\n * Namespace prefix is not null and namespace is the empty string.\n * Namespace prefix is "xml" and namespace is not the XML namespace.\n * qualifiedName or namespace prefix is "xmlns" and namespace is not the XMLNS namespace.\n * namespace is the XMLNS namespace and neither qualifiedName nor namespace prefix is "xmlns".\n *\n * When supplied, options\'s is can be used to create a customized built-in element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createElementNS)\n */\n createElementNS(namespaceURI: "http://www.w3.org/1999/xhtml", qualifiedName: string): HTMLElement;\n createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: K): SVGElementTagNameMap[K];\n createElementNS(namespaceURI: "http://www.w3.org/2000/svg", qualifiedName: string): SVGElement;\n createElementNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", qualifiedName: K): MathMLElementTagNameMap[K];\n createElementNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", qualifiedName: string): MathMLElement;\n createElementNS(namespaceURI: string | null, qualifiedName: string, options?: ElementCreationOptions): Element;\n createElementNS(namespace: string | null, qualifiedName: string, options?: string | ElementCreationOptions): Element;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createEvent) */\n createEvent(eventInterface: "AnimationEvent"): AnimationEvent;\n createEvent(eventInterface: "AnimationPlaybackEvent"): AnimationPlaybackEvent;\n createEvent(eventInterface: "AudioProcessingEvent"): AudioProcessingEvent;\n createEvent(eventInterface: "BeforeUnloadEvent"): BeforeUnloadEvent;\n createEvent(eventInterface: "BlobEvent"): BlobEvent;\n createEvent(eventInterface: "ClipboardEvent"): ClipboardEvent;\n createEvent(eventInterface: "CloseEvent"): CloseEvent;\n createEvent(eventInterface: "CompositionEvent"): CompositionEvent;\n createEvent(eventInterface: "CustomEvent"): CustomEvent;\n createEvent(eventInterface: "DeviceMotionEvent"): DeviceMotionEvent;\n createEvent(eventInterface: "DeviceOrientationEvent"): DeviceOrientationEvent;\n createEvent(eventInterface: "DragEvent"): DragEvent;\n createEvent(eventInterface: "ErrorEvent"): ErrorEvent;\n createEvent(eventInterface: "Event"): Event;\n createEvent(eventInterface: "Events"): Event;\n createEvent(eventInterface: "FocusEvent"): FocusEvent;\n createEvent(eventInterface: "FontFaceSetLoadEvent"): FontFaceSetLoadEvent;\n createEvent(eventInterface: "FormDataEvent"): FormDataEvent;\n createEvent(eventInterface: "GamepadEvent"): GamepadEvent;\n createEvent(eventInterface: "HashChangeEvent"): HashChangeEvent;\n createEvent(eventInterface: "IDBVersionChangeEvent"): IDBVersionChangeEvent;\n createEvent(eventInterface: "InputEvent"): InputEvent;\n createEvent(eventInterface: "KeyboardEvent"): KeyboardEvent;\n createEvent(eventInterface: "MIDIConnectionEvent"): MIDIConnectionEvent;\n createEvent(eventInterface: "MIDIMessageEvent"): MIDIMessageEvent;\n createEvent(eventInterface: "MediaEncryptedEvent"): MediaEncryptedEvent;\n createEvent(eventInterface: "MediaKeyMessageEvent"): MediaKeyMessageEvent;\n createEvent(eventInterface: "MediaQueryListEvent"): MediaQueryListEvent;\n createEvent(eventInterface: "MediaStreamTrackEvent"): MediaStreamTrackEvent;\n createEvent(eventInterface: "MessageEvent"): MessageEvent;\n createEvent(eventInterface: "MouseEvent"): MouseEvent;\n createEvent(eventInterface: "MouseEvents"): MouseEvent;\n createEvent(eventInterface: "MutationEvent"): MutationEvent;\n createEvent(eventInterface: "MutationEvents"): MutationEvent;\n createEvent(eventInterface: "OfflineAudioCompletionEvent"): OfflineAudioCompletionEvent;\n createEvent(eventInterface: "PageTransitionEvent"): PageTransitionEvent;\n createEvent(eventInterface: "PaymentMethodChangeEvent"): PaymentMethodChangeEvent;\n createEvent(eventInterface: "PaymentRequestUpdateEvent"): PaymentRequestUpdateEvent;\n createEvent(eventInterface: "PictureInPictureEvent"): PictureInPictureEvent;\n createEvent(eventInterface: "PointerEvent"): PointerEvent;\n createEvent(eventInterface: "PopStateEvent"): PopStateEvent;\n createEvent(eventInterface: "ProgressEvent"): ProgressEvent;\n createEvent(eventInterface: "PromiseRejectionEvent"): PromiseRejectionEvent;\n createEvent(eventInterface: "RTCDTMFToneChangeEvent"): RTCDTMFToneChangeEvent;\n createEvent(eventInterface: "RTCDataChannelEvent"): RTCDataChannelEvent;\n createEvent(eventInterface: "RTCErrorEvent"): RTCErrorEvent;\n createEvent(eventInterface: "RTCPeerConnectionIceErrorEvent"): RTCPeerConnectionIceErrorEvent;\n createEvent(eventInterface: "RTCPeerConnectionIceEvent"): RTCPeerConnectionIceEvent;\n createEvent(eventInterface: "RTCTrackEvent"): RTCTrackEvent;\n createEvent(eventInterface: "SecurityPolicyViolationEvent"): SecurityPolicyViolationEvent;\n createEvent(eventInterface: "SpeechSynthesisErrorEvent"): SpeechSynthesisErrorEvent;\n createEvent(eventInterface: "SpeechSynthesisEvent"): SpeechSynthesisEvent;\n createEvent(eventInterface: "StorageEvent"): StorageEvent;\n createEvent(eventInterface: "SubmitEvent"): SubmitEvent;\n createEvent(eventInterface: "TouchEvent"): TouchEvent;\n createEvent(eventInterface: "TrackEvent"): TrackEvent;\n createEvent(eventInterface: "TransitionEvent"): TransitionEvent;\n createEvent(eventInterface: "UIEvent"): UIEvent;\n createEvent(eventInterface: "UIEvents"): UIEvent;\n createEvent(eventInterface: "WebGLContextEvent"): WebGLContextEvent;\n createEvent(eventInterface: "WheelEvent"): WheelEvent;\n createEvent(eventInterface: string): Event;\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n * @param root The root element or node to start traversing on.\n * @param whatToShow The type of nodes or elements to appear in the node list\n * @param filter A custom NodeFilter function to use. For more information, see filter. Use null for no filter.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createNodeIterator)\n */\n createNodeIterator(root: Node, whatToShow?: number, filter?: NodeFilter | null): NodeIterator;\n /**\n * Returns a ProcessingInstruction node whose target is target and data is data. If target does not match the Name production an "InvalidCharacterError" DOMException will be thrown. If data contains "?>" an "InvalidCharacterError" DOMException will be thrown.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createProcessingInstruction)\n */\n createProcessingInstruction(target: string, data: string): ProcessingInstruction;\n /**\n * Returns an empty range object that has both of its boundary points positioned at the beginning of the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createRange)\n */\n createRange(): Range;\n /**\n * Creates a text string from the specified value.\n * @param data String that specifies the nodeValue property of the text node.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createTextNode)\n */\n createTextNode(data: string): Text;\n /**\n * Creates a TreeWalker object that you can use to traverse filtered lists of nodes or elements in a document.\n * @param root The root element or node to start traversing on.\n * @param whatToShow The type of nodes or elements to appear in the node list. For more information, see whatToShow.\n * @param filter A custom NodeFilter function to use.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/createTreeWalker)\n */\n createTreeWalker(root: Node, whatToShow?: number, filter?: NodeFilter | null): TreeWalker;\n /**\n * Executes a command on the current document, current selection, or the given range.\n * @param commandId String that specifies the command to execute. This command can be any of the command identifiers that can be executed in script.\n * @param showUI Display the user interface, defaults to false.\n * @param value Value to assign.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/execCommand)\n */\n execCommand(commandId: string, showUI?: boolean, value?: string): boolean;\n /**\n * Stops document\'s fullscreen element from being displayed fullscreen and resolves promise when done.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/exitFullscreen)\n */\n exitFullscreen(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/exitPictureInPicture) */\n exitPictureInPicture(): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/exitPointerLock) */\n exitPointerLock(): void;\n /**\n * Returns a reference to the first object with the specified value of the ID attribute.\n * @param elementId String that specifies the ID value.\n */\n getElementById(elementId: string): HTMLElement | null;\n /**\n * Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByClassName)\n */\n getElementsByClassName(classNames: string): HTMLCollectionOf;\n /**\n * Gets a collection of objects based on the value of the NAME or ID attribute.\n * @param elementName Gets a collection of objects based on the value of the NAME or ID attribute.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByName)\n */\n getElementsByName(elementName: string): NodeListOf;\n /**\n * Retrieves a collection of objects based on the specified element name.\n * @param name Specifies the name of an element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagName)\n */\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n /** @deprecated */\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf;\n /**\n * If namespace and localName are "*" returns a HTMLCollection of all descendant elements.\n *\n * If only namespace is "*" returns a HTMLCollection of all descendant elements whose local name is localName.\n *\n * If only localName is "*" returns a HTMLCollection of all descendant elements whose namespace is namespace.\n *\n * Otherwise, returns a HTMLCollection of all descendant elements whose namespace is namespace and local name is localName.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getElementsByTagNameNS)\n */\n getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf;\n /**\n * Returns an object representing the current selection of the document that is loaded into the object displaying a webpage.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getSelection)\n */\n getSelection(): Selection | null;\n /**\n * Gets a value indicating whether the object currently has focus.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/hasFocus)\n */\n hasFocus(): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/hasStorageAccess) */\n hasStorageAccess(): Promise;\n /**\n * Returns a copy of node. If deep is true, the copy also includes the node\'s descendants.\n *\n * If node is a document or a shadow root, throws a "NotSupportedError" DOMException.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/importNode)\n */\n importNode(node: T, deep?: boolean): T;\n /**\n * Opens a new window and loads a document specified by a given URL. Also, opens a new window that uses the url parameter and the name parameter to collect the output of the write method and the writeln method.\n * @param url Specifies a MIME type for the document.\n * @param name Specifies the name of the window. This name is used as the value for the TARGET attribute on a form or an anchor element.\n * @param features Contains a list of items separated by commas. Each item consists of an option and a value, separated by an equals sign (for example, "fullscreen=yes, toolbar=yes"). The following values are supported.\n * @param replace Specifies whether the existing entry for the document is replaced in the history list.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/open)\n */\n open(unused1?: string, unused2?: string): Document;\n open(url: string | URL, name: string, features: string): WindowProxy | null;\n /**\n * Returns a Boolean value that indicates whether a specified command can be successfully executed using execCommand, given the current state of the document.\n * @param commandId Specifies a command identifier.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandEnabled)\n */\n queryCommandEnabled(commandId: string): boolean;\n /**\n * Returns a Boolean value that indicates whether the specified command is in the indeterminate state.\n * @param commandId String that specifies a command identifier.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandIndeterm)\n */\n queryCommandIndeterm(commandId: string): boolean;\n /**\n * Returns a Boolean value that indicates the current state of the command.\n * @param commandId String that specifies a command identifier.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandState)\n */\n queryCommandState(commandId: string): boolean;\n /**\n * Returns a Boolean value that indicates whether the current command is supported on the current range.\n * @param commandId Specifies a command identifier.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandSupported)\n */\n queryCommandSupported(commandId: string): boolean;\n /**\n * Returns the current value of the document, range, or current selection for the given command.\n * @param commandId String that specifies a command identifier.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/queryCommandValue)\n */\n queryCommandValue(commandId: string): string;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/releaseEvents)\n */\n releaseEvents(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/requestStorageAccess) */\n requestStorageAccess(): Promise;\n /**\n * Writes one or more HTML expressions to a document in the specified window.\n * @param content Specifies the text and HTML tags to write.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/write)\n */\n write(...text: string[]): void;\n /**\n * Writes one or more HTML expressions, followed by a carriage return, to a document in the specified window.\n * @param content The text and HTML tags to write.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/writeln)\n */\n writeln(...text: string[]): void;\n addEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Document: {\n prototype: Document;\n new(): Document;\n};\n\n/**\n * A minimal document object that has no parent. It is used as a lightweight version of Document that stores a segment of a document structure comprised of nodes just like a standard document. The key difference is that because the document fragment isn\'t part of the active document tree structure, changes made to the fragment don\'t affect the document, cause reflow, or incur any performance impact that can occur when changes are made.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentFragment)\n */\ninterface DocumentFragment extends Node, NonElementParentNode, ParentNode {\n readonly ownerDocument: Document;\n getElementById(elementId: string): HTMLElement | null;\n}\n\ndeclare var DocumentFragment: {\n prototype: DocumentFragment;\n new(): DocumentFragment;\n};\n\ninterface DocumentOrShadowRoot {\n /**\n * Returns the deepest element in the document through which or to which key events are being routed. This is, roughly speaking, the focused element in the document.\n *\n * For the purposes of this API, when a child browsing context is focused, its container is focused in the parent browsing context. For example, if the user moves the focus to a text control in an iframe, the iframe is the element returned by the activeElement API in the iframe\'s node document.\n *\n * Similarly, when the focused element is in a different node tree than documentOrShadowRoot, the element returned will be the host that\'s located in the same node tree as documentOrShadowRoot if documentOrShadowRoot is a shadow-including inclusive ancestor of the focused element, and null if not.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/activeElement)\n */\n readonly activeElement: Element | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/adoptedStyleSheets) */\n adoptedStyleSheets: CSSStyleSheet[];\n /**\n * Returns document\'s fullscreen element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fullscreenElement)\n */\n readonly fullscreenElement: Element | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pictureInPictureElement) */\n readonly pictureInPictureElement: Element | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/pointerLockElement) */\n readonly pointerLockElement: Element | null;\n /**\n * Retrieves a collection of styleSheet objects representing the style sheets that correspond to each instance of a link or style object in the document.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/styleSheets)\n */\n readonly styleSheets: StyleSheetList;\n /**\n * Returns the element for the specified x coordinate and the specified y coordinate.\n * @param x The x-offset\n * @param y The y-offset\n */\n elementFromPoint(x: number, y: number): Element | null;\n elementsFromPoint(x: number, y: number): Element[];\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/getAnimations) */\n getAnimations(): Animation[];\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentTimeline) */\ninterface DocumentTimeline extends AnimationTimeline {\n}\n\ndeclare var DocumentTimeline: {\n prototype: DocumentTimeline;\n new(options?: DocumentTimelineOptions): DocumentTimeline;\n};\n\n/**\n * A Node containing a doctype.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType)\n */\ninterface DocumentType extends Node, ChildNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType/name) */\n readonly name: string;\n readonly ownerDocument: Document;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType/publicId) */\n readonly publicId: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DocumentType/systemId) */\n readonly systemId: string;\n}\n\ndeclare var DocumentType: {\n prototype: DocumentType;\n new(): DocumentType;\n};\n\n/**\n * A DOM event that represents a drag and drop interaction. The user initiates a drag by placing a pointer device (such as a mouse) on the touch surface and then dragging the pointer to a new location (such as another DOM element). Applications are free to interpret a drag and drop interaction in an application-specific way.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DragEvent)\n */\ninterface DragEvent extends MouseEvent {\n /**\n * Returns the DataTransfer object for the event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DragEvent/dataTransfer)\n */\n readonly dataTransfer: DataTransfer | null;\n}\n\ndeclare var DragEvent: {\n prototype: DragEvent;\n new(type: string, eventInitDict?: DragEventInit): DragEvent;\n};\n\n/**\n * Inherits properties from its parent, AudioNode.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode)\n */\ninterface DynamicsCompressorNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/attack) */\n readonly attack: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/knee) */\n readonly knee: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/ratio) */\n readonly ratio: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/reduction) */\n readonly reduction: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/release) */\n readonly release: AudioParam;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/DynamicsCompressorNode/threshold) */\n readonly threshold: AudioParam;\n}\n\ndeclare var DynamicsCompressorNode: {\n prototype: DynamicsCompressorNode;\n new(context: BaseAudioContext, options?: DynamicsCompressorOptions): DynamicsCompressorNode;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_blend_minmax) */\ninterface EXT_blend_minmax {\n readonly MIN_EXT: 0x8007;\n readonly MAX_EXT: 0x8008;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_color_buffer_float) */\ninterface EXT_color_buffer_float {\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_color_buffer_half_float) */\ninterface EXT_color_buffer_half_float {\n readonly RGBA16F_EXT: 0x881A;\n readonly RGB16F_EXT: 0x881B;\n readonly FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT: 0x8211;\n readonly UNSIGNED_NORMALIZED_EXT: 0x8C17;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_float_blend) */\ninterface EXT_float_blend {\n}\n\n/**\n * The EXT_frag_depth extension is part of the WebGL API and enables to set a depth value of a fragment from within the fragment shader.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_frag_depth)\n */\ninterface EXT_frag_depth {\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_sRGB) */\ninterface EXT_sRGB {\n readonly SRGB_EXT: 0x8C40;\n readonly SRGB_ALPHA_EXT: 0x8C42;\n readonly SRGB8_ALPHA8_EXT: 0x8C43;\n readonly FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT: 0x8210;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_shader_texture_lod) */\ninterface EXT_shader_texture_lod {\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_texture_compression_bptc) */\ninterface EXT_texture_compression_bptc {\n readonly COMPRESSED_RGBA_BPTC_UNORM_EXT: 0x8E8C;\n readonly COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT: 0x8E8D;\n readonly COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT: 0x8E8E;\n readonly COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT: 0x8E8F;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_texture_compression_rgtc) */\ninterface EXT_texture_compression_rgtc {\n readonly COMPRESSED_RED_RGTC1_EXT: 0x8DBB;\n readonly COMPRESSED_SIGNED_RED_RGTC1_EXT: 0x8DBC;\n readonly COMPRESSED_RED_GREEN_RGTC2_EXT: 0x8DBD;\n readonly COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT: 0x8DBE;\n}\n\n/**\n * The EXT_texture_filter_anisotropic extension is part of the WebGL API and exposes two constants for anisotropic filtering (AF).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_texture_filter_anisotropic)\n */\ninterface EXT_texture_filter_anisotropic {\n readonly TEXTURE_MAX_ANISOTROPY_EXT: 0x84FE;\n readonly MAX_TEXTURE_MAX_ANISOTROPY_EXT: 0x84FF;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EXT_texture_norm16) */\ninterface EXT_texture_norm16 {\n readonly R16_EXT: 0x822A;\n readonly RG16_EXT: 0x822C;\n readonly RGB16_EXT: 0x8054;\n readonly RGBA16_EXT: 0x805B;\n readonly R16_SNORM_EXT: 0x8F98;\n readonly RG16_SNORM_EXT: 0x8F99;\n readonly RGB16_SNORM_EXT: 0x8F9A;\n readonly RGBA16_SNORM_EXT: 0x8F9B;\n}\n\ninterface ElementEventMap {\n "fullscreenchange": Event;\n "fullscreenerror": Event;\n}\n\n/**\n * Element is the most general base class from which all objects in a Document inherit. It only has methods and properties common to all kinds of elements. More specific classes inherit from Element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element)\n */\ninterface Element extends Node, ARIAMixin, Animatable, ChildNode, InnerHTML, NonDocumentTypeChildNode, ParentNode, Slottable {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/attributes) */\n readonly attributes: NamedNodeMap;\n /**\n * Allows for manipulation of element\'s class content attribute as a set of whitespace-separated tokens through a DOMTokenList object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/classList)\n */\n readonly classList: DOMTokenList;\n /**\n * Returns the value of element\'s class content attribute. Can be set to change it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/className)\n */\n className: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/clientHeight) */\n readonly clientHeight: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/clientLeft) */\n readonly clientLeft: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/clientTop) */\n readonly clientTop: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/clientWidth) */\n readonly clientWidth: number;\n /**\n * Returns the value of element\'s id content attribute. Can be set to change it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/id)\n */\n id: string;\n /**\n * Returns the local name.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/localName)\n */\n readonly localName: string;\n /**\n * Returns the namespace.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/namespaceURI)\n */\n readonly namespaceURI: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/fullscreenchange_event) */\n onfullscreenchange: ((this: Element, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/fullscreenerror_event) */\n onfullscreenerror: ((this: Element, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/outerHTML) */\n outerHTML: string;\n readonly ownerDocument: Document;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/part) */\n readonly part: DOMTokenList;\n /**\n * Returns the namespace prefix.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/prefix)\n */\n readonly prefix: string | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollHeight) */\n readonly scrollHeight: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollLeft) */\n scrollLeft: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollTop) */\n scrollTop: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollWidth) */\n readonly scrollWidth: number;\n /**\n * Returns element\'s shadow root, if any, and if shadow root\'s mode is "open", and null otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/shadowRoot)\n */\n readonly shadowRoot: ShadowRoot | null;\n /**\n * Returns the value of element\'s slot content attribute. Can be set to change it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/slot)\n */\n slot: string;\n /**\n * Returns the HTML-uppercased qualified name.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/tagName)\n */\n readonly tagName: string;\n /**\n * Creates a shadow root for element and returns it.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/attachShadow)\n */\n attachShadow(init: ShadowRootInit): ShadowRoot;\n checkVisibility(options?: CheckVisibilityOptions): boolean;\n /**\n * Returns the first (starting at element) inclusive ancestor that matches selectors, and null otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/closest)\n */\n closest(selector: K): HTMLElementTagNameMap[K] | null;\n closest(selector: K): SVGElementTagNameMap[K] | null;\n closest(selector: K): MathMLElementTagNameMap[K] | null;\n closest(selectors: string): E | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/computedStyleMap) */\n computedStyleMap(): StylePropertyMapReadOnly;\n /**\n * Returns element\'s first attribute whose qualified name is qualifiedName, and null if there is no such attribute otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getAttribute)\n */\n getAttribute(qualifiedName: string): string | null;\n /**\n * Returns element\'s attribute whose namespace is namespace and local name is localName, and null if there is no such attribute otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getAttributeNS)\n */\n getAttributeNS(namespace: string | null, localName: string): string | null;\n /**\n * Returns the qualified names of all element\'s attributes. Can contain duplicates.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getAttributeNames)\n */\n getAttributeNames(): string[];\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getAttributeNode) */\n getAttributeNode(qualifiedName: string): Attr | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getAttributeNodeNS) */\n getAttributeNodeNS(namespace: string | null, localName: string): Attr | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getBoundingClientRect) */\n getBoundingClientRect(): DOMRect;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getClientRects) */\n getClientRects(): DOMRectList;\n /**\n * Returns a HTMLCollection of the elements in the object on which the method was invoked (a document or an element) that have all the classes given by classNames. The classNames argument is interpreted as a space-separated list of classes.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByClassName)\n */\n getElementsByClassName(classNames: string): HTMLCollectionOf;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagName) */\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n /** @deprecated */\n getElementsByTagName(qualifiedName: K): HTMLCollectionOf;\n getElementsByTagName(qualifiedName: string): HTMLCollectionOf;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/getElementsByTagNameNS) */\n getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1998/Math/MathML", localName: string): HTMLCollectionOf;\n getElementsByTagNameNS(namespace: string | null, localName: string): HTMLCollectionOf;\n /**\n * Returns true if element has an attribute whose qualified name is qualifiedName, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/hasAttribute)\n */\n hasAttribute(qualifiedName: string): boolean;\n /**\n * Returns true if element has an attribute whose namespace is namespace and local name is localName.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/hasAttributeNS)\n */\n hasAttributeNS(namespace: string | null, localName: string): boolean;\n /**\n * Returns true if element has attributes, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/hasAttributes)\n */\n hasAttributes(): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/hasPointerCapture) */\n hasPointerCapture(pointerId: number): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentElement) */\n insertAdjacentElement(where: InsertPosition, element: Element): Element | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentHTML) */\n insertAdjacentHTML(position: InsertPosition, text: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/insertAdjacentText) */\n insertAdjacentText(where: InsertPosition, data: string): void;\n /**\n * Returns true if matching selectors against element\'s root yields element, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)\n */\n matches(selectors: string): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/releasePointerCapture) */\n releasePointerCapture(pointerId: number): void;\n /**\n * Removes element\'s first attribute whose qualified name is qualifiedName.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/removeAttribute)\n */\n removeAttribute(qualifiedName: string): void;\n /**\n * Removes element\'s attribute whose namespace is namespace and local name is localName.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/removeAttributeNS)\n */\n removeAttributeNS(namespace: string | null, localName: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/removeAttributeNode) */\n removeAttributeNode(attr: Attr): Attr;\n /**\n * Displays element fullscreen and resolves promise when done.\n *\n * When supplied, options\'s navigationUI member indicates whether showing navigation UI while in fullscreen is preferred or not. If set to "show", navigation simplicity is preferred over screen space, and if set to "hide", more screen space is preferred. User agents are always free to honor user preference over the application\'s. The default value "auto" indicates no application preference.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/requestFullscreen)\n */\n requestFullscreen(options?: FullscreenOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/requestPointerLock) */\n requestPointerLock(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scroll) */\n scroll(options?: ScrollToOptions): void;\n scroll(x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollBy) */\n scrollBy(options?: ScrollToOptions): void;\n scrollBy(x: number, y: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollIntoView) */\n scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/scrollTo) */\n scrollTo(options?: ScrollToOptions): void;\n scrollTo(x: number, y: number): void;\n /**\n * Sets the value of element\'s first attribute whose qualified name is qualifiedName to value.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/setAttribute)\n */\n setAttribute(qualifiedName: string, value: string): void;\n /**\n * Sets the value of element\'s attribute whose namespace is namespace and local name is localName to value.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/setAttributeNS)\n */\n setAttributeNS(namespace: string | null, qualifiedName: string, value: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/setAttributeNode) */\n setAttributeNode(attr: Attr): Attr | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/setAttributeNodeNS) */\n setAttributeNodeNS(attr: Attr): Attr | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/setPointerCapture) */\n setPointerCapture(pointerId: number): void;\n /**\n * If force is not given, "toggles" qualifiedName, removing it if it is present and adding it if it is not present. If force is true, adds qualifiedName. If force is false, removes qualifiedName.\n *\n * Returns true if qualifiedName is now present, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/toggleAttribute)\n */\n toggleAttribute(qualifiedName: string, force?: boolean): boolean;\n /**\n * @deprecated This is a legacy alias of `matches`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/matches)\n */\n webkitMatchesSelector(selectors: string): boolean;\n addEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: Element, ev: ElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var Element: {\n prototype: Element;\n new(): Element;\n};\n\ninterface ElementCSSInlineStyle {\n readonly attributeStyleMap: StylePropertyMap;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/style) */\n readonly style: CSSStyleDeclaration;\n}\n\ninterface ElementContentEditable {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/contentEditable) */\n contentEditable: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/enterKeyHint) */\n enterKeyHint: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/inputMode) */\n inputMode: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/isContentEditable) */\n readonly isContentEditable: boolean;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals) */\ninterface ElementInternals extends ARIAMixin {\n /**\n * Returns the form owner of internals\'s target element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/form)\n */\n readonly form: HTMLFormElement | null;\n /**\n * Returns a NodeList of all the label elements that internals\'s target element is associated with.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/labels)\n */\n readonly labels: NodeList;\n /**\n * Returns the ShadowRoot for internals\'s target element, if the target element is a shadow host, or null otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/shadowRoot)\n */\n readonly shadowRoot: ShadowRoot | null;\n /**\n * Returns the error message that would be shown to the user if internals\'s target element was to be checked for validity.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage)\n */\n readonly validationMessage: string;\n /**\n * Returns the ValidityState object for internals\'s target element.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/validity)\n */\n readonly validity: ValidityState;\n /**\n * Returns true if internals\'s target element will be validated when the form is submitted; false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate)\n */\n readonly willValidate: boolean;\n /**\n * Returns true if internals\'s target element has no validity problems; false otherwise. Fires an invalid event at the element in the latter case.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity)\n */\n checkValidity(): boolean;\n /**\n * Returns true if internals\'s target element has no validity problems; otherwise, returns false, fires an invalid event at the element, and (if the event isn\'t canceled) reports the problem to the user.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity)\n */\n reportValidity(): boolean;\n /**\n * Sets both the state and submission value of internals\'s target element to value.\n *\n * If value is null, the element won\'t participate in form submission.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue)\n */\n setFormValue(value: File | string | FormData | null, state?: File | string | FormData | null): void;\n /**\n * Marks internals\'s target element as suffering from the constraints indicated by the flags argument, and sets the element\'s validation message to message. If anchor is specified, the user agent might use it to indicate problems with the constraints of internals\'s target element when the form owner is validated interactively or reportValidity() is called.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ElementInternals/setValidity)\n */\n setValidity(flags?: ValidityStateFlags, message?: string, anchor?: HTMLElement): void;\n}\n\ndeclare var ElementInternals: {\n prototype: ElementInternals;\n new(): ElementInternals;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk) */\ninterface EncodedVideoChunk {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/byteLength) */\n readonly byteLength: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/duration) */\n readonly duration: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/timestamp) */\n readonly timestamp: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/type) */\n readonly type: EncodedVideoChunkType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EncodedVideoChunk/copyTo) */\n copyTo(destination: BufferSource): void;\n}\n\ndeclare var EncodedVideoChunk: {\n prototype: EncodedVideoChunk;\n new(init: EncodedVideoChunkInit): EncodedVideoChunk;\n};\n\n/**\n * Events providing information related to errors in scripts or in files.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent)\n */\ninterface ErrorEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/colno) */\n readonly colno: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/error) */\n readonly error: any;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/filename) */\n readonly filename: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/lineno) */\n readonly lineno: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/ErrorEvent/message) */\n readonly message: string;\n}\n\ndeclare var ErrorEvent: {\n prototype: ErrorEvent;\n new(type: string, eventInitDict?: ErrorEventInit): ErrorEvent;\n};\n\n/**\n * An event which takes place in the DOM.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event)\n */\ninterface Event {\n /**\n * Returns true or false depending on how event was initialized. True if event goes through its target\'s ancestors in reverse tree order, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/bubbles)\n */\n readonly bubbles: boolean;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelBubble)\n */\n cancelBubble: boolean;\n /**\n * Returns true or false depending on how event was initialized. Its return value does not always carry meaning, but true can indicate that part of the operation during which event was dispatched, can be canceled by invoking the preventDefault() method.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/cancelable)\n */\n readonly cancelable: boolean;\n /**\n * Returns true or false depending on how event was initialized. True if event invokes listeners past a ShadowRoot node that is the root of its target, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composed)\n */\n readonly composed: boolean;\n /**\n * Returns the object whose event listener\'s callback is currently being invoked.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/currentTarget)\n */\n readonly currentTarget: EventTarget | null;\n /**\n * Returns true if preventDefault() was invoked successfully to indicate cancelation, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/defaultPrevented)\n */\n readonly defaultPrevented: boolean;\n /**\n * Returns the event\'s phase, which is one of NONE, CAPTURING_PHASE, AT_TARGET, and BUBBLING_PHASE.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/eventPhase)\n */\n readonly eventPhase: number;\n /**\n * Returns true if event was dispatched by the user agent, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/isTrusted)\n */\n readonly isTrusted: boolean;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/returnValue)\n */\n returnValue: boolean;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/srcElement)\n */\n readonly srcElement: EventTarget | null;\n /**\n * Returns the object to which event is dispatched (its target).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/target)\n */\n readonly target: EventTarget | null;\n /**\n * Returns the event\'s timestamp as the number of milliseconds measured relative to the time origin.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/timeStamp)\n */\n readonly timeStamp: DOMHighResTimeStamp;\n /**\n * Returns the type of event, e.g. "click", "hashchange", or "submit".\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/type)\n */\n readonly type: string;\n /**\n * Returns the invocation target objects of event\'s path (objects on which listeners will be invoked), except for any nodes in shadow trees of which the shadow root\'s mode is "closed" that are not reachable from event\'s currentTarget.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/composedPath)\n */\n composedPath(): EventTarget[];\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/initEvent)\n */\n initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;\n /**\n * If invoked when the cancelable attribute value is true, and while executing a listener for the event with passive set to false, signals to the operation that caused event to be dispatched that it needs to be canceled.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/preventDefault)\n */\n preventDefault(): void;\n /**\n * Invoking this method prevents event from reaching any registered event listeners after the current one finishes running and, when dispatched in a tree, also prevents event from reaching any other objects.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopImmediatePropagation)\n */\n stopImmediatePropagation(): void;\n /**\n * When dispatched in a tree, invoking this method prevents event from reaching any objects other than the current object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Event/stopPropagation)\n */\n stopPropagation(): void;\n readonly NONE: 0;\n readonly CAPTURING_PHASE: 1;\n readonly AT_TARGET: 2;\n readonly BUBBLING_PHASE: 3;\n}\n\ndeclare var Event: {\n prototype: Event;\n new(type: string, eventInitDict?: EventInit): Event;\n readonly NONE: 0;\n readonly CAPTURING_PHASE: 1;\n readonly AT_TARGET: 2;\n readonly BUBBLING_PHASE: 3;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventCounts) */\ninterface EventCounts {\n forEach(callbackfn: (value: number, key: string, parent: EventCounts) => void, thisArg?: any): void;\n}\n\ndeclare var EventCounts: {\n prototype: EventCounts;\n new(): EventCounts;\n};\n\ninterface EventListener {\n (evt: Event): void;\n}\n\ninterface EventListenerObject {\n handleEvent(object: Event): void;\n}\n\ninterface EventSourceEventMap {\n "error": Event;\n "message": MessageEvent;\n "open": Event;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource) */\ninterface EventSource extends EventTarget {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */\n onerror: ((this: EventSource, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */\n onmessage: ((this: EventSource, ev: MessageEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */\n onopen: ((this: EventSource, ev: Event) => any) | null;\n /**\n * Returns the state of this EventSource object\'s connection. It can have the values described below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState)\n */\n readonly readyState: number;\n /**\n * Returns the URL providing the event stream.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url)\n */\n readonly url: string;\n /**\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to "include", and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials)\n */\n readonly withCredentials: boolean;\n /**\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close)\n */\n close(): void;\n readonly CONNECTING: 0;\n readonly OPEN: 1;\n readonly CLOSED: 2;\n addEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: EventSource, ev: EventSourceEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: (this: EventSource, event: MessageEvent) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var EventSource: {\n prototype: EventSource;\n new(url: string | URL, eventSourceInitDict?: EventSourceInit): EventSource;\n readonly CONNECTING: 0;\n readonly OPEN: 1;\n readonly CLOSED: 2;\n};\n\n/**\n * EventTarget is a DOM interface implemented by objects that can receive events and may have listeners for them.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget)\n */\ninterface EventTarget {\n /**\n * Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.\n *\n * The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options\'s capture.\n *\n * When set to true, options\'s capture prevents callback from being invoked when the event\'s eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event\'s eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event\'s eventPhase attribute value is AT_TARGET.\n *\n * When set to true, options\'s passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in \xa7 2.8 Observing event listeners.\n *\n * When set to true, options\'s once indicates that the callback will only be invoked once after which the event listener will be removed.\n *\n * If an AbortSignal is passed for options\'s signal, then the event listener will be removed when signal is aborted.\n *\n * The event listener is appended to target\'s event listener list and is not appended if it has the same type, callback, and capture.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)\n */\n addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;\n /**\n * Dispatches a synthetic event event to target and returns true if either event\'s cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)\n */\n dispatchEvent(event: Event): boolean;\n /**\n * Removes the event listener in target\'s event listener list with the same type, callback, and options.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)\n */\n removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;\n}\n\ndeclare var EventTarget: {\n prototype: EventTarget;\n new(): EventTarget;\n};\n\n/**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/External)\n */\ninterface External {\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/External/AddSearchProvider)\n */\n AddSearchProvider(): void;\n /**\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/External/IsSearchProviderInstalled)\n */\n IsSearchProviderInstalled(): void;\n}\n\n/** @deprecated */\ndeclare var External: {\n prototype: External;\n new(): External;\n};\n\n/**\n * Provides information about files and allows JavaScript in a web page to access their content.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/File)\n */\ninterface File extends Blob {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/lastModified) */\n readonly lastModified: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/File/webkitRelativePath) */\n readonly webkitRelativePath: string;\n}\n\ndeclare var File: {\n prototype: File;\n new(fileBits: BlobPart[], fileName: string, options?: FilePropertyBag): File;\n};\n\n/**\n * An object of this type is returned by the files property of the HTML element; this lets you access the list of files selected with the element. It\'s also used for a list of files dropped into web content when using the drag and drop API; see the DataTransfer object for details on this usage.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileList)\n */\ninterface FileList {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileList/length) */\n readonly length: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileList/item) */\n item(index: number): File | null;\n [index: number]: File;\n}\n\ndeclare var FileList: {\n prototype: FileList;\n new(): FileList;\n};\n\ninterface FileReaderEventMap {\n "abort": ProgressEvent;\n "error": ProgressEvent;\n "load": ProgressEvent;\n "loadend": ProgressEvent;\n "loadstart": ProgressEvent;\n "progress": ProgressEvent;\n}\n\n/**\n * Lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user\'s computer, using File or Blob objects to specify the file or data to read.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader)\n */\ninterface FileReader extends EventTarget {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/error) */\n readonly error: DOMException | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/abort_event) */\n onabort: ((this: FileReader, ev: ProgressEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/error_event) */\n onerror: ((this: FileReader, ev: ProgressEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/load_event) */\n onload: ((this: FileReader, ev: ProgressEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/loadend_event) */\n onloadend: ((this: FileReader, ev: ProgressEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/loadstart_event) */\n onloadstart: ((this: FileReader, ev: ProgressEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/progress_event) */\n onprogress: ((this: FileReader, ev: ProgressEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/readyState) */\n readonly readyState: typeof FileReader.EMPTY | typeof FileReader.LOADING | typeof FileReader.DONE;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/result) */\n readonly result: string | ArrayBuffer | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/abort) */\n abort(): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/readAsArrayBuffer) */\n readAsArrayBuffer(blob: Blob): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/readAsBinaryString) */\n readAsBinaryString(blob: Blob): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/readAsDataURL) */\n readAsDataURL(blob: Blob): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileReader/readAsText) */\n readAsText(blob: Blob, encoding?: string): void;\n readonly EMPTY: 0;\n readonly LOADING: 1;\n readonly DONE: 2;\n addEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: FileReader, ev: FileReaderEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FileReader: {\n prototype: FileReader;\n new(): FileReader;\n readonly EMPTY: 0;\n readonly LOADING: 1;\n readonly DONE: 2;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystem) */\ninterface FileSystem {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystem/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystem/root) */\n readonly root: FileSystemDirectoryEntry;\n}\n\ndeclare var FileSystem: {\n prototype: FileSystem;\n new(): FileSystem;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry) */\ninterface FileSystemDirectoryEntry extends FileSystemEntry {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/createReader) */\n createReader(): FileSystemDirectoryReader;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/getDirectory) */\n getDirectory(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryEntry/getFile) */\n getFile(path?: string | null, options?: FileSystemFlags, successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemDirectoryEntry: {\n prototype: FileSystemDirectoryEntry;\n new(): FileSystemDirectoryEntry;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle)\n */\ninterface FileSystemDirectoryHandle extends FileSystemHandle {\n readonly kind: "directory";\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/getDirectoryHandle) */\n getDirectoryHandle(name: string, options?: FileSystemGetDirectoryOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/getFileHandle) */\n getFileHandle(name: string, options?: FileSystemGetFileOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/removeEntry) */\n removeEntry(name: string, options?: FileSystemRemoveOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryHandle/resolve) */\n resolve(possibleDescendant: FileSystemHandle): Promise;\n}\n\ndeclare var FileSystemDirectoryHandle: {\n prototype: FileSystemDirectoryHandle;\n new(): FileSystemDirectoryHandle;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader) */\ninterface FileSystemDirectoryReader {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemDirectoryReader/readEntries) */\n readEntries(successCallback: FileSystemEntriesCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemDirectoryReader: {\n prototype: FileSystemDirectoryReader;\n new(): FileSystemDirectoryReader;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry) */\ninterface FileSystemEntry {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry/filesystem) */\n readonly filesystem: FileSystem;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry/fullPath) */\n readonly fullPath: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry/isDirectory) */\n readonly isDirectory: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry/isFile) */\n readonly isFile: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemEntry/getParent) */\n getParent(successCallback?: FileSystemEntryCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemEntry: {\n prototype: FileSystemEntry;\n new(): FileSystemEntry;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemFileEntry) */\ninterface FileSystemFileEntry extends FileSystemEntry {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemFileEntry/file) */\n file(successCallback: FileCallback, errorCallback?: ErrorCallback): void;\n}\n\ndeclare var FileSystemFileEntry: {\n prototype: FileSystemFileEntry;\n new(): FileSystemFileEntry;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle)\n */\ninterface FileSystemFileHandle extends FileSystemHandle {\n readonly kind: "file";\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/createWritable) */\n createWritable(options?: FileSystemCreateWritableOptions): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemFileHandle/getFile) */\n getFile(): Promise;\n}\n\ndeclare var FileSystemFileHandle: {\n prototype: FileSystemFileHandle;\n new(): FileSystemFileHandle;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemHandle)\n */\ninterface FileSystemHandle {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/kind) */\n readonly kind: FileSystemHandleKind;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/name) */\n readonly name: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemHandle/isSameEntry) */\n isSameEntry(other: FileSystemHandle): Promise;\n}\n\ndeclare var FileSystemHandle: {\n prototype: FileSystemHandle;\n new(): FileSystemHandle;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream)\n */\ninterface FileSystemWritableFileStream extends WritableStream {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/seek) */\n seek(position: number): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/truncate) */\n truncate(size: number): Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FileSystemWritableFileStream/write) */\n write(data: FileSystemWriteChunkType): Promise;\n}\n\ndeclare var FileSystemWritableFileStream: {\n prototype: FileSystemWritableFileStream;\n new(): FileSystemWritableFileStream;\n};\n\n/**\n * Focus-related events like focus, blur, focusin, or focusout.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FocusEvent)\n */\ninterface FocusEvent extends UIEvent {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FocusEvent/relatedTarget) */\n readonly relatedTarget: EventTarget | null;\n}\n\ndeclare var FocusEvent: {\n prototype: FocusEvent;\n new(type: string, eventInitDict?: FocusEventInit): FocusEvent;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace) */\ninterface FontFace {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/ascentOverride) */\n ascentOverride: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/descentOverride) */\n descentOverride: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/display) */\n display: FontDisplay;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/family) */\n family: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/featureSettings) */\n featureSettings: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/lineGapOverride) */\n lineGapOverride: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/loaded) */\n readonly loaded: Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/status) */\n readonly status: FontFaceLoadStatus;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/stretch) */\n stretch: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/style) */\n style: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/unicodeRange) */\n unicodeRange: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/variant) */\n variant: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/weight) */\n weight: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFace/load) */\n load(): Promise;\n}\n\ndeclare var FontFace: {\n prototype: FontFace;\n new(family: string, source: string | BinaryData, descriptors?: FontFaceDescriptors): FontFace;\n};\n\ninterface FontFaceSetEventMap {\n "loading": Event;\n "loadingdone": Event;\n "loadingerror": Event;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet) */\ninterface FontFaceSet extends EventTarget {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/loading_event) */\n onloading: ((this: FontFaceSet, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/loadingdone_event) */\n onloadingdone: ((this: FontFaceSet, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/loadingerror_event) */\n onloadingerror: ((this: FontFaceSet, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/ready) */\n readonly ready: Promise;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/status) */\n readonly status: FontFaceSetLoadStatus;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/check) */\n check(font: string, text?: string): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSet/load) */\n load(font: string, text?: string): Promise;\n forEach(callbackfn: (value: FontFace, key: FontFace, parent: FontFaceSet) => void, thisArg?: any): void;\n addEventListener(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: FontFaceSet, ev: FontFaceSetEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var FontFaceSet: {\n prototype: FontFaceSet;\n new(initialFaces: FontFace[]): FontFaceSet;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSetLoadEvent) */\ninterface FontFaceSetLoadEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FontFaceSetLoadEvent/fontfaces) */\n readonly fontfaces: ReadonlyArray;\n}\n\ndeclare var FontFaceSetLoadEvent: {\n prototype: FontFaceSetLoadEvent;\n new(type: string, eventInitDict?: FontFaceSetLoadEventInit): FontFaceSetLoadEvent;\n};\n\ninterface FontFaceSource {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/fonts) */\n readonly fonts: FontFaceSet;\n}\n\n/**\n * Provides a way to easily construct a set of key/value pairs representing form fields and their values, which can then be easily sent using the XMLHttpRequest.send() method. It uses the same format a form would use if the encoding type were set to "multipart/form-data".\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData)\n */\ninterface FormData {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append) */\n append(name: string, value: string | Blob): void;\n append(name: string, value: string): void;\n append(name: string, blobValue: Blob, filename?: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/delete) */\n delete(name: string): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/get) */\n get(name: string): FormDataEntryValue | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/getAll) */\n getAll(name: string): FormDataEntryValue[];\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has) */\n has(name: string): boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set) */\n set(name: string, value: string | Blob): void;\n set(name: string, value: string): void;\n set(name: string, blobValue: Blob, filename?: string): void;\n forEach(callbackfn: (value: FormDataEntryValue, key: string, parent: FormData) => void, thisArg?: any): void;\n}\n\ndeclare var FormData: {\n prototype: FormData;\n new(form?: HTMLFormElement, submitter?: HTMLElement | null): FormData;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormDataEvent) */\ninterface FormDataEvent extends Event {\n /**\n * Returns a FormData object representing names and values of elements associated to the target form. Operations on the FormData object will affect form data to be submitted.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormDataEvent/formData)\n */\n readonly formData: FormData;\n}\n\ndeclare var FormDataEvent: {\n prototype: FormDataEvent;\n new(type: string, eventInitDict: FormDataEventInit): FormDataEvent;\n};\n\n/**\n * A change in volume. It is an AudioNode audio-processing module that causes a given gain to be applied to the input data before its propagation to the output. A GainNode always has exactly one input and one output, both with the same number of channels.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/GainNode)\n */\ninterface GainNode extends AudioNode {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GainNode/gain) */\n readonly gain: AudioParam;\n}\n\ndeclare var GainNode: {\n prototype: GainNode;\n new(context: BaseAudioContext, options?: GainOptions): GainNode;\n};\n\n/**\n * This Gamepad API interface defines an individual gamepad or other controller, allowing access to information such as button presses, axis positions, and id.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad)\n */\ninterface Gamepad {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/axes) */\n readonly axes: ReadonlyArray;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/buttons) */\n readonly buttons: ReadonlyArray;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/connected) */\n readonly connected: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/hapticActuators) */\n readonly hapticActuators: ReadonlyArray;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/id) */\n readonly id: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/index) */\n readonly index: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/mapping) */\n readonly mapping: GamepadMappingType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Gamepad/timestamp) */\n readonly timestamp: DOMHighResTimeStamp;\n readonly vibrationActuator: GamepadHapticActuator | null;\n}\n\ndeclare var Gamepad: {\n prototype: Gamepad;\n new(): Gamepad;\n};\n\n/**\n * An individual button of a gamepad or other controller, allowing access to the current state of different types of buttons available on the control device.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadButton)\n */\ninterface GamepadButton {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadButton/pressed) */\n readonly pressed: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadButton/touched) */\n readonly touched: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadButton/value) */\n readonly value: number;\n}\n\ndeclare var GamepadButton: {\n prototype: GamepadButton;\n new(): GamepadButton;\n};\n\n/**\n * This Gamepad API interface contains references to gamepads connected to the system, which is what the gamepad events Window.gamepadconnected and Window.gamepaddisconnected are fired in response to.\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadEvent)\n */\ninterface GamepadEvent extends Event {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadEvent/gamepad) */\n readonly gamepad: Gamepad;\n}\n\ndeclare var GamepadEvent: {\n prototype: GamepadEvent;\n new(type: string, eventInitDict: GamepadEventInit): GamepadEvent;\n};\n\n/**\n * This Gamepad API interface represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator)\n */\ninterface GamepadHapticActuator {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GamepadHapticActuator/type) */\n readonly type: GamepadHapticActuatorType;\n playEffect(type: GamepadHapticEffectType, params?: GamepadEffectParameters): Promise;\n reset(): Promise;\n}\n\ndeclare var GamepadHapticActuator: {\n prototype: GamepadHapticActuator;\n new(): GamepadHapticActuator;\n};\n\ninterface GenericTransformStream {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream/readable) */\n readonly readable: ReadableStream;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CompressionStream/writable) */\n readonly writable: WritableStream;\n}\n\n/**\n * An object able to programmatically obtain the position of the device. It gives Web content access to the location of the device. This allows a Web site or app to offer customized results based on the user\'s location.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Geolocation)\n */\ninterface Geolocation {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Geolocation/clearWatch) */\n clearWatch(watchId: number): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Geolocation/getCurrentPosition) */\n getCurrentPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): void;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Geolocation/watchPosition) */\n watchPosition(successCallback: PositionCallback, errorCallback?: PositionErrorCallback | null, options?: PositionOptions): number;\n}\n\ndeclare var Geolocation: {\n prototype: Geolocation;\n new(): Geolocation;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates)\n */\ninterface GeolocationCoordinates {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/accuracy) */\n readonly accuracy: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitude) */\n readonly altitude: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/altitudeAccuracy) */\n readonly altitudeAccuracy: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/heading) */\n readonly heading: number | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/latitude) */\n readonly latitude: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/longitude) */\n readonly longitude: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationCoordinates/speed) */\n readonly speed: number | null;\n}\n\ndeclare var GeolocationCoordinates: {\n prototype: GeolocationCoordinates;\n new(): GeolocationCoordinates;\n};\n\n/**\n * Available only in secure contexts.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationPosition)\n */\ninterface GeolocationPosition {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationPosition/coords) */\n readonly coords: GeolocationCoordinates;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationPosition/timestamp) */\n readonly timestamp: EpochTimeStamp;\n}\n\ndeclare var GeolocationPosition: {\n prototype: GeolocationPosition;\n new(): GeolocationPosition;\n};\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationPositionError) */\ninterface GeolocationPositionError {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationPositionError/code) */\n readonly code: number;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/GeolocationPositionError/message) */\n readonly message: string;\n readonly PERMISSION_DENIED: 1;\n readonly POSITION_UNAVAILABLE: 2;\n readonly TIMEOUT: 3;\n}\n\ndeclare var GeolocationPositionError: {\n prototype: GeolocationPositionError;\n new(): GeolocationPositionError;\n readonly PERMISSION_DENIED: 1;\n readonly POSITION_UNAVAILABLE: 2;\n readonly TIMEOUT: 3;\n};\n\ninterface GlobalEventHandlersEventMap {\n "abort": UIEvent;\n "animationcancel": AnimationEvent;\n "animationend": AnimationEvent;\n "animationiteration": AnimationEvent;\n "animationstart": AnimationEvent;\n "auxclick": MouseEvent;\n "beforeinput": InputEvent;\n "blur": FocusEvent;\n "cancel": Event;\n "canplay": Event;\n "canplaythrough": Event;\n "change": Event;\n "click": MouseEvent;\n "close": Event;\n "compositionend": CompositionEvent;\n "compositionstart": CompositionEvent;\n "compositionupdate": CompositionEvent;\n "contextmenu": MouseEvent;\n "copy": ClipboardEvent;\n "cuechange": Event;\n "cut": ClipboardEvent;\n "dblclick": MouseEvent;\n "drag": DragEvent;\n "dragend": DragEvent;\n "dragenter": DragEvent;\n "dragleave": DragEvent;\n "dragover": DragEvent;\n "dragstart": DragEvent;\n "drop": DragEvent;\n "durationchange": Event;\n "emptied": Event;\n "ended": Event;\n "error": ErrorEvent;\n "focus": FocusEvent;\n "focusin": FocusEvent;\n "focusout": FocusEvent;\n "formdata": FormDataEvent;\n "gotpointercapture": PointerEvent;\n "input": Event;\n "invalid": Event;\n "keydown": KeyboardEvent;\n "keypress": KeyboardEvent;\n "keyup": KeyboardEvent;\n "load": Event;\n "loadeddata": Event;\n "loadedmetadata": Event;\n "loadstart": Event;\n "lostpointercapture": PointerEvent;\n "mousedown": MouseEvent;\n "mouseenter": MouseEvent;\n "mouseleave": MouseEvent;\n "mousemove": MouseEvent;\n "mouseout": MouseEvent;\n "mouseover": MouseEvent;\n "mouseup": MouseEvent;\n "paste": ClipboardEvent;\n "pause": Event;\n "play": Event;\n "playing": Event;\n "pointercancel": PointerEvent;\n "pointerdown": PointerEvent;\n "pointerenter": PointerEvent;\n "pointerleave": PointerEvent;\n "pointermove": PointerEvent;\n "pointerout": PointerEvent;\n "pointerover": PointerEvent;\n "pointerup": PointerEvent;\n "progress": ProgressEvent;\n "ratechange": Event;\n "reset": Event;\n "resize": UIEvent;\n "scroll": Event;\n "securitypolicyviolation": SecurityPolicyViolationEvent;\n "seeked": Event;\n "seeking": Event;\n "select": Event;\n "selectionchange": Event;\n "selectstart": Event;\n "slotchange": Event;\n "stalled": Event;\n "submit": SubmitEvent;\n "suspend": Event;\n "timeupdate": Event;\n "toggle": Event;\n "touchcancel": TouchEvent;\n "touchend": TouchEvent;\n "touchmove": TouchEvent;\n "touchstart": TouchEvent;\n "transitioncancel": TransitionEvent;\n "transitionend": TransitionEvent;\n "transitionrun": TransitionEvent;\n "transitionstart": TransitionEvent;\n "volumechange": Event;\n "waiting": Event;\n "webkitanimationend": Event;\n "webkitanimationiteration": Event;\n "webkitanimationstart": Event;\n "webkittransitionend": Event;\n "wheel": WheelEvent;\n}\n\ninterface GlobalEventHandlers {\n /**\n * Fires when the user aborts the download.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/abort_event)\n */\n onabort: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationcancel_event) */\n onanimationcancel: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationend_event) */\n onanimationend: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationiteration_event) */\n onanimationiteration: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationstart_event) */\n onanimationstart: ((this: GlobalEventHandlers, ev: AnimationEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/auxclick_event) */\n onauxclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/beforeinput_event) */\n onbeforeinput: ((this: GlobalEventHandlers, ev: InputEvent) => any) | null;\n /**\n * Fires when the object loses the input focus.\n * @param ev The focus event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/blur_event)\n */\n onblur: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/cancel_event) */\n oncancel: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when playback is possible, but would require further buffering.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/canplay_event)\n */\n oncanplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/canplaythrough_event) */\n oncanplaythrough: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the contents of the object or selection have changed.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/change_event)\n */\n onchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user clicks the left mouse button on the object\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/click_event)\n */\n onclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDialogElement/close_event) */\n onclose: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user clicks the right mouse button in the client area, opening the context menu.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/contextmenu_event)\n */\n oncontextmenu: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/copy_event) */\n oncopy: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLTrackElement/cuechange_event) */\n oncuechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/cut_event) */\n oncut: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;\n /**\n * Fires when the user double-clicks the object.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/dblclick_event)\n */\n ondblclick: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires on the source object continuously during a drag operation.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/drag_event)\n */\n ondrag: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the source object when the user releases the mouse at the close of a drag operation.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/dragend_event)\n */\n ondragend: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the target element when the user drags the object to a valid drop target.\n * @param ev The drag event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/dragenter_event)\n */\n ondragenter: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the target object when the user moves the mouse out of a valid drop target during a drag operation.\n * @param ev The drag event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/dragleave_event)\n */\n ondragleave: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the target element continuously while the user drags the object over a valid drop target.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/dragover_event)\n */\n ondragover: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Fires on the source object when the user starts to drag a text selection or selected object.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/dragstart_event)\n */\n ondragstart: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/drop_event) */\n ondrop: ((this: GlobalEventHandlers, ev: DragEvent) => any) | null;\n /**\n * Occurs when the duration attribute is updated.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/durationchange_event)\n */\n ondurationchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the media element is reset to its initial state.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/emptied_event)\n */\n onemptied: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the end of playback is reached.\n * @param ev The event\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ended_event)\n */\n onended: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when an error occurs during object loading.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/error_event)\n */\n onerror: OnErrorEventHandler;\n /**\n * Fires when the object receives focus.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/focus_event)\n */\n onfocus: ((this: GlobalEventHandlers, ev: FocusEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/formdata_event) */\n onformdata: ((this: GlobalEventHandlers, ev: FormDataEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/gotpointercapture_event) */\n ongotpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLElement/input_event) */\n oninput: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLInputElement/invalid_event) */\n oninvalid: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user presses a key.\n * @param ev The keyboard event\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/keydown_event)\n */\n onkeydown: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n /**\n * Fires when the user presses an alphanumeric key.\n * @param ev The event.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/keypress_event)\n */\n onkeypress: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n /**\n * Fires when the user releases a key.\n * @param ev The keyboard event\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/keyup_event)\n */\n onkeyup: ((this: GlobalEventHandlers, ev: KeyboardEvent) => any) | null;\n /**\n * Fires immediately after the browser loads the object.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/SVGElement/load_event)\n */\n onload: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when media data is loaded at the current playback position.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/loadeddata_event)\n */\n onloadeddata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the duration and dimensions of the media have been determined.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/loadedmetadata_event)\n */\n onloadedmetadata: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when Internet Explorer begins looking for media data.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/loadstart_event)\n */\n onloadstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/lostpointercapture_event) */\n onlostpointercapture: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /**\n * Fires when the user clicks the object with either mouse button.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mousedown_event)\n */\n onmousedown: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mouseenter_event) */\n onmouseenter: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mouseleave_event) */\n onmouseleave: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user moves the mouse over the object.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mousemove_event)\n */\n onmousemove: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user moves the mouse pointer outside the boundaries of the object.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mouseout_event)\n */\n onmouseout: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user moves the mouse pointer into the object.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mouseover_event)\n */\n onmouseover: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /**\n * Fires when the user releases a mouse button while the mouse is over the object.\n * @param ev The mouse event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/mouseup_event)\n */\n onmouseup: ((this: GlobalEventHandlers, ev: MouseEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/paste_event) */\n onpaste: ((this: GlobalEventHandlers, ev: ClipboardEvent) => any) | null;\n /**\n * Occurs when playback is paused.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/pause_event)\n */\n onpause: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the play method is requested.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play_event)\n */\n onplay: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the audio or video has started playing.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/playing_event)\n */\n onplaying: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointercancel_event) */\n onpointercancel: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointerdown_event) */\n onpointerdown: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointerenter_event) */\n onpointerenter: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointerleave_event) */\n onpointerleave: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointermove_event) */\n onpointermove: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointerout_event) */\n onpointerout: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointerover_event) */\n onpointerover: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/pointerup_event) */\n onpointerup: ((this: GlobalEventHandlers, ev: PointerEvent) => any) | null;\n /**\n * Occurs to indicate progress while downloading media data.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/progress_event)\n */\n onprogress: ((this: GlobalEventHandlers, ev: ProgressEvent) => any) | null;\n /**\n * Occurs when the playback rate is increased or decreased.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/ratechange_event)\n */\n onratechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the user resets a form.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/reset_event)\n */\n onreset: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement/resize_event) */\n onresize: ((this: GlobalEventHandlers, ev: UIEvent) => any) | null;\n /**\n * Fires when the user repositions the scroll box in the scroll bar on the object.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/scroll_event)\n */\n onscroll: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/securitypolicyviolation_event) */\n onsecuritypolicyviolation: ((this: GlobalEventHandlers, ev: SecurityPolicyViolationEvent) => any) | null;\n /**\n * Occurs when the seek operation ends.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/seeked_event)\n */\n onseeked: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the current playback position is moved.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/seeking_event)\n */\n onseeking: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Fires when the current selection changes.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLInputElement/select_event)\n */\n onselect: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/selectionchange_event) */\n onselectionchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Node/selectstart_event) */\n onselectstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLSlotElement/slotchange_event) */\n onslotchange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when the download has stopped.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/stalled_event)\n */\n onstalled: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLFormElement/submit_event) */\n onsubmit: ((this: GlobalEventHandlers, ev: SubmitEvent) => any) | null;\n /**\n * Occurs if the load operation has been intentionally halted.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/suspend_event)\n */\n onsuspend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs to indicate the current playback position.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/timeupdate_event)\n */\n ontimeupdate: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLDetailsElement/toggle_event) */\n ontoggle: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/touchcancel_event) */\n ontouchcancel?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/touchend_event) */\n ontouchend?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/touchmove_event) */\n ontouchmove?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/touchstart_event) */\n ontouchstart?: ((this: GlobalEventHandlers, ev: TouchEvent) => any) | null | undefined;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/transitioncancel_event) */\n ontransitioncancel: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/transitionend_event) */\n ontransitionend: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/transitionrun_event) */\n ontransitionrun: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/transitionstart_event) */\n ontransitionstart: ((this: GlobalEventHandlers, ev: TransitionEvent) => any) | null;\n /**\n * Occurs when the volume is changed, or playback is muted or unmuted.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/volumechange_event)\n */\n onvolumechange: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * Occurs when playback stops because the next frame of a video resource is not available.\n * @param ev The event.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/waiting_event)\n */\n onwaiting: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * @deprecated This is a legacy alias of `onanimationend`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationend_event)\n */\n onwebkitanimationend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * @deprecated This is a legacy alias of `onanimationiteration`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationiteration_event)\n */\n onwebkitanimationiteration: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * @deprecated This is a legacy alias of `onanimationstart`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/animationstart_event)\n */\n onwebkitanimationstart: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /**\n * @deprecated This is a legacy alias of `ontransitionend`.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/transitionend_event)\n */\n onwebkittransitionend: ((this: GlobalEventHandlers, ev: Event) => any) | null;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Element/wheel_event) */\n onwheel: ((this: GlobalEventHandlers, ev: WheelEvent) => any) | null;\n addEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: GlobalEventHandlers, ev: GlobalEventHandlersEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\n/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAllCollection) */\ninterface HTMLAllCollection {\n /**\n * Returns the number of elements in the collection.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/length)\n */\n readonly length: number;\n /**\n * Returns the item with index index from the collection (determined by tree order).\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/item)\n */\n item(nameOrIndex?: string): HTMLCollection | Element | null;\n /**\n * Returns the item with ID or name name from the collection.\n *\n * If there are multiple matching items, then an HTMLCollection object containing all those elements is returned.\n *\n * Only button, form, iframe, input, map, meta, object, select, and textarea elements can have a name for the purpose of this method; their name is given by the value of their name attribute.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAllCollection/namedItem)\n */\n namedItem(name: string): HTMLCollection | Element | null;\n [index: number]: Element;\n}\n\ndeclare var HTMLAllCollection: {\n prototype: HTMLAllCollection;\n new(): HTMLAllCollection;\n};\n\n/**\n * Hyperlink elements and provides special properties and methods (beyond those of the regular HTMLElement object interface that they inherit from) for manipulating the layout and presentation of such elements.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement)\n */\ninterface HTMLAnchorElement extends HTMLElement, HTMLHyperlinkElementUtils {\n /**\n * Sets or retrieves the character set used to encode the object.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/charset)\n */\n charset: string;\n /**\n * Sets or retrieves the coordinates of the object.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/coords)\n */\n coords: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/download) */\n download: string;\n /**\n * Sets or retrieves the language code of the object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/hreflang)\n */\n hreflang: string;\n /**\n * Sets or retrieves the shape of the object.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/name)\n */\n name: string;\n ping: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/referrerPolicy) */\n referrerPolicy: string;\n /**\n * Sets or retrieves the relationship between the object and the destination of the link.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/rel)\n */\n rel: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/relList) */\n readonly relList: DOMTokenList;\n /**\n * Sets or retrieves the relationship between the object and the destination of the link.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/rev)\n */\n rev: string;\n /**\n * Sets or retrieves the shape of the object.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/shape)\n */\n shape: string;\n /**\n * Sets or retrieves the window or frame at which to target content.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/target)\n */\n target: string;\n /**\n * Retrieves or sets the text of the object as a string.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/text)\n */\n text: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAnchorElement/type) */\n type: string;\n addEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: HTMLAnchorElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAnchorElement: {\n prototype: HTMLAnchorElement;\n new(): HTMLAnchorElement;\n};\n\n/**\n * Provides special properties and methods (beyond those of the regular object HTMLElement interface it also has available to it by inheritance) for manipulating the layout and presentation of elements.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement)\n */\ninterface HTMLAreaElement extends HTMLElement, HTMLHyperlinkElementUtils {\n /**\n * Sets or retrieves a text alternative to the graphic.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/alt)\n */\n alt: string;\n /**\n * Sets or retrieves the coordinates of the object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/coords)\n */\n coords: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/download) */\n download: string;\n /**\n * Sets or gets whether clicks in this region cause action.\n * @deprecated\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/noHref)\n */\n noHref: boolean;\n ping: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/referrerPolicy) */\n referrerPolicy: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/rel) */\n rel: string;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/relList) */\n readonly relList: DOMTokenList;\n /**\n * Sets or retrieves the shape of the object.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/shape)\n */\n shape: string;\n /**\n * Sets or retrieves the window or frame at which to target content.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/HTMLAreaElement/target)\n */\n target: string;\n addEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;\n addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: K, listener: (this: HTMLAreaElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;\n removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n}\n\ndeclare var HTMLAreaElement: {\n prototype: HTMLAreaElement;\n new(): HTMLAreaElement;\n};\n\n/**\n * Provides access to the properties of