From df16834cd69d1928acea7ab32b7d142eecea8445 Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Thu, 25 May 2023 18:13:37 +0530 Subject: [PATCH 1/7] Added aes-gcm-node.js --- utilities/aes-gcm-nodejs/README.md | 17 +++++ utilities/aes-gcm-nodejs/src/config.js | 9 +++ .../aes-gcm-nodejs/src/encryptionUtil.js | 66 +++++++++++++++++++ utilities/aes-gcm-nodejs/src/index.js | 37 +++++++++++ utilities/aes-gcm-nodejs/src/keyUtil.js | 53 +++++++++++++++ 5 files changed, 182 insertions(+) create mode 100644 utilities/aes-gcm-nodejs/README.md create mode 100644 utilities/aes-gcm-nodejs/src/config.js create mode 100644 utilities/aes-gcm-nodejs/src/encryptionUtil.js create mode 100644 utilities/aes-gcm-nodejs/src/index.js create mode 100644 utilities/aes-gcm-nodejs/src/keyUtil.js diff --git a/utilities/aes-gcm-nodejs/README.md b/utilities/aes-gcm-nodejs/README.md new file mode 100644 index 00000000..67e8f718 --- /dev/null +++ b/utilities/aes-gcm-nodejs/README.md @@ -0,0 +1,17 @@ +# Crypto module in node.js + +Make sure you are in the root of folder of the repo. Run this command to run the script + +``` +node src/index.js +``` + +### + +index.js is the main flow + +keyUtil.js contains all the methods for creating key pairs and shared keys + +encryptionUtil.js contains all the logic for encryption and decryption + +config.js contains all the variables that can be customised diff --git a/utilities/aes-gcm-nodejs/src/config.js b/utilities/aes-gcm-nodejs/src/config.js new file mode 100644 index 00000000..03ff281e --- /dev/null +++ b/utilities/aes-gcm-nodejs/src/config.js @@ -0,0 +1,9 @@ +const IV_LENGTH_IN_BITS = 96; +const KEY_LENGTH_IN_BITS = 2048; +const AUTH_TAG_LENGTH_IN_BITS = 128; //CANNOT BE CHANGED FOR AES-256-GCM + +module.exports = { + IV_LENGTH_IN_BITS, + AUTH_TAG_LENGTH_IN_BITS, + KEY_LENGTH_IN_BITS, +}; diff --git a/utilities/aes-gcm-nodejs/src/encryptionUtil.js b/utilities/aes-gcm-nodejs/src/encryptionUtil.js new file mode 100644 index 00000000..15568757 --- /dev/null +++ b/utilities/aes-gcm-nodejs/src/encryptionUtil.js @@ -0,0 +1,66 @@ +const { randomBytes, createCipheriv, createDecipheriv } = require("crypto"); +const { IV_LENGTH_IN_BITS, AUTH_TAG_LENGTH_IN_BITS } = require("./config"); + +const AUTH_TAG_LENGTH_IN_BYTES = Math.ceil(AUTH_TAG_LENGTH_IN_BITS / 8); +const IV_LENGTH_IN_BYTES = Math.ceil(IV_LENGTH_IN_BITS / 8); + +function encryptData(sharedKey, data) { + const iv = randomBytes(IV_LENGTH_IN_BYTES); + const sharedKeyBytes = Buffer.from(sharedKey, "base64"); + + const cipher = createCipheriv("aes-256-gcm", sharedKeyBytes, iv, { + authTagLength: AUTH_TAG_LENGTH_IN_BYTES, + }); + + const encryptedMessage = + cipher.update(data, "utf8", "base64") + cipher.final("base64"); + const authTag = cipher.getAuthTag(); + + const authTagBase64 = authTag.toString("base64"); + + const digetBase64 = convertPayloadToBase64( + encryptedMessage, + authTagBase64, + iv.toString("base64") + ); + + return digetBase64; +} + +function decryptData(sharedKey, eData) { + const decodedData = Buffer.from(eData, "base64").toString("utf8"); + const dataJSON = JSON.parse(decodedData); + const { encrypted_data, hmac, nonce } = dataJSON; + + const authTag = Buffer.from(hmac, "base64"); + const sharedKeyBytes = Buffer.from(sharedKey, "base64"); + const nonceBytes = Buffer.from(nonce, "base64"); + + const decipher = createDecipheriv("aes-256-gcm", sharedKeyBytes, nonceBytes, { + authTagLength: AUTH_TAG_LENGTH_IN_BYTES, + }); + decipher.setAuthTag(authTag); + + const decryptedMessage = + decipher.update(encrypted_data, "base64", "utf8") + decipher.final("utf8"); + + return decryptedMessage; +} + +function convertPayloadToBase64(encryptedMessage, authTagBase64, iv) { + const returnPayloadJSON = { + encrypted_data: encryptedMessage, + hmac: authTagBase64, + nonce: iv, + }; + + const returnPayloadString = JSON.stringify(returnPayloadJSON); + + const returnPayloadBase64 = Buffer.from(returnPayloadString, "utf8").toString( + "base64" + ); + + return returnPayloadBase64; +} + +module.exports = { encryptData, decryptData }; diff --git a/utilities/aes-gcm-nodejs/src/index.js b/utilities/aes-gcm-nodejs/src/index.js new file mode 100644 index 00000000..4f98c786 --- /dev/null +++ b/utilities/aes-gcm-nodejs/src/index.js @@ -0,0 +1,37 @@ +const { generateKeyPair, generateSharedKey } = require("./keyUtil"); +const { encryptData, decryptData } = require("./encryptionUtil"); + +const aliceKeys = generateKeyPair(); +const bobKeys = generateKeyPair(); + +console.log("Alice's keys: "); +console.log(aliceKeys); + +console.log("Bob's keys: "); +console.log(bobKeys); + +console.log("Making shared keys with the correct combination..."); + +const aliceSharedKey = generateSharedKey( + aliceKeys.privateKey, + bobKeys.publicKey +); +const bobSharedKey = generateSharedKey(bobKeys.privateKey, aliceKeys.publicKey); + +console.log( + "Do Alice and bob have the same shared key? ", + aliceSharedKey === bobSharedKey, + aliceSharedKey +); + +const MESSAGE_DATA = "Peter Parker is spider man!!!!!"; + +console.log("Using Alice shared key to enrypt data"); +const encryptedData = encryptData(aliceSharedKey, MESSAGE_DATA); + +console.log("Encrypted data = ", encryptedData); + +console.log("Using Bob shared key to decrypt data"); +const decryptedData = decryptData(bobSharedKey, encryptedData); + +console.log("Decrypted data = ", decryptedData); diff --git a/utilities/aes-gcm-nodejs/src/keyUtil.js b/utilities/aes-gcm-nodejs/src/keyUtil.js new file mode 100644 index 00000000..a27f290c --- /dev/null +++ b/utilities/aes-gcm-nodejs/src/keyUtil.js @@ -0,0 +1,53 @@ +const { + generateKeyPairSync, + diffieHellman, + createPrivateKey, + createPublicKey, +} = require("crypto"); +const { KEY_LENGTH_IN_BITS } = require("./config"); + +function generateKeyPair() { + const { publicKey, privateKey } = generateKeyPairSync("x25519", { + modulusLength: KEY_LENGTH_IN_BITS, + privateKeyEncoding: { + format: "der", + type: "pkcs8", + }, + publicKeyEncoding: { + format: "der", + type: "spki", + }, + }); + + const publicKeyString = publicKey.toString("base64"); + const privateKeyString = privateKey.toString("base64"); + + return { publicKey: publicKeyString, privateKey: privateKeyString }; +} + +function generateSharedKey(privateKeyString, publicKeyString) { + const privateBuffer = Buffer.from(privateKeyString, "base64"); + const publicBuffer = Buffer.from(publicKeyString, "base64"); + + const privateObj = createPrivateKey({ + key: privateBuffer, + format: "der", + type: "pkcs8", + }); + const publicObj = createPublicKey({ + key: publicBuffer, + format: "der", + type: "spki", + }); + + const sharedSecret = diffieHellman({ + privateKey: privateObj, + publicKey: publicObj, + }); + + const sharedKey = sharedSecret.toString("base64"); + + return sharedKey; +} + +module.exports = { generateKeyPair, generateSharedKey }; From 294aabbad50ab2f59d998631a445f2a3bd602203 Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Fri, 26 May 2023 13:45:10 +0530 Subject: [PATCH 2/7] Added comments and changed variable names --- utilities/aes-gcm-nodejs/README.md | 4 +- utilities/aes-gcm-nodejs/src/config.js | 9 ---- utilities/aes-gcm-nodejs/src/constants.js | 13 +++++ .../aes-gcm-nodejs/src/encryptionUtil.js | 44 +++++++++++------ utilities/aes-gcm-nodejs/src/index.js | 49 +++++++++---------- utilities/aes-gcm-nodejs/src/keyUtil.js | 41 +++++++++------- 6 files changed, 88 insertions(+), 72 deletions(-) delete mode 100644 utilities/aes-gcm-nodejs/src/config.js create mode 100644 utilities/aes-gcm-nodejs/src/constants.js diff --git a/utilities/aes-gcm-nodejs/README.md b/utilities/aes-gcm-nodejs/README.md index 67e8f718..c09d9955 100644 --- a/utilities/aes-gcm-nodejs/README.md +++ b/utilities/aes-gcm-nodejs/README.md @@ -1,6 +1,6 @@ # Crypto module in node.js -Make sure you are in the root of folder of the repo. Run this command to run the script +Make sure you are in the root of folder of the repo and have node installed (v16^). Run this command to run the script ``` node src/index.js @@ -14,4 +14,4 @@ keyUtil.js contains all the methods for creating key pairs and shared keys encryptionUtil.js contains all the logic for encryption and decryption -config.js contains all the variables that can be customised +constants.js contains all the variables that can be customised diff --git a/utilities/aes-gcm-nodejs/src/config.js b/utilities/aes-gcm-nodejs/src/config.js deleted file mode 100644 index 03ff281e..00000000 --- a/utilities/aes-gcm-nodejs/src/config.js +++ /dev/null @@ -1,9 +0,0 @@ -const IV_LENGTH_IN_BITS = 96; -const KEY_LENGTH_IN_BITS = 2048; -const AUTH_TAG_LENGTH_IN_BITS = 128; //CANNOT BE CHANGED FOR AES-256-GCM - -module.exports = { - IV_LENGTH_IN_BITS, - AUTH_TAG_LENGTH_IN_BITS, - KEY_LENGTH_IN_BITS, -}; diff --git a/utilities/aes-gcm-nodejs/src/constants.js b/utilities/aes-gcm-nodejs/src/constants.js new file mode 100644 index 00000000..cf4eb994 --- /dev/null +++ b/utilities/aes-gcm-nodejs/src/constants.js @@ -0,0 +1,13 @@ +const IV_LENGTH_IN_BITS = 96; +const AUTH_TAG_LENGTH_IN_BITS = 128; //CANNOT BE CHANGED FOR AES-256-GCM +const KEY_PAIR_GENERATION_ALGORITHM = "x25519"; +const ENCRYPT_DECRYPT_ALGORITHM = "aes-256-gcm"; +const KEY_STRING_FORMAT = "base64"; + +module.exports = { + IV_LENGTH_IN_BITS, + AUTH_TAG_LENGTH_IN_BITS, + KEY_PAIR_GENERATION_ALGORITHM, + ENCRYPT_DECRYPT_ALGORITHM, + KEY_STRING_FORMAT, +}; diff --git a/utilities/aes-gcm-nodejs/src/encryptionUtil.js b/utilities/aes-gcm-nodejs/src/encryptionUtil.js index 15568757..7a5fa3ef 100644 --- a/utilities/aes-gcm-nodejs/src/encryptionUtil.js +++ b/utilities/aes-gcm-nodejs/src/encryptionUtil.js @@ -1,48 +1,60 @@ const { randomBytes, createCipheriv, createDecipheriv } = require("crypto"); -const { IV_LENGTH_IN_BITS, AUTH_TAG_LENGTH_IN_BITS } = require("./config"); +const { + IV_LENGTH_IN_BITS, + AUTH_TAG_LENGTH_IN_BITS, + KEY_STRING_FORMAT, + ENCRYPT_DECRYPT_ALGORITHM, +} = require("./constants"); const AUTH_TAG_LENGTH_IN_BYTES = Math.ceil(AUTH_TAG_LENGTH_IN_BITS / 8); const IV_LENGTH_IN_BYTES = Math.ceil(IV_LENGTH_IN_BITS / 8); function encryptData(sharedKey, data) { const iv = randomBytes(IV_LENGTH_IN_BYTES); - const sharedKeyBytes = Buffer.from(sharedKey, "base64"); + const sharedKeyBytes = Buffer.from(sharedKey, KEY_STRING_FORMAT); - const cipher = createCipheriv("aes-256-gcm", sharedKeyBytes, iv, { + const cipher = createCipheriv(ENCRYPT_DECRYPT_ALGORITHM, sharedKeyBytes, iv, { authTagLength: AUTH_TAG_LENGTH_IN_BYTES, }); const encryptedMessage = - cipher.update(data, "utf8", "base64") + cipher.final("base64"); + cipher.update(data, "utf8", KEY_STRING_FORMAT) + + cipher.final(KEY_STRING_FORMAT); const authTag = cipher.getAuthTag(); - const authTagBase64 = authTag.toString("base64"); + const authTagBase64 = authTag.toString(KEY_STRING_FORMAT); const digetBase64 = convertPayloadToBase64( encryptedMessage, authTagBase64, - iv.toString("base64") + iv.toString(KEY_STRING_FORMAT) ); return digetBase64; } function decryptData(sharedKey, eData) { - const decodedData = Buffer.from(eData, "base64").toString("utf8"); + const decodedData = Buffer.from(eData, KEY_STRING_FORMAT).toString("utf8"); const dataJSON = JSON.parse(decodedData); const { encrypted_data, hmac, nonce } = dataJSON; - const authTag = Buffer.from(hmac, "base64"); - const sharedKeyBytes = Buffer.from(sharedKey, "base64"); - const nonceBytes = Buffer.from(nonce, "base64"); - - const decipher = createDecipheriv("aes-256-gcm", sharedKeyBytes, nonceBytes, { - authTagLength: AUTH_TAG_LENGTH_IN_BYTES, - }); + const authTag = Buffer.from(hmac, KEY_STRING_FORMAT); + const sharedKeyBytes = Buffer.from(sharedKey, KEY_STRING_FORMAT); + const nonceBytes = Buffer.from(nonce, KEY_STRING_FORMAT); + + const decipher = createDecipheriv( + ENCRYPT_DECRYPT_ALGORITHM, + sharedKeyBytes, + nonceBytes, + { + authTagLength: AUTH_TAG_LENGTH_IN_BYTES, + } + ); decipher.setAuthTag(authTag); const decryptedMessage = - decipher.update(encrypted_data, "base64", "utf8") + decipher.final("utf8"); + decipher.update(encrypted_data, KEY_STRING_FORMAT, "utf8") + + decipher.final("utf8"); return decryptedMessage; } @@ -57,7 +69,7 @@ function convertPayloadToBase64(encryptedMessage, authTagBase64, iv) { const returnPayloadString = JSON.stringify(returnPayloadJSON); const returnPayloadBase64 = Buffer.from(returnPayloadString, "utf8").toString( - "base64" + KEY_STRING_FORMAT ); return returnPayloadBase64; diff --git a/utilities/aes-gcm-nodejs/src/index.js b/utilities/aes-gcm-nodejs/src/index.js index 4f98c786..2993a243 100644 --- a/utilities/aes-gcm-nodejs/src/index.js +++ b/utilities/aes-gcm-nodejs/src/index.js @@ -1,37 +1,32 @@ const { generateKeyPair, generateSharedKey } = require("./keyUtil"); const { encryptData, decryptData } = require("./encryptionUtil"); -const aliceKeys = generateKeyPair(); -const bobKeys = generateKeyPair(); +// Generate Key Pair for User 1. +const keyPair1 = generateKeyPair(); +console.log("Key Pair 1 ==> ", keyPair1); -console.log("Alice's keys: "); -console.log(aliceKeys); +// Generate Key Pair for User 2. +const keyPair2 = generateKeyPair(); +console.log("Key Pair 2 ==> ", keyPair2); -console.log("Bob's keys: "); -console.log(bobKeys); +// Generate Shared Key with User 1's Private Key and User 2's Public Key. +const sharedKey1 = generateSharedKey(keyPair1.privateKey, keyPair2.publicKey); +console.log("SharedKey1 ==> " + sharedKey1); -console.log("Making shared keys with the correct combination..."); +// Generate Shared Key with User 2's Private Key and User 1's Public Key. +const sharedKey2 = generateSharedKey(keyPair2.privateKey, keyPair1.publicKey); +console.log("SharedKey2 ==> " + sharedKey2); -const aliceSharedKey = generateSharedKey( - aliceKeys.privateKey, - bobKeys.publicKey -); -const bobSharedKey = generateSharedKey(bobKeys.privateKey, aliceKeys.publicKey); +// Comparing the two Shared keys generated above. +console.log("sharedKey1 == sharedKey2 ==> ", sharedKey1 === sharedKey2); -console.log( - "Do Alice and bob have the same shared key? ", - aliceSharedKey === bobSharedKey, - aliceSharedKey -); +// Initializing the raw text to be encrypted. +const MESSAGE_DATA = "Hello This is ONDC Test Data"; -const MESSAGE_DATA = "Peter Parker is spider man!!!!!"; +// Encrypting the raw data. +const encryptedData = encryptData(sharedKey1, MESSAGE_DATA); +console.log("Encrypted Data ===> " + encryptedData); -console.log("Using Alice shared key to enrypt data"); -const encryptedData = encryptData(aliceSharedKey, MESSAGE_DATA); - -console.log("Encrypted data = ", encryptedData); - -console.log("Using Bob shared key to decrypt data"); -const decryptedData = decryptData(bobSharedKey, encryptedData); - -console.log("Decrypted data = ", decryptedData); +// Decrypting the Encrypted data. +const decryptedData = decryptData(sharedKey2, encryptedData); +console.log("Decrypted Data ===> " + decryptedData); diff --git a/utilities/aes-gcm-nodejs/src/keyUtil.js b/utilities/aes-gcm-nodejs/src/keyUtil.js index a27f290c..e156b3ee 100644 --- a/utilities/aes-gcm-nodejs/src/keyUtil.js +++ b/utilities/aes-gcm-nodejs/src/keyUtil.js @@ -4,30 +4,35 @@ const { createPrivateKey, createPublicKey, } = require("crypto"); -const { KEY_LENGTH_IN_BITS } = require("./config"); +const { + KEY_PAIR_GENERATION_ALGORITHM, + KEY_STRING_FORMAT, +} = require("./constants"); function generateKeyPair() { - const { publicKey, privateKey } = generateKeyPairSync("x25519", { - modulusLength: KEY_LENGTH_IN_BITS, - privateKeyEncoding: { - format: "der", - type: "pkcs8", - }, - publicKeyEncoding: { - format: "der", - type: "spki", - }, - }); - - const publicKeyString = publicKey.toString("base64"); - const privateKeyString = privateKey.toString("base64"); + const { publicKey, privateKey } = generateKeyPairSync( + KEY_PAIR_GENERATION_ALGORITHM, + { + privateKeyEncoding: { + format: "der", + type: "pkcs8", + }, + publicKeyEncoding: { + format: "der", + type: "spki", + }, + } + ); + + const publicKeyString = publicKey.toString(KEY_STRING_FORMAT); + const privateKeyString = privateKey.toString(KEY_STRING_FORMAT); return { publicKey: publicKeyString, privateKey: privateKeyString }; } function generateSharedKey(privateKeyString, publicKeyString) { - const privateBuffer = Buffer.from(privateKeyString, "base64"); - const publicBuffer = Buffer.from(publicKeyString, "base64"); + const privateBuffer = Buffer.from(privateKeyString, KEY_STRING_FORMAT); + const publicBuffer = Buffer.from(publicKeyString, KEY_STRING_FORMAT); const privateObj = createPrivateKey({ key: privateBuffer, @@ -45,7 +50,7 @@ function generateSharedKey(privateKeyString, publicKeyString) { publicKey: publicObj, }); - const sharedKey = sharedSecret.toString("base64"); + const sharedKey = sharedSecret.toString(KEY_STRING_FORMAT); return sharedKey; } From c1ff72dd376fad176cc6bea4e42afda1d5f12e40 Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Fri, 26 May 2023 16:38:25 +0530 Subject: [PATCH 3/7] added test cases --- utilities/aes-gcm-nodejs/.gitignore | 2 + utilities/aes-gcm-nodejs/README.md | 18 +- .../__tests__/encryption.test.js | 23 + .../__tests__/sharedkey.test.js | 21 + utilities/aes-gcm-nodejs/package-lock.json | 6043 +++++++++++++++++ utilities/aes-gcm-nodejs/package.json | 15 + .../aes-gcm-nodejs/src/encryptionUtil.js | 50 +- 7 files changed, 6148 insertions(+), 24 deletions(-) create mode 100644 utilities/aes-gcm-nodejs/.gitignore create mode 100644 utilities/aes-gcm-nodejs/__tests__/encryption.test.js create mode 100644 utilities/aes-gcm-nodejs/__tests__/sharedkey.test.js create mode 100644 utilities/aes-gcm-nodejs/package-lock.json create mode 100644 utilities/aes-gcm-nodejs/package.json diff --git a/utilities/aes-gcm-nodejs/.gitignore b/utilities/aes-gcm-nodejs/.gitignore new file mode 100644 index 00000000..642271f5 --- /dev/null +++ b/utilities/aes-gcm-nodejs/.gitignore @@ -0,0 +1,2 @@ +node_modules/ +coverage/ \ No newline at end of file diff --git a/utilities/aes-gcm-nodejs/README.md b/utilities/aes-gcm-nodejs/README.md index c09d9955..06aa882a 100644 --- a/utilities/aes-gcm-nodejs/README.md +++ b/utilities/aes-gcm-nodejs/README.md @@ -1,11 +1,25 @@ # Crypto module in node.js -Make sure you are in the root of folder of the repo and have node installed (v16^). Run this command to run the script +Make sure you are in the root of folder (the folder which contains src, \_\_tests\_\_ and README.md) of the repo and have node installed (v16^). + +Run this command to run the script (A demo for key pair and shared key generation, encrpytion and decryption) ``` node src/index.js ``` +Run this command to install testing libarary + +``` +npm install +``` + +Run this command to generate coverage report from test cases + +``` +npm run coverage +``` + ### index.js is the main flow @@ -15,3 +29,5 @@ keyUtil.js contains all the methods for creating key pairs and shared keys encryptionUtil.js contains all the logic for encryption and decryption constants.js contains all the variables that can be customised + +\_\_tests\_\_ contains all the test cases diff --git a/utilities/aes-gcm-nodejs/__tests__/encryption.test.js b/utilities/aes-gcm-nodejs/__tests__/encryption.test.js new file mode 100644 index 00000000..7d2e83e3 --- /dev/null +++ b/utilities/aes-gcm-nodejs/__tests__/encryption.test.js @@ -0,0 +1,23 @@ +const { randomBytes } = require("crypto"); +const { encryptData, decryptData } = require("../src/encryptionUtil"); + +test("Checking encryption with same shared key", () => { + const MESSAGE = "This is a secret..."; + const sharedKey = randomBytes(32).toString("base64"); + + const encryptedData = encryptData(sharedKey, MESSAGE); + const decrpyedtData = decryptData(sharedKey, encryptedData); + + expect(decrpyedtData === MESSAGE).toBe(true); +}); + +test("Checking encryption with different shared key", () => { + const MESSAGE = "This is a secret..."; + const sharedKey1 = randomBytes(32).toString("base64"); + const sharedKey2 = randomBytes(32).toString("base64"); + + const encryptedData = encryptData(sharedKey1, MESSAGE); + const decrpyedtData = decryptData(sharedKey2, encryptedData); + + expect(decrpyedtData === MESSAGE).toBe(false); +}); diff --git a/utilities/aes-gcm-nodejs/__tests__/sharedkey.test.js b/utilities/aes-gcm-nodejs/__tests__/sharedkey.test.js new file mode 100644 index 00000000..d9e9b889 --- /dev/null +++ b/utilities/aes-gcm-nodejs/__tests__/sharedkey.test.js @@ -0,0 +1,21 @@ +const { generateKeyPair, generateSharedKey } = require("../src/keyUtil"); + +test("Check if two pairs of keys generate the same shared key after exchange", () => { + const keyPair1 = generateKeyPair(); + const keyPair2 = generateKeyPair(); + + const sharedKey1 = generateSharedKey(keyPair1.privateKey, keyPair2.publicKey); + const sharedKey2 = generateSharedKey(keyPair2.privateKey, keyPair1.publicKey); + + expect(sharedKey1 === sharedKey2).toBe(true); +}); + +test("Check if two pairs of key generate the same shared key when not exchanged", () => { + const keyPair1 = generateKeyPair(); + const keyPair2 = generateKeyPair(); + + const sharedKey1 = generateSharedKey(keyPair1.privateKey, keyPair1.publicKey); + const sharedKey2 = generateSharedKey(keyPair2.privateKey, keyPair2.publicKey); + + expect(sharedKey1 === sharedKey2).toBe(false); +}); diff --git a/utilities/aes-gcm-nodejs/package-lock.json b/utilities/aes-gcm-nodejs/package-lock.json new file mode 100644 index 00000000..0c4c830c --- /dev/null +++ b/utilities/aes-gcm-nodejs/package-lock.json @@ -0,0 +1,6043 @@ +{ + "name": "aes-gcm-nodejs", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "aes-gcm-nodejs", + "version": "1.0.0", + "license": "ISC", + "devDependencies": { + "jest": "^29.5.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz", + "integrity": "sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/@babel/generator": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz", + "integrity": "sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", + "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", + "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", + "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", + "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", + "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", + "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.5", + "@babel/types": "^7.21.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", + "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "dependencies": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz", + "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.0.tgz", + "integrity": "sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.4.tgz", + "integrity": "sha512-ni5f8Xlf4PwnT/Z3f0HURc3ZSw8UyrqMqmM3L5ysa7VjHu8c3FOmIo1nKCcLrV/OAmtf3N4kFna/aJqxsfEtnA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.408", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz", + "integrity": "sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.9.tgz", + "integrity": "sha512-FUGed8kfhyWvbYug/Un/VPJD41rDIgoVVcR+FuzhzOYyRz5uED+Gd3SLZml0Uw2l2aHFb7ZgdW5mGA3G2cCCnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.9.tgz", + "integrity": "sha512-F3fZga2uv09wFdEjEQIJxXALXfz0+JaOb7SabvVMmjHxeVTuGW8wgE8Vp1Hd7O+zMTYtcfEISGRzPkeiaPPsvg==", + "dev": true, + "requires": { + "@babel/types": "^7.21.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", + "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", + "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.21.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", + "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "dev": true + }, + "@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dev": true, + "requires": { + "@babel/types": "^7.21.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true + }, + "@babel/helpers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", + "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.9.tgz", + "integrity": "sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/template": { + "version": "7.21.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz", + "integrity": "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "@babel/parser": "^7.21.9", + "@babel/types": "^7.21.5" + } + }, + "@babel/traverse": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", + "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.5", + "@babel/types": "^7.21.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", + "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + } + }, + "@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "requires": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + } + }, + "@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3" + } + }, + "@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + } + }, + "@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.25.16" + } + }, + "@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "requires": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + } + }, + "@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + } + } + }, + "@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz", + "integrity": "sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@types/babel__core": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.0.tgz", + "integrity": "sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/node": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.2.4.tgz", + "integrity": "sha512-ni5f8Xlf4PwnT/Z3f0HURc3ZSw8UyrqMqmM3L5ysa7VjHu8c3FOmIo1nKCcLrV/OAmtf3N4kFna/aJqxsfEtnA==", + "dev": true + }, + "@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "requires": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001489", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz", + "integrity": "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.408", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.408.tgz", + "integrity": "sha512-vjeaj0u/UYnzA/CIdGXzzcxRLCqRwREYc9YfaWInjIEr7/XPttZ6ShpyqapchEy0S2r6LpLjDBTnNj7ZxnxJKg==", + "dev": true + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-core-module": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", + "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "requires": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + } + }, + "jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "requires": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + } + }, + "jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + } + }, + "jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true + }, + "jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "requires": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + } + }, + "jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true + }, + "jest-resolve": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "requires": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + } + }, + "jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "requires": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + } + }, + "jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "requires": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "requires": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "requires": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", + "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "pure-rand": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", + "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "dev": true + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "requires": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + } + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/utilities/aes-gcm-nodejs/package.json b/utilities/aes-gcm-nodejs/package.json new file mode 100644 index 00000000..a2a7e865 --- /dev/null +++ b/utilities/aes-gcm-nodejs/package.json @@ -0,0 +1,15 @@ +{ + "name": "aes-gcm-nodejs", + "version": "1.0.0", + "description": "Make sure you are in the root of folder of the repo and have node installed (v16^). Run this command to run the script", + "main": "src/index.js", + "scripts": { + "test": "jest", + "coverage": "jest --coverage" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "jest": "^29.5.0" + } +} diff --git a/utilities/aes-gcm-nodejs/src/encryptionUtil.js b/utilities/aes-gcm-nodejs/src/encryptionUtil.js index 7a5fa3ef..4ba86f92 100644 --- a/utilities/aes-gcm-nodejs/src/encryptionUtil.js +++ b/utilities/aes-gcm-nodejs/src/encryptionUtil.js @@ -34,29 +34,33 @@ function encryptData(sharedKey, data) { } function decryptData(sharedKey, eData) { - const decodedData = Buffer.from(eData, KEY_STRING_FORMAT).toString("utf8"); - const dataJSON = JSON.parse(decodedData); - const { encrypted_data, hmac, nonce } = dataJSON; - - const authTag = Buffer.from(hmac, KEY_STRING_FORMAT); - const sharedKeyBytes = Buffer.from(sharedKey, KEY_STRING_FORMAT); - const nonceBytes = Buffer.from(nonce, KEY_STRING_FORMAT); - - const decipher = createDecipheriv( - ENCRYPT_DECRYPT_ALGORITHM, - sharedKeyBytes, - nonceBytes, - { - authTagLength: AUTH_TAG_LENGTH_IN_BYTES, - } - ); - decipher.setAuthTag(authTag); - - const decryptedMessage = - decipher.update(encrypted_data, KEY_STRING_FORMAT, "utf8") + - decipher.final("utf8"); - - return decryptedMessage; + try { + const decodedData = Buffer.from(eData, KEY_STRING_FORMAT).toString("utf8"); + const dataJSON = JSON.parse(decodedData); + const { encrypted_data, hmac, nonce } = dataJSON; + + const authTag = Buffer.from(hmac, KEY_STRING_FORMAT); + const sharedKeyBytes = Buffer.from(sharedKey, KEY_STRING_FORMAT); + const nonceBytes = Buffer.from(nonce, KEY_STRING_FORMAT); + + const decipher = createDecipheriv( + ENCRYPT_DECRYPT_ALGORITHM, + sharedKeyBytes, + nonceBytes, + { + authTagLength: AUTH_TAG_LENGTH_IN_BYTES, + } + ); + decipher.setAuthTag(authTag); + + const decryptedMessage = + decipher.update(encrypted_data, KEY_STRING_FORMAT, "utf8") + + decipher.final("utf8"); + + return decryptedMessage; + } catch (error) { + console.error(error); + } } function convertPayloadToBase64(encryptedMessage, authTagBase64, iv) { From e1e628a0b4ee8c27153b931a18d77d2e57ad3486 Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Fri, 26 May 2023 17:08:59 +0530 Subject: [PATCH 4/7] Added doc strings --- .../aes-gcm-nodejs/src/encryptionUtil.js | 19 +++++++++++++++++++ utilities/aes-gcm-nodejs/src/keyUtil.js | 14 +++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/utilities/aes-gcm-nodejs/src/encryptionUtil.js b/utilities/aes-gcm-nodejs/src/encryptionUtil.js index 4ba86f92..ef847a1f 100644 --- a/utilities/aes-gcm-nodejs/src/encryptionUtil.js +++ b/utilities/aes-gcm-nodejs/src/encryptionUtil.js @@ -9,6 +9,12 @@ const { const AUTH_TAG_LENGTH_IN_BYTES = Math.ceil(AUTH_TAG_LENGTH_IN_BITS / 8); const IV_LENGTH_IN_BYTES = Math.ceil(IV_LENGTH_IN_BITS / 8); +/** + * Encrypt string by passing a key + * @param {String} sharedKey - in specified format (in constants folder) + * @param {String} data - in utf8 + * @returns {String} encrypted data - string in specified format that contains hmac, nonce and encrypted message + */ function encryptData(sharedKey, data) { const iv = randomBytes(IV_LENGTH_IN_BYTES); const sharedKeyBytes = Buffer.from(sharedKey, KEY_STRING_FORMAT); @@ -33,6 +39,12 @@ function encryptData(sharedKey, data) { return digetBase64; } +/** + * Decrypt the data + * @param {String} sharedKey + * @param {String} eData - encrypted data string + * @returns {String | undefined} decoded message is returned if shared key and encrypted data are valid, else returns void + */ function decryptData(sharedKey, eData) { try { const decodedData = Buffer.from(eData, KEY_STRING_FORMAT).toString("utf8"); @@ -63,6 +75,13 @@ function decryptData(sharedKey, eData) { } } +/** + * This is a helper function. Takes the parameters, constructes a JSON, stringify the JSON, encode it. + * @param {String} encryptedMessage - Encrypted message + * @param {String} authTagBase64 - auth tag (or hmac) in spcified formated + * @param {String} iv - initial vector (or nonce) + * @returns {String} string encoded in specified formated + */ function convertPayloadToBase64(encryptedMessage, authTagBase64, iv) { const returnPayloadJSON = { encrypted_data: encryptedMessage, diff --git a/utilities/aes-gcm-nodejs/src/keyUtil.js b/utilities/aes-gcm-nodejs/src/keyUtil.js index e156b3ee..1b7f96b4 100644 --- a/utilities/aes-gcm-nodejs/src/keyUtil.js +++ b/utilities/aes-gcm-nodejs/src/keyUtil.js @@ -9,6 +9,13 @@ const { KEY_STRING_FORMAT, } = require("./constants"); +/** + * Generates a public, private key pair in 'der' format + * @typedef {Object} KeyPair + * @property {String} publicKey + * @property {String} privateKey + * @returns {KeyPair} + */ function generateKeyPair() { const { publicKey, privateKey } = generateKeyPairSync( KEY_PAIR_GENERATION_ALGORITHM, @@ -29,7 +36,12 @@ function generateKeyPair() { return { publicKey: publicKeyString, privateKey: privateKeyString }; } - +/** + * Generates a shared key, when a private key and public key are passed + * @param {String} privateKeyString + * @param {String} publicKeyString + * @returns {String} sharedKey + */ function generateSharedKey(privateKeyString, publicKeyString) { const privateBuffer = Buffer.from(privateKeyString, KEY_STRING_FORMAT); const publicBuffer = Buffer.from(publicKeyString, KEY_STRING_FORMAT); From c8c6e98e8f306046bfc5ef382ec78b5e1e3fbce5 Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Fri, 26 May 2023 20:04:11 +0530 Subject: [PATCH 5/7] Updated readme --- utilities/aes-gcm-nodejs/README.md | 101 +++++++++++++++++- .../aes-gcm-nodejs/src/encryptionUtil.js | 6 +- 2 files changed, 100 insertions(+), 7 deletions(-) diff --git a/utilities/aes-gcm-nodejs/README.md b/utilities/aes-gcm-nodejs/README.md index 06aa882a..52b43af0 100644 --- a/utilities/aes-gcm-nodejs/README.md +++ b/utilities/aes-gcm-nodejs/README.md @@ -1,28 +1,121 @@ # Crypto module in node.js +**Note**: All examples here are shown in **base64** format. This can be changed in the constants.js file + +## Prerequisite + Make sure you are in the root of folder (the folder which contains src, \_\_tests\_\_ and README.md) of the repo and have node installed (v16^). +## Demo + Run this command to run the script (A demo for key pair and shared key generation, encrpytion and decryption) ``` node src/index.js ``` -Run this command to install testing libarary +Here is a sample output + +``` +Key Pair 1 ==> { + publicKey: 'MCowBQYDK2VuAyEANyOBz6NyhiX4rrVyJpcekF0AUmE/aHPAO/b0bqY0EXw=', + privateKey: 'MC4CAQAwBQYDK2VuBCIEIPDHIoxb4nFan0TAxTBCJzbt1s+UNfVkKstth3AyG5By' +} +Key Pair 2 ==> { + publicKey: 'MCowBQYDK2VuAyEAwScw6KPlklcKUufAtFJDjGmQ3cRMeQQVX2U0dpk7agI=', + privateKey: 'MC4CAQAwBQYDK2VuBCIEIDAZizDiwEPopeOPO63ajN6wrj65iXKNkpfmakHqQrF4' +} +SharedKey1 ==> X+T+C7UvJo258rAqAhT8NLRfh24/by+Vd6A1h9c3mno= +SharedKey2 ==> X+T+C7UvJo258rAqAhT8NLRfh24/by+Vd6A1h9c3mno= +sharedKey1 == sharedKey2 ==> true +Encrypted Data ===> eyJlbmNyeXB0ZWRfZGF0YSI6Ikk5L3hUVmNPTkZ1aVVBcm9PNHJwaG9hRnRKZFpyQ3NFRnR3SVJ3PT0iLCJobWFjIjoiUlNYOURWUXRGdk1DeTNVNTZyY2s0QT09Iiwibm9uY2UiOiJ2R01kU0VnRk9nVnAxalNnIn0= +Decrypted Data ===> Hello This is ONDC Test Data +``` + +## Usage + +Functions in keyUtils.js and encryptionUtil.js can also be used individually (doc strings can be used as a guide) + +### keyUtil/generateKeyPair() + +Input: none + +Sample output: + +``` +{ + publicKey: 'MCowBQYDK2VuAyEANyOBz6NyhiX4rrVyJpcekF0AUmE/aHPAO/b0bqY0EXw=', + privateKey: 'MC4CAQAwBQYDK2VuBCIEIPDHIoxb4nFan0TAxTBCJzbt1s+UNfVkKstth3AyG5By' +} +``` + +### keyUtil/generateSharedKey(privateKeyString, publicKeyString) + +From keyPair1 and keyPair2, a shared key for both the parties is generated by using privateKey from one and publicKey from the other (Example: privateKey from keyPair1 and publicKey from keyPair2 or vise-versa) + +Input: privateKey (string), publicKey (string) + +Sample output: + +``` +X+T+C7UvJo258rAqAhT8NLRfh24/by+Vd6A1h9c3mno= +``` + +### encryptionUtil/encryptData(sharedKey, data) + +Input: sharedKey (string), data (string) + +Sample output: + +``` +eyJlbmNyeXB0ZWRfZGF0YSI6Ikk5L3hUVmNPTkZ1aVVBcm9PNHJwaG9hRnRKZFpyQ3NFRnR3SVJ3PT0iLCJobWFjIjoiUlNYOURWUXRGdk1DeTNVNTZyY2s0QT09Iiwibm9uY2UiOiJ2R01kU0VnRk9nVnAxalNnIn0= +``` + +**Note**: This encrypted string contains the information for decryption as well (hmac, nonce and encrypted string) + +### encryptionUtil/decryptData(sharedKey, eData) + +Input: sharedKey (string), encrypted data (string) + +Sample output: + +``` +Hello This is ONDC Test Data +``` + +**Note**: the shared key and encrypted data must be the same that was used for encrpytion. + +### encryptionUtil/convertPayloadToBase64(encryptedMessage, hmac, iv) + +Input: encrypted message (string), hmac (string), iv (string) + +Sample output: + +``` +eyJlbmNyeXB0ZWRfZGF0YSI6Ikk5L3hUVmNPTkZ1aVVBcm9PNHJwaG9hRnRKZFpyQ3NFRnR3SVJ3PT0iLCJobWFjIjoiUlNYOURWUXRGdk1DeTNVNTZyY2s0QT09Iiwibm9uY2UiOiJ2R01kU0VnRk9nVnAxalNnIn0= +``` + +## Tests and Coverage + +To get the code coverage, these are the following steps: + +1. Run this command to install testing libarary ``` npm install ``` -Run this command to generate coverage report from test cases +2. Run this command to generate coverage report from test cases ``` npm run coverage ``` -### +This should create a folder called `coverage` + +### Folder purpose -index.js is the main flow +index.js is the main flow (demo for generation of key pairs and shared key, encryption and decryption) keyUtil.js contains all the methods for creating key pairs and shared keys diff --git a/utilities/aes-gcm-nodejs/src/encryptionUtil.js b/utilities/aes-gcm-nodejs/src/encryptionUtil.js index ef847a1f..87cb0d4a 100644 --- a/utilities/aes-gcm-nodejs/src/encryptionUtil.js +++ b/utilities/aes-gcm-nodejs/src/encryptionUtil.js @@ -78,14 +78,14 @@ function decryptData(sharedKey, eData) { /** * This is a helper function. Takes the parameters, constructes a JSON, stringify the JSON, encode it. * @param {String} encryptedMessage - Encrypted message - * @param {String} authTagBase64 - auth tag (or hmac) in spcified formated + * @param {String} hmac - hmac (or authTag) in spcified formated * @param {String} iv - initial vector (or nonce) * @returns {String} string encoded in specified formated */ -function convertPayloadToBase64(encryptedMessage, authTagBase64, iv) { +function convertPayloadToBase64(encryptedMessage, hmac, iv) { const returnPayloadJSON = { encrypted_data: encryptedMessage, - hmac: authTagBase64, + hmac: hmac, nonce: iv, }; From d5f1827deba3077d72589912a9b1be9ab27b89e3 Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Fri, 26 May 2023 20:08:10 +0530 Subject: [PATCH 6/7] added sonar qube pdf --- utilities/aes-gcm-nodejs/.DS_Store | Bin 0 -> 6148 bytes .../aes-gcm-nodejs - Overview - SonarQube.pdf | Bin 0 -> 143165 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 utilities/aes-gcm-nodejs/.DS_Store create mode 100644 utilities/docs/aes-gcm-nodejs-sonarqube/aes-gcm-nodejs - Overview - SonarQube.pdf diff --git a/utilities/aes-gcm-nodejs/.DS_Store b/utilities/aes-gcm-nodejs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3d3c9b00022af02cc788ac38030a4abd3151b6e7 GIT binary patch literal 6148 zcmeHKJ5Iwu5S<|@EKv|T%DqBvuteqnC>KCUBq$O&0@1tUI#fs;fHQC%-h2Q@7AYy< zjWqkbGxK)kS9m-kqKn7PTx2F94ct(kY#E#7%|~{UkttB^jQMii?e?R(V*%q%f@yRL0l+irzObN%|u`L@eu%MzwvH(_E`d0EC8&DeIOz*4Jt6Gnj?k=9r2QN zHL(v2x~SibbMj`*2}S*O#EX}U)i4rE;K6e8wz{? DNLwe1 literal 0 HcmV?d00001 diff --git a/utilities/docs/aes-gcm-nodejs-sonarqube/aes-gcm-nodejs - Overview - SonarQube.pdf b/utilities/docs/aes-gcm-nodejs-sonarqube/aes-gcm-nodejs - Overview - SonarQube.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5c7835b71cf4c6d5324e67231bf9d1dc27f4f18e GIT binary patch literal 143165 zcmeFa1zc6z);7KgX(dEDHVu-S?oOpcq(RuyY`RlI>5>)@6cJDm5DDp!ZUO0(l8cqMo(li{qJnf(7}5f(;++L&Aj&GAimVGl+mWlUUCJC{NOkc9fOMuzXSmkeg{?xoUt{@NQL}OJG13TI~LI3%+Am70a zT!w{*lkW!^zq_^nQYugqQ0m2}=0$n`PN`h~mIxgG-o?1TUF^r8L3qC9Qg^e3f?01X z-LZfgI|2YX-EsVUL>d4Zja3!u0CTc8hB|-&6$EPESPkk3*7;oVtm;r#M=-0LwUH@Q z{Oh;G*KavJG*&5BM;SH83v~camEiziV5W-3D#HuDsI!X{fcIy}Kc_jskUw%jxWK>* z$OBX}t2E5U@!|^7T;R{gfFs=C3n_uKql3b+tz*d|46fgA?$yoIl&Ol zi?lGX0re^la|P>MWMqeM^8g=w5a6a|>|su}7sY*n@l$mC*k9zHH%VX%WEV7u06u8&r|h9j6- zqsKkGq=Ye}$c=Lr1Go*dl|T66|Fm+E8_I`bo5 zqfA;kakw~~5Ap1?HEsLw`1=eNc)Y@NyHWbKKqakVwS9=kV^-w+w7Ya~19pD0_g3V1 zROCFJ=l;x_FO!}>niQ{$Q{WrV0yvM8W#+6Q`y6CaDONsYI!f=r=#UoHg~E zn8YR1R0-T1kj-vee2_^ZFeGAf!U6*Z=)Zn11?g=@&^On2dr^31@ zm+qjO$%2iMFrmoNjRaDU5r|nabsp`6v(Y(HFepbm+KA0k-Mw|oA&$2GNusnW1`Tp8 z&W$^Wh=``32P9FLszM>i@pIstSE>v{w5p9`X-)lTWoD$4@svFR|VjH0+0q%6n^6G3``THd9!_{G2`?Q(#2EA}Bd+VyZ zRh)@DNBXA0w;s>6-=gYS4tG>;cvQ;HJH3l~IY-P~^~23NieOsnA^1$KOle1NCxzvh zb%R?n^uqE}H;rE!cD3IpFuY@=)Ozg<+tJT2FI2LSmB4sjjlGBA-X3m-PU0J)q&-Eh6o9{0L{tFRs` zf`Yn^*ugv;didLVQu`Xp}GDF zh*R)mgK121-y_LY8Dlu={aQTGBJnFmL45T?8^HggvO##GiuetbEVbJ_!HRyS4%aJu79H6yKR-GL-O#x-T2@Dtc(rb8OnP6f zOw5P?esxhuz~SmMDh*$S>&e%(5yqkCrn`CB1`{8yT3S6WzdR_a6Ss$Wdxeg+Off-B zsBWk49ts0<)r%fGb#~Dt%vV;QOzs_EC3QZ)%vHKmpl^}fnSX~DT@1|y0gvht6(cKQHEKGDxx=l=lx!|T^Nl=COVx|GXnmKDRGly z#uYtl8zR&4spoUmr!#$p=pv5i%)WZKg3qpqfT{NI86+m}9t+MqaUki`fcbn%Z7c6g ztJa(8uL=?As3S)JK@1$r9a^y&MPBTP_6nR>Mu2Hl#|LNS+)+(( z^yve93KB|_CR=fdGPsX^8jR_5?EcR&qNx3q_wJ@=<1cJe_QaYauk*7Eurp1GT+!X z$vgaJr`O~Tg9GfQ&)aM0J0?v`+-#&#^HBn2>vzNuNaPMUeT`zY*(*CPo2lyFb@H8- z5-7W>RZSY_?wa1?SvRSUEO=_p5IT~_hDd^~^CUJ29QO96s!>3>^YbQlHbWErx4!K7 zOlDC5!_|QqJPi1HjAU7xY{V|qFb8Qr-Rfg>a zIQE6G3^4~w*PMK01oLxct$NDN?C5l|5I9l=9>wgba$f>1cxkvQfZ#tQWY zn$ZXuC@m~;BfEMm9uL}jcb-Ru)m}G|_GI8K-=GhK$|J*<2q)7ga*^H-vmYMum$dO~ z*m)T&%PZ1EWJf?SJ2SQKx-Y7jVx(o4-i#&OSMM&YhKqljj#!rp_v+~4~!yt6|!V0teAN^%e@9lR&I^=)a&%$FkZ1yT+M&y zpyvP5>r>~A6Evm$U0kd5tMBm1i~?_L>Yi_ScVOrVrH{Nz&-W}&FF1LIe|3OU;1ZJW z#*)5YL!A~<6;f?h43i=;PCnHO!G3PJjbigk}kZIRJ_*q5i?b>hD z-HpFaA}ap~%qHfmd-L*3_~x=~bu5#S=#f&Sm$Y!=Y&tI!@ASHNwQ*3ft%~z@6pI&TjhaKf{7B1N0 zZL(D;>8jGAGj6>+_Zvy8=SIeE?=ejfc}$*#BBunxEMeMFOmwq;cGfhGpcoQ8{cPVh z!x#(~)WT0`k6lNDwixzTo768?*nS$@dEcYXSD~iHm$Swrb+^A?IcJANvz}A?nX~$V zj{ED`kt;%D>iLxIeVrk`HzQ$<`uqlvcSTp~#iiz>+hZJUwi|Gr@}BTI4AV6=^gp!z zRQ)0iC)}JY4uj!l?ni6Fahl{i2?+!WjffJ4!ccSVB3Ds) z61XEBJbY`ENQAkJnF^jfNIX32qrYP~^=Xts@+g3cY-5)>$6)<{#^c_I4VJ6&j{7FJ zLk7B{QaSWCgR@Z}%wNfRDy7g+{~1yVyW z+-_JyR43Zw6ZC0!-3d}+DkQLd-jpnQuqLmMy`47&1`zjeGR_e;Zv5kwdk1{P z!qbU?Xr?+8X-2C3LwwDPY)vqoj0($UA>rW7ay<2>N>T1dJ{zlgGAsM?@ zBT05NDb^h}Opj&O-rT`LM~U>3@i!t6!@E!XWR8iL0|NydT1guKk68n`8AZU1;McRJ zzjte@Uo_mr6h%L%IZNNZEbRI+rFn!!o>1HKutroQe5=FS(w$j8?e{x>jO3uDrXIO5ZZJ4^y$ekuDYY#_NiD0W*PgDzQC@ zGi}?vvPyUUD*cnbDDsm}}*4|}9#t$7WqK^lsz?vbiTy;$weeY?GUl&F5D zj_X6X9-TI>DeDdc;qAnUMkuzF++gMiPF-L9PL0agYj0{BqLUBGv*)hYkgCug>94;o zA4B5Eb)Vo@J-(Z8y?t;u#Y5q)-gw#P?!bvIa5?;4w1{UM*-XCQL~z zCe&WMV|!TZx-$&?cJNi!Ck-wP3&4kYkf)jcdW zTIP!b_pxjZPkJJ*CD0JzK3@P1TyD~ydW3ENR0vVtmMRs`*tEh|pg7R?I5daSaT*(* z?DC-yVx^PCb%udcLimaM{1UZ9%xX8UpD+hjOuH}ZOT}kBy#|*cKKY=^vF1(~lm-`_ zIW)7}nvlFHv0a`4FAdLnb`N^|&_tdpN78J#UtuhMiHjfpMOJCbYPXc{%Tr|(f{>M= z`@SzdND(47@z<#Xk-OhNjg-3A3Nn^?{KQi60YjXT)Df0zisk4{iOBS6cH8XTH#AQZ z-!LflNiUgw_yD@KrIVzvDkl6cl(I^!wcjWR_QB9RKIT;SjTFOE)!|f>SGTtax9tA{r>md%UkqRVvK^+3K8vk94}R!U%X*e zd146{#)=#t{hls&IR2D6MUILG4QD~QP;n~`t@N-rRVgW&0yXu3mz%#U{4FzLJM+_W zY!n1893(^KH`&DZMGXnoETS*FJV9T_fl|`(l$m;mhh?9lWxX>=5=&|g#t~h6OkZaJ zgWk6x^$2N>C}CAyg}upZIf^W6?pPi<$)9!JW6WM>cbn@=t+u}>vYrvbq)+2qCZhN0 zLyaQ1d?&ys(Ty_9Rrq+O=5aNQ{H||u#Zl+jQG`~(xp%Uk&D^m$(xei{fp>DX@i=t$2Fshlc6zRd|r{hwHy-8uenp2~xbJl&c>?9o5bxCuL(CWqoLk z--ot!C&FG{BDk&_nnuV+`-*%idx+AQS5AUr!;P6esGsQ}fi|9mie+>_F9|;>Kix)D zAiU31Vxahx5d%AtTqladzDwxVRnObNbw4P$GsK80*Ef4H#297_YX@UR$wN&tD1)-q zAFiI>{?xM@<`iAkS{{`7mPb=(M|8feLwK<~uZDLx;OnHNoIU8j=%R$>Y_r~RJh0xCRt*mh}N^!KX+p1|646Jx8Ter)m zq(>&E$(z+xW`riwvh{6VdT{x@9FmyzJhw0_5JX28IyY0RZ_|BxR7f*KIa+(1_Nm~J zX2pza5VA?-AlU@{7$NxxHZoQbPUGyny|%e&Yh$BS(a5-S_l}2Ls7(2?>ZrQ5oAZ4V zw{so<`wsw|r7vG)2U9 z)({sFtnyD|J)RsyBNP*#Omby_!$Ec4Lp(o2#iT9bd(9y&trwNv@#5hN;=2!r_&rD4 zBK2{Y1@F{Oy!S18oHVD7#pV8NUo;^o-iBSJsX_8FlJ=GM#_PLsqqYUI8&hI@6g#g5 zp5nWw#45y(t|A+a8d^txirn?LlWl-2wnXpXBm0P?j*iW6Ej7?)?~a3f{~Czf4BK*38+WS4}N=RV4`PtMAEEXwX|Q zar|odX)Fm|&&B77S@V%Xy?O~VTax&mTyNs5(r7&yu;S)_e%t=CiEROsNhAdJVxp(` zDP@TX)g3!jr6Yqw05Y{lLV9P7Bc5r&b$Np8M`vHLQ6)~E0&SIZDTbUeul zX(?39^85In37M*~!(5IoFN-w#QZ_u|!%Dup^mFmTSkjlQB_ufHF#CkI*a-R)dbKg! zk)189q>P?G3R~(gg~>ikyM`@Gn4ek8MUaDseKnRI9g||qlWLM0ErhSJkxKyi?!)2$ zLFvu|#!aYDgJ3>fo+Q__{T%l;win{ko^&HhszMlx?WG|?nDiBEB^AZ%RVT8w zCZ4D3Qg;@4&r8e6O}8h4HTW15w9Q%(Jwy($8*0L;;WzcSurVsq$_Z4a>W|-Nb}IPW zotj~h%*~%&u7gY9aoy6K=0x%qN$@Xoj0#~QkmZM(-eb-7q<_YH}bo34y-!?KA`c5V+-=pQNCt-_iOccfKUfnpIL3wts z=~AiUa@7fYUjhS%QaZD#r-gF%_Pp3S0lPA$0l>f@I%d7qpIsG|}q`jxSXP-(U(E zR;T*WjmFy>7e3m%*S_5`@9Up3Coi<%al3@7_l-sdQ}zR=dIvFjO~=-jc*1l`ovW;f zT$y!gI%FtWt!*0QHsm*$wcgn_U%tA|t7k{taby(dWS(Ei&(Mib;!4Q~eR4#B!b?)I2ZGTqv;j^Cp>59zkI6P(~8`8b^ zGGuwQ=rl!lg!)fVd}*h1LUtbY9FFlKDZSVBI|{v07gn24t{0&dvVvb)c8%aUefn*1 zdEe8lHVlnkOT65BLoXbU4ND`ilBp9o9mGjTOqG_-7^lUvwFbt6xb%+#Q1!+hJ^1Rtk4=cQm)k9EZG07P-fZ{PJ=L(PMh zbJCQ9ZjVLWp|I+%=7rlnXmoBe46+>Q)h$5FN^K=t9y)s+3)J|Qu=GaAp+!GqO- zPf@IddJE5RY1E|Q#W@C*z@#D1jZYbFoGB!Zp6Kj^85)E{>|AwxuyfTl#!-@uAzuBt zNE6wd(k8?B^BO|z#+MrpxYsUswme;XA7+%_)or#Q+(Ae%K%YdR9$rakGrlP(QJhT6 z@gUEPXSPZp$<*q0abp;z<$MzMLTc|_M{SOeVaAqwsgU*50aH)in@wSBmWN5bUd(13 z!Ua-&+RU$4hfvo1^CId_aXTPon7iJ1WA}^gG1jiSqO8%Sci%fsd_v-XyzwHU&I^8M zSR|C`jJo?lt%R+}VZY#$xp7FD(i8>oma`Rc^T1f6gJIU4&MEbWp$H@HqY46V^iZ*Zc$;Z{ZJCiE;SqbOUu1T5$hwCnpOz+hUJt$xAv zJv*@wNb@ZL>a$M<<-~2OZp|SXyK1<4K{Zj3l!fxCt2z5J=X$SNoWiNon2B~Rv=bM56GZ(L#I zNzy`!Nt#EXFWtCB(A9^~XefB~HY#S5OsvYCj*T@crJS-*{aI89b3)L4Uc`Gt+X+0o zoqBPkTt%#T854fj$qOPf;wKEetAh&PIU7*vyOyzj@^sVTeakA(@@WFU3!i2!RQS1} z>T0!F`J#uWiOU=tL$5)uOJ4HJ_=y=c|0;)Em;V3l9Q|- zbMG!D7b(Y=#&`of!j-H=BId6Ud?vf4roCyo_Bl2y(r?b3%A2ic&v>mD`G^c*?5i=` z*C_MttDQQEXh8STt6W4hVq7{e5#@zmUQ<%<@qCpM#Bu6f!-=wwj=rV4!igz^Fu>Vx z+VMDRK_#Nl;C9<_j#gE=_SA7;d3E~8o@tSif*rm_og1bL*94zn+TyK|gZM66-Q~D5 z``$~uSZlQpnXagttozT2jwj)SzT-ztifWLf4e~=f8cL*ah^2F*O-_9AK{ZXCfH2F5 zX6#n_jimz@ug%RaQbyF`3Ce&Dh_-wXY#*($mCr4_nk-IMIo)JBoB-p>*vE-`%B~!> zdM5(%)|bd5Oxv~U3ZC+}&t!VrXq$OIZC~bh(#gZmb$B7OtBolgZbyDp8!Ub;PlfmW zgVYZb!EDcq%?6hVo{phbItI=JjcLefhuocw(;v|9H`~t{?rpD%H5RoLwA?wK!Y|^? z$GhvoLKyI2=@m+8uXW5}umlpLpk33EEJsVO@^-U@&qD8jPA7?_Niq)}nX?@sZ@*{Z zt2{#Em^=6*Qanv~A&sGH^Mm!$rt4i6e6Wqz4s=h-2sRj;6|vp?b{&XP`?f=lvMcSo zH1Ty^+lsQsyeQD3xObDS=PmcY7lcIAb=Ph$sq!)+W5?l%6cOnW(QBI#(alf*;coFL^zoHaSOw2hMW zSDQx3Aln_6Q6EYpxP*gJ!|X@4t#pKAX2Vc=_oX^$|Zhp?QY}`jH!UivolJJSu^*phCjCWLx?5OoNXhqJ3Kz*(1z!zCQ;~F-byFCR@mq#8}oZY)$IAmKVwvdoq?8h{e_R+vKhtFa$A=!a@ zf`#k6gL;fL&&$1?ceZ%+`VvKsw+)iu7>4lP$!1F_&H$cp|0SKS!HwKTat~BKPU>vT zhh-L2R{iMw9D>YYdBf#Ib|zCDcI~3r>z5|5ZTFSVZI37I=WjDGl#&JrI=>*AI7xwN z+0^d{^5br`979IDW(G}tX0_d`&r3m1a-%9_kz$ zF)Z|`NLlSi2@joM>_sLKWi2Nv4|X81q7?+XN2SF?)iQ5XMg_EbRQ8D5`xV8ma@!vi zP{*{;(8k>_be&LVmTM4P!zr6$4yYV|OY}-nd3HXI78qoE!1wa4wOhy8Kf`kCv}dvR z3+H4FPL8bYL|(lTH>fiIOt_3ulbf&I)s^vz48uYb!=pXioM5-fjcXa#nM)N)*-u+y zYpZDU?1RS;o43hMKgk&Ma8|C+gpm;kpD5c zI}4UTvfeCg%e{Gw;WfUG$l!CaYr6&PB?DNA#VwMgu6mV$QJFYi@l06lvt5<+47S0# zdvy|KNufb19_(`QoT-t6y>F;k}!fAI>oW891B1C3S&LB{&@$n`T^27`oQMO6Y zrNq(J{G)h-9(#EK@#6)Hs3*7bYPC=EAj0QBP**5OaO(a?ECBkjWh8H~J^hv(@a(rdk!90zzrE}=IUWS5? z(WSI!3JEk7-Ph7$n`R&R)~(denMG=HuHVRPR}mnXUkDxXu3Q|_*dC$^!{=SvKA^&z zRnokDa#-wI^J(?5;gosEo~_t^D_cI6z1B>OvL=@v<(xfk!odM2q`LEQ+FN~xGp@uV z&`pQ-rb{;M+w_X0J%+;6?M^LQAKB_L(@7^w5cB(AC8`6Cin+pG^a;mot3GgbTXAf< z!Exg#8`zN_He0C4ZelIDd)!?)z-C?N}aD;jg>`{{O?CAucX*?K4qLdOG4uRi$3SI!Y%XJ=zps#11pv|3tNZs&M`0 z!1d=Vvr5;AcQM}d@EZ0ZyM>J=n7)!?P1O`$et2ax*g@J1#n8g^<{}vkkJwtY=KPZY z5ngSCxbrcjn@3A@n$m~Qc{7Tc_MzAhzAOl$O7j6W>#L{qH)@*msO41TNSVV)H3}lfLPky+K06%M6x%$HY{3vOR{fOP|?vasM(+eGwfDe ztAI16BP!?D0vQ{?LaZ2eDNt2nqY?rX#V49TD{q^CCrM2zxdW|kc`l)1L-crzE1N9O z3=)$v3$Z>x%_MeWO5~zwVnS{79ETJ+ChR)VdCI1vR90q2Nr}-(LRZ!H_EG2IqzYRo zZq7u&5f$sEUgL1-G`;KkG;A6-jUJJ{^75=sms*=3ajUBz`lx+o3OkHCvy+bPh6sqn zEf%e%OiFAHvtFhKIMUdt#tc^EGtdY^!i;wV7I=I~RXkX|&wY{wiO~D4@{_whxl(%3GsM5CUKWpCuSJ5_FTmy)h;KSAYN5oL|*==6!w-Mmz8 zMqGZqzcmhN3sWHLU0C}5;d|Q$CTUpqNL_BGkwPSo98~Xg!Q2pT@>vz}RUfQs)sK;3 zcbQM7fMth#AJnnZ1mG|QM``p2TU4h~(6uxpPO`E;rGbn`9exZl@XtLipVhIyQAzS&TAW{hW% zVO)PHs)BU2ilp;-_QqI!hovuk!DdSb{7Y$fiY3NJThEw0qF%nj(w@^D-Ed~DXUm^~ zo9(>)sB)prl62H9FA3dF#iBsbHqiYZ`2oUNfUX_nL5j9eZ>7be`AAc*$9>GAOz1kTZZI)#iz zUT6L=f`~kVZfAIzYl4K;a|Z9epHW7nL;=mrsJR%w0E#PK2UBt@;h0pJf=WWOm(0}d zZ9ikIxcl1--gdZM9gON+rgk=@8-ep;ib;^C&)wp#8mNtRy%(GaKrXz#=7KSXTENU; zH?J~>lctb1w>(SP!{9cCP0?>jlhNh4WDR}iQEoC=!v2JeAEfxIRQvT)XV$7C+J)yq zqeNo4{(}xr8C+C(IGrB$Ae%qcfBvLEDCCy^vhBim-C7`+nY6!MX?VnHV_xY9rLFl0A9p=Ek$@1pEmjGRi~om0{GHU!LQmR-onMcZ5&CXVIgwQ zB@)*mWYs~Svcfld!MvBv3Zoc4JLxh-#S33QAdZQt%4MV;E*!iWehalpkazhEdr$C6 z{Rpp468G6Y&#v{BkYU#HLlDWnTHau+ZUEjffwTymR1)yCusKG&^kGIq=)LR@>64SV z-t(nsk;RIEb^{feou9HZr%AdqUC<*TOzN-DPFofcR`-O8=q&-XibFCR8#(S#v2+YyY8EyEz|h6g^Q=6elewa}Z9rb3K; zvyd94gpl)k1z%mEULUCS4q@3la`C3;t~ZFsvxv&QlErZ9Cuo*Wec*OKawA_XY5KYf zS92^J)2mFD~M?n%GEOd-37-(2mE?>dH#=1&C zPeg!+M*yLsA*JW%5EA6$;N=mO)m0Rg)Rf}kRkl{qG`M4GW-6>;=Voi-stYwWKCcC# zqrjn}Y{J1|gU%a4#K4si;D8PE=Z0_z2@W0+8TgS33n=)~*9>2Bz`^5Oy{4ji3Brzm zh)p4OJ_16yI9CL8a&iue7-boziP8G~`hOb%9TuNvc${+(KTE>!Nlh!4&*qNW=C0B? zh^%D5c1WW^PxG>qF4ynmZyf$NDM2&c?D7oe(iva&IVdvn$cG^dqamVy@Aw?lda{;F zB(mWX!ua4E)HJkpP?mU-^}ab)jZ8t_jSDjOJNX-j|5Zw$&v@|s!Ab5pXnb>1Ug?a( zXYGtzK6fSZkQGzi>!mlp$g1*)r_6Tn1M`~hlRF>IL5&AgK`7Jrcnu>6ekXo|@E_2G z8IhF}sxvS8YPCa2H73nAwR6z*ILzH+>0OzT$yp!eQBRQpW~IY(5Zj|aiSN%OWKO*w zk~1F0lYjJ4?LG$?yoLdmaK^KHxu)S%^}SE}HtP7#T>j5`D)cWoO zcj7k){{c-{7Fjuca_05iTkWW^9~jDLoP#Vr4`o(GU^OQ`eIpr956(e*P1xi|6=wzv z*yK+~Z|_(e_m)IT4+;_gPX5N>f0GjQH~BDLCC}14u9>{ncn(_OI$K|LY|Ae{2Ni9I z8!YG*9s494&8MGLhj@!W2Yw%Xm!ERI!YX&EDDPR@@8oYB{x>PX+)22e*s0Gbm(T7d zFln`7kD7pRRwbosK(qDx_5U~mdMrLeKVq|g_c;0a@IP^uxQOlfH4d&Z5SW#X3kb0K z&!WMyU&QnLn(;?o75`@fn_k2M{Tf8|B7Ep=z`x_Oi^pH0jY8Ns06z{O;wT3nJD8J~ z>)#JJDglHb{ocppTL99pu|~PszqxGKpkMQLDTYqX1FKnPTs z&tGg{ds86fDF@ip0l0bKb|qnGDro-*Kl^uaalfGYXKYs>HmZV=gXOn~sTX^n1E$J5 zS)1Fy9Lya7j}#g3=Zg7)#a9Oy_KUczf2pc}xF`_p*9Hmz`^OpIMcw^T<^I)WhJyoj(!=!T+`|Q4qXZz`;g3SKY=g*=Z$x5g}S3?8Qh)cdA~p2RkyEzjyve zVX%a~MCOgVxw?_1KS`vvzOAypm^a$coQ_G4c;LQK+~4qIVR_}ybKFNH!Y3kKDUfCN zWM_YNTkX9Cl?u^=_tKeM*w4cyfA9Q{!a!B<%))K^Fh{dyA)BXvTG61O{fbidGm?q3 zT(3$&H&MEVNxX{RUhX?NOP^KS2A&7JyWc$XY3HDC z(jZW1<4GV1{j>}kuS$IcuI=xg|4|rFb=SvvoS1j+9+U~6gJ@xkfMd{$n%NDI!H^c*-#ic`6vojy^Sh`LNBn2ZZe7&s89wmj88q5cI0BT}`cyU>lE-1Sahq1yGieGbYy zY6qP9^T{*QO?{ODt0QVcWww1Tiv0lCLqXm6w!!lLH24=3O+lu9TrNC0%dzv>4v(5o z4KA$E_RogxvlU*H+6-8s_m%bJbC6~Y>Mtl64rMEQymjv!M3|lpSiixb$nsgy8Su30 z{$lp<)YWO&lY*JvlgW#6xkXqv^EO;OhmNWaWPd@?C^B)vYf7aD9j79LGRtR$fJnOu z`{y8C5h>wrP&&F7sSjS{{O4jXOv}Lk?R?F^dcEi`C|X=FXW!nd=AG%%S&@k5ZX{q@ zH8n@S?HOo9e%tde(68V2{M(+t>z{pq{`t&cR&8qibN~Dc6bvMIr~&knfAWI<|H2D2 zo3a320Bc_W`e>NQtmgE`(e16p-L2i(VFBXb+g}h6JlxY*|Jb^>)p0891N21OK%bxl z^hDn{uxB!PdiTM=$;9NW!M2A_xXAstr3-5{L*whs<-fPTB2XcCoVyQnu2sX6PbN=I z&eCDKu}7Z3Ai29Hf&2???bcLkZ?BnNJ>xtFiPRjt2j)kVHlJ)By%qMc)LYpr%^!3w zE=hf{YHBHjm93jdZCYm#HDwtRYw51G@EyX5+#SpPU6qe<%K35C$U(guQ`R$Z6HU z;hyXE$AvZ!Vs`VxgU@t6+re?o=J)nr5D4!Dh$vNek>H_Qi!VqnmZ3G4Rz8W{p$Z} z$_}`TUN}Ae#fg-M5BO*G>|l0I4h}FE`!Dq&h5W^b6!4w|$_9K$0oO?|P%2Q^zi=T1 zZuUnmq}=}%(|_>x1iWUycy<2Bh4i9Y{^~-?^X;M%Vqm~0*x2aeQ(oe8G_xC@)0$ui z3nzq=9rD>3R6+jhE*l>oH&CBqU`Kl==nwSZzjz&U{77Lq{=q+1%*F=h_?^1Qo7(_h zvC?3`9aS7=ZvwRk>wNaa1ss4?p~jA29S9#c3m2H1gO7y|!pFx8_{)CY=f1diU?0dQ z_RYsu%-GQ!X7kz0Rzp<|jTQI+)0;Uu+VZoqTEUEstju5zj{JOVY;3Hy_Am>e09JDc z2Pde5h&|K+X5|bu5xQ$+lbU=1~LZ~_1k`R7v7T0FZDm6`K~?wV)%a>nlDPi#RvInHD8s4jpHYw`P)k305x{9zc7)1Q$sku zgW(@~o4*aiR}JCd{7d7(_0zWUr&MMzM+aNr{UcNPr>(~ijDzz#(f^@S_}ij?)c~N~ z{M=4{Z6>(5ezx8G2@L=uaY9}GT}1#E4g6^j-}PqyO?&vF2%Nm^e`zYX{x8^roskvP zz}&_J>iREROCZ+hpAh^*P}IMz5F8xrEPTMm39NYe0|pLGfGPbn2>(u3DxoAPWuT@Y zB`^Og8cUwYw(a{r~VJCFh0wU)qU3HGz}s zi*^8Q$A4ZMOq^`3%#Dp4p(X}jfH8sET&$k^m$-b#Hi35TXD#GAT-X4{`Po7^*#X=5 zf)xbd-~U-Hu`vdQH2)HW?|3EWFW{9Bwm&)%cCN3@1Q+|C$2h+N^Pg)fzEh4n034PM z{}Pbz7$)b>GfWQNKQw@y?T=oS6Y}jCFl_xPt@xvFH3CMq&VbVYh-jMH8`+u(eHqOD zbAAc=j$d;A0)7b$EiN{0Fb~j8d>NZVfU)_7IRI;Td3e5#PygGhU}EH8b_Zr;Z}J0? ze<0;|ypi+gc_SAm+gAhsCM6d)@2?c^2XcHz{y2XD`2+OuVgqW61F+W5GbubkKYy_S zmBsb-*nhgRzT*v`U z1eg=Ls7hcd`!~_q0b&pA|8(8{yMx^yNctT|Pvs?9$P_Fwd#Kd8&^sMF^O|DPLSaek|}KV{|O21pdJasC3${jvOLcl?Cw=lKacz;V7+4+qdaf9bV;iI)9;w0#9wlv~g+ z-D!ZNiy&PKOCuf9jkJJLQc5Tx(hU{}(jh8fU{C^*l7e6Wic%t}lz_DS?*_Wd?p^Nv z{_nfbeV*kVcjwH^nVBnQD;@Evd6{58f&|F6X>4j8&nX}gIkB>`u4c3*k`QpEski}8LH!SL1Xbd67 z{q_6PxhC#U=Qnq7bG*Z}MdmX!XBwUekeb|*@bHQW1%ulHqdu+-k1p(-&idS%vh^uw ze%9~z;bvu+1!fnOa+RDe}?tVD{SXpyj02rTdHP z-=ir>T=VIpmj-P0MNL~o12 zM{}a|JLQwy+K0|CAGW=rcgaxqr}Z+y zUEP~xc&n2IE^m&^>%J2!>$kM^l`SVZT6)q+_iouKV(`{W`l`DHX96kMlv|W$RlM#i zO0uN#PQ3#6-S4l)HQ8#|Q9K-IW^5P8@3nO}Zjwa)av<)9!n`<- zbqby^n(;O#-?DXMo)a>a&5VX~G-togYEk3-8t@`GjZ+{_A;miWO4()bXg6r&(-Thn z5_S2-;}e72Ts``CQwi>^lf2`&cw$6M`8%mi-a&E;vN*e&idw%u$>WS#gp8-L4~-nT zqqdOLV_f|@TJJvJiCaA++5)Lx$@1jxtE3mlAIh!zB=|P8;m*)i@Lj4f+JVcictrY* z^TNI(c@Ov?bH8{qb4)|a)W~ns$EY~-wXYWP7+)__d@bAi{Qc0qSF~1>XDi)8^vN2M zNWZ&>Wl)#htzD(4`lXF`S~SMV1xw$LkFI3Z@kFFweW9aD>d z_}3-TDGUd&6Ve~_sBeBMb3|MqoDnDAQZFiW+?o0rE}fP@!N38=^7#|WnLl-2>Gp)P zB@jPuC|WOVOIu!Rl&-r> zZrH1tJJw%de6Mmek-*3jG|A(wxe}pT@mMpABjkSA1RZlE;bZ10)(m;x7G7|u(TGu- zm}0AdqWP1_`xm82WQeTmiNe(Q$IE?B60`a8KX-RNS%QB@#;4sq-Bxge6g(>#bT10W zpVRNFUK#H1-elck;mTTRPO_kKpiEjgL>5iTul5a|S8rE0-z#Mjm!&o%07 z>X5~o_vjvGJsq_2y>5NEf0(t1rEa}TV)#l}hSKbHkE>+0+D)s!h8?81S6+Q}J>-4q z@=kZ_sh(TI)A3Qw1g_)+t@Pkv84DHaPrMhd+=%{6F)!A<9pCdrDQR7|UesQ-Vxq(| zc(W`Bzf8rzdu5EOZpqtY`xl|4d~J*r!O5=PW7`)m8-Q+HVA>XdG)Y8pE|Z0^*Hxvj z?fmkT+m;%v;vow4X!|YEJVMx$;86EvI8}D_ye`w=r*{9sw(0a*m-!&~^X*+9XTbU! z>ur@!!G@t3IZxb3@m;`?A!4Z(%?FJSr{vrzNt$91n`TgY>TE}a=ga48x$HPkYefF! z%oHOpjoq9^po&l%Yboey$8sZWX1dDMh?>kKsbcFVMUx6=`~y)uK4seCPn#}j;0|?& z2Pu8jc}mRfo-?~BdK9c1M$M@}5G~C-?ze)6E6bFhU7L7#+C}_fp}X!4$|F4DZ^+ci0gMwXqtCaKW&&m5M zj>SsV%nzDAL`VQ(fIR&{sN`VSIa;`kFEJu8CqtD*O)|@yHt<-G&M?L z^vC_s;aT@^>$K@_A-6eB>wJ$eh#h0BTZe3VqQSGEf!^)mjMKO`IkzLQm4y`leEcn;9M(&*UDo)8-04 za`V`A{bG(>%F9e745FX1f8v!33rF%((Ih2OP=KGLf4zIvnYw|KlPp&HVRe03R4zq6 z^JJw}w|?e`yW6==hJfaX6QG_~6vUiaEMXGo`96b%=Yr~QF2zMCutq#`QKBslZ;#2R zx$uVdFd5rVg+m7?Kb|NSYup}4V|~X#>&(`6HvRKzEXANpcqF+?Ig4-((S@)v=H8=f zX^>3(RLNL@xI~@_$&YxeTSp2N^0~B5i=-Ve*Ilg-JxWPe_?-6V;a^_P*Ki;$_L7P| zDlU;MKeA)`? z9+=P;!cr*A7AnEMb_ze~bSUW!{a06F9el*5Yk0cMjciT{y`e3Zi#gam}{XY4{eZ zPf4$7_Urm(#}lB9s5;_1x8kS2ouMTaO;!x&?X5P98iG9YBxp2sNLN3j^o)wkqQO}D z?!pu92SQdxFBN&J8!S7tWutz5SEc|xxG?>yHkRVKoY|QhJcmf=xx%t(N*W!U^- z*Vp%PAyW8sp!}wU%1l)${@n9vw5J5L21?0gXGz=&MT+&qa(@;WJUc5?8%1M%ui&8B zd)0FCJ|l7~Ztau{Mvs`Txfi(m! zXOuqPuA!IlUTjNu(_x)6<4Y+Yq&_?k)B_Q?a^d&-VVB&5t%V2ExV@lgE?w%v+kE&h zf68YRexK)`pP5k$dpgx z&_9YHJf{D~Tw_T8nfMWAF~0He={chb#XxW@lkg4if~>H(iHYcUl{8%+^SaX_N~~x# z*G2qID@Q*#e<+yE%LlpJT1LHdKW@JCHFv=F*vOR&*3Md_XQGto?^M`i`ka@uEPnFs z1}oY2y`I*!^YnNUW-qsJKHsoSKK5zVhxObYhET2sqEc{5eRc`|x78uK!@r)=GeCZ2 zPN_vv-c^mJ+?;*;Y^0yb^7*6Zt}$ZE;(3$zH&rU8=TGWrYeYIN47v7SeCv3pKQV^h zMd;>mOYP#M{Xk1w{EMVi|JdD3z6fTqu*bz{GK_(RvlGcQsVCQIf0Ar)$1&EQ*N#EH2m^o9C}lrVej*JfvGl+zj|GxWZ60VWra1>u$GwM zwxSaqk@#J&Gn59p2Vb(j59@20{NsIp$Eqm6RmX~cz6e$c;Mzv)`;k3^|*%7Ju!E7dk zYCam5+vk2gt8aLI%=2jcZ)%B`9^o%LZch%Xt{-$i7Ro5{C2`zXq{=5+kBWGQ(x$*| z4&Uuy?q$fQFGX(CjTdtI@>ye~m;(vARAe+F*)>;ut z*_DQqs}H)=8XwFj4!APL@sxb}lw71v&-!g9#+9feL-HYA^^YHe!!bb@Y@d#|JZNuZ zdC62Q#9$V7At{ANMPf!Uv|3~IdM9Nszeh(S5y7J`^eIw$=MzdDwn$#Z2~9DNMjrRR zEqTY}3`N)WFYzD!IKj2ywB>xK*v|iY$Y>Hu{@%Fbl;gdT+&Ww3MZ&Na+fXOoS~G^2 z1a?tYik3iEP$@^+#n0E{j|)qG2^A)8?j2I&X(QkYAox(!`7_jtq=~wD`ys0||8{)> z^Lx?{bsn`%vLrwF-N}@4Y|9_ldpGz5e9raZ;dRZEcGWoYtmle}TK9E=kFEsP4!2+2 zW9|*(5neT57v!EYa%p(}EXDfiV?{E)nsZ0M>k$p$@8+{+%Hv|vKTb^t%=E9_eaoK9 z%l`Hep^*Zmo&ysf`#r9q42qBk4TiYa@<&}p<>~~%KJLQ&TlSt8A2-e4JFlON_c|kB zxWQffhU2?+XN|bW9E`^xtOKIUpng7Krho4*+;LA2JxSG2Lk=be&bTyAu9o; zKbMp~PJuW5HE4OZ*EQWThdkpHxbDYBPQi}@2T#0+Bn%rkV=LL&%F)%et+57P>8W^R zGHX{w)XGP0I@+qB9+I!Geiclbmt}rj2|rcL)GpL)0U7(JOvRPeXCqTK2+4ZD+6nX|n~W@-9g{H%QJjFqiS- zuY1gX#O`6fQ6{)jAw}O`03hsI? zSvA(sSlHK%)zY;cdv9?vKHIf@w%~NUH`wLTXmgiq8MXIN1#hAxem#A?N!4O}`I@Tb zR=&XR)92!Y{ko%V1rmMmn5pC;VX9Xe%I)Iqh#O*VKFWUaUQOSJr#OJDB=P{U*C!Jt zT5A(YvwO7X`m=+^6uBR=zwJHM{X=0)`LP`hozPhq0?4STwB1yj%Of)?gUrS{n+<}b zli?8lb%Tv0)-=84M$PdIi(6~C!6Ql{LU%t#ny2y>e7<~}vOcSpph=q3Gmu@q{}2xT zjc0dBAGhBeV;QxPr85j^@Yg%xITc><xFVFI0=%eHu7Iqa*GfN>pP{EN!-} z|AU{h#vk%Qj?~`!WSo~8gPmu^Oi_gXqp+0rU&HwM!CLRmsub9Gve#bKj$JGyF;+}q ze9SfwH*jMln)!spod0=_Qy1^dRgJY2=57gnH?VtJWn^=oTdaA^ftP|pDsh!*0`Cd| z0o#f0$G6C-%P)BnU$vmT*fAgLq7FlFv)c znefL${Dea_<$9Xhc~_rnI9v0|G}SzvdVaiw+4bQwhqSm>NX9L8NQ-A_gHwA^>&>s< z#JV4x=K{?s>xqnKBzm^aCSqKDD6o69#dlM6deF$$l`WjEmXOJ2h9S=dq5*UZ-J7JTv}AIW}&N zi7THHw{N{C*G5m}bL}ar#`F(w$rXrGN@ver`@uAsk@h&>I-Qb{I^XY9$D_%Xvw|G* zp59ZR57ADEFa@0NjxfI|_3B)INnRhxcECHT`nB5A?tR9aDJOkR6-9ey_$lyqu-j*MRuj||N$-7;FypDb%@<~_!?O|Vj zIlButNNFb)m#E%ec2QgIJ&^cgi07^Imvci}kjo`wDmT2+E!osEoUSWTcFYC&5Rq1O zMd~e8nuI+4(jhU#zvj0TV#+U$d+xwm-RcF$OUtw7H_N*=AH6sAOwGI;@cqXJ36Jvg zQqO8O??}~|zx?S)PV0W%qT0LW^T?P~-RIL=0kkm=YYXoO&N0+6oeetjU8ga~?B>!l zRjqyslg~XyA9aU%Ess+txY&>T>aX)Xc;Z{XLE9#9k=~g1jqsN@-tXs@^chxDXY4)>r89!-K&B z1)TvA*QzXDvo}7s^IZz>+=|rQI_}=(ILHxl*t2Yz`pF|D&AcVt=d@hJb;h4gEC_$` zGnD7X}|TgW;uUGTM0_&2|6{iJoM6_n z*-m*P?dZvSVlDl4lSBCL7VizrpWK`pd1H8FX|zU6CA9lS2w!K96dSk9Z2j-ZdW7 zDZTRhSOClFFRHl{BHK?i&gdNU-T^ImYIJ;lSVc9^FJv4cpH<~`{(gs6r`F{g9f27) z<``G z*hLHQZ|l;V$kpI)w{LLClm>ds;j^P|p7{+ha{&kU{^5hsM*lGi!kt7+mQLsj z&EsS<%lqE#Bh2@rEO#9Yxg$)3_3>-+MX(g9$HEUYnpVU3~V0r_ff>L3gN}spJMd#o0-J#ZA_p%D!jW79Unl znWdHFZS(tcCwW>i3^ZPswX%KOBCEpV?U_dKxJNdqkg2di@Jk$3{}DyMz~PO~fiSt# z5A3cgd$(pjDww8nLT0_l#%XRSAlo z#^=JdbvUj}Ax)dD!e+XprZ#)M;34UcuagH0p2>y;Q5|F}?D?Scn~p~Mg9&o^Kka6Q;jF`^Z9_Xne1<$OfcS&6ydEX7A( z#0*Du1QK|+Yka2SYkweak=2p$Ipx-`D_6d1$X=!j3TCe$$Kx9zp1)L>6LrJhyFse^ zf^kt#K#ykPs_Y@rc(0~RzOKknzZtJ1pK!m_=87%t;yYJO3Rtn7O$!Y5E}(iDCA^k8)T%nHy6DPy8B)t^YvQ_ z_IaG@FKseeRveWDxfU|nk4y(6URP;^vC5swb$Wa|n}mK+t6yV8H=B~ed_fq!K1G`-P(>Xa+Jz+b?+JcbDm^SL>hwV7$8%dX{Kv~oM~aOvyr=BUS3i}X z96U0tlZF$X3|LU9LI>SslF#u9_h{Y2KANW=_ zoiM3RDyGf}X;J)5sH{|dw{&)7s)mK7m!d|@vi?o@E9DLPEvNKCgOU;w(>dvV1W(Uuo20g&&f5Np?zw>Kj#n z_FV-Ifzr+eu2BU^67#cWR@I_eSf<=akHHa#ZTEkRrV-OTu- z?d`)URf(l9+d-VyVr)+ywlg?!v7#bd|Eu1*{YN((I>Sw{*R6BZG7IK)5{o~riw8#6 znqA~HsFba~f1=(b7*Y_B50NLA-E7{<3R~+gSu&xhi%Gm|>R(_*Q@p7wFoUO>S*o6C z=saO7=wBK4#Fp#JfHvQG(;HW_u2Sbydba;kig((Gf9S1ygD~rcpy3C?k5|*#xo!~t zHYR=OJWi%nlOIae2kxKstMV(6wgFZl5HCnNso|R=Jmm|Q19JQh&|{%XnB`_Mk^yy z(u|s?i^AN?q&DdlL37+a{P|=-l6KbDBzfvRo3eDo^Iop}bX_E5$0ZU|lZ6iy)v(<= z!hcOc#jc!gGMqwR@a97UYSBBZcR#F1OmjG0M(!y$^MgvuAU4_^fwMG@ z(~Yx-1+w`Xny(ECWi@weS0;K=2Jw<<(cM!x>V|*5r{H-;`m-;53;Sr z7QRk0*AY_hn&)Zn8&#(7*|JbjiO3HKzMA`TfO!2ioA1JaW#rbiu=Hag+QJ zJslm!oxVUMy>t1rLH<#E7AAsH-){U=S`AR#(b~Ue0w&%j63E? zBR|!bN9QM@;SfiH_x79DnYX4T0hg@L_pNb~SNk7kxFco?YHS$y(yU=kq&0TTduCx2 z{`4WEMSjKY1KinbXGnYq+2TXhV=`<>?at;UAAX`Jwi)s6A#d#P3xl&`A)ZAE^|2D1 zURQ+)wa+&2FZ@!ww3)Q3B}A06i}!5t}hN3Da~n;YsRakIq(w zMXuub-XqALK3L<>&rD>Kb9iOxzz1F(iJFD`nKg4>_lpD`rhT24@!d2R(0cCtLrq;d zcgl2*aa1taS(&iUpOHRmi(pGl7KH(pzSh0C1apx-i_2M!w-gYBHKLO@o(R-hj zjPiwv`_-;pE_ruu{G%(`8Mn@`3d*0yUbR@r>WVJto_uWCleRb=o(>w^oGvMKd!|BA zs^0rH*y&Zs=BuM;N9{cyzL9V#P9w;_IC_g{qIKzGs535M)3BS!D(jJ7=Xh~KAB&2b zm}Io&6pa!(4wciYO~=L_G)~lJOex+LBsAtDaiyoAJD%eIRC&TKH(5YBMB2ccB_nol zjjo2@v8`SI?Yjnx7JE7FRTrB2Po$59mq{|c`4`_TEo7VESV`%V-adW*_Z#y~;oF8| z2d1QJXn)+Kq@$A<8tgDs17nkSc#;{Ek@E$(XuG73Vt_JZpABi*DDC$uKg$ zpH2A|edwo(dY@j{!V~++X+`hN7!DybquP`TSx$j7o$(TJS)26gelPQ|$D_d<6xXH`yX-#_L!QhZio{_q=%Ieid2u1)E>dfMo5 zN`ptCbysN(s=Rbm{kK1w4Y3jS__>NqhWk$sxlUw?($g~@QV~e$9=$?#Ik1^gzc$o7 zp+y<|hFQ_3r){&*|NDH|)B1~_9!J`<9x-J6Q4x{FAPs(?HcK=q?6P~A&4F_!mAHFn=<4$#nl^tm7tBFXFH+;Y1&2QkT6p{AE#G;c> z=z&gGlMEww9!=*!rwZ}*LZXKEH|ow$*CH0aPMq89sL_QmuZle`rR#5_t_%43WBoNB zuYM}x*}gBwwXAxq{Xdec z(O*#VPZp!F&f>oOn~KGVN83v4(!4j2KH0q7rO~1NvEy!emWVy=^xZQJgz+>+Ed8E~ z;y%>`3AOBcZnxsk>$h>;swZreeeuG;KMZW4o(4Yk_0cDGgKU?+4T_krBuT9IU&T6l z`cJo2zYNz&Djl6CY>=1~+VQiwCaCc=ek$)M;e+DSrG`fm4O}dxq%O9Jf^0a>)KEKx ze3~s@>Lsj<0@_S~fAShcFtDCu;3LWoIif5rs``7&KJ4h}6Tch@+m8l%<<}X}vvS*Q z+vvAs*!y*`)fws$1=*ZVPAVeee^)P`oHX5^EqiP#)pr<@xZrR)C228WsFp?3%p}XK zH}J(|U~^*g%V=+>;t+XSN${{{oIjUW&|S^e!p)%99@?FrSFjTClCA&q_QmNIsPv+~DIRCg3Tod6i3C z{?!<-Nk4sAO)}pUjzgUnH;vda&=SREpD=yysOhc~OtUys-gy2;iFWj<1RY9nBl zeCTtupR8?d(Bcw-U~N-lrwCcr^NqR|rGB|C3yU?qz|*ViKWBKS=2_>j6EbxjhlI)WF@296mg38>D*3)D zR6b-pmE3pRm2vZ1Ux9@2kMt?4<))(>cePB}rs)_f&lI)b3V|7Cn3BykJf6)AjX$`y z;(SWD`;^=d56Ua^VW9T$KkAtosy>?ykU%(6wu>A40^#y5`t)Y0lmxw?Ka~LvV`@aF$BT7uK*t~ zra_{xK|rFg?l~Y)7~LRI7&RbK*q|U$7||fu{c1xH1X^hde84yd!LF17PjD=-tAxN4 z91HB`8Sn(h0=wE|2wb#>{Ty})26%#FfnA~ip5Rzuh55h}91E->9C(6bffXPdf?x%_ zzz2*LfJJ3MXh5eKZxF0#6qpd?{xjatc0Y(#G~zI>0m&g=8VP$wxzYetF5rEa%AUT^ z&NXC0S}tb+*}>?vM*1C;RK)M>z+nH=K6YMC4nC((LoaQ^Iy|`Bxp*Lc2NE(fw*Z6+ zD@2FhK7-yBh21_AMnWlpR>BKsLeUbQXsCd=q3wBKjd(=FC7?y?2noQjp-5oQuqrMW0c;>~gb4tn!YDOF zLn|qXj25kse-B#V<(+T{6uAV#UXWSRQ3g2Lv`W~#P zviv(ye>lP??+C7?*L z&Lo;FVVtA!B!$eAB-8<5!-^tHNtg+tni@t~0yo0Y#+5)eGZ-dpIEB+RG5hJ?|I zS(XTaW7A7v#X9<4S;9F-<4Fny>wdO|D$BnHhg~m$8)sLtQnu*nkHv%!%5H(A0sN8?EfML+hlHB?#tH8||D1n#?`jVlRj z(S~sUlKWcOt}GGe3za2IVwhwJUzf4kxTG-hOzyWzp!rJ}z36L?6!HuKSMUCVjZ6JC zIP9_nZr!2F5_#=`VZy2z2w6(~UBO|rVzhC1aD!cz$ZHP_Db~^V+BlqZG@hi8Z4I_m zVZ{nt&|qN|d_jXLJ8&xsYI?v$DEJ3FvXg`_v~c#($3>Q<#DDVB5`XjN7mS7>$zd`%gdf~Ag5D`Mfgoa%l+1mnvCt-GY&V(OBSH4s6CE20;!kfR>d1 zNt%c?V!!wlf+0Q?gP{1P{rvo{H2>-doK|#kqWE#37XWtc*v0$TjZ49pLYsUP2Mx3n zz>XGWSwfyF82xC-A;=mH7XD904s_)GqhVM*wHSuTR!j_e7Jy6I|AjBG@L%1=J~Dnva;!e-2;7#E>0294$5i5SjwqtNbHw_)HlBom^ppK$})c zP7~)PbapYwKjtU!NyFLpn{MXFj z^kSYn1Zi02P8@lGfuqGr0Bns1S`Z;k9cD|ELeWZ~WAuNpb1?X?YG9WshWJxV9K{jC zP+?^W5j26pf1@Taj9$z#MYw8gGDQwF;ApWDfG$%w|7dzDg)&*-|K?-B|JKJ~h(pCt zA_XuE6;_u1$n@{x3Wm{(QKs;u9oE%V9K}R|b_Lkg2_Dy@=qa3kbeW=9AQ-C5*f>MA zeRx`R|NXld(1HSOWO0-g1BMFQ$bW2qH*pLE3t$+%m}QDEA#8ez;#Fa2u@ZnmPhoBd zjWa0}1Ary8u^~p4smNb5#BTe*rF^uJB~ZK$3>CJK|H>3$)liwj6Y!X}pYU`tc0EN| z3t@SEtOTIT6wW^yXDAsvF!I|3;D;92Qg&c?8~=Zyr$8?bw2>uHEChxMD@(h!zk7HA zlPS#kV3aAsLtxQU2^6;nLyMIF3^Iicg2ow2<__*Gup)+TMUi4q#3~FztQ^26Y#87Z zo(uxRk99y`xFpbqmqgJO*bxl2;rE!y-v|J^nPA$0NuVr|uoI;JFf!8O4?j1;IIoE1 z2HU)%x{3Yvp9r50yar--9|(q@eW3{!CG!P_{Qw(#+I!~}e!PZ`7I||4(*tZ+QKk#% zX1Gf;#f?R=mSFFb>RSgHVBfw6}+HUz~6(EIvhHGlY#-2Uc|VP69gLmha(IPRnf zRG47+Ss-jgplu$M_q`m63!~^D?11oJixUh#R@|Q>4ErUB7>e4#Fku^bce{eZ62?gq z7e-l7VTYaAFr#P)vdFL+G=^;i&^Z_>p#p}TtNw?9|D`9v5NktF_nxqGU2Fqm(hiK< z2XSGP;0V3rGFE+upCRwB9S}^Rt|-cK2SbI8rCs%aA78^Y9)5U@rtx5u-~_#&I98tE zr{oCyFrTp(znCbBsiHR`#)=<)(*7@GhAEU4MTySQ`#@tI8HF><`+reXll^ZSbY#Ot z6d8cw-0qd2xG>6!jNaN7D<8W#!hMr?=rI-qH4lK^Ie5>&f8thnMFc`CV0MgYE#8&D zKd;3Q)I0!sGu%A{pt>$3DzLgP45|Y`-PoZwsQq6V7{gWpg1V(e@3V<@;N6|Teshf> zo`#5{C>eSK(>(+4Iv99K3w)~K1uc8k7lOK@L~jJU2lF2-+TDLcBXvZ{%%6Gud%(UM zMPSn+lm!sI=k6W?c3DHxA26KFy{w6YQM@vGZ_PcJQS}pE__M!n!w@P%P&XgwElT$c z{70rJJi)>RjF!3Y?gxUprA6<@xrYE$&XK72GozRa3^1H4Kv3#l!04Sb|5pZvzE@%I zWJ6H5C+NKgv5vfZM!cVCf-%L0C^Z#e^gfPzM&4Cmc-a`-Hvbfjp%g_yB#<``VDv_p zdocgeBY0sN0yQi(f>Dq5-EBcoN^ih0wErruLE3J?+1xu_;$W2M6TReZ4{N9zx?54V z?{r~`dr?mOz{njPF(yU+2o=dJ!0?hij6y}Qj>X|gpoFR7&{@DHR8-cHsK9ERU`&xW z%IO?f97^i{!N?c_WQZi{bnmxq{~z*D7A;+e|r!Q zM%wm+;Yaa%jR%5yv<3SCwt4)c!s35-ZE$)pW`W@ax7ae4z#Ey6_l_{M*a+Blc}U8O zU~?~P;$Rfx*taMGb-Lh1p!=`cU`!zv>fzJBu6zX}GX<}iz~~ncqQ~MFP*Z#Vt=I&a z3hbJSDPBQ6Ba--UegUa)6#K}S;sw;K|NezNyLn<1p~GA*Mxi4zXjp_Ug%TseYJRb4 zGOE5IQGu0p=*tK8YB~fpkqoQ%{XZBPQ^0~!FbUqb4ilAUcroq%HYS2;?L{f$0`FTx zyz4h$MZfTxNjSM^nL*&4aL69%Usnl(;Wc6KQ0brRgm=>o*c1t68?$er@GfgeDg=hJ zxmQudMNm>e|E*XU{BNs;MKHt*V!|lK@vqB;k)09vp9_X}vtR!#R54+c?9{$huBe)d zBwFm&i6LMSL(Me9Ds}(8bpkIa*v;Hy9~ncyA|{Lyu)t7Z8~M-Tj>InbpDT-Z)126Z zj*>Wo)kk6@;D0D|AY%IKvN3HhMKCPVV!|ka$G(Na|3lg^tdU}!W}00H0#df=)EJYzh` zgrF3c0;2sv1XJ89g1nl;QDKw! z?rJWARAdgP7h?u>H^jlR$=WmFP#wfZ07jw0oZ?=gilI8%eM^KLZh$bIkM0*d!1`P<4;9(VFH3qyW;u&s^K>HKe>VQTmYW@n=qvYRE z3h#&l&k4eV)4iA>C<+ON{Qw(g6oo`S;DPr|K}U}qvg~`lgHSr8(;fJ^6{7AKs1L=c zfx;-IAOH3c2Odeogac<}FYzKMCvLE>V-t;v=NVsjpic^!khYzN6NuZvg9oaJ@W35D z3@k+2JB%<&ZcyY;*}f&Bb`(%5M6CTsxnO<(1V;3LLEmE__5z4rFKBxV_#r*8hd_Mq zpY|At`?FxgVbI?_27;cwdkn;V^Ts> zhwnLd_a1;T!S^cgsKXF2rrl>ap9r4}z~M#*Mzq-hBO2@=!eRgqT)w+o8wA?F*YptV zBW!o~y43C!pWSOIyH_dT*A;**9HLwtu_Hs|=n+|EM4l5N0XXB!{N5dx?N zY)J+Rw1NM`fJcPJK_7wUO}m>;=p(ef5)vv&;1LNG(A^21xQC$vCIq~@;RJpPIK4mn zOXwp&)$aBZ`Up_ zxSxf68IT(A3U}zX4E_iZg(OJe_5$Jp3H)CHqTqG+@JHZnxPQe8RIl%v1V9r|M~@^4 z;73S;08{}<4uDtN-F5@N13W3Bcfj91LL$ibKD1rjU3`EU|J!s35C9KS4#yWkmiiRFZHbLxw^n z3HL?FP=E$Re+XnKRFZH_MTSBpiH;X4Nwj$bPCP+~WYAv>5Fj)I3}WweLZb>`*@C+x zq;CV)DFEG4XBX80E4^n6cQLH#s|I)_fyDV=#U6chzthgyt{rP zgJHPQkpR-$&EO$_8_GPwts;Y=%p)pEk->lf!H8yTNMNAC5diO<1Zd?Y0Ny*h(6U4T zyjP*2HG=?n@0>xa-T*M#>;TnxfJ;Z49iaRV0Pj^22vFtqXFWis8_EtMfymEDhB|gO#@IZ1c1@l0m_qrMF))?pbF*BN`*uqP#pt+;maE` z7)m#q;Pp702pm{fQwoH7>ymE003Ae(b$37AEIUe z$zebbmj5iVe+h&hcmv?QmL?_)r5nvlLeGc+@ZL#-9^eAtz3f1bE&=dfcA)2q0C?}D zL67tR@Ln#V$6bFGekf3R|lczG=E|Pv!asj}5bx;gA zjsU=DTmr`=02qx+;D7)Cqj3pjoBzb0NCW~Ir$1pRG8mv6k%2*;OCXie-vj`oF%I z)QUtP(BA<7qspQMi~Mb<5+hmlS+B9OiQ1zI!@fcKgLv}P7q;L(Nz>c)VD67AbSei(4YXq3RbD4Ge2 zivUCJ9$p|3C;}J`;w%GMR6qt80PmeNaUj(RfYAtq`o-N;9ujUKzX{H>vAkbsh z&dXK9!_o6^eatQd{%;OvK|Wr-4!}T&2E)75BT{I{6hIeoL@rL-!NbYN8Q8Q-NJ@wU z9iCm>d>p($LTYYyJ`O4lXMn!EKtc}o9l%mV#emaCkhc%41GZo0%Ru7G#wG)+QWc#q z-_I`(iHfFa>u|a&bx`so>nm~D3+J6YSfr-!@>tX0l!{_Ak*kw0Y2J~CHF1Zn%;~M^ zRR<3b23_h(IpuJQO?23Mj)R1MK4pG&yEbql`$|sWn;o7>sYy-}_6UfxK)yliN7DA2 zN4eg(sgTH%ma&M^Uleq_Cz?T<@5e1K{oM7%>TiEvhKSqOMlYUz;rFJIIAvH+IYvI7 zrrPd}315lNY^R`7+uJz(w>sWV0#=K2ml}sh2qoA!#wOp)Wv<*W9@7f>ZJ&Eej-J&=3N5en=BH()R!=tg72eO=j*QIWqg%S>#l^OB_{-1( z8TvOZkKCx2O>X@Bs`@%*aw7ke{#A|fyU*!&rXTgzDYf}A)$Ew4OblF20Wl0jeTz}T zi(n(UP!}z(cCPs(^-0^P(sQ}8tc6{Q{kaeHxh%*8-rdU38M+Wl&fTU@Co>ctHPtXeT^>9^=*fhZa$5&hH(_H(A0a< zkJf~hiaB2mAj$cCRnEb2xQN!KB?w-LHf5Nw}+SS@ViU%=c2CJDYw~Su!uk+KhiIn_y5jDD5|^ z^3&1li?n0x_ws%)wMj^l&J3r|P}48(94;d-(_E*pKN7KgKA7qf$s3r z@5;@Q-^v%cJ8=h|2~Ei54ldNoc^Q4GI(JA(x0LK#Ow`)J>%8O%KfJBT$AhMhY#d5d zO3iC>=Gfq2jS|lTbBEJ?Wi$>M#%FO+qRvYliM^G})EdHc39o-OZ_=wo!CGpAXGZnD z;(hCoLE~I6rYfOJM`ji3)Q2Z7PW;BPxG1{pC%ZQCueTe{; zz=f4HMYZgVjErlXO(YXd-j=rFtv&NSr=L>QB@DMod2cG*=Q)Jq&dOURAHu34^H#4- zyN8KJH&0F$S1%9W$3-`buRSaDw}pa^ioleYpFLX@t|MN0%vFW8LqirZuNOILj+8WK zEHHi0AE-b7Ep-%XRSfQg6gev03Vw&T4_r?j!!gl&bhkFox3n$c zOtqJ*SGBj$_z>aMC$@J*7y9T%I=o8p+!dJYYAkzjm&rD0{8s2cT$AFrB~P$BDi^zR zl1)=xHDuuP^09z}FEbQ7@jErjQ>=4>WCM96xGKahajagteIin_zLv&Bp)lgo2MzH@ zlwEia=}-Q=aC9K?S8jO7;N}#8bnJ!!UA0~IVL$F#iqp|Y8=@Btwj|>62|DoS6ZF3q zMYA#IUp1V6e{n#S{$2C3PXN=l@HU4xy-d7y<51V!jqMwsuVIUXbY|}axTy5M>+<1> z@YtZ)mfPmrFxrr5dBgAY*y(q?R7a+*E_kOY(~(fTS=XNH^}}Zg54C<3x(QW;1V+h( z2H=e4G-ST1bIiZ>L3}2#G@X$s;1}n|@QR|*`dAY`p(}^32T*(~Kh)Stqe9Y5bBM-+ zfFeHT7EM#0tz!NBQot9%`%NCtEjl^xD3%;7Wh~Pyy1tZ|;NVPl$IK}AMbl@NnJGu5 z(9x!`0_LfRxHn6@(p4|@doSDNcz8yC=nAycqYbd}H_!tQ8_D(`Bp*6w%yP{?18->V z5+nYQ&E-#(Mc3SM-1yG(ll&wOU0yl8N3 zqI?Tf@O07%EYqWMPI@A+dOS2Q^hL(RC7cQ8tq-i#&YomG;^n?~`if47zvVpq^=Wut zukvM_jt0M=n(PAQ%YD7;%a`Ok`s*&8mChj&%k51y*)UT_D%~=xKHyy z*JG6oM^hz<$^qd{FPn;*yfaDqgnGWu71>4xmj&?D2sdi0p4{`!RiisptIDDE(O>si zZV+fVzVT^_4Ton|74g{7ij}Wlx?UE(^`$Xo*od3%u{!z6&W2rWq^~S-eqRa$0i#xCB zq>p$RZsa=tp$V-+Aqw(7am^Mu`TE~KTrjHc7niPTZV?Y5_%;au=9EM1Et!_%a+r7u z9!!`Mw`7KZTjN1VoknRmkPwy6_jJ|`>-&S8-*dKd<`b`b38~Saiorkp^5ij`{CDyF z<(fLK_;SQWBx`tbM@%i*Yj_F2inR^d7;kmc3Q8Rvg(Q@#C{-@+&^9{kP&JP4&@~=T zRjWMEVx>s)W@|^eaz-|yfuHpJr8cQgk#E4N;rPV#H?KfGS%aq<mf=zF3s zbbzkUDV(OF4y)69Z6-q2dwlBsPFO87-m1{lbA_A)rAPW(>_NIjg&OjV){s7}x6v0G z4~o3Y>fwsPw_?5@LYHV5D~NNObNNNEW)Aj=2;mZt4Idw6$WMNyw1tsqbh4QI? za!-zjfY-rO$M^+RkE-G5EfmP~^w)>u9N{D0@G9V1?xv?9Do_+WTF`A1SIZdo_4NBx z*WBjZUMrQO-wbd8@$f5JUZD-5BpCO1I1-A7H%%p7bo@a3g@;OyBkAs#Zc;Bh?0|z_ z0RJG!RM7qU=dw=Y@hQGhrFYj<>Fsm`1qgbfzdL~E!zIl_6HC0I8A)f+85SZ)Q%^qq znk1-Mb-A6kH*)!~CJB8{>g!})rQ!U3>ytUoWn_Sa&rTh)xv5307-YksmKz4l%*e9J zSAQv*x61Lo3xIqL2}hMSGBq7S=*(R1jC8B0KH3_LHIt$3XNez)=CXfklh_SPFf{ye z%U&^#R*s!lqt}tjGi9{y!?n9@QbRcnPtN#|$X=p&Y)s{=Jm(Nc{JEUTtC~$cFPg_I z=?kNoSD!w|_*<6ib@)GBdFTxFO-o76(J6KvD>Nq%qo~5ue6$e7#}RiXPi08jl=p6~ zG4b7GW6j3TH}y3&k5f0V+S**E3Jz5tTih(mK9%AuD^x$>3P}%@t*o3(d77QNFxD3T zVU3EX*5HF*Z;oFtSIvw}&5W4Miq@Lx2Qtc28elrHM>Euxy_An;s!V-N9&Gr_68wre zrybv-v=SdVGo-X~Fmi^8tk*hn#*a<*C2?ZJ1XsbD$6Fc0?TQ;S66(eCEJd~c1shd2 zX86>LgV=jTGiUJb4~!bGe(fbLwJgmjJ4y8^D5KX>TzRk}Fg_`J!)9yccPSSm-|F($ z#1jY4T;D2m`l@$gg|miA^$3NiMf|Zt8lDP?hE)gd7x)nBYRvZk;$UC+_$+%M8f5;? zD3EN#EaZUU*jDy3PvN5BkFiaJkgn|0U=wI1~GFtf+rfSaSqqOrKl& zfmy+&s5%&QYekzv@zTYk6cGC9=E~Nj!5*zq{A|(o#q9U7Hbm!Yb(Vi#-{O3ywO!ik zEkYXWym&b|b8g*t_GGtR?!wF~qwLhAQ~ufU8q~7AYj}BAvm;nmE*ebx^ZTbxzWt`w zt#|J31dB`TPh)-D_pJa;12EYeBo zr+;_lH^c6aTN!E)&Gv3UZL^@84w7ZnAyiWbm1z8h=5-Wn)-cRe+gqhR`Q z|J9!=b^)EZdT(FZUps0O+g$1Nj(LvEC=$vc67?z}nV$Q=!5qru8;!Dr`Kq$tJT6zic<{#Jeo3!GI+GBs zFU703TGo%}+(%e0&U=;lre4>6)7$sXT21^i@#6dfy-p(WVk(DA_%rIA$1XL-^R8~L z&&z$Toy!`CuX9W9C#PJpmDgdciy-?bp%k4m*M5NIP-t;Wxby!b?k%I^=+SlUm=iNI z+c7gUGdpHxW@bBPhM1X|nVFfHnH{qo^XX(}-kH5;&V1+J=hd#3N+oqkrKeV}y8F6C zDE=K*DT*)vHpH@J-pZg;1F@K|NhCJLx=8NZX=1*N_{Ju|#)D-D6Z6kdp?n%kV5^u` zOI@UVs85-AZjiWE>v2*N9mpGOUn4mSjuSt(5DT0zIhIJr(RfJAPV33G3Yp8iPh*d< zMo+OuC#4p>O{WjDUIJd<4<+?qee5Q1pD*v%I4|Cv;9_uGMYGLV)^RqPoF^Kbt1@=( zf2z5BbT4wv(;FOW#yU^_?Bu0utMSmvo@p~#1xYgX{>~%|#q^UOj!8Pb^$5t$*L-h!`YsIG+^0OJ8a=zZlHQLk z;hBD_tVCa%IYMJhi_zba_?v|lk*gOLnrbf(l1rn8zv*El3d001u;iUo+YA_<2ZI9D#m6&$u5Q|FIPk^C?FS_26<-X#)CL!_6ZLM zXRY7j%he)$Q~q9DiFwADa-WAZqtt6b_rL_ZO;lGaSZR3Vy#5A4>l{O2Nj44`YpH5@v z3+9z6ZH+p;)%zBF+_3PjP9%$3pXL`Io~;<8;Me|nZbCo+ERP9Vp2~Rprfx7H(}C{>STZ? z!WsUdGnfE2HxJF_ZTB&gKvWU<@CD5EN0^ntfr&^Yjefed+LO_pU>Tu?jZIynmYmbEZkQiTql9QA1HAbXfw1^lJ8x&>N9y7Rv_mc-4~cI5`=OtBx#X z-+a|ldbQXHNV zUlnp37Sq!acMA-BSlBMBu^h^cjEkKy9m!(lxewnmw&@Y&7(`w}%Xo_f+xl+8?ezFo zN0B(%wf^${AX+z6yF|LGxbi_VTz~K`;Zk!ek7$KbCc0c`hpeJY6Jm=|8JIRTain6u zbSt}}O)IDFsays&Lw}AouMA}*C%+{k)V1m&7Ikow-}A{jso1G{1O}m@x_g3V8KE}^ zO%I0_e5x9Ifb1!A7kQYMZ~lGYx*hTp-N*yx%ZSpaq-ov|r67ExCW%6jhNQH)uLnj2 zdZ8yE#`~Vo_!cDkQJ!vVH$CsIYb=WOS&AB9=AxGw7b>z+@otc^>vmg6(mU5UN>Fu| zCS9%Gg|xrw3TSE6>8yzg&z06Hb($SD&+UJ1g2-xbu+#hqRUBV?`t}fqApC&LU(E9e z;SSRVJ}^Bsa77KPIfx~_og+k5K4Zf~u4G>^Kx5i4b_W~00mL2@+3#)_dJH>?=fpGR(Ft}_Pr_5r5G2g>iXRz9A{8cLOLNg$ZmR>|;?7^CF?B$vBY@tBe$!8b2 z(`|6W9#p!bmtH>;5Xo~hHqe{-uG4Ci>bUH>rFMg+Q${Uu3y&-sTFKbLz;-YaPJK&) zHgeSq%d{({A8ZD}N1s*_gL+_jG zKANW(oR_a;QG@O_qob84-JWl57NQNexN3dVW2r%zSgINI)~tlhuu)vBb{pFoTbrJL zhFXVjB`v3VkH0D2UH>vTsoFDVv5r!ZFAOS)RYFloU>XimOYM^$=#!wyTT3ZRc00cx zXHZId#=K=1V_rPySxeSfNuz!QeVltq0XeVh)IrNM<_eVZZHOpDi6FF8Sc5E0DV1~j z#o(N3mFlJL&cm3MVUuQ)m4%A=>u{CONr8v!|bYC7&w7(U;fiMU3@AhWuOe z9#oR}>QfYcL&uY`>g_p64 zXvJ}gT!Pb>%OT?+Yjo9no4qVPS45gQ%Q$PDH7~Yo)@-(DEgvqQu7Bl1bK|rZU_+Q8 zc1>F_r@Wg@Hcn{FPB8qny-dlZ$|zuP;3A|}mb&rXQC0LcwAo&efS(O_>;*~a*V%K( zdXvV>C#@KdFGlb_BOoB_;|&-)kLrQdQ7+DwEe71;<{Q z1$6hzXOAmcpJBf-=beW+1rE{8)tQWKoya*K1wR_=biEHr>nY?c$a7gfxFB65kSyqA zx#D2~4Gh`)3}T&_3?m>@AY~{bOr3;LNnp7m3=&4xh8QuklwBxotqA-76wI3TnfxH0 zL>YyX)#q`Nfiwj2R8XK&q9oCmhFb_9F}$6IRM%QUmz-bvI^_%}J&1LRRAbyLdZ%KH zZk6Quv)@~-Cb3VGRymZTHCZ2lZ4KFVwdqL&&UJO$D9>=~_}$r+8C*1QeY~2n2xA~+ z&UL}6X$QiF$j7S&_jSnb96MPB+X{_Rpj}!L;}ytd`64=xP81{ciBQ6f84Eji)BNgM zm#<(1l|9Jxe8i8`t3bF>s20uQ;aPcqi>tK?PV;qUR$U@DHGku|@J*VN-n+PR>)jzo zM%|Rr-`pg6FkL%g73sF6`^gcshV|50uV@u#oD)Z=0df*VHcKUw&n)xyDBeOYsk;K3 zmnjoDSOf{CK=h|auaYimfV__6WJ2gGWwPeu>_s!*@sNpAHZ1S8EB|MeH*M`X^`4O_4ThCvbP95v1pL2on~) z7KcR2heQ)Ey)TE+Bqy!%O`piDKkj*#X1p z=jI!$3Cdo|!zQTBFW&j=G}x>@idXV-U~+*zR$LgygV(uzI}Yl2R5ABcFJL*z~*7%J6Xcol^#!~3c`A!9Qsx?mzp z{#w?aGij3eto+h9j139V2d1}dyZ?i#88mi>pLik>uNqX1Xz~I-T^PjqXx6m0ABP_7 z6>JAoW*6S~0WStc`*~m@tysbY}dE-%pVGF?leVFaj;zf?f9mk^_>3OUTa8_SBwf`rl%{Q8aIh z42ax6Z;OWQ@mIE^IpnrlHY_W1RV7nwVo0)yMGkeUr(1T;N~O32K?m|T_~~(lLV`>X zBih%@%P)o>g{tq9sX&EgcTM*wEn_`(H+|4@3 zyZB7EU&Ja*cOj6C*6z1WKR#*URd_Mo5o^_PTq^eSes}mR9=^RaiL|OU-o2=u5fA5R zX_=>|%EKil0yG_DS{in@g?^=y`ExH>W@hiVU6f06C`+k!a35d1Wv2HiEYu0il=RMO z;tjWnH(ncxD-Zb-d#IbH1JPK~Z+K(8G8ts=5}Qf0GCKwX!l*?<$NXj$s1~B}#G{M@^cBD(5$*Ii z`-lw(5}l1AYEug)y?zX8I>e||5yaunX!61x$cQK~i`98Eyzyqp9^~ysdSvn=HqRp@ zInR>YHa_&SjBE<)cYR#_H3hoBtj9(euGg6(vI-=IPDD(huH*{mD{!p)*WsQU57a5V5Sxm|xnqUcj!E1V;qs!!R=>_h^2T6|o>?ZGX|t<>%K z(ufL0C8L&!GU^Q~Wf44;@~A$uEhKZ93`pLkpHt&z3ACIb2rlKPdR8(f_mF&Ws2iFR z9zoFhs*cLmkK!owJYR*F@$bB+wol0J0rxZn0Zcq0$Q(@s0rlEWVmAVy;>*MDcreM3 zBiYc+d0)3fRl#xO;$h{ME@bn8jVKaU&nR`Cw;5d~aFUAcjZc+%Ub}Uw&nM73JT^>q zND{;nQlxFToTqd!`{EoaQ*GGa#$4=vjiP>SHG>?=57Q&GZ#eTnxbDS->0jY7pKt~B*5{)~q3sVrEm zjl>=kKVt>*C_ntyEl5#mYyb?g8$ab3^5CdG3PC)1Krxp(W^cle(pymJRZ;>~VTkCd z5TvZFi!{@{?_uV4%~E~|gx(#Up4;V-d@^6nA^oH3B`z`Wy2fcijgSk;Y~p6i<2Ro1 zRWLASYR;10rfANZosLh}8aJgcuT%Y+8%g+Qc;ZGY^_l0}$43cFwkl``;-e*Ce(2~J zL>v4}(b)^DlhwxUnObk&o)dM>1S``>e&OcM*bIc;25OzI8hCJf^;{r)Qz|@bNqBWC zRcd8^RvJ_)tV^9!zbAf|=oEBGb`$hTfBN>WL9HVg1y^3L$v=Wp4~@#bEDDonBy%K{ zV>3jf!ZUPvuG`54R(1KC|0+xu5CY9C z8@vVNs-Q@Rp(M`m=^zVbS&ravxq|?%V85wRj<0_pza+=@NwPE#D@n5klj|qD+MXK( z`l@VW?8`2->)FU#mL*WaF1P(am-oAyxdm+)Z_N`jZPX%{j@HM=p{mRZ^;-gGTu&&p zh-57uZ{_QGgb@CNm7F`u>;rHnY-tgNY5E$6{^=cam{MK+C}Pp3NAuWLX`h zr{-(Bvi41U;-H~i=Rxcn&f;mZoK7KFBMt^Np2~b;0cjbyN1;Ix?WpM=dIoa}=h|4J z3&u!!Du-vabatoig14Me#8EjZC=@^amS=S0l zq8}thfv-5-+p{dSoItdnW=>DvE2G!iKF^N4`wCOjUd?6@gk#cwe&$C5@#McD8jE^| zP%-$-0tWsTZo9c7<{_RkQYGP}xJeJRLyN~INqi&Sb-(KrjhCkCZerWM#no3TQP^9T zwZ@$5k!}{te;=Wp<6#$EvFRl2kc+rCb~(b+emNs}l9*E(P*80)($sT0`IXTxsPe?~ z!NP8(AG|KLmno3hGDB4+u*pU9RvU@Ca#%sB_0H%CI$EX7_Uon3abTJ#G7~eb{E1U$ zukIRE9;edzx>XLX9loX+j3+SAsd-}fn31689O|et^nT*uy$vKZ33tsXV7~biGE%ak z@KGcfskTM===(bA^QB+s6tv#_PoDJj;vV=e#J&L$pfhL)9s;vAs`@8ZV@dw({oYW* zc3Iwux}+!R?OXS{r}oYl=BG>k!9~I8EFu18WY8EdGYacK z5v(bVS4x#v0_+sy;_$W>{8GjW-9^Ib(phZFp`@g;R{{7b&slBIKmrA6&3Pca*(c$z z<_n*}VG4`9j4Ud39A?uBR+)^~v>P0{1XLE-* zki`@0O!Ao*Tp~H;eXXLj`5tJ)UlFeG+yeq0!=Rq3?%F*aYX&FtJaVd9Ur2&krrnnP ztx}p?`s>Vwv`l8{@%ZY>%_?TeeT0m>GYpTKO*kE9G|ApKJ5QgHS&GbYvLx+ke^7n>dOqwu-P?ga)2j3amIk6MJ`x0Pg_h~JsMMxZ#OdjIHis`EoN7LTX>qW!DjSQHz3x zJg({FH>eU-h|ezJqeJIy5zI5KjG=cB#FYh%EWgzPX>B<+XpErk^^7OQ3V%wIqsD2x zKe!bX@>3;v`9>SDK`8)*~KL5Izn!qnHt zO(i+8&SfqWxx`ev8$AbC z#&)^Adk4^!nB-@u+ixY({r)l_f(~XKEZ;1?ShP5XPL+`zNC@^AlJD69A7xT61tW>4 z8izR1&=M`G#f&qqe2RU;(;H&VZg1t+5ZX3bOKG=*MN_{BT!d#Me5j_r@wc6(#7hsBL27I$f~zY!1ng5uQl+RTP(mtUmf24MSU){+&2d!l4T&%P8sY zpf9K~q-NjafCz>VFZP|d zg<2bq5Nb-qez+V4$Kyp&Jfvd$L)SHj@nokPnFnT*(!{FU&~Cz76KIJ?HG#)NA8RdX z^_$nL+)2HxN3E#Odp~1ye(Ewf`{!BQs~JL5f40+VER|n1q<*3GLVOokA*+-fQaDsQ z8lYW6(xOn1ue$w&B1t`Mi-8@L@!|GXPG9t(AS5~$qb}qHoAJ9MF4tg)XeDs1lIDNe za?;!6$>LmS%<^1~T)lFGs*OT0-TN)H`YpG&7rxtm6BNqp-H+4J#-URFb(eyY7|Rfa zT7@#FZ%4z-@7LJy7v$Atg?A(1a=$s~mD?rcsSKRLtl$_SAA>AAD4_-qgA> z+C6;JKTQ5hp>P%uMs-S9G2>}VsoQD7XhJCrg>Zl@d$0H?lzu@aq6zDVYq+@m#t$eDP)$6Pac1|Ok!!t=aiio~~ zckR~(vg|AU3)l++>Iy57f@)rn?baxbHQDvDLubO?>tVl^sPI~ef zmyb!Vz#vTgU$o(PKIWmP9@Tm$&NK?+=czlrpP~|sEL=PA>+Es!x*k#w7o}M{x{jhw zJ(wxDEr$5H49zBXzX*m8f)3;~NolmV$mNW`yO=zck0>R<;Wc`CEHw&bgz`XEL8;CQtM#=RNS z6)VT3KXYgnmw9Zs(n;S^=F= zWsLgjk#M5!tZ!9+Cp&%vLlz81=XK8G148*k9s_O9DQzFjfB~h1#kqo7X^s6Xih@Y=bz1Nq?;PBHl~qJU z*qXj#&oT1Z85-7Hy+RrD=$rk@q}|TxYU%{?(&@CF3`&g{fA=|h2NKw{!R}o(gJr3l za&qB~LI8Oyc_NESng$sK-o`@pyz z(w%kF*u=;Lm&NT17)WFW2e47h(Y`%n!R3Gn9CTfC%clds^LM>85OnPLrM0$6b?Vmf zkxK8f`g@Oza+|kAbNvc7hP($T_JKiD?_8>ek~5s#40$@X>@QQ>Oios+cQTNBb0$ zVHr^r!L)jYB}UIn6h-i4+0$W7QZ`J1gKj)UY>3%cK)piqpxyiTknX&@rtoAF64+}gTv8bct|k#=MSd!q{PhO z6?qci&7b2P!t6}P?4L<~(gr>d_dTyk+P~E@S-Wk4%jflK`}EUXhRu_W0{iguVK6%` zg=;Lx-AESE&h0fs^_>4zaIYf|5M$yIH?0-H z2&uwc@3gn5T~(9>udd~^eo3SO1Pj{}9tv}&LL^sGFCr7TwB4VU@Q-XoYJScsV*^1! z8E<*%N%V@fA4yaYCpO9=?7BJByXxPzGPwh76fw|5_J9Tj&;1xFXGObdi1lROkgiY1 zERz*f%L9dfEQ`7285mmD8dzKU>kFQ5F83@~>8I|{V@FZw%g3M>Fyu9@mP599`thKK z5AI8p!L0r=jG0Y4&Y$~k_^z9$5V!ly--^5ip@Lc8AT;=upKwLpXWCoUwIgF&QnTs3 z&k3zh+As}b8Umi>m((oz3wuo5FThA@65fG&`#DXA;?dTSAfNKK^OZrR<64FY)vqiK z+Gr@V8;Gs*3~9RgM~vX!6iHqU-ErfNmkDAfm3?qZ03Jh}D~H{FAoZI`VEDu1{12xP5gThq01RPZZ)WRgV-J87 z0Qui^K0Yn~pFc`PGXSbj{msTo&l*r_sb>PfCLn3~9Si_|A^^sl?hi}xC&TbNqu^*{ zrTm*EqhVuXVWnq>q!rY&6*Dq3F?9rR9`rOU0P73DPH_O0VP?Q@ZDMJJ52*F~Qw0QU zT=6xi0azZ*Z=8sliGhs4uEm^2U7CQ$ixhAA>8oE_yL!}2;jXUYj0>| zZ}!`Y$mX&03!b9NdVAc4c330>pu?rb87$W4I>*npufLuGyYlc?+yOTIsWYf0FyvS<^Y^fU-Kfzw7Kf{Sxd4fxTD&dx0__B zvU(8y!r!Nho`~9#uTRQ&5`+88=&9m~^=?lQj-fP?4QB;aWZ#Cwu1c#@YG_EAj11+C z%?fJ}*revvo{(3;n(qPoQBM*l4k_pDgglIjyIxPQk|C$pUYevDr{-4VQ$glkzo0U* zru-R22lHXaNhri-V?{jYWue;{m+Zi!Wr!#)RQ?bD+!>}=%RHO@o9PO_BaEJ#%L`f7ejZR zc?Jq;e_cC(uA+4?kgR04w!7TK)<$YO#OZb`13ZHvvFM0^CFx{#tcZ(MHMI>^ENp2=G5_-oM@% zep7jWKc&9_EdX%}i0A({VVGIj0d{QvoG}&Z7PcBgPCSpmXlR!Z*Mva8pr3*9fe_)e zKM{Y8%_ZXz68}LiA1h25FC3oRuUd;7UP~=I#}pWX;w;(kny*i&E#VMZN?+p5|)`3QBIvwimS_NAj-FB4zHn~z~LJ-R* z#Nz(lk;!{ZsPXoJQXv}YOZYLj{axnMaEH!yN92Q-smoL*yZ7m!N0m>w*s5s04Y&8r z>v`yT4!6)d_79Wy{_&C*iN373o+}8ULL|~C>8aO;45W{UCy-)dT5*hd`d~sA=`0TC<1!b&u9GQz zpP`gFlOvVPLYas+-^i?%m*teEPR3`%!;jAwkD(P-sklT)8HC)S{SxST(>P}+eC_3) zk+;Rv$yF~q60ria_q^z%j}lPn22Lr5+}T8Et*=d-?pp|$j$OJSwAL?gG!JicK9{z7 z)^YXOyupuBsi^zD5?Oh{Cly+2njqIcaYt*?>DCO`w+tw!t56 zxZRj%3^EBa22~sWtTHeak~I_B>Z2R|j`7yuG!^D8%n^Bnae^U;IrZ7c7$*Gu2hmN$ zE9YL^;8Mh8D&{Z78{eZg*4yNQ1(P{Mx7l6>c-vT7>UPNK*m)tKQX>OG}E3e<{8-e7g=WT1;Q$;C9%Rk~roKjj@)o}dWTCy)b5l^=Q;()na*#B#%k z$w*(pp(%cztxcENwCZ|iJ#371g+^-;qd`u6FK zh@uyPVg4#fWiyyy)rIDV+3U6o=+2LkuX+a#l7h(YU)sL8yzE4MMO-ENvD1xW2$ zND!J17H{*fRXI8i_RuEivQ!a8QU#~PoH~NQF!=)pAY5H~x2M`gM5LL4B^n)A?Li4w zS*ljzm_^@&S{KLbov(Vj>2NUpx%`U=;e)x;2KJxZr7t*1VPOU1$maSrLC9g0_{~d# z<{|H?u)nQ|f|k4)<2$V*=TAlwIPsg1`qx_ zC=;FgH)=;!e-H^YzZ=6_HiDzh805p>DunEA7iokNB+21m%&5xaoJ^Qa`a^?IdK{j$82 zQt2LdzVL+RO2NauenxBC9gTQguor`)@O~Z0Y%crOG@4MU#lJDn8Iv0!VscJx(h7A7 z+c90x3)jJfWqZjtW$0>BJOW4fgZz$x`*7MLk>PlwG_tbdlFFv$+Td4bu*2lGD$^WK z1S5{guQsVTGoG{)H)ze201W9k1$54^#}u9+rl>jeltFWuo6I^_4^*z72Np)$b*q?D z+i`Xr5U`f-c6SpNwU1_$X$P;-c2*eRqAlPi%qO?Wcs*%FJ^p%woBGY`8Ux}9_CZzl znN_|gNIM}D*G}mHm6msG9}&~=JSj3RHwzgR>RVdaBQq3~D(8w7SQ;B@){mna5mRo` ztcPkY<@!pIKpIGCPBI!gZN~m}u4lwYawpsaN8@%=svn2)?QZTUcqm71KTV|S)H-|H z8fH9N9!S~TZUCgc%rO*v1K1)<{4O`D}1`x*!D@?qpxy%UEN%6v$i>}Sivfv_cx|8&L?h#BmU~n z1@6yJg5g4{R^^O&J&ey}q}gK_H$#lI(#%pq(m>!{#MiZOL%?9D2CmXivsVg@L`u@< zS2$wmhrPQKiIQR-M$%`T(D0lUtLJAIfzK2v)+=osH)6_C`wo{tQ1S-bW@msQk~bqn zLPuwoXS{zLG0n6xQxAZ}!b9&>9G6vtexygi7>c=m3M3Ky#z`%9Hi6G14a-ykug_cu zXhKiUs2Q6?TDt=Jc*4~*Pg(Px8lP!GDrmx-d5y|~VO&uGy4131ti1*r3X)4-ItXS7 zh4QmBROM%u;0@yj4K*L53}#_vBae+l^(F&`aqP+P1dG7VJSrDM-Nq9qw0~ zou23%%6GA@C9R_hgW84N+|*tpHZnx}#a5g+`CtKSy5czzug^T%@TouHe>C-6-p_lO z-m9yMG7sdAMg?i%QS?n1H8;rfCe3tfKLijk$X(vfd!(F0CNd9{j)t(dS!ksVI94q| zId=DzMY3$WYsp4h=2l@$$W`~?-PL(FxRw+yE3T9TG%a3Oy1tSr!tFgbz`*B{h=o>% z!ZhEoi1hXFAwka-OP5w9?C9e0jOM>utQD(^d;-H00A## zms&6GtBxU~BJI_`rlUY*n@W|TLQXsUqiaz>`KsHSkLxKiLL zr!fa%7$AQI6qFjl7PX8XrAmf2g4B>7TVqNIJ(nwO4j7Y->>n&Bf(>gBSpI}R#E|iH ziz6GqVU}(4nlPb-#^RK?QsIaSry&=l?&{&`tu8KUo;lm9hvmrubM3C0f}6QvhJNzQ zZ-_3=i?Ogd3((`J7Y|j(SclQCcOa8Lb3T7;QlwZ2g3FC>1VZ*kIM#c~@d_z+P#{k_ znVdb9O*{F0Y%Eg^<3Qum^X^dGh#?0V2(Fq{eeiRMkjAq2@Fnr->Z-=KXQ*P+IQs?$ zfztD6Swr&;SQ*K%T;waDw}u&Nu@QH(fR1%${`n@a>Lw3Uq>A@^#qtCMd7~-pQ_VGz z1mL0qYvj|QSgqA#x(hz@hVVD^_9yt6#*H*+}PYmf8CrOpJwI}$Bl8_F?HjgwhPw#vlqa7khv z5Tk|0TMp_U^leg>s2-u|EuKj#*DJy+YgK1R&y7&VveO7B;>?;YyO!p~b5==yC7Fkm zu32v!k4R!O@^cKbRI-G5VmW2fU5M)R;k6At9x0z-oYtsHKx++o# zIZ!gw*f>+7uV`4 zp(|fFGuDXtqiN(VoKrpms_ccZkb#3pPy~_an3U+4uH$N8=0Pw)r2P*0j`)-KWWQ^F zs?l-OhFH-}fM;{pwSXh0NAl2g;_ffCrkRH@Ow;pGwlN;22=wMVF&G|o&R|uKc#uR< z-GfsDJ}DeOlxy9-T%N;18n|%*5nK~(ON;YwI&74J6ACDc`fs#@Sh5?)K6E$~LN6p_!~dxR8}HxTy$& z_29O|>g8L3zlQ#fQgCYPsOs@6*Lvh7g!rBSR0P%1&?l$RTs*Yiwu|= z-;r--OiKvXc4s-V8>3aac}X=_;bUz66`Cs~3pC2x1{K=|U_8q0#(>SA)W2;Ge&u7Z z&|rUxs2Ef0_>yRMSH{@^cCS3I!Nwv$U#jp77D&|J=tYPDb%v~Cw1l;9m~@qP^Rxre z-Xc`Yz3a&A#B}&vAR2J@KwjYL%7k)?Nt+KYsGrB?Uin%gH$4{%1%6}aBU@>a%lY}W zP~u4g0uhGb`lNLEq)__qC&T0>No726!Ky8#-aQKn+!t3d6fWXzf@@ZHK7(xWY3yUJ zW5nYx(@@z-d{zGFxYAc>5bbj68x>p>l*>hsgn@p=<@gkoA)}DFwf~k(_*2G3(d27D zE4T*u{xoY$h5ud1Zvmv(gn7SCW-;ja%(CXQ6~$?pt;u(XuH^zl$8o5ROy;BU&)9F? zIP2d&L#zR_co;CiO9f&-4Bq*p!GvyZ;Bd-92c5mhuFpEHEvjbIdu9u+;2?r|sEYS< z26Db#TMBv=4jhG>oPn&MUJ5vS@X)b6ZZBG8rEJ7vXHpbAh{Sjm_D@Gu;JgOBe|JLP zwM2-Gb1Tc+t$-H%f-cc52ONY*7yms66#ABx&{!I=iei7s%t?0lq@gzShX8#ENqTC-KS|3X{olqwms30^_;(`t~h@HfwxHz})d@bt`Z64Gd9{Bm|)QX>O? ztxs9b_-p%`x&lir_^Z7Qq|f%#9O}J~2qkIy=UE+vGw_SGe)wsNG>I-6Oneel0|I&S z&X#KYb-RO6I92VwcOUsz3ss$9PGjt&YTOtJe59$${e@wQ+7G@1F)*-!3Z(eTVjYCd z3`CokvYV>RQ&g&gqtVOHxIJ>-vaZ)6CnrTc3fcXmAE8xYA7K%D^9(nlP$p=~9pun9 zkbP;rSA}%#|CglZ^`9~bLg#Vz1_NshY=d^|Zizs+^NPx3tq>(O)d(J%B$7jx%eQl@ zmUXMF4NljkO_{#ELhiM2P6lloV^MlVDP~BU2fUTlcC&}sUq8bcxhvXatk=A&txSDH zAGU4N+FJZGIQ#f6$&}6YFv`UJSNkt|FS=z&g7VBzMDvWXi0Xo&*nJbAlJ3d08@(F&i@>M5f3WJW;Ml56-l}FH@zMdP^kVE2y7`rVFUp0W}aCX@z z@)2c&WUEbcXHWU#f^fsRBiwmqlG%G+bT3uzTJ*k-rmPhout!eb;||(uAw5Pk>(~i* zNHEXyd~is{_tPIqJ&DSWytt^u{KRPDH71kBzARnNrE4>ZzS?fdXi}{Hd2zwX1z)jD zP_ZLpV^;;UxPL_zZTLjor(y>~OUJf?XIZ>>DypQP(v?3EJAYoMPu)l|!BDBUvvI@P z%-oM))oBfSi{og~FmIHsBdty?bHAytmy%N&+?q81x|l0YkST(pV)4*W4u(l-&Gjql zM89=MbfE00DlGbaO<|Wcg|L^?DEvx$1;11N0rI177er$&OOTWj>;%zXF%xV}*#LA* z%_}6THZ^)Aq{IH}!{{;(gML-SG9}T&Xh_F@N^(6gR7P2-X5i#nVj8pjgqU1Ni)(96 z)%tB=JAwry4`c=jP&VgKxfc{c?4Fb#?hUTxr?v zqGDmMV$)8aaLZyP0pZQ=n$J7G-bB0gLcgA-#iP@G2ImoR_^g=!vG_BH&rDXun+=IU znaSw}Mrs$xHBD;dR7~&`XC*sh4E&+)vzUu?IQBsCBQL7A=bp#zaHNsl zelM6UW`J6Jc>ifV-aE5lj@zfwVtj{C8@r)>+_h; zwNnpGyCyE?7KW5du<8Y+jwd>aiH}x45h4_=1-)EkHTn?`hEv@!ssohH`@vEcN|yIS z7yR^iuZ>MS-N$3{2TbQ&?O7hxiMH{xKX zu7(%{?C-xb5;wdc+6y=jR2kl|YrRarJKB5F88P{Y(|(!2n;L+y?Ot=>BwLH=-8$&!9N%X(t zcl}wm#SDtoK^{$efwjho51W*Q_>&9*hsH;M^mxD_xAN|zCui|LNq_&oGQ;o3=Ks{f z{-%xnP5Kk~oAf7UWa(_=Xl9@%W8`E+Ens752sr4E0!R;dTK;zlke!wJAJ5_)f1AYp zB>^)1R>=O+{#fam{+sFtFt%g^NPYk{3t-|2ut=w8qW@nC-ybu*e|e7o$3yTxNDKe7 zSNIHnvwHqliQ&KW?k`>9{|BM(k7C9M7(#&X#RfQUe1IJyK!(Eym{J3DJT@(SfETI; z%O8ha)<15B03{C~Ww8D+QD*q#Jqb|7050|He_R0R0Ky$Bz~r3mw`vA(x?{&@0a$ka zuF3LeNdA-qBsvCwy2lET`2fzg8jQ>gfW&XTkDguY-^H~*{*3=m;@bbPveSx{w)Urk z4}9baOgbU#9fZgHLQp`Qpn50zmHSgoFmeg{SPWQGRZ32Yq9nf8L;DW*pu8Fm<(f2? z`=fuQ-maBNWUyVc8_X;4(j)_h!`zA4SI@IfJ1WRscU;nA$~9Q3DfVcd-V?T`6dPFM z=5CPi&32%z70NBoM5pcN!*$j>T~ZoVd0P;x!hdqP(BfZmxxWd-R|;{v%rklkj3VaaC>eV|*K)}Cylvf%LXQzY$y>nQ5JlIw ztmX#QDFb;vyirLy*%B?Z*$g(@LFu8V205i#xA}p!o~xdT zr_Wl3@bA*vzZebvR?z^yf`EAbts?(jtNu4>?Z3?X|5t_Wua#QJU<@T?s=X1#yC%#(`n=UG`_n*%lnJ{2Z>DnPwqNfw};2TENI|ur+J%kBQ)9# zbuPb7>M!Z!X6q1#tV$>l#l|ufa0c%Q5{HquAo=%6_PJ^4hj-p7o*KSS-Ggb+_bFUTr}Z& zLhSj3KX-*3ILB&#<))5J71A$2s@RV51Vg9QsIrSV^}8;GYx3Klv0OJ>Z7*(_L>L5$sWIWtXc#3hLGItSmx@%r-=9(|KYg`OUc zn#Kq&>ZZRO|7k9)IRVi(``|5qv>aUFevyqZo;%zW@+cVwc4rPXQ`SHf1j;~UzWS)I z3UQR}A|!6FEpA84m>8;x-_u0~C6pXD1LvTMouRD?6R+CP7o>6dBn|m8HV0xrr#n8U zxIrK=?{!Lk*sEZ*$?Of+5V^x;my7Nz%&5OwRvGA&iiThxhR7Rp3B}b z@(xMC=1cF`3A5hWQv>}?yFaIl)9FYjGa_Lv7Z0y8e5QbK1U~#tuY&M?ADGhA&Yr@1 zeLF=J?nvcm@Ii}IWA@J-6{daVIr- zx3z}snL&{!@dXOGJ2fvM0dEg{R8i3?8x9bC-DLKa05TkXE_NSW3YZ7Ak$CE$LB0Av z%)NC~9NX6JjRXkp5InfMJA`1t-3hLZ1$TFM2yVgM-QC^Y-Q8|y?=#NX`=0Zj@qT~Z zZ;Yn8s=B+VRlOF>r{-@y%k@?JLM#$ggMgEZlNEtXyRS!CAF*D5!{(BV_)_5cKm@<+9{JDivSk=6Fi2Yt-EKI&JVh@b#-%FP<2f z0{LJ~QUu+Q<@)sTC(%QQTq8*Dt@I4`2;7-Hz6YdQqncP^mlfkJ{ z2sQMog6gntjNN{a_Q0t#4H$WgDo?m#e8O}tqhZn*vcX!1JLExHcwi3Nm9XVk9s(q6 z?{jGU>Vz`}{$=8gykv5r1NAlSb79n?OCUryR@+nCb4Cb@96?Xncc$^8Hs|ebH^lB{ z-@btxx6Gqyuhtxd8di38O&e;gJW+mVvbxvfNR(Jv7~^WqQEG&wA!j>sqih#5g;$<1 z_a+92Vm>B0w=u`@8c*1oie_YwIk$~}s#Z(iY?MD19`lGOPNY|$5l!Tv|MdiO?ig`D zl882tSv&9ywvKf#G`ThQ{M2l{KDL_B1AUpEvB9AhMsLOq9fv;V6uobqTVpj2>KS|- zO@I2}df#W$+iKHtw5HQef>P+WOvEj|bt-!CO*>^L-mf?%17<8Xh4FHRESUTpAK7#8 zX{&|A183ivcr2WLONFveI-5*>bB01yE^v|kB6XdkAd4ULoH>cZeZoKA8^c(Ec504@ zm3F|K5n`GvSGGg`*BZhvc-d;;>X#ESf^{f-5>VjK+L$>k>mo$)(3~dXGT< z!kih#t4~}M3OMmr`l{Td=d;?pK*#1sxCXX&hu82)@<6S!O>$9xWBw`5FMQtzvQWv+ z5Mafi6$E$4t=#FjgmDnsC}FB?JzL&0VT!Yfb+N~^udKK!IX+lL1#B*gD5m<% zm^nV=e3_tma0l{$rZ7xIZDgh0B~w3@EK1Xe@-bC}`|uH=$PxVQ0#s(OJMX`?kfS@= z-x7$0_pJKlt(wF3&K|p{B+67daE=(|)A(mQgfnnk7pRye#8!@uzfu-guI@P2e+Y0P z7SAv+Vd6SLNEDvN`#FD@GD8(Fcw|y*uljSPQ(K?1nL>FyAoiVpjsi~n)H*rL;Q-fX zQmV)1cJnB7^P$GO*Sw3bt{bdEa6xwgdV%Hy>;z(=xFVx#E#MW>=w~0s19)nCN6#Tq z6KcVj>g2iCI&$|Am)^-N@qnpGMHPMvCgVDIJ9wL@nRwqbL|v1xlrULs4lUs$smbYm za&LBtud6?M*jds#&M{L8k4-!O5o3tTcZ{^y$(`Wb{@7IPZ#+wM1-q||_2hN!3iuIC ztM1+Ph{5b^=O29B5se)XjoK&YQT4c2!AqMeQSF>Wxhf)Fmxsg;J2e}E6G`uidcl}f z)iaT zS20d7)cP+wx=rm8&W85F?O#qd^6>P^pQmgq+w5$mcx&eGYzLkwLtwpEwa!PZ*5Usok&*bX4#jII4M*gT7a{*8D z78IDWgp64S=5dv2X%)b{-UQx4`we^7k9W4j!tBIQS_2D28Umvj%N~B~*i5ouR#{{q zx131+`{aDbJZ0r4h|sJMG520s{V%OQlA%yoeDx~V) zP0Qgv69zIBDyt4?#hbYIYGHMZ+XN~g+jL}WMf6=XQ-R|pRSO~OQX)7N1JB8c8XSM5 z@WnPAmTlqG46ePI$;+>0C^yMZs59WrPmDuI35{e&g{;>I=k%I2U|j|4Bho1h1rbee z4!HMF#BF@hdz@dTT33h|J>Z8`0pm++yf=p&QCUz0T87i-rB83*@!q^&pYJG$UMo&a zPCcRBEwD=ANEnUfk+J+ zZ~FOnyXF6?pZ`ni{wY5GU+HJyv_u*}-TO~n3p{tA&;<(LKQ%5;K?A3%{!h~OHwXN` zkhV;JcWKv>l`{8ZKx*Ar8L@Fy%`RR(6$I0e=oI2FI7JK^Jb*Mq(c^hIPx)$|1rE)# z=E{5>FgL1@6A$%t7G^RjR9<7pk-P})hX9o)?g3Wlw=VnCJ3yP&xk4A)Upd)Is01Ov z5610W-?2$073k>K#u+Sq2#WCC9>xfcj zK6L*+O#X5i|20Vdn<)J+o#}rqO8n3;X0`0^XJSuh=Ii z``<&Gp$qC+VgwYdo#z{;@L9gW3AI8T8$XmVTTua8qNfCwHR7&bXUFI zO$>P%Skn^(mKVVSAy`SuEbm-&22=w^0d=k{>8x7@S(sUdWL+JKQ9G__fxz5^XYTzq ztx_7y73sHw*6UN=d+vLW^6S>Ic(KpfMonL+xL!Ic-S!WAW5K_6;dJov+&_GqaZTk5 zy@c#=z1wQsUA9_x3obas5;$(WP8`R7$!~u`iFQSvUhI9`C6APBzv2{$5^Ha0VBmf) z-mdQxv_c7D5;E~DdBi?*+-x(nao!#5JTKsv%ryf$1K+0~8TI(`AekhF+w-zcGtTEM z=cb(2_dqLf6TP_WpPY}eE|aSP@!pL|uc_X6Eq>I~EY0S5Iq4rdu9hvl!XNtVE5K!% zDy;`-o|Y1klOnscuR@-7PDm%_rIkkw?m_57=jucN^CED3OPXx!_r6y$cU+<gY!dJgq*UI#eW@t)=p)l!yk_v+5VfjVzOelI9R3T1Ie`eGG`dUc*wb2^?qpB8-e(y>lM26xiLp7CIZ1-|D@*-VPw*K5T$MyXa_q1`C zem|AoxF2J|=grTGSV|ci`}1e^Z0-u~>aU1DuYaDKwH3Q#?^E$x9gQ9E6{v$wa~Un2KJoGraVyLEwSC> zagh`p99ZRcu6YKa+&(wHLwFL@28o(P{;<$hi8xOzzahphz^X5PZ0p`DwlHYu=64nuE%RG2hszO4le+FFjR6JkCHSp8)b7dO6^5-Fk#ezImO6Rs*A zZaPel-emNw3ZhI|8y9Ynl+-4rlooIfgovsU^?{N>oy^!mTyXfPq$UTcMpWS8Rm!zs zHGRo&iF@Zh$Rka}@#cIBD}nY6e4NQdgJtkTi`9$LH~Um`yLhP|OB_YgN5Xi*Knc&D zG_znLkJ`ihBbKdQf{b-NQk?eQQ2w}8%FK5}*+~AmRf_5r+jkDx_rBr+eX&dBOjoy` z4VK%p)n6+d!$C+Lv%X?qtE%GOgXW}}9`^a%ViUyRju{r}7y}=!L_WvAe8o`KWnK#3 zjDb^vyI{6pO3LL1gw{a0k4VIir$J!xzPD9HL1qkx?DYAzE3sQr$FSssW?m z8~TgU@%C7NO{K18uSo)amNSHck`bcU5%ER^7y@ReN?$4{d*3tD+5HsoN7oKCiNZ+b z043i6V;?0~v&#wMd~DrUn|n>OgL$8k9qNUtLNbC>hh7e0fzZ%FqFv%8Vw8U4i6cLi z7<_Cy$(U*E+Blh{`o)55AFO~0;W~t5I4Pz3S~4BNe~ZS*C~MR?qR}sZ+@}v!Qzd}2 z_`nIdJ#0!pvtx}PY9*xWxgmQ|P1@62Vi>^CPuh@c{k`+~fa~Jfv6R~+TWI_dB###6dW`*Pmi z15ITE{dD_Zmc=4C3~37*k(5t{@vIGg`D3;)tS3yK#=)+AcjWsQJN`}X2HfS={Q5Cz zyV!h1BYd5C-*@ITOe+?^cn5d&l-qkUT;uo~vsHC4s;gEaZO5J1X{cP+tRlL;@h%n3 zOft~@;JSADUU$kU+t@>@y~hG4c)@O|S>RgTAlnk~XIG(3k}4;%-xqeZSfPknve z`lKgHIe&UHyI7`D<8-b?Boy^yO<%Tl&ZK;-NZ#aum=M|a>(#{JZCK!&=T?@Ila99G zj9I79a_;OwXHN2^$&#QodBEj_)pn<)eYnfkhcBC1+dMUp*0n6hXR(2uIxJgyfTb@L zt5SS8afr~U&bLK8Tt$ir>W*t!DX0U6?a?mwf&-N_v z3vjs^4QiKERji7u>wWSJ&D$2kP0Z1s(j5mEY|kChbmEp90Frc-P7#v z5V!|jp&u($ZDQh+1-9!{OLMK}G)APY;hkyk2fH`zD$8NYp3wA7tu}P4fyH!)^wWzv zlNz*^1=#Rv_0EkyfY*I^_i|&a@Y=e0fj#s|*LI_ajljiB$f4OcOxbt!2x4A!z@eRI zMZ2$CBjXCNuj{x~a&65qXu`Z;!I#90TxoUvV|O8#u$+IRpHw#Eim=e7ZZFL;bw|%= zPFRzUJ^6$zk@#a-a;|GiB6Yts9K@GR20C4Rcw`uq$NIfhzQ}Q30|ee%@yK~mBbDlY zbclJ)V&gyG>Q7urL08H3OrZ){zvm8`il#%xQ1kQ(TIDq25&1!ho0)G5@8C|KJRtiL z13EE*>)9!cqKfq#5vmImhH$Tf05+h@;9A4CjpVT)6%i0h^7}LkN#lD+m5eh$h8O1C zC_+#zSZ-K$yQ3)-2#RHQ z4%<^2?+uEy({t?P*>_;lHGDzr&uf~Z-ae+Dbj$)+T=pF8qr>sQ3*Z9ffVf$;tRVz< zgTz%#%iC-%AMD?DZCyDd9IaW9gyUayP0sb_*F76EdNK)JFP78`7G9vEVqyI<-3=1j2QUZE6X6#eR`_M5|NEE_=8j z)-GsH5++$Dr@+?{74Sw0k!AFem6h=;sx}B_OJ*Gt(Ut}t1ffwVCx9`<+WmU@OJ#$z zv>VWcw)eQcc#Bhn#{i)U zrU|JDp$XOUu>rIJ+9X|@__>d3ZcWTVTBW0?ud>KN(-x<~92Yu}5;^dTNN=AAb#sC;b$#KU-gF98&7O- z&O*meOtq_zj+eGu{QB;R^U;L6=pQw7(cmpty+|_QK0)w&S;`r!uQmsufngJF6S?y|JbR(+o>}yRa7DNEHMDS@ckQWn92bK*xE0p7IsaJ$*X*+1GLhT(ZDU8m zb8IWt^cvJeKeu%xx!_C^`$Gmm(V<;ri#7ozO5ZX%6;K1>EqcbKC)G>9CO{Qf8l)*# zBmTh4Ld?U-T>TjK@N`;L;dmYJz%~3ijQ)A*4FbPB-9k<1m$-BC*d*2+*)wr4z%hX} zn}W!*O5{|Bn(|yc#O<^p0EwHXJizHBcSlJ~7hS&gkEN^sPgj3VL&|FC;k7$b-!AYobQ!M$DCmCuauB(slEYho>l20rIJFfb@u!$D>O3t|Fm<&Yk4v zwLK&&r6;7&`XCf58h*}44hzG3Rf$C+Y1JOJ>L64Mn=A6-e;*BAhJ|DB$!6n_k^Kq4 z1~#eim?f?8d?Lk99rT490yX;XD-~KYJxS1|ZE9qt2-Y9MN~0VXm|w9?N{( zR0P|Kqat?e5cMwPygoK7%R1#0EV3_9we=RPf(SX+h(Jux3LL=ob>IF>*CFK*Y;uvp z#QG9v&Lw*A=}SM-aS$LHg@+F%6Ypzu;71k4hB3=ugf$4@^qJ_gpeNvxU>Kk>V0P0d ztE?d%P+uno7_r$FSfNmNkeE0h1R^|}xj;FfoWMHl-LZZ57jO#F@j^(B6$^%E9E)?J zCd4ic25Dw~II6V6jDej`n&f$)%eb=TH!m#4GZkyGTA{$7DbkQiCFXf+e%AaHBo2-z zs6ul}bFLs2MB55gJtan3W{*ufU(#H(+89MUu{Cl-cB*Gf6f3T}tyKsRt}?G#GRk28 zRBt{t8?kEIOek-<{$j{c@b+u4V3r$IPGz9%TFjJt_?znn^63Qyz2TwZjB!JZ%HTI` zQtC?cY1+ooL0!OFl#S)a3QeKTNo>wkV8P97_Ef*joS-78z87T&$_CR0)dtswa0h&c z6iDbd5j8MFN|`F-z{L!?ID?H2pQ=isvFSWL)x4f8fO?87tQ>y4uFbfgiS+(eM0#Pm zY=d!8z1tKi4DVb*I-rir{Gl*c*q9^ie;{2xY4;7@iW}na5BtaC=MBjXZV*a^m{qu7wSy0*MKOd^c zFg^z`K0j18duJPM$`J%j4v_q0q>EyCp{m{UpSq&k0$uj#l4TC= z5NaIi7fOQPG@WIW22Tf@mijQ8nvF$cLlN)KA`${LM5Whzk$H9g$ z3Ti4heyP-^8=D$~oKI0rkpW~tgZ11&AcBp7;Y0DjJ0V9Ug9uysto1Ml;3&dp znhgx=(_eELrgn0GQ!dGtX!5juVjC`MpdNn;j+>Gx(U+i1d_g*fkZDKp4eXbs?lk5FK^$-AB=VXG%DpIB^ zeay9PIY)Ew;bXn(qZTo0*)JYOTJb&WS zkMtpFoo?TG+BwuLRvmxk8+&{|CYdLv2Yks;KFTXEBVHera*YTjo$EybML&?+6c)>c z`A!^Qzq<7n?d!Rt6N~#oEDFeZ{JcT4VIx4B+y>$Vae*yx8HxKMG*-oUF=o@m=p<|> zw6`*T ztY&MU7xk_)c8x5q9IrRqNX2tyhyH8?taDdBNc~k2y z6l&5h(DfdA>jEUZb5ajWQ1ZRd?YFZ1Kk6xptlEiB>S~O;>csl$AFC>w9W!`iF7uD zl@Y5+p;MvOjaXmGizk!|9}T)toDSbg@s z)*78_LG2I0+4*TDFv>n-)&{Dy;uX)5xrZZr4PWpGIpYQn+{e1^^~dXf?!H2p^qDt% zl##D$=sEeJf+1tUy2i81yE}Z>qsOcE{nUkt%c-f{(}e*WFZJx4oA(oX&x>mQ`Z{OA zcqIDETbF8^ixEv4KDR>YShyjRzHJNCkszYMv*!{x^kZLJekFmtgPG&40O{>}DU`f^ zwb8=bhwwG6r=;`y%J(f4JnP$;rWdQ2S^#KpiaE+L`uQAn8g^`6oWa(u6i4-Q2r)VF zN`~i>a|JFBW-z8@jl=dh&iUtDOib?S1oLX1Lz!G#}aU7N2$e1RIv@D%6z~}ZD!(ZLX~{*uuiJZ z^ER9FwCwS~4*UlfcvExe3bnGu)#}*-)>&L9|J%#JC3!@++%J!9CJpt(TVcO&%j{NY zr3>tXnA_ zuV_rFXWOg47Nn$qk*mYT3&2F-_kX#W7%S>(tEjr2T8la7#kpF7=Fy-yHkKRW4ILmO zB}z$J8!|?lr`7h>j43t|lD+##diF#0P=$<)d^F1qK(Tw1JiGt(wx6G`?Qu7uM1{YM zX@RzDf@3^W^^jezqQ%YtujD5u_%yEzEN7RhIn5P(Sy()GPXM4uD6C@M?xOya3$Nw5 zL2$Sk`gf;l#th|1s12_aoF821(pGJLcGxE897DOx+xz)ZXKigf{>7eEmQ+E^rYj2QidgUi?%~!`un+}&S!B4>9xaqTpeR_(A2ujL!_avL73@W$ zgb|StGlNy{GSVN|NW7Vj&5)MAu~eTq^)zD`9F{`KjVUH;Nj;@?vVOw51r z^7vOW;Xh~GzW#@d+kb*pS%EVO|31QRlNF}l6ziXUH5@>O^?%K(a}-EWRsWor`mec%zgSNEt08{^xBqGm5c&MWtKzSzw*TC$|L0k@e^RP{AgMqM^*5IK z8#879W5)U4Ik(?iOst$hcNz9SsntJe)jyJP|H#e(uhVZ_6_}9w=Q9vsW&fRT1p58} zmw!HU0DXUcbFjZ(`Tc$dAQ21P1N4|-2HN5L@d|LA{f{ZTe>1fI&aDE^@_&`wV`luD z#fMhR@NaHa`2G!sep>hg2M@|`ZZ%r1m9<8g7!0d!t#cZY`H(!J(1*LU^wV}gIpEs z$h?j_>*P<4(aH%Sor1IOHfynQXL*VUr^6Gerep)*UT`zDIBy98#8#IJqUJr;AV=3D z#uvdb2cR3Hb9@FJP&AD#JBBz)LJ|`zs31jNhxc=v?yj0`8(c9R`YVHq{bRxo!fLn) z4LRjqM228%B6Z&fzeliAI z($4%>6PR6P4SbC(+kaqokwtoNazWzuMEAZ8#MhK;pMpSd{Hv0TET+9t>>h>#JdcM^}d5|AsXNJrQ z1?3IuH0y=XMnButVF}^g9d0ylgVcm)S1F*sx^Ug|?eX|) z{upX9+f}1pp)x7G-MikC8(}=+TCykNr7U8r0KlqMk%-u0+Xz>Vx~3rB-~uI4_7oxV z@}WFYu}bf>NGo^x3u3ZgiUEo+7wsG5eg6yuUiLSF86y+bHusA=LE*NXebb09H@>3u zn^)1thMV@98D^K({Kb|q=dDXNZv+N0eENbOqMj||bNuhUlYu<VtjHe$s2epcAhB^zDzAxIV8poRiocUmir6Qj(xqZ6i3#w)_PHg%6&|% zQF8Kc@gbNhABY+7sEYWqUH{URNA0$5St>dObpz#pV9Zk$gh17>@OCPp#8mp#llCKj zn3Dg}eK8vL8bs4naXCj3$pSiQDzuWHJwrC0k12YbfeM{sZZK@IoP;DL^{&KV)ephN zFmmdv58t!I;`QnBzC@cqj@K5bL-&oqGogpNquUr@i0;`8F@9|*5^WeF{@lSArhX#v zO}MJ;>-R8ahcA2I7|@uDi%`l|G=i1S{71}aAgP6N$ONQfL(Gm+s&-5D6)bX9#>-eY7qLJr z!7LpS-3c&v%kgOLY55&}?6LD6_&_A?y`c3WgA5upkb%~nCv%~3SlW+X2d)SrZh1P- zp%B$+;kJn+nFf?>LL&b>JOs0JO z8TZGsSw?V%9vdk(2-WwTkFQRMAi@=t@HfE^^vq%oxh{+&z+fSW3=JTf+9S zm9&l!tP;f+s2s_<0Fl9R8YfDHB14r5_VaL>F7x!sW4dhyGg@d-FMv-jX&huyo^Yw{p+{nBb-lc?zG zHx&W#>j^e)z?}>{ zA7GBjoD9IEXDpg@2T`p9dS_9SpB4ntdwM9C*o{a4gF#)bM?TFR7cjek&rS&M`h%AZ zU^$MfS^nsD$bxg9wS=jc|DeHQ6QkXS+r1ekk+P4Wv)1LLvm!_|VF_voD(o_&j8R)# z=h35JPHS>H(;Wu<8t76BrbFxV=5%K=>*&Tk68!ggW|okP!v(zFq-_*eIL;- z!h}%st-6VO^|eL)N&_IKyr>Q`FMP9 z(F9Syi0P2}j19#Wo%KlUiu^IeGzRAsX-|ah@DsvO^PEG{{u^mT^IUSi3Ql0z8tPt- z8r8%+_jDLbafq|lzP*`U%zSjehpJx_%dk6B!DrhZCeY#3v+{#gn$1Bf%C7X;?-RA` zk0cgH*VYa5XscWHj4dH6WgWB+8Rb8p28FHZe$(}$~D=ift! za}DV`zk8Dk?d7V~2{QMtze7k~^PEHEU^0vc)Ogx zCohq!WKWO+Em|LTA9iLO)id_Ov^AJ5N2(q?Ij#f6s>W~~f0^S2vzvYUk*n6;b{)sQ z&)EttjaSVQsj%f*m{GATb?b?jfNa^C?FdLYFJB9<)&D_Hd>^pZ-T&;cP)@!pePD|| z|Cp)`-~CQ?L2KPkGTw19aOr_t>W1^C_S$U6grV*jnbLt)@BV~k_plcikqUmxw|jHX z-F>{Y)qwVZlfa#&PsqnT;+WE|MEW^ur@72{Zmi9yShR9(FLX22q{X(M_|?EJ?dv<_ zlo&7WzXvo-EWe}Ee?$-e3Tgfo%KsVK|5-~X{2!DFt)hwPKixF{T1&?U3_$*aJYnYe z{~%A8fw3~}@6ec$i2=A^WMuxkJozK^`CBaXmwKIlwdUXD$seu$8wvPd+V;=r?*9b| z$OtTBW43SoK(`Gisz`L&0E;vHW3hr|D%ZvWW>{w==$FWu&U8|1V6?z8g$ zSCIb)sruI-|1XH^znDJ`Cg5oLZ{IR2C(GZW{84q--^}0J`Jc?6M6+vc^HQKgt@^o{ z3cW-fiA2Ko0Ag><_bR|(LWeX@B}zY7}?m%mci@PUoRQwL;{0YoM4T#7n<4zn#(M zUVj1JIoIODVW6=LzhN+%%{$52xln$rh$+AI@~AXZh#6Dx{D6q$zNt&d4T~r|2?}@D z227d`6lh0eif6CM`fkT_QEv(s%u(Az266Fz?fM4Vair-QxKlOZ#?LCdcFF}seq*5T zBX1YM!)Bz0g;Txwb9lfX+#hWWGcnDkG>N0g1J~EXJcJ=xR89u$k%@W6s@JKxOSNfhdR)cHb+TFs_j8r{2K%ogMRwA2 zO0{C^<>A3*3(?_>g@NZb+|+h3e4(K=2YQFRY&GUIF45E)JN?T1*{np*b{9& zcTIQpX(}oL-1+xM?Ou1|0sKsEqjl1Bf%A`u4%b4FhU4mp*+$7w*9YWS~ z!X8jg-Ik53YZUB#`sQw{?=vzR79@xc0Ph5s_j1(@p>=asITd`I4CDSmWQ)r=cPm+V2pY!1G5*7GL^M2G!kZ4@6pxf&@}+}^i9{L6@# z6cqwBHkTH~46HpiLaaZq>tWy>QZOj7G1&>D6D;u(N{P@3(}j;{hQJB${W30N>3Kv4 zuTCVpj;5|L*2CX#MV+K}kM(A?bNEq(YKQ$P4N`i4iiDy?DC+`28uWwm1(5Z_Zp{7` zCUx?&;fKd(>pUwRCZuo?$nq8zHk;i%Zvnd>C^DvVB;f;_6vHL{BR^S?(j*NLO}u(` z@+5}Rl7h6I52x}vNKLw2a}TlwzCp1Vju&kChJIQ9L~sDzEiyH&IMyTG_^XVeN?NNqVN-vMi7|Z$fv*5xCA37#7jC5iLZIS<{#o#INyv- zf+?3^aEVZA!Yby$j4iUZv?9>YZ7S(Z-+UgW;8ilTgDT+rhyc4`jqSFZp0m;Cl+pdl z#^wL4tAm(D?lTF&)m?}uni3dy-GO;=HllS@ z@szgd2ynxg7v$s?OI^u8Q)1(qL9`%z+Ot- z;WfUvv6vC zu*s$`!`Pf!nnPmCIa;f^!NuTAw4!&d85tWDAD+Ik{}Fy;#K47o{!B8>1M!E1WpT>x z63^^#Uk!Kne(N1tj;(Zbxbxg3tH$iI*J00^%hyTz;*m})9{U)Dg4^`1^AX$ehSx!T zr>iX1=K%-p4Uaw&?lD$3RV?1&yo~KRje_b08s0u2?Z@Ap;hMzXn5n9Rodcx(evCI@ zV#M>F-;3%R(gJBei%G^`f-We3E9)J>F(Ev_&Mk7tGh{+`pyOsAL9g#~vFz=<{{ z&cZy1Q5Yoc?9p32e+^ffv>+>_!`vZDQ4%}l18>4jf_B+g#e^szZf zEev95n>M6>UD~`SwbG^2Sd;p!$3W|TgQDn}YErK-k=8>Xd!`zV zBQ`Ja7v>LVQy0K8D|SSC0${>Aaz20u9s*dT2+ku^I?tZnugh#16*vg6EUDZ!w9(I* z)GW_O4iDSVHSvlNnfk;k;)?~kS0#ioD&mwxiy;x7mgblwmC$691061jv;ef3v77q` z^hftGfAu3`@vM=;gb3z&MUsX6cDNA>&74kVUwE<|nHF&_qg)59yZtd`8UG1FzK|d- zjoYAZJ=bv`tujkh7ljeLWl65p%pbhpBMr{Zrgf7UNhzO$0~eso1)r^WbjVqirN@p< z^+q`~g$4~;eKEoVJP^qH%_zcDRWBRf&x9}Ink?*@5B?%;UKJE6?zFu1F=sJYra-KB z3>OVbPu7h1-0*9A!8&D5LDLfmVpjOLY@Oi3xOCfZTW0j{3o^~eYRKT1M~;+A$$G+ai*~)4tTxbliGY6UHUHesFMtubcpg0a`*WwaHKg)2eLbBxG0ub5dNwA4U z2k@Z{vli#17iKEcx1NZnml9MaoXENNnS$$@E}bN7C74Nd&<4L;euZt+FLNsSSeEn3 z;AQ^%B(qfMC{3C&(n9?u8!dU_Ee7jkAupq9ag7B8wj1WJj0!n`#kK0^1& zP@P2AS}z*=3Uto&AWe~LrbI{zz9a{f-V0V+Rs#$9Qba>AXek>(V}?vq`?XA#rYs#P zL;JD9$vKb8BeW;wRpxZyDW}APtH1!A@a&d31T2PBJv>O z8DG|nPgSN7t*>E~8Ssw~Kf9Vfn!w0Hgn^KOUVGVkg?bHp?Sra-mV;m;(q8VnBmIb$ zca~;`_*sZOie~c5sTfQIB-YEhgR?`p!?5Gps~CvEg$H5`wzc>rv&5uLqceyyjzr_l zuQ1UP4oGSSe?nubD&Ok}S2p4{9d)qW=&{(RKws|89xjajpi$GRLSylbM4}a}c}FqE z%;LtsoYg+Jb=jfxO)-h)^ynjk1*HQTiTUxbn07vy3sCCkD^;6)Y&3gO-hN` z(?MFO(QI3p+Ll#Ah64Y1*mqsHo!m3ffw;y;>PxF0&#sqr^)GF)#-9QHax4w@;3!^9 zIv+1UHaIrqIv_d}yo^EV!L%V+@O@0%5qFG1E|DsOYp75gKZI1RVN>&zf6UV}GC{)# zJ>5kZ3|q#HJL@ggz)hO6SmIPzd=1=QoH=tmZ+w{Fqf}~Oi8<$9K!bYZFSsfF5ef?}c5ji@AE ze1kVvWaz6mq2`*fjt}cv@VFFh_8>X)JePU%4<r_MkoH@ohxlK3FeFN#@+ z4o4zP2W?AC6r*kfPuQpGf_V8!VyHU42S956$C6P)d_)=Le_A!DCN(!1TgMM)O!|dU z>9J9%@lzL)S2rHYGSpfTOhI1!qXfH=@(SmzE#)aYYk{zwxl>?oHmY#^WGvw5oXeKy z`U*#*8N76L1mR03>F(>>4?f+RefId*w>kq^;-$#D^Axq$DJ!U02f!+y(V+9&UcwD zIOq#`jABf*57%o9ms+)(APk6sH|0#AVC)GuAmd|Xwci-HEHtKb-x!CGd$=>(9jMe7 zUAP@zb3_L6B5jn|UvY+#X}bjL#ypd$qS~TcI;J{g^L!hih>FXr8BT!Sj}VIuJ^)QY zwzAJSDpBFo1AXWQ+c1Z!d+z*Eh(I9O2qM(&!)>S19yj}^+F~6F{ZK`aRj@d5a01n0 zf~^wGpjgXN4<4E?>$3ooYH=l_gfjOwoH^gp00bK!HfX$#T|fsEPT)&UEkZ~n z6jfsjpOCr=l~Jl zQkH$nOor6(mBT|vSMLq;I=@LCv#8Ulu`6-g5^7{FCZ9;(n53JIJs|B2-hGp2En%j_MH~B9*47$_YW9e6sF zCPWLEPNSDxf`Hl(HML~Yt3gigXDG6`O@y{3G>P7dZ^0gmHEdZ4pPcAEhHCT++fpSu z+DSS1cWK40?!MB=9aOP78dkT8H`7k0iQkgo(eNU;{5)y88JLWS$jMnW5Me00BMG3c zG;!9*b}k^sphP74jLhGq5kwF?M%x*>qY6L7DuE=2@-^-QGO6HK@qeyzNFhn1ejP>m z^HDNOBRE4N*l2V~aoiBN-*%vmK$x@=Qf&KZc^fLL(*BVkMV7qjZ1@iM1e*O8_khcx zuSKTb!dAk#dKCM7H2&GIaAmH9nwe{Pk&`zriF>M*R36(zIzmy;P@c&T>utk}-%U*$ zM@u#gdaG*an5dXVA7G=s=c4b5sN@N)9)(PQD5l`Z6^%M$)MUbcFoGNve(_S; zoN05UZHuL96VOOy)xw_9k_|tvdTLCxr@IhSm{!IULH5-b7e=&ot_k8%gG7@bB21E< z`ET?(Wiiq<+?DLezfFo!9xgV|bErz+*DXM7x@Q+}cj%Z_wW|S+cqh0kKLdb>AWyo% z<8|+yP8)ebMoK{)9Kq?)Pb|yiji()drGx1&t2eWxJKW9^(ajcydW)!71TKnB$z<~W zW)X!lF2(Lmr6riP11 z%6jX?upOyUT`#u+E&8CD&^Ki5<@74bN%n~MF`@T z-cnN0Qwgfq)=GMleQyNYrfuZ2@*b^PYIEohZz&6UEj{nBVjf($ zN>==Ou$gi)T-Ey>h!iopTDa7=@X;U6TK1z0t3`S6x3zYK-ExZdV(QBq4-1$wbe{K{ z?5Z9wdv~**m?CXgsGFS0fkgGjTDRRM!?R->9OdohjD=6uF5qiBS)I#{phl#jRZ3rb zTSX8635tsK4j+E;48Ju!omj;(r-$m&fYrzsTCGGEkio{=Xt-oL{UQlDieHBwl~)1Q zjA^|3Rj~6e;PbRJC+xovJ$t3(daC9o@GPfo4-uiEaGaZZY@;)`%zZA8fh>s$SfVoR zXfpO{#;*AG-yS=784%^OOaZw&yupjR5iN-=N}sPuE*t2V(Zd}K-D{8E#MU>{*M!`o z#n!Xd(!1S}1xF%lo?lOiA78{e&*{TTy{Q{V>ijNF1%$Z!+&XO zlP@U$97pvMQIwVYwyp$k1}K87PlOk8q{A4wcU^c_4Mu3-TBrUPa!xN#Ok!CgUZT>X zQ9i>anIP{IJkNYKf`AEi&u-)C(fZovemLSyIRJx!LveX>%^arNnX8;4$8KXqnufq{}72m zP@&qx=vS&dx&r_zgvr~`5(mr{yA#);UA)AK-B(k;*Q64k(DtCgueEs8b@?L@@hcUhO*dX*FU*oPE4~y^#kyg^Y_rS0^79z6Alv zeAd|X(!{A}B@tqBpVaQDzm?;1QvV|JZ34-BXok>89{zhYcR5vKJYc2dmF*A9*t_`0x28KaREPRIGHAi8!(X0@gf?d<+gqD z#fHYLc}z_!6;?lQWzs!y;IrTD_0j}g(e^Vadr8{2zdyo^zY!^aj}-suz<&$%{jhgpIq|Itb)!WuFjjGgc<`%(?_>Q>1_`LX~!4oi#EFxGO4eQUqRM;yha;$&tG1C zj(R=6q*BKKd3{%K`zANf*#T{F)P1+e(0oG2B*y6~iC}$uhVf4PKGlh%n)6RTM#@q4 z`5+Itot`fiA~*PONk3~7UEr&$Hl0mRc|Gk~F$D^LNl4i4$$jCd;{o%$EGVdenQF&= z!8m<#K2>R~cvfgveSs!U!*^)+c-~0v!EF1Pe~KKkY4Y*_8z!TPlEGx3^++e?X@A~% zQJAmHD`K$f{kR~BIX7$No_xnkS{!8VBc-y<;6`$h;EbChb0OA@KOV zW3E%(Gp*=h^?Z`tcIp{OrKz-Aw3I_Iwi@nq1{;@N!Aruy`#a&J1nsZNstk?6>m53ewSQkbWZe5FsOB&B?$r)Y3 zf#j0s5_)?pR?XBwPz_#bc0x8}EjLUk^YpE$%SP8$a7Ocahv?ivm)C~M$mBDDzVEc` zP)}Fp;={W^4($AlNrRzx)0a10_TH_qx096Ck+59`x)zjNpFLz*yEN>WQVf#QUIGap zJ38~MH>*=n(OM(ZvbY?oAoJ4Vwg+ZH;Mb8`f;kin(Bthne*Orgb2#gFw-sok(oWNA zq9TY_#zFW4=_SnmWx*l;J5>WB2KMtpSY}BfS7g-4dV|++uPC==ex`W6I0?F3oGJy>6g}zvVYZ}{CCp}Ziz#=Zzp99wIMukmE@%sFV{-Oo z+_(>#T!O}gFDJ-PCk^JvLzuZ0b@+RX%9ECI08_UR=r17 zD86js$6*Vk8)l-TCu@I?2&j4?bpp}(7e*r7J4z@>K9tU^B@*1gQKCTWoX9h0XFqIY z&m9b436~)5#Wx&ww81mMldiC%Z-D96pH;V>x1eaJI9yXlNfx;w#_VF~CJf`1WSa#K zgH_V(1Dm2TO{0s%?5=IKg&Lxxfpfi8|_@=Y15ZZ-se5gFd$ zE>{>^RRNnn7L6Q9N>vBG?T!e!6j1QuoueFovW5zaxi!pM9x!X^ttQ}s*Rm1^Ge|aS485sn9_2fPJ$DD1(N$wqALa8R64}=TjD6qs#^kly%bGx7^03htwHgewVmQf7 z*n9Q)cXVCmmC+sMpEw#yzHs$_UsxHQ#6H!g?*i?`fZf%RHB@PU8wiXHOyPmQhFhkM z0GO8ozIOYzU+2LUCjeC~0_@J_Eu5ltNm3&6)xug8Kg6k+lck{RH^AZaVq1Jr$Xwm6 zU|YznOkWtV+%25l$o!%mr(y!;aqL)@i>EKe8kc5KEZ&{zvBO}e{T zIE!MEFhM#ix#~#YYhB~f=2+Ey%!?>bieqV2CE&($DgS*;u6-8864UoAGRGBJHT}W`xXuYmSgjHCJk#<=S*zS@k3Uz5 zMVbVE(o9{f#|Xy32Og+~NRR=$k(2@kBj`n_5YP%W^fDw074S2idDS-5=#EdbQ?zq| z>&5<6(WR*N$SQ$x{!T7y&^iF3_>n}-!8$3Pw-IK?<7ifiSl}+}&Lh?7W6f}zon>re zh4@=QGwVPDJe3BJdE8v!peb5mOg4mI5zD~QE`BeVq^Q=1Q3C^3%n+TfxX1WLj^XP$Y6&?KWVWwUNq?5kl8Ue3SxCr{=orGo!r1GJ5RC#dh^3 z8`N4wq7-74D7x!!Zr;Xt;2COPJtI&^;RU38Fh@2sq~AKAMYxmL&c-|!TJbYcL0R)2 z`)Ij7)5!(RW@ruq%T&&+n?p>7*OXIE3N85{weJ%WDRmw(`kZ8;Cll2%fpZG&_Jf7o zI}!Fd8Q!k3uEIRkGwi&aQGem2Jm=o^%KCO*5IlzV(Y#j5e z;P1h`t)98N;@L>e3?EUx$2b{0TFNM;61v?T3Zj;^8O@DHNhrKgU_4@dch!lRXD?Tk z)1RBO+cDq+8K}QLxPEab9<;|Xt)4pgfJ)LQasHW=o&DW_NSZmlj#UU}NiG8N#u*0R zN|oup=CHrc<S z>wENT$i@^mZDer6ycgP?LT+9}kDFTi{gU(}-k1-E17*&5uHE(DKh}PtuKpzH^MohZ zqwenjW7w0=Zl5=qBt5@E4SP7#BLu$rUdZ!4$Jx}?@$U9{Yi3iFP3vBWwcX#S*yiZo zYr&U5zLe!q4}#tdqFtP5#@0Y3QllCd>kG-{&^lrJ#y|zGBU$24!w1!ImT~IL!%Q{- z3-e55!9@YnPvG`QS8w)cfaST+$1h(CbosQwcJhNgy$kRH3!zX*8ytTAHvE%+fD)}v z-Y4;xGM~BmV`ELvVuztwmH1(isVh4SVUP#i}y!LI>zg)!jG`YP)lWKn(?-1UP9WPqEnzw2<@ z^i6l$H*P3SNLQ5ZU03jc-36$-11+gITH(8|(!(Hm;SB8nCc&9|h+g}m5NxRdM!egI z*!tFKwrHDo3Mm0jXr;$kWO3ZG;wM8v`aK>Jw%S(R`Svc<@=Y9-`dh0SwpCvlTr5V5 z%bq*3+!bJ)oU2Jp>*v1=8p)S+^OGw}HARrit1}>pH$-UqwK_R8mY#neTYabuUUzd$ z8Q72-Xe(Gcl5uQQUG^7&BKS@mYwrTvFyHWAM8jQ1wBiK0#O>`Nen-=vn;>w=-;p}f zBXxjB^GRxX@H*0sV0~JTL@TCk;`F{0P17bgs@(ZQ>mkDCwv^dil3Q&A?h(4XtVZLv zv9aBsnb7dwkDn#8^!e>H-#Q>Th?PyNv;pW+2MPLrHW_~j3dBInQ^vFCtrK$7?Az7{glQr4eR9R%q$+Ai>ZLVlj^9LsU^+t|~iG(q?Ak4t*%JqPl zL7R+*#PlNa_`#L^NIx*>M!-*2Y1Pw*O?7zsUX|^6F+QQ&iO!e74DhC@jrt(rf z2t)gT8j$d_W3+Ipt4mTo?b4kWyjuiXTGzj=HUQ6jw`i+TO;3{+S)qr!D1i1E5k|4? zL&Q1~)Mux7yv#Z|nS2WSc~RJ0 z&C?okQYbgQk?^#Tg)lee6_3lE^ik@nZ~HhsEqEsX?OSNr!Dp>!(5P8*s+uw$u3_j$>FzNP z^+!IYX@v2t)Nq*S=g#F+XII1R?vrxit`Qf>GpD!+#wM3lPD`N!R%5ykL8cSOMjlIz zUt_oPlFJfACMq6^)$?60#6}JSGNT|@w;)rdp^-H+rR%h_d~Wrx9W{So`@yTvpyr}e zNSGZ9oA!XJ>9#1PQkJsIs@Z(2*#PbdnGDUe5E-xg*EX>0QR55L?31Y6rLTD45Um!2 zJZ$<`4sN_*c+WeWq87hcZQn zz&K(lF$^+I*x{3H-ms19?%n6_o6krN)kSB1*E?fO9TgklU(J+h({t$p}RfqgADU`2LK*1zSzvi!t`$a()2q`W$A z#bYJ;;nwh5fGh{=B+l(1R#Z9l1l{O9ieHdz$bgT*+VJB?ZNh}hz|iFH%C3m^jcNOp zf<-dt8x^}Db#8vr**(Q?VISnA->Z&XDQ?EnXT9B^%bv+tC*Ttc4yEtpSVsmbw5vmWBhK4APAUUbT^r3bn~1?f>|-VS7Mo8;T7oispN{wIu8Vck zLEnxmZlQ}j(+w1kky87y*g<_TfO>{F?@T(I504uo5ai^z;6#DF@m8^6%39_WIWG-t zU@R*Q8X|X)!DKD^?&akCF2^~RlN&$lP#w0N-t&3-@CWcu#{Eh8ys{sT2ye4vQ|F0h zty@&LC5v2FYhNFgJ3RWLF)K;)t;(lp!UN8;i4$ta?>a$I^_y*aeI7lL521Ls=v*h% zH;W!U2$+_;y9njIS@kB?d-M6pfOg(fRC_W+{EnS)@@A6Jq%Mrwz}PQaQTRW<-TmB* z+xP4#WLq|70DnRZ-B|TK13VE(+?CJ#9cKox{3Fo(&!HmG|38I_e&wG322KNmC;yNs z_V?VXUk3jrRP@hg{fV^y?}Ump3ICLS05JbofwF&zKmdb79RI2%1}rM}D%JoLc3=bQ zvHzFI!yn=fufZRnyaO;n>-Et8RoCIw5&l`#0hrVE=hFT=pq~lw7o7jkYGkRML-xo% zAQTb)(UX6zM#c_nsl6#GU-*Up-e?uh>Rn&Zfy(}9<=qNG6?xyHG_~ZWb#?4~Kv`O( z^PmF7ir_l!L$7cpeOdm5toFWRaHwzPU6-+_F-6^C@wy8gHF0N&Y z+b2S&##6FHjkfm^#D)2^67g>Vb;Pp7rV|)siaF+uVn`&OP~w|BHE@!4L&iMg7VABqW{h+^zx z3-Y$JB%{V!YO!4+`qh1-aWM0DEH#>K_hbZKqWfLXH?Fp(z1(fj2^hSPE~!g|Ts!P> zZUvUvG*i_ZV%q2;QIeG=Zl`mpG0B6A#Lv{_doKW6Fub8>+QlOVG zz+59q5MBp6r;QzdQ3fizTWKxrDG%4H?IfT-Pb!&3;Wxd!6A{nrW6Ahl#sCJbHW zLs&n0*>25Sef-ly_cP}1T7`Tn`WnU>>k5O1HlJ7T=+|;FqSVbvnGu)N+hnT^ce7*- zRb6l>_Wn5ZRS=W+q0t%G{Sddl3r_so1ul|NabN4gvz+>+$>2g`o$R6okKy@Q+C!F7rv;8g@rrlVn`YO<-k|RPK7d$okB(BiI(r$nzrT$ zLybPGpj+3a0|7nJi;m|)(FBl*_C-a}^Dv^RVB>y;0?Na$=Q@e@C9dMZbd!@a47Qk> zDo6rGj9|@KjrpfP%k>h15tCzJUUM;Gsk=JaFjhdxILi>%(L}F;$Sk~*zdWmAU>{WV z3sLcQAk_z-I@K9OxXZ%M3>Cs3{4?(0GOrqi@B#dzUtobB>8OR3dVEvDwVV+_?9LB+Fq+@q zFGd|Ix~7&*(C`RjR&oVzOxXBLHq^u| z4lHIay-f|O6R+vB@p_}4aA}V;jeaHEp_%DIX92NGW1b4$>fI>61e9XjVeZucJq5kr z9UnSM5;^5YA8%IPUA?qQUt@e`E{n1q0O!Uqv}wh4_g{POW)VR+P3%n&=zUUKJq zv-kOMx~b*{DSO=64$5hA-yT-KbNIuctC2lH`375@Js!&ZW6*eg<{@vP8*A6LjGY-4 z1ZD&HWz!A#aFpH_dcRImr7T=xA6zUmt#V@`>@uX0Ogste&{M-(b*x*WXD$h$yAg9& ze>XO(vr~ZRg*VY4jtyY3wqhm!2NzjuuMlY>tt)dw@iyfS=fP`q6+f+Vo9c+{w!u>@DqeXPP}M zuX0vt^TG&J#o7)8f<=Wi^d+RJlN-TWh)K1c0Nk)-8s{awQHdkC>R> z3F6;z;&T!$vrr4PuD(7rY_10)0eC5Rc#WWqt|80m(|Nh?TzI@-3o1R}v1Jgpj7UUd z;L*4aIrmvy7@uB5IUf}@pn^aX&E!Q}Ka;S$!5h)t{UV~5PohI8q^Lo-?+`bay??eb zvaBdG%3yE2aY75;GKI_-T}egPa`n(Z#_vDk$;Z(G1sE8mMv>7KcvMmI5e@5Vm1VU&rW}rnB23T_8 z2Izo_zur*I>y_=X`qP24rZFgtCb6{3;?Kh1 z%e{XuqA$c>=c+q@^Nu0ft+;{gn{CKoX?Gj392QrGdvKM|_|uOVP?_cxTp@@H9rSvz zRfkW?6gDZ%O$CK461gPfJPx>&kWTrV6+SKPp-WQJYf?|G-4-X1VhL|+3Gy9pdh=q% z?>-r5U!370>wO+B>{VFbS)>PF12YpjKf(?{T;?HthJJYds`0{hj(48%=3*HJkQe!J z!4QV)2I4Fg7A%`VkRT6c5o*!22CGJNB3-}@`k2eaD)Z@0>GQBw$TLDW{dhN1jbKE- z4SCf>C1?n=bP8UsQkDh-*@ol9F-+KY9Y`gUE+)#k@B9R>_d^9`uU4HxuaTP!_s;;i zeOQ_Fd8ePkDL)Ml&;9U%U@e{2twjq+P|-XA)|OT+#yblW4_49+^|-AyFF%}J_Y~UL zc~c#GFNfQ8-(1k1^RPP_1Xw{QgOI<|*QKw{q>VHz5{Xlu2(9@jXp>CJELe@UpsWTm zmKk`0UgC(Y_}QVzu$Cr%#{Vl)pf*~-6*YaRnHPPVQ$4YJ1qSAtdKmP}FmcED6UVp% z=vuo*9!BuT>{|W|*n5qSBNmY?W1`RCF&-T_0$dTSem9hhOeXYM9+1cIH3XUaDyS8K zMNH9fh3iXa8?5j6d};}@LW~LVn*nbHdyBophhr+U5=}uZzId36x?vpGk3YXTmZ~Ah znyKDGxpS^W@QRYC3*rDF}IFvbj@KJsEPT60^c9{Y_V#!z`= zWfIJ;YV>5+X3t|`7Beh1tnTgf$b)D`+P;98kCy$D{saZ5Y^qpS_*&PalVdX}HGjFVWac?DCE2|S8)xaQbQ_VC+EPi+*c zAA-8R2l0ILk?DX#pW=e~rE3d_$mhY~S+x-s^0<MK! z8E!(XZhT>Y--rGfnlc-WO%Z(6FVp~ts`3%QV?qoyz*gi#S${t|RwFTqvcXnpxJFD2 z^~JAU$-6LdCw>arve{3WPc#p$A~y@XJtNUb*GRVB6GY>l<3#B%zWBEhpRb!-Xwm%L z$TauSw5q|wLR1*_$`KP#LInHCS6j&Ldtp}cn}xDY&eJc>KV*?FD#HbadaRpR5xpC} z^=v?#xikeN@Nq9_B{$KprRqAMfhtM$`>UDb+>{VzXf9Jy(_kva=>oTX zo7bb{I=wnXm4}~TRBX6gbNXqsds8Y0^UM^R0|Sd|ZzA3}Rh#z54mpbJacz2etC*)& zk+33Ih^ucRJ`VA;05xVZVR^y-^G|Msi9~Q-4VILlVzaAKarRQx;4J=+_#gx$3HoV={{fWdWAv@C6y(K&m`~L8i*AFo z_0z*yCtu<~P_^$8^t;?3<}6{sa`n?6P=D78LC7HTL*d z@Yz=3-m4t#a$LO}7M_dNeJU(0WHG1?P)qqLL9|r5)&KMP8J1*Vt3TlR`I1CjAp8nl zFiTLIbW$A-BCIvWrx0vl%cs!CXCJI^+Q&3gS(T3%!R878Mf+vn4out%g7^Nt8EudNpxoB&n zik92#^vp7mc$?ClPbx}z%mrDhvJxPZRhx1wkc^c_vlJG1)k^7hMPNcgWxaq3$*;q1{5J;crW)}t++qU=PTu={LzPa>Y1 z>tujSWtPS2qCTIev^02Y&Ure;;%aP!2um+0MltM0{ZOJz*`s_Sc!%!ALW z3mTqS`FB^R?bb@T+T6719{Wr5kzt5}bEnYS8V{Q5M=M;NU}ohp6`qiXAP=W#Y$%_T zamP1lEccA=Q=81i>z6hilWBJh21gD`i0vQmde)H2y`G{*d@{KAO%v(Aah-pLV8#9cf~6I-GB@}q%03%VYxi}S zKO}g8f>(b?@G>$3)p-A74PHhDM)rS+@G=8oMn*Diu=Za^{4Sz(~!OkT7 z2C21Cwr($L?gK|^Z*d%yaf=BFD>NnTQ^X#9&}b-S(vr&sJ98d^h$^V?>AK^EW#Eif zgt0r)M6vu{P2=~2YD=(sWwUl0{!JnbMR1sh=&R+0L`(kQ{yIyAhB;3y$T97nK67N0 z4R|LK(SW#P(xy?3Pw_VF=<)g1R6ZY`n#blHPPUbI3pn9tY*M>t1P9VhQcx@iLN4HC zdlOuw;`@YqBDET~x7+t`jV8kfCsXaBQXje%?0$UdAqk_vfc1>?Q0>?V>A?$2l_RCW zSJ{duZm;c$ps`cAaUiH_;l$jLl+5j*Bbk9Xb*sz@2gf$rZG z+Wa?O{2xQF|4?Z2mk0diIr}X+=D(mBuJLWgy-Sq>#jqg1-W%p2s^+pj6?b@ zX7Z~xO4*+L$yYdQuhoE^y1H==^uxpbJBlIY#O^7ZN#C?ak(= z>f^5+>6X74uq6){*Q1GdCY#iJlPCY~Zau}5-He?ZG^%s+jFhyaIvR9;FQ3L48KY?h zB{6H#`5QAYa$f`kEPyB_BCPPuiO@$c6H?B2ZF_M(Ug=m2Djw%DA~{$vJh&K*3`#dG zRs@O6KpF}wYyHOj1}qKU`cSv9holECr@)60iWVP&E}6~UbICg?_rh)w1oV1OfDXLBY9sW#dy%8CxO{iZ{18{wzWl5fAB-{!kkOU4tDuc9TRJ1*3Q>$trif|4$l})=!9v&Gb z5qIkz^fLf=y^;xRH}~81hg1&CwW@;U{9Drw10GtsM`zPfA=usk0s) z(SE$KOiiHgg?jH)-_L}WmD#~QgRoiS_jYuRoyrr1%@L7MG0f3Y7w$ci{gRDqj8Q6w&@A#fd$R3^FZD&7$8R*H#z>S1#EP}9v3MGj z-&981K*9QqT#*iGKvHqPt^JUe{ggd%W8y`7=`Hkb*V-QUlQ&Zsz5N^Qt>LR-a>s!9 z`nS8t&3+46-qO-AOpXuPGAyKDO{{$}O8biagsmTZ8$C$BDee!NIc~pKM<3@^q_OiZ zFt4xd=YGE+!YKg4 zWh!q-R;$nu@1CZ=_Uy&zA+fBqg%Mf_AzVI%fTB2IM5r7J_(BOyaGVZUZ-Hmcvs z?6dgC+>iba+d;F#Zrjj?EuSAJ7dtI#EKoz7c3RHwYU-l$)5inG+e;t@Kp|NZ-`W=^1 zEIuge!*v&XLi=pyabEzFB;1p;3m?MqR;cnz1+l(zmmM`#x~JI?SKir}uPw)~@+5i6CHc8B{jPY|E350s&Uq3Kd;l{Vq5)u!cBbGQj< z)9hBtRb)Rr6}^(nb#LNDB$J*4PK;Es4jlQWKK5xkrYS`gRjP>e>FtGrW|(9-Y;%dH zHpW9O#n(ODU}jirJ|4}GV5iuUI20ca3|oywtM=K_22|INlhpX7XG1EtDpg?z5q$n8wNw`qd{B!%B^Y1#WjuQ8)>hhc#az{G zI>}SPBPpjojm&hWmke1W16x`JAq9eVBKip165KH|+<5q{QmPDM+D@M4x*8nG9uX-C1s zLDvaxG+^h8Y}y~_20NH`(k|vKhD)wAwm|23D%%R?VG{IJU(JWllV)?@ruu23`~0I( z#!H9z+z)ePUMlv86|jkPpHtdeS?2-5=VP*bY_P@2hPG6Q<+S9hMX6kYsy66q?`dvs zk9Mc84I=_9(ehqjMtL!K@#cI9eeJAA`lEj0S{St{Y%M#9%hak&+jpiE4+LvU6n36I z>5nmK6LQ=9&p99Bi(r;i!leAe?glL!l5=iVQb3a@)JlCCyYR>}-AkSmj^1|XbRrXI*ax_!Yg+}bsp!^2r; zo2JZs4s26f&IFZ{A#+3@W zBt910=Mt#LSI%m##rV{L8J<4+{Y3sr=bYv#l9Gf&9pwR%euq|Rt(S{8Py3SdIV8Ya zB=Ff*n)K`bL?{fP)0~`yifT{xGVgwR`d(^MQB!i#vm!3Jw${G&2~tgCNkszfa4wG5 z(D3T<{(4$=a7$H#TsG(;ha1kowR&<&HMNozs< zvT3tp^F21P9p+ArPY*|i&}~F21}gpxAHaEXzQ#{dO`Y-LFxAEMLj>a59xA)(?NCc$ zq``#Xd)H;w1(;z7^e}u!2{SCNaQu((y}U}4l?#u0>W-==#mAd0akq5qws+{5=W$!U zw4~vCF4as~EtV4Kn+f4I`Y5@VK|hd3BF&Nq6pfu`)<|Hu?l+dt81!of6#I^+Zdd`8EgN@X%)`7@h2d{!NN<-6>M<N-UY1SPPwO*# z$%Qr`XOvC;h@hMoKrKg_F?RJ{Z}Pwy3B{$Dxoq;CzpydBRjry$_fehQxdEV<+PQ3F zM_;8do_K(O&v?|?+;b8g=fRvj@iRt>WYegW>#&JCTncVp6dqR^i;`6!QF?=4#Uq`N zIKA$iW*Djy_~IPV@7Jvk ztBg6{mX+}kWptVip;cQ-5mcUyhIOeEg|FlP6oPubzKw|)ek;P3?%;v)hJ5Wvjq&(q zenkqB1>HGev!ujNWBHQtLuadBY-l{91Jf(xF~5F&(A+&E@fI2k^k; z2&%HJ+l%oJKagkmCCD?XzkkaBetm@g?PKPjp$73kpayYEdqZ1VIYVOyb6wm2LK%Sc z4uL;#1rAnry1(EI%#3u50KjW~k3Y}`c6K@jR(8f$M#yiN1AvVVzy@Fg)(8@}*EKiQ z7qB!oHza&bB(}1&7ZkK|CRC?oV`8UcWnyJwc@^2_paU?o0Trf!CNR-4aIn6X1L9zy z;{g8rkD@@pGC06g=HHoNzojkzTRh@dzVq*R#6K^=|0Wc{!NE+�XqYppC3-taOa8 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 DkGFJ0 literal 0 HcmV?d00001 From e39ae40fad3e47412695ebff3a37daa1a40284fd Mon Sep 17 00:00:00 2001 From: Shreyas Srinivasan Date: Mon, 29 May 2023 16:47:28 +0530 Subject: [PATCH 7/7] Removed pdf --- .../aes-gcm-nodejs - Overview - SonarQube.pdf | Bin 143165 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 utilities/docs/aes-gcm-nodejs-sonarqube/aes-gcm-nodejs - Overview - SonarQube.pdf diff --git a/utilities/docs/aes-gcm-nodejs-sonarqube/aes-gcm-nodejs - Overview - SonarQube.pdf b/utilities/docs/aes-gcm-nodejs-sonarqube/aes-gcm-nodejs - Overview - SonarQube.pdf deleted file mode 100644 index 5c7835b71cf4c6d5324e67231bf9d1dc27f4f18e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143165 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�XqYppC3-taOa8 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 DkGFJ0