From 2b4c4cc5443c2a96b7d0c8fcba81f123b961a330 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 15:17:22 +0900 Subject: [PATCH 01/25] chore: gitignore, prettierc, tsconfing, package.json, cypress --- .gitignore | 2 + .prettierc.json | 5 + cypress.json | 3 + cypress/fixtures/example.json | 5 + cypress/plugins/index.js | 22 + cypress/support/commands.js | 25 + cypress/support/index.js | 20 + docs/README.md | 25 + package.json | 24 + tsconfig.json | 72 + yarn.lock | 2589 +++++++++++++++++++++++++++++++++ 11 files changed, 2792 insertions(+) create mode 100644 .prettierc.json create mode 100644 cypress.json create mode 100644 cypress/fixtures/example.json create mode 100644 cypress/plugins/index.js create mode 100644 cypress/support/commands.js create mode 100644 cypress/support/index.js create mode 100644 docs/README.md create mode 100644 package.json create mode 100644 tsconfig.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index a1066ba..b6b8e3a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ # Created by https://www.toptal.com/developers/gitignore/api/vscode,node,intellij # Edit at https://www.toptal.com/developers/gitignore?templates=vscode,node,intellij +.vscode/ + ### macOS ### # General .DS_Store diff --git a/.prettierc.json b/.prettierc.json new file mode 100644 index 0000000..0678f27 --- /dev/null +++ b/.prettierc.json @@ -0,0 +1,5 @@ +{ + "parser": "typescript", + "singleQuote": true, + "trailingComma": "all" +} diff --git a/cypress.json b/cypress.json new file mode 100644 index 0000000..f348ac0 --- /dev/null +++ b/cypress.json @@ -0,0 +1,3 @@ +{ + "baseUrl": "http://127.0.0.1:5500" +} diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json new file mode 100644 index 0000000..02e4254 --- /dev/null +++ b/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js new file mode 100644 index 0000000..59b2bab --- /dev/null +++ b/cypress/plugins/index.js @@ -0,0 +1,22 @@ +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** + +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) + +/** + * @type {Cypress.PluginConfig} + */ +// eslint-disable-next-line no-unused-vars +module.exports = (on, config) => { + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +} diff --git a/cypress/support/commands.js b/cypress/support/commands.js new file mode 100644 index 0000000..119ab03 --- /dev/null +++ b/cypress/support/commands.js @@ -0,0 +1,25 @@ +// *********************************************** +// This example commands.js shows you how to +// create various custom commands and overwrite +// existing commands. +// +// For more comprehensive examples of custom +// commands please read more here: +// https://on.cypress.io/custom-commands +// *********************************************** +// +// +// -- This is a parent command -- +// Cypress.Commands.add('login', (email, password) => { ... }) +// +// +// -- This is a child command -- +// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) +// +// +// -- This is a dual command -- +// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) +// +// +// -- This will overwrite an existing command -- +// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) diff --git a/cypress/support/index.js b/cypress/support/index.js new file mode 100644 index 0000000..d68db96 --- /dev/null +++ b/cypress/support/index.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/index.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..6437dd7 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,25 @@ +- [ ] cypress examples 둘러보기. + +## test case (BDD: Given, When, Then 구조를 정하자) + +**Given : 시나리오 진행에 필요한 값을 설정한다.** +**When : 시나리오를 진행하는데 필요한 조건을 명시한다.** +**Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시한다.** + +- [ ] 2개의 숫자에 대해 덧셈이 가능하다. +- [ ] 2개의 숫자에 대해 뺄셈이 가능하다. +- [ ] 2개의 숫자에 대해 곱셈이 가능하다. +- [ ] 2개의 숫자에 대해 나눗셈이 가능하다. +- [ ] AC(All Clear)버튼을 누르면 0으로 초기화 한다. +- [ ] 숫자는 한번에 최대 3자리 수까지 입력 가능하다. +- [ ] 계산 결과를 표현할 때 소수점 이하는 버림한다. + +## 기능 구현 + +- [ ] 2개의 숫자에 대해 덧셈이 가능하다. +- [ ] 2개의 숫자에 대해 뺄셈이 가능하다. +- [ ] 2개의 숫자에 대해 곱셈이 가능하다. +- [ ] 2개의 숫자에 대해 나눗셈이 가능하다. +- [ ] AC(All Clear)버튼을 누르면 0으로 초기화 한다. +- [ ] 숫자는 한번에 최대 3자리 수까지 입력 가능하다. +- [ ] 계산 결과를 표현할 때 소수점 이하는 버림한다. diff --git a/package.json b/package.json new file mode 100644 index 0000000..ad9a10f --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "javascript-calculator", + "version": "1.0.0", + "main": "index.js", + "repository": "https://github.com/hochan222/javascript-calculator.git", + "author": "hochan Lee ", + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "^4.26.0", + "@typescript-eslint/parser": "^4.26.0", + "cypress": "^7.4.0", + "eslint": "^7.27.0", + "eslint-config-airbnb-base": "^14.2.1", + "eslint-plugin-cypress": "^2.11.3", + "eslint-plugin-import": "^2.23.4", + "typescript": "^4.3.2" + }, + "scripts": { + "cypress:open": "./node_modules/.bin/cypress open", + "cypress:run": "./node_modules/.bin/cypress run", + "tsc": "tsc", + "lint": "eslint ." + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..2c6e0d1 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,72 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ + // "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "lib": ["dom","es6"], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + "types": ["cypress"], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..786a4a4 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,2589 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== + +"@babel/highlight@^7.10.4": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@cypress/listr-verbose-renderer@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" + integrity sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo= + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +"@cypress/request@^2.88.5": + version "2.88.5" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7" + integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +"@cypress/xvfb@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" + integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== + dependencies: + debug "^3.1.0" + lodash.once "^4.1.1" + +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz#a21117b19ee9be70c379ec1877537ef2e1c63301" + integrity sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ== + dependencies: + any-observable "^0.3.0" + +"@types/json-schema@^7.0.7": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/node@*": + version "15.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08" + integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA== + +"@types/node@^14.14.31": + version "14.17.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.1.tgz#5e07e0cb2ff793aa7a1b41deae76221e6166049f" + integrity sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw== + +"@types/sinonjs__fake-timers@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== + +"@types/sizzle@^2.3.2": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + +"@types/yauzl@^2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" + integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== + dependencies: + "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.26.0.tgz#12bbd6ebd5e7fabd32e48e1e60efa1f3554a3242" + integrity sha512-yA7IWp+5Qqf+TLbd8b35ySFOFzUfL7i+4If50EqvjT6w35X8Lv0eBHb6rATeWmucks37w+zV+tWnOXI9JlG6Eg== + dependencies: + "@typescript-eslint/experimental-utils" "4.26.0" + "@typescript-eslint/scope-manager" "4.26.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.21" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.26.0.tgz#ba7848b3f088659cdf71bce22454795fc55be99a" + integrity sha512-TH2FO2rdDm7AWfAVRB5RSlbUhWxGVuxPNzGT7W65zVfl8H/WeXTk1e69IrcEVsBslrQSTDKQSaJD89hwKrhdkw== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.26.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/typescript-estree" "4.26.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.0.tgz#31b6b732c9454f757b020dab9b6754112aa5eeaf" + integrity sha512-b4jekVJG9FfmjUfmM4VoOItQhPlnt6MPOBUL0AQbiTmm+SSpSdhHYlwayOm4IW9KLI/4/cRKtQCmDl1oE2OlPg== + dependencies: + "@typescript-eslint/scope-manager" "4.26.0" + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/typescript-estree" "4.26.0" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.0.tgz#60d1a71df162404e954b9d1c6343ff3bee496194" + integrity sha512-G6xB6mMo4xVxwMt5lEsNTz3x4qGDt0NSGmTBNBPJxNsrTXJSm21c6raeYroS2OwQsOyIXqKZv266L/Gln1BWqg== + dependencies: + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/visitor-keys" "4.26.0" + +"@typescript-eslint/types@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.0.tgz#7c6732c0414f0a69595f4f846ebe12616243d546" + integrity sha512-rADNgXl1kS/EKnDr3G+m7fB9yeJNnR9kF7xMiXL6mSIWpr3Wg5MhxyfEXy/IlYthsqwBqHOr22boFbf/u6O88A== + +"@typescript-eslint/typescript-estree@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.0.tgz#aea17a40e62dc31c63d5b1bbe9a75783f2ce7109" + integrity sha512-GHUgahPcm9GfBuy3TzdsizCcPjKOAauG9xkz9TR8kOdssz2Iz9jRCSQm6+aVFa23d5NcSpo1GdHGSQKe0tlcbg== + dependencies: + "@typescript-eslint/types" "4.26.0" + "@typescript-eslint/visitor-keys" "4.26.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.0.tgz#26d2583169222815be4dcd1da4fe5459bc3bcc23" + integrity sha512-cw4j8lH38V1ycGBbF+aFiLUls9Z0Bw8QschP3mkth50BbWzgFS33ISIgBzUMuQ2IdahoEv/rXstr8Zhlz4B1Zg== + dependencies: + "@typescript-eslint/types" "4.26.0" + eslint-visitor-keys "^2.0.0" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" + integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +blob-util@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" + integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +cachedir@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-more-types@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" + integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= + +ci-info@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= + dependencies: + restore-cursor "^1.0.1" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-table3@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + dependencies: + object-assign "^4.1.0" + string-width "^4.2.0" + optionalDependencies: + colors "^1.1.2" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cypress@^7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-7.4.0.tgz#679bfe75335b9a4873d44f0d989e9f0367f00665" + integrity sha512-+CmSoT5DS88e92YDfc6aDA3Zf3uCBRKVB92caWsjXMilz0tf6NpByFvIbLLVWXiYOwrhtWV0m/k93+rzodYwRQ== + dependencies: + "@cypress/listr-verbose-renderer" "^0.4.1" + "@cypress/request" "^2.88.5" + "@cypress/xvfb" "^1.2.4" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "^6.0.2" + "@types/sizzle" "^2.3.2" + arch "^2.2.0" + blob-util "^2.0.2" + bluebird "^3.7.2" + cachedir "^2.3.0" + chalk "^4.1.0" + check-more-types "^2.24.0" + cli-table3 "~0.6.0" + commander "^5.1.0" + common-tags "^1.8.0" + dayjs "^1.10.4" + debug "4.3.2" + eventemitter2 "^6.4.3" + execa "4.1.0" + executable "^4.1.1" + extract-zip "2.0.1" + fs-extra "^9.1.0" + getos "^3.2.1" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" + lazy-ass "^1.6.0" + listr "^0.14.3" + lodash "^4.17.21" + log-symbols "^4.0.0" + minimist "^1.2.5" + ospath "^1.2.2" + pretty-bytes "^5.6.0" + ramda "~0.27.1" + request-progress "^3.0.0" + supports-color "^8.1.1" + tmp "~0.2.1" + untildify "^4.0.0" + url "^0.11.0" + yauzl "^2.10.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +dayjs@^1.10.4: + version "1.10.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.5.tgz#5600df4548fc2453b3f163ebb2abbe965ccfb986" + integrity sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g== + +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-airbnb-base@^14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.2" + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" + integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== + dependencies: + debug "^3.2.7" + pkg-dir "^2.0.0" + +eslint-plugin-cypress@^2.11.3: + version "2.11.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.3.tgz#54ee4067aa8192aa62810cd35080eb577e191ab7" + integrity sha512-hOoAid+XNFtpvOzZSNWP5LDrQBEJwbZwjib4XJ1KcRYKjeVj0mAmPmucG4Egli4j/aruv+Ow/acacoloWWCl9Q== + dependencies: + globals "^11.12.0" + +eslint-plugin-import@^2.23.4: + version "2.23.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== + dependencies: + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" + has "^1.0.3" + is-core-module "^2.4.0" + minimatch "^3.0.4" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" + tsconfig-paths "^3.9.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.27.0: + version "7.27.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7" + integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eventemitter2@^6.4.3: + version "6.4.4" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b" + integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw== + +execa@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +executable@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +getos@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== + dependencies: + async "^3.2.0" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== + dependencies: + ini "2.0.0" + +globals@^11.12.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globals@^13.6.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + dependencies: + type-fest "^0.20.2" + +globby@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + +is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" + integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + dependencies: + ci-info "^3.1.1" + +is-core-module@^2.2.0, is-core-module@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-installed-globally@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5, is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +lazy-ass@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" + integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.once@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== + dependencies: + mime-db "1.47.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-inspect@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" + integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +object.values@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.2" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +ospath@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" + integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +ramda@~0.27.1: + version "0.27.1" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" + integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw== + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +request-progress@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" + integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4= + dependencies: + throttleit "^1.0.0" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.10.0, resolve@^1.13.1, resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^6.3.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +"semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.2.1, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw= + +tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typescript@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" + integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From a7106a8b8600ee52c1b847355a98818d10ee1cd4 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 15:20:12 +0900 Subject: [PATCH 02/25] =?UTF-8?q?docs:=20cypress=20examples=20=EB=91=98?= =?UTF-8?q?=EB=9F=AC=EB=B3=B4=EA=B8=B0=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 0 docs/README.md | 12 +++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 cypress/integration/counter.spec.js diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js new file mode 100644 index 0000000..e69de29 diff --git a/docs/README.md b/docs/README.md index 6437dd7..d8c3fe6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,17 @@ -- [ ] cypress examples 둘러보기. +## 기본 환경 세팅 +- [x] gitignore +- [x] prettier +- [x] eslint +- [x] typescript +- [x] cypress + - [x] tsconfig + - [x] cypress.json +- [x] package.json ## test case (BDD: Given, When, Then 구조를 정하자) +- [x] cypress examples 둘러보기. + **Given : 시나리오 진행에 필요한 값을 설정한다.** **When : 시나리오를 진행하는데 필요한 조건을 명시한다.** **Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시한다.** From 22e4a326b04895b954b93ea9e765b0c472fe55c2 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 15:22:52 +0900 Subject: [PATCH 03/25] chore: config typescript setting --- src/css/index.css | 87 --------------------------------- src/images/calculator_icon.png | Bin 54813 -> 0 bytes src/images/calculator_ui.png | Bin 51528 -> 0 bytes src/js/index.js | 0 src/js/index.ts | 1 + tsconfig.json | 10 +++- 6 files changed, 9 insertions(+), 89 deletions(-) delete mode 100644 src/css/index.css delete mode 100644 src/images/calculator_icon.png delete mode 100644 src/images/calculator_ui.png delete mode 100644 src/js/index.js create mode 100644 src/js/index.ts diff --git a/src/css/index.css b/src/css/index.css deleted file mode 100644 index 4e6a281..0000000 --- a/src/css/index.css +++ /dev/null @@ -1,87 +0,0 @@ -html, -body { - margin: 0; - padding: 0; - font-family: sans-serif; -} - -#app { - height: 100vh; - display: flex; - justify-content: center; - align-items: center; -} - -.calculator { - width: 300px; - display: grid; - grid-template-areas: - 'total total total total' - 'modif modif modif oper' - 'digit digit digit oper' - 'digit digit digit oper' - 'digit digit digit oper' - 'digit digit digit oper'; - grid-auto-columns: 1fr; - grid-auto-rows: 1fr; - height: 500px; -} - -button { - font-size: 2rem; - border: 0.5px solid #98999b; -} - -.modifiers button { - background-color: #ccc; -} - -.operations button { - background-color: orange; -} - -.digits button { - background-color: #efefef; -} - -#total { - grid-area: total; - background-color: #333; - color: white; - margin: 0; - padding: 1rem; - display: flex; - justify-content: flex-end; - align-items: flex-end; - font-size: 4rem; -} - -.digits { - grid-area: digit; - display: flex; - flex-wrap: wrap; - flex-direction: row-reverse; -} - -.digits button { - flex: 1 0 30%; -} - -.digit.wide { - flex: 2 0 60%; - order: 1; -} - -.modifiers { - grid-area: modif; - grid-auto-flow: column; - grid-auto-columns: 1fr; -} - -.operations { - grid-area: oper; -} - -.subgrid { - display: grid; -} diff --git a/src/images/calculator_icon.png b/src/images/calculator_icon.png deleted file mode 100644 index e91b9ef5e41326148c6236411cbf23bdbc3fae87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54813 zcmeFZ<9i+L_XirYX|iKuhm9MXJ8WZHO=GLEZQE?z*tXRejT_rKyY2V6&OdOj^Xm6v zU$bZCo*Qeed#%sHOsKr91PT&95(ESUij*Ws5ds1-4*~*84FL{(Wx7pX9ejXvP?QjX zsGJ}?0H1)2)uq15$UxA7|06&^2Ae^^{AmLI;e&q=5YRc05YXTwbSuFHg%gWp~aM+UI($qsDAta$lU8Q_P z-%Fv1Mg^&%vW$v49OR}Vn6_Dh_9thXa5v23>YBc%x5<#Pps-p8wJ$0zL zoM?SLeB!%Qb`v-L^3^I9kUCgV!`IW>n>-9~3cd;806b93{` z<-@a8v-as!Pfrh8<=u9hVEpj)Rg*l8V;83h0(fAdEi|8uv_Tsv*z}>VwWsjS9Lw|b z&gI3$`|%SK6LO@z0*~W1UJi(MlG2alWFMq9rvNE&n3EVsak3yy0ZKB;Ob*iJ+b(F- zRoEF<^iFCau4un+LFX7TvWAe2et3UZh7Kbn040JR6YrA%6Tr4SJ$>OGGaKIC-rgDH zPI9mpCYYU(5HY7Gb$jF%jr8a={slIa?qW)hA{&K(!|`OPb|3lb>T1&8LjctqBo!PP zpc_!q>Bo11{g)n!zCKL*2`NJ23y)7v-u@fj0?x;aOcNR0tl=XuDLn-VTq4r=fI!5M zG`Xkge2KI4%*+=?uSwynr7>~lza;P>laGSn-JVN(e0;2Y|L)y0G|!p$Qx7szTcA4f z{f7?yA%A*$np;1w*F{`%R~h&--6|Gao)y)ENLV8j!(KrH{ad2Sv-I!C)>)T7ZFD^K_=? zanVmgZb~fZJyc1Sq#H>J{ON~{Xu43T1D_-QYD1dCghB7{_eoqRi(sD(GwP3a#E9Z3 zf=8#PuV*=AnL@G#B4JKVQE8GHm7k%Pe;7%;70IN(k|Uja_Z~k^a3LGI{$=}A7y`|Q z?!$Yu^60lwX!!SaPBcBj*wCEM#RjA#d*5#-0bL3E2>09x{cudpE5Yq;$x0g) zNbpD8^byJlAxAVmhg)W+raqkJiU!N-G}-!o0pX-Oqm4re3#&fqNe$tVTduX#lNiOl zvC_WiRdE=!{^cB`sJ;_I0PoXW6tm8yw?WFOH<#BlS0mm`Gx^Ub)ntRdwWIHV*nkpP zJDN(2E8$)p9UX6E^v9y4!ZeNoyD>21{-_Cc5||#Al)ivSXkwq#J5kbtY@KHNz@w=7 zwF(@-2gHw_aZ`+A&@bfJg#vA->^1NHr(0-&X!Aa_Vupm}+pEE@`Nho2cUQG0ld@#% zE$?S5-~oYBzd1_W-~2|n%bMJLN?@V_{}TGof_-;~bO!>z)}bKvvEHpZOft!3aM>Yq zR}tVX0Enf4Mx*}Sm_M-`TR)#INg^Su$(Z>~vRDeZ1c*JHbX-0Th3>!K>o6UgjL*l6*6*_W1#$$N91qa%zLVos;E`3p{vk+( z>}Oj8f_#)W5~MeIX}dU7PX=#Ig(@xcs^nz%u(lK;drov3Ml$qa~VxVT!f6D zv62U@+5R^cJ=9#7zLr;3-nho zW)>Cpa0YA;T^HNRkg(i~x+J zhyl=$A~?(EyY33WPsabrCj{halTW?a4jlS)4gK#!GN2y8VPE6enJAUZ_ClTP&+(#)9F?)Z zCV^ethv*(`0$Q`(4nNrU{cDb$e34PFEg>=3h!;a8;geLhOV8<*c3xeB54OzPfT{O3 ztix#!53b$Rz%1w%3gDVmF4f`<8h{-*aMU$;`go7xAd@Im1PiiqWZ-=fN+VWck}(6EB!ddPCQNYN4`4*&Hila5fzIToDq< z*m!^XR*0673sZI_3C3DBicmgQcxxiq9BVp;RgEUctwD>PV5J&b3b!_itN`{ zuY;2lEL>eK8Oh*H4^j+uSh_z_1-8Bkh0n1u%vC_bnI4I~FZT8`0F23_#7|P>^z)$^ zzEtkWg7yf_6qi?M^&zGTg7H%C5cCa8%&fOZnP2#Z%HZ&3R#lhzfpz} zt{7yE6l*ry6Hn#PS$2>T(vh{yxFz0`C4*Ybad3k7^c&hy5K+a8W_}@WiW`XLjnz2p z%XY8MZ}G+40%xXTP=e-a{-Bu@G$7x>tyj+ojnt zwCW$hLYgB6K!^|bu5?(MOQ_Ut-r9@ia!F7gtSPfBRE5#_e99F?(hPDn9zNH`1pLS< z1=Rb8qOx>N2JA~Y9E-_AZ`l$O$Y*X;^BjM7_?S1Vn;sS#QP*AsfRuu zMb&P3^*^)x{x~X9&(23!yg>I*KU3}){SPBdnZlS>ckR*;KIEz}>%{Hig@mkbqK?OE zB{k6i4MFR_)Zg`FWqVtND9tDdY9pj^#|8Wj)`=sa(N^XC3u&fO{;dkOx(ApspIr;jR>UhH5qXcU#G*$ZqlJZ(ewGfe#BO zi+|N18&C*p>rpZaPT^DO4(;%m^u;`oo|Y*F(CiNzK|!{s*9_M!)20w=`n{#Q)yP%> zi()v&$J9bjq!h%Xa5o@tIok8LA15&%Q3vf(#mTn&7VHA)EmEnUAqjG{=!%$tj|cq( zWIF^!0I{D6^<+fUkzppAe@!nNGL%-veG9}pK^y#de^@eaZAi+87=sCQ%vWytVGTnQ&RA1E+4u^pIaymi!T>r z0Ak=yudWb#BAbUC;cgw@UpS{O2O}b~E+h53!|^E9hTlvrwz&)lT>o6`WjpWlCU9R) zzm$y+2;Lw22bM<=Y;o|M$I8%z>Cf-&)9~DO72Yd&OSzhxfj(KAIzrHmk~LG5j;U4^%cwEIBCaJeml1?_{5Zs>mExnh5ZN1!k=-*L>W3;m^)UMEm6kD-oJR{=5L4 zow%3H1I&BjW7v%dncx0c!}doBMk2@)%tU5+R!}fFNl}6!9H!;XEL2nC>|Y|+i~HaM zLTM^4nd?Dy^C)Hqf9D#b3L_~LnMJON;{2T)=yy^@qB-pBee549Nld@cb2DzJTV2s0S}O z{$a9^XX034qkr&1AED3B#|-qN%QE#Z+|Wk=k?Dgl10()(6Tr6t3iQlcRDXp77fJyE z7a&Gv^iNiBp?;8pTO*Gph5l6wK|+{N;vj_~^``%w(t}&~L)97^{u>P~5ZoCi3%2$D zPLaW_|8MC3Bluq_{68`Kzs>c>eg6MXrS$m=<;ts%4GHSL`}|9IE0iXFm;#OCFC@i< z8Ws^UE_|fV^v)=sNlK==02M@JVGE6J*0cVzcEUo&#(d2cR*a$4zzXX$;d!1En?Gu; z%MBPax;xMM;Pi=?9aLwHpx*P(u0ldRc<9b78^~b+06T$!fh^TlLzRf@q-B0!Wm%37 zi4O2Kb38GlWs?d973dcyzRU(RC;kMRn7C-6LRq)VPdc;)rEEa#bfcV7tW*wVb4gy7 zKOrzNpUkVJB@K8X{9VJt5K}KN-MziNk)VCeyNlYizZeP4amwWDS4Cv8(vXnPa(mfn zX_|yt$mH1r>q1TMo&PH1E_<|JG}G7Dbw@eHb|XL)5Xk3&{MTIA+(XyXpxfHNU`QGy zWTFii92gKLZBL@gDS0Z1fsp7!L(EI?8PGgBeP@<&H3k3qya?n%c*Qj`yF}Zz>mD8+ ztK*r$XHuiCw4otg8!b*2)26=qba+2}pT(s=iK_nr)m>;MK|XQvT<>{zF)%Q~S(rWe zQTD%60L?|f5e@6gA$ac6+-ELl%ReL*swEZLW^f*n692iQH^U2VmS@RvRF^wFtzaOU z@;AznvjjLF2FF2R9Iy6dIAu2VP>pggdN-xG(szZF^z~qdNU=S~ z`Y`Hs91jiY{Z2~~|LgPlkmVrU7vvi(f2Ts!X?OcM9(}|k9U1>sP^HyI4LYqXj7g_u zClBnz2=nmpV2|U~8`OU+D>V9pe7ev~DWGVJe?QfPvqXVIIAjw5vo`T0r;1B!e4wHK z2QYsm#lf+=_r+h$tLx3beH#2DjFCQaA{iK9hoG1=EizycNk$a(C~0RJ)$2%6xVdR? zaB!e;tYS*|PYfiXp;pI~QEHkZ)L91!}9LcSO69BoO99q6$m^3xkv)emfV)pQ)^C_ zz9w;TgTCWc@XY2hAmb$2@rppbQP(>=1zP2$$hYZ~^GEnkLS* zU%zs$@9ua{LI&QQoSdkTL})%NI)TZ-409+(8WylK6-r~IDNpvvSs~FfgeX^@ZT;=3ioji zQ-RJSRFnxZcvcXv&-=s=_z8?WcjBny;9#df#~|AN$Vb?TMS@gT`$u&MLeU1#nM764 z`YXzT=v=j*2j+uGkEFb&S+1f zE2QLM<^LWv{eQ_MgapVjEoI26f$i(Dp=9hOw6*!Vbl1vj$N93`bjh=8$Lqa!Xl5ol z{D*?z2z(^kP?ZADc;aVw2bDqdKX88BN2mb};kXdr-(1Q~2evh6LC>95BoNDt;&kGX zRWstdv9S>G^5W%aTZ(c#5iYvSe2yv+SY#!6pajS$+siK!CfV}7**0kZ@roE>{5tHU zFp!W>&RxkLXG#GInVO-}KSNj+V7+>Qct8~Yb(a766Qoc@fF*}NrW;WtM|)c#yeTdS z6H{gK#!VSEX<+tRZ5BRyCO}z9Q)XF#-R#tsJa5lhuPhTRM)bm@xU!=?`aX>0uy_6k zP_OnASu6d&%+PX8e@+EicpaCw&Qcn_ss3>rQ0`eg&XG>-=);GZb;Db9v0YQC({5R8 zYJZc#nAb<@>b+lgi_ZROf2tS$^vsraqt2dMc!OMrQeQfIgS-9p4dB@{99$hqK0qnCqSJtGX2xCmbkZJ9FM=IwYH3H`+zbPN8UR6Snw;unXN62^uF=T^S{cT8# z?opQQuzQ0TKgAMS%%*iyT-AxJ!3a7-69hfmZ*)zgds;p^4g{*pC)A380B2i zy^B#3-t*Pi`Ix5tnr~HC{U$TW4WeMr3%`Y8g8o0!tfoTVh@HuxPMGY!oP$LgeC5TGyBDSXLcCC#>$>~&^Vb7zK<5JP~$-eHCBNe#|p z%cL7R_7E=mDpt9Q$?c%CbIcz534^m_`29qkT}lNr6VU_SL4wA?(a`XKbu5uT zY_q4D@aZb#FmR75ybHjEMidVAbA~Q{IFZsPy-0Lgk!O>B-KcUwU5(}$8y!|zm*TU}MPYV_f z4k`zStD5SVUYqXN_ntf$n(u?09wdYdMLyZ7X5*Qgn`x)&sk)Ci0 zq1AQa`OanT{MOJK9!Lx`N3B%z-9p#-4s*xXA9!~RSZWmef)FqVZMNY1RWw_nM!9@3 zAj-JSh+iUx$I47XvEO|;25$DS+eS2b$U0_a8el3qbT$7)I7;us5Q$uPn-d%iyTFHh zWCs?7-|^Z-;qJ7gXEVP)L0&0!*M^>BJBfo#zj;=xFi#ijn+Hd&udF}|vr+K6oF;fa z-8OGDSgnwzzyXTK`xV9!8WXvr>X^Y?KMSGG){D_<9N4+s{bc`mt??{7n#yXj0|sI& zyu3#tp-`Vjm6B32=?NgWaNB-i>I<8QdQuH+PfW<(kxw75w|}}lHXt~&JCT7hT)E`_ zb=74g&DdbkRI$GgZRKJBd4(`LYri{!#qD&6=~cXYyi{9>(PN9QBrw^ui$2M;P(!yY z!Wpv~ibYhhuFrvHD#*e>-tNlXM9GBe|L$}H{si7Z@Wr&oS+ZGdiwx2%yUPZOzlg*w z8lVWIciGA$7m$j_>@nas*AOKDIRnq!@51;Zn+rJQuyzuo_jm4hU7J5H1jXHsSo#Kl zP(sN+q?sN)Dxk&WxSc~6)L@C+->CXX2BNrw>o0ok@6Qdm?RR7mO4>>Dg~8y|dW@AAb3x?rcX3CL!Z6BCLF~w(hRKI<#1F`v6k}aW#{j8OM;xYCpN>$7e@f zhi)pgA`Hb(N@~s^yS-T^QQYBOen#E8+3(9Ab;lPik z62%~|x6mPXH5PlPN&avql?5VJznA`*~#82$9wIw>3cWXjrJ8Up+KX7 z?&tuvz>SZ%Ty6HBcM79HQF@ajrj^KXcvli4D53Z+4$VpAd6(;EFOkE|KDoJ(_TYkt z5r0&HodAqrGcKH|fz&Y-WD0@q&&4hIZnBDoOlkbT?>63qyq;DzMlQCq^(PF*0&Ao8 z4#j+on0<}3;(Tt;Hkh(sjxnZuPJ=kuw%D?rBUbL4YKZ)#$HkPo(&krAl9l(8aIs=kA7- zWT{P&sOCZdHwn4zlRZuyvK@L^3FEdsgbsvDsDIvs_7Y$B^`$%?$eoF(w^NXK-TSh- zkt(Rzd#%yx*xWK>sTR7~BQPS9$9Zuc-~P_ejvXX+Uj?AAWN9ic_D7N-hAvNqVo>kw zChH{$K5w#{epbsRgHKA@ysRH_ZDQa~-9Yrrtz~8qC5pFSm~ZpgRRTtfA}^0|lXlc3 zEJ*>gO9p7s(doN(S>SlRytQ|NZNfaDPJTZU?nTwKm%!mnDzeIT0z}(En1#rf427;} zmNEq-qN?6Rffo6_H@PaEs;)FXZfQ+gZw+TW;DZoRM~h^7e~ZbrkVKNGbMPe1YWw&b3U}7lLibv??jq~m=Xq=s zY$QCLwk|mF%~ew%ru>LBqZdAj5bfr5w(M=2&WMPXtBZjv#}`r%5q)RDYfj*#&mb@7 ztl8iqH-dwTz0(>U!q+DE1s8q9OxOeKI=Nth?3-Bft%Yz}h7qw3wuHkawEAp9I^EFt zg=^}FZvfJLcPV36?wr9^40+jLb8%f0IPcf|?P6;qr;XV*SjLlCu%L9^kR9x-JWkCl zY#5%b`f75+CfR1>ypEX=#|yq)RgH?G@>39STK9M~*1);$%jc_&poS-nr5a;aHXT`as@d3>me$ra4=i3W z9i27nZ>o{1>WAXaVe>fk)ygUd<4ZitiQ`h<2HLkb<3nnvABGx<(VH>8&a^j;rz%-E z-t-Pv*lZqsYFA8^q`kKToM6*euc2T#Tr(MaSjrZe;8bftXRDcttygzY8G)2Zj#0wJ z$O_W@u=9MdOc9(N1X`U>VyZk(CU?s8JmHvLh!-s0KjQj!Ex5<+)XF|j&xC6NU{$=m ztF+2`vRJ8m#$gevMSr+nReQW%Whb9`?7OP-ukXT3<(^YlM%pSA^svN&P>FaD zL{lp!VtjjR>#FB!#Mf3r+{$ILzM#FS%|H+$4mS}JrzP&6Vm-iFRyiBA%krj=dmp>D z(yCf0mDEcG?v`JNJQ&dMRy;LL9H0$_Xua2IPK^JaN=Soym8_mV)Q#HU?Q0Re$~uaa zKk_a(`-`DDUgS`{WTLl5ovMuu$)3+?!kOn;)lRGgu^kidKI&qGl*bR1-vMR)wv45G zw!cV&?3@h|OvV`U<^q3g-d8wI1eUnpohEkPhwtyw={>ku|M+3vVnCR8jxwlKb*1^> z&}98|dr~?3k)0h@1m8*2S;|9oftWl(TYp<2Zc1n~i4ZR}exDih?syG1tXGw90vJWH zgX}>3v~QsYUeU+W2vSVxd@sfbSiJ5KrON2NFCON)d#h+fjixuL9Hc;*i4aq(G!q@g z%}=AmRCuYPwv+sKg!J1{`UnMdPVJ-BzYNZ8CB z5YrXj99U2Iq-fL@j_A_-bqpu|51W=onhy5dkoAvcYE@jHcm)>5PnZdVt=t~#hEHC)9G&!=+`MQsL$`w!#%s`%*A5`!U`no9O zxcQtsyKVf^wB4J<@4otoS-G>%lemYY4C(xsorbmmDqi$*~+}Xup8i*V5`U2k$XJ9Tc?>?M@$%1_yY+=g;BTd7hAs5htKaqTh{rqQBg&Tmr+NER zP1%8JU-QZ)vr=&r<1&6hDTsW^(30z|+hH(_33~85Yih=flfOTZaf6{{m12tJbmQ&mY?#Pp^?hWn(M4f7W+y(eRQujSep%Vnn-F|e?t#+Z!WYT(! zQrlSzR*b%CqInC*b)wg|_lQMEJ1p#=l7Mre#%b2!eW8UEw_=C-S8k0r zUB2bs#THY1&rytpY6yIib)!OVklF#BlyqV}A$Xn{zjj{@HXi3WS1Fj>#}k9LXQq6X zV{RVHFV%Ta#PpP`wL2t+E_mv+u52 z=cDB`bMB%;Nlr(R6kSR2I({(RyT&zVUgwB=mc9O4dd9iko6BUqGs)~uvstvU+Rh!0 zqTN%(W1`2(rR4_2R;zVBKO*6*{;3^6-AAgbiwNq%_2d55>&CvDq#d8wYkOgCJ#oM?Oa}-wqs68!3I)yGGpm$9Mz=!i-#ei zspa1a_w(JhhTE3eKz&5$9k=yW2A7Z4?Pda-)vZ9|%zJPx`+XUQ#Dp-b5Yhs2e;1x^{n?v zQ+akG2R|4KdzfE63{D1(n!GC&_zJ5Qm#uB*p^c|a)G!M~xoJkJ&+Nr?% zZZ7##zG33}K#qXu$)q4uQ53r9r)>V7z}_cN=t=mG?WG)v;w#8cBR z>fiY_2I%qY3EcHhiD-u6nP=DiU*?zd!m{UR`w^*`Nd??Lg6=4sQx|`##Z*2M#uTXb z8SwCsY?D$jyeUb5UPp(Gyhb)1vfZKfM%}}aRcE1ImJ??OK}v;iKfK=r9-jBJ9dRkG z?!`y(PLg$L@iY0J&wH(hVwbC$At2+<_r|qyu=r0noX5FXYey7YF9Iq~LW%icOyIJ) ze)qQIO5DPW+7r5k?M%&7Ov_A~t5v#P^V{iYgx6pl4djl(H-vlap@s0VLRX+ap)smz z`-YVnS|rOIhLk)9jxFn?z?KgL+8nC_g zuYU0(pQ~%=cS}r9n>uMEanAgB+JQzHN#~?GU-mhTvEOhwvA~Yk?PBeowkr#T+m$f; zZawJ4Qjt1D8Y}z^0nI)=pNM(?m3}YG*`}+_%nK^Qs7F#=7pOO^I=h*x z^De{*)mr7dT{Nn3I!dZR&7{;DsZQk>LpvhTBUVB_P{=CIU2oSgBL;zH7;H5byx z!B&SX+Ovzq5=uJ}e7!eWbC!ENuJyd(n(x76)iUSDsiWp(7{~rCx6cOmBvx zaLM(j6M22V_q%X8YtOd757P%Su<$lrht>#wHMH#vEaHeI>y$7c@_&Yp`hO*^KY ziNFO6-h>h$xHuQ~!uHpkreAIgXdqAJiKAOnkl1mGibDck>hTdP2~8`8T*3AB{#JBd zgMZt-ieA7QgrUxk1-~Zn%g6_Hn{^4=IL*ip`6O(B2!q&l#{ie+*!IY{uI=?I$Dm^8 zX|kU9%E%2>;2sUZOd@qNY%A~L+N1qtWZof#V5?et#c#E>%7=f~Z&HXUiBc-g?uR@I z7wP+-)m`-9wO7(2>mzuO8LsiUrG)Ta- zOE|sSV;YRgj+o2n7dFk46wT?)UY8~-JJY@xxIyP4dCyog{{DOyFKe7j)XmT(rKTkb_Mq9*L<)}FSXQv5~mNgP}h z)S<6UP;0Z%QA3oR4DCrbuv>D)VFR&?mqN$**7y1{5nPuM_+TUPe5tE z&5ecSpb*`1)I%4!>B6O&7Gj&iiA?Hp&_izI$rUNkRP=s+B9EhQpp44VwH-?v7kW3u zb`1|TDu{%fIe`y}555+8(aeB2cQ?RqFb`Licw(x{tf(Kv&h@qP*({R#D)Ebi!%uRF zs4jfVCQC_cO0)VIeoVzxpYx8VC_`k5s89-}UipgPf@Z6g+y3TUiukYSS>%-Xr=@n2 z{Lez916E;HpF08fW~p_AR@JA=^LjD8>Ha!}cpbmGhKbn|8B8K?Xhj#mRjnr@X04i*{&TSs_yKb#P9dU>ta9Uk_X4nQtqpWxHre<-n> zlYKB`(7g8fMnjcIim)AUB^#l62AB0Dd}`ITAciva`ZW zKPbnCrtfe=DntgVFuk+hYNVWAoCaP_<%<6P>F_+TYL8}WvAz65=9E{4@JzagcdH`{ z8fZSKKGR*{8|w#7%lt0w%m{0+*Ooh;7Ksuk31((k%-Vkk7^Znw0+>$YXT&UcK3Qv> zlxYhd>{_7Dr;-g3G1J$V2N!)pD_&;p!Od|?3)MtQC6JS+Q{I;txK?#Qipgjs;h}vq zi47SEHp5qmeYaf4&&dQ$n#a#WFQI|w1=G79No%WkMfvs72rqollQi!IH|q$hW2tAx zHLpN*kV(y)4T!{e`}^)}<7|)TS$fg#1;Mu14;=8r6r@pm^Rys}56EZq_-tjWpMy#i zO&X-Drgz3FC`9`C(CXgrWZknBXMCL?5@S59c2UjxN?%vJnja;hVMJ8EP$F+yOjhNU zZJwn2d==aBK@_N23ZTpvRYaMaLjwe&QLjjdi!=L1W@4(_9~SPF0)@zSk!kVWEjKz) z+V^w=I2#@k)t@h8XY%A?I?4X2v!3H zi*pMKp~ytgXbHDoLxomj%NpeU1*gLenb4}TJgnC|o`>af9YExJ2isOyKRY9v{35t$ z^~ln+VhD(LiAK-cd_fD(pcQ<23oAl&`9;F{8nxzQ$7A zx2?PO@WF(jJ|_Z!!s&h@Y@a)O!r_u>MiunTWqCak_sieL0PbMDZDC7Ca@A2iSg7rD zTqHolGhQFIR18w=TDkd$$~AU|^fL#7JYU~emf7c~fc@p4<=r0)Hj*YLh!^aXEVmhB z8&cEx_FwJ4X>fbYVXa?x>uxN|h(=&iXE%ip65<~AxVOWC<{}wz?srvrte{=c1DNX^ z!^ov)-euvu;vax(1wC?`{2fh9l8=UQ2yJ1ien4>4TpSLkqZ&0c=fxb_w<=NylN&BQ z;}msvE_j{_qhK9=&+kVhkMUJ8YuKERU9Pl>!|-}EXsQxz;W_q1X`C;e>}FUa%_A#+ z*{e38l8Z#xso8;Lq9z+p{xWBpj1SDqg%W(~VyB9!*h}*DL4s)yY^ApqKA(YCG3wiY zGT#0u6Ybxh66wvoC2DZuU`TL9*Y07n<>bL_AoAI_#E*HBsPPAM>w%6(ms*CV#hUsnbKXLLHAXPk zHjX0YYCX!&eJp3@`)2qxtxC+5sHA9!l_s0mcRiC`m$O>yL|$GR%&1to9j6g>4ul_4 zYiwPyKC4?U77vjMGXMVE^eH|2@l35JOj|WW82}K37&xoAM|IV(IxYZ0Z3f4-@4miv zi;<~Z6gj=0<4_hHs{FMVY^iR2^Q*SDJFt6s2|*CLY?6!?w&q=b*dWJm16!7My703- zAuX21TLd&KkEHPvL5bg26M5=C<~c5|elkBsx_k%box`8wqw4W|63U%h8Eqem;}oA+ zUpK>_#^+OI8{bDOMxVx~&`?89L`26ZJfuWO#}am}x51(PwXkh>9krQr{FnbXPu1?c648t}_MzV$*7e)ge5 ztd|-BH7Y}C$r(bZkUBK-7?F*lHLGETVIffQC%dZCTXax~?&5Cj%>tvD^EI64D)`>_ zy=<=+Zi#eqJ-LS%=qU-2WDmG7ruzK|M=B$j#bw`AN_zP2zZxdpI~2nRLiKx)9=f(# zg6>z6J!3l!AMF5zP{yXqlsZ+gbp@wtHUnfSuYrzfGwibqKl zble{u8JRoSHYE>PijqO47ub=M+HP!!_kQ8X?*7rw6mPE6Dcp+C!;B@$p3Q>Tl^#e$ z!n6>Auew0rG2RjrD}`p1b%iBNQee<;))L`M{kYE}kUkjYb>Ik=A+1Jh?h463bsjPs zkMG>BuG<5qqMML1TI0`#>Ma&lThUDhBe$X-62(=U z8y$Gv4)K~l25vgx+kB^2-bl09MZkRc`o1a3aM|VkudS##iVl zGZvg3V=IqLe5ScA0gQ{F>B0bH3?HksF|jSwKiX2(+x&3vq6n}?YRc+Nj7@zf*fgy= zaDpXqfDWg$6&iwC_sX^Bd2^`3s;=HGTF}c{$J6%h0;w)ZMM`PEcEd`d}FRD>2z@s6%im&$EAJio9=^RhxV+W^Z519Zn~8{#ue^yGLy74 zc5-J8F&}wK88YNA@e`AGX?uwT%<+@@N`iO0yT7>g@$v3Ffx(Y)6x_CHgHB$B^|6du z#r9b2JJ1z^QSRA%u1K2GJG6?H<68B>Jc5EugV7`|U$S5*>a^*@iNUwgMXO`f#fmrG zti2G+>@A_b3q-rl84b!(e8uHOjigCFh#UR=LvOHb^ado(XK{y#F-d>{vz1IK7yKR~Fh@q5pv>`x zRTVW!y9aYoGP@jqz1s`De0VQZW|(<&ao(@GI;h7ihe`Dzi`9!O<6_%EbL-w-TTC`X zl*{{-F9N#~)BQS8^D7n}+foJX&d*|T*V9$JO>M3G&^E>Z;+q)A+Z<(8=-f;nuT`;9SZGPRz`C;mL7SG*U)^CHZhZm(z@+>W@L* z?aSKTn%k+q&PjpTeJ7sU+*3zcy=V6-v9(6(YCG}KO!^Bgq-JuHgF%CCx_ng4*}b;= zQonfM(YG?>n2{yI^1h+c|AwOD33}+-W+P*C0`=*>fTv*5>p=I-r>S#w#ilc|Ufls@ zA;cW(Ek9bIhbLu5lUi?azNIm-GT3f&UdE>FB50*Ys*2LT4|x%}LW?oNcz4n1-Q;wH zR-ic@`=b3J{s8qDSjsR5Mq;xAL>e_(;8CXDKr=*4{sCc(8H2ynU zNu<@f;^}JVNiV9PZIbdk6*85u*bMTdNQ=;Qx1-3gpbt`v?u0brKeM$s?YvIFiOgy(|`N-^TW0O4Pqdj5(uu z2;A+{o3@)Ok)dMsyu5fQ&j_0C$zZ@zvQ0XJ);}$>Md$Kz{6NRLq zWh$oqRKvw5v9~q3stCi!Fr)(`yE=PDh5h680<$g;v5wug-;%6us*v=N=%Fx_nw;VS zq|BHB6*Ilr^W5#!=2#^{x5X!d_&Ku5>p=R7_@~=cQPIHe#_P!jcEzrFzZ{a{^YLIf zQ^)b`XN$sHZNyhLkn7br=f^LeNR3DCHOe#<6esm9!G89TqLLWRd?;4+{tsJr9;st+P>=G2*;_fZ# zLZxQ+0Oz@JebLO!bHA3OiPi=V2Ob%K-$tf9mcc$|83P7v_sN%ojJqG7`ufh^x8HAt zTU$_Q63!GNlAl(er*AyN#h>G>!g%C$$x0d&6`SlNs_EJxC%#Pk24FHNze5_6#bt0D z>GX_?W#tUhjAb$vby+myhGO#+J&3fXJ7Xq?-wCaXO1#7=cNH-- zo=$MA-?jfDH-&^#+?gkP?1aVemuK@r@!a_R9+1QKfXc%zllSge+|o9xo}4bqd=*I3 zN=p zN?p*k-Dhc(W`aAuhP>wbDaKBBxgDKy|J1_q*yc2ZshM*k^^uoT(Mqzd4*Taq*$AfZ zCg$cj{027~7#&}p+n-K(t?z@hdh6nlk?}|fPNmPmpTW?d{GqSM{icb}d^tM0O{Z2l z1kPg%^4g;;@S@ykM6)o`)9Xu~suVLEK4(W0T)oS#lHdlvR^Y59%ItdmR0Ue@ODqyc)e}3<_b^Cn?Nlrb}o#o z;lFwyJiJb-ea%m`FXJ_Dqn6D`AbI&c_{Tdc?qaED_T~+qb$SCy>R}+1w z^+Or0=GU0HMtzHGBwM#DnEjwfA(8tXQM(d`6BZ_RkaDvV?g;Idwe#6%?`P5D7TcQB zdNDJbHtCdV*}h-kJi!NMyubn6a_UfEg|rz3YdK10gvQ(vY|4kupO>nR;BRZhlDwWv z*zb*{2AvgjwC%&*>YP4t{nl=p6ur(#-k=inBoLKdd^AZ?B0A!Z?5=y+xJ1&^vz!-R zlRiZ6fZy*66tx$0MPA;f7if=i0^`smS!j{sf@h^~X|9XK4LdlD9_@Df3PJk`r`km; zk$P{xe*MzptPJ_-z!)n<>~{wzX)1hsyz~JY+CMM;R^bDM4p*&5xn5JorbDOK>eepF z+eP*&I6nQW1bd^C^I))iu&*!R$Pru~_DNh^+`PeV=1BRwN8<8ow9C;v!^6Ymn~K+M zEsoGc#sRAK@-jEGsgG#@UuF;IJ0xa!-fE36qH;GMTq@4OJg_e9(1?*s9x6(zyI-^| zoRIVyU!K&&UTqs>23TKMP%*x3NeosPAJCQ?J8ecjFKlc~S{1*-8F%FX>F*3ELO0?r zdgm|{4tBRa6uhR#T=pk)X8s@E-ubzbFWke;1QXll1QXk~jfrjBwlT47JDJ#ac5K_m z-QRQ0t-61~{bg6}s;wQ1Z(*QuKr=V&DVMc9a;SCOc7uELn*R#R=7t@n@ zrt5&iRts#z^@-*zL;UOswf#72$Wz(A#B)Pob+Az5UZSlTl8Yt6}~Jg+)u@(^tA*7 zg*C||+V71^2bIql6Ehx-Q7@ANao=Qjh5ROm6>tKPPMZoA43!|%BEAsp5o>Z2NQ$Ra zFdZC=;V)eziSt*RUcfwKsfpNMqazae(1*m1;4A4$wpM%V=ejYy!w0IU=^xE zo9ku8`{?#omzS}xP)N^5b4qPm;7l5OYKAJi0~EO;n3`K zggw@k z>bxut{JbzESSD<0IGhnisaOgW863`IMNq>rYWSKjo|s=BrCO z@1*xF1><_+)YQAaN$fUE2FN z>4bsHN0{U@C`})E$IZO-)XWX%W{;E%h ze;lied^tA@lf&RM5ws`M-G0o>z9dQi0nc8%~nQ zz?1>!3)Y2s^Mw-P)j9)Vn9;I%RGh_ldYW_Ry+Mab^baJVGq-7pfWUA$J^RO?&Wvln za$jt~+)f}sI+ZTphkcLzB-CU<(`q>eKL)syY$H~;{D(=e3krSeq*#%@mj_%f?Z*c8 zvFk}RZ1la(JN{f#K$_-$9Wa~{3X7K2pFT0&n!;9O-ebr<*Gf**(v;-a`nFVQ8!mUz z*{=?(^(gdZuY4Cd6*D61V<)-O3<%7m zXNtix|0lq7cDnm-ZamXg$1AUo`G|m}`sc)WzNlvO=WX0|8!Op|{l?&6+xag5lPbVD zV+OHTQ)9F}U(%Ip?Pkol#ev_nD- z_GjuZ6_Wf%x@W0*_21A}ChPI66^xLn6bvozBVZhOMrpPf_}^Bu(KQ0hXCp$1$mZg_ zQeuLG#owwH`YF!74T2JmUyar@^xnRG0b~z$6pR!PkO}N`0pYN-!F4C8849mX1Gqtv zx9JX{gdFffiORewgW;oAh-?_G0tU6|_hJ_|D0y33d{EW;6A46~H~kF0wCeJB{4sZs z<<7;1Ty*a{vIVygA*c|vAvCOcz(*M59Z=K25rFO-9(X5qs5oBT9@jQ@esWT_?q=iY z*gu8+`1B+tE*?fou(x1-+}gUW3rDd!OY`{%&`b4uqo{%Kf=vn77p!fagQ#Wx-jQ5< z7Wdh@APhs@Z@xR1V;%?3n422&Xm^Gn?Ei^vbAovqWYKyj%TYY!WOH_Bj7dM@*~3=PnNBN=2TEH$y51nhO+SnmW8K&W^)k#q6We*-=Rd7{2EDx<$$EC!V`OFc`%4*o zBR}`Qb|0g?9V@lSIVe;XgMVWNv8SR$SHdJuDDf_aQ-Tt@Mz-&R9HVl~^iK(L{#{sI zitq@rW&c2Tu(Iw$!05?*5NsNimZJOM$M|9(M-tiJNfGE zu)2G4Rq|*Y0g~oLT1Ns6QN(#EaetWV7suJ-m(aTHi+i8WuJaDrU&45(WmB0)ttt~3 zwv>gdDiLk;Ke|IP;gRmIyflPD z2>UmM4tNztGalY>+q7avuCA^U>guVD|MsN&-l^MfV3n!lx(sBZ_+cneklZBlKn@Y0 z|BIV3s@#X-sx1;QEi5%un{b}d+9~Z>tcw{4&`?m6W;L&tD^p~fj`>Wlt#RQIyEua{ zyP!j?a;Ye-r%5i5WqN^j-wqS%$KTXm?T6rb9(tP+sYnI>s_;Em7-W@ZnpjF3`VC(B z)s74g_Pa-ZiJ3fochg_ze#N^}yF)eJ32-<2HxM6-!*5Zyh75cxnMgZ>r?$F@Lt42K zzu+(kBdl1-5swh&g%h))J0$@?=Q_Id%Ga9dnv*0d>Y>1`7?U4S3$7(=wRBKDi51uFP>wjU0IoY8^*}V+fH~tn|6JrZ|KcV6e zIy-|Prh#TLkyyNTTrZTXWFQdPDi*MFHD@jlO{Uhf{lUfdpTM|%IIbU!WPsP>4iBY{kI90DW+BLr6Y;j$ zg!H6<{vzx1oMiFm0ZMjb8O);hIR$LxP9iv?LMbo}G}-sw@3d#S5c;+5@k{xOUz+CT-D# zmh@@xPVZBF)a^qZDS;b`%E*dkwh5(8QiTFI1Y2aloRkIv9tUL@0={#9BzYg2hIV1U z`1~B;IG-6YLqTMq_kSX_Q8g zFp%5YV8y?)rW|e?`tp~+4y)q`zT0TGk5~PP2lZ3+`VO3id$vuL+8#rwCgp!z0T$isAsL*-3!+KE)cG}3Ki{|e6T+>ZU zt?AEtXr39r`ttC&0ou~?Ms-$7ZNY_Iqqvy_-ZjVw`C)zd0YTv`Hg7Ley>HjQTRuLZ z2tmAG|BhPa8XtbBghd~B)OlE>;(8u@ts0DUETFgHhQOo{Q9kguU)qYGSysHs*Jl&q zba!b!Y1)V} zec2;$5W>JE*;48CT<^imW^!D($!4un`=f-V&id)|Lo<80z*pohRO&w2Y&W26+`}$5 zI}tN(5LzqQU9;Sdwyn)f!cGeH!u09UAd@IiC~j1pVEAt7Q|O!_94oz0#_k*GWs*eX>|( zPD^@!j>6ldbwuiPx9ejQ?25m(1z`)ExlNR~(0*R;2{9;1p(wDtRBH9e1O@ZpQ|3S)|{!#T{ zY-&>1NW{%XGm5X}(oiB_IX{vX2PD=}yNlCN*m{tF2#7iIQaJc|) z&Tlr7_anf6iyQGf}a>u6!a!EE9LEdU{fR*X6e?A_ZJHOzPT5rXD5h9-h0geLYSKPK*z+V&X* z@#7c7n>Bq4vTRSSZr9mbY6c>7q|N4>V5Jm_BJNQ}$F7qt{V^9x`v&M*+JLn+@GqI2 zUfZfyDKTO0!x2;715Y?^#e6n!To`RDa=%EiYC$&wphVTRFs_*{P9_&<>`0qC%RbNJHj?|Gv}i zlsWP;4$ZagZ4{>NooC3(Rit`X<6$Dv6suIOQ_z@$(5;&$O-k3i_|w?=H$ZMGwibqq zA2yWgwCq~1b$^&>r&V-TQJ<5e52?w4VI*=n1O#R;W%zQn#M+L1d=GtFegU>+z(v5H zgjalm%No83#OWG)vS%Z0d@Q07_U;Y>i_y5g(CwP$sU|a(mSJE`dohu1pf_M}F|Mw= zM!-sl&`9yrK_$TNL<=f~X&20w2p?&N@`HNTv+PrQ;F?L|1f`pWn``M8^Zf=osNN6% zTS0;-M^3eoYslAaBuz*trR*Z)IUJT;6uF)Edtt%7$HX`oI$1mTNK?rwWYA(ZMNmf) zOGcMplr~mx#aWMUqIaY->jz>pX&L&Rtn{4zxFHqYc zl2CeTz0-R0u(T1Gm5%vUnYsB#19y9bKiR+u6OySk07=p0c|SHmUuA-EL>b5icEEtjQx^OnFGM8nYb4Bm8Hh#BWo4G z8Zi;X1-FKO+(3>z&ZEo2Tnf8R>gRUjxPAc5Pv*c~P6k9V{bJO6i2zfr3=xuc;u8Ov z4ST$1JxsAc!%or=P&h;w+Y@-eMq}QoN&&vOT@CP*PxK6wjCd(w{xI2xn5WQYf8uenJUB8kScJlS=<*-}Yz5e6 zO^^vV=8@wht)ijd`k|lv2J59W9UQLcNMv+w8E2L6t%&q-6yg1U>!{@y0w}#XYV(97 z27I=`lj6i0Vw*SnFV9jN=2^GYsj{9eGS0+@?(ggNn+5&TtkyX)6xDuc)!{eEN?_RT z(l-2h{Ch${ROsImxZ6x~Wu#eQ2JxWE13;~P$>_m6z^B6)g|)gACM{q!_xs+Bm69X; zDm%x>;R8P-PW9X?sy!N`XM{T(L+R6wQ`h!EWF{jErbj{EX990c@P9~aWy+CP5`_BV z28FqE2#eNsURu{NVm5IS>20lI7x`ac9tNE9Om#!OBL0lu;P;M)fLz~}`|f#hQy}#m zK$885k;#rm;YE88+KZ}neM8=r^qwbsVK+zr#_xRuh?Nud3YEz~kDSs#LbPQ{H z_Jpe3O-QTzs!{pghoy@xe%M&E{@2d`1=Q*Vmk-930T!QYX?fMA#6F90VoM4=AT4NO zT3Iel{~LT&Yvt@e@f11|B}EVna-^UX!5rfUb;YKNT($+RY^`HiuH`*p=KpupzZg|? z?JCRy<-!&eZ2=imN*TAPjlMl`p?=n*FXk)%>)HqvxPVF%L*qV3$p=#7MYsWuvJ&V0 z?fK)vjyMA!l;AR?kwU}$|6>th05=ru4X4CNqecB68v|SbCD24r5MOWqe_u6_7)T-^ zOeY5am!l_w0h$RYjcNWfNB}Pc5eD#R!+=#L#{Y9=2>}O#!G`@GomekYI0W!$4gD6G z|G8!i;06B;_W#$Z12Bk4d?OrK^^6A9F<}q4b>MQ}X@{&70fqga@0Y;JoiWo=4|!wa zlhzn75LT>pa_XMowD(fQ9`mBJ8{LLaTEDmG* zxVf`LSG-k%t$BX^PUo&OKd8eD^L>j+b zMl!q{!epvWVwLD02>+x_#jdCoyQ0gIcjk!Q4-!jnqw?8%h%A_r;nW&d>Ab+-8wfZA zAyU=no_cJsg2kH#;Fjy}1~`C^X5l=P=|ARNf5r?rtaR64VdrD_5s>6?(+V18i@;=N zp}$T}F;1^&Brx4W1M5-0*VbT|*i#c;`=cjm!Y6m!EyaxKAeBH-rvj-l1QKCAK8lo& zm@gCQo1}@Of(6}{*48QVZk*a&!;46Nkrv=wqWKD(p^LC4vi7OK=DBp&fC@pVb9CBw zp1Z(5UjvL{jJ`aH>a;KYapc6-V2Fs!+3=Z2c~>n~S5lI8a{{eTk^ie#y~mHTz2N>7 zed8A7+lgbNWKqyB3K9YLqf-Z&gBpb@3fe#YlYom#k}57rw}I5omy%Suz>%AiRR0<+ zgXU>Ww{UJ+0#;20i&9jg;`oMV5&n&r!cr{IsMJ4i|M<9NdJ_|F*;MfD&tR!>Qg=K- zsH268=8FI~VDZnJ&pp7gJ?o@CO8*-r!oMZ6h192o-UoicsTyQ`>6=k|VUFXB8TiR? z4?y@~$!`N{Q_4WS`TFPdQX?LI)?Vxlw!zOy&~}@)!3%ZNOu#q|2T2z|_ph4_ue+mf zJ?hS1aKnMIm#US+^63QmAth zqeDO@+g2j3xX@`vwO46^t=}G+WtE?_fD2azy0oiHhig{VQnr0YbWB^Atr_KZANyLo$^@MKyQqP4IAcguW?hJp;{9t`ZZ>(c`P^{~&zMCRt-A{%}Z?INDOp zxXf1KReyynQqG%y5(0vG&w8~%@*PNKNXI+atB{6X`qbg4t_gGHfmv-T@%%X$9>*V9 zS@^lBneBAg6K+N?HL!SL#N5V6%hqMD;0Bs$c|o|bBbxIG&Y45l$f_2S!1YT(cen3q zhfC$fO1&^J4h!wq35OUrx}(n@tk!wXYQ{(>gR-Zb)rTr4C~lzAJ7`ANx)Xl#_IU1i zI&Z@1cE#g+e9#|qFXuirJJ$5Avayh0hT-6 zu3ayA8D`^-iOkonTX;{VI$T3{1OObVMz{+zoQ561vcDC8*=(g7b9O6LTih6ko!`Sd zxsyAd>$WbB5ycs>Pk&BI+PMme^)kJS!`$usKpN;nSl#5O$0a)Ciqwo72r(AIt|>zK zIe~aw&-LB565O|rpd|2yPgJV=!Df(VhZuhP6-08(5d8c!7WmJ_QH<{&4=gPeHR?St zQ_|(nQ+qyW_F(OZcp=P;7hut7v903u;pu4{D0DZT$dGdJ$%=cn8~G)qD35F1fVK#LY# zc_7>G-ENz8wIY`li@}A3q}jj2haa!^cVF+<6Sw;#f->r}!>F-M61o#M`$x9Jd98X% zisM!jY*06jToBPPN1GcnPtz9dsNfIj>jEI}jL%?~rL{pnp+yhHB1R~ZcF^IOW{tXP zd_A7#%qp^o@R##o6VZnfWYdB=;ENt!d;>yN;!}ajg3pO0M+caD$q+vK{Dm1I9F*g~ z1&t_Xv0>*?4lGVXHRD~-T}3xxQR0F9&N=!x@-09i`u(GQa8p()!N%FIqk$=6?8KSr zZ0>{6gwDgO&TH2ZAD=E;tXLrl)||8QCAZ|RQvt2j|(I{ zUU~=SIezd?|Q<7RyK*x~|NsK6-(^vA798C+5~W%9hXE!IN8 z@ZX84LP%cXkysxZ`ks%-fA3dbvGJy+rW?}b^hIwIQ>CkWfT$pp*{eyTxaY6Zfo)JS$>0Xza?Ky^0I z+&4Qt2|k@_b%CEkUjOC1yps`<1r#1?Djd*UBvZ{=PJ=1lbLtUI*!g#1Cx)3_)b}%X z)Q%60lXI1d{SK^dd|(4P^gNO)Yr=-sBwCu`$WKhf1w?MQ$zb3o(hRc4!<_g*j@Ok# z(tOtaE?6Bw%@$-7Xv8o)kmOGQCNrdoirk2+Y6OHc+=5lgtsh|yrJhSTX`;*hKa04tuv;9|cm0Hnan5|ysiqxybPs~e{Ts-Z8*nwcB#{-g zndnp04EBG0;Y>bUnEeY}b~X^IH#n~EFB% zE8=Ygv1*fCwVx#3{Fd93wndn6vBYhs=mLkNWjoj#bLYH zqI5)BcIBNd5Ff!b_WTKJZlRjGYq-*UNwh>c-=TfveLfV0`Ta9Oeh)Ipm7S*4C?d+E z1rNDC?4Qdy#_NSyZoHlMe&$^-*mEa=BLj~zPLi$&rE?u#K6;1Cn1zZanpyzta^0-G zA+VEedlFB+pOm!!B8v{OlxVEQ=N~L1n>u)3ZRa!5{0PM0vLK2AQA4_P^}4R5yAlP; z|I!bbgEX2|Dv=KhU}%pb*}4yEEsol3MGO$`-I-#-t&q4f(uV9?jx@qKPs*?hlV0$$_V ziaZw__*#Z)_l8#p?D5!%IokWXjUW=eVei=|T{}8TnukYila@D}8hu9XS_=(Yy@l`& z`C4ZD!#Mkle}Fjk=rzPC+ilY-m%!8K6Ai&(0kKApSq2u;EhHXs#fVU5$?10FIYTXQ z@>XrgL4rHI&n3Sf(&g`rb_{it7np^fkiRJx0n(l|-J#;IzC7P;N*_{yPX>Y{8Mmtq zI!FXOQ0S??c!R|$<{Lp96G-!{u}5I)?yxDZG}m|hkHFhNvH{Jf6JckWJ-=Mn2(@I? z+Uv~?xw*I-2eoVqqhz^>>rrpxMreLT>;}tG(C~q>7UltWT!i-%Q4^#&{2xmJMNK3< zFc`02u#e|9b)I{w(hEIm*VGa2O?JD6>z7y+>j*+PxcmJpoasRk+I>^l^>Qn_g*kV> zDE~_#sKhC+2cnL!jQM`tjxfmI$O43~E@%LOEVi27FaTMNygI+{9}j;W`$ZdAtSO;? zKV`j)F29qLbsjYbbJjZXU3R};C0+YIbKjNAgb~(u z52s11{o-eUCuYi4{S$Gw80s&U=BzWwVoKh|KhdqteO$K6PboYd6!hD^5(f#ND?=cG zYw$y=URCK9D#Ml4w$)AQne=BvqV-zubr8r^AdEZ2>LW*jVk^SLLHOA5d~P7e8aCB# zhRv!vmG4@i;T5bMt!z>IDMA~k0YBljgIKt@a3sYd%op|w z#pQGR?X}D~Cwztx7V)N`;m6YOHgl4Cg2_b+g9UHUnnTG?wL*xgxR3QWphnH_8Q4^Y zN-6+#qO&w^`u<{r^yIIe35FUe0)cXxq2c{$R`gNuz{tGVYd>aAu*pU)Cm4k0V7as> zm?fvx>ju6*H<(%La@&r*~W`vGi5jYw-F8}S@{ zzFvFmjqze}#b5VEgD!_U<|<+_ayNQnJ8l1l8tzjL{l2FJdI(nUXSi>=@^U7F@wQl~ zw};?Y=j~)5QE+rkoe%9RUJ?6$i%W`e{ zS+z?(HaBMJe~O^tn}e&8D|2)1#Ax$Dfq~2@%o#!Ej>8-epDR{fl+UvQlnf--tdn7` z{Lik1J63C``yp=7f#3`$AE3E0208V0?BCNSMPHGquE`(j{^%k(B z?nYZPyDQ~VfFa#{hDqt*K7~YpH$bO#fMJ(D%BqsX7+GdVE%JIhGt_9AxPl;SzbI7x zT=Gg>;!+)-Q6fd{L{f#;7(x#K1Mem?o_a+&3b;aFh2D+2UQOoaJ8Dj>a_Qn3Qps{j zh|U8xgYz0Ok4<3o!lq36WU$Vi?R*2zHxfk#Q*Tb@ys}=efYBpCDLidCd+O>rs~uR{ zEAn1qJYU>nU=}hWTe?iur8?=&*Bi&2=lkQ{wuggNrVMSShoX8!s?PV-;<4T3oUJwV z0?pOhEG&rb57tdr<>!@yeR&M58ne+|Zw=5TqS)83nr42#oaZ-G0a4@X_-I^SUOZfS z1XidZE|x~{SGmwbW8P)Y=^)Kkpfsdr-YGE{W?5Q91ykvA1?21{o5)fK$ijm_JJ@q# z)hwKQD}KJrF`eTMz(VA$+g}?>6UITtZ^>d#cYOY z@^q09gdW{HdS7=v12+f4v$0$gd!ohYe(tB6(c`#YNz(ELVoy&Pz^GRgUTAUJI%npZ z!sU8lqD_arVFRJ&Tx!5v_5dfGk=%|l@~`AMKe>60SD+CULG%X9Mekz|^I)3$dJsvq zPA)uVpB+ih_?ssN9z)f%NB2Wz2$%#TF6)N7G%wn-k0Ip$JyjH<{O)m4Kcj#0h-{X& z`zV;Gw&+3?w{6OUAn_`#Vbw(V`b*Zbk>{-v4)SLj!vZ5k5PstwC)^ls9rcQ!7o#gL zPP}Pf+vA{~3{M|q@>!s#5LF`S%lyTHxTvf1l!Tc93{>SW@xXIs@i`??ku_2{K-78% zaFz9WH%c1U*38-=X{_>b^Eu_dwYo}|`}F{}qWZzu`f8>aq*qlzzlZ^b>I-~E_*OxC ztyP!*(ezE0fUX_<-rmY&<8;ij2&9jH&Q?u#*&eFc^9c_li$tM1%UG^hDpYG-otBvy zX?Z0yvg&LxwP_(Voq7_!UYks{S(PfFQ$iWiBB9Dr<*AIUdaoIO=ZlX3ubbHqz_b_n z89xdp0KTIe5)B1h?mdt2ZjI}~4fEuG=_fb^SD}|f;q3*4n*~gvpB?s3z8|J7N$3lJ=Hs6QJtLNT^(axo;{yz*B z7E!+r=034s*N9~_5AF5#(G3WS9B2HI)$w}}b)4l5xubP2YLJq^b97@I+Z98JwND}> z1oy(w9vrec9N?<^M(PRF?fQKDG-67TV<$V0a>a1tc<$m?-?DVl6rE_?YS3RU8n@Zb z&tE&SoL+aMoxX5JEwGcyIOPVbWzDk+zSz(NeV;z7xz$nbVohtJJWcfar{FUT^6Cmn zX}1TxiCb=*w7jf@yl2YX1_%RS84pDOr2(7yHBECgb0a^@3t%JuY5`!#0*#<8YN%ZZNqYgS1)8TP0U6VaI2wVliUHYYbtzzJ9k6FeIHZD+|4~@ z;tRhL#oEkzwb6PbH|!t;&74(@5Ny@TCwzY5Q5$07r&G86sQY49 zd5(ZWN>HLxt-ppSXa;oV6>N-;-K}|8X(N^b7hnKmM5UpN7Yj zAj04=1%*06Ib}}(&OVSYu}YJ1`tV77~=g>MhqEAVOq1yhz~tqS%;Zq4C=k3Ath$sLIoSY~}A% zNunMC>f>>o5qa!;h;JSH)#>5Xki@OBz2Gm;#z!N%H1Gq#@TaR|{4K>i7byfpvTwM% zbq*-iio%U_F@oHGliP}oiiU<$X8j|S;q`ipM%Qp-R}*utu?BAoAQ)M4y;#Ar8(H!^TUi$eR0f5OLA&rSQz_}!wvrI3b#yWE5% zLfFF+wCROP>ETD6? zKyuf(_6|^}sOuazuCAED6qjD183uUqYS`>v`P5}u4}Z`^qcdWO`A>-jXDL+0>Ufx@ z$?*y~N5df>GEU?*yKR_@cKnt9%Hh5z-N973=rBmdj5BcAxVfaG(dK4QXp_s4RWXqD z!kS;2-%Do16sxYLHqI!~KyeCVax_K~gApWOPnoT<=@9;S0*Th#X~o4k+On~TC>0R- z={gfS{bdSD052;>Dk=h=jH=!aFJNZYU5tmrBAkZQNy6kID?2p|6N3|$ThyQEt?37x zrri2|!?^PGXIyFSl(tcl|0^*V2YS=7^_0KQN@EP=MRP53rI|Zoo(f7`=wIrWx^+GW zMW16rHf)=uY}4!E_ih-LFU~<$M{bzc8TaE1Ay}C^deS}DUyGYNj+`+t@LRF2g3}IJ>FdF( zK5zl>w%asJrz9d$#WCD>c-`gWs(ne@`eklnyi}AhlEd3+#U*D9EAgInYW&t_n_=sj zD(}_aZZm1mCP#K#C?0nNwK3e*aZ)E6>qn`MP?8kh@p(R8E>mUOU+~>h^UJ&6;Q~P#sCXnOJavri+)ZNS>78?GNa659@!_CDpf7<-l>W3!UwgoK76~Oss zCm?VsqcWR9%Y5w^kFa2Pd0|0WxuA-TKP%zJ>I$EMU{Y2g+YwlX%SS+5T3;Jm>W9T(FwBAu8fbJ6Zf?>sy57Yj95Z z2O+Tj*U3106@&PCtqR*j*%Kxd*dKv|th2&k{06j6nBm|Gg3^w!s54(`7sh#^Jw7b@ zMuIixb96+#)xlcv^XWVwc*(^rftL_$L*PYFJ^#i5!5%6@HsF!N?{T>1E^Skv^;pae zt=eRK5HW@&MKE;wWvU6$ew!boila8FQ3ZW8_bImWo+`ekQFZP&PN(jp$&XcoFuS&< zCXl!lRz$p6j|Xm!-R|=)@FVt+r*)M}yt8N1cnydSS%>#E7QUn42#eAv^Ocf z!OIqD+3BaQ^xSSM#zWVkqy_9kLtmMYyohFbIzK{hgH}y?V_Vib18CZP_!9bBaciq9 zY{c5(c=XALkWEaI#-|D12eA!SV5ob1)aJZrO-AfKy2HmyNWpBA!;_RtpgR z_mwQAXNb5SAVMxd6`c;r2@fxWp^e3LcDDbDDnCj9WQ30jNtKk10*s_1*E|t=SC3C*Ky;Zqqno>#p9R`Pum^Ah8n^5}fNQ%}p@_K;g!p?hg^os2071`HE zQu3wq+VQS12M^UAlO)Z)B^QoW@hvk?P=lle*5$nm`X-Ag zZi`2?^B|+A)F+}3oO%3OP(gHPgl%bTbRCAFp^!5%(ZhdSw{^uuCoSmTtATuJr9(6^ z96*k$sbZ8s?LjRf`n@ex6du0G){LXQ-Jz+vnHJ69FQ8ziF7pedt5h6Cs2XoUByo^< zcJ&kyZij~!T)$e3t)ifDVq}q5)6V3akajHUHol&$MyI)wMCh095SJam>z(I>QP16% znIYvbmInWeBIw2Up^5M;b;Y6jre?>lb{I%|t;FQtqDs;BkzKxByHP`p$bLSpL)o|y z!@NdFWnZlYha-UF>D9K;lyHK^)R3@5cG#efN_}w3*;QOicBnw%&6_JJWm}4;A z?`=in@Njf*3k&GLNLEfB8Qlb&X3>PVkU%vl0;;^D<70JI75GL`NlNUPZ=HX-y1HzK z7d`4sByP+|0nVPHret& zf&_>(DUOUS_7;M&4HQS6T+C>0jb&+}?pCT)@$FQVt+fi1pXTv{1Y>HzEi_wcJZIB# zQkm`5`KCTJQX9$6oHfDC_=jOiINM94CNBmji4+-BtJ5J-UcbP=8d+mgQ}puP#qSu2 zf#p33B{Jx#>4v`DH+wd%pVTLixVX6M)-0LcTUIAz%(4x2SV==Bqe?If_AG8-TB zS!pY6FSXMDV&my{lhQLNZq3jOP<97gse$TfMiLl#_D}^~)`o~Mc}hk_=#1RlxOKIh9r7*r&NQ6BE@gH0J$w}LkK7tOH|w1*KD zh{lkIYhMBn-tO*LMxxq+8vLbs6xn)I;NgcK-k>ot{fs0-ZHtXsK5<-gkxiq6-ZDoj zqz!sPW2adoM7VvRxzL1K;A3%_dq>u^@=cBZUhzXdwP1LWPs0lJx4M1SkrE)gD!Xt6 z^)0BV*ljlisK?IPRweK5k&q`f zVh!Z&R&Ea0%~<8G+?4opKo~$^X!Ze7kqBj2ZM8Af^WyIMIuoV`ks|P-UU>LT#uR~R zeL>_u?`6g{#HlGLj`v6K&JN45;ViN|XPgrmKVg%Sl1!}!T>2~{s;?z@lE%>6eLp)G z#fWPnZ{G~pB+R9xBGIJ{1A`6IuH>z1)=%JbOzt;3x)NF!519u;dJN^R&l7gTNqrYX zZG~_%M!HxqI!#10kAR~SLKgz}uE;D934~~!Hss{wbJZfmniY%vP;NH!A{&dvMDXMk z6f#zS9G1MAIhbr*-_k-MWH^At8Tn*eD(PIc0_=uVSCTt9N)*rwpSiUx zX`9~Xq|!%5(#`gpX{w#>Ezx^Ph0skK5fmw4(Cx>LE+MjH9df+RAGL|B5li~VrW_gu zYqD?&W>Eo2p;p^Xq0|8qD5>iftj|Eigy`)F~SZvQ-2WuEwD2bZ;eQz5<-$meD6EI(Vs=;3nvp0U>0A zw1o>&|E~+cE=^oq;&5MoKg4O;G(BMTX$jfc&s6h92lxmOvVxX)$7>ZjCJ_}8iMy8p z_F?Ug#5rQjFW-vL72<$P690l_Wb)GBF_zm8AnmA{3x-P0!_=Iyv~1pFP2W7d{Mw6 zkN(-5(RFv=CM%;{xntN!+gl1ml)7R>6x2jWMP}e&`0_?*+xD0uW9TUV8|4B z#R(%&i&#!nepP@5%11&RI(U~fG0QXuBk{wiu}Z0&L&%-p5oq$1HBTJJ*nW6$_CZZp z-DE1WX|K-^+50*vjMH}s&%iy~6{MfZ^?ie`Iu=t)uD9|=qxZ|OX-p7{;+#301dZfZ zN#@2zl1GKZ;5t~A(WVom)@mjy4mYu3NyVn}!Hn6geuB@s2?#4<_ z8lVR@66e$P|0v({IvrWNZfTs}T-Aj2PEJPud)|7l>|hxX*ji!GPOQgB*NGIQ?mv*$ zm~luAr!Cux`SYQl@W*@H?5dZBASpx{i!kzcS^^2lXBuVEO2zk!k)>#oIU~S=mj$nh zRhCyXFPrNzKRPZ>6tosgbB2YrRN>G)Pv^-+bIrs|y8ed0_e#xD_;@-SwkdouH0!(l zOlKhlVdA4G<6ys%fnBVYn!+&Ss=c|wqyGKOt~>ecu;|E6sN155A$U3_i6J)YXP*=H zuYP1vOlT6AH-C<;TOgt}n$6t``*SPGr$~_|>jSf+eX)}5VOh&gxKm>s`f+MVbG7tO zEY0)%@r>a6=e+aCd~Nr*n-SJeAH?X0bx)vh)sGQ1Fvt)A%vF1ebanA}E9U+k@i1!% zssvTBSr;355R4)9hd=f)LUwzIZMy@U`XDfiq`gLwAs`kQ{s1;lI*~v~I;Fhr^UT}m zUb;p7lwd2mD$a^vDUA2hTfdXwJ>ayQW^nTeb7qBTC zH9~(rN&_DuT672raW0WHRpUC?bYg6e^$?~09a3eF<2yx~yE^J*C59IWQg!W`4Y0yf zzv&FX#L8 z$<@wbs@`qO17Hp;CrHH}4AhhW<*u{lPKr`qtP5PcyuawX9unswKei*-<}1>3_OAO& zqECc0&CmW)qs~Uw7-j`&BIDjqCx?M_M|hYE=L+F+G2Hd-Zl2rYjT*NnRaxg&*%80v2MzU$CDJ2vNOQA=UfbKe5}28_XH z%UIev9_<@TrweA$qGY%@Ppt*{&HsX~EYhU#Tyzug*|n~ys)l)^>I>Ya`);5#k=ZAy zPd_r^zB>*Ekh}hn#bpJ$Kqdw1@xw1%8aGxIt^1oBi+Jc8h%h~Vl)VVvj{MMUNwG+& zx{s{*tcM`M1(k=P)Wme$@K3_KY!_DSlYpR{O3?FpRK+Tlsh*D(26356>~%blIslQ3|$Uuc>kbcPmcC3qwrO9CHU=hV^C!0_8>`3)VYTJYFPZdd)D_X2;Hf>YyPL z;;kU)D%!Tb%sH0?G7?-{OVJIQ>mf|NV9saNwCaYg9XyD|mzQv41w3ikC=gA%G56qz zE4=tKAb3lc>-WV;-pRH_*ENKLQ1$+wMCG(wo4zF(uGUDn*!@=sT}OmW=f|P73}06a zI%q>+3z1HAZ>&f&_#?omPZ+tU?%v7_;;ZVlbVT&)feH%RIH%td9s5a7d_y!R9PJw@ zIuDH26~e^Fynh%SwS~596XSHGZCBUzfVXP#F<{9z45az(UPr?zeuU`vQdn0dO?!=| zI!~*LA?UH!M(G9i^>NIfdFWlBG_0%3p|(geVLk_RI;EuY4-d**&`Bj7fbLO2NbznN zeKlv!A7N%SW;#J(bw!FYcjHA(DE&hXC0y~N+}m`d8SWq^fhhsrl90o&ej%YOsplO= z#fWd==j90R5J>7dFTlApU+|wP2763KKwwG?zuvn89P;mH`_F z3fHI2TY$nh@yAhbhB#*)bx8i2nddL`gw~$HpYHW?(Txt)5@1%n<^<=V;ZWcG{RJPl zaejj$fHM+QJ*+7M4^9gx3cqcyM1U{9 zUzR~zNnOK2`SAwK!CJFbgV6}WYNJ_PQ`6!MYU7 zs)Uqb!)$3vKzn=B#U^n>rByb@CfWwyuFko)&DeVa#dKo_+(f@0(8dw8F3SXoA|+Wl zN7?13pv`<=iJPsJ7%D3=zquJBwvg>7il)7jD6E}jR+t^f@up6`t(Z1Qv#*vZP&gi$u*iHX=GE#=zbS$G8d7xQX^b>(I8v z)CsWmUxnHHGc8pEj)4G!Dcy zNOAjO*#*R)CAMzM$vTXf96^j17lwaA6BxMAJz3jF&pnyw-tPC;`F#i-xSb^8>Rt^N z)bna6Be2sD{XguTRa+cw7o`IMfW}yE^KHB^Do(+ap?*uBNdPQhzi!Tk;e?B>n zRzLQ&E+Tm4Xk*zs4R!AboVWFxq}2Znp#`gHkM~Hu<^QyAsjO5&KtL$aX|Yp(;5I$F z+(qeU@qd3G5pmP5lKmE#7hAX`)$Mh2^yTpEEU~*=#N770t1)c>(HgdP;wJERp!Bt# zpG`sMmCZ~UEwzGMV^Be1?v7NeE`Pg`FBBT2Nl8BqgS9-xJdN_885b$L&Y@BP>c&lI zP-`|Y|5ww%OL856moB6~D#8l#^20;%WW$aV0-;Eyrl_BcM|UFpLJ0>WR>-xQ z9r{wv?(XhnbaguqqZ#pZ8Dlg=3ynv2e=GiaMMaC!HB>5e)mP|mws-&cZG=PZbuFt{ z;ZK^44MD_hbWvpL+_?2*ScqqrKE;rn$!WT-f1vrPbYcu+-)B7ndU z`JwG8gTfzGxOzExK_r0diShDNDKxaXeW>*^LiZWV597Lq8~~(!$0)Ef<$!BqgHNp=ZC@ao=BM7*oa76_1eQ zR@m0fq2FOIW(IvcOTcno;rZoUm!mYQ)-(F1j+JB(vV$s`)@PJfx_z*eq9BJi+S0ha z&_6`$b1Le8DQEpwA96)Df;O-}kF3dH{m2mUu~Q;4G?NtffrsY$^|h9!xqgx23Lkqb zx|DRt&3Bt)sh?7kbx&sguzt6o(Za_`Ts0SwE(6$ES3?)!9d|;<)!2RO(;US`#3_C& zR`Ou_o~VyM(8 z{iC{q_l@>%Cli8R^JcgJ+0J=P`~ta31%xMvI%>U{;j$D%;?<)7iDp?~(YhY{f$=2z zDtAm02a~M*d3~L|{^b}_4EKuj^|_j8AJ~K9|7fy84D;bI0%W)>Y0_bIpB*B4B!j7t z4gle`$t^z@KcD+$J^_(|CD{;z-RJxi9|2~>$u2xCZ3Cc)6BQlNZx+0kKI_BB*P35n zZzmCA@ps@dCuxKX>ELp=6#xBWmzfAa0dJ6@pE<|?XY=}-E|0lO8eS1Jvt@9uP&kQY z-x+)iQL~WJqzG#SqrV8goOB(R;nqdg!z;#wwFOl)ZTJwzD}}67jjG_aY%OOav9f24 zEXeSm#4r;TLK-DiW(=Ffd->sbZof^*zi;?lW4Y1cjn5m=koQh62Z3ijuYL|tv+M$q zWzY|#ZoE0_uTqX*byFUs-L(#*D z{pyZ#vrUCx%JJkAAMCq$iw__m z@Vsc%L?;tu0Bi~zA!r%Drssh-|_Kbhz z%N%)nC23NA00h( zM^e!c)0StHO>kxqZC0C%QB9h{xr=a`#)wg%@}@Zj#_Fu0({KdkehEqW>;}>xYHA@ z)a;jS93RRUTPV{2$E{IrGp|JwiI{ccFc{TF8F7hz{&xmqJmzi6UZ{1UyzUd9Lw7Cf^@3k`4b@LRLrpMFSdU|bvCq+l00QsL{e8s$_`)6u3e;jL35MU{`; znOQ#KV8z0C7Z^#(PvvlD1GTQIde2<0WAaT`6;-Rf5^1wO>#F$f#$Cs>o>aggcmhdY zzMUh$rs){`Ytz*pXIo3|lr7zyeOuTZ)kQ^ew$xF)4xaiL2^pCT>stf?pMhLjPf1bH zLJGp&wNv+H#YiMiUE_W|we^>8-1fdy(NZc`shOFq3o|pdnCe%11FSHoNmKjtvK`nO zmK3Vbf~;y-%EX5QXU(^_Y6(TAw`&_4w!;La6X|S)tSILXBxn>(Ac~QAzQXa*QR5h$ zpUe!SMCB0YZYEtml2`6E=VnCZnCy^*I5!W1BqwtMGnqmESL0?p%Q=BI-JPs<@Kcql zGHu6pMqxpZZp`g*!1HxS9P};i^}hOjpeE;Px5bjFt-s$HB!j50(03buMYfBO>HSzJ zfPX;LKUP8cYUaj}3@Ps7totT{0~dgd)}UTIb|J;KStH_PrQ&GKj$FC7r&d?d4*C|d zuuhb=K@&eBiD^F`!-aV|XVOVNeFtCAcixy)^=eA=q9Fs}ri;EdTpHE4PHk>>H!F=L zjb)g1SgAT7_(GfJ>uI^960}1?1S%t9&;=-Dht!pcn)u^qXWKI_yqDEq9#akWlJ7~G zRs%A|Qy8uWEj8w*P#M<)Y?##N82gMb6}6b6n1*N<*lX|{V{QW>(ZXW9+>o1NkL*v~ zThR*PCj7rV(8oBS@Y@gMLd7gnN>%22qd97v?HFeV0!O`1QJ zQf5Cz$u)C!6QWyEP0#TmrOGEg6m5n{!>gpa?ZV;xsSO@EMO>Uv+DF1|MacX8iPHG| zsd6mvOlc5vFqr}`v4FF+Nm?kJG^v)y=*$GQFz{nmvwjt|a$Hh+`KwaiFlyDU&WDT9F&yUn4&28;Gk;+$8!rF9&cqTt-z zWleXkx4vxNXoww7AyG@@Hb}J+U!Ec=O|lxh3pv(T^e#L13*K$r97Slq&3|;)hMPa1 z`$d4^Yx^_(S-_xpBfcBkN(5%YU5W}5`6Uq_Rr0IC!C05kl)2M}i0_fbu(YeD1^^UY z3nX=BQdo?77$>=(A`J`bO;FyZfbpL(0)@-N?y$#vB;8|q7nCEM>QBQ_ixdB#ih8G6 zb)|`7^{9aga<~ph_o(Lq<2rJrDR=O?`-Eh-wUss`d(*jISO$8CeW3^5+&Lbw=#aUD z3B_aZyGrYB9GnoJ0xji?*Na=e6GvZeSM8s0!`&U~DdfJbHV@y%FB(uh);l)v_p?}Z zGJjyuBWnvOhEv9TzWg^w2;Tg*ssnp$`Pa5|)Gx&BFH07jzrM;`%2G0MZ{Pxu_@4hM z#F>~SR-A}aF#XMcwM&*hWgr2rq}-1&o5A$la~WM`Iv)eB*YICPS;rrbILfrSR4&0s zoEalN<{~QoHxfS8rU@cH$UGBq`Cwo8a9v&a+A7%hiRAVHSK>VP6SluY6*Df)pl^B0 zuF|~6pQm4y8ox(dr`JQ;;x4d071a36I?qvWZ= z$(ke0j~{b+&A^}dJxbv6lLVaQ2zlWry3^|)KTdoSkfg8nAkt7fsZc*L@?ON9uwqs4 z2=>FQQCno=5(E(m@F(vUEMev_s^E z14jw#RaRH=31l$JcPuE1eAT?`H2(z*YyT-#3j-Egh49E{}i8u?_+=8XTKwm zZXo@gU_IDWGR?m6=hwY93ASn)?BzW6rxM5?)xaHK9YJ-Fiuzlhp$TjH*IlM1KOE=R zTO#+uf3b5@aB-6BP`ZOH0%bJ8W_5-{Y8)TmeB?L`2yFwnylH_{Gp@ny>oQ22-WO3q ze=*W+i}jo&k~Y}%8@J3BzyA-W%|=M<$RX#?!8*V3G)(V!_hc!@CDU44sRX+;wexk8 z5uRT^m~TDqk0EAJU$si7FML?{rHk>|ZjLK&3RIUY@rmF=_A6DrYyNOu@*w5jn||mC z+f0@TP);fk$b_3>kdcy;Y@s-PYnwhf;Vbbju`xqjX9y~ zZc2cOF~JXO5p9}}T~}4^tmxuzhkhGIOo-F$88i3_gNfl*Nc35m$PJ869qb`H$^nZ% zz~)52A~$cmoPEJ!)5ab}`7KdegkCgu2p+ofji8x>%E4HCr(gA}%>=EnL9@0AdnN>1 z+f|yO^%~z_20Zb%$QdSCtx~3%pB*Q&NX1@2P-DYKj?8Q3~s3Z80`@+GM{ z4tpb2xx|hQSuorNH#cW+jl@m)EwdvXS}F`Hnh88Tu{&(&Lq7nMbc4th%tKuu66&F! zYBq%oLDzbSW|&aDpi#OAVHC*JvD@CFj*YP_p|f|__mRD_rNx1G_OAgxUG zxG5g!;VyT}MGF;yZK6{fywM&sOdBuYDEzLl|KS)yr#Y{|N{3_hLtc9EmEYDvRERa& zp0oO|+o{$zc~^~60ZXo4+C;4BfzOm~bp;h#=|I1TEO5g0Q;46);fBUY&AU6_^afGecvK_abEL#B_0!uJ{V&(kd^x!+uU^&8kybSJav z%#Ug<%2lXC)96+oD%Z$`HV@oWj{GB+1G_5U>>Qv-j5i`$iDm_ z`?6VjF1|JZQfYwu33?vK#?*LnTc9M4Q}FamuWPtm_)J1VGCeo<>A#{(8rAIlJPjiw z<15{oGYPoMqlXtNO=V^Uhp*~p%iV#tV1PMzvA7fl`X2$L(1 zIbzzMsm^~sh&bf->Oci*yG|6}+F+a?qiq9O^qP8nsE`UNrJKwXf)dicOeshWWK#)P zD7?QvX(S0~a8lkm`~>}$EH2nqMZPbEYiw2Ub8lLkJpVR;HDA&;k{fKm_<5@>3E4`2 ziz>(*mB?v9!7*Q|i5x4kv+fUEtg)Id09I#!GVp%+qw?8~*ZP$lBk z-SdK1lH#ukyw?4RPA^kVCYQ+T?Pm%nl=YX7P+Jnv!&Pczo8y;H`?MxTPSgl;{AmGV zaAG<}9}m5>;7!v~9}{V#A;`$YH?dd9;CV`I%OKbUZp`fe@U{NfT(_7#ub!?do9@tKMR-9R1!=L5H)lv0sN35rEVE-vGk zQ$PgK&Iog70sxF29vm!|S5P2~3Jb!?&s_MRK{NqxdeS?CGEJg1cy?>-elIN90iYeQ z@!u~;bN-@WvY=frO7;bXb)P499)m)?Nt|p3a_py+NM5ef_MeTL1B1kg+O}8p%kR)4 zf38tqE~nOIv~f}|&}_5CA12`p#28o?Mw6R~@di))a>v5?CstW{vfOC9A>->;ti1xK z@@yFDjWP(R=E%~<(VNdZo_2tyX#zH_qF?M}orrZrA06G6q*T19G z$BM6x+klQaL0S}Glg0vsM|CExrgw3K@IM(-JmKv*4&dv_$KS$=^x+pcXz$RdcKPnY zz3zM>hnzgGd{H@mbKGZ7K$S@!j{q?vn*hJb28M(*jlTWe89a1f22Z-eb zC$sFbFGGc}(~QRQiwH{Qi?6~tR8yjXeR>i=hZTtCK-=bu+5r2ooYFa=<$*q#FZTE; zyDb!-D2$P3>(uFB3>n6FOOSeB+b^}cGDAvuO#S}S){4@tC5m-PcHz=w;Y{-mDwoNX zX#&B;No%dHLqGtpbF<578qj_Xy#&PJ!%;+BBGR>m5fjn%uM^)L*o!zM)uEh&724KU zm-pR~&!>jqm>$d=y!UJ&=LD-hREXIONN{Vvi+>f$%|Mc?v5i06?>*gx0m$jg53y68 z$tFAVqUocu$z?{1uXh=Yw)|uK#)u<=!Lj*RSd*>D;YeS z7O`^teOE`aF1T>NIz>^1>>sIn`A~UEyNE{2-p>eRW+VfqL&C2fZ!Z`-J44?bfB+H0 z>q&0siTLG7G7(X^6pVxfZ*9lRKtr%^gv$-cNxlxGDAz>9;ZCw+b#T+1ZRaE8U7_Cg zdeK+$GGSWDhxwMrH@Oyc*7AOEM(!8$P%?{EioZvEfJ^Tb3*%MW-nSHg7E95-zjS*_ zVlm`WN4sWxsN@AiX+6G3$T-%Wk=1s59@k9nw@bDo8!u}y6z{S)3`MO<9!Zc!ctV9A z5UV;4DxZte($kecG>)|2Wpy>}fY{Oe5HK7a9S-n_ffXA4Au(Y&Lrtxs6Dd zzdtw}cXS&+{1Op(E1K3@`H zTIRSOPfk8VArCV&C`fBRYeD?qAen8@3J(~Wj?CveW5w}clH#Eoql5YFKIV;FDuy)J zBxn!fi0)5Ft}HG307oZcFWcq+{)1k17{~+h7ob^dIsLtjyr^&xecWd@s7V=By-gDpa4yK!Es}_wZq*@|vr@*R;^ehRU z2}b=j-W2o6HlkF9e3J9V~o{G<}i?l0Gp9U#^z-+*jLr|)7+bJm7Qz8(+xoW+M zH2ABI>wzcBGjwiRUpPv-E!~{N6W(voJ6CvJ%vJi#nTcQsT*szT?tC<4()&q^gWM2H zcT9mdNKpj@uTw}^XT_J8nzDX!aAE+PtUn`M8Ps7SPjn*9+XIGLWnEF9$M4YdHEdzg zzFfLU7XBZW1q&S$j$N~&Y_Oo49*&oJGs(j0;X5`6BIUBgRl$^aDnu=27;ntR%{CUl zI0ueLQF)h`JPz|qj`tHfoT50I2j^hrqGv!4uTW^08Zf!9&(DV+!pF!eDPgEx9mE15 zoLvlzb&2Oo%T4#%Ni^UJyoCUGISeQ2odK4K*E3cIsMt_%1$SbNe8NjuY3Jzxi@rnO zbfI}85dV`y;OrMkDg8OpE`i=+P&Oimx&%P|&;mt04&mGbg@ zoMb33@8Iv4G-uuka5`1^f{pM`L0!d z)LI`5esS@!J%OF@b>(O8FcWSl+&5M_j(onS2O!{>{jw~H{fIvhlwmS`ak6gCH7E)Z zp8VfmdRsFv*2)pn8sKT`7-7f3sv|S?_^UK)J38lpmSR^3QIaNyqpLJ)2Y-niUd(1C)E! zd?AVjd87g+6jOG1bKIkKPt^uJ@uB?3O#)TXGl}JnRK4QvF}v|a3xw9Miq{hdGhhBB%4@$Dy38$ps%QBBV7v-*1M1xzG(B;H3Qw7a&id!Z%)7T61x zuHzKSQiyh6FbP?nuZx7Bv{`P%j?wA^6x|G_u9`n0BKcu!u=Eu_X(tM_)pFC8ne6TK zMn^s)YCD9oDwCOBq69utT0~mv35%}7pI(G6s%?b@rc8c9Ss$-`H<)0F`?l8@Ov0N;qkHxSSAEZpEaj%npPdMMJm|fDq@6gtzBkZ$o7%r)1c_uS4-q z)6Tz=Nx&5&tpQ%J%Zaz=383O1lf6=LZ>r5$UW^mH?v*1^mX;aoivjcWe)J<-Ka#8{ z75>V<&EDr&rQ4mTErqTlUTe*-OgHdC0ibGmP9-J58vlhkQwl%WX5=D6&(7DTmI_ zOpTW&GP|^&o?^Kp^rM76PIuXjTgB-Ag&|d>tm*naYtBO!yFh(c_fsgkwZO)yFGzN` zyYCpYm;;uIG;Kui<+^cah_*9&;iGK51EEu*be;_SKv68|S=BOuW?W@<=^;Hn-cjya z1x;-hl1XissNoL&@_SG5tRABc>wna>Qt|r6e~U0}Zokxf2x1Ycd;)I`^gT&M6L)VF zOr$-0EO;EWgs=0g6w4+=yzpFXc1-pH^5oe=c!Rxl=A=b7`65#}3#d9&*f|pv2Zevg zb_Cn!2$*f|Hw^@daC_|VzpvQ*cABTlSbtV@hQ%}gVT`R_?<}QE zDkBUmB3_{3K$UZLMjAWW$XXe&E$Ynm<+FiqjGRq5C_9m^wdj}oo@T#Y_p6WWm!r>6 zn~wB=I72b}6Gn0Dou|8kT~e!mYkkeBw~NX=NEb-^4x}YTEEy6`#A~TBq&Yz4yb!;^ zGx#G3YjjNn94HYsMU%;~- zMFv=3>T*a<=`ZKoB%&cF7-5MS2*|77oq;7rzbv}WI1d~lDU6E}8GqA88AA{2j0TSqrD!9u z;OOmj4KdNh9_q~^3Eosv&iBwH$A~81sXtPaL~!76Abt#AWmhhzsw9t*fiu(WlPjP| zH3V;Xn%~qPuIfD6TYctK=p;fMTsh)pJY|XTyhjWw zws9y@KBCq64U(yG2r}l7#65q%81}+ zvz?N!z26RjEVoxhvxK{|EejNK4<~m?ZyFUi2x4HS$rW#UY+K>fzirncz(rWaAvjhq zAS58!mest&2ge!d_kdO7J-hmOD<_mxc;P1dP^7r-`p#DaO_o5=< zGQsCXL#4s4 zF5&Jtnum&3D`i(ZL=Jpd0`}Iar@Hhs0~Yngm;ztY3S{xpgRVtEsn?s3?m;wI8;|dblZ>Co7r=M9sH% z_f-7noQuRoFcS!+_BBg2qa-UBl?s8JFmYjl_GN%==SmcsL`g$)-8>vjg``p-yvEdA z?m#xd`=h4@{jjvNuS7ZvaA^naszhsliRoHv&_c*QR7FXmlCbLs&Fpia$hVeV;rB!=t#$Od1~lpkqpcX3`(W<;YD03!xf3ja{PK1|)8vb?$Jo}K;F zViqk9r8#TjockTv7W`yteFyfn3+*K2ZPV7-Wvo|kOO zK-vph67)f9Uk2)TZ%_H&fwyuGg2h#*#G3|5U_nyZd3j<$i&?e3et*(cT&|+xHu8GQ zu}`DSJ%Y!luPR8}3kp88bZOqaw1*vVta<-*Y_)NhpMXXepkcliTA+Zr%_G$T26C+(p)M{#wgkp-Npk1W+@@Y(dX(>v) zdTUi$Kq89k5l~z%3ww8WbaZ|mSa0qlQ}%^yS@oTKU8G_4H?Pu+E37H|YXu7BsZbHo zphU+YzWaf9W%J~1(a{k>+>NbhO)j`kE$!OsKT(0i=c{jfg5iIPOr0rWjm#Z#kT5WcK_GjbbAUhEcMh!~)30&(4M(q&yE(p@rR& zX=wM;m~H`caro{#cZD z|NgEvEM=rm6{;n7qh?!{wqMSUOQ>1M&`pKCGF=Etsv}_n-;0Mp77Zx>Iz>bHiC1+) zyEG8#D3&&xGG!48=MtSHaks>FHRI?56v+S5S-bsto!V&DgTtYHs(`^Ij-6~Y(;62B^J};e zi;t=d1QWP8r>4%Cd#G?8g>s}-+>lX)Yj?j4ZH<6DONn7fY z*-MdUi=X|m1uZIyQGTt60jmLbL{V>dpr)#dTux5zK%pT z3NX*rqBV<}7oxS7%MuDHSj~l0@R*5VCTwFS&?h8}TNA?=JCq)Ly-0`c_;y7U!-=W{ z7=o|GerjoP7$pRhKpul(q>~Xsg;OvQA33KFKc=RoiHf1em41HDw)(67``)yDY6?7P z%4r-c7lB#l>17n{&h#Vf=W-e8pQ~o5Z18ckpaQBElt=STmk}y8qSAK z!%kr#jG0UV=>ApU*dUUdogFHU+}+>TG|D;^*`DZ?@z77uK5{TJy}G_U9?bV->T?OR zR73KdY6&;HuwY2bV7`{78w$!5d7gP)g_>TSUb4KnTo?5Ug)%jqSuu;Cph_RBT3KgQ z_Z9Ub-Uj|3ZUo4nSM{ywh~ra>th)H)mtK@42mY#+E8Z&Y-Y=YMeo7qOfal%3Z*#!u zYEMBQFVpeA_TU2|12gk~Bt~KMIifQCKbhf^a}>}pYRqp9a-VW9YrLxHNwDJ56WDA2 z>t7flt!x?T<)nO1`22Fq7$XF{#mktE6Tw741|tku!_H7#Q-?$==qCJKYds!r(r6>L z(V+5>SJ76vgQw)qylOgwew*|F7xKDH3E^137vQ9FfEp836te_WHy&?K@}@UYfbcRR zXg&h|UTM+WP%+C4pujuS+e;;{Qo2x6Dhuz(Y>#L~0ekBTs8-^Dln(+TBKrHRh6`tj zJdJMhM_9sGT~un84fqW!%uTq5k5Sd#w#p|W=rne1g0d0f_`$u)8P%fHrNJ+(hn{8+ zf6khXrrEdEd|m(Rj$R@z3Lr&9TsgcxyL++MrIZ#Ll6_4d?bq0iAOh!AT?{)aO+^SY@)c#AV z;{v)rGP$s5T54+iOp(%$dOl4e=qf35>RCdmp@M@U*87tRN<+s2)M*|43C!M&Lrdbo zyd};(t4+M`cqIw72DO&aXQQd?CW=98M^|S}oxrp6i+WcsCnXuO+Y^k^;3_fkQ0}oo zqvj~wsP((#dtvgn18#sL?B1%R$?}^0b4Bfjiv%`q@L+_#h;Q9+!tW&@s8fL(%RdgZkM4avH9*7pIM)M>Oezp# ziW=D2P6s<0=% z?)AN0+IKjfcb2z7J99$!ko@H=6)NloQvOu;fHTd#`Cr{1kgZbGXvq4QN&Lf2m2MpT zfM?)fNyz9)BNd*Q#>s=xEolw9kF)-R%THe;94w}!D%ZB&$ zp<*J_?hA3}RqM5ii)HYas|;~W^QAV0?Q%SpI=-7=@xR$V<_${(^RpRb@E|)uM@6#q z3@$fA$@CiTol^=NUK^5(^mHEWG>N#BS_lFo{9{7}Fr0$Pca3E{9 zt}gZv5fTQdIUyfUC=iN;nC<*;Y3B~dy>SKvTJ|*hAKvAdeer~AWjJ*(;ifq^sLGU^ zwHnHuN*K7Ih`)NMx_W<5jHZIk>r73NA%>j^yLyht<-50(e;LQ5-(B`je14<*%68-%8Znx1HoW{_>jRG?7Y~W4hLX z-f?DdIT4(OEeQ4DPl4-l+(J`(Ej~nCy5~a%-&oxj>=`uKm;m=pT4Z!|ld*5E7LoRH zBOJ^)QH%3&L)-n99Lw4*?uT2ht%e;5A_!Fot`~xu4j?pd=3i&1^r3OUKAt3S%+pKH zyIlWTDcV#KnC5l6?y27$C?YG4EUCtX1QW0Gw^$)*E`7NRrf8q>K}^pGaY0X>UW zF`G_~56L^jZ(B2(uxMCM=mpE!B=xzP&2Hif&j9Tg+PHInEH2ca1cOa zr3b9AA5$FvOs)fU`}bhs_wY=+SAd!~b!Z*gzmrSkrPMorh%@vHcenGWbs8>Q&0T85 zMWu6fZ6|qEopCk3uuXR|7QN)v2PCLaw%pmWRc$rz^&Z-8y!izxl1_nW@ z$@F6p`xAj>Qg9(@iX+zunWBCi%^t4G1tHe7ectMOG#6Ons-o;=j*8FV5 zcou;OLGX%VzhSI7w2eU^Fc-Z;Q2XZ#v7L-Cu8sVHN!4tcf=Gp~YyOi5heJoivfy{e zmq553VD9M*h4$dY6ltJS4o1_`@u2I-(TgPosE;Z^+k5OAW7~wqY zc|U$exU*hf-eVOc>DDDO#`6)p;ixw=A`4A)^b zl$4VzZ46WHk5(25!M9GXvm@_PILFIre0nIsAv&7e@Q_a)Wdsd)q6; zg#ezQ{n=e!C-^Uk|2uS~n0W-wcbtJpYPLGK4+0#0D`9G8G1}w@YPuemDUUX@J8ZfY z4+~FClmnk0FxP(qmUP7UZ@NaW+!h|~yjQGN?>NECZ5IJvkB3Dphl(OmjPhGYrpV{5 z^r6D4nB-GbSaOA%H$5o6EGq(w=9SLc6U^z!cxk~qDXf9#BMO-gMB5Ub195JZhR_Rh z?TGQaQ$mHIb5m39qy5;y2*0BpXQ-|Zor6t-0@gp9+5mTi(iFTF{=(qb`sU9JKbX-j z@~~=6M4O=!v4+vj=T>|^+5!RsLJ~nM0kHGS%yd`s*tAzuWu5?#yTcfqgaoQc{~u5~Hj<0xB#(;vZoTV0iqR6Ue% zEqr;hgbpMA$*A=?ufg_uB9&Qs4c_k`j2fNqnKv{hB#qVHnW#=uV@QPx`%~u?%gs~B zW}5NJ(h^U�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 Rtou5}WoPY3DI? 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 diff --git a/src/js/index.js b/src/js/index.js deleted file mode 100644 index e69de29..0000000 diff --git a/src/js/index.ts b/src/js/index.ts new file mode 100644 index 0000000..d914c60 --- /dev/null +++ b/src/js/index.ts @@ -0,0 +1 @@ +console.log("hi"); diff --git a/tsconfig.json b/tsconfig.json index 2c6e0d1..d596777 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,10 @@ { + "include": [ + "src/**/*.ts" + ], + "exclude": [ + "node_modules" + ], "compilerOptions": { /* Visit https://aka.ms/tsconfig.json to read more about this file */ @@ -14,8 +20,8 @@ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ // "sourceMap": true, /* Generates corresponding '.map' file. */ // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ // "composite": true, /* Enable project compilation */ // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ // "removeComments": true, /* Do not emit comments to output. */ From 13f5f8d86a16f24ba0644dd3e180fc064a5c1423 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 15:25:21 +0900 Subject: [PATCH 04/25] tsconfig.json: Build:No inputs were found in config file --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index d596777..f6c6563 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "include": [ - "src/**/*.ts" + "./src/**/*.ts" ], "exclude": [ "node_modules" From e4cd2a7722710d7861020306dbfa42f3a84e076f Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 16:50:22 +0900 Subject: [PATCH 05/25] feat: add initial value & Render digit when button clicked & Render digit when calculate + --- cypress/integration/counter.spec.js | 63 +++++++++++++++++++++++++++++ docs/README.md | 8 +--- index.html | 2 +- 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index e69de29..8b8bba3 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -0,0 +1,63 @@ +describe("initial value", () => { + beforeEach(() => { + cy.visit("/javascript-calculator/"); + }); + + it("total value", () => { + cy.get("#total").should("have.text", "0"); + }); +}); + +describe("Render digit when button clicked", () => { + beforeEach(() => { + cy.visit("/javascript-calculator/"); + }); + it("button 0", () => { + cy.get(".digit") + .contains(0) + .click(); + cy.get("#total").should("have.text", "0"); + }); + it("button 1", () => { + cy.get(".digit") + .contains(1) + .click(); + cy.get("#total").should("have.text", "1"); + }); +}); + +describe("Render digit when calculate +", () => { + beforeEach(() => { + cy.visit("/javascript-calculator/"); + }); + it("button 0", () => { + cy.get(".digit") + .contains(1) + .click(); + cy.get(".operation") + .contains("+") + .click(); + cy.get(".digit") + .contains(2) + .click(); + cy.get(".operation") + .contains("=") + .click(); + cy.get("#total").should("have.text", "2"); + }); +}); + +// cy.visit('/javascript-calculator/'); +// let num1 = 0; +// let num2 = 1; + +// while (num2 < 6) { +// cy.get('.digit').contains(num1).click(); +// cy.get('.operation').contains('+').click(); +// cy.get('.digit').contains(num2).click(); +// cy.get('.operation').contains('=').click(); +// cy.get('#total') + +// num1 += 1; +// num2 += 1; +// } diff --git a/docs/README.md b/docs/README.md index d8c3fe6..1d76ce9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,13 +16,7 @@ **When : 시나리오를 진행하는데 필요한 조건을 명시한다.** **Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시한다.** -- [ ] 2개의 숫자에 대해 덧셈이 가능하다. -- [ ] 2개의 숫자에 대해 뺄셈이 가능하다. -- [ ] 2개의 숫자에 대해 곱셈이 가능하다. -- [ ] 2개의 숫자에 대해 나눗셈이 가능하다. -- [ ] AC(All Clear)버튼을 누르면 0으로 초기화 한다. -- [ ] 숫자는 한번에 최대 3자리 수까지 입력 가능하다. -- [ ] 계산 결과를 표현할 때 소수점 이하는 버림한다. +- [x] 초기 test case 작성 ## 기능 구현 diff --git a/index.html b/index.html index 8bf48ab..370cd71 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Calculator - +
From 3c7d91341a7de2ecbaa218d6e060552ebd8af2e8 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 18:03:27 +0900 Subject: [PATCH 06/25] =?UTF-8?q?chore:=20typescript=EB=A5=BC=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=ED=95=98=EA=B8=B0=EC=9C=84=ED=95=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=84=A4=EC=A0=95=20=EC=84=A4=EC=A0=95=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - dist/css/index.css | 87 ++++++++++++++++++++++++++++++++ dist/images/calculator_icon.png | Bin 0 -> 54813 bytes dist/images/calculator_ui.png | Bin 0 -> 51528 bytes dist/js/index.js | 4 ++ index.html | 1 + src/js/index.ts | 6 ++- 7 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 dist/css/index.css create mode 100644 dist/images/calculator_icon.png create mode 100644 dist/images/calculator_ui.png create mode 100644 dist/js/index.js diff --git a/.gitignore b/.gitignore index b6b8e3a..5af8560 100644 --- a/.gitignore +++ b/.gitignore @@ -251,7 +251,6 @@ typings/ # Nuxt.js build / generate output .nuxt -dist # Gatsby files .cache/ diff --git a/dist/css/index.css b/dist/css/index.css new file mode 100644 index 0000000..4e6a281 --- /dev/null +++ b/dist/css/index.css @@ -0,0 +1,87 @@ +html, +body { + margin: 0; + padding: 0; + font-family: sans-serif; +} + +#app { + height: 100vh; + display: flex; + justify-content: center; + align-items: center; +} + +.calculator { + width: 300px; + display: grid; + grid-template-areas: + 'total total total total' + 'modif modif modif oper' + 'digit digit digit oper' + 'digit digit digit oper' + 'digit digit digit oper' + 'digit digit digit oper'; + grid-auto-columns: 1fr; + grid-auto-rows: 1fr; + height: 500px; +} + +button { + font-size: 2rem; + border: 0.5px solid #98999b; +} + +.modifiers button { + background-color: #ccc; +} + +.operations button { + background-color: orange; +} + +.digits button { + background-color: #efefef; +} + +#total { + grid-area: total; + background-color: #333; + color: white; + margin: 0; + padding: 1rem; + display: flex; + justify-content: flex-end; + align-items: flex-end; + font-size: 4rem; +} + +.digits { + grid-area: digit; + display: flex; + flex-wrap: wrap; + flex-direction: row-reverse; +} + +.digits button { + flex: 1 0 30%; +} + +.digit.wide { + flex: 2 0 60%; + order: 1; +} + +.modifiers { + grid-area: modif; + grid-auto-flow: column; + grid-auto-columns: 1fr; +} + +.operations { + grid-area: oper; +} + +.subgrid { + display: grid; +} diff --git a/dist/images/calculator_icon.png b/dist/images/calculator_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e91b9ef5e41326148c6236411cbf23bdbc3fae87 GIT binary patch literal 54813 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�Q_~Yr89MMcq9E!cx?mt7!sP#v<`v#i0sdvrR@hojLz9`O6{q7yyA2 z&;tk@Od}3uVac2cKe=qNY&h8G!6o=RAaQ$y+4q57{-8sZWpC)I;YxSq?zf|khTbJp zFe8_Hx&d!rj|(P^2IB?a2A&#B@?STFz-yC{YI;nZq3!6B{oke|^`WOP;5Bl} zKjk8_BKPcS{J}d|(#z%th`xPZzjfOpjJ-nAs$|_Uq>I;L*`1_kC=a1fNeS|MJ2!29 z($Lk@PP?nUF(L9qS@E*sQVwwER%x>V)6Iunuy-I7q4}cZP3Q9i>oj$|)t4+$ynZaf zbz=bjH&D<{^4q5UyBYJ!nJo#qa=7$8380|WJIso|Ty^Y(mj2+etcpkaThMox#XdG^wO66!b*@g zxUqtd_cSK8_~=>p-Q;U#4c5eY3*iVdy=|m4_PAjIR_D^F=R_@OUPo@;6eb3CS?70V zy16d{o*Xj=CkF@I)2pk`v%iZrb6|xIbhw`l)NenOmqJ2|`S+$or#s>l99s|Fkjv5M(cVdnkwNk4`twt=$N7RR28^3UIhjRc8p_ zz58e=BQB!)nl)&vpKotd^Ub76A*68ta}U`Z_H@j$Madwu<+uNIY9T-!w z^M~glI8ZGEIS?o!U3?bkP&J^5UsJx2-`9DMA7AiR;yi#R#>Vu~Dv0`HbK2YAYdfzL zlpw8~nAFn>urYro?@4D)uJI5SKF%PG*frPJ7g_gx^A;06iOW;Vk8>(Fjp!pV@%4!# zxc*sCAc6bUo**r1By;GaOm|vEC6Tr>Nm6hlW6bGQmC+=&h>pF;ZwH+@{E$=KCoDK8 zENzE{bbZ!E%CJIoOcoEz*oXQDjz|JVIN}TnWdk3V=304lsxopn>e6z!O@C_Y8%n#fA)*90S4D6D!a)fb9$BO4P|{6%qE187 zClhb(+~7`QMfZK(H`gw-mhy+{5BdjatB8lu@Yy2?%FXQTlr=O4+jS_|bybEm-IQHE zEg{3HpD!vjHZ_?waBn`7SKtRE6&#w}9+~B^{O)Wy8v1;}Qgf`}r5zH&(Yy+7ESz>Q zWng4KI5`adPEwy|(vuUrxUWI(p;TFFKkJk&2Q8IY71mw-HKE6VNOir}*QAwtEPAI! zE5Fd3=JKrqPm)YCQ#^5_esJ_?7Ve=qV;3aO;q!30`xb3y#)}V@-D+Zrf}Cfo7P1Bs z&>kHfc_5Mv=xgn3C4BA_DktUwxGP+a%oVzw(X9C@=9ZQNiz-5hCHO-7HD`*%u$lpW zK24F4JAcSpH~#~>16IbX%g19|z2rIO8f|;c%V9)`+$a&mbp`?zJ=)3dT!Qh?G7)|j<|q?8m&+15$R@q}WD=WEqwry58#<*SWv*Gps)MG{Rs9)~^36#9m)x`dhJeT6XYb-(WMBh^IoJ4jc7&M04gA~^-l8Hvv z@ascygF5vD)G?eJJtb1oxTm?iGYzRk$5`<8I zMMbX^jpqW4FgpyQse0YTm3@pc10M9%g`d+qSTMd;59IAnbl2+~JU-o>C%2w=Xp*}9 z72&bp!he3urdHtz(g_Qzaq9KQzt@;wDiJm--3Yo;|_vv6+ z;mY81B{dXnly4+%jSW0f7c6`f%Cjrne%G;oo&G)q-^NUmvh`!s>G~e^(pm#piuLsM zOaP2Q3>m7r>-?xCwY^6s`-P*~`-3xopkMX-Lg+{S-u zK76Ur<3G41?r+S7p(a=S*3Xb0l*@b(*LTv_yxP#5hqOE8Q{o-Xw?voFH2R0){txen zq?erBh>&)Z9So5=;s69_ix>w#2XSc?(~qV;dPwE=*zkcKIjd9udTW6JA%K#hJRcX z>4QsFE$g4K`D7;T5T0B2QTP@U7gZ7>qAx^z7KT#CYQ|qlqSTw8=(KrFQ*uPpI@ZTb zSWvkTA*NrarxKF7=izxK+r1B3Ikxb|(F#eH*#v^+>n#mYN8@jl(~bB-F($ zIdcBvnK&dAKkd^$Apta^Na9Z3oFNY)Bvtp8U$C7hz6%%96u9MHP_O2NF=ZLzv{$;{ zAP%D>zNHV)oa2SC&ub1&fXZ(F#YkgdLXn=$Ius1y$8Z#{#x3{uD_=~#AgKKv?Z!@q znE|n{IS5-Q54A!Z?RW*0Gq%3hClz@mcPA$dEhiPJuaB><*5o-NW!jAkX7YfTi}MP~ z;;7!z>d7iIU+Y%A9fpO#RGu!@^+sZrncLmHy2_uFmKNea+EnegokDeovUStji+{$9 zPYGAf_u9mnTw^Ab89(-OQ(;q%_4L6LD`Nx}>Gnu}0s}8an!y0o+(u?Riec!(f`p5| zAHq~+Z7YBtMlaJ3-6ntbsLs;Hn5C{Tl~S3|#ik6MH5}bbpuI2uYXWPK5K%pzi(-d* z`jjIB<-@E7vYMsj1RtZe*Pmre877g@wIQE?Nlq*GYWg_yih1MRSoDW&2ihe|-}^Gx z+t`7^Ng>o9lMqD;5-L)M4?I+{et&JXK7rYG{gkP^B^!d^adrP;tIWzk=!)O{ZQhf5 zi5uE2>%x~BxnZj-;AGI8GNtKt_{z|FY4*A{H)q|S$g)37tnkaWg3q6o??(*cj?5p+ zSVm^rsA?D_Gktwh1Xh%L_o%ePL!QX@V*zd^)mu_EeqL5qb?D1J9$CJ>9%t`ZnbX?Y z$9&f}#(lAaJ~E!PL{fASbL9W)OVH|-&9%-WIJEc~XH9ZnZ)_J7B93kM++w#L=wkHY z(YNX#yl#{D=~f206E0sDmT&@i6~kV zMAG-Mbl_-0af{W@mQ18M$_ky99QMBrsFQXzp_B5(O!;-SXZIn@7hsSr)5gTMSU zD37gMT*Uyh1y_h^QxH)Pshare_yoLpY%YE=6}@7+v%0|6zn$Ynec*Be_)%{`bv2sk zB#9sOm1THR`?D3DX4#$o3E#+nOR9b)GGJN&gG2PGRLcj=kVf0x;kUtW zF#Du7+(?av#yN(Z^ZQo*IacQ}{;#}EWp`~M*22N_@6Oa45f{mfss_te%52U1o!;qE z-sqNg`YiB7)H3`tb1V1|V#<{|rEza=Ac*D7Mn##GK2KReFzK>%Pj|+qhk8Z#iocmW z*MOg~J5Gv4+U-o^Qz>F0rRFyNkEt-;{-?@Egz&+{VJTvE;vSJ28Sx#|(wJl!^jI1h|b z2(w*mTWl*`{zHUFxl~_yXOT^ye)`LNmeTpqgl|$mB7Bu&$nA|WApko%0-aOx5VUwu zJMo!)o?^U1QY&i?a5BUx_k#q$jG9ytgAL%sSIoq@4Yuxj-jclqVLx0RJl0W^E01b* zfGfr=N<2%&_%r|Xp)Uq27_I#kU$iq*r4wW z8WSqJ8YyXM9(Wp4@EQO2I>fMO0e-qf1`V68Fxd4QeI+gJ9!sWu0kUQfU{!6Tz^81jme!0tCxa3sTc^3s8~NSJ5F#NqyzqN6pF=3cp^WoEh5SmL;3=8~0~l-nCNX6kDuxiPp*U*7xeet7P4?s?96 z&i&o<{Lfisf}pWy6?LAewWFQ|liL`*OGbfQ>twFmdY3)NHDT!`Fw6(fQZOr6t{h*# z`^e9!^3hgAP6ltPPd)&vgPbELvdy=_#3hV|pj4*%HT@RPc`lCOc9E0yb3~-Jm9N0E zc}c!L<71?t-;asJ(#P;v>+9TxY)n1{8-SeGkU%ti@2RZdR?Bcyp$E{4vXc-#Be#K8 zw<*6xxBJdGJxbx^Rlu-VCFh+LErMZd>HQ5euc?{6S7;ss!sWm0%aoKauyC;lDhc%J z(UH~}=<7qo*?nrYpSr2B3!Zc1{(7yxT)_g&Wluu>RpA!+yK+eV{wLqp2P#_at&Z0R znm|W(Vn#ec?|)yops2Se^)F*7I;ju+eQ4}0fAS^2_LJ=Hxcvdt!@Of^&RWCPn|lvP zs@I4vihAri>|Ae0N5`J#q|lbm^BH|=n&!;M#@sW;))ZdN@z9sxu?`jpG0wM}h5h-= zbY;!~HGvKw3SK{h-1lZ_qB$v5t#+j9*}2}|gCFRY| z?T4pdwwiISQFCtk1?3Faq6O9GiHqm`>YP3qKI7 zmla&iMej$PwaF&!pW8s}^axFGw_20E5CQ1BdW*{)^Vw%F^VsKb#Vy+Bx>ghKZRP!Q zMVovX>C>A*iJ@sULG8cNS1PLf35o_xN4{&KbLASyybt{AsUqKE z2cL6G#{Yf95qtrP5@lZXn+UOqj1C7|;=xg!Cw)%U%UOKIYC8f8AvD|HuH%UUw#Bua@*LoYjC!4a&l50Psk<6 ziUK&tn|m8ob8*;DVjT=#+uvD7dFHF(r>*)YJ*MYjekFFIiO^STKAnJGM|k4RDR!Wk zG`YVSk#8KUiY7DRA_+?RSo9taKS|$Xr_vYJ?DeV`APIi=?16_UQS{l5mNh7oxTEZeVn7CMkAWKO`N8)p2bRAe@Lp z;Tvo=*|F!m)H+eY?@;TvqAve5yh12IRI5IEYls1@Ykmcz>kEGSHJw}KP5O%}FfBEN zO`&KuAVphDGPR!ssH;2aadpdr5U};J=WgeqReiWZmF~LSj8J6+$bJ3%zUrOGX9Z*y zzF;vzemivObC&+Nu%dzi!FJ6O)M+*^GnWcc`d&#jd;J%H?1$>tLJkFd%-U5FP?f*t zL2MY9Xu(w0GD|g0D$kMg%c>5bgPLGjxPlUV2T^FFT5}R`>d|g>lhVYJ+xPF>7SEb% zR%m#X0-G`0&VG!vvyJYKNsIYXW&(HqOTy&Tu zjoD+)CwV_#Onv1cS{h5;T${1_Yz{arH3(gVYm9Qtogbf-u?~Nyn&2?=cYqB)4*&W& zL40Y0du6;}?@{8AbEP(%ekiIK<9r0GJJqAwb`}Z#Ja+%VC3qtw?D;)*%@K`FSs|;+ z7gusw=Db zX}TISj?3tn2?eQu&vY(+H;8ga3UTDuK6s3xN^>?`bmP>~Q+nVDNN}aXwx})5if&G= z!V&dvUSTJY&4n9}cS&TDtJA~i+Y(vG?&mT$^~b$yn!F9eO^6X$47;MoLYP9DjeT+| zxW!u4CcZ^yN7n0)ON1vD?fIw+%xNL};Iiu*?gALAPW9_xwyBGpzGOR4Bg$sm@{|}_ zCZ!9R=s(#{4K~y>Tgb^YJ(@kuF~R}c6$B}K9HoPzjHTtd1;|Ms)965pS7XUW=v6jPw89zKwe(-&`KQ|3s2T Rtou5}WoPY3DI? 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 literal 0 HcmV?d00001 diff --git a/dist/js/index.js b/dist/js/index.js new file mode 100644 index 0000000..21a46e1 --- /dev/null +++ b/dist/js/index.js @@ -0,0 +1,4 @@ +export default function App() { + console.log(document.getElementsByClassName('digits')); +} +App(); diff --git a/index.html b/index.html index 370cd71..f4af11d 100644 --- a/index.html +++ b/index.html @@ -34,5 +34,6 @@

0

+ diff --git a/src/js/index.ts b/src/js/index.ts index d914c60..ddcb31d 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -1 +1,5 @@ -console.log("hi"); +export default function App(): void { + console.log(document.getElementsByClassName('digits')) +} + +App(); From 62f21121455a5d909bb7651131087bbae09827f3 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 18:41:07 +0900 Subject: [PATCH 07/25] =?UTF-8?q?test:=200=20=EB=B6=80=ED=84=B0=209?= =?UTF-8?q?=EA=B9=8C=EC=A7=80=20=EB=B2=84=ED=8A=BC=20=ED=81=B4=EB=A6=AD=20?= =?UTF-8?q?=ED=9B=84=20=EA=B0=92=EC=B6=9C=EB=A0=A5=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.json | 15 +++++++++ cypress/integration/counter.spec.js | 48 +++++++++++++++++++++++++++++ dist/js/index.js | 14 ++++++++- src/js/index.ts | 15 ++++++++- 4 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..f350d16 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,15 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": ["airbnb-base"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": ["@typescript-eslint"], + "ignorePatterns": ["dist/", "node_modules/"], + "rules": {} +} diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 8b8bba3..8073091 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -24,6 +24,54 @@ describe("Render digit when button clicked", () => { .click(); cy.get("#total").should("have.text", "1"); }); + it("button 2", () => { + cy.get(".digit") + .contains(2) + .click(); + cy.get("#total").should("have.text", "2"); + }); + it("button 3", () => { + cy.get(".digit") + .contains(3) + .click(); + cy.get("#total").should("have.text", "3"); + }); + it("button 4", () => { + cy.get(".digit") + .contains(4) + .click(); + cy.get("#total").should("have.text", "4"); + }); + it("button 5", () => { + cy.get(".digit") + .contains(5) + .click(); + cy.get("#total").should("have.text", "5"); + }); + it("button 6", () => { + cy.get(".digit") + .contains(6) + .click(); + cy.get("#total").should("have.text", "6"); + }); + it("button 7", () => { + cy.get(".digit") + .contains(7) + .click(); + cy.get("#total").should("have.text", "7"); + }); + it("button 8", () => { + cy.get(".digit") + .contains(8) + .click(); + cy.get("#total").should("have.text", "8"); + }); + it("button 9", () => { + cy.get(".digit") + .contains(9) + .click(); + cy.get("#total").should("have.text", "9"); + }); }); describe("Render digit when calculate +", () => { diff --git a/dist/js/index.js b/dist/js/index.js index 21a46e1..bdbdd15 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -1,4 +1,16 @@ +const digitClickEvent = (e) => { + const eventTarget = e.target; + const totalTarget = document.getElementById('total'); + if (Number(totalTarget.innerText) === 0) { + document.getElementById('total').innerText = eventTarget.innerText; + } + else { + document.getElementById('total').innerText += eventTarget.innerText; + } +}; export default function App() { - console.log(document.getElementsByClassName('digits')); + document.getElementsByClassName('digits')[0].addEventListener('click', e => { + digitClickEvent(e); + }); } App(); diff --git a/src/js/index.ts b/src/js/index.ts index ddcb31d..83eb924 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -1,5 +1,18 @@ +const digitClickEvent = (e: Event): void => { + const eventTarget: HTMLElement = e.target as HTMLElement; + const totalTarget: HTMLElement | null = document.getElementById('total'); + + if (Number(totalTarget!.innerText) === 0) { + document.getElementById('total')!.innerText = eventTarget.innerText; + } else { + document.getElementById('total')!.innerText += eventTarget.innerText; + } +}; + export default function App(): void { - console.log(document.getElementsByClassName('digits')) + document.getElementsByClassName('digits')[0].addEventListener('click', e => { + digitClickEvent(e); + }); } App(); From 5269a22bb32cd31903b3985869256620da599e41 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 18:47:23 +0900 Subject: [PATCH 08/25] test: make case: Max input length 3 --- cypress/integration/counter.spec.js | 165 ++++++++++++++++++---------- 1 file changed, 105 insertions(+), 60 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 8073091..ccf4192 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -1,111 +1,156 @@ -describe("initial value", () => { +describe('initial value', () => { beforeEach(() => { - cy.visit("/javascript-calculator/"); + cy.visit('/javascript-calculator/'); }); - it("total value", () => { - cy.get("#total").should("have.text", "0"); + it('total value', () => { + cy.get('#total').should('have.text', '0'); }); }); -describe("Render digit when button clicked", () => { +describe('Render digit when button clicked', () => { beforeEach(() => { - cy.visit("/javascript-calculator/"); + cy.visit('/javascript-calculator/'); }); - it("button 0", () => { - cy.get(".digit") + it('button 0', () => { + cy.get('.digit') .contains(0) .click(); - cy.get("#total").should("have.text", "0"); + cy.get('#total').should('have.text', '0'); }); - it("button 1", () => { - cy.get(".digit") + it('button 1', () => { + cy.get('.digit') .contains(1) .click(); - cy.get("#total").should("have.text", "1"); + cy.get('#total').should('have.text', '1'); }); - it("button 2", () => { - cy.get(".digit") + it('button 2', () => { + cy.get('.digit') .contains(2) .click(); - cy.get("#total").should("have.text", "2"); + cy.get('#total').should('have.text', '2'); }); - it("button 3", () => { - cy.get(".digit") + it('button 3', () => { + cy.get('.digit') .contains(3) .click(); - cy.get("#total").should("have.text", "3"); + cy.get('#total').should('have.text', '3'); }); - it("button 4", () => { - cy.get(".digit") + it('button 4', () => { + cy.get('.digit') .contains(4) .click(); - cy.get("#total").should("have.text", "4"); + cy.get('#total').should('have.text', '4'); }); - it("button 5", () => { - cy.get(".digit") + it('button 5', () => { + cy.get('.digit') .contains(5) .click(); - cy.get("#total").should("have.text", "5"); + cy.get('#total').should('have.text', '5'); }); - it("button 6", () => { - cy.get(".digit") + it('button 6', () => { + cy.get('.digit') .contains(6) .click(); - cy.get("#total").should("have.text", "6"); + cy.get('#total').should('have.text', '6'); }); - it("button 7", () => { - cy.get(".digit") + it('button 7', () => { + cy.get('.digit') .contains(7) .click(); - cy.get("#total").should("have.text", "7"); + cy.get('#total').should('have.text', '7'); }); - it("button 8", () => { - cy.get(".digit") + it('button 8', () => { + cy.get('.digit') .contains(8) .click(); - cy.get("#total").should("have.text", "8"); + cy.get('#total').should('have.text', '8'); }); - it("button 9", () => { - cy.get(".digit") + it('button 9', () => { + cy.get('.digit') .contains(9) .click(); - cy.get("#total").should("have.text", "9"); + cy.get('#total').should('have.text', '9'); }); }); -describe("Render digit when calculate +", () => { +describe('Max input length 3', () => { beforeEach(() => { - cy.visit("/javascript-calculator/"); + cy.visit('/javascript-calculator/'); }); - it("button 0", () => { - cy.get(".digit") + it('button 1 2', () => { + cy.get('.digit') .contains(1) .click(); - cy.get(".operation") - .contains("+") + cy.get('.digit') + .contains(2) + .click(); + cy.get('#total').should('have.text', '12'); + }); + it('button 4 2', () => { + cy.get('.digit') + .contains(4) + .click(); + cy.get('.digit') + .contains(2) + .click(); + cy.get('#total').should('have.text', '42'); + }); + it('button 0 2', () => { + cy.get('.digit') + .contains(0) + .click(); + cy.get('.digit') + .contains(2) + .click(); + cy.get('#total').should('have.text', '2'); + }); + it('button 1 2 3', () => { + cy.get('.digit') + .contains(1) .click(); - cy.get(".digit") + cy.get('.digit') .contains(2) .click(); - cy.get(".operation") - .contains("=") + cy.get('.digit') + .contains(3) .click(); - cy.get("#total").should("have.text", "2"); + cy.get('#total').should('have.text', '123'); + }); + it('button 1 2 3 4', () => { + cy.get('.digit') + .contains(1) + .click(); + cy.get('.digit') + .contains(2) + .click(); + cy.get('.digit') + .contains(3) + .click(); + cy.get('.digit') + .contains(4) + .click(); + cy.get('#total').should('have.text', '123'); }); }); -// cy.visit('/javascript-calculator/'); -// let num1 = 0; -// let num2 = 1; - -// while (num2 < 6) { -// cy.get('.digit').contains(num1).click(); -// cy.get('.operation').contains('+').click(); -// cy.get('.digit').contains(num2).click(); -// cy.get('.operation').contains('=').click(); -// cy.get('#total') - -// num1 += 1; -// num2 += 1; -// } +// describe("Render digit when calculate +", () => { +// beforeEach(() => { +// cy.visit("/javascript-calculator/"); +// }); +// it("button 0", () => { +// cy.get(".digit") +// .contains(1) +// .click(); +// cy.get(".operation") +// .contains("+") +// .click(); +// cy.get(".digit") +// .contains(2) +// .click(); +// cy.get(".operation") +// .contains("=") +// .click(); +// cy.get("#total").should("have.text", "2"); +// }); +// }); From 2e706bd2a7708e380d6a5c5580131df748e3a90a Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 18:48:43 +0900 Subject: [PATCH 09/25] feat: add Max input length 3 --- dist/js/index.js | 3 +++ src/js/index.ts | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dist/js/index.js b/dist/js/index.js index bdbdd15..f622ea8 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -1,6 +1,9 @@ const digitClickEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); + if (totalTarget.innerText.length === 3) { + return; + } if (Number(totalTarget.innerText) === 0) { document.getElementById('total').innerText = eventTarget.innerText; } diff --git a/src/js/index.ts b/src/js/index.ts index 83eb924..a48497b 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -2,7 +2,11 @@ const digitClickEvent = (e: Event): void => { const eventTarget: HTMLElement = e.target as HTMLElement; const totalTarget: HTMLElement | null = document.getElementById('total'); - if (Number(totalTarget!.innerText) === 0) { + if (totalTarget!.innerText.length === 3) { + return; + } + + if (Number(totalTarget!.innerText) === 0) { document.getElementById('total')!.innerText = eventTarget.innerText; } else { document.getElementById('total')!.innerText += eventTarget.innerText; From 517bbe20c1ec9aefd97a4ef23426e8e8005f24c0 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 18:59:19 +0900 Subject: [PATCH 10/25] =?UTF-8?q?refactor:=20testcase=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=EB=A1=9C=20=EB=AC=B6=EC=96=B4=EC=84=9C=20=EB=A6=AC=ED=8E=99?= =?UTF-8?q?=ED=86=A0=EB=A7=81=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 132 ++++++---------------------- 1 file changed, 26 insertions(+), 106 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index ccf4192..4411019 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -1,8 +1,18 @@ +const testInputClickEvent = (first, result) => { + for (let item of first) { + cy.get('.digit') + .contains(item) + .click(); + } + cy.get('#total').should('have.text', result); +}; + +const testTwoInputCalculateEvent = (first, oper, second, result) => {}; + describe('initial value', () => { beforeEach(() => { cy.visit('/javascript-calculator/'); }); - it('total value', () => { cy.get('#total').should('have.text', '0'); }); @@ -13,64 +23,34 @@ describe('Render digit when button clicked', () => { cy.visit('/javascript-calculator/'); }); it('button 0', () => { - cy.get('.digit') - .contains(0) - .click(); - cy.get('#total').should('have.text', '0'); + testInputClickEvent([0], '0'); }); it('button 1', () => { - cy.get('.digit') - .contains(1) - .click(); - cy.get('#total').should('have.text', '1'); + testInputClickEvent([1], '1'); }); it('button 2', () => { - cy.get('.digit') - .contains(2) - .click(); - cy.get('#total').should('have.text', '2'); + testInputClickEvent([2], '2'); }); it('button 3', () => { - cy.get('.digit') - .contains(3) - .click(); - cy.get('#total').should('have.text', '3'); + testInputClickEvent([3], '3'); }); it('button 4', () => { - cy.get('.digit') - .contains(4) - .click(); - cy.get('#total').should('have.text', '4'); + testInputClickEvent([4], '4'); }); it('button 5', () => { - cy.get('.digit') - .contains(5) - .click(); - cy.get('#total').should('have.text', '5'); + testInputClickEvent([5], '5'); }); it('button 6', () => { - cy.get('.digit') - .contains(6) - .click(); - cy.get('#total').should('have.text', '6'); + testInputClickEvent([6], '6'); }); it('button 7', () => { - cy.get('.digit') - .contains(7) - .click(); - cy.get('#total').should('have.text', '7'); + testInputClickEvent([7], '7'); }); it('button 8', () => { - cy.get('.digit') - .contains(8) - .click(); - cy.get('#total').should('have.text', '8'); + testInputClickEvent([8], '8'); }); it('button 9', () => { - cy.get('.digit') - .contains(9) - .click(); - cy.get('#total').should('have.text', '9'); + testInputClickEvent([9], '9'); }); }); @@ -79,78 +59,18 @@ describe('Max input length 3', () => { cy.visit('/javascript-calculator/'); }); it('button 1 2', () => { - cy.get('.digit') - .contains(1) - .click(); - cy.get('.digit') - .contains(2) - .click(); - cy.get('#total').should('have.text', '12'); + testInputClickEvent([1, 2], '12'); }); it('button 4 2', () => { - cy.get('.digit') - .contains(4) - .click(); - cy.get('.digit') - .contains(2) - .click(); - cy.get('#total').should('have.text', '42'); + testInputClickEvent([4, 2], '42'); }); it('button 0 2', () => { - cy.get('.digit') - .contains(0) - .click(); - cy.get('.digit') - .contains(2) - .click(); - cy.get('#total').should('have.text', '2'); + testInputClickEvent([0, 2], '2'); }); it('button 1 2 3', () => { - cy.get('.digit') - .contains(1) - .click(); - cy.get('.digit') - .contains(2) - .click(); - cy.get('.digit') - .contains(3) - .click(); - cy.get('#total').should('have.text', '123'); + testInputClickEvent([1, 2, 3], '123'); }); it('button 1 2 3 4', () => { - cy.get('.digit') - .contains(1) - .click(); - cy.get('.digit') - .contains(2) - .click(); - cy.get('.digit') - .contains(3) - .click(); - cy.get('.digit') - .contains(4) - .click(); - cy.get('#total').should('have.text', '123'); + testInputClickEvent([1, 2, 3], '123'); }); }); - -// describe("Render digit when calculate +", () => { -// beforeEach(() => { -// cy.visit("/javascript-calculator/"); -// }); -// it("button 0", () => { -// cy.get(".digit") -// .contains(1) -// .click(); -// cy.get(".operation") -// .contains("+") -// .click(); -// cy.get(".digit") -// .contains(2) -// .click(); -// cy.get(".operation") -// .contains("=") -// .click(); -// cy.get("#total").should("have.text", "2"); -// }); -// }); From 8f301d19012ffb0554e6b04ea1e628a553768435 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 19:02:45 +0900 Subject: [PATCH 11/25] test: add case Calculate two input when button click --- cypress/integration/counter.spec.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 4411019..9315270 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -7,7 +7,18 @@ const testInputClickEvent = (first, result) => { cy.get('#total').should('have.text', result); }; -const testTwoInputCalculateEvent = (first, oper, second, result) => {}; +const testTwoInputCalculateEvent = (first, oper, second, result) => { + cy.get('.digit') + .contains(first) + .click(); + cy.get('.operation') + .contains(oper) + .click(); + cy.get('.digit') + .contains(second) + .click(); + cy.get('#total').should('have.text', result); +}; describe('initial value', () => { beforeEach(() => { @@ -54,7 +65,7 @@ describe('Render digit when button clicked', () => { }); }); -describe('Max input length 3', () => { +describe('Render max input length 3 when button click', () => { beforeEach(() => { cy.visit('/javascript-calculator/'); }); @@ -74,3 +85,12 @@ describe('Max input length 3', () => { testInputClickEvent([1, 2, 3], '123'); }); }); + +describe('Calculate two input when button click', () => { + beforeEach(() => { + cy.visit('/javascript-calculator/'); + }); + it('button 1 2', () => { + testTwoInputCalculateEvent(1, '+', 2, '3'); + }); +}); From aaf5cbb484c208ab36448c51ccdf43b41565c4ee Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 19:12:17 +0900 Subject: [PATCH 12/25] feat: add operator --- cypress/integration/counter.spec.js | 2 +- dist/js/index.js | 16 ++++++++++++++++ src/js/index.ts | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 9315270..553e121 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -11,7 +11,7 @@ const testTwoInputCalculateEvent = (first, oper, second, result) => { cy.get('.digit') .contains(first) .click(); - cy.get('.operation') + cy.get('.operations') .contains(oper) .click(); cy.get('.digit') diff --git a/dist/js/index.js b/dist/js/index.js index f622ea8..fcc67b1 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -11,9 +11,25 @@ const digitClickEvent = (e) => { document.getElementById('total').innerText += eventTarget.innerText; } }; +const operatorEvent = (e) => { + const eventTarget = e.target; + const totalTarget = document.getElementById('total'); + if (totalTarget.innerText.length === 3) { + return; + } + if (Number(totalTarget.innerText) === 0) { + return; + } + else { + document.getElementById('total').innerText += eventTarget.innerText; + } +}; export default function App() { document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); + document.getElementsByClassName('operations')[0].addEventListener('click', e => { + operatorEvent(e); + }); } App(); diff --git a/src/js/index.ts b/src/js/index.ts index a48497b..03c0e65 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -13,10 +13,28 @@ const digitClickEvent = (e: Event): void => { } }; +const operatorEvent = (e: Event): void => { + const eventTarget: HTMLElement = e.target as HTMLElement; + const totalTarget: HTMLElement | null = document.getElementById('total'); + + if (totalTarget!.innerText.length === 3) { + return; + } + + if (Number(totalTarget!.innerText) === 0) { + return ; + } else { + document.getElementById('total')!.innerText += eventTarget.innerText; + } +}; + export default function App(): void { document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); + document.getElementsByClassName('operations')[0].addEventListener('click', e => { + operatorEvent(e); + }); } App(); From e0c8df60608f3e5cecd93875bd467843bc22ca70 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 19:43:44 +0900 Subject: [PATCH 13/25] feat: add Calculate two input when button click --- dist/js/index.js | 25 ++++++++++++++++++++++++- src/js/index.ts | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/dist/js/index.js b/dist/js/index.js index fcc67b1..b132b23 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -1,3 +1,21 @@ +const calculateOperator = (total, operator, num) => { + let result = 0; + if (operator === '+') + result = total + num; + if (operator === '/') + result = total / num; + if (operator === '%') + result = total % num; + if (operator === '-') + result = total - num; + if (operator === '*') + result = total * num; + return result; +}; +const calculateResult = (total) => { + const result = total.match(new RegExp('(\\??[\\d])(X|\\-|\\+|\\/|\\=)([\\d])')); + return calculateOperator(Number(result[1]), result[2], Number(result[3])); +}; const digitClickEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); @@ -15,6 +33,9 @@ const operatorEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); if (totalTarget.innerText.length === 3) { + if (eventTarget.innerText === '=') { + document.getElementById('total').innerText = String(calculateResult(document.getElementById('total').innerText)); + } return; } if (Number(totalTarget.innerText) === 0) { @@ -28,7 +49,9 @@ export default function App() { document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); - document.getElementsByClassName('operations')[0].addEventListener('click', e => { + document + .getElementsByClassName('operations')[0] + .addEventListener('click', e => { operatorEvent(e); }); } diff --git a/src/js/index.ts b/src/js/index.ts index 03c0e65..88d7085 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -1,3 +1,25 @@ +const calculateOperator = ( + total: number, + operator: string, + num: number +): number => { + let result: number = 0; + + if (operator === '+') result = total + num; + if (operator === '/') result = total / num; + if (operator === '%') result = total % num; + if (operator === '-') result = total - num; + if (operator === '*') result = total * num; + return result; +}; + +const calculateResult = (total: string): number => { + const result: any = total.match( + new RegExp('(\\??[\\d])(X|\\-|\\+|\\/|\\=)([\\d])') + ); + return calculateOperator(Number(result[1]), result[2], Number(result[3])); +}; + const digitClickEvent = (e: Event): void => { const eventTarget: HTMLElement = e.target as HTMLElement; const totalTarget: HTMLElement | null = document.getElementById('total'); @@ -18,11 +40,16 @@ const operatorEvent = (e: Event): void => { const totalTarget: HTMLElement | null = document.getElementById('total'); if (totalTarget!.innerText.length === 3) { + if (eventTarget.innerText === '=') { + document.getElementById('total')!.innerText = String( + calculateResult(document.getElementById('total')!.innerText) + ); + } return; } if (Number(totalTarget!.innerText) === 0) { - return ; + return; } else { document.getElementById('total')!.innerText += eventTarget.innerText; } @@ -32,9 +59,11 @@ export default function App(): void { document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); - document.getElementsByClassName('operations')[0].addEventListener('click', e => { - operatorEvent(e); - }); + document + .getElementsByClassName('operations')[0] + .addEventListener('click', e => { + operatorEvent(e); + }); } App(); From 92071480ba270addd958bff03384eaf9f62eeeea Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 19:44:42 +0900 Subject: [PATCH 14/25] =?UTF-8?q?refactor:=20test=20case,=20=3D=20?= =?UTF-8?q?=EB=B2=84=ED=8A=BC=EB=8F=84=20=EB=88=8C=EB=A5=B4=EA=B2=8C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 553e121..df5f3c1 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -17,6 +17,9 @@ const testTwoInputCalculateEvent = (first, oper, second, result) => { cy.get('.digit') .contains(second) .click(); + cy.get('.operations') + .contains('=') + .click(); cy.get('#total').should('have.text', result); }; From 185e02f380cec1ffd5b914de2cd736c997338366 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 20:32:43 +0900 Subject: [PATCH 15/25] =?UTF-8?q?feat:=20=EC=97=B0=EC=82=B0=EC=9E=90=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/js/index.js | 34 ++++++++++++++++++++++++---------- src/js/index.ts | 41 ++++++++++++++++++++++++++++------------- 2 files changed, 52 insertions(+), 23 deletions(-) diff --git a/dist/js/index.js b/dist/js/index.js index b132b23..27f8dc2 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -8,34 +8,48 @@ const calculateOperator = (total, operator, num) => { result = total % num; if (operator === '-') result = total - num; - if (operator === '*') + if (operator === 'X') result = total * num; return result; }; +const checkValidInput = (total) => { + const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?')); + if (result[2] === undefined) { + if (result[1] === undefined) { + return ''; + } + return result[1]; + } + if (result[3] === undefined) { + return result[1] + result[2]; + } + return result[1] + result[2] + result[3]; +}; const calculateResult = (total) => { - const result = total.match(new RegExp('(\\??[\\d])(X|\\-|\\+|\\/|\\=)([\\d])')); + const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})')); + console.log(result); return calculateOperator(Number(result[1]), result[2], Number(result[3])); }; const digitClickEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); - if (totalTarget.innerText.length === 3) { - return; - } if (Number(totalTarget.innerText) === 0) { document.getElementById('total').innerText = eventTarget.innerText; } else { - document.getElementById('total').innerText += eventTarget.innerText; + const result = checkValidInput(document.getElementById('total').innerText + eventTarget.innerText); + if (result === '') { + return; + } + ; + document.getElementById('total').innerText = result; } }; const operatorEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); - if (totalTarget.innerText.length === 3) { - if (eventTarget.innerText === '=') { - document.getElementById('total').innerText = String(calculateResult(document.getElementById('total').innerText)); - } + if (eventTarget.innerText === '=') { + document.getElementById('total').innerText = String(calculateResult(document.getElementById('total').innerText)); return; } if (Number(totalTarget.innerText) === 0) { diff --git a/src/js/index.ts b/src/js/index.ts index 88d7085..28232f8 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -9,14 +9,31 @@ const calculateOperator = ( if (operator === '/') result = total / num; if (operator === '%') result = total % num; if (operator === '-') result = total - num; - if (operator === '*') result = total * num; + if (operator === 'X') result = total * num; return result; }; +const checkValidInput = (total: string): string => { + const result: any = total.match( + new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?') + ); + if (result[2] === undefined) { + if (result [1] === undefined) { + return ''; + } + return result[1]; + } + if (result[3] === undefined) { + return result[1] + result[2]; + } + return result[1] + result[2] + result[3]; +}; + const calculateResult = (total: string): number => { const result: any = total.match( - new RegExp('(\\??[\\d])(X|\\-|\\+|\\/|\\=)([\\d])') + new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})') ); + console.log(result); return calculateOperator(Number(result[1]), result[2], Number(result[3])); }; @@ -24,14 +41,14 @@ const digitClickEvent = (e: Event): void => { const eventTarget: HTMLElement = e.target as HTMLElement; const totalTarget: HTMLElement | null = document.getElementById('total'); - if (totalTarget!.innerText.length === 3) { - return; - } - if (Number(totalTarget!.innerText) === 0) { document.getElementById('total')!.innerText = eventTarget.innerText; } else { - document.getElementById('total')!.innerText += eventTarget.innerText; + const result = checkValidInput(document.getElementById('total')!.innerText + eventTarget.innerText); + if (result === '') { + return ; + }; + document.getElementById('total')!.innerText = result; } }; @@ -39,12 +56,10 @@ const operatorEvent = (e: Event): void => { const eventTarget: HTMLElement = e.target as HTMLElement; const totalTarget: HTMLElement | null = document.getElementById('total'); - if (totalTarget!.innerText.length === 3) { - if (eventTarget.innerText === '=') { - document.getElementById('total')!.innerText = String( - calculateResult(document.getElementById('total')!.innerText) - ); - } + if (eventTarget.innerText === '=') { + document.getElementById('total')!.innerText = String( + calculateResult(document.getElementById('total')!.innerText) + ); return; } From 85bf0edcfa66591417d09ee9cca49b8d2ad4cf37 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 20:34:31 +0900 Subject: [PATCH 16/25] =?UTF-8?q?feat:=20=EA=B3=84=EC=82=B0=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EB=A5=BC=20=ED=91=9C=ED=98=84=ED=95=A0=20=EB=95=8C=20?= =?UTF-8?q?=EC=86=8C=EC=88=98=EC=A0=90=20=EC=9D=B4=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=B2=84=EB=A6=BC=ED=95=9C=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/js/index.js | 2 +- docs/README.md | 12 ++++++------ src/js/index.ts | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/js/index.js b/dist/js/index.js index 27f8dc2..645760a 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -49,7 +49,7 @@ const operatorEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); if (eventTarget.innerText === '=') { - document.getElementById('total').innerText = String(calculateResult(document.getElementById('total').innerText)); + document.getElementById('total').innerText = String(Math.floor(calculateResult(document.getElementById('total').innerText))); return; } if (Number(totalTarget.innerText) === 0) { diff --git a/docs/README.md b/docs/README.md index 1d76ce9..049f5dd 100644 --- a/docs/README.md +++ b/docs/README.md @@ -20,10 +20,10 @@ ## 기능 구현 -- [ ] 2개의 숫자에 대해 덧셈이 가능하다. -- [ ] 2개의 숫자에 대해 뺄셈이 가능하다. -- [ ] 2개의 숫자에 대해 곱셈이 가능하다. -- [ ] 2개의 숫자에 대해 나눗셈이 가능하다. +- [x] 2개의 숫자에 대해 덧셈이 가능하다. +- [x] 2개의 숫자에 대해 뺄셈이 가능하다. +- [x] 2개의 숫자에 대해 곱셈이 가능하다. +- [x] 2개의 숫자에 대해 나눗셈이 가능하다. - [ ] AC(All Clear)버튼을 누르면 0으로 초기화 한다. -- [ ] 숫자는 한번에 최대 3자리 수까지 입력 가능하다. -- [ ] 계산 결과를 표현할 때 소수점 이하는 버림한다. +- [x] 숫자는 한번에 최대 3자리 수까지 입력 가능하다. +- [x] 계산 결과를 표현할 때 소수점 이하는 버림한다. diff --git a/src/js/index.ts b/src/js/index.ts index 28232f8..2fa3fde 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -58,7 +58,7 @@ const operatorEvent = (e: Event): void => { if (eventTarget.innerText === '=') { document.getElementById('total')!.innerText = String( - calculateResult(document.getElementById('total')!.innerText) + Math.floor(calculateResult(document.getElementById('total')!.innerText)) ); return; } From 1ab968c9c609adea2ee9ac417420c7ed8b9a5dd4 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 20:49:27 +0900 Subject: [PATCH 17/25] =?UTF-8?q?chore:=20add=20test=20case=20=EA=B3=84?= =?UTF-8?q?=EC=82=B0=20=EA=B2=B0=EA=B3=BC=EB=A5=BC=20=ED=91=9C=ED=98=84?= =?UTF-8?q?=ED=95=A0=20=EB=95=8C=20=EC=86=8C=EC=88=98=EC=A0=90=20=EC=9D=B4?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=B2=84=EB=A6=BC=ED=95=9C=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 44 +++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index df5f3c1..42375bf 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -8,15 +8,19 @@ const testInputClickEvent = (first, result) => { }; const testTwoInputCalculateEvent = (first, oper, second, result) => { - cy.get('.digit') - .contains(first) - .click(); + for (let item of first) { + cy.get('.digit') + .contains(item) + .click(); + } cy.get('.operations') .contains(oper) .click(); - cy.get('.digit') - .contains(second) - .click(); + for (let item of second) { + cy.get('.digit') + .contains(item) + .click(); + } cy.get('.operations') .contains('=') .click(); @@ -85,15 +89,37 @@ describe('Render max input length 3 when button click', () => { testInputClickEvent([1, 2, 3], '123'); }); it('button 1 2 3 4', () => { - testInputClickEvent([1, 2, 3], '123'); + testInputClickEvent([1, 2, 3, 4], '123'); }); + it('', () => {}); }); describe('Calculate two input when button click', () => { beforeEach(() => { cy.visit('/javascript-calculator/'); }); - it('button 1 2', () => { - testTwoInputCalculateEvent(1, '+', 2, '3'); + it('button 1 + 2', () => { + testTwoInputCalculateEvent([1], '+', [2], '3'); + }); + it('button 1234567 + 1234567', () => { + testTwoInputCalculateEvent([1,2,3,4,5,6,7], '+', [1,2,3,4,5,6,7], '246'); + }); + it('button 42424242 + 42424242', () => { + testTwoInputCalculateEvent([4,2,4,2,4,2,4,2], '+', [4,2,4,2,4,2,4,2], '848'); + }); +}); + +describe('계산 결과를 표현할 때 소수점 이하는 버림한다.', () => { + beforeEach(() => { + cy.visit('/javascript-calculator/'); + }); + it('button 1 / 3', () => { + testTwoInputCalculateEvent([1], '/', [3], '0'); + }); + it('button 3 / 2', () => { + testTwoInputCalculateEvent([3], '/', [2], '1'); + }); + it('button 5 / 2', () => { + testTwoInputCalculateEvent([5], '/', [2], '2'); }); }); From 2a7842917a643bf6c921c5ec5adb0f8d804bfc58 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 20:55:49 +0900 Subject: [PATCH 18/25] =?UTF-8?q?feat:=20AC(All=20Clear)=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=EC=9D=84=20=EB=88=84=EB=A5=BC=EB=95=8C=20total?= =?UTF-8?q?=EC=9D=84=200=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=9C?= =?UTF-8?q?=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 16 ++++++++++++++++ dist/js/index.js | 9 ++++++++- src/js/index.ts | 27 +++++++++++++++++++-------- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 42375bf..64bc2a1 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -123,3 +123,19 @@ describe('계산 결과를 표현할 때 소수점 이하는 버림한다.', () testTwoInputCalculateEvent([5], '/', [2], '2'); }); }); + +describe('AC(All Clear) 버튼을 누를때 total을 0으로 변경한다.', () => { + beforeEach(() => { + cy.visit('/javascript-calculator/'); + }); + it('button 1 / 3', () => { + testTwoInputCalculateEvent([5], '/', [2], '2'); + cy.get('.modifier').click(); + cy.get('#total').should('have.text', '0'); + }); + it('button 1234567 + 1234567', () => { + testTwoInputCalculateEvent([1,2,3,4], '+', [1,2,3,4], '246'); + cy.get('.modifier').click(); + cy.get('#total').should('have.text', '0'); + }); +}); diff --git a/dist/js/index.js b/dist/js/index.js index 645760a..cf659a9 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -41,7 +41,6 @@ const digitClickEvent = (e) => { if (result === '') { return; } - ; document.getElementById('total').innerText = result; } }; @@ -59,6 +58,9 @@ const operatorEvent = (e) => { document.getElementById('total').innerText += eventTarget.innerText; } }; +const ACEvent = () => { + document.getElementById('total').innerText = '0'; +}; export default function App() { document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); @@ -68,5 +70,10 @@ export default function App() { .addEventListener('click', e => { operatorEvent(e); }); + document + .getElementsByClassName('modifier')[0] + .addEventListener('click', () => { + ACEvent(); + }); } App(); diff --git a/src/js/index.ts b/src/js/index.ts index 2fa3fde..d5f04e6 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -18,13 +18,13 @@ const checkValidInput = (total: string): string => { new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?') ); if (result[2] === undefined) { - if (result [1] === undefined) { - return ''; - } - return result[1]; + if (result[1] === undefined) { + return ''; + } + return result[1]; } if (result[3] === undefined) { - return result[1] + result[2]; + return result[1] + result[2]; } return result[1] + result[2] + result[3]; }; @@ -44,10 +44,12 @@ const digitClickEvent = (e: Event): void => { if (Number(totalTarget!.innerText) === 0) { document.getElementById('total')!.innerText = eventTarget.innerText; } else { - const result = checkValidInput(document.getElementById('total')!.innerText + eventTarget.innerText); + const result = checkValidInput( + document.getElementById('total')!.innerText + eventTarget.innerText + ); if (result === '') { - return ; - }; + return; + } document.getElementById('total')!.innerText = result; } }; @@ -70,6 +72,10 @@ const operatorEvent = (e: Event): void => { } }; +const ACEvent = (): void => { + document.getElementById('total')!.innerText = '0'; +}; + export default function App(): void { document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); @@ -79,6 +85,11 @@ export default function App(): void { .addEventListener('click', e => { operatorEvent(e); }); + document + .getElementsByClassName('modifier')[0] + .addEventListener('click', () => { + ACEvent(); + }); } App(); From 33ea372b2c5cbae904615cce02603431cf2cf7d3 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 21:23:08 +0900 Subject: [PATCH 19/25] =?UTF-8?q?feat:=20operator=EA=B0=80=20=EC=97=B0?= =?UTF-8?q?=EC=86=8D=EC=9C=BC=EB=A1=9C=20=EB=82=98=EC=99=94=EC=9D=84?= =?UTF-8?q?=EB=95=8C=20=ED=95=9C=EA=B0=9C=EB=A7=8C=20=EC=A0=81=EC=9A=A9?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 51 ++++++++++++++++++++++------- dist/js/index.js | 2 +- src/js/index.ts | 2 +- tsconfig.json | 2 +- 4 files changed, 42 insertions(+), 15 deletions(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 64bc2a1..69b6b85 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -13,9 +13,11 @@ const testTwoInputCalculateEvent = (first, oper, second, result) => { .contains(item) .click(); } - cy.get('.operations') - .contains(oper) - .click(); + for (let item of oper) { + cy.get('.operations') + .contains(item) + .click(); + } for (let item of second) { cy.get('.digit') .contains(item) @@ -91,7 +93,6 @@ describe('Render max input length 3 when button click', () => { it('button 1 2 3 4', () => { testInputClickEvent([1, 2, 3, 4], '123'); }); - it('', () => {}); }); describe('Calculate two input when button click', () => { @@ -99,13 +100,23 @@ describe('Calculate two input when button click', () => { cy.visit('/javascript-calculator/'); }); it('button 1 + 2', () => { - testTwoInputCalculateEvent([1], '+', [2], '3'); + testTwoInputCalculateEvent([1], ['+'], [2], '3'); }); it('button 1234567 + 1234567', () => { - testTwoInputCalculateEvent([1,2,3,4,5,6,7], '+', [1,2,3,4,5,6,7], '246'); + testTwoInputCalculateEvent( + [1, 2, 3, 4, 5, 6, 7], + ['+'], + [1, 2, 3, 4, 5, 6, 7], + '246' + ); }); it('button 42424242 + 42424242', () => { - testTwoInputCalculateEvent([4,2,4,2,4,2,4,2], '+', [4,2,4,2,4,2,4,2], '848'); + testTwoInputCalculateEvent( + [4, 2, 4, 2, 4, 2, 4, 2], + ['+'], + [4, 2, 4, 2, 4, 2, 4, 2], + '848' + ); }); }); @@ -114,13 +125,13 @@ describe('계산 결과를 표현할 때 소수점 이하는 버림한다.', () cy.visit('/javascript-calculator/'); }); it('button 1 / 3', () => { - testTwoInputCalculateEvent([1], '/', [3], '0'); + testTwoInputCalculateEvent([1], ['/'], [3], '0'); }); it('button 3 / 2', () => { - testTwoInputCalculateEvent([3], '/', [2], '1'); + testTwoInputCalculateEvent([3], ['/'], [2], '1'); }); it('button 5 / 2', () => { - testTwoInputCalculateEvent([5], '/', [2], '2'); + testTwoInputCalculateEvent([5], ['/'], [2], '2'); }); }); @@ -129,12 +140,28 @@ describe('AC(All Clear) 버튼을 누를때 total을 0으로 변경한다.', () cy.visit('/javascript-calculator/'); }); it('button 1 / 3', () => { - testTwoInputCalculateEvent([5], '/', [2], '2'); + testTwoInputCalculateEvent([5], ['/'], [2], '2'); cy.get('.modifier').click(); cy.get('#total').should('have.text', '0'); }); it('button 1234567 + 1234567', () => { - testTwoInputCalculateEvent([1,2,3,4], '+', [1,2,3,4], '246'); + testTwoInputCalculateEvent([1, 2, 3, 4], ['+'], [1, 2, 3, 4], '246'); + cy.get('.modifier').click(); + cy.get('#total').should('have.text', '0'); + }); +}); + +describe('operator가 연속으로 나왔을때 한개만 적용되도록 처리', () => { + beforeEach(() => { + cy.visit('/javascript-calculator/'); + }); + it('button 1 /// 3', () => { + testTwoInputCalculateEvent([5], ['/', '/', '/'], [2], '2'); + cy.get('.modifier').click(); + cy.get('#total').should('have.text', '0'); + }); + it('button 4 +++++ 2', () => { + testTwoInputCalculateEvent([4], ['+', '+', '+', '+', '+'], [2], '6'); cy.get('.modifier').click(); cy.get('#total').should('have.text', '0'); }); diff --git a/dist/js/index.js b/dist/js/index.js index cf659a9..e967091 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -54,7 +54,7 @@ const operatorEvent = (e) => { if (Number(totalTarget.innerText) === 0) { return; } - else { + else if (!['/', '-', 'X', '+'].includes(totalTarget.innerText[totalTarget.innerText.length - 1])) { document.getElementById('total').innerText += eventTarget.innerText; } }; diff --git a/src/js/index.ts b/src/js/index.ts index d5f04e6..08e1521 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -67,7 +67,7 @@ const operatorEvent = (e: Event): void => { if (Number(totalTarget!.innerText) === 0) { return; - } else { + } else if (!['/', '-', 'X', '+'].includes(totalTarget!.innerText[totalTarget!.innerText.length - 1])) { document.getElementById('total')!.innerText += eventTarget.innerText; } }; diff --git a/tsconfig.json b/tsconfig.json index f6c6563..d0aa8f4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,7 @@ // "incremental": true, /* Enable incremental compilation */ "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ // "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ - "lib": ["dom","es6"], /* Specify library files to be included in the compilation. */ + "lib": ["dom","es6", "es2017"], /* Specify library files to be included in the compilation. */ // "allowJs": true, /* Allow javascript files to be compiled. */ // "checkJs": true, /* Report errors in .js files. */ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ From d00ae278f5fcc64651682f39fd40ca7f07e7036c Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 21:44:48 +0900 Subject: [PATCH 20/25] =?UTF-8?q?feat:=20operator=EA=B0=80=202=EB=B2=88?= =?UTF-8?q?=EC=9D=B4=EC=83=81=20=EB=82=98=EC=99=94=EC=9D=84=EB=95=8C=20?= =?UTF-8?q?=ED=95=9C=EA=B0=9C=EB=A7=8C=20=EC=A0=81=EC=9A=A9=EB=90=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cypress/integration/counter.spec.js | 24 ++++++++++++++++++++++++ dist/js/index.js | 14 ++++++++++++++ src/js/index.ts | 26 +++++++++++++++++++++++++- 3 files changed, 63 insertions(+), 1 deletion(-) diff --git a/cypress/integration/counter.spec.js b/cypress/integration/counter.spec.js index 69b6b85..37cf7a1 100644 --- a/cypress/integration/counter.spec.js +++ b/cypress/integration/counter.spec.js @@ -166,3 +166,27 @@ describe('operator가 연속으로 나왔을때 한개만 적용되도록 처리 cy.get('#total').should('have.text', '0'); }); }); + +describe('operator가 2번이상 나왔을때 한개만 적용되도록 처리', () => { + beforeEach(() => { + cy.visit('/javascript-calculator/'); + }); + it('button 1 + 3 + =', () => { + cy.get('.digit') + .contains('4') + .click(); + cy.get('.operations') + .contains('+') + .click(); + cy.get('.digit') + .contains('2') + .click(); + cy.get('.operations') + .contains('+') + .click(); + cy.get('.operations') + .contains('=') + .click(); + cy.get('#total').should('have.text', '6'); + }); +}); diff --git a/dist/js/index.js b/dist/js/index.js index e967091..29ef039 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -44,10 +44,19 @@ const digitClickEvent = (e) => { document.getElementById('total').innerText = result; } }; +const getCountOperationdataSet = () => { + const operations = document.getElementsByClassName('operations')[0]; + return operations.dataset['count'] ? operations.dataset['count'] : ''; +}; +const setCountOperationdataSet = (count) => { + const operations = document.getElementsByClassName('operations')[0]; + operations.dataset['count'] = count; +}; const operatorEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); if (eventTarget.innerText === '=') { + setCountOperationdataSet('0'); document.getElementById('total').innerText = String(Math.floor(calculateResult(document.getElementById('total').innerText))); return; } @@ -55,6 +64,10 @@ const operatorEvent = (e) => { return; } else if (!['/', '-', 'X', '+'].includes(totalTarget.innerText[totalTarget.innerText.length - 1])) { + if (getCountOperationdataSet() === '1') { + return; + } + setCountOperationdataSet('1'); document.getElementById('total').innerText += eventTarget.innerText; } }; @@ -62,6 +75,7 @@ const ACEvent = () => { document.getElementById('total').innerText = '0'; }; export default function App() { + setCountOperationdataSet('0'); document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); diff --git a/src/js/index.ts b/src/js/index.ts index 08e1521..6200a38 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -54,11 +54,26 @@ const digitClickEvent = (e: Event): void => { } }; +const getCountOperationdataSet = (): string => { + const operations = document.getElementsByClassName( + 'operations' + )[0]! as HTMLElement; + return operations.dataset['count'] ? operations.dataset['count'] : ''; +}; + +const setCountOperationdataSet = (count: string): void => { + const operations = document.getElementsByClassName( + 'operations' + )[0]! as HTMLElement; + operations.dataset['count'] = count; +}; + const operatorEvent = (e: Event): void => { const eventTarget: HTMLElement = e.target as HTMLElement; const totalTarget: HTMLElement | null = document.getElementById('total'); if (eventTarget.innerText === '=') { + setCountOperationdataSet('0'); document.getElementById('total')!.innerText = String( Math.floor(calculateResult(document.getElementById('total')!.innerText)) ); @@ -67,7 +82,15 @@ const operatorEvent = (e: Event): void => { if (Number(totalTarget!.innerText) === 0) { return; - } else if (!['/', '-', 'X', '+'].includes(totalTarget!.innerText[totalTarget!.innerText.length - 1])) { + } else if ( + !['/', '-', 'X', '+'].includes( + totalTarget!.innerText[totalTarget!.innerText.length - 1] + ) + ) { + if (getCountOperationdataSet() === '1') { + return; + } + setCountOperationdataSet('1'); document.getElementById('total')!.innerText += eventTarget.innerText; } }; @@ -77,6 +100,7 @@ const ACEvent = (): void => { }; export default function App(): void { + setCountOperationdataSet('0'); document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); From 6b7a4c56017547d60cbc7d4d7efaed64ada49f5c Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 21:53:47 +0900 Subject: [PATCH 21/25] =?UTF-8?q?refactor:=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=B3=84=EB=A1=9C=20=EB=82=98=EB=88=84?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/js/check.js | 13 +++++ dist/js/index.js | 23 +------- dist/js/operation-data-set.js | 9 +++ docs/README.md | 2 +- src/js/calculate-util.ts | 25 +++++++++ src/js/check.ts | 19 +++++++ src/js/controller.ts | 59 ++++++++++++++++++++ src/js/index.ts | 101 +--------------------------------- src/js/operation-data-set.ts | 16 ++++++ 9 files changed, 146 insertions(+), 121 deletions(-) create mode 100644 dist/js/check.js create mode 100644 dist/js/operation-data-set.js create mode 100644 src/js/calculate-util.ts create mode 100644 src/js/check.ts create mode 100644 src/js/controller.ts create mode 100644 src/js/operation-data-set.ts diff --git a/dist/js/check.js b/dist/js/check.js new file mode 100644 index 0000000..fbfc3c6 --- /dev/null +++ b/dist/js/check.js @@ -0,0 +1,13 @@ +export const checkValidInput = (total) => { + const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?')); + if (result[2] === undefined) { + if (result[1] === undefined) { + return ''; + } + return result[1]; + } + if (result[3] === undefined) { + return result[1] + result[2]; + } + return result[1] + result[2] + result[3]; +}; diff --git a/dist/js/index.js b/dist/js/index.js index 29ef039..28c3041 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -1,3 +1,5 @@ +import { getCountOperationdataSet, setCountOperationdataSet } from './operation-data-set.js'; +import { checkValidInput } from './check.js'; const calculateOperator = (total, operator, num) => { let result = 0; if (operator === '+') @@ -12,19 +14,6 @@ const calculateOperator = (total, operator, num) => { result = total * num; return result; }; -const checkValidInput = (total) => { - const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?')); - if (result[2] === undefined) { - if (result[1] === undefined) { - return ''; - } - return result[1]; - } - if (result[3] === undefined) { - return result[1] + result[2]; - } - return result[1] + result[2] + result[3]; -}; const calculateResult = (total) => { const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})')); console.log(result); @@ -44,14 +33,6 @@ const digitClickEvent = (e) => { document.getElementById('total').innerText = result; } }; -const getCountOperationdataSet = () => { - const operations = document.getElementsByClassName('operations')[0]; - return operations.dataset['count'] ? operations.dataset['count'] : ''; -}; -const setCountOperationdataSet = (count) => { - const operations = document.getElementsByClassName('operations')[0]; - operations.dataset['count'] = count; -}; const operatorEvent = (e) => { const eventTarget = e.target; const totalTarget = document.getElementById('total'); diff --git a/dist/js/operation-data-set.js b/dist/js/operation-data-set.js new file mode 100644 index 0000000..50f426c --- /dev/null +++ b/dist/js/operation-data-set.js @@ -0,0 +1,9 @@ +const getCountOperationdataSet = () => { + const operations = document.getElementsByClassName('operations')[0]; + return operations.dataset['count'] ? operations.dataset['count'] : ''; +}; +const setCountOperationdataSet = (count) => { + const operations = document.getElementsByClassName('operations')[0]; + operations.dataset['count'] = count; +}; +export { getCountOperationdataSet, setCountOperationdataSet }; diff --git a/docs/README.md b/docs/README.md index 049f5dd..31a1558 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,6 +24,6 @@ - [x] 2개의 숫자에 대해 뺄셈이 가능하다. - [x] 2개의 숫자에 대해 곱셈이 가능하다. - [x] 2개의 숫자에 대해 나눗셈이 가능하다. -- [ ] AC(All Clear)버튼을 누르면 0으로 초기화 한다. +- [x] AC(All Clear)버튼을 누르면 0으로 초기화 한다. - [x] 숫자는 한번에 최대 3자리 수까지 입력 가능하다. - [x] 계산 결과를 표현할 때 소수점 이하는 버림한다. diff --git a/src/js/calculate-util.ts b/src/js/calculate-util.ts new file mode 100644 index 0000000..8aa0d26 --- /dev/null +++ b/src/js/calculate-util.ts @@ -0,0 +1,25 @@ +const calculateOperator = ( + total: number, + operator: string, + num: number +): number => { + let result: number = 0; + + if (operator === '+') result = total + num; + if (operator === '/') result = total / num; + if (operator === '%') result = total % num; + if (operator === '-') result = total - num; + if (operator === 'X') result = total * num; + + return result; +}; + +const calculateResult = (total: string): number => { + const result: any = total.match( + new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})') + ); + + return calculateOperator(Number(result[1]), result[2], Number(result[3])); +}; + +export { calculateResult }; diff --git a/src/js/check.ts b/src/js/check.ts new file mode 100644 index 0000000..e306e49 --- /dev/null +++ b/src/js/check.ts @@ -0,0 +1,19 @@ +export const checkValidInput = (total: string): string => { + const result: any = total.match( + new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?') + ); + if (result[2] === undefined) { + if (result[1] === undefined) { + + return ''; + } + + return result[1]; + } + if (result[3] === undefined) { + + return result[1] + result[2]; + } + + return result[1] + result[2] + result[3]; +}; diff --git a/src/js/controller.ts b/src/js/controller.ts new file mode 100644 index 0000000..9517cf9 --- /dev/null +++ b/src/js/controller.ts @@ -0,0 +1,59 @@ +import { + getCountOperationdataSet, + setCountOperationdataSet +} from './operation-data-set.js'; +import { checkValidInput } from './check.js'; +import { calculateResult } from './calculate-util.js'; + +const digitClickEvent = (e: Event): void => { + const eventTarget: HTMLElement = e.target as HTMLElement; + const totalTarget: HTMLElement | null = document.getElementById('total'); + + if (Number(totalTarget!.innerText) === 0) { + document.getElementById('total')!.innerText = eventTarget.innerText; + } else { + const result = checkValidInput( + document.getElementById('total')!.innerText + eventTarget.innerText + ); + if (result === '') { + + return; + } + document.getElementById('total')!.innerText = result; + } +}; + +const operatorEvent = (e: Event): void => { + const eventTarget: HTMLElement = e.target as HTMLElement; + const totalTarget: HTMLElement | null = document.getElementById('total'); + + if (eventTarget.innerText === '=') { + setCountOperationdataSet('0'); + document.getElementById('total')!.innerText = String( + Math.floor(calculateResult(document.getElementById('total')!.innerText)) + ); + + return; + } + if (Number(totalTarget!.innerText) === 0) { + + return; + } else if ( + !['/', '-', 'X', '+'].includes( + totalTarget!.innerText[totalTarget!.innerText.length - 1] + ) + ) { + if (getCountOperationdataSet() === '1') { + + return; + } + setCountOperationdataSet('1'); + document.getElementById('total')!.innerText += eventTarget.innerText; + } +}; + +const ACEvent = (): void => { + document.getElementById('total')!.innerText = '0'; +}; + +export { digitClickEvent, operatorEvent, ACEvent }; diff --git a/src/js/index.ts b/src/js/index.ts index 6200a38..d37c59e 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -1,103 +1,6 @@ -const calculateOperator = ( - total: number, - operator: string, - num: number -): number => { - let result: number = 0; +import { setCountOperationdataSet } from './operation-data-set.js'; - if (operator === '+') result = total + num; - if (operator === '/') result = total / num; - if (operator === '%') result = total % num; - if (operator === '-') result = total - num; - if (operator === 'X') result = total * num; - return result; -}; - -const checkValidInput = (total: string): string => { - const result: any = total.match( - new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?') - ); - if (result[2] === undefined) { - if (result[1] === undefined) { - return ''; - } - return result[1]; - } - if (result[3] === undefined) { - return result[1] + result[2]; - } - return result[1] + result[2] + result[3]; -}; - -const calculateResult = (total: string): number => { - const result: any = total.match( - new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})') - ); - console.log(result); - return calculateOperator(Number(result[1]), result[2], Number(result[3])); -}; - -const digitClickEvent = (e: Event): void => { - const eventTarget: HTMLElement = e.target as HTMLElement; - const totalTarget: HTMLElement | null = document.getElementById('total'); - - if (Number(totalTarget!.innerText) === 0) { - document.getElementById('total')!.innerText = eventTarget.innerText; - } else { - const result = checkValidInput( - document.getElementById('total')!.innerText + eventTarget.innerText - ); - if (result === '') { - return; - } - document.getElementById('total')!.innerText = result; - } -}; - -const getCountOperationdataSet = (): string => { - const operations = document.getElementsByClassName( - 'operations' - )[0]! as HTMLElement; - return operations.dataset['count'] ? operations.dataset['count'] : ''; -}; - -const setCountOperationdataSet = (count: string): void => { - const operations = document.getElementsByClassName( - 'operations' - )[0]! as HTMLElement; - operations.dataset['count'] = count; -}; - -const operatorEvent = (e: Event): void => { - const eventTarget: HTMLElement = e.target as HTMLElement; - const totalTarget: HTMLElement | null = document.getElementById('total'); - - if (eventTarget.innerText === '=') { - setCountOperationdataSet('0'); - document.getElementById('total')!.innerText = String( - Math.floor(calculateResult(document.getElementById('total')!.innerText)) - ); - return; - } - - if (Number(totalTarget!.innerText) === 0) { - return; - } else if ( - !['/', '-', 'X', '+'].includes( - totalTarget!.innerText[totalTarget!.innerText.length - 1] - ) - ) { - if (getCountOperationdataSet() === '1') { - return; - } - setCountOperationdataSet('1'); - document.getElementById('total')!.innerText += eventTarget.innerText; - } -}; - -const ACEvent = (): void => { - document.getElementById('total')!.innerText = '0'; -}; +import { digitClickEvent, operatorEvent, ACEvent } from './controller.js'; export default function App(): void { setCountOperationdataSet('0'); diff --git a/src/js/operation-data-set.ts b/src/js/operation-data-set.ts new file mode 100644 index 0000000..230ecdb --- /dev/null +++ b/src/js/operation-data-set.ts @@ -0,0 +1,16 @@ +const getCountOperationdataSet = (): string => { + const operations = document.getElementsByClassName( + 'operations' + )[0]! as HTMLElement; + + return operations.dataset['count'] ? operations.dataset['count'] : ''; +}; + +const setCountOperationdataSet = (count: string): void => { + const operations = document.getElementsByClassName( + 'operations' + )[0]! as HTMLElement; + operations.dataset['count'] = count; +}; + +export { getCountOperationdataSet, setCountOperationdataSet }; From b07c74bcea8701d2cb5c8eb80ad78c6331d58339 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Tue, 1 Jun 2021 21:55:46 +0900 Subject: [PATCH 22/25] feat: add init func --- dist/js/calculate-util.js | 19 ++++++++++++ dist/js/controller.js | 40 +++++++++++++++++++++++++ dist/js/index.js | 61 ++------------------------------------- dist/js/init.js | 4 +++ src/js/index.ts | 4 +-- src/js/init.ts | 5 ++++ 6 files changed, 73 insertions(+), 60 deletions(-) create mode 100644 dist/js/calculate-util.js create mode 100644 dist/js/controller.js create mode 100644 dist/js/init.js create mode 100644 src/js/init.ts diff --git a/dist/js/calculate-util.js b/dist/js/calculate-util.js new file mode 100644 index 0000000..fab79b7 --- /dev/null +++ b/dist/js/calculate-util.js @@ -0,0 +1,19 @@ +const calculateOperator = (total, operator, num) => { + let result = 0; + if (operator === '+') + result = total + num; + if (operator === '/') + result = total / num; + if (operator === '%') + result = total % num; + if (operator === '-') + result = total - num; + if (operator === 'X') + result = total * num; + return result; +}; +const calculateResult = (total) => { + const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})')); + return calculateOperator(Number(result[1]), result[2], Number(result[3])); +}; +export { calculateResult }; diff --git a/dist/js/controller.js b/dist/js/controller.js new file mode 100644 index 0000000..0dedc86 --- /dev/null +++ b/dist/js/controller.js @@ -0,0 +1,40 @@ +import { getCountOperationdataSet, setCountOperationdataSet } from './operation-data-set.js'; +import { checkValidInput } from './check.js'; +import { calculateResult } from './calculate-util.js'; +const digitClickEvent = (e) => { + const eventTarget = e.target; + const totalTarget = document.getElementById('total'); + if (Number(totalTarget.innerText) === 0) { + document.getElementById('total').innerText = eventTarget.innerText; + } + else { + const result = checkValidInput(document.getElementById('total').innerText + eventTarget.innerText); + if (result === '') { + return; + } + document.getElementById('total').innerText = result; + } +}; +const operatorEvent = (e) => { + const eventTarget = e.target; + const totalTarget = document.getElementById('total'); + if (eventTarget.innerText === '=') { + setCountOperationdataSet('0'); + document.getElementById('total').innerText = String(Math.floor(calculateResult(document.getElementById('total').innerText))); + return; + } + if (Number(totalTarget.innerText) === 0) { + return; + } + else if (!['/', '-', 'X', '+'].includes(totalTarget.innerText[totalTarget.innerText.length - 1])) { + if (getCountOperationdataSet() === '1') { + return; + } + setCountOperationdataSet('1'); + document.getElementById('total').innerText += eventTarget.innerText; + } +}; +const ACEvent = () => { + document.getElementById('total').innerText = '0'; +}; +export { digitClickEvent, operatorEvent, ACEvent }; diff --git a/dist/js/index.js b/dist/js/index.js index 28c3041..4119c7d 100644 --- a/dist/js/index.js +++ b/dist/js/index.js @@ -1,62 +1,7 @@ -import { getCountOperationdataSet, setCountOperationdataSet } from './operation-data-set.js'; -import { checkValidInput } from './check.js'; -const calculateOperator = (total, operator, num) => { - let result = 0; - if (operator === '+') - result = total + num; - if (operator === '/') - result = total / num; - if (operator === '%') - result = total % num; - if (operator === '-') - result = total - num; - if (operator === 'X') - result = total * num; - return result; -}; -const calculateResult = (total) => { - const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})')); - console.log(result); - return calculateOperator(Number(result[1]), result[2], Number(result[3])); -}; -const digitClickEvent = (e) => { - const eventTarget = e.target; - const totalTarget = document.getElementById('total'); - if (Number(totalTarget.innerText) === 0) { - document.getElementById('total').innerText = eventTarget.innerText; - } - else { - const result = checkValidInput(document.getElementById('total').innerText + eventTarget.innerText); - if (result === '') { - return; - } - document.getElementById('total').innerText = result; - } -}; -const operatorEvent = (e) => { - const eventTarget = e.target; - const totalTarget = document.getElementById('total'); - if (eventTarget.innerText === '=') { - setCountOperationdataSet('0'); - document.getElementById('total').innerText = String(Math.floor(calculateResult(document.getElementById('total').innerText))); - return; - } - if (Number(totalTarget.innerText) === 0) { - return; - } - else if (!['/', '-', 'X', '+'].includes(totalTarget.innerText[totalTarget.innerText.length - 1])) { - if (getCountOperationdataSet() === '1') { - return; - } - setCountOperationdataSet('1'); - document.getElementById('total').innerText += eventTarget.innerText; - } -}; -const ACEvent = () => { - document.getElementById('total').innerText = '0'; -}; +import { init } from './init.js'; +import { digitClickEvent, operatorEvent, ACEvent } from './controller.js'; export default function App() { - setCountOperationdataSet('0'); + init(); document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); diff --git a/dist/js/init.js b/dist/js/init.js new file mode 100644 index 0000000..b46420c --- /dev/null +++ b/dist/js/init.js @@ -0,0 +1,4 @@ +import { setCountOperationdataSet } from './operation-data-set.js'; +export const init = () => { + setCountOperationdataSet('0'); +}; diff --git a/src/js/index.ts b/src/js/index.ts index d37c59e..00a6375 100644 --- a/src/js/index.ts +++ b/src/js/index.ts @@ -1,9 +1,9 @@ -import { setCountOperationdataSet } from './operation-data-set.js'; +import { init } from './init.js'; import { digitClickEvent, operatorEvent, ACEvent } from './controller.js'; export default function App(): void { - setCountOperationdataSet('0'); + init(); document.getElementsByClassName('digits')[0].addEventListener('click', e => { digitClickEvent(e); }); diff --git a/src/js/init.ts b/src/js/init.ts new file mode 100644 index 0000000..d859501 --- /dev/null +++ b/src/js/init.ts @@ -0,0 +1,5 @@ +import { setCountOperationdataSet } from './operation-data-set.js'; + +export const init = (): void => { + setCountOperationdataSet('0'); +}; From 91944e81d81e1e8b8118132b15e0b239df48f309 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Wed, 2 Jun 2021 10:36:38 +0900 Subject: [PATCH 23/25] =?UTF-8?q?feat:=20=EC=A0=95=EA=B7=9C=ED=91=9C?= =?UTF-8?q?=ED=98=84=EC=8B=9C=20=ED=95=A0=EB=8B=B9=20=EB=90=9C=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=20=ED=83=80=EC=9E=85=20=EA=B5=AC=EC=B2=B4=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/calculate-util.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/js/calculate-util.ts b/src/js/calculate-util.ts index 8aa0d26..5040a09 100644 --- a/src/js/calculate-util.ts +++ b/src/js/calculate-util.ts @@ -15,10 +15,12 @@ const calculateOperator = ( }; const calculateResult = (total: string): number => { - const result: any = total.match( + const result: RegExpMatchArray | null = total.match( new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})') ); - + if (result === null) { + return 0; + } return calculateOperator(Number(result[1]), result[2], Number(result[3])); }; From 041dfb59189acb7eccdd3cdc5d717279e02093e4 Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Wed, 2 Jun 2021 10:38:22 +0900 Subject: [PATCH 24/25] =?UTF-8?q?feat:=20=EC=A0=95=EA=B7=9C=ED=91=9C?= =?UTF-8?q?=ED=98=84=EC=8B=9C=20=ED=95=A0=EB=8B=B9=20=EB=90=9C=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=20=ED=83=80=EC=9E=85=20=EA=B5=AC=EC=B2=B4=EC=A0=81?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/check.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/js/check.ts b/src/js/check.ts index e306e49..486c57e 100644 --- a/src/js/check.ts +++ b/src/js/check.ts @@ -1,7 +1,10 @@ export const checkValidInput = (total: string): string => { - const result: any = total.match( + const result: RegExpMatchArray | null = total.match( new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?') ); + if (!result) { + return ''; + } if (result[2] === undefined) { if (result[1] === undefined) { From 04b7bbe5f1731916519b2183f2a31c17d99f38bc Mon Sep 17 00:00:00 2001 From: hochan Lee Date: Wed, 2 Jun 2021 13:04:47 +0900 Subject: [PATCH 25/25] =?UTF-8?q?fix:=20Uncaught=20TypeError:=20Cannot=20r?= =?UTF-8?q?ead=20property=20'1'=20of=20null(=E2=80=A6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/js/calculate-util.js | 5 ++++- dist/js/check.js | 3 +++ src/js/calculate-util.ts | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/dist/js/calculate-util.js b/dist/js/calculate-util.js index fab79b7..3af0449 100644 --- a/dist/js/calculate-util.js +++ b/dist/js/calculate-util.js @@ -14,6 +14,9 @@ const calculateOperator = (total, operator, num) => { }; const calculateResult = (total) => { const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})')); - return calculateOperator(Number(result[1]), result[2], Number(result[3])); + if (result) { + return calculateOperator(Number(result[1]), result[2], Number(result[3])); + } + return 0; }; export { calculateResult }; diff --git a/dist/js/check.js b/dist/js/check.js index fbfc3c6..acaea30 100644 --- a/dist/js/check.js +++ b/dist/js/check.js @@ -1,5 +1,8 @@ export const checkValidInput = (total) => { const result = total.match(new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)?(\\-?[\\d]{1,3})?')); + if (!result) { + return ''; + } if (result[2] === undefined) { if (result[1] === undefined) { return ''; diff --git a/src/js/calculate-util.ts b/src/js/calculate-util.ts index 5040a09..20ca158 100644 --- a/src/js/calculate-util.ts +++ b/src/js/calculate-util.ts @@ -18,10 +18,10 @@ const calculateResult = (total: string): number => { const result: RegExpMatchArray | null = total.match( new RegExp('(\\-?[\\d]{1,3})(X|\\-|\\+|\\/|\\=)(\\-?[\\d]{1,3})') ); - if (result === null) { - return 0; + if (result) { + return calculateOperator(Number(result[1]), result[2], Number(result[3])); } - return calculateOperator(Number(result[1]), result[2], Number(result[3])); + return 0; }; export { calculateResult };