*Add new dns helper scanRecords

*Large refactors for dns lookup on providers
This commit is contained in:
Derrick Hammer 2022-08-21 23:36:56 -04:00
parent 7a084a1e11
commit e5f02c413b
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
7 changed files with 336 additions and 268 deletions

View File

@ -9,8 +9,7 @@ import WebEngine from "../webEngine.js";
import { getTld, isDomain, isIp, normalizeDomain } from "../util.js"; import { getTld, isDomain, isIp, normalizeDomain } from "../util.js";
import tldEnum from "@lumeweb/tld-enum"; import tldEnum from "@lumeweb/tld-enum";
import { getAuthStatus } from "../main/vars.js"; import { getAuthStatus } from "../main/vars.js";
import { resolve } from "../dns.js"; import { scanRecords } from "../dns.js";
import { DNS_RECORD_TYPE } from "@lumeweb/libresolver";
export default abstract class BaseProvider { export default abstract class BaseProvider {
private engine: WebEngine; private engine: WebEngine;
@ -46,10 +45,17 @@ export default abstract class BaseProvider {
return false; return false;
} }
protected async resolveDns(details: OnBeforeRequestDetailsType) { protected async resolveDns(
details: OnBeforeRequestDetailsType,
recordTypes?: string[]
) {
const originalUrl = new URL(details.url); const originalUrl = new URL(details.url);
const hostname = normalizeDomain(originalUrl.hostname); const hostname = normalizeDomain(originalUrl.hostname);
if (typeof getAuthStatus === "undefined") {
debugger;
}
if (getAuthStatus().loginComplete !== true) { if (getAuthStatus().loginComplete !== true) {
return false; return false;
} }
@ -62,38 +68,7 @@ export default abstract class BaseProvider {
return false; return false;
} }
const cached = this.getData(details, "dns"); return await scanRecords(hostname, recordTypes);
if (cached !== undefined) {
return cached;
}
let dnsResult;
for (const type of [
DNS_RECORD_TYPE.CONTENT,
DNS_RECORD_TYPE.A,
DNS_RECORD_TYPE.CNAME,
]) {
let result = await resolve(hostname, { type });
if (result instanceof Error) {
continue;
}
if (0 < result.records.length) {
dnsResult = result.records.shift();
break;
}
}
if (!dnsResult) {
dnsResult = false;
}
this.setData(details, "dns", dnsResult);
return dnsResult;
} }
protected getData(details: OnBeforeRequestDetailsType, key: string) { protected getData(details: OnBeforeRequestDetailsType, key: string) {

View File

@ -23,7 +23,7 @@ import {
contentModes, contentModes,
} from "../mimes.js"; } from "../mimes.js";
import { cacheDb } from "../databases.js"; import { cacheDb } from "../databases.js";
import { DNSRecord } from "@lumeweb/libresolver"; import { DNS_RECORD_TYPE, DNSResult } from "@lumeweb/libresolver";
const INDEX_HTML_FILES = ["index.html", "index.htm", "index.shtml"]; const INDEX_HTML_FILES = ["index.html", "index.htm", "index.shtml"];
@ -94,23 +94,28 @@ export default class IpfsProvider extends BaseProvider {
async shouldHandleRequest( async shouldHandleRequest(
details: OnBeforeRequestDetailsType details: OnBeforeRequestDetailsType
): Promise<boolean> { ): Promise<boolean> {
let dns: DNSRecord | boolean | string = await this.resolveDns(details); let dnsResult: DNSResult | boolean | string = await this.resolveDns(
if (!dns) { details,
[DNS_RECORD_TYPE.CONTENT, DNS_RECORD_TYPE.TEXT]
);
if (!dnsResult) {
return false; return false;
} }
dns = (dns as DNSRecord).value; let contentRecords = (dnsResult as DNSResult).records.map(
dns = dns = "/" + dns.replace("://", "/"); (item) => "/" + item.value.replace("://", "/").replace(/^\+/, "/")
dns = dns.replace(/^\+/, "/"); );
contentRecords.filter((item) => path(item));
if (!contentRecords.length) {
return false;
}
this.setData(details, "hash", contentRecords.shift());
if (dns && path(dns)) {
this.setData(details, "hash", dns);
return true; return true;
} }
return false;
}
async handleProxy(details: OnRequestDetailsType): Promise<any> { async handleProxy(details: OnRequestDetailsType): Promise<any> {
return getRelayProxies(); return getRelayProxies();
} }

View File

@ -1,19 +1,27 @@
import BaseProvider from "./baseProvider.js"; import BaseProvider from "./baseProvider.js";
import { OnBeforeRequestDetailsType, OnRequestDetailsType } from "../types.js"; import { OnBeforeRequestDetailsType, OnRequestDetailsType } from "../types.js";
import { isDomain, isIp } from "../util.js"; import { isDomain, isIp } from "../util.js";
import { DNSRecord } from "@lumeweb/libresolver"; import { DNS_RECORD_TYPE, DNSRecord, DNSResult } from "@lumeweb/libresolver";
export default class ServerProvider extends BaseProvider { export default class ServerProvider extends BaseProvider {
async shouldHandleRequest( async shouldHandleRequest(
details: OnBeforeRequestDetailsType details: OnBeforeRequestDetailsType
): Promise<boolean> { ): Promise<boolean> {
let dns: DNSRecord | boolean = await this.resolveDns(details); let dnsResult: DNSResult | boolean = await this.resolveDns(details, [
if (!dns) { DNS_RECORD_TYPE.A,
DNS_RECORD_TYPE.CNAME,
]);
if (!dnsResult) {
return false; return false;
} }
dns = dns as DNSRecord;
if (dns && (isDomain(dns.value) || isIp(dns.value))) { dnsResult = dnsResult as DNSResult;
let dnsRecord = dnsResult.records.shift()?.value as string;
if (isDomain(dnsRecord) || isIp(dnsRecord)) {
this.setData(details, "server", dnsRecord);
return true; return true;
} }
@ -21,12 +29,8 @@ export default class ServerProvider extends BaseProvider {
} }
async handleProxy(details: OnRequestDetailsType): Promise<any> { async handleProxy(details: OnRequestDetailsType): Promise<any> {
const dns = await this.resolveDns(details); const server = this.getData(details, "server");
if (isIp(dns) || isDomain(dns)) { return { type: "http", host: server, port: 80 };
return { type: "http", host: dns, port: 80 };
}
return false;
} }
} }

View File

@ -1,7 +1,6 @@
import BaseProvider from "./baseProvider.js"; import BaseProvider from "./baseProvider.js";
import { import {
BlockingResponse, BlockingResponse,
HttpHeaders,
OnBeforeRequestDetailsType, OnBeforeRequestDetailsType,
OnHeadersReceivedDetailsType, OnHeadersReceivedDetailsType,
OnRequestDetailsType, OnRequestDetailsType,
@ -9,26 +8,40 @@ import {
import { validSkylink } from "libskynet"; import { validSkylink } from "libskynet";
import { downloadSkylink, getRelayProxies } from "../util.js"; import { downloadSkylink, getRelayProxies } from "../util.js";
import browser from "@lumeweb/webextension-polyfill"; import browser from "@lumeweb/webextension-polyfill";
import { DNSRecord } from "@lumeweb/libresolver"; import { DNS_RECORD_TYPE, DNSResult } from "@lumeweb/libresolver";
export default class SkynetProvider extends BaseProvider { export default class SkynetProvider extends BaseProvider {
async shouldHandleRequest( async shouldHandleRequest(
details: OnBeforeRequestDetailsType details: OnBeforeRequestDetailsType
): Promise<boolean> { ): Promise<boolean> {
let dns: DNSRecord | boolean = await this.resolveDns(details); let dnsResult: DNSResult | boolean | string = await this.resolveDns(
if (!dns) { details,
[DNS_RECORD_TYPE.CONTENT, DNS_RECORD_TYPE.TEXT]
);
if (!dnsResult) {
return false;
}
let contentRecords = (dnsResult as DNSResult).records
.map((item) => {
item.value = item.value.replace("sia://", "");
return item;
})
.filter((item) => {
try {
return validSkylink(item.value);
} catch (e) {
return false;
}
});
if (!contentRecords.length) {
return false; return false;
} }
dns = dns as DNSRecord; this.setData(details, "hash", contentRecords.shift()?.value);
if (dns && validSkylink(dns.value)) {
return true; return true;
} }
return false;
}
async handleProxy(details: OnRequestDetailsType): Promise<any> { async handleProxy(details: OnRequestDetailsType): Promise<any> {
return getRelayProxies(); return getRelayProxies();
} }
@ -36,7 +49,7 @@ export default class SkynetProvider extends BaseProvider {
async handleRequest( async handleRequest(
details: OnBeforeRequestDetailsType details: OnBeforeRequestDetailsType
): Promise<BlockingResponse | boolean> { ): Promise<BlockingResponse | boolean> {
const dns = await this.resolveDns(details); const hash = this.getData(details, "hash");
let urlObj = new URL(details.url); let urlObj = new URL(details.url);
let path = urlObj.pathname; let path = urlObj.pathname;
let fileData: any, err; let fileData: any, err;
@ -47,7 +60,7 @@ export default class SkynetProvider extends BaseProvider {
} }
try { try {
[fileData, err] = await downloadSkylink(dns, path); [fileData, err] = await downloadSkylink(hash, path);
} catch (e: any) { } catch (e: any) {
debugger; debugger;
this.setData(details, "error", (e as Error).message); this.setData(details, "error", (e as Error).message);

View File

@ -1,7 +1,12 @@
import NodeCache from "node-cache"; import NodeCache from "node-cache";
import { resolve as resolveDns } from "@lumeweb/kernel-dns-client"; import { resolve as resolveDns } from "@lumeweb/kernel-dns-client";
import { DNSResult, ResolverOptions } from "@lumeweb/libresolver"; import {
import { blake2b, Err } from "libskynet/dist"; DNS_RECORD_TYPE,
DNSRecord,
DNSResult,
ResolverOptions,
} from "@lumeweb/libresolver";
import { blake2b, bufToHex, Err } from "libskynet/dist";
const cache = new NodeCache({ stdTTL: 60 }); const cache = new NodeCache({ stdTTL: 60 });
@ -32,3 +37,34 @@ export async function resolve(
return res; return res;
} }
export async function scanRecords(
domain: string,
recordTypes?: string[],
bypassCache = false
): Promise<boolean | DNSResult> {
let dnsResult: boolean | DNSResult = false;
if (!recordTypes) {
recordTypes = [
DNS_RECORD_TYPE.CONTENT,
DNS_RECORD_TYPE.A,
DNS_RECORD_TYPE.CNAME,
];
}
for (const type of recordTypes) {
let result = await resolve(domain, { type }, bypassCache);
if (result instanceof Error) {
continue;
}
if (0 < result.records.length) {
dnsResult = result;
break;
}
}
return dnsResult;
}

View File

@ -13,9 +13,10 @@ import {
} from "./types"; } from "./types";
import { getTld, isDomain, isIp, normalizeDomain } from "./util.js"; import { getTld, isDomain, isIp, normalizeDomain } from "./util.js";
import tldEnum from "@lumeweb/tld-enum"; import tldEnum from "@lumeweb/tld-enum";
import { resolve } from "./dns.js"; import { scanRecords } from "./dns.js";
import { blake2b, bufToHex } from "libskynet"; import { blake2b, bufToHex } from "libskynet";
import { getAuthStatus } from "./main/vars.js"; import { getAuthStatus } from "./main/vars.js";
import { DNSResult } from "@lumeweb/libresolver";
export default class WebEngine { export default class WebEngine {
private contentProviders: BaseProvider[] = []; private contentProviders: BaseProvider[] = [];
@ -238,7 +239,7 @@ export default class WebEngine {
if (/[\s_]/.test(queriedHost)) { if (/[\s_]/.test(queriedHost)) {
return; return;
} }
let dns; let dnsResult: boolean | DNSResult = false;
let resolveRequest: any, rejectRequest: any; let resolveRequest: any, rejectRequest: any;
@ -263,13 +264,13 @@ export default class WebEngine {
} }
try { try {
dns = await resolve(queriedHost, {}); dnsResult = await scanRecords(queriedHost);
} catch (e) { } catch (e) {
resolveRequest(); resolveRequest();
return; return;
} }
if (!dns) { if (!dnsResult) {
resolveRequest(); resolveRequest();
return; return;
} }

422
yarn.lock
View File

@ -23,6 +23,11 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
"@eslint/eslintrc@^1.3.0": "@eslint/eslintrc@^1.3.0":
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f"
@ -38,15 +43,20 @@
minimatch "^3.1.2" minimatch "^3.1.2"
strip-json-comments "^3.1.1" strip-json-comments "^3.1.1"
"@humanwhocodes/config-array@^0.9.2": "@humanwhocodes/config-array@^0.10.4":
version "0.9.5" version "0.10.4"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c"
integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==
dependencies: dependencies:
"@humanwhocodes/object-schema" "^1.2.1" "@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1" debug "^4.1.1"
minimatch "^3.0.4" minimatch "^3.0.4"
"@humanwhocodes/gitignore-to-minimatch@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d"
integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==
"@humanwhocodes/object-schema@^1.2.1": "@humanwhocodes/object-schema@^1.2.1":
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
@ -64,9 +74,9 @@
"@lumeweb/kernel-dns-client@https://github.com/LumeWeb/kernel-dns-client.git": "@lumeweb/kernel-dns-client@https://github.com/LumeWeb/kernel-dns-client.git":
version "0.1.0" version "0.1.0"
resolved "https://github.com/LumeWeb/kernel-dns-client.git#1ba24bee76ab7f746252a21fc48d34044924feb8" resolved "https://github.com/LumeWeb/kernel-dns-client.git#19caf515d50805e577019077c92fc98f1d9dc524"
dependencies: dependencies:
buffer "^6.0.3" "@lumeweb/resolver-common" "github:LumeWeb/resolver-common"
libkernel "^0.1.43" libkernel "^0.1.43"
libkmodule "^0.2.44" libkmodule "^0.2.44"
libskynet "^0.0.62" libskynet "^0.0.62"
@ -83,6 +93,10 @@
version "0.1.0" version "0.1.0"
resolved "https://github.com/LumeWeb/libresolver.git#1cdfd12ce9a0e49af59095d395159811ef1cfd59" resolved "https://github.com/LumeWeb/libresolver.git#1cdfd12ce9a0e49af59095d395159811ef1cfd59"
"@lumeweb/resolver-common@github:LumeWeb/resolver-common":
version "0.1.0"
resolved "https://codeload.github.com/LumeWeb/resolver-common/tar.gz/1cdfd12ce9a0e49af59095d395159811ef1cfd59"
"@lumeweb/tld-enum@https://github.com/LumeWeb/list-of-top-level-domains.git": "@lumeweb/tld-enum@https://github.com/LumeWeb/list-of-top-level-domains.git":
version "2.0.7" version "2.0.7"
resolved "https://github.com/LumeWeb/list-of-top-level-domains.git#ae60882496bb6e12896fe25436370a3bf02df249" resolved "https://github.com/LumeWeb/list-of-top-level-domains.git#ae60882496bb6e12896fe25436370a3bf02df249"
@ -159,9 +173,9 @@
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*": "@types/node@*":
version "18.6.3" version "18.7.9"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.9.tgz#180bfc495c91dc62573967edf047e15dbdce1491"
integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== integrity sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ==
"@types/normalize-package-data@^2.4.0": "@types/normalize-package-data@^2.4.0":
version "2.4.1" version "2.4.1"
@ -186,13 +200,13 @@
integrity sha512-HG1y1o2hK8ag6Y7dfkrAbfKmMIP+B0E6SwAzUfmQ1dDxEIdLTtMyrStY26suHBPrAL7Xw/chlDW02ugc3uXWtQ== integrity sha512-HG1y1o2hK8ag6Y7dfkrAbfKmMIP+B0E6SwAzUfmQ1dDxEIdLTtMyrStY26suHBPrAL7Xw/chlDW02ugc3uXWtQ==
"@typescript-eslint/eslint-plugin@^5.18.0": "@typescript-eslint/eslint-plugin@^5.18.0":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.31.0.tgz#cae1967b1e569e6171bbc6bec2afa4e0c8efccfe" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.33.1.tgz#c0a480d05211660221eda963cc844732fe9b1714"
integrity sha512-VKW4JPHzG5yhYQrQ1AzXgVgX8ZAJEvCz0QI6mLRX4tf7rnFfh5D8SKm0Pq6w5PyNfAWJk6sv313+nEt3ohWMBQ== integrity sha512-S1iZIxrTvKkU3+m63YUOxYPKaP+yWDQrdhxTglVDVEVBf+aCSw85+BmJnyUaQQsk5TXFG/LpBu9fa+LrAQ91fQ==
dependencies: dependencies:
"@typescript-eslint/scope-manager" "5.31.0" "@typescript-eslint/scope-manager" "5.33.1"
"@typescript-eslint/type-utils" "5.31.0" "@typescript-eslint/type-utils" "5.33.1"
"@typescript-eslint/utils" "5.31.0" "@typescript-eslint/utils" "5.33.1"
debug "^4.3.4" debug "^4.3.4"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
ignore "^5.2.0" ignore "^5.2.0"
@ -200,59 +214,59 @@
semver "^7.3.7" semver "^7.3.7"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/scope-manager@5.31.0": "@typescript-eslint/scope-manager@5.33.1":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.31.0.tgz#f47a794ba84d9b818ab7f8f44fff55a61016c606" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.33.1.tgz#8d31553e1b874210018ca069b3d192c6d23bc493"
integrity sha512-8jfEzBYDBG88rcXFxajdVavGxb5/XKXyvWgvD8Qix3EEJLCFIdVloJw+r9ww0wbyNLOTYyBsR+4ALNGdlalLLg== integrity sha512-8ibcZSqy4c5m69QpzJn8XQq9NnqAToC8OdH/W6IXPXv83vRyEDPYLdjAlUx8h/rbusq6MkW4YdQzURGOqsn3CA==
dependencies: dependencies:
"@typescript-eslint/types" "5.31.0" "@typescript-eslint/types" "5.33.1"
"@typescript-eslint/visitor-keys" "5.31.0" "@typescript-eslint/visitor-keys" "5.33.1"
"@typescript-eslint/type-utils@5.31.0": "@typescript-eslint/type-utils@5.33.1":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.31.0.tgz#70a0b7201360b5adbddb0c36080495aa08f6f3d9" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.33.1.tgz#1a14e94650a0ae39f6e3b77478baff002cec4367"
integrity sha512-7ZYqFbvEvYXFn9ax02GsPcEOmuWNg+14HIf4q+oUuLnMbpJ6eHAivCg7tZMVwzrIuzX3QCeAOqKoyMZCv5xe+w== integrity sha512-X3pGsJsD8OiqhNa5fim41YtlnyiWMF/eKsEZGsHID2HcDqeSC5yr/uLOeph8rNF2/utwuI0IQoAK3fpoxcLl2g==
dependencies: dependencies:
"@typescript-eslint/utils" "5.31.0" "@typescript-eslint/utils" "5.33.1"
debug "^4.3.4" debug "^4.3.4"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/types@5.31.0": "@typescript-eslint/types@5.33.1":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.31.0.tgz#7aa389122b64b18e473c1672fb3b8310e5f07a9a" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.33.1.tgz#3faef41793d527a519e19ab2747c12d6f3741ff7"
integrity sha512-/f/rMaEseux+I4wmR6mfpM2wvtNZb1p9hAV77hWfuKc3pmaANp5dLAZSiE3/8oXTYTt3uV9KW5yZKJsMievp6g== integrity sha512-7K6MoQPQh6WVEkMrMW5QOA5FO+BOwzHSNd0j3+BlBwd6vtzfZceJ8xJ7Um2XDi/O3umS8/qDX6jdy2i7CijkwQ==
"@typescript-eslint/typescript-estree@5.31.0": "@typescript-eslint/typescript-estree@5.33.1":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.31.0.tgz#eb92970c9d6e3946690d50c346fb9b1d745ee882" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.33.1.tgz#a573bd360790afdcba80844e962d8b2031984f34"
integrity sha512-3S625TMcARX71wBc2qubHaoUwMEn+l9TCsaIzYI/ET31Xm2c9YQ+zhGgpydjorwQO9pLfR/6peTzS/0G3J/hDw== integrity sha512-JOAzJ4pJ+tHzA2pgsWQi4804XisPHOtbvwUyqsuuq8+y5B5GMZs7lI1xDWs6V2d7gE/Ez5bTGojSK12+IIPtXA==
dependencies: dependencies:
"@typescript-eslint/types" "5.31.0" "@typescript-eslint/types" "5.33.1"
"@typescript-eslint/visitor-keys" "5.31.0" "@typescript-eslint/visitor-keys" "5.33.1"
debug "^4.3.4" debug "^4.3.4"
globby "^11.1.0" globby "^11.1.0"
is-glob "^4.0.3" is-glob "^4.0.3"
semver "^7.3.7" semver "^7.3.7"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/utils@5.31.0": "@typescript-eslint/utils@5.33.1":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.31.0.tgz#e146fa00dca948bfe547d665b2138a2dc1b79acd" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.33.1.tgz#171725f924fe1fe82bb776522bb85bc034e88575"
integrity sha512-kcVPdQS6VIpVTQ7QnGNKMFtdJdvnStkqS5LeALr4rcwx11G6OWb2HB17NMPnlRHvaZP38hL9iK8DdE9Fne7NYg== integrity sha512-uphZjkMaZ4fE8CR4dU7BquOV6u0doeQAr8n6cQenl/poMaIyJtBu8eys5uk6u5HiDH01Mj5lzbJ5SfeDz7oqMQ==
dependencies: dependencies:
"@types/json-schema" "^7.0.9" "@types/json-schema" "^7.0.9"
"@typescript-eslint/scope-manager" "5.31.0" "@typescript-eslint/scope-manager" "5.33.1"
"@typescript-eslint/types" "5.31.0" "@typescript-eslint/types" "5.33.1"
"@typescript-eslint/typescript-estree" "5.31.0" "@typescript-eslint/typescript-estree" "5.33.1"
eslint-scope "^5.1.1" eslint-scope "^5.1.1"
eslint-utils "^3.0.0" eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@5.31.0": "@typescript-eslint/visitor-keys@5.33.1":
version "5.31.0" version "5.33.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.31.0.tgz#b0eca264df01ce85dceb76aebff3784629258f54" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.33.1.tgz#0155c7571c8cd08956580b880aea327d5c34a18b"
integrity sha512-ZK0jVxSjS4gnPirpVjXHz7mgdOsZUHzNYSfTw2yPa3agfbt9YfqaBiBZFSSxeBWnpWkzCxTfUpnzA3Vily/CSg== integrity sha512-nwIxOK8Z2MPWltLKMLOEZwmfBZReqUdbEoHQXeCpa+sRVARe5twpJGHCB4dk9903Yaf0nMAlGbQfaAH92F60eg==
dependencies: dependencies:
"@typescript-eslint/types" "5.31.0" "@typescript-eslint/types" "5.33.1"
eslint-visitor-keys "^3.3.0" eslint-visitor-keys "^3.3.0"
abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1:
@ -267,7 +281,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.7.1: acorn@^8.8.0:
version "8.8.0" version "8.8.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
@ -400,7 +414,7 @@ buffer@^6.0.3:
base64-js "^1.3.1" base64-js "^1.3.1"
ieee754 "^1.2.1" ieee754 "^1.2.1"
builtin-modules@^3.0.0: builtin-modules@^3.3.0:
version "3.3.0" version "3.3.0"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
@ -699,131 +713,132 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1" is-date-object "^1.0.1"
is-symbol "^1.0.2" is-symbol "^1.0.2"
esbuild-android-64@0.14.51: esbuild-android-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz#414a087cb0de8db1e347ecca6c8320513de433db" resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
integrity sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ== integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
esbuild-android-arm64@0.14.51: esbuild-android-arm64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz#55de3bce2aab72bcd2b606da4318ad00fb9c8151" resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
integrity sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A== integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
esbuild-darwin-64@0.14.51: esbuild-darwin-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz#4259f23ed6b4cea2ec8a28d87b7fb9801f093754" resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
integrity sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA== integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
esbuild-darwin-arm64@0.14.51: esbuild-darwin-arm64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz#d77b4366a71d84e530ba019d540b538b295d494a" resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
integrity sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow== integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
esbuild-freebsd-64@0.14.51: esbuild-freebsd-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz#27b6587b3639f10519c65e07219d249b01f2ad38" resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
integrity sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g== integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
esbuild-freebsd-arm64@0.14.51: esbuild-freebsd-arm64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz#63c435917e566808c71fafddc600aca4d78be1ec" resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
integrity sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg== integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
esbuild-linux-32@0.14.51: esbuild-linux-32@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz#c3da774143a37e7f11559b9369d98f11f997a5d9" resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
integrity sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w== integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
esbuild-linux-64@0.14.51: esbuild-linux-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz#5d92b67f674e02ae0b4a9de9a757ba482115c4ae" resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
integrity sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA== integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
esbuild-linux-arm64@0.14.51: esbuild-linux-arm64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz#dac84740516e859d8b14e1ecc478dd5241b10c93" resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
integrity sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw== integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
esbuild-linux-arm@0.14.51: esbuild-linux-arm@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz#b3ae7000696cd53ed95b2b458554ff543a60e106" resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
integrity sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg== integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
esbuild-linux-mips64le@0.14.51: esbuild-linux-mips64le@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz#dad10770fac94efa092b5a0643821c955a9dd385" resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
integrity sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A== integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
esbuild-linux-ppc64le@0.14.51: esbuild-linux-ppc64le@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz#b68c2f8294d012a16a88073d67e976edd4850ae0" resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
integrity sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ== integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
esbuild-linux-riscv64@0.14.51: esbuild-linux-riscv64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz#608a318b8697123e44c1e185cdf6708e3df50b93" resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
integrity sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA== integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
esbuild-linux-s390x@0.14.51: esbuild-linux-s390x@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz#c9e7791170a3295dba79b93aa452beb9838a8625" resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
integrity sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw== integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
esbuild-netbsd-64@0.14.51: esbuild-netbsd-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz#0abd40b8c2e37fda6f5cc41a04cb2b690823d891" resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
integrity sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A== integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
esbuild-openbsd-64@0.14.51: esbuild-openbsd-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz#4adba0b7ea7eb1428bb00d8e94c199a949b130e8" resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
integrity sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA== integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
esbuild-sunos-64@0.14.51: esbuild-sunos-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz#4b8a6d97dfedda30a6e39607393c5c90ebf63891" resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
integrity sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA== integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
esbuild-windows-32@0.14.51: esbuild-windows-32@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz#d31d8ca0c1d314fb1edea163685a423b62e9ac17" resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
integrity sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg== integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
esbuild-windows-64@0.14.51: esbuild-windows-64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz#7d3c09c8652d222925625637bdc7e6c223e0085d" resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
integrity sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA== integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
esbuild-windows-arm64@0.14.51: esbuild-windows-arm64@0.14.54:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz#0220d2304bfdc11bc27e19b2aaf56edf183e4ae9" resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
integrity sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g== integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
esbuild@^0.14.51: esbuild@^0.14.51:
version "0.14.51" version "0.14.54"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.51.tgz#1c8ecbc8db3710da03776211dc3ee3448f7aa51e" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
integrity sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw== integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==
optionalDependencies: optionalDependencies:
esbuild-android-64 "0.14.51" "@esbuild/linux-loong64" "0.14.54"
esbuild-android-arm64 "0.14.51" esbuild-android-64 "0.14.54"
esbuild-darwin-64 "0.14.51" esbuild-android-arm64 "0.14.54"
esbuild-darwin-arm64 "0.14.51" esbuild-darwin-64 "0.14.54"
esbuild-freebsd-64 "0.14.51" esbuild-darwin-arm64 "0.14.54"
esbuild-freebsd-arm64 "0.14.51" esbuild-freebsd-64 "0.14.54"
esbuild-linux-32 "0.14.51" esbuild-freebsd-arm64 "0.14.54"
esbuild-linux-64 "0.14.51" esbuild-linux-32 "0.14.54"
esbuild-linux-arm "0.14.51" esbuild-linux-64 "0.14.54"
esbuild-linux-arm64 "0.14.51" esbuild-linux-arm "0.14.54"
esbuild-linux-mips64le "0.14.51" esbuild-linux-arm64 "0.14.54"
esbuild-linux-ppc64le "0.14.51" esbuild-linux-mips64le "0.14.54"
esbuild-linux-riscv64 "0.14.51" esbuild-linux-ppc64le "0.14.54"
esbuild-linux-s390x "0.14.51" esbuild-linux-riscv64 "0.14.54"
esbuild-netbsd-64 "0.14.51" esbuild-linux-s390x "0.14.54"
esbuild-openbsd-64 "0.14.51" esbuild-netbsd-64 "0.14.54"
esbuild-sunos-64 "0.14.51" esbuild-openbsd-64 "0.14.54"
esbuild-windows-32 "0.14.51" esbuild-sunos-64 "0.14.54"
esbuild-windows-64 "0.14.51" esbuild-windows-32 "0.14.54"
esbuild-windows-arm64 "0.14.51" esbuild-windows-64 "0.14.54"
esbuild-windows-arm64 "0.14.54"
escape-string-regexp@5.0.0: escape-string-regexp@5.0.0:
version "5.0.0" version "5.0.0"
@ -874,12 +889,13 @@ eslint-visitor-keys@^3.3.0:
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
eslint@^8.13.0: eslint@^8.13.0:
version "8.20.0" version "8.22.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.22.0.tgz#78fcb044196dfa7eef30a9d65944f6f980402c48"
integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== integrity sha512-ci4t0sz6vSRKdmkOGmprBo6fmI4PrphDFMy5JEq/fNS0gQkJM3rLmrqcp8ipMcdobH3KtUP40KniAE9W19S4wA==
dependencies: dependencies:
"@eslint/eslintrc" "^1.3.0" "@eslint/eslintrc" "^1.3.0"
"@humanwhocodes/config-array" "^0.9.2" "@humanwhocodes/config-array" "^0.10.4"
"@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
ajv "^6.10.0" ajv "^6.10.0"
chalk "^4.0.0" chalk "^4.0.0"
cross-spawn "^7.0.2" cross-spawn "^7.0.2"
@ -889,14 +905,17 @@ eslint@^8.13.0:
eslint-scope "^7.1.1" eslint-scope "^7.1.1"
eslint-utils "^3.0.0" eslint-utils "^3.0.0"
eslint-visitor-keys "^3.3.0" eslint-visitor-keys "^3.3.0"
espree "^9.3.2" espree "^9.3.3"
esquery "^1.4.0" esquery "^1.4.0"
esutils "^2.0.2" esutils "^2.0.2"
fast-deep-equal "^3.1.3" fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1" file-entry-cache "^6.0.1"
find-up "^5.0.0"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
glob-parent "^6.0.1" glob-parent "^6.0.1"
globals "^13.15.0" globals "^13.15.0"
globby "^11.1.0"
grapheme-splitter "^1.0.4"
ignore "^5.2.0" ignore "^5.2.0"
import-fresh "^3.0.0" import-fresh "^3.0.0"
imurmurhash "^0.1.4" imurmurhash "^0.1.4"
@ -914,12 +933,12 @@ eslint@^8.13.0:
text-table "^0.2.0" text-table "^0.2.0"
v8-compile-cache "^2.0.3" v8-compile-cache "^2.0.3"
espree@^9.3.2: espree@^9.3.2, espree@^9.3.3:
version "9.3.2" version "9.3.3"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d"
integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==
dependencies: dependencies:
acorn "^8.7.1" acorn "^8.8.0"
acorn-jsx "^5.3.2" acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.3.0" eslint-visitor-keys "^3.3.0"
@ -1033,9 +1052,9 @@ flat-cache@^3.0.4:
rimraf "^3.0.2" rimraf "^3.0.2"
flatted@^3.1.0: flatted@^3.1.0:
version "3.2.6" version "3.2.7"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
for-each@^0.3.3: for-each@^0.3.3:
version "0.3.3" version "0.3.3"
@ -1169,6 +1188,11 @@ graceful-fs@^4.1.2:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
grapheme-splitter@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
hard-rejection@^2.1.0: hard-rejection@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
@ -1196,7 +1220,7 @@ has-property-descriptors@^1.0.0:
dependencies: dependencies:
get-intrinsic "^1.1.1" get-intrinsic "^1.1.1"
has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
@ -1316,11 +1340,11 @@ is-boolean-object@^1.1.0:
has-tostringtag "^1.0.0" has-tostringtag "^1.0.0"
is-builtin-module@^3.1.0: is-builtin-module@^3.1.0:
version "3.1.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0"
integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==
dependencies: dependencies:
builtin-modules "^3.0.0" builtin-modules "^3.3.0"
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4:
version "1.2.4" version "1.2.4"
@ -1328,9 +1352,9 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4:
integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
is-core-module@^2.5.0, is-core-module@^2.9.0: is-core-module@^2.5.0, is-core-module@^2.9.0:
version "2.9.0" version "2.10.0"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
dependencies: dependencies:
has "^1.0.3" has "^1.0.3"
@ -1628,12 +1652,12 @@ levn@^0.4.1:
type-check "~0.4.0" type-check "~0.4.0"
libkernel@^0.1.43: libkernel@^0.1.43:
version "0.1.43" version "0.1.48"
resolved "https://registry.yarnpkg.com/libkernel/-/libkernel-0.1.43.tgz#774368f98de6139245cc5719403cbda0fd5cc4c8" resolved "https://registry.yarnpkg.com/libkernel/-/libkernel-0.1.48.tgz#b5d44bc786403b3bfead39e14ca4db5c54c8792e"
integrity sha512-A3Qs790SVutYBqQojDyfavh/cQUWYUEPRkoc4UPT9uKbaoqd4Tj8WFXbFBA3fhr5hcj9SuHJsK5C9OjXGAZZog== integrity sha512-h86j/D+5gnpw/h8DTQE1C9hWFRmQnw5ZU9L3fYTZIPqPEIIU40z+tnDp66Zbb6mcfYCr8+SGkhcCy3XsyHOvyQ==
dependencies: dependencies:
"@skynetlabs/libskynet" "^0.0.48" "@skynetlabs/libskynet" "^0.0.48"
libskynet "^0.0.62" libskynet "^0.0.64"
"libkernel@https://github.com/LumeWeb/libextension.git": "libkernel@https://github.com/LumeWeb/libextension.git":
version "0.1.0" version "0.1.0"
@ -1643,17 +1667,27 @@ libkernel@^0.1.43:
libskynet "^0.0.62" libskynet "^0.0.62"
libkmodule@^0.2.44: libkmodule@^0.2.44:
version "0.2.46" version "0.2.51"
resolved "https://registry.yarnpkg.com/libkmodule/-/libkmodule-0.2.46.tgz#76f25e370dd104f09b791b49a30f81d69ca56241" resolved "https://registry.yarnpkg.com/libkmodule/-/libkmodule-0.2.51.tgz#d454e6a889c74bf5a8fe5bf6db5c3dcfe9f527c1"
integrity sha512-q5aFkZMzX5Tcqq3lyeY3AOp65B2yLJ2TJ1h8liWzU7vPENN5QJ0n4eM/by6FJ3HqrU63Pj26fDeMyGPJ1xIAVw== integrity sha512-zDJiIZNkuN2Ats6yPWTklwphHgpOYTt2gCy70XFNav3ReZ+tjE5UcGCeMdZTPlvXVbc9k/CaCxSqJ866SzuWTA==
dependencies: dependencies:
libskynet "^0.0.62" libskynet "^0.0.65"
libskynet@^0.0.62: libskynet@^0.0.62:
version "0.0.62" version "0.0.62"
resolved "https://registry.yarnpkg.com/libskynet/-/libskynet-0.0.62.tgz#6939de26a48beca4efb29eeed68c32538e61ca04" resolved "https://registry.yarnpkg.com/libskynet/-/libskynet-0.0.62.tgz#6939de26a48beca4efb29eeed68c32538e61ca04"
integrity sha512-rKB09+EH3XJGPmJ7/ycND1jIUCMGQXlu9X9vpuiWp+/mqYh07jzKCNlGzInjw/nqluVAZORR6y1y9ULr5u/H+A== integrity sha512-rKB09+EH3XJGPmJ7/ycND1jIUCMGQXlu9X9vpuiWp+/mqYh07jzKCNlGzInjw/nqluVAZORR6y1y9ULr5u/H+A==
libskynet@^0.0.64:
version "0.0.64"
resolved "https://registry.yarnpkg.com/libskynet/-/libskynet-0.0.64.tgz#ff933a770a76bd6faa06da52279f0638ff8db3d8"
integrity sha512-OPIxvxNTbo7H6KWU1YgQkfksNGTSQYVDsmGTji05/Gv2ZpwTOVJF4AMvggCHyLije8fNe4ZXRrBEtLQI3kpAaQ==
libskynet@^0.0.65:
version "0.0.65"
resolved "https://registry.yarnpkg.com/libskynet/-/libskynet-0.0.65.tgz#9c58c596f12026ff653925b15edb85bd980e2ce0"
integrity sha512-UcvzEotQa2JMBeWeUMKYLrHxRjuAtvU68PKfGt1rmcBtcup2d1pQewKxGNP4U3DIO062nvdcpU8ARvXu1pFgxQ==
lines-and-columns@^1.1.6: lines-and-columns@^1.1.6:
version "1.2.4" version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@ -1850,13 +1884,13 @@ object-keys@~0.4.0:
integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==
object.assign@^4.1.2: object.assign@^4.1.2:
version "4.1.2" version "4.1.4"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
dependencies: dependencies:
call-bind "^1.0.0" call-bind "^1.0.2"
define-properties "^1.1.3" define-properties "^1.1.4"
has-symbols "^1.0.1" has-symbols "^1.0.3"
object-keys "^1.1.1" object-keys "^1.1.1"
octal@^1.0.0: octal@^1.0.0:
@ -2135,9 +2169,9 @@ rimraf@^3.0.2:
glob "^7.1.3" glob "^7.1.3"
rollup@^2.75.6: rollup@^2.75.6:
version "2.77.2" version "2.78.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.2.tgz#6b6075c55f9cc2040a5912e6e062151e42e2c4e3" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
integrity sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g== integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
optionalDependencies: optionalDependencies:
fsevents "~2.3.2" fsevents "~2.3.2"
@ -2374,9 +2408,9 @@ typescript@^4.6.3:
integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==
uint8arrays@^3.0.0: uint8arrays@^3.0.0:
version "3.0.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.0.0.tgz#260869efb8422418b6f04e3fac73a3908175c63b" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2"
integrity sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA== integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==
dependencies: dependencies:
multiformats "^9.4.2" multiformats "^9.4.2"