diff --git a/bias-variance/.gitignore b/bias-variance/.gitignore deleted file mode 100644 index 2103f3a0..00000000 --- a/bias-variance/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -build -.cache -node_modules -dist -yarn.lock -thurs.todo -outline.txt -*.todo -.DS_Store -data diff --git a/bias-variance/Config b/bias-variance/Config deleted file mode 100644 index 5065365c..00000000 --- a/bias-variance/Config +++ /dev/null @@ -1,27 +0,0 @@ -package.Mlu-explain_bias-variance = { - interfaces = (1.0); - - # Use NoOpBuild. See https://w.amazon.com/index.php/BrazilBuildSystem/NoOpBuild - build-system = npm-pretty-much; - build-tools = { - 1.0 = { - NpmPrettyMuch = 1.0; - NodeJS = 12.x; - }; - }; - - # Use runtime-dependencies for when you want to bring in additional - # packages when deploying. - # Use dependencies instead if you intend for these dependencies to - # be exported to other packages that build against you. - dependencies = { - 1.0 = { - }; - }; - - runtime-dependencies = { - 1.0 = { - }; - }; - -}; diff --git a/bias-variance/README.md b/bias-variance/README.md deleted file mode 100644 index 6f949e65..00000000 --- a/bias-variance/README.md +++ /dev/null @@ -1,21 +0,0 @@ -This repo holds code for the MLU-Explain visual essay: A Visual Introduction to the Bias-Variance Tradeoff. - -To view the essay, first clone the repo, then: - -``` -# install libraries -npm i - -# view dev version -npm run start -``` - -To view the full 'build' (i.e. the version we'll want to use in production): - -``` -npm run build -``` - -Then all of the assets will be available in the `dist` directory. Simply use that. - -To view a live version of the build, cd into that `dist` dir and run a live-server. diff --git a/bias-variance/assets/bvogimage.png b/bias-variance/assets/bvogimage.png deleted file mode 100644 index 3b7ea614..00000000 Binary files a/bias-variance/assets/bvogimage.png and /dev/null differ diff --git a/bias-variance/assets/mlu_robot.png b/bias-variance/assets/mlu_robot.png deleted file mode 100755 index 14164a48..00000000 Binary files a/bias-variance/assets/mlu_robot.png and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Bold.eot b/bias-variance/css/fonts/KaTeX_Main-Bold.eot deleted file mode 100644 index 80fbd022..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Bold.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Bold.ttf b/bias-variance/css/fonts/KaTeX_Main-Bold.ttf deleted file mode 100644 index 8e10722a..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Bold.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Bold.woff b/bias-variance/css/fonts/KaTeX_Main-Bold.woff deleted file mode 100644 index 43b361a6..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Bold.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Bold.woff2 b/bias-variance/css/fonts/KaTeX_Main-Bold.woff2 deleted file mode 100644 index af57a96c..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Bold.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-BoldItalic.ttf b/bias-variance/css/fonts/KaTeX_Main-BoldItalic.ttf deleted file mode 100644 index a8b527c7..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-BoldItalic.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-BoldItalic.woff b/bias-variance/css/fonts/KaTeX_Main-BoldItalic.woff deleted file mode 100644 index 8940e0b5..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-BoldItalic.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-BoldItalic.woff2 b/bias-variance/css/fonts/KaTeX_Main-BoldItalic.woff2 deleted file mode 100644 index 15cf56d3..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-BoldItalic.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Italic.eot b/bias-variance/css/fonts/KaTeX_Main-Italic.eot deleted file mode 100644 index fc770166..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Italic.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Italic.ttf b/bias-variance/css/fonts/KaTeX_Main-Italic.ttf deleted file mode 100644 index d124495d..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Italic.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Italic.woff b/bias-variance/css/fonts/KaTeX_Main-Italic.woff deleted file mode 100644 index e623236b..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Italic.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Italic.woff2 b/bias-variance/css/fonts/KaTeX_Main-Italic.woff2 deleted file mode 100644 index 944e9740..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Italic.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Regular.eot b/bias-variance/css/fonts/KaTeX_Main-Regular.eot deleted file mode 100644 index dc60c090..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Regular.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Regular.ttf b/bias-variance/css/fonts/KaTeX_Main-Regular.ttf deleted file mode 100644 index da5797ff..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Regular.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Regular.woff b/bias-variance/css/fonts/KaTeX_Main-Regular.woff deleted file mode 100644 index 37db672e..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Regular.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Main-Regular.woff2 b/bias-variance/css/fonts/KaTeX_Main-Regular.woff2 deleted file mode 100644 index 48820424..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Main-Regular.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.eot b/bias-variance/css/fonts/KaTeX_Math-BoldItalic.eot deleted file mode 100644 index 52c8b8c6..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.ttf b/bias-variance/css/fonts/KaTeX_Math-BoldItalic.ttf deleted file mode 100644 index a8b527c7..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.woff b/bias-variance/css/fonts/KaTeX_Math-BoldItalic.woff deleted file mode 100644 index 8940e0b5..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.woff2 b/bias-variance/css/fonts/KaTeX_Math-BoldItalic.woff2 deleted file mode 100644 index 15cf56d3..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-BoldItalic.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Italic.eot b/bias-variance/css/fonts/KaTeX_Math-Italic.eot deleted file mode 100644 index 64c8992c..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Italic.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Italic.ttf b/bias-variance/css/fonts/KaTeX_Math-Italic.ttf deleted file mode 100644 index 06f39d3a..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Italic.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Italic.woff b/bias-variance/css/fonts/KaTeX_Math-Italic.woff deleted file mode 100644 index cf3b4b79..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Italic.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Italic.woff2 b/bias-variance/css/fonts/KaTeX_Math-Italic.woff2 deleted file mode 100644 index 5f8c4bfa..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Italic.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Regular.eot b/bias-variance/css/fonts/KaTeX_Math-Regular.eot deleted file mode 100644 index 5521e6a5..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Regular.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Regular.ttf b/bias-variance/css/fonts/KaTeX_Math-Regular.ttf deleted file mode 100644 index 73127082..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Regular.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Regular.woff b/bias-variance/css/fonts/KaTeX_Math-Regular.woff deleted file mode 100644 index 0e2ebdf1..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Regular.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Math-Regular.woff2 b/bias-variance/css/fonts/KaTeX_Math-Regular.woff2 deleted file mode 100644 index ebe3d028..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Math-Regular.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size1-Regular.eot b/bias-variance/css/fonts/KaTeX_Size1-Regular.eot deleted file mode 100644 index 29950f95..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size1-Regular.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size1-Regular.ttf b/bias-variance/css/fonts/KaTeX_Size1-Regular.ttf deleted file mode 100644 index 194466a6..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size1-Regular.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size1-Regular.woff b/bias-variance/css/fonts/KaTeX_Size1-Regular.woff deleted file mode 100644 index 237f271e..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size1-Regular.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size1-Regular.woff2 b/bias-variance/css/fonts/KaTeX_Size1-Regular.woff2 deleted file mode 100644 index 39b6f8f7..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size1-Regular.woff2 and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size2-Regular.eot b/bias-variance/css/fonts/KaTeX_Size2-Regular.eot deleted file mode 100644 index b8b0536f..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size2-Regular.eot and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size2-Regular.ttf b/bias-variance/css/fonts/KaTeX_Size2-Regular.ttf deleted file mode 100644 index b41b66a6..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size2-Regular.ttf and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size2-Regular.woff b/bias-variance/css/fonts/KaTeX_Size2-Regular.woff deleted file mode 100644 index 4a305585..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size2-Regular.woff and /dev/null differ diff --git a/bias-variance/css/fonts/KaTeX_Size2-Regular.woff2 b/bias-variance/css/fonts/KaTeX_Size2-Regular.woff2 deleted file mode 100644 index 3facec1a..00000000 Binary files a/bias-variance/css/fonts/KaTeX_Size2-Regular.woff2 and /dev/null differ diff --git a/bias-variance/css/katex.min.css b/bias-variance/css/katex.min.css deleted file mode 100644 index 28be7d7d..00000000 --- a/bias-variance/css/katex.min.css +++ /dev/null @@ -1,920 +0,0 @@ -@font-face { - font-family: KaTeX_Main; - src: url(fonts/KaTeX_Main-Bold.woff2) format("woff2"), - url(fonts/KaTeX_Main-Bold.woff) format("woff"), - url(fonts/KaTeX_Main-Bold.ttf) format("truetype"); - font-weight: 700; - font-style: normal; -} -@font-face { - font-family: KaTeX_Main; - src: url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"), - url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"), - url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype"); - font-weight: 700; - font-style: italic; -} -@font-face { - font-family: KaTeX_Main; - src: url(fonts/KaTeX_Main-Italic.woff2) format("woff2"), - url(fonts/KaTeX_Main-Italic.woff) format("woff"), - url(fonts/KaTeX_Main-Italic.ttf) format("truetype"); - font-weight: 400; - font-style: italic; -} -@font-face { - font-family: KaTeX_Main; - src: url(fonts/KaTeX_Main-Regular.woff2) format("woff2"), - url(fonts/KaTeX_Main-Regular.woff) format("woff"), - url(fonts/KaTeX_Main-Regular.ttf) format("truetype"); - font-weight: 400; - font-style: normal; -} -@font-face { - font-family: KaTeX_Math; - src: url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"), - url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"), - url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype"); - font-weight: 700; - font-style: italic; -} -@font-face { - font-family: KaTeX_Math; - src: url(fonts/KaTeX_Math-Italic.woff2) format("woff2"), - url(fonts/KaTeX_Math-Italic.woff) format("woff"), - url(fonts/KaTeX_Math-Italic.ttf) format("truetype"); - font-weight: 400; - font-style: italic; -} -@font-face { - font-family: KaTeX_Size1; - src: url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"), - url(fonts/KaTeX_Size1-Regular.woff) format("woff"), - url(fonts/KaTeX_Size1-Regular.ttf) format("truetype"); - font-weight: 400; - font-style: normal; -} -@font-face { - font-family: KaTeX_Size2; - src: url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"), - url(fonts/KaTeX_Size2-Regular.woff) format("woff"), - url(fonts/KaTeX_Size2-Regular.ttf) format("truetype"); - font-weight: 400; - font-style: normal; -} -.katex { - font: normal 1.21em KaTeX_Main, Times New Roman, serif; - line-height: 1.2; - text-indent: 0; - text-rendering: auto; - border-color: currentColor; -} -.katex * { - -ms-high-contrast-adjust: none !important; -} -.katex .katex-version:after { - content: "0.12.0"; -} -.katex .katex-mathml { - position: absolute; - clip: rect(1px, 1px, 1px, 1px); - padding: 0; - border: 0; - height: 1px; - width: 1px; - overflow: hidden; -} -.katex .katex-html > .newline { - display: block; -} -.katex .base { - position: relative; - white-space: nowrap; - width: min-content; -} -.katex .base, -.katex .strut { - display: inline-block; -} -.katex .textbf { - font-weight: 700; -} -.katex .textit { - font-style: italic; -} -.katex .textrm { - font-family: KaTeX_Main; -} -.katex .mathnormal { - font-family: KaTeX_Math; - font-style: italic; -} -.katex .mathit { - font-family: KaTeX_Main; - font-style: italic; -} -.katex .mathrm { - font-style: normal; -} -.katex .mathbf { - font-family: KaTeX_Main; - font-weight: 700; -} -.katex .boldsymbol { - font-family: KaTeX_Math; - font-weight: 700; - font-style: italic; -} -.katex .mainrm { - font-family: KaTeX_Main; - font-style: normal; -} -.katex .vlist-t { - display: inline-table; - table-layout: fixed; - border-collapse: collapse; -} -.katex .vlist-r { - display: table-row; -} -.katex .vlist { - display: table-cell; - vertical-align: bottom; - position: relative; -} -.katex .vlist > span { - display: block; - height: 0; - position: relative; -} -.katex .vlist > span > span { - display: inline-block; -} -.katex .vlist > span > .pstrut { - overflow: hidden; - width: 0; -} -.katex .vlist-t2 { - margin-right: -2px; -} -.katex .vlist-s { - display: table-cell; - vertical-align: bottom; - font-size: 1px; - width: 2px; - min-width: 2px; -} -.katex .vbox { - -ms-flex-direction: column; - flex-direction: column; - align-items: baseline; -} -.katex .hbox, -.katex .vbox { - display: -ms-inline-flexbox; - display: inline-flex; -} -.katex .hbox { - -ms-flex-direction: row; - flex-direction: row; - width: 100%; -} -.katex .thinbox { - display: inline-flex; - flex-direction: row; - width: 0; - max-width: 0; -} -.katex .msupsub { - text-align: left; -} -.katex .mfrac > span > span { - text-align: center; -} -.katex .mfrac .frac-line { - display: inline-block; - width: 100%; - border-bottom-style: solid; -} -.katex .hdashline, -.katex .hline, -.katex .mfrac .frac-line, -.katex .overline .overline-line, -.katex .rule, -.katex .underline .underline-line { - min-height: 1px; -} -.katex .mspace { - display: inline-block; -} -.katex .clap, -.katex .llap, -.katex .rlap { - width: 0; - position: relative; -} -.katex .clap > .inner, -.katex .llap > .inner, -.katex .rlap > .inner { - position: absolute; -} -.katex .clap > .fix, -.katex .llap > .fix, -.katex .rlap > .fix { - display: inline-block; -} -.katex .llap > .inner { - right: 0; -} -.katex .clap > .inner, -.katex .rlap > .inner { - left: 0; -} -.katex .clap > .inner > span { - margin-left: -50%; - margin-right: 50%; -} -.katex .rule { - display: inline-block; - border: 0 solid; - position: relative; -} -.katex .hline, -.katex .overline .overline-line, -.katex .underline .underline-line { - display: inline-block; - width: 100%; - border-bottom-style: solid; -} -.katex .hdashline { - display: inline-block; - width: 100%; - border-bottom-style: dashed; -} -.katex .sqrt > .root { - margin-left: 0.27777778em; - margin-right: -0.55555556em; -} -.katex .fontsize-ensurer.reset-size1.size1, -.katex .sizing.reset-size1.size1 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size1.size2, -.katex .sizing.reset-size1.size2 { - font-size: 1.2em; -} -.katex .fontsize-ensurer.reset-size1.size3, -.katex .sizing.reset-size1.size3 { - font-size: 1.4em; -} -.katex .fontsize-ensurer.reset-size1.size4, -.katex .sizing.reset-size1.size4 { - font-size: 1.6em; -} -.katex .fontsize-ensurer.reset-size1.size5, -.katex .sizing.reset-size1.size5 { - font-size: 1.8em; -} -.katex .fontsize-ensurer.reset-size1.size6, -.katex .sizing.reset-size1.size6 { - font-size: 2em; -} -.katex .fontsize-ensurer.reset-size1.size7, -.katex .sizing.reset-size1.size7 { - font-size: 2.4em; -} -.katex .fontsize-ensurer.reset-size1.size8, -.katex .sizing.reset-size1.size8 { - font-size: 2.88em; -} -.katex .fontsize-ensurer.reset-size1.size9, -.katex .sizing.reset-size1.size9 { - font-size: 3.456em; -} -.katex .fontsize-ensurer.reset-size1.size10, -.katex .sizing.reset-size1.size10 { - font-size: 4.148em; -} -.katex .fontsize-ensurer.reset-size1.size11, -.katex .sizing.reset-size1.size11 { - font-size: 4.976em; -} -.katex .fontsize-ensurer.reset-size2.size1, -.katex .sizing.reset-size2.size1 { - font-size: 0.83333333em; -} -.katex .fontsize-ensurer.reset-size2.size2, -.katex .sizing.reset-size2.size2 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size2.size3, -.katex .sizing.reset-size2.size3 { - font-size: 1.16666667em; -} -.katex .fontsize-ensurer.reset-size2.size4, -.katex .sizing.reset-size2.size4 { - font-size: 1.33333333em; -} -.katex .fontsize-ensurer.reset-size2.size5, -.katex .sizing.reset-size2.size5 { - font-size: 1.5em; -} -.katex .fontsize-ensurer.reset-size2.size6, -.katex .sizing.reset-size2.size6 { - font-size: 1.66666667em; -} -.katex .fontsize-ensurer.reset-size2.size7, -.katex .sizing.reset-size2.size7 { - font-size: 2em; -} -.katex .fontsize-ensurer.reset-size2.size8, -.katex .sizing.reset-size2.size8 { - font-size: 2.4em; -} -.katex .fontsize-ensurer.reset-size2.size9, -.katex .sizing.reset-size2.size9 { - font-size: 2.88em; -} -.katex .fontsize-ensurer.reset-size2.size10, -.katex .sizing.reset-size2.size10 { - font-size: 3.45666667em; -} -.katex .fontsize-ensurer.reset-size2.size11, -.katex .sizing.reset-size2.size11 { - font-size: 4.14666667em; -} -.katex .fontsize-ensurer.reset-size3.size1, -.katex .sizing.reset-size3.size1 { - font-size: 0.71428571em; -} -.katex .fontsize-ensurer.reset-size3.size2, -.katex .sizing.reset-size3.size2 { - font-size: 0.85714286em; -} -.katex .fontsize-ensurer.reset-size3.size3, -.katex .sizing.reset-size3.size3 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size3.size4, -.katex .sizing.reset-size3.size4 { - font-size: 1.14285714em; -} -.katex .fontsize-ensurer.reset-size3.size5, -.katex .sizing.reset-size3.size5 { - font-size: 1.28571429em; -} -.katex .fontsize-ensurer.reset-size3.size6, -.katex .sizing.reset-size3.size6 { - font-size: 1.42857143em; -} -.katex .fontsize-ensurer.reset-size3.size7, -.katex .sizing.reset-size3.size7 { - font-size: 1.71428571em; -} -.katex .fontsize-ensurer.reset-size3.size8, -.katex .sizing.reset-size3.size8 { - font-size: 2.05714286em; -} -.katex .fontsize-ensurer.reset-size3.size9, -.katex .sizing.reset-size3.size9 { - font-size: 2.46857143em; -} -.katex .fontsize-ensurer.reset-size3.size10, -.katex .sizing.reset-size3.size10 { - font-size: 2.96285714em; -} -.katex .fontsize-ensurer.reset-size3.size11, -.katex .sizing.reset-size3.size11 { - font-size: 3.55428571em; -} -.katex .fontsize-ensurer.reset-size4.size1, -.katex .sizing.reset-size4.size1 { - font-size: 0.625em; -} -.katex .fontsize-ensurer.reset-size4.size2, -.katex .sizing.reset-size4.size2 { - font-size: 0.75em; -} -.katex .fontsize-ensurer.reset-size4.size3, -.katex .sizing.reset-size4.size3 { - font-size: 0.875em; -} -.katex .fontsize-ensurer.reset-size4.size4, -.katex .sizing.reset-size4.size4 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size4.size5, -.katex .sizing.reset-size4.size5 { - font-size: 1.125em; -} -.katex .fontsize-ensurer.reset-size4.size6, -.katex .sizing.reset-size4.size6 { - font-size: 1.25em; -} -.katex .fontsize-ensurer.reset-size4.size7, -.katex .sizing.reset-size4.size7 { - font-size: 1.5em; -} -.katex .fontsize-ensurer.reset-size4.size8, -.katex .sizing.reset-size4.size8 { - font-size: 1.8em; -} -.katex .fontsize-ensurer.reset-size4.size9, -.katex .sizing.reset-size4.size9 { - font-size: 2.16em; -} -.katex .fontsize-ensurer.reset-size4.size10, -.katex .sizing.reset-size4.size10 { - font-size: 2.5925em; -} -.katex .fontsize-ensurer.reset-size4.size11, -.katex .sizing.reset-size4.size11 { - font-size: 3.11em; -} -.katex .fontsize-ensurer.reset-size5.size1, -.katex .sizing.reset-size5.size1 { - font-size: 0.55555556em; -} -.katex .fontsize-ensurer.reset-size5.size2, -.katex .sizing.reset-size5.size2 { - font-size: 0.66666667em; -} -.katex .fontsize-ensurer.reset-size5.size3, -.katex .sizing.reset-size5.size3 { - font-size: 0.77777778em; -} -.katex .fontsize-ensurer.reset-size5.size4, -.katex .sizing.reset-size5.size4 { - font-size: 0.88888889em; -} -.katex .fontsize-ensurer.reset-size5.size5, -.katex .sizing.reset-size5.size5 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size5.size6, -.katex .sizing.reset-size5.size6 { - font-size: 1.11111111em; -} -.katex .fontsize-ensurer.reset-size5.size7, -.katex .sizing.reset-size5.size7 { - font-size: 1.33333333em; -} -.katex .fontsize-ensurer.reset-size5.size8, -.katex .sizing.reset-size5.size8 { - font-size: 1.6em; -} -.katex .fontsize-ensurer.reset-size5.size9, -.katex .sizing.reset-size5.size9 { - font-size: 1.92em; -} -.katex .fontsize-ensurer.reset-size5.size10, -.katex .sizing.reset-size5.size10 { - font-size: 2.30444444em; -} -.katex .fontsize-ensurer.reset-size5.size11, -.katex .sizing.reset-size5.size11 { - font-size: 2.76444444em; -} -.katex .fontsize-ensurer.reset-size6.size1, -.katex .sizing.reset-size6.size1 { - font-size: 0.5em; -} -.katex .fontsize-ensurer.reset-size6.size2, -.katex .sizing.reset-size6.size2 { - font-size: 0.6em; -} -.katex .fontsize-ensurer.reset-size6.size3, -.katex .sizing.reset-size6.size3 { - font-size: 0.7em; -} -.katex .fontsize-ensurer.reset-size6.size4, -.katex .sizing.reset-size6.size4 { - font-size: 0.8em; -} -.katex .fontsize-ensurer.reset-size6.size5, -.katex .sizing.reset-size6.size5 { - font-size: 0.9em; -} -.katex .fontsize-ensurer.reset-size6.size6, -.katex .sizing.reset-size6.size6 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size6.size7, -.katex .sizing.reset-size6.size7 { - font-size: 1.2em; -} -.katex .fontsize-ensurer.reset-size6.size8, -.katex .sizing.reset-size6.size8 { - font-size: 1.44em; -} -.katex .fontsize-ensurer.reset-size6.size9, -.katex .sizing.reset-size6.size9 { - font-size: 1.728em; -} -.katex .fontsize-ensurer.reset-size6.size10, -.katex .sizing.reset-size6.size10 { - font-size: 2.074em; -} -.katex .fontsize-ensurer.reset-size6.size11, -.katex .sizing.reset-size6.size11 { - font-size: 2.488em; -} -.katex .fontsize-ensurer.reset-size7.size1, -.katex .sizing.reset-size7.size1 { - font-size: 0.41666667em; -} -.katex .fontsize-ensurer.reset-size7.size2, -.katex .sizing.reset-size7.size2 { - font-size: 0.5em; -} -.katex .fontsize-ensurer.reset-size7.size3, -.katex .sizing.reset-size7.size3 { - font-size: 0.58333333em; -} -.katex .fontsize-ensurer.reset-size7.size4, -.katex .sizing.reset-size7.size4 { - font-size: 0.66666667em; -} -.katex .fontsize-ensurer.reset-size7.size5, -.katex .sizing.reset-size7.size5 { - font-size: 0.75em; -} -.katex .fontsize-ensurer.reset-size7.size6, -.katex .sizing.reset-size7.size6 { - font-size: 0.83333333em; -} -.katex .fontsize-ensurer.reset-size7.size7, -.katex .sizing.reset-size7.size7 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size7.size8, -.katex .sizing.reset-size7.size8 { - font-size: 1.2em; -} -.katex .fontsize-ensurer.reset-size7.size9, -.katex .sizing.reset-size7.size9 { - font-size: 1.44em; -} -.katex .fontsize-ensurer.reset-size7.size10, -.katex .sizing.reset-size7.size10 { - font-size: 1.72833333em; -} -.katex .fontsize-ensurer.reset-size7.size11, -.katex .sizing.reset-size7.size11 { - font-size: 2.07333333em; -} -.katex .fontsize-ensurer.reset-size8.size1, -.katex .sizing.reset-size8.size1 { - font-size: 0.34722222em; -} -.katex .fontsize-ensurer.reset-size8.size2, -.katex .sizing.reset-size8.size2 { - font-size: 0.41666667em; -} -.katex .fontsize-ensurer.reset-size8.size3, -.katex .sizing.reset-size8.size3 { - font-size: 0.48611111em; -} -.katex .fontsize-ensurer.reset-size8.size4, -.katex .sizing.reset-size8.size4 { - font-size: 0.55555556em; -} -.katex .fontsize-ensurer.reset-size8.size5, -.katex .sizing.reset-size8.size5 { - font-size: 0.625em; -} -.katex .fontsize-ensurer.reset-size8.size6, -.katex .sizing.reset-size8.size6 { - font-size: 0.69444444em; -} -.katex .fontsize-ensurer.reset-size8.size7, -.katex .sizing.reset-size8.size7 { - font-size: 0.83333333em; -} -.katex .fontsize-ensurer.reset-size8.size8, -.katex .sizing.reset-size8.size8 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size8.size9, -.katex .sizing.reset-size8.size9 { - font-size: 1.2em; -} -.katex .fontsize-ensurer.reset-size8.size10, -.katex .sizing.reset-size8.size10 { - font-size: 1.44027778em; -} -.katex .fontsize-ensurer.reset-size8.size11, -.katex .sizing.reset-size8.size11 { - font-size: 1.72777778em; -} -.katex .fontsize-ensurer.reset-size9.size1, -.katex .sizing.reset-size9.size1 { - font-size: 0.28935185em; -} -.katex .fontsize-ensurer.reset-size9.size2, -.katex .sizing.reset-size9.size2 { - font-size: 0.34722222em; -} -.katex .fontsize-ensurer.reset-size9.size3, -.katex .sizing.reset-size9.size3 { - font-size: 0.40509259em; -} -.katex .fontsize-ensurer.reset-size9.size4, -.katex .sizing.reset-size9.size4 { - font-size: 0.46296296em; -} -.katex .fontsize-ensurer.reset-size9.size5, -.katex .sizing.reset-size9.size5 { - font-size: 0.52083333em; -} -.katex .fontsize-ensurer.reset-size9.size6, -.katex .sizing.reset-size9.size6 { - font-size: 0.5787037em; -} -.katex .fontsize-ensurer.reset-size9.size7, -.katex .sizing.reset-size9.size7 { - font-size: 0.69444444em; -} -.katex .fontsize-ensurer.reset-size9.size8, -.katex .sizing.reset-size9.size8 { - font-size: 0.83333333em; -} -.katex .fontsize-ensurer.reset-size9.size9, -.katex .sizing.reset-size9.size9 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size9.size10, -.katex .sizing.reset-size9.size10 { - font-size: 1.20023148em; -} -.katex .fontsize-ensurer.reset-size9.size11, -.katex .sizing.reset-size9.size11 { - font-size: 1.43981481em; -} -.katex .fontsize-ensurer.reset-size10.size1, -.katex .sizing.reset-size10.size1 { - font-size: 0.24108004em; -} -.katex .fontsize-ensurer.reset-size10.size2, -.katex .sizing.reset-size10.size2 { - font-size: 0.28929605em; -} -.katex .fontsize-ensurer.reset-size10.size3, -.katex .sizing.reset-size10.size3 { - font-size: 0.33751205em; -} -.katex .fontsize-ensurer.reset-size10.size4, -.katex .sizing.reset-size10.size4 { - font-size: 0.38572806em; -} -.katex .fontsize-ensurer.reset-size10.size5, -.katex .sizing.reset-size10.size5 { - font-size: 0.43394407em; -} -.katex .fontsize-ensurer.reset-size10.size6, -.katex .sizing.reset-size10.size6 { - font-size: 0.48216008em; -} -.katex .fontsize-ensurer.reset-size10.size7, -.katex .sizing.reset-size10.size7 { - font-size: 0.57859209em; -} -.katex .fontsize-ensurer.reset-size10.size8, -.katex .sizing.reset-size10.size8 { - font-size: 0.69431051em; -} -.katex .fontsize-ensurer.reset-size10.size9, -.katex .sizing.reset-size10.size9 { - font-size: 0.83317261em; -} -.katex .fontsize-ensurer.reset-size10.size10, -.katex .sizing.reset-size10.size10 { - font-size: 1em; -} -.katex .fontsize-ensurer.reset-size10.size11, -.katex .sizing.reset-size10.size11 { - font-size: 1.19961427em; -} -.katex .fontsize-ensurer.reset-size11.size1, -.katex .sizing.reset-size11.size1 { - font-size: 0.20096463em; -} -.katex .fontsize-ensurer.reset-size11.size2, -.katex .sizing.reset-size11.size2 { - font-size: 0.24115756em; -} -.katex .fontsize-ensurer.reset-size11.size3, -.katex .sizing.reset-size11.size3 { - font-size: 0.28135048em; -} -.katex .fontsize-ensurer.reset-size11.size4, -.katex .sizing.reset-size11.size4 { - font-size: 0.32154341em; -} -.katex .fontsize-ensurer.reset-size11.size5, -.katex .sizing.reset-size11.size5 { - font-size: 0.36173633em; -} -.katex .fontsize-ensurer.reset-size11.size6, -.katex .sizing.reset-size11.size6 { - font-size: 0.40192926em; -} -.katex .fontsize-ensurer.reset-size11.size7, -.katex .sizing.reset-size11.size7 { - font-size: 0.48231511em; -} -.katex .fontsize-ensurer.reset-size11.size8, -.katex .sizing.reset-size11.size8 { - font-size: 0.57877814em; -} -.katex .fontsize-ensurer.reset-size11.size9, -.katex .sizing.reset-size11.size9 { - font-size: 0.69453376em; -} -.katex .fontsize-ensurer.reset-size11.size10, -.katex .sizing.reset-size11.size10 { - font-size: 0.83360129em; -} -.katex .fontsize-ensurer.reset-size11.size11, -.katex .sizing.reset-size11.size11 { - font-size: 1em; -} -.katex .delimsizing.size1 { - font-family: KaTeX_Size1; -} -.katex .delimsizing.size2 { - font-family: KaTeX_Size2; -} -.katex .nulldelimiter { - display: inline-block; - width: 0.12em; -} -.katex .op-symbol.small-op { - font-family: KaTeX_Size1; -} -.katex .op-symbol.large-op { - font-family: KaTeX_Size2; -} -.katex .delimcenter, -.katex .op-symbol { - position: relative; -} -.katex .op-limits > .vlist-t { - text-align: center; -} -.katex .accent > .vlist-t { - text-align: center; -} -.katex .accent .accent-body { - position: relative; -} -.katex .accent .accent-body:not(.accent-full) { - width: 0; -} -.katex .overlay { - display: block; -} -.katex .mtable .vertical-separator { - display: inline-block; - min-width: 1px; -} -.katex .mtable .arraycolsep { - display: inline-block; -} -.katex .mtable .col-align-c > .vlist-t { - text-align: center; -} -.katex .mtable .col-align-l > .vlist-t { - text-align: left; -} -.katex .mtable .col-align-r > .vlist-t { - text-align: right; -} -.katex .svg-align { - text-align: left; -} -.katex svg { - display: block; - position: absolute; - width: 100%; - height: inherit; - fill: currentColor; - stroke: currentColor; - fill-rule: nonzero; - fill-opacity: 1; - stroke-width: 1; - stroke-linecap: butt; - stroke-linejoin: miter; - stroke-miterlimit: 4; - stroke-dasharray: none; - stroke-dashoffset: 0; - stroke-opacity: 1; -} -.katex svg path { - stroke: none; -} -.katex img { - border-style: none; - min-width: 0; - min-height: 0; - max-width: none; - max-height: none; -} -.katex .stretchy { - width: 100%; - display: block; - position: relative; - overflow: hidden; -} -.katex .stretchy:after, -.katex .stretchy:before { - content: ""; -} -.katex .hide-tail { - width: 100%; - position: relative; - overflow: hidden; -} -.katex .halfarrow-left { - position: absolute; - left: 0; - width: 50.2%; - overflow: hidden; -} -.katex .halfarrow-right { - position: absolute; - right: 0; - width: 50.2%; - overflow: hidden; -} -.katex .brace-left { - position: absolute; - left: 0; - width: 25.1%; - overflow: hidden; -} -.katex .brace-center { - position: absolute; - left: 25%; - width: 50%; - overflow: hidden; -} -.katex .brace-right { - position: absolute; - right: 0; - width: 25.1%; - overflow: hidden; -} -.katex .x-arrow-pad { - padding: 0 0.5em; -} -.katex .mover, -.katex .munder, -.katex .x-arrow { - text-align: center; -} -.katex .boxpad { - padding: 0 0.3em; -} -.katex .fbox, -.katex .fcolorbox { - box-sizing: border-box; - border: 0.04em solid; -} -.katex .cancel-pad { - padding: 0 0.2em; -} -.katex .cancel-lap { - margin-left: -0.2em; - margin-right: -0.2em; -} -.katex .sout { - border-bottom-style: solid; - border-bottom-width: 0.08em; -} -.katex-display { - display: block; - margin: 1em 0; - text-align: center; -} -.katex-display > .katex { - display: block; - text-align: center; - white-space: nowrap; -} -.katex-display > .katex > .katex-html { - display: block; - position: relative; -} -.katex-display > .katex > .katex-html > .tag { - position: absolute; - right: 0; -} -.katex-display.leqno > .katex > .katex-html > .tag { - left: 0; - right: auto; -} -.katex-display.fleqn > .katex { - text-align: left; - padding-left: 2em; -} diff --git a/bias-variance/css/styles.scss b/bias-variance/css/styles.scss deleted file mode 100644 index d3ad681c..00000000 --- a/bias-variance/css/styles.scss +++ /dev/null @@ -1,927 +0,0 @@ -/* ====================== */ -/* FONTS */ -/* ====================== */ - -@font-face { - font-family: AmazonEmberDisplayHeavy; - src: url("../fonts/AmazonEmberDisplay_He.otf") format("opentype"); -} - -@font-face { - font-family: AmazonEmber; - src: url("../fonts/AmazonEmber_Rg.otf") format("opentype"); -} - -@font-face { - font-family: AmazonEmberMono; - src: url("../fonts/AmazonEmberMono_Rg.otf") format("opentype"); -} - -@font-face { - font-family: AmazonEmberDisplayLight; - src: url("../fonts/AmazonEmberDisplay_Lt.otf") format("opentype"); -} - -* { - font-family: AmazonEmber; -} - -/* ====================== */ -/* RESPONSIVE VARS */ -/* ====================== */ - -html { - font-size: 16px; -} - -body { - max-width: 2500px; - margin: 0 auto !important; - float: none !important; -} - -// Breakpoints -$bp-small: 48em; // 768px -$bp-medium: 64em; // 1024px -$bp-large: 85.375em; // 1366px -$bp-xlarge: 120em; // 1920px -$bp-xxlarge: 160em; // 2560px - -// Media Queries -$mq-small: "(min-width: #{$bp-small})"; -$mq-medium: "(min-width: #{$bp-medium})"; -$mq-large: "(min-width: #{$bp-large})"; -$mq-xlarge: "(min-width: #{$bp-xlarge})"; -$mq-xxlarge: "(min-width: #{$bp-xxlarge})"; -$mq-retina: "(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)"; - -// colors -$squid-ink: #232f3e; -$test-color: #e57873; -$train-color: #94cae0; -$bg-color: white; -$ai_color: #354848; - -// Font-Size -$base-font-size: 1rem; - -// Line-Height -$base-line-height: 1.5; -$header-line-height: 1.25; -/* ====================== */ -/* Variables */ -/* ====================== */ -/* circle.test, rect.errorB */ - -/* ====================== */ -/* LAYOUT STYLES */ -/* ====================== */ - -#intro { - text-align: center; - max-width: 90%; - padding-bottom: 5rem; - margin: auto; -} - -#intro__hed { - font-size: 4rem; - margin-top: 5px; - margin-bottom: 0; - letter-spacing: 1.5px; - font-family: AmazonEmberDisplayHeavy; - text-transform: uppercase; - max-width: 70%; - margin: auto; -} - -#ai { - color: #7bacc9; - font-family: AmazonEmberDisplayHeavy; -} - -.logo { - color: $squid-ink; - width: 10rem; -} - -.bolder { - font-family: AmazonEmberDisplayHeavy; -} - -#intro-icon { - display: flex; - text-transform: uppercase; - font-weight: bold; - color: $ai_color; - flex-direction: row; - padding-top: 1rem; - justify-content: center; -} - -#intro-icon h2 { - padding-left: 2%; - font-family: AmazonEmberDisplayHeavy; - font-size: 1.2rem; - margin-top: 10px; - margin-bottom: 10px; -} - -#intro__dek { - text-align: left; - font-size: 17px; - margin-top: 1rem; - max-width: 60%; - margin: auto; - margin-top: 2rem; -} - -#intro__author, -#intro__date { - font-size: 1.1rem; - margin: 0px; - margin-top: 15px; - font-family: AmazonEmberDisplayLight; - padding-bottom: 0px; - margin-bottom: 0px; -} - -#bias, -#variance { - font-family: AmazonEmberDisplayHeavy; -} - -a { - color: $squid-ink; - text-decoration: underline; -} - -a:hover { - background-color: #999; - color: white; - text-decoration: none; -} - -/* ====================== */ -/* SCROLLY-TELLING STYLES */ -/* ====================== */ - -#scrolly { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 1rem; - padding: 0 2%; - - @media #{$mq-large} { - padding: 0 4%; - } - - @media #{$mq-xlarge} { - padding: 0 10%; - } -} - -#scrolly > * { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -article { - position: relative; - padding: 0 1rem; - max-width: 40rem; -} - -figure { - position: -webkit-sticky; - position: sticky; - width: 100%; - margin: 0; - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - z-index: -999; - vertical-align: center; -} - -figure p { - text-align: center; - padding: 1rem; - position: absolute; - top: 50%; - left: 50%; - -moz-transform: translate(-50%, -50%); - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - font-size: 8rem; - font-weight: 900; -} - -.step { - margin: 0 auto 2rem auto; - color: $squid-ink; -} - -.step:last-child { - margin-bottom: 0; -} - -.step p { - padding: 1rem; - padding-left: 15%; - text-align: left; - max-width: 750px; - line-height: 1.55em; - font-size: 1rem; - letter-spacing: 0.1px; - color: $squid-ink; - padding-top: 0px; -} - -.step ul { - text-align: center; - padding: 1rem; - font-size: 1.2rem; - padding-left: 25%; - text-align: left; - max-width: 750px; - line-height: 1.55em; - font-size: 16px; - letter-spacing: 0.1px; - color: $squid-ink; - padding-top: 0px; -} - -.step p.step-head { - margin-bottom: 5px; - font-family: AmazonEmberDisplayHeavy; - font-size: 1.1rem; -} - -/* ====================== */ -/* svg animate */ -/* ====================== */ - -#eyes { - fill: $squid-ink; - animation: eye 4s linear infinite 0s; -} - -@keyframes eye { - 0% { - fill: $squid-ink; - } - 5%, - 20% { - fill: $squid-ink; - } - 15%, - 30% { - fill: white; - } - 40% { - fill: $squid-ink; - } -} - -/* ====================== */ -/* SCATTER PLOT */ -/* ====================== */ - -#regression-line-1 { - fill: none; - opacity: 0.85; - stroke: darkorange; - stroke-width: 5.5px; -} - -.model-realization { - fill: none; - opacity: 0.85; - stroke: darkorange; - stroke-width: 5px; -} - -.axis line { - stroke: #ddd; -} -.axis .baseline line { - stroke: #555; -} -.axis .domain { - opacity: 0.2; -} - -#svg2 .domain { - opacity: 0.2; -} - -#errorBarSvg .axes .line { - opacity: 0; -} - -.errorLine, -.testErrorLine, -.errorLineComplex { - fill: none; - stroke: $squid-ink; - stroke-width: 3.5px; - pointer-events: none; - stroke-dasharray: 3, 3; - fill: none; - z-index: -1; -} - -#svg-scatter { - -moz-transition: transform 2s ease-in-out 0s; - -webkit-transition: transform 2s ease-in-out 0s; - -o-transition: transform 2s ease-in-out 0s; - transform: scale(1); -} - -circle.train { - fill: $train-color; - stroke: $bg-color; - stroke-width: 2; -} - -circle.test { - fill: $test-color; - stroke: $bg-color; - stroke-width: 2; -} - -/* ====================== */ -/* BAR PLOT */ -/* ====================== */ -.decomp-text { - font-family: AmazonEmberDisplayHeavy; - font-size: 1rem; -} - -#noise-line, -#error-line, -#bias-line, -#var-line { - fill: none; - opacity: 0.65; - stroke-width: 8px; -} - -path#noise-line { - stroke: coral; -} -path#error-line { - stroke: red; -} -path#bias-line { - stroke: skyblue; -} -path#var-line { - stroke: teal; -} - -circle.complex-noise { - fill: coral; -} -circle.complex-error { - fill: red; -} -circle.complex-bias { - fill: skyblue; -} -circle.complex-var { - fill: teal; -} - -/* ====================== */ -/* KNN */ -/* ====================== */ -.models { - margin: 0 auto; - padding: 0; - margin-top: 0; - // background-color: pink; - - padding: 0 2%; - - @media #{$mq-large} { - padding: 0 4%; - } - - @media #{$mq-xlarge} { - padding: 0 10%; - } -} - -.model-header { - font-family: AmazonEmberDisplayHeavy; - max-width: 60%; - margin: 0 auto; - padding-bottom: 0.5rem; - text-align: left; - font-weight: bold; - font-size: 1.3rem; -} - -.model-text { - max-width: 60%; - margin: 0 auto; - text-align: left; - font-size: 16px; - line-height: 1.5em; -} - -.model-text-wrapper { - padding-top: 5px; - margin-top: 0px; -} - -.model-wrapper { - display: grid; - grid-template-columns: repeat(2, 1fr); - grid-row-gap: 10px; - grid-column-gap: 10px; - grid-template-rows: minmax(300px, 55%); -} - -#k-text, -#loess-text { - padding-bottom: 3px; - margin: 0; - font-size: 0.9rem; - font-family: AmazonEmberDisplayHeavy; -} - -.model-controls { - padding-top: 2em; - padding-bottom: 1em; - display: grid; - justify-content: center; - grid-template-columns: repeat(2, 15%); - grid-row-gap: 0.5em; - grid-column-gap: 0.5em; - grid-template-rows: minmax(40px, 3%); -} -/* ====================== */ -/* LOESS */ -/* ====================== */ -path#loess-line { - fill: none; - stroke: darkorange; - stroke-width: 2px; -} - -circle.loess-train { - fill: $train-color; - stroke: $bg-color; - stroke-width: 1.5; -} -circle.loess-test { - fill: $test-color; - stroke: $bg-color; - stroke-width: 1.5; - opacity: 0.8; -} - -.loess-legend { - #loess-train { - fill: $train-color; - } - #loess-test { - fill: $test-color; - } -} - -/* ====================== */ -/* Outro */ -/* ====================== */ -#outro { - margin: 0 auto; - font-family: AmazonEmberDisplayLight; - // background-color: #eceff1; - - h1 { - text-decoration: underline; - } - - p { - font-size: 1rem; - font-family: AmazonEmberDisplayLight; - } - - ul { - margin: auto; - max-width: 60%; - list-style-position: outside; - } - li { - text-align: left; - font-size: 1rem; - padding-left: 0px; - } -} - -/* ====================== */ -/* Body Centering */ -/* ====================== */ -body { - text-align: center; - font-size: $base-font-size; - line-height: $base-line-height; - margin: 0px; - - // responsive font sizes - @media #{$mq-medium} { - font-size: $base-font-size * 1; - line-height: $base-line-height * 1; - } - - @media #{$mq-large} { - font-size: $base-font-size * 1; - } - - @media #{$mq-xlarge} { - font-size: $base-font-size * 1.2; - } - - @media #{$mq-xxlarge} { - font-size: $base-font-size * 1.5; - } -} - -// label font-size -.decomp-text, -#error-text { - font-size: 0.75rem; - @media #{$mq-medium} { - font-size: 0.9rem; - } - @media #{$mq-large} { - font-size: 0.9rem; - } - - @media #{$mq-xlarge} { - font-size: $base-font-size; - } - - @media #{$mq-xxlarge} { - font-size: $base-font-size; - } -} - -/* ====================== */ -/* Math Equations */ -/* ====================== */ -.katex { - font-size: 1.1rem; -} - -/* ====================== */ -/* SLIDER STYLES */ -/* ====================== */ - -.slider-container { - width: 100%; /* Width of the outside container */ -} - -/* The slider itself */ -.metric-slider { - -webkit-appearance: none; /* Override default CSS styles */ - appearance: none; - width: 100%; /* Full-width */ - height: 1em; /* Specified height */ - background: #999; /* Grey background */ - outline: none; /* Remove outline */ - opacity: 0.7; /* Set transparency (for mouse-over effects on hover) */ - -webkit-transition: 0.2s; /* 0.2 seconds transition on hover */ - transition: opacity 0.2s; -} - -/* Mouse-over effects */ -.metric-slider:hover { - opacity: 1; /* Fully shown on mouse-over */ -} - -/* The slider handle (use -webkit- (Chrome, Opera, Safari, Edge) and -moz- (Firefox) to override default look) */ -.metric-slider::-webkit-slider-thumb { - -webkit-appearance: none; /* Override default look */ - appearance: none; - width: 1.5em; /* Set a specific slider handle width */ - height: 1.5em; /* Slider handle height */ - background: $squid-ink; - border: 1px solid white; - cursor: pointer; /* Cursor on hover */ -} - -.metric-slider::-moz-range-thumb { - width: 1.5em; /* Set a specific slider handle width */ - height: 1.5em; /* Slider handle height */ - background: $squid-ink; - border: 1px solid white; - cursor: pointer; /* Cursor on hover */ -} - -.data-button { - display: table; - padding: 0; - margin: 0; - cursor: pointer; - max-width: 90%; - text-align: center; - font-size: 0.85em; - border: 1px solid #e0e0e0; - text-decoration: none; - color: $squid-ink; - outline: none; - border-radius: 2px; - font-family: AmazonEmberDisplayHeavy; -} - -#button-knn:hover, -#button-loess:hover { - // color: #fff; - background: #e0e0e0; -} - -/* ====================== */ -/* DOUBLE DESCENT */ -/* ====================== */ -.dd-text { - font-size: 0.7rem; - font-family: AmazonEmberDisplayLight; -} - -.dd-line { - fill: none; - stroke-width: 4; -} - -#dd-line-u { - stroke: black; - stroke-dasharray: 8, 8; - stroke-width: 2; -} -#dd-line-train { - stroke: $train-color; -} -#dd-line-test { - stroke: $test-color; -} - -.dd-circle { - stroke: $bg-color; -} - -#dd-circle-train { - fill: $train-color; -} - -#dd-circle-test { - fill: $test-color; -} - -#dd-x-axis, -#dd-y-axis { - .tick { - opacity: 0; - } -} - -.dd-axis-text { - font-size: 0.85rem; -} - -hr { - max-width: 5%; - margin: 2rem auto; -} - -body { - background-color: white; -} - -@media (max-width: 1100px) { - .model-wrapper { - display: grid; - grid-template-columns: repeat(2, 1fr); - grid-row-gap: 10px; - grid-column-gap: 10px; - grid-template-rows: minmax(300px, 55%); - } -} - -@media (max-width: 900px) { - #scrolly { - padding: 0rem; - padding-right: 0.5rem; - } - #intro__author, - #intro__date { - font-size: 1.5rem; - padding-top: 2rem; - padding-bottom: 2rem; - } - - #intro__dek { - font-size: 1.2rem; - max-width: 100%; - } - - .model-wrapper { - display: grid; - grid-template-columns: repeat(1, 1fr); - grid-row-gap: 1px; - grid-template-rows: minmax(250px, 45%); - } - - .model-text, - .model-header, - #outro ul { - max-width: 80%; - } - - // new - article { - position: relative; - padding: 0rem; - max-width: 45%; - } - - figure { - position: -webkit-sticky; - position: sticky; - width: 55%; - margin: 0; - -webkit-transform: translate3d(0, 0, 0); - -moz-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - z-index: -999; - vertical-align: center; - } -} - -@media (max-width: 600px) { - .katex { - font-size: 0.8rem; - } - - .model-wrapper { - display: grid; - grid-template-columns: repeat(1, 1fr); - grid-row-gap: 1px; - grid-template-rows: minmax(200px, 40%); - } - - .model-controls { - grid-template-columns: 40% 55%; - font-size: 1rem; - align-items: center; - } - - .data-button { - padding: 0.5rem 1rem; - // font-size: 1rem; - } - - #k-text, - #loess-text { - font-size: 1rem; - font-family: AmazonEmberDisplayHeavy; - } - - .model-text { - max-width: 80%; - font-size: 0.9rem; - } - .model-header { - max-width: 80%; - } - #intro__hed { - max-width: 100%; - font-size: 3.3rem; - } - - #intro-icon { - padding-top: 4rem; - padding-bottom: 2rem; - } - - #intro__dek { - font-size: 0.9rem; - } - - #intro__author, - #intro__date { - font-size: 1.2rem; - padding-top: 3rem; - } - - #regression-line-1 { - stroke-width: 3.5px; - } - .errorLine, - .errorLineComplex, - .testErrorLine { - stroke-width: 2px; - opacity: 0.5; - } - circle.train, - circle.test { - stroke-width: 1.5px; - r: 4.5; - } - - .model-realization { - stroke-width: 3px; - } - - .step p { - text-align: center; - padding: 0rem; - font-size: 0.9rem; - margin: 0rem; - padding-left: 0.5%; - text-align: left; - max-width: 100%; - line-height: 1.55em; - // font-size: 16px; - letter-spacing: 0.1px; - color: $squid-ink; - padding-top: 0px; - } - - .model-text p { - font-size: 0.9rem; - } - - .axis { - color: $squid-ink; - font-size: 0.5rem; - } - - .models { - padding-top: 0px; - max-width: 100%; - } - - #scatter-x-axis-label, - #scatter-y-axis-label { - display: none; - } - .scatter-legend-text { - font-size: 0.7rem; - } - .scatter-legend-circle { - r: 4.2; - } - #errorBarTitle { - font-size: 0.75rem; - } - .scatter-title { - font-size: 0.7rem; - } - .decomp-text, - #error-text, - .error-symbol { - font-size: 0.55rem; - } - - #bias-line, - #noise-line, - #error-line, - #var-line { - stroke-width: 5px; - } - - #error-x-text, - #error-y-text { - font-size: 0.85rem; - } - - #dd-title { - font-size: 0.9rem; - } - .dd-text { - font-size: 0.6rem; - } -} - -// one of these should work -article { - z-index: 999999; -} - -#intro-icon > a { - display: flex; - text-decoration: none; - padding-top: 1rem; - padding-bottom: 1rem; -} - -#intro-icon > a:hover { - background-color: white; -} diff --git a/bias-variance/fonts/AmazonEmberDisplay_He.otf b/bias-variance/fonts/AmazonEmberDisplay_He.otf deleted file mode 100644 index 3ce08357..00000000 Binary files a/bias-variance/fonts/AmazonEmberDisplay_He.otf and /dev/null differ diff --git a/bias-variance/fonts/AmazonEmberDisplay_He.ttf b/bias-variance/fonts/AmazonEmberDisplay_He.ttf deleted file mode 100644 index 13608bc1..00000000 Binary files a/bias-variance/fonts/AmazonEmberDisplay_He.ttf and /dev/null differ diff --git a/bias-variance/fonts/AmazonEmberDisplay_Lt.otf b/bias-variance/fonts/AmazonEmberDisplay_Lt.otf deleted file mode 100644 index b4d1363d..00000000 Binary files a/bias-variance/fonts/AmazonEmberDisplay_Lt.otf and /dev/null differ diff --git a/bias-variance/fonts/AmazonEmberMono_Rg.otf b/bias-variance/fonts/AmazonEmberMono_Rg.otf deleted file mode 100644 index 6918344b..00000000 Binary files a/bias-variance/fonts/AmazonEmberMono_Rg.otf and /dev/null differ diff --git a/bias-variance/fonts/AmazonEmberMono_Rg.ttf b/bias-variance/fonts/AmazonEmberMono_Rg.ttf deleted file mode 100644 index cebded33..00000000 Binary files a/bias-variance/fonts/AmazonEmberMono_Rg.ttf and /dev/null differ diff --git a/bias-variance/fonts/AmazonEmber_Rg.otf b/bias-variance/fonts/AmazonEmber_Rg.otf deleted file mode 100644 index b2ba95d1..00000000 Binary files a/bias-variance/fonts/AmazonEmber_Rg.otf and /dev/null differ diff --git a/bias-variance/fonts/AmazonEmber_Rg.ttf b/bias-variance/fonts/AmazonEmber_Rg.ttf deleted file mode 100644 index c8b254bb..00000000 Binary files a/bias-variance/fonts/AmazonEmber_Rg.ttf and /dev/null differ diff --git a/bias-variance/fonts/amazonember_rg-webfont.woff b/bias-variance/fonts/amazonember_rg-webfont.woff deleted file mode 100755 index 4b127623..00000000 Binary files a/bias-variance/fonts/amazonember_rg-webfont.woff and /dev/null differ diff --git a/bias-variance/fonts/amazonember_rg-webfont.woff2 b/bias-variance/fonts/amazonember_rg-webfont.woff2 deleted file mode 100755 index a15409cd..00000000 Binary files a/bias-variance/fonts/amazonember_rg-webfont.woff2 and /dev/null differ diff --git a/bias-variance/fonts/amazonemberdisplay_he-webfont.woff b/bias-variance/fonts/amazonemberdisplay_he-webfont.woff deleted file mode 100755 index 1768e2db..00000000 Binary files a/bias-variance/fonts/amazonemberdisplay_he-webfont.woff and /dev/null differ diff --git a/bias-variance/fonts/amazonemberdisplay_he-webfont.woff2 b/bias-variance/fonts/amazonemberdisplay_he-webfont.woff2 deleted file mode 100755 index a78c3ee4..00000000 Binary files a/bias-variance/fonts/amazonemberdisplay_he-webfont.woff2 and /dev/null differ diff --git a/bias-variance/fonts/amazonembermono_rg-webfont.woff b/bias-variance/fonts/amazonembermono_rg-webfont.woff deleted file mode 100755 index 13c145bc..00000000 Binary files a/bias-variance/fonts/amazonembermono_rg-webfont.woff and /dev/null differ diff --git a/bias-variance/fonts/amazonembermono_rg-webfont.woff2 b/bias-variance/fonts/amazonembermono_rg-webfont.woff2 deleted file mode 100755 index cc088644..00000000 Binary files a/bias-variance/fonts/amazonembermono_rg-webfont.woff2 and /dev/null differ diff --git a/bias-variance/fonts/generator_config.txt b/bias-variance/fonts/generator_config.txt deleted file mode 100755 index 81e64f6b..00000000 --- a/bias-variance/fonts/generator_config.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Font Squirrel Font-face Generator Configuration File -# Upload this file to the generator to recreate the settings -# you used to create these fonts. - -{"mode":"optimal","formats":["woff","woff2"],"tt_instructor":"default","fix_gasp":"xy","fix_vertical_metrics":"Y","metrics_ascent":"","metrics_descent":"","metrics_linegap":"","add_spaces":"Y","add_hyphens":"Y","fallback":"none","fallback_custom":"100","options_subset":"basic","subset_custom":"","subset_custom_range":"","subset_ot_features_list":"","css_stylesheet":"stylesheet.css","filename_suffix":"-webfont","emsquare":"2048","spacing_adjustment":"0"} \ No newline at end of file diff --git a/bias-variance/fonts/specimen_files/grid_12-825-55-15.css b/bias-variance/fonts/specimen_files/grid_12-825-55-15.css deleted file mode 100755 index 3d6aef78..00000000 --- a/bias-variance/fonts/specimen_files/grid_12-825-55-15.css +++ /dev/null @@ -1,129 +0,0 @@ -/*Notes about grid: -Columns: 12 -Grid Width: 825px -Column Width: 55px -Gutter Width: 15px --------------------------------*/ - - - -.section {margin-bottom: 18px; -} -.section:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;} -.section {*zoom: 1;} - -.section .firstcolumn, -.section .firstcol {margin-left: 0;} - - -/* Border on left hand side of a column. */ -.border { - padding-left: 7px; - margin-left: 7px; - border-left: 1px solid #eee; -} - -/* Border with more whitespace, spans one column. */ -.colborder { - padding-left: 42px; - margin-left: 42px; - border-left: 1px solid #eee; -} - - - -/* The Grid Classes */ -.grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12 -{margin-left: 15px;float: left;display: inline; overflow: hidden;} - - -.width1, .grid1, .span-1 {width: 55px;} -.width1_2cols,.grid1_2cols {width: 20px;} -.width1_3cols,.grid1_3cols {width: 8px;} -.width1_4cols,.grid1_4cols {width: 2px;} -.input_width1 {width: 49px;} - -.width2, .grid2, .span-2 {width: 125px;} -.width2_3cols,.grid2_3cols {width: 31px;} -.width2_4cols,.grid2_4cols {width: 20px;} -.input_width2 {width: 119px;} - -.width3, .grid3, .span-3 {width: 195px;} -.width3_2cols,.grid3_2cols {width: 90px;} -.width3_4cols,.grid3_4cols {width: 37px;} -.input_width3 {width: 189px;} - -.width4, .grid4, .span-4 {width: 265px;} -.width4_3cols,.grid4_3cols {width: 78px;} -.input_width4 {width: 259px;} - -.width5, .grid5, .span-5 {width: 335px;} -.width5_2cols,.grid5_2cols {width: 160px;} -.width5_3cols,.grid5_3cols {width: 101px;} -.width5_4cols,.grid5_4cols {width: 72px;} -.input_width5 {width: 329px;} - -.width6, .grid6, .span-6 {width: 405px;} -.width6_4cols,.grid6_4cols {width: 90px;} -.input_width6 {width: 399px;} - -.width7, .grid7, .span-7 {width: 475px;} -.width7_2cols,.grid7_2cols {width: 230px;} -.width7_3cols,.grid7_3cols {width: 148px;} -.width7_4cols,.grid7_4cols {width: 107px;} -.input_width7 {width: 469px;} - -.width8, .grid8, .span-8 {width: 545px;} -.width8_3cols,.grid8_3cols {width: 171px;} -.input_width8 {width: 539px;} - -.width9, .grid9, .span-9 {width: 615px;} -.width9_2cols,.grid9_2cols {width: 300px;} -.width9_4cols,.grid9_4cols {width: 142px;} -.input_width9 {width: 609px;} - -.width10, .grid10, .span-10 {width: 685px;} -.width10_3cols,.grid10_3cols {width: 218px;} -.width10_4cols,.grid10_4cols {width: 160px;} -.input_width10 {width: 679px;} - -.width11, .grid11, .span-11 {width: 755px;} -.width11_2cols,.grid11_2cols {width: 370px;} -.width11_3cols,.grid11_3cols {width: 241px;} -.width11_4cols,.grid11_4cols {width: 177px;} -.input_width11 {width: 749px;} - -.width12, .grid12, .span-12 {width: 825px;} -.input_width12 {width: 819px;} - -/* Subdivided grid spaces */ -.emptycols_left1, .prepend-1 {padding-left: 70px;} -.emptycols_right1, .append-1 {padding-right: 70px;} -.emptycols_left2, .prepend-2 {padding-left: 140px;} -.emptycols_right2, .append-2 {padding-right: 140px;} -.emptycols_left3, .prepend-3 {padding-left: 210px;} -.emptycols_right3, .append-3 {padding-right: 210px;} -.emptycols_left4, .prepend-4 {padding-left: 280px;} -.emptycols_right4, .append-4 {padding-right: 280px;} -.emptycols_left5, .prepend-5 {padding-left: 350px;} -.emptycols_right5, .append-5 {padding-right: 350px;} -.emptycols_left6, .prepend-6 {padding-left: 420px;} -.emptycols_right6, .append-6 {padding-right: 420px;} -.emptycols_left7, .prepend-7 {padding-left: 490px;} -.emptycols_right7, .append-7 {padding-right: 490px;} -.emptycols_left8, .prepend-8 {padding-left: 560px;} -.emptycols_right8, .append-8 {padding-right: 560px;} -.emptycols_left9, .prepend-9 {padding-left: 630px;} -.emptycols_right9, .append-9 {padding-right: 630px;} -.emptycols_left10, .prepend-10 {padding-left: 700px;} -.emptycols_right10, .append-10 {padding-right: 700px;} -.emptycols_left11, .prepend-11 {padding-left: 770px;} -.emptycols_right11, .append-11 {padding-right: 770px;} -.pull-1 {margin-left: -70px;} -.push-1 {margin-right: -70px;margin-left: 18px;float: right;} -.pull-2 {margin-left: -140px;} -.push-2 {margin-right: -140px;margin-left: 18px;float: right;} -.pull-3 {margin-left: -210px;} -.push-3 {margin-right: -210px;margin-left: 18px;float: right;} -.pull-4 {margin-left: -280px;} -.push-4 {margin-right: -280px;margin-left: 18px;float: right;} \ No newline at end of file diff --git a/bias-variance/fonts/specimen_files/specimen_stylesheet.css b/bias-variance/fonts/specimen_files/specimen_stylesheet.css deleted file mode 100755 index aecc43c3..00000000 --- a/bias-variance/fonts/specimen_files/specimen_stylesheet.css +++ /dev/null @@ -1,396 +0,0 @@ -@import url('grid_12-825-55-15.css'); - -/* - CSS Reset by Eric Meyer - Released under Public Domain - http://meyerweb.com/eric/tools/css/reset/ -*/ -html, body, div, span, applet, object, iframe, -h1, h2, h3, h4, h5, h6, p, blockquote, pre, -a, abbr, acronym, address, big, cite, code, -del, dfn, em, font, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, -b, u, i, center, dl, dt, dd, ol, ul, li, -fieldset, form, label, legend, table, -caption, tbody, tfoot, thead, tr, th, td - {margin: 0;padding: 0;border: 0;outline: 0; - font-size: 100%;vertical-align: baseline; - background: transparent;} -body {line-height: 1;} -ol, ul {list-style: none;} -blockquote, q {quotes: none;} -blockquote:before, blockquote:after, -q:before, q:after {content: ''; content: none;} -:focus {outline: 0;} -ins {text-decoration: none;} -del {text-decoration: line-through;} -table {border-collapse: collapse;border-spacing: 0;} - - - - -body { - color: #000; - background-color: #dcdcdc; -} - -a { - text-decoration: none; - color: #1883ba; -} - -h1{ - font-size: 32px; - font-weight: normal; - font-style: normal; - margin-bottom: 18px; -} - -h2{ - font-size: 18px; -} - -#container { - width: 865px; - margin: 0px auto; -} - - -#header { - padding: 20px; - font-size: 36px; - background-color: #000; - color: #fff; -} - -#header span { - color: #666; -} -#main_content { - background-color: #fff; - padding: 60px 20px 20px; -} - - -#footer p { - margin: 0; - padding-top: 10px; - padding-bottom: 50px; - color: #333; - font: 10px Arial, sans-serif; -} - -.tabs { - width: 100%; - height: 31px; - background-color: #444; -} -.tabs li { - float: left; - margin: 0; - overflow: hidden; - background-color: #444; -} -.tabs li a { - display: block; - color: #fff; - text-decoration: none; - font: bold 11px/11px 'Arial'; - text-transform: uppercase; - padding: 10px 15px; - border-right: 1px solid #fff; -} - -.tabs li a:hover { - background-color: #00b3ff; - -} - -.tabs li.active a { - color: #000; - background-color: #fff; -} - - - -div.huge { - - font-size: 300px; - line-height: 1em; - padding: 0; - letter-spacing: -.02em; - overflow: hidden; -} -div.glyph_range { - font-size: 72px; - line-height: 1.1em; -} - -.size10{ font-size: 10px; } -.size11{ font-size: 11px; } -.size12{ font-size: 12px; } -.size13{ font-size: 13px; } -.size14{ font-size: 14px; } -.size16{ font-size: 16px; } -.size18{ font-size: 18px; } -.size20{ font-size: 20px; } -.size24{ font-size: 24px; } -.size30{ font-size: 30px; } -.size36{ font-size: 36px; } -.size48{ font-size: 48px; } -.size60{ font-size: 60px; } -.size72{ font-size: 72px; } -.size90{ font-size: 90px; } - - -.psample_row1 { height: 120px;} -.psample_row1 { height: 120px;} -.psample_row2 { height: 160px;} -.psample_row3 { height: 160px;} -.psample_row4 { height: 160px;} - -.psample { - overflow: hidden; - position: relative; -} -.psample p { - line-height: 1.3em; - display: block; - overflow: hidden; - margin: 0; -} - -.psample span { - margin-right: .5em; -} - -.white_blend { - width: 100%; - height: 61px; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==); - position: absolute; - bottom: 0; -} -.black_blend { - width: 100%; - height: 61px; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC); - position: absolute; - bottom: 0; -} -.fullreverse { - background: #000 !important; - color: #fff !important; - margin-left: -20px; - padding-left: 20px; - margin-right: -20px; - padding-right: 20px; - padding: 20px; - margin-bottom:0; -} - - -.sample_table td { - padding-top: 3px; - padding-bottom:5px; - padding-left: 5px; - vertical-align: middle; - line-height: 1.2em; -} - -.sample_table td:first-child { - background-color: #eee; - text-align: right; - padding-right: 5px; - padding-left: 0; - padding: 5px; - font: 11px/12px "Courier New", Courier, mono; -} - -code { - white-space: pre; - background-color: #eee; - display: block; - padding: 10px; - margin-bottom: 18px; - overflow: auto; -} - - -.bottom,.last {margin-bottom:0 !important; padding-bottom:0 !important;} - -.box { - padding: 18px; - margin-bottom: 18px; - background: #eee; -} - -.reverse,.reversed { background: #000 !important;color: #fff !important; border: none !important;} - -#bodycomparison { - position: relative; - overflow: hidden; - font-size: 72px; - height: 90px; - white-space: nowrap; -} - -#bodycomparison div{ - font-size: 72px; - line-height: 90px; - display: inline; - margin: 0 15px 0 0; - padding: 0; -} - -#bodycomparison div span{ - font: 10px Arial; - position: absolute; - left: 0; -} -#xheight { - float: none; - position: absolute; - color: #d9f3ff; - font-size: 72px; - line-height: 90px; -} - -.fontbody { - position: relative; -} -.arialbody{ - font-family: Arial; - position: relative; -} -.verdanabody{ - font-family: Verdana; - position: relative; -} -.georgiabody{ - font-family: Georgia; - position: relative; -} - -/* @group Layout page - */ - -#layout h1 { - font-size: 36px; - line-height: 42px; - font-weight: normal; - font-style: normal; -} - -#layout h2 { - font-size: 24px; - line-height: 23px; - font-weight: normal; - font-style: normal; -} - -#layout h3 { - font-size: 22px; - line-height: 1.4em; - margin-top: 1em; - font-weight: normal; - font-style: normal; -} - - -#layout p.byline { - font-size: 12px; - margin-top: 18px; - line-height: 12px; - margin-bottom: 0; -} -#layout p { - font-size: 14px; - line-height: 21px; - margin-bottom: .5em; -} - -#layout p.large{ - font-size: 18px; - line-height: 26px; -} - -#layout .sidebar p{ - font-size: 12px; - line-height: 1.4em; -} - -#layout p.caption { - font-size: 10px; - margin-top: -16px; - margin-bottom: 18px; -} - -/* @end */ - -/* @group Glyphs */ - -#glyph_chart div{ - background-color: #d9f3ff; - color: black; - float: left; - font-size: 36px; - height: 1.2em; - line-height: 1.2em; - margin-bottom: 1px; - margin-right: 1px; - text-align: center; - width: 1.2em; - position: relative; - padding: .6em .2em .2em; -} - -#glyph_chart div p { - position: absolute; - left: 0; - top: 0; - display: block; - text-align: center; - font: bold 9px Arial, sans-serif; - background-color: #3a768f; - width: 100%; - color: #fff; - padding: 2px 0; -} - - -#glyphs h1 { - font-family: Arial, sans-serif; -} -/* @end */ - -/* @group Installing */ - -#installing { - font: 13px Arial, sans-serif; -} - -#installing p, -#glyphs p{ - line-height: 1.2em; - margin-bottom: 18px; - font: 13px Arial, sans-serif; -} - - - -#installing h3{ - font-size: 15px; - margin-top: 18px; -} - -/* @end */ - -#rendering h1 { - font-family: Arial, sans-serif; -} -.render_table td { - font: 11px "Courier New", Courier, mono; - vertical-align: middle; -} - - diff --git a/bias-variance/fonts/stylesheet.css b/bias-variance/fonts/stylesheet.css deleted file mode 100755 index 878ced33..00000000 --- a/bias-variance/fonts/stylesheet.css +++ /dev/null @@ -1,36 +0,0 @@ -/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on October 7, 2020 */ - - - -@font-face { - font-family: 'amazon_emberregular'; - src: url('amazonember_rg-webfont.woff2') format('woff2'), - url('amazonember_rg-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'amazon_ember_displayheavy'; - src: url('amazonemberdisplay_he-webfont.woff2') format('woff2'), - url('amazonemberdisplay_he-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} - - - - -@font-face { - font-family: 'amazon_ember_monoregular'; - src: url('amazonembermono_rg-webfont.woff2') format('woff2'), - url('amazonembermono_rg-webfont.woff') format('woff'); - font-weight: normal; - font-style: normal; - -} \ No newline at end of file diff --git a/bias-variance/index.html b/bias-variance/index.html index 95052f5a..d98c7a1d 100644 --- a/bias-variance/index.html +++ b/bias-variance/index.html @@ -13,35 +13,21 @@ property="og:image" content="https://mlu-explain.github.io/assets/bvogimage.png" /> - - - - - - - + + + - -
@@ -59,34 +45,34 @@ id="Vector" d="M90.6641 83.1836C96.8828 83.1836 101.941 78.1289 101.941 71.8906V71.8242C101.941 65.5898 96.8945 60.5312 90.6641 60.5312C84.4453 60.5312 79.3828 65.5898 79.3828 71.8242V71.8906C79.3828 78.1289 84.4336 83.1836 90.6641 83.1836Z" fill="#232f3e" - /> + > + > + > + > + > - + @@ -94,15 +80,13 @@
- -

- The Bias Variance - Tradeoff + The Bias + Variance Tradeoff

- Jared Wilber - & Brent Werness, January 2021 + Jared Wilber & Brent Werness, + January 2021

Prediction errors can be decomposed into two main subcomponents of @@ -113,8 +97,6 @@

the concept.

- -
@@ -123,14 +105,12 @@

-

Using our wildest imagination, we can picture a dataset consisting of features X and labels Y, as on the left. Also imagine that we’d like to generalize this relationship to additional values of X - that we’d like to predict future values based on what we’ve - already seen before. -

+ already seen before.

With our imagination now undoubtedly spent, we can take a very simple approach to modeling the relationship between X and Y by just drawing a line to the general trend of the data. @@ -138,12 +118,10 @@

A Simple Model

-

Our simple model isn’t the best at modeling the relationship - clearly there's information in the data that it's failing to - capture. -

+ capture.

We'll measure the performance of our model by looking at the mean-squared error of its output and the true values (displayed in the bottom barchart). Our model is close to some of the training points, but overall there's definitely room for improvement.

- The error on the training data is important for model tuning, but what we really care about is how it performs on data we haven't seen before, called test data. So let's check that out as well. @@ -159,12 +136,10 @@

Low Complexity & Underfitting

-

Uh-oh, it looks like our earlier suspicions were correct - our model is garbage. The test error is even higher than the train - error! -

+ error!

In this case, we say that our model is underfitting the data: our model is so simple that it fails to adequately capture the @@ -177,16 +152,13 @@

>

-

A Complex Model

-

Our previous model performed poorly because it was too simple. Let's try our luck with something more complex. In fact, let's get as complex as we can - let's train a model that predicts every - point in our training data perfectly. -

+ point in our training data perfectly.

Great! Now our training error is zero. As the old saying goes in Tennessee: Fool me once - shame on you. Fool me twice - er... you can't get fooled again ;). @@ -194,7 +166,6 @@

High Complexity & Overfitting

-

Wait a second... Even though our training error from our model was effectively zero, the error on our test data is high. What gives? @@ -226,12 +197,9 @@

noise.

- -

- Or, mathematically: -

- -

+

+ Or, mathematically:

+

We can’t do much about the irreducible @@ -246,9 +214,7 @@

>Bias represents the difference between the average prediction and the true value:

- -

- +

The term is a tricky one. It refers to the average prediction after the model has been trained over several independent datasets. We can think of the @@ -260,7 +226,6 @@

comes from bias.

-

Variance

@@ -270,8 +235,7 @@

>variance measures how much, on average, predictions vary for a given data point:

- -

+

As you can see in the bottom plot, predictions from overfit (high-complexity) models show a lot more error from variance than from bias. It’s easy to imagine that any unseen data points will @@ -284,13 +248,11 @@

To obtain our best results, we should work to find a happy medium between a model that is so basic it fails to learn meaningful patterns in our data, and one that is so complex it fails to - generalize to unseen data . -

+ generalize to unseen data .

In other words, we don’t want an underfit model, but we don’t want an overfit model either. We want something in between - something with enough complexity to learn learn the generalizable patterns - in our data. -

+ in our data.

By trading some bias for variance (i.e. increasing the complexity of our model), and without going overboard, we can @@ -303,35 +265,29 @@

We just showed, at different levels of complexity, a sample of model realizations alongside their corresponding prediction error - decompositions. -

+ decompositions.

Let’s direct our focus to the error decompositions across model - complexities. -

+ complexities.

For each level of complexity, we’ll aggregate the error decomposition across all data-points, and plot the aggregate - errors at their level of complexity. -

+ errors at their level of complexity.

This aggregation applied to our balanced model (i.e. the middle level of complexity) is shown to the left.

-

The Bias Variance Trade-off

+

The Bias Variance Tradeoff

Repeating this aggregation across our range of model complexities, we can see the relationship between bias and variance in prediction errors manifests itself as a U-shaped curve detailing - the trade off between bias and variance. -

+ the tradeoff between bias and variance.

When a model is too simple (i.e. small values along the x-axis), it ignores useful information, and the error is composed mostly of - that from bias. -

+ that from bias.

When a model is too complex (i.e. large values along the x-axis), it memorizes non-general patterns, and the error is composed - mostly of that from variance. -

+ mostly of that from variance.

The ideal model aims to minimize both bias and variance. It lays in the sweet spot - not too simple, nor too complex. @@ -341,21 +297,18 @@

-


Many models have parameters that change the final learned models, - called hyperparameters Let's look at how these hyperparameters may be - used to control the the bias-variance tradeoff with two examples: - LOESS Regression and K-Nearest Neighbors. + called hyperparameters. Let's look at how these hyperparameters may be + used to control the bias variance tradeoff with two examples: LOESS + Regression and K-Nearest Neighbors.


-
+

- -

LOESS Regression

@@ -364,22 +317,19 @@

LOESS Regression

outcome and some predictor variables. The curve fitting at a given point is weighted by nearby data. This weighting is governed by a smoothing hyperparameter, which represents the proportion of - neighboring data used to calculate each local fit. -

+ neighboring data used to calculate each local fit.

Thus, the bias variance tradeoff for LOESS may be controlled for via the smoothness parameter. When the smoothness is small, the amount of data we consider is insufficient for an accurate fit, resulting in large variance. However, if we make the smoothness too high (i.e. over-smoothed), we trade local information for global, resulting in - large bias. -

+ large bias.

Below a LOESS curve is fit to two variables. Randomize the training data to observe the effect different model realizations have on variance, and control the smoothness to observe the tradeoff between under- and over-fitting (and thus, bias and variance).

-
- -
-
- +

K-Nearest Neighbors

@@ -407,8 +354,7 @@

K-Nearest Neighbors

of its K-nearest neighbors. For example, when K = 1, the data point is simply assigned to the class of that single nearest neighbor. If K = 69, the data point is assigned to the majority class of its - 69-nearest neighbors. -

+ 69-nearest neighbors.

We can observe the bias variance tradeoff in KNN directly by playing with the hyperparameter K. When K is small, only a small number of neighbors are considered during the classification vote. The @@ -418,8 +364,7 @@

K-Nearest Neighbors

that deviate sharply from the true decision boundary - go too high and you’ll just obtain a majority vote. This is high bias. On the other hand, for medium values of K, we see smooth the regions that - follow along the true decision boundary. -

+ follow along the true decision boundary.

Explore the trade-off for yourself below! The plot on the left shows the training data. The plot on the right shows decision regions based on the current value of K. Deeper colors reflect more @@ -439,7 +384,6 @@

K-Nearest Neighbors

-

@@ -458,21 +402,11 @@

What About Double Descent?

Fret not, dear reader! As we will detail in our next series of articles, Double Descent actually supports the classical notion of - the bias variance trade off. Stay tuned to learn more! - -

+ the bias variance trade off. Stay tuned to learn more!


- -

It's Finally Over

@@ -480,12 +414,11 @@

It's Finally Over

Exhales deeply. It's finally over. Thanks for reading! We hope that the article is insightful no matter where you are along your machine learning journey, and that you came away with a better - undersatnding of the bias variance tradeoff.

+ understanding of the bias variance tradeoff.

To make things compact, we skipped over some relevant topics (such as regularization), but stay-tuned for more MLU-Explain articles, where we plan to explain those, and other, topics related to machine - learning. -

+ learning.

To learn more about machine learning, check out our self-paced coursesIt's Finally Over

-


References + Open Source

@@ -527,9 +459,8 @@

References + Open Source


(Trevor Hastie; Robert Tibshirani; Jerome Friedman, 2009).
  • - Dive into Deep Learning - (Aston Zhang and Zachary C. Lipton and Mu Li and Alexander J. Smola, - 2020). + Dive into Deep Learning (Aston Zhang + and Zachary C. Lipton and Mu Li and Alexander J. Smola, 2020).
  • @@ -545,7 +476,6 @@

    References + Open Source

    > (statsdirect.com).
  • -
  • D3.js (Mike Bostock, Philippe Rivière) @@ -574,10 +504,7 @@

    References + Open Source



  • - - - - - + + diff --git a/bias-variance/js/DoubleDescent.js b/bias-variance/js/DoubleDescent.js deleted file mode 100644 index d63edb6c..00000000 --- a/bias-variance/js/DoubleDescent.js +++ /dev/null @@ -1,232 +0,0 @@ -// import * as d3 from "d3"; -import { select } from "d3-selection"; -import { axisBottom, axisLeft } from "d3-axis"; -import { scaleLinear } from "d3-scale"; -import { line, curveCatmullRom } from "d3-shape"; -import { ddTrainTest, ddUShape } from "./dataFiles"; - -export class DoubleDescent { - constructor(opts) { - // set selections - this.ddContainer = opts.ddContainer; - - // set constant SVG parameters - this.MARGIN = - window.innerWidth <= 600 - ? { TOP: 30, BOTTOM: 40, LEFT: 20, RIGHT: 35 } - : { TOP: 30, BOTTOM: 40, LEFT: 35, RIGHT: 40 }; - this.WIDTH = - window.innerWidth <= 600 - ? window.innerWidth * 0.65 - : window.innerWidth * 0.45; - this.HEIGHT = - window.innerWidth <= 600 - ? window.innerHeight * 0.3 - : window.innerHeight * 0.35; - - // create svg - this.svg = select(`#${this.ddContainer}`) - .append("svg") - .attr("id", `dd-svg`) - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM) - .style("background-color", ""); - // g container for double descent (dd) - this.ddG = this.svg - .append("g") - .attr("id", `dd-g`) - .attr("transform", `translate(${this.MARGIN.LEFT}, ${this.MARGIN.TOP})`); - - // add clip-path to limit U-line height - this.ddG - .append("clipPath") - .attr("id", "dd-clip") - .append("rect") - .attr("x", 0) - .attr("y", 10) - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM); - - // draw axes - this.drawAxes(); - - // draw lines - this.drawDoubleDescentLines(); - - // draw title - // this.addTitle(); - - // add text annotations to chart - this.addAnnotations(); - } - - drawAxes() { - // define scales - this.xScale = scaleLinear().domain([0.5, 21]).range([0, this.WIDTH]); - this.yScale = scaleLinear().domain([0, 34]).range([this.HEIGHT, 0]); - - // define axes - const xAxisGeneratorLoess = axisBottom(this.xScale) - .tickSizeOuter(0) - .ticks(4); - const yAxisGeneratorLoess = axisLeft(this.yScale).tickSizeOuter(0).ticks(4); - - // draw x-axis - const xAxis = this.ddG - .append("g") - .attr("class", "axis") - .attr("id", "dd-x-axis") - .call(xAxisGeneratorLoess) - .attr("transform", `translate(0, ${this.HEIGHT})`); - - // draw y-axis - const yAxis = this.ddG - .append("g") - .attr("class", "axis") - .attr("id", "dd-y-axis") - .call(yAxisGeneratorLoess); - - // add labels to axes - this.svg - .append("text") - .attr("class", "dd-axis-text") - .attr("x", this.WIDTH / 2 + this.MARGIN.RIGHT) - .attr("y", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM / 2) - .text("Model Complexity") - .attr("text-anchor", "middle"); - this.svg - .append("text") - .attr("class", "dd-axis-text") - .attr("y", this.MARGIN.LEFT / 1.4) - .attr("x", -(this.HEIGHT / 2 + this.MARGIN.TOP)) - .attr("dy", ".05em") - .attr("transform", "rotate(-90)") - .attr("text-anchor", "middle") - .text("Error"); - - // #efefef - // add arrow for x-axis - this.svg - .append("defs") - .append("marker") - .attr("id", "arrowhead-right") - .attr("refX", 5) - .attr("refY", 4.7) - .attr("markerWidth", 16) - .attr("markerHeight", 13) - .append("path") - .attr("d", "M 0 0 L 5 5 L 0 10") - .attr("stroke", "black") - .attr("stroke-width", 2) - .attr("fill", "none"); - - // add arrow to x-axis - this.svg - .select("#dd-x-axis path.domain") - .attr("marker-end", "url(#arrowhead-right)"); - - // add arrow for y-axis - this.svg - .append("defs") - .append("marker") - .attr("id", "arrowhead-up") - .attr("refX", 5) - .attr("refY", 4.7) - .attr("markerWidth", 16) - .attr("markerHeight", 23) - .append("path") - .attr("d", "M 10 10 L 5 5 L 0 10") - .attr("stroke", "black") - .attr("stroke-width", 2) - .attr("fill", "none"); - - this.svg - .select("#dd-y-axis path.domain") - .attr("marker-end", "url(#arrowhead-up)"); - } - - drawDoubleDescentLines() { - // init line generator - let lineGen = line() - .x((d) => this.xScale(d.x)) - .curve(curveCatmullRom.alpha(0.8)); - - // draw train/test lines - const stages = ["train", "test"]; - stages.map((stage) => { - // update line generator for given stage - lineGen.y((d) => this.yScale(d[`y_${stage}`])); - - // draw line for given stage - this.ddG - .append("path") - .attr("class", "dd-line") - .attr("id", `dd-line-${stage}`) - .attr("d", lineGen(ddTrainTest)); - }); - - // draw U-shape line - lineGen.y((d) => this.yScale(d.y_u)); - this.ddG - .append("path") - .attr("clip-path", "url(#dd-clip)") - .attr("class", "dd-line") - .attr("id", `dd-line-u`) - .attr("d", lineGen(ddUShape)); - } - - addTitle() { - // add title to plot - this.svg - .append("text") - .attr("id", "dd-title") - .attr("x", this.MARGIN.LEFT) - .attr("y", this.MARGIN.TOP / 1.5) - .attr("text-anchor", "left") - .text("The Double Descent Phenomena") - .style("font-weight", "bold"); - } - - addAnnotations() { - // add text annotations to chart - // train label & circle - this.ddG - .attr("class", "dd-text") - .append("text") - .attr("x", this.xScale(19.25)) - .attr("y", this.yScale(0.8)) - .attr("dx", window.innerWidth <= 600 ? 2.5 : 0) - .text("Train Error"); - this.ddG - .append("circle") - .attr("class", "dd-circle") - .attr("id", "dd-circle-train") - .attr("cx", this.xScale(19)) - .attr("cy", this.yScale(1.2)) - .attr("r", 5); - - // test label - this.ddG - .attr("class", "dd-text") - .append("text") - .attr("x", this.xScale(19.25)) - .attr("y", this.yScale(2.4)) - .attr("dx", window.innerWidth <= 600 ? 2.5 : 0) - .text("Test Error"); - this.ddG - .append("circle") - .attr("class", "dd-circle") - .attr("id", "dd-circle-test") - .attr("cx", this.xScale(19)) - .attr("cy", this.yScale(2.3)) - .attr("r", 5); - - // U label - this.ddG - .attr("class", "dd-text") - .append("text") - .attr("x", this.xScale(9.8)) - .attr("y", this.yScale(30.25)) - .text("Expected Test Error"); - } -} diff --git a/bias-variance/js/ErrorBar.js b/bias-variance/js/ErrorBar.js deleted file mode 100644 index 3451b057..00000000 --- a/bias-variance/js/ErrorBar.js +++ /dev/null @@ -1,816 +0,0 @@ -import { select, selectAll, style } from "d3-selection"; -import { axisBottom, axisLeft } from "d3-axis"; -import { scaleBand, scaleLinear, scaleOrdinal } from "d3-scale"; -import { line, curveCatmullRom } from "d3-shape"; -import { transition } from "d3-transition"; -import { testColorBar, trainColorBar } from "./constants"; -import { errorData } from "./dataFiles"; -import { extent, max } from "d3-array"; -import { easeBack } from "d3-ease"; - -export class ErrorBar { - constructor(opts) { - this.element = opts.element; - this.chartDims = select("#scroll-figure").node().getBoundingClientRect(); - console.log("chartDims", this.chartDims); - this.MARGIN = - window.innerWidth <= 700 - ? { TOP: 20, BOTTOM: 30, LEFT: 30, RIGHT: 9 } - : { TOP: 20, BOTTOM: 40, LEFT: 40, RIGHT: 9 }; - this.WIDTH = this.chartDims.width * 0.8; - this.HEIGHT = window.innerHeight * 0.36; - - // this.HEIGHT = 250; - this.svgMain = select("#svg2") - .append("svg") - .attr("id", "errorBarSvg") - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM); - - this.svg = this.svgMain - .append("g") - .attr("id", "errorchart-g") - .attr("transform", `translate(${this.MARGIN.LEFT}, ${this.MARGIN.TOP})`); - - // add arrow for x-axis - this.svgMain - .append("defs") - .append("marker") - .attr("id", "arrowhead-right") - .attr("refX", 5) - .attr("refY", 4.7) - .attr("markerWidth", 16) - .attr("markerHeight", 13) - .append("path") - .attr("d", "M 0 0 L 5 5 L 0 10") - .attr("stroke", "black") - .attr("stroke-width", 2) - .attr("fill", "none"); - // add arrow for y-axis - this.svgMain - .append("defs") - .append("marker") - .attr("id", "arrowhead-up") - .attr("refX", 5) - .attr("refY", 4.7) - .attr("markerWidth", 16) - .attr("markerHeight", 23) - .append("path") - .attr("d", "M 10 10 L 5 5 L 0 10") - .attr("stroke", "black") - .attr("stroke-width", 2) - .attr("fill", "none"); - - this.colorScale = scaleOrdinal() - .domain(["Train", "Test"]) - .range([trainColorBar, testColorBar]); - - this.xScale = scaleLinear().domain([0, 0.42]).range([0, this.WIDTH]); - this.xAxisGroup = this.svg - .append("g") - .attr("class", "axis") - .attr("id", "error-x-axis") - .attr("transform", `translate(0, ${this.HEIGHT})`); - - this.yScale = scaleBand().range([0, this.HEIGHT]).padding(0.1); - - this.yAxisGroup = this.svg - .append("g") - .attr("class", "axis") - .attr("id", "error-y-axis"); - } - - drawErrorBase() { - // set new axes and scales - this.xScaleError = scaleLinear() - .domain(extent(errorData, (d) => +d.x)) - .range([0, this.WIDTH]); - - this.xAxisGroup - .transition() - .style("opacity", 1) - .call(axisBottom(this.xScaleError).tickSizeOuter(0).ticks(4)) - .selectAll("line.tick") - .style("opacity", 0.2); - - this.yScaleError = scaleLinear() - .domain([-0.05, 0.8]) - .range([this.HEIGHT, 0]); - - this.yAxisGroup - .transition() - .style("opacity", 1) - .call(axisLeft(this.yScaleError).tickSizeOuter(0).ticks(4)); - } - - plotErrorLines(xVal, yVal) { - // resolve yVal - const noise = `noise_${yVal}`; - const error = `error_${yVal}`; - const bias = `bias_${yVal}`; - const variance = `var_${yVal}`; - const errorT = transition().delay(200).duration(1500); - - // update y-axis depending on y-value - if (yVal === "final" || yVal == "point") { - this.yScaleError.domain([-0.05, 1.3]); - this.yAxisGroup - .transition() - .style("opacity", 1) - .call(axisLeft(this.yScaleError).tickSizeOuter(0).ticks(0)); - } else { - this.yScaleError.domain([-0.05, 0.8]); - this.yAxisGroup - .transition() - .style("opacity", 1) - .call(axisLeft(this.yScaleError).tickSizeOuter(0).ticks(4)); - } - - // define line generators - const noiseLine = line() - .x((d) => this.xScaleError(+d[xVal])) - .y((d) => this.yScaleError(+d[noise])) - .curve(curveCatmullRom.alpha(0.8)); - - const errorLine = line() - .x((d) => this.xScaleError(+d[xVal])) - .y((d) => this.yScaleError(+d[error])) - .curve(curveCatmullRom.alpha(0.8)); - - const biasLine = line() - .x((d) => this.xScaleError(+d[xVal])) - .y((d) => this.yScaleError(+d[bias])) - .curve(curveCatmullRom.alpha(0.8)); - - const varLine = line() - .x((d) => this.xScaleError(+d[xVal])) - .y((d) => this.yScaleError(+d[variance])) - .curve(curveCatmullRom.alpha(0.8)); - - // draw noise data - this.noiseLine = this.svg - .selectAll("#noise-line") - .data([errorData], (d) => +d[xVal]); - - this.noiseLine - .enter() - .append("path") - .attr("id", "noise-line") - .merge(this.noiseLine) - .attr("class", "error-line-bottom") - .transition(errorT) - .attr("d", noiseLine); - - // draw error data - this.errorLine = this.svg - .selectAll("#error-line") - .data([errorData], (d) => +d[xVal]); - - this.errorLine - .enter() - .append("path") - .attr("id", "error-line") - .merge(this.errorLine) - .attr("class", "error-line-bottom") - .transition(errorT) - .attr("d", errorLine); - - // draw bias data - this.biasLine = this.svg - .selectAll("#bias-line") - .data([errorData], (d) => +d[xVal]); - - this.biasLine - .enter() - .append("path") - .attr("id", "bias-line") - .merge(this.biasLine) - .attr("class", "error-line-bottom") - .transition(errorT) - .attr("d", biasLine); - - // draw var data - this.varLine = this.svg - .selectAll("#var-line") - .data([errorData], (d) => +d[xVal]); - - this.varLine - .enter() - .append("path") - .attr("id", "var-line") - .merge(this.varLine) - .attr("class", "error-line-bottom") - .transition(errorT) - .attr("d", varLine); - } - - plotComplexCircleOne() { - // add a circle to each complex point - // first, gcreate array for desired circles - const circleData = ["bias", "var", "noise", "error"].map((d) => { - return { - x: errorData[0].x_point, - y: errorData[0][`${d}_point`], - name: d, - }; - }); - - // next, plot circle for each point - this.svg - .selectAll("circle.complexity") - .data(circleData) - .enter() - .append("circle") - .attr("class", "complexity") - .attr("class", (d) => `complex-${d.name}`) - .style("stroke-width", 2) - .attr("stroke", "white") - .attr("cx", (d) => this.xScaleError(+d.x)) - .attr("cy", (d) => this.yScaleError(+d.y)) - .attr("r", 0) - .transition() - .delay(1300) - .attr("r", window.innerWidth <= 600 ? 9.5 : 12) - .transition() - .attr("r", window.innerWidth <= 600 ? 5 : 8); - } - - plotComplexCircleAll() { - // add a circle to each complex point - // first, gcreate array for desired circles - // const circlesData = errorData.filter((d) => d.x !== 0.503); - // console.log("circleData", circlesData); - - const noise = `noise_final`; - const error = `error_final`; - const bias = `bias_final`; - const variance = `var_final`; - - // noise - this.svg - .selectAll("circle.complexity") - .data(errorData) - .enter() - .append("circle") - .attr("class", "complexity") - .attr("class", (d) => `complex-noise`) - .style("stroke-width", 2) - .attr("stroke", "white") - .attr("cx", (d) => this.xScaleError(+d.x)) - .attr("cy", (d) => this.yScaleError(+d[noise])) - .attr("r", 0) - .transition() - .attr("r", window.innerWidth <= 600 ? 9.5 : 12) - .transition() - .attr("r", window.innerWidth <= 600 ? 5 : 8); - - // error - this.svg - .selectAll("circle.complexity") - .data(errorData) - .enter() - .append("circle") - .attr("class", "complexity") - .attr("class", (d) => `complex-error`) - .style("stroke-width", 2) - .attr("stroke", "white") - .attr("cx", (d) => this.xScaleError(+d.x)) - .attr("cy", (d) => this.yScaleError(+d[error])) - .attr("r", 0) - .transition() - .attr("r", window.innerWidth <= 600 ? 9.5 : 12) - .transition() - .attr("r", window.innerWidth <= 600 ? 5 : 8); - - // bias - this.svg - .selectAll("circle.complexity") - .data(errorData) - .enter() - .append("circle") - .attr("class", "complexity") - .attr("class", (d) => `complex-bias`) - .style("stroke-width", 2) - .attr("stroke", "white") - .attr("cx", (d) => this.xScaleError(+d.x)) - .attr("cy", (d) => this.yScaleError(+d[bias])) - .attr("r", 0) - .transition() - .attr("r", window.innerWidth <= 600 ? 9.5 : 12) - .transition() - .attr("r", window.innerWidth <= 600 ? 5 : 8); - - // var - this.svg - .selectAll("circle.complexity") - .data(errorData) - .enter() - .append("circle") - .attr("class", "complexity") - .attr("class", (d) => `complex-var`) - .style("stroke-width", 2) - .attr("stroke", "white") - .attr("cx", (d) => this.xScaleError(+d.x)) - .attr("cy", (d) => this.yScaleError(+d[variance])) - .attr("r", 0) - .transition() - .attr("r", window.innerWidth <= 600 ? 9.5 : 12) - .transition() - .attr("r", window.innerWidth <= 600 ? 5 : 8); - - // next, plot circle for each point - } - - plotReverseDecompositionBar() { - let t = transition().duration(600); - // rescale axis back to what it was - this.xScale.domain([0, 0.42]); - this.xAxisGroup - .transition(t) - .call(axisBottom(this.xScale).tickSizeOuter(0)) - .style("opacity", 1); - // update y-axis in 5 up so it shows earlier - this.yAxisGroup.transition(t).style("opacity", 1); - } - - plotDecompositionBar(data) { - const that = this; - let t = transition().delay(100).duration(600); - // draw same data 3 times, with slightly different errors - // scale y-axis to full - const maxError = max(data, (d) => +d.error); - - // set new band xscale for decomposition values - - this.xScale.domain([0, maxError]); - // this.xScale.domain([0, maxError + maxError * 0.1]); - this.xAxisGroup - .transition(t) - .call(axisBottom(this.xScale).tickSizeOuter(0).ticks(4)); - // update y-axis - this.yScale.domain(["Test"]); - this.yAxisGroup.transition(t).call(axisLeft(this.yScale).tickSizeOuter(0)); - - // join - this.rects = this.svg.selectAll(`rect.errorBar`).data(data, (d) => d.error); - - // exit - this.rects - .exit() - .transition(t) - .attr("height", 0) - .attr("y", this.HEIGHT) - .remove(); - - // update - this.rects - .transition(t) - .attr("x", (d) => this.xScale(0)) - .attr("y", (d) => this.yScale(d.name)) - .attr("width", (d) => this.xScale(maxError)) - .attr("height", this.yScale.bandwidth()) - .attr("id", "decomposition") - .style("opacity", 1); - // hide x-axis group (hide incase scroll up) - this.hideAxes(); - - // DECOMPOSITION - this.decomp = [ - { name: "Test", error: "Bias2", value: 0.33 * maxError }, - { name: "Test", error: "Variance", value: 0.33 * maxError }, - { name: "Test", error: "Noise", value: 0.33 * maxError }, - ]; - - this.biasMap = (d) => { - return d === "Bias2" ? "Bias²" : d; - }; - - // axis for decomp positions - this.decompAxis = scaleBand() - .range([0, this.xScale(maxError)]) - .padding(0) - .domain(["Bias2", "Variance", "Noise"]); - - // save value for error offset - this.biasX = - that.WIDTH / 10 - - this.decompAxis("Bias2") + - this.xScale(0.33 * maxError) / 2; - - const stackColor = scaleOrdinal() - .domain(this.decomp, (d) => d.error) - .range(["coral", "skyblue", "teal"]); - - this.decompLegend = this.svg - .append("g") - .attr("class", "decomp-legend") - .attr("transform", "translate(0,0)"); - - // create g elements to hold decomp rects and labels - this.decompGs = this.decompLegend - .selectAll("g.decompG") - .data(this.decomp) - .enter() - .append("g") - .attr("class", "decompG"); - - // append rectangles to decomp G - const stackedRects = this.decompGs - .append("rect") - .attr("class", "stacked") - .attr("fill", (d) => stackColor(d.error)) - .attr("id", (d) => `rect-${d.error}`) - .attr("x", (d) => this.decompAxis(d.error)) - .attr("y", (d) => this.yScale(d.name)) - .attr("height", this.yScale.bandwidth()) - .attr("width", (d) => this.xScale(+d.value)) - .style("opacity", 0); - - this.decompGs - .append("text") - .attr("class", "decomp-text") - .attr("x", (d) => this.decompAxis(d.error)) - .attr("y", (d) => this.yScale.bandwidth() / 2 + this.MARGIN.TOP) - .attr("dx", (d) => this.xScale(+d.value) / 2) - .text((d) => this.biasMap(d.error)) - .style("opacity", 0); - - // init rectangle borders around text (for labels later) - this.textBox = {}; - selectAll(".decomp-text").each(function (d) { - const textBox = this.getBBox(); - that.textBox[d.error] = textBox; - }); - - // reset text-anchor to middle - // we have to reset it because otherwise the later transition to legend won't work - selectAll(".decomp-text").attr("text-anchor", "middle"); - - // line up transitions - const decompT = transition().delay(600).ease(easeBack).duration(500); - - // transition everything into view - selectAll("rect.stacked").transition(decompT).style("opacity", 0.7); - selectAll(".decomp-text").transition(decompT).style("opacity", 1); - this.rects.transition(decompT).style("opacity", 0); - } - - // scroll up function for decomposition - reverseDecomposition() { - let t = transition().delay(100).duration(600); - - // reposition squares - this.decompGs - .selectAll("rect") - .transition(t) - .attr("x", (d) => this.decompAxis(d.error)) - .attr("y", (d) => this.yScale(d.name)) - .attr("height", this.yScale.bandwidth()) - .attr("width", (d) => this.xScale(+d.value)); - - // reposition text - this.decompGs - .selectAll("text") - .attr("x", (d) => this.decompAxis(d.error)) - .attr("y", (d) => this.yScale.bandwidth() / 2 + this.MARGIN.TOP) - .attr("dx", (d) => this.xScale(+d.value) / 2); - - // translate group back to decomp bar position - this.decompGs - .transition() - .duration(1000) - .attr("transform", "translate(0,0)") - .selectAll(".decomp-text") - .attr("text-anchor", "middle"); - - // remove axes - this.hideAxes(); - - // set up y-axis for bar - this.yScale.domain(["Train", "Test"]); - this.yAxisGroup - .call(axisLeft(this.yScale).tickSizeOuter(0)) - .style("opacity", 1); - } - - hideAxes() { - this.xAxisGroup.transition().style("opacity", 0); - this.yAxisGroup.transition().style("opacity", 0); - } - - positionErrorBarsAsLabels() { - const that = this; - const nodeWidth = (d) => d.getBBox().width; - // const rectOffset = window.innerWidth <= 600 ? 4 : 8; - const rectOffsetX = window.innerWidth <= 600 ? 4 : 8; - const rectOffsetY = window.innerWidth <= 600 ? 4 : 8; - const symbolSpace = - window.innerWidth <= 600 ? rectOffsetX * 1.5 : rectOffsetX * 2; - const errorTransTime = 800; - - // update y-axis - this.yScale.domain(["Test"]); - - // hide label rects behind main rect - selectAll("rect.stacked").style("opacity", 0.7); - selectAll(".decomp-text").style("opacity", 1); - - // position label rects - selectAll("rect.stacked") - .transition() - .attr("x", (d) => this.textBox[d.error].x - rectOffsetX) - .attr("y", (d) => this.textBox[d.error].y - rectOffsetY) - .attr("width", (d) => - window.innerWidth <= 600 - ? this.textBox[d.error].width + 1.5 * rectOffsetX - : this.textBox[d.error].width + 2 * rectOffsetX - ) - .attr("height", (d) => this.textBox[d.error].height + 2 * rectOffsetY); - - let offset = 0; - this.decompGs - .transition() - .duration(errorTransTime) - .attr("transform", function (d) { - // resolve x position for transition - let x = offset; - offset += that.textBox[d.error].width + 2.5 * rectOffsetX + symbolSpace; - let currentxPos = that.decompAxis(d.error) - rectOffsetX * 2; - let xPos = that.WIDTH / 10 - currentxPos; - xPos += x; - xPos = window.innerWidth <= 600 ? xPos - that.MARGIN.LEFT / 2.5 : xPos; - // resolve y position for transition - let currentYPos = that.yScale.bandwidth() / 2 + that.MARGIN.TOP; - // that.yScale.bandwidth() / 2 + this.MARGIN.TOP - const yPos = -currentYPos; - // transition - return `translate(${xPos}, ${yPos})`; - }) - .selectAll(".decomp-text") - .attr("text-anchor", "right"); - - this.decompLegend.attr("transform", function () { - return `translate(${(that.WIDTH - nodeWidth(this)) / 2}, 0)`; - }); - - // init error legend text to get position/bbox - let errorText = this.decompLegend - .append("text") - .attr("id", "error-text") - .attr("x", this.biasX) - .attr("y", this.MARGIN.TOP) - .text("Error") - .style("font-family", "AmazonEmberDisplayHeavy") - .style("opacity", 0); - - // get bbox balues of text - let errorCoords = {}; - select("#error-text").each(function (d, i) { - const textBox = this.getBBox(); - const width = textBox.width + 2 * rectOffsetX; - const height = textBox.height + 2 * rectOffsetY; - errorCoords["x"] = that.biasX - width; - errorCoords["width"] = width; - errorCoords["height"] = height; - errorCoords["y"] = textBox.y; - }); - // translate text to correct position given other elements and bbox - errorText - .transition() - .attr( - "x", - window.innerWidth <= 600 - ? errorCoords.x - rectOffsetX - that.MARGIN.LEFT / 2.5 - : errorCoords.x - rectOffsetX - ) - .attr("y", 0); - // add background rectangle - const errorTextRect = this.decompLegend - .append("rect") - .attr("class", "stacked-error") - .attr("fill", "red") - .attr( - "x", - window.innerWidth <= 600 - ? errorCoords.x - 2 * rectOffsetX - that.MARGIN.LEFT / 2.5 - : errorCoords.x - 2 * rectOffsetX - ) - .attr("y", errorCoords.y - rectOffsetY - that.MARGIN.TOP) - .attr("width", errorCoords.width) - .attr("height", errorCoords.height) - .lower() - .style("opacity", 0); - - // ADD MATH SYMBOLS TO LEGEND - // add '=' sign after error - let errorTextEquals = this.decompLegend - .append("text") - .attr("class", "error-symbol") - .attr( - "x", - window.innerWidth <= 600 - ? errorCoords.x + - errorCoords.width - - rectOffsetX - - that.MARGIN.LEFT / 2.5 - : errorCoords.x + errorCoords.width - rectOffsetX - ) - .attr("y", 0) - .text("=") - .style("font-family", "AmazonEmberDisplayHeavy") - .style("opacity", 0); - - // add '+' signs - let errorTextPlus = this.decompGs - .filter((d, i) => i !== 0) - .append("text") - .attr("class", "error-symbol") - .attr("x", (d) => this.textBox[d.error].x - rectOffsetX - symbolSpace) - .attr("dx", window.innerWidth <= 600 ? -2 : 0) - .attr("y", that.yScale.bandwidth() / 2 + this.MARGIN.TOP) - .text("+") - .style("font-family", "AmazonEmberDisplayHeavy") - .style("opacity", 0); - - // transition elements to visibility - const errorTextT = transition().delay(errorTransTime); - - errorText.transition(errorTextT).style("opacity", 1); - selectAll(".error-symbol").transition(errorTextT).style("opacity", 0.9); - errorTextRect.transition(errorTextT).style("opacity", 0.7); - } - - addTitle(titleText) { - // remove existing title - select("#errorBarTitle").remove(); - - // add new title - this.svg - .append("text") - .attr("id", "errorBarTitle") - .attr("x", this.WIDTH / 2) - .attr("y", 0) - .attr("text-anchor", "middle") - .text(titleText) - .style("font-weight", "bold"); - } - - plotBars(data) { - // set consistent transition - let t = transition().delay(500).duration(600); - - // resolve names for y-axis - const names = extent(data, (d) => d.name).reverse(); - this.yScale.domain(names); - - // update y-axis - this.yAxisGroup.transition(t).call(axisLeft(this.yScale).tickSizeOuter(0)); - - // update x-axis - this.xAxisGroup - .transition(t) - .call(axisBottom(this.xScale).ticks(4).tickSizeOuter(0)) - .selectAll("line.tick") - .style("opacity", 0.1); - - // join rects - this.rects = this.svg.selectAll(`rect.errorBar`).data(data, (d) => d.name); - - // exit rects - this.rects - .exit() - .transition(t) - .attr("width", 0) - .attr("height", 0) - .attr("y", this.HEIGHT) - .remove(); - - // update rects - this.rects - .transition(t) - .attr("x", (d) => this.xScale(0)) - .attr("y", (d) => this.yScale(d.name)) - .attr("width", (d) => this.xScale(+d.error)) - .attr("height", this.yScale.bandwidth()); - - // enter rects - this.rects - .enter() - .append("rect") - .attr("class", "errorBar") - .attr("x", (d) => this.xScale(0)) - .attr("y", (d) => this.yScale(d.name)) - .attr("height", this.yScale.bandwidth()) - .attr("fill", (d) => this.colorScale(d.name)) - .transition(t) - .attr("width", (d) => this.xScale(+d.error)); - } - - repositionSvgNew() { - // set up transition - let trans = transition().duration(1500); - - // determine new height - let newHeight = - window.innerHeight * 0.45 + this.MARGIN.BOTTOM + this.MARGIN.TOP; - - // resize & hide top chart - select("#scatter-svg") - .transition(trans) - .attr("height", 75) - .style("opacity", 0); - - // ensure x-axis lines up with chart re-scaling - this.xAxisGroup - .transition(trans) - .attr( - "transform", - `translate(0, ${newHeight - this.MARGIN.TOP - this.MARGIN.BOTTOM})` - ); - - // remove numbers from x-scale - this.svg.select("#error-x-axis").selectAll(".tick").style("opacity", 0); - - // add arrow to x-axis - this.svg - .select("#error-x-axis path.domain") - .attr("marker-end", "url(#arrowhead-right)"); - - // add 'Model Complexity' label to x-axis - this.svg - .append("text") - .attr("id", "error-x-text") - .attr("x", this.WIDTH / 2) - .attr("y", newHeight - this.MARGIN.TOP - this.MARGIN.BOTTOM / 2) - .text("Model Complexity") - .style("text-anchor", "middle") - .style("font-family", "AmazonEmberDisplayLight"); - - // update y-axis - this.yScaleError - .domain([0, 1]) - .range([newHeight - this.MARGIN.TOP - this.MARGIN.BOTTOM, 0]); - this.yAxisGroup - .transition(trans) - .call(axisLeft(this.yScaleError).tickSizeOuter(0).ticks(4)); - // remove number from y-scale - this.svg.select("#error-y-axis").selectAll(".tick").style("opacity", 0); - - // add arrow to x-axis - this.svg - .select("#error-y-axis path.domain") - .attr("marker-end", "url(#arrowhead-up)"); - // .style("opacity", 0.8); - - // add 'Model Complexity' label to x-axis - this.svg - .append("text") - .attr("transform", "rotate(-90)") - .attr("id", "error-y-text") - .attr("y", 0 - 0.3 * this.MARGIN.LEFT) - .attr("x", 0 - newHeight / 2 + this.MARGIN.TOP) - .text("Test Error") - .style("text-anchor", "middle") - .style("font-family", "AmazonEmberDisplayLight"); - - // make svg larger - this.svgMain.transition(trans).attr("height", newHeight); - } - - upPositionSvg() { - // set up transition - let trans = transition(); - - // make top chart its original height - select("#scatter-svg") - .transition(trans) - .attr("height", window.innerHeight * 0.4 + 15 + 40) - .style("opacity", 1); - - // update y-axis - this.yScaleError.domain([0, 1]).range([this.HEIGHT, 0]); - this.yAxisGroup - .transition(trans) - .call(axisLeft(this.yScaleError).ticks(4).tickSizeOuter(0)); - - // ensure x-axis lines up with chart re-scaling - this.xAxisGroup - .transition(trans) - .attr("transform", `translate(0, ${this.HEIGHT})`); - - // reshow axes numbers - this.svg.select("#error-x-axis").selectAll(".tick").style("opacity", 1); - this.svg.select("#error-y-axis").selectAll(".tick").style("opacity", 1); - // remove axes arrows - this.svg.select("#error-x-axis path.domain").attr("marker-end", "null"); - this.svg.select("#error-y-axis path.domain").attr("marker-end", "null"); - // remove axes text - this.svg.select("#error-x-text").remove(); - this.svg.select("#error-y-text").remove(); - - // redraw svg - this.svgMain - .transition(trans) - .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM); - } -} diff --git a/bias-variance/js/KNN.js b/bias-variance/js/KNN.js deleted file mode 100644 index f4fb94ab..00000000 --- a/bias-variance/js/KNN.js +++ /dev/null @@ -1,505 +0,0 @@ -import { select, selectAll, pointer } from "d3-selection"; -import { scaleQuantize, scaleOrdinal } from "d3-scale"; -import { line } from "d3-shape"; -import { transition } from "d3-transition"; -import { curveCatmullRom } from "d3-shape"; -import { range } from "d3-array"; -import { Delaunay } from "d3-delaunay"; -import * as d3hexbin from "d3-hexbin"; - -const dist = (x, y) => (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2; -const equation = (x) => x - 0.1 * Math.pow(x, 2) - 1.1 * Math.sin(x) + 4; -const numPoints = 65; - -export class KNN { - constructor(opts) { - const that = this; - // selections - this.fitContainer = opts.fitContainer; - this.predictContainer = opts.predictContainer; - this.sliderContainer = opts.sliderContainer; - - // set k - this.k = opts.k; - - // values for chart components - this.fitPointRadius = 6; - this.hexRadius = 8; - - // set constant SVG parameters - this.MARGIN = { TOP: 0, BOTTOM: 0, LEFT: 0, RIGHT: 0 }; - const containerSize = select(`#${this.fitContainer}`) - .node() - .getBoundingClientRect(); - this.WIDTH = containerSize.width * 0.9; - // this.HEIGHT = containerSize.height * 0.85; - this.HEIGHT = - window.innerWidth <= 600 - ? containerSize.height * 0.7 - : containerSize.height * 0.85; - - this.padding = 40; - - // utils for charts - this.classColorScale = scaleOrdinal() - .domain([0, 1]) - .range(["#94CAE0", "#E57873"]); - this.cellColor = scaleQuantize() - .domain([-0.8, 0.8]) - .range([ - "#94CAE0", - "rgba(148, 202, 224, 0.5)", - "rgba(229, 120, 115, 0.5)", - "#E57873", - ]); - this.xAcc = (d) => +d[0]; - this.yAcc = (d) => +d[1]; - - // reusable hexbin - this.hexbin = d3hexbin - .hexbin() - .radius(this.hexRadius) - .extent([ - [0, 0], - [this.WIDTH, this.HEIGHT], - ]); - - // hexbin data - this.hexCenters = this.hexbin(this.hexbin.centers()); - - // init voronoi - this.delan = Delaunay.from( - this.hexCenters, - (d) => d.x, - (d) => d.y - ); - - // create datasets - function genData(x, y) { - if (Math.random() > 0.9) { - return Math.round(Math.random()); - } - return dBoundary(x, y); - } - - function dBoundary(x, y) { - let nx = (x / that.WIDTH) * 10 + 1.5; - let ny = ((that.HEIGHT - y) / that.HEIGHT) * 10; - - if (ny < equation(nx)) { - return 0; - } else { - return 1; - } - } - - this.trainData = range(numPoints).map(() => { - let x = Math.random() * (this.WIDTH - this.padding) + this.padding / 2; - let y = Math.random() * (this.HEIGHT - this.padding) + this.padding / 2; - return [x, y, genData(x, y)]; - }); - - // add slider to DOM - this.addSlider(); - - this.fitG = this.initChartSvg(this.fitContainer); - this.predictG = this.initChartSvg(this.predictContainer); - - // draw charts - this.drawKnnLeft(); - this.drawKnnRight(); - } - - refreshChartWithNewData() { - const that = this; - // redefine stuff so it stays in scope - const equation = (x) => x - 0.1 * Math.pow(x, 2) - 1.1 * Math.sin(x) + 4; - - // create datasets - function genData(x, y) { - if (Math.random() > 0.9) { - return Math.round(Math.random()); - } - return dBoundary(x, y); - } - - function dBoundary(x, y) { - let nx = (x / that.WIDTH) * 10 + 1.5; - let ny = ((that.HEIGHT - y) / that.HEIGHT) * 10; - return ny < equation(nx) ? 0 : 1; - } - - // regenerate data - this.trainData = range(numPoints).map(() => { - let x = Math.random() * (this.WIDTH - this.padding) + this.padding / 2; - let y = Math.random() * (this.HEIGHT - this.padding) + this.padding / 2; - return [x, y, genData(x, y)]; - }); - - // redraw both charts - this.drawKnnLeft(); - this.drawKnnRight(); - } - - drawKnnLeft() { - const that = this; - // redraw, so remove existing stuff - const removeClasses = [ - ".data-point", - ".highlight-circle", - "mesh-g-fit", - ".overlay", - ".hex-cell", - ".line-g", - ".mesh-g-fit", - ]; - removeClasses.map((d) => { - selectAll(d).remove(); - }); - - // redraw plot - const delan = Delaunay.from( - this.hexCenters, - (d) => d.x, - (d) => d.y - ); - // draw training data circles - const circlesTrain = this.fitG - .selectAll(".data-point") - .data(this.trainData) - .enter() - .append("circle") - .classed("data-point", true) - .attr("r", this.fitPointRadius) - .attr("cx", this.xAcc) - .attr("cy", this.yAcc) - .attr("fill", (d) => this.classColorScale(d[2])) - .style("stroke", "white"); - - // add highlight circle - this.fitG - .append("circle") - .attr("class", "highlight-circle") - .attr("r", this.fitPointRadius) - .style("fill", "black") - .style("stroke", "white"); - // .style("display", "none"); - - // draw hex grid - this.fitG - .append("g") - .attr("class", "mesh-g-fit") - .selectAll("path") - .data(this.hexCenters) - .enter() - .append("path") - .attr("class", "hex-cell-fit") - .attr("d", (d) => `M${d.x},${d.y}${this.hexbin.hexagon()}`) - .attr("fill", "white") - .attr("stroke-width", 0) - .attr("stroke", "white") - .attr("opacity", 0); - - // add the overlay on top of everything to take the mouse events - this.fitG - .append("rect") - .attr("class", "overlay") - .attr("width", that.WIDTH) - .attr("height", that.HEIGHT) - .style("opacity", 0) - .on("mousemove", hexHover) - .on("mouseleave", this.hexLeave); - - function hexHover(event) { - // get the current mouse position - const [mx, my] = pointer(event); - // use the new diagram.find() function to find the Voronoi mouse position - const closestPoint = delan.find(mx, my); - // highlight the point if we found one - const closestHex = that.hexCenters[closestPoint]; - - // get closest data point - const closestData = { x: mx, y: my }; - - that.highlight(closestData, that.k); - - // highlight current cell - const cell = selectAll(".hex-cell").filter( - (d) => d.x === closestHex.x && d.y === closestHex.y - ); - - cell.attr("stroke", "black").attr("stroke-width", 3).raise(); - - // unhover other ones - selectAll(".hex-cell") - .filter((d) => d.x !== closestHex.x || d.y !== closestHex.y) - .attr("stroke-width", 0) - .style("stroke", "#161E2D"); - } - // init highlight at random point - this.highlight(this.hexCenters[60], this.k); - this.addDecisionLine(this.fitG); - } - - hexLeave() { - // this.highlight(this.lastDataHovered, this.k); - selectAll(".hex-cell").attr("stroke-width", 0.0); - } - - // callback to highlight a point - highlight(d, k) { - this.k = k; - - select(".highlight-circle") - .style("display", "") - .attr("cx", d.x) - .attr("cy", d.y) - .attr("stroke", "black"); - - selectAll(".neighbor-line").remove(); - - // get location of currently select circle - // let loc = d.slice(0, 2); - let loc = [d.x, d.y]; - // get n-nearest neighbors to circle - let nn = getNNN(this.trainData, loc, this.k); - // edit opacity for polygons - this.fitG.selectAll(".polygon").style("fill", "white"); - // draw lines between points - const points = this.trainData.filter((d, i) => nn.indexOf(i) > -1); - this.fitG - .selectAll(".line") - .data(points) - .enter() - .append("line") - .attr("class", "neighbor-line") - .attr("x1", (d) => loc[0]) - .attr("y1", (d) => loc[1]) - .attr("x2", this.xAcc) - .attr("y2", this.yAcc) - .attr("stroke", "#161E2D") - .style("stroke-width", 2.5) - .style("pointer-events", "none") - .style("opacity", 0.45) - .lower(); - - // track last hovered so can change k easily - this.lastDataHovered = d; - } - - addDecisionLine(gEl) { - const genBoundary = () => { - let step = 1; - let data = []; - for (let x = 1.5; x <= 11.5; x += step) { - data.push({ - x: ((x - 1.5) / 10) * this.WIDTH, - y: this.HEIGHT - (equation(x) / 10) * this.HEIGHT, - }); - } - return data; - }; - const boundaryLine = line() - .x((d) => d.x) - .y((d) => d.y) - .curve(curveCatmullRom.alpha(0.95)); - - gEl - .append("g") - .attr("class", "line-g") - .selectAll(".boundary") - .data([genBoundary()]) - .enter() - .append("path") - .attr("d", boundaryLine) - .attr("class", "boundary") - .attr("fill", "none") - .attr("stroke", "#161E2D") - .attr("stroke-width", 4) - .attr("opacity", 0.5) - .style("stroke-dasharray", "5, 5") - .style("pointer-events", "none"); - - gEl.select("path.boundary").lower(); - } - - drawKnnRight() { - const that = this; - // redraw, so remove existing stuff - const removeClasses = [".mesh-g", ".hex-cell"]; - removeClasses.map((d) => { - this.predictG.selectAll(d).remove(); - }); - - // init voronoi - const delan = Delaunay.from( - this.hexCenters, - (d) => d.x, - (d) => d.y - ); - - // draw hex grid - this.predictG - .append("g") - .attr("class", "mesh-g") - .selectAll("path") - .data(this.hexCenters) - .enter() - .append("path") - .attr("class", "hex-cell") - .attr("d", (d) => `M${d.x},${d.y}${this.hexbin.hexagon()}`) - .attr("stroke-width", 0) - .attr("stroke", "#161E2D"); - - // add the overlay on top of everything to take the mouse events - this.predictG - .append("rect") - .attr("class", "overlay") - .attr("width", this.WIDTH) - .attr("height", this.HEIGHT) - .style("opacity", 0) - .on("mousemove", hexHover) - .on("mouseleave", this.hexLeave); - // lll - function hexHover(event) { - // get the current mouse position - const [mx, my] = pointer(event); - // use the new diagram.find() function to find the Voronoi mouse position - const closestPoint = delan.find(mx, my); - // highlight the point if we found one - const closestHex = that.hexCenters[closestPoint]; - // get closest data point - const closestData = { x: mx, y: my }; - - that.highlight(closestHex, that.k); - - // highlight current cell - const cell = selectAll(".hex-cell").filter( - (d) => d.x === closestHex.x && d.y === closestHex.y - ); - - cell.attr("stroke", "black").attr("stroke-width", 3).raise(); - - // unhover other ones - selectAll(".hex-cell") - .filter((d) => d.x !== closestHex.x || d.y !== closestHex.y) - .attr("stroke-width", 0) - .style("stroke", "#161E2D"); - - select(".highlight-circle") - .style("display", "") - .attr("cx", closestHex.x) - .attr("cy", closestHex.y) - .attr("stroke", "black"); - } - - // draw line - this.addDecisionLine(this.predictG); - this.updateHexGrid(this.k); - } - - updateHexGrid(k) { - const that = this; - - function getKnnClassScores(data, point, k) { - // get nearest neighbors to cell - const nn = getKNN(data, point, k); - // filter data to class scores of nn - const nScores = nn.map((d) => d[2]); - const sum0 = nScores.filter((v) => v === 0).length / k; - const sum1 = nScores.filter((v) => v === 1).length / k; - const cellVal = sum1 - sum0; - return that.cellColor(cellVal); - } - - selectAll(".hex-cell").each(function (d, i) { - const pred = getKnnClassScores(that.trainData, d[0], k); - select(this).attr("fill", pred).attr("stroke", pred); - }); - } - - addSlider() { - const that = this; - // SLIDER - const el = select(`#${this.sliderContainer}`); - - // draw text - el.append("h4").attr("id", `k-text`).html(`K: ${this.k}`); - - // draw slider - el.append("input") - .attr("class", "metric-slider") - .attr("type", "range") - .attr("value", `${this.k}`) - .attr("min", 1) - .attr("max", numPoints) - .attr("step", 2) - .attr("maxlength", "100"); - - selectAll(`.metric-slider`).on("input", function (d) { - // only update text - let val = select(this).property("value"); - // set price to object state - const currValue = Number(val); - this.k = currValue; - select("#k-text").html(`K: ${this.k}`); - // update left chart - that.highlight(that.lastDataHovered, this.k); - // update right chart - that.updateHexGrid(this.k); - }); - } - - // initialize svg and params for chart - initChartSvg(stage) { - const svg = select(`#${stage}`) - .append("svg") - .attr("id", `${stage}-svg`) - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM) - .style("border", "1px solid rgba(0, 0, 0, 0.3)"); - - const g = svg - .append("g") - .attr("id", `${stage}-g`) - .attr("transform", `translate(${this.MARGIN.LEFT}, ${this.MARGIN.TOP})`); - - return g; - } -} - -// Nearest Neighbor Helper Functions -function getNNN(data, loc, k) { - // 1. get the distances between the data (train_data) - // and the current point (loc). - let dists = []; - for (let i = 0; i < data.length; i++) { - dists.push([i, dist(data[i], loc)]); - } - // 2. sort those points to the test data in ascending order - dists.sort((a, b) => a[1] - b[1]); - // 3. Keep the indices of the top k train_data points - let nnn = []; - for (let i = 0; i < k; i++) { - nnn.push(dists[i][0]); - } - return nnn; -} - -function getKNN(data, point, k) { - // 1. get the distances between the data & current point. - let dists = []; - for (let i = 0; i < data.length; i++) { - // now index 2 is the actual data - dists.push([i, dist(data[i], point), data[i]]); - } - // 2. sort those points to the test data in ascending order - dists.sort((a, b) => a[1] - b[1]); - - // 3. Keep the indices of the top n-nearest neighbors - let knn = []; - for (let i = 0; i < k; i++) { - knn.push(dists[i][2]); // to return index, return 0 - } - return knn; -} diff --git a/bias-variance/js/Loess.js b/bias-variance/js/Loess.js deleted file mode 100644 index 634f3a00..00000000 --- a/bias-variance/js/Loess.js +++ /dev/null @@ -1,435 +0,0 @@ -import { select, selectAll } from "d3-selection"; -import { axisBottom, axisLeft } from "d3-axis"; -import { scaleBand, scaleLinear, scaleOrdinal } from "d3-scale"; -import { line } from "d3-shape"; -import { transition } from "d3-transition"; -import { easeBounceInOut, easeExpInOut } from "d3-ease"; -import { regressionLoess } from "d3-regression"; -import { meanSquaredError } from "./meanSquaredError"; -import { randomNormal } from "d3-random"; - -export class Loess { - constructor(opts) { - const that = this; - // selections - this.loessContainer = opts.loessContainer; - this.barContainer = opts.barContainer; - this.sliderContainer = opts.sliderContainer; - - // init bandwidth hyperparameter - this.bandwidth = 0.42; - - // set circle size - this.circleSize = 4.5; - - // set constant SVG parameters - this.MARGIN = { TOP: 30, BOTTOM: 20, LEFT: 35, RIGHT: 10 }; - const containerSize = select(`#${this.loessContainer}`) - .node() - .getBoundingClientRect(); - this.WIDTH = containerSize.width * 0.8; - this.HEIGHT = - window.innerWidth <= 600 - ? containerSize.height * 0.6 - : containerSize.height * 0.7; - - // add slider to DOM - this.addSlider(); - - // draw charts - this.drawLoess(); - this.drawBars(); - - this.generateData(); - - // draw initial line - this.drawLoessLine(this.bandwidth); - } - - genData(train) { - // generate dataset - const n_samples = 30; - - // helper func for rounding (keep in scope) - const roundToTwo = (num) => +(Math.round(num + "e+2") + "e-2"); - - // equation to model - const f = (x) => Math.sin(2.5 * Math.PI * x) / 1.5; - - // want array of objects - let x = Array.from({ length: n_samples }, (x, i) => roundToTwo(i * 0.029)); - x = x.map((val) => val + Math.abs(randomNormal(0, 0.05)())).sort(); - // ensure x-values cover full span of plot - if (train === true) { - x[0] = 0.01; - x[x.length - 1] = 0.99; - } - // define y vals - const y = x.map((val) => f(val) + randomNormal(0, 0.25)()); - - // create dataset of x, y pairs - const data = x.map((val, i) => { - return { x: val, y: y[i] }; - }); - - return data; - } - - generateData() { - this.loessG.selectAll("circle.loess-train").remove(); - - this.loessDataTrain = this.genData(true); - - // draw train circles - this.loessG - .selectAll("circle.loess-train") - .data(this.loessDataTrain) - .enter() - .append("circle") - .attr("class", "loess-train") - .attr("r", this.circleSize) - .attr("cx", (d) => this.xScale(+d.x)) - .attr("cy", (d) => this.yScale(+d.y)); - - this.drawLoessLine(this.bandwidth); - } - - drawLoess() { - // set up svg - this.loessG = this.initChartSvg(this.loessContainer); - - this.xScale = scaleLinear().domain([0, 1]).range([0, this.WIDTH]); - - // define y-scale - this.yScale = scaleLinear().domain([-1.4, 1.4]).range([this.HEIGHT, 0]); - - // define axes - const xAxisGeneratorLoess = axisBottom(this.xScale) - .ticks(4) - .tickSizeOuter(0); - const yAxisGeneratorLoess = axisLeft(this.yScale) - .tickSizeOuter(0) - .tickValues([0]); - - // instantiate line generator - this.lineGenerator = line() - .x((d) => this.xScale(d[0])) - .y((d) => this.yScale(d[1])); - - // add x-axis - this.xAxis = this.loessG - .append("g") - .attr("class", "axis") - .attr("id", "loess-x-axis") - .call(xAxisGeneratorLoess) - .attr("transform", `translate(0, ${this.HEIGHT})`); - - // add y-axis - this.yAxis = this.loessG - .append("g") - .attr("class", "axis") - .attr("id", "loess-y-axis") - .call(yAxisGeneratorLoess); - - // make tick longer for y-axis - select("#loess-y-axis").select("line").attr("x2", this.WIDTH); - select("#loess-y-axis").select("line").lower(); - this.loessDataTest = this.genData(false); - - this.loessG - .selectAll("circle.loess-test") - .data(this.loessDataTest) - .enter() - .append("circle") - .attr("class", "loess-test") - .attr("r", this.circleSize) - .attr("cx", (d) => this.xScale(+d.x)) - .attr("cy", (d) => this.yScale(+d.y)); - - // add legend - this.addLegend(); - } - - drawLoessLine(bandwidth) { - // remove text warning if exits - select("#bar-warning").remove(); - - // remove lines - selectAll("#loess-line").remove(); - selectAll("circle.loess-t").remove(); - - // set-up loess - this.regressionGenerator = regressionLoess() - .x((d) => d.x) - .y((d) => d.y) - .bandwidth(bandwidth); - - // get data from loess model - const modelData = this.regressionGenerator(this.loessDataTrain); - - // draw loess line - this.loesPath = this.loessG - .append("path") - .attr("id", "loess-line") - .datum(modelData) - .attr("d", this.lineGenerator); - - // ensure line under circles - select("path#loess-line").lower(); - - // calculate MSE - const yTrain = this.loessDataTrain.map((d) => d.y); - const yTest = this.loessDataTest.map((d) => d.y); - const yPred = modelData.map((d) => d[1]); - const trainMse = meanSquaredError(yTrain, yPred); - const testMse = meanSquaredError(yTest, yPred); - const mseData = [ - { name: "Train", error: trainMse }, - { name: "Test", error: testMse }, - ]; - this.plotBars(mseData); - // add warning if unfit data - if (trainMse > 0.4) { - this.addBarWarning(); - } - } - - addBarWarning() { - let ttext = this.barG - .append("text") - .attr("id", "bar-warning") - .style("font-size", ".9rem") - .attr("x", 11.5) - .attr("y", 0); - ttext - .append("tspan") - .text("Uh-oh! Sometimes our model doesn't fit the data."); - ttext.append("tspan").text("Try again!").attr("x", 11.5).attr("dy", 15); - } - - drawBars() { - // set up svg - this.barG = this.initChartSvg(this.barContainer); - - // define scales - // x scale - this.xScaleError = scaleLinear().domain([0, 0.25]).range([0, this.WIDTH]); - // y scale - this.yScaleError = scaleBand() - .domain(["Train", "Test"]) - .range([0, this.HEIGHT]) - .padding(0.1); - this.loessBarColor = scaleOrdinal() - .domain(["Test", "Train"]) - .range(["#e57873", "#94CAE0"]); - - // define axes - this.xAxisGeneratorError = axisBottom(this.xScaleError) - .tickSizeOuter(0) - .ticks(4); - - this.yAxisGeneratorError = axisLeft(this.yScaleError) - .tickSizeOuter(0) - .ticks(4); - // add x-axis - this.xAxisError = this.barG - .append("g") - .attr("class", "axis") - .attr("id", "bar-x-axis") - .call(this.xAxisGeneratorError) - .attr("transform", `translate(0, ${this.HEIGHT})`); - - // add y-axis - this.yAxis = this.barG - .append("g") - .attr("class", "axis") - .attr("id", "bar-y-axis") - .call(this.yAxisGeneratorError); - - // instantiate line generator - this.lineGenerator = line() - .x((d) => this.xScale(d[0])) - .y((d) => this.yScale(d[1])); - } - - resizeCharts() { - this.MARGIN = { TOP: 30, BOTTOM: 20, LEFT: 35, RIGHT: 10 }; - const containerSize = select(`#${this.loessContainer}`) - .node() - .getBoundingClientRect(); - this.WIDTH = containerSize.width * 0.8; - // this.HEIGHT = containerSize.height * 0.7; - select("#fit-container-loess-svg") - .transition() - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - // .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM) - .select("#fit-container-loess-g"); - // .attr("transform", `translate(${this.MARGIN.LEFT}, ${this.MARGIN.TOP})`); - - select("#predict-container-loess-svg") - .transition() - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - // .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM) - .select("#predict-container-loess-g"); - // .attr("transform", `translate(${this.MARGIN.LEFT}, ${this.MARGIN.TOP})`); - - // update scales - // errir scales - this.xScaleError.range([0, this.WIDTH]); - this.yScaleError.range([0, this.HEIGHT]); - // loess scales - this.xScale.range([0, this.WIDTH]); - this.yScale.range([this.HEIGHT, 0]); - - // update axes - // error - this.xAxisError - .transition() - .call(axisBottom(this.xScaleError).tickSizeOuter(0).ticks(4)); - // loess - this.xAxis - .transition() - .call(axisBottom(this.xScale).ticks(4).tickSizeOuter(0)); - - // resize bars - this.rects - .transition() - .duration(1000) - .attr("width", (d) => this.xScaleError(+d.error)); - - // redraw circles - this.loessG - .selectAll("circle.loess-train") - .transition() - .ease(easeBounceInOut) - .attr("cx", (d) => this.xScale(+d.x)) - .attr("cy", (d) => this.yScale(+d.y)); - - // redraw circles - this.loessG - .selectAll("circle.loess-test") - .transition() - .ease(easeExpInOut) - .attr("cx", (d) => this.xScale(+d.x)) - .attr("cy", (d) => this.yScale(+d.y)); - - this.drawLoessLine(this.bandwidth); - } - - plotBars(data) { - // need to transition axes - let t = transition().delay(500).duration(600); - - // join - this.rects = this.barG.selectAll(`rect.loessBar`).data(data, (d) => d.name); - - // update - this.rects - .transition() - .duration(65) - .attr("x", (d) => this.xScaleError(0)) - .attr("y", (d) => this.yScaleError(d.name)) - .attr("width", (d) => this.xScaleError(+d.error)) - .attr("height", this.yScaleError.bandwidth()); - - // enter - this.rects - .enter() - .append("rect") - .attr("class", "loessBar") - .attr("x", (d) => this.xScaleError(0)) - .attr("y", (d) => this.yScaleError(d.name)) - .attr("height", this.yScaleError.bandwidth()) - .attr("width", (d) => this.xScaleError(+d.error)) - .attr("fill", (d) => this.loessBarColor(d.name)); - } - - addLegend() { - const that = this; - const legendData = ["Train Data", "Test Data"]; - - const nodeWidth = (d) => d.getBBox().width; - - const legend = this.loessG - .append("g") - .attr("class", "loess-legend") - .attr("transform", "translate(0,0)"); - - const lg = legend.selectAll("g").data(legendData).enter().append("g"); - - const legendCircle = lg - .append("circle") - .attr("r", 4.5) - .attr("id", (d, i) => (i % 2 == 0 ? "loess-train" : "loess-test")) - .attr("cy", 5) - .attr("cx", 1) - .attr("stroke-width", 0); - lg.append("text") - .style("font-size", "14px") - .attr("x", 11.5) - .attr("y", 10) - .text((d) => d); - - let offset = 0; - - lg.attr("transform", function (d) { - let x = offset; - offset += nodeWidth(this) + 10; - return `translate(${x}, ${0})`; - }); - - legend.attr("transform", function () { - return `translate(${ - (that.WIDTH - nodeWidth(this)) / 2 - }, ${-that.MARGIN.TOP / 2})`; - }); - } - - addSlider() { - const that = this; - // SLIDER - const el = select(`#${this.sliderContainer}`); - - // draw text - el.append("h4") - .attr("id", `loess-text`) - .html(`Smoothness: ${this.bandwidth.toFixed(2)}`); - - // draw slider - el.append("input") - .attr("id", `loess-slider`) - .attr("class", "metric-slider") - .attr("type", "range") - .attr("min", 0.01) - .attr("max", 1) - .attr("step", 0.01) - .attr("value", 0.42); - - selectAll(`#loess-slider`).on("input", function (d) { - // only update text - let val = select(this).property("value"); - // set price to object state - const currValue = Number(val); - that.bandwidth = currValue; - select("#loess-text").html(`Smoothness: ${that.bandwidth.toFixed(2)}`); - // update left chart - that.drawLoessLine(that.bandwidth); - }); - } - - // initialize svg and params for chart - initChartSvg(stage) { - const svg = select(`#${stage}`) - .append("svg") - .attr("id", `${stage}-svg`) - .attr("width", this.WIDTH + this.MARGIN.LEFT + this.MARGIN.RIGHT) - .attr("height", this.HEIGHT + this.MARGIN.TOP + this.MARGIN.BOTTOM); - - const g = svg - .append("g") - .attr("id", `${stage}-g`) - .attr("transform", `translate(${this.MARGIN.LEFT}, ${this.MARGIN.TOP})`); - - return g; - } -} diff --git a/bias-variance/js/Scatter.js b/bias-variance/js/Scatter.js deleted file mode 100644 index be585391..00000000 --- a/bias-variance/js/Scatter.js +++ /dev/null @@ -1,577 +0,0 @@ -import { regressionLinear } from "d3-regression"; -import { meanSquaredError } from "./meanSquaredError"; -import { trainData, testData, modelsData } from "./dataFiles"; -import { testColorDot, trainColorDot } from "./constants"; -import { select, selectAll } from "d3-selection"; -import { axisBottom, axisLeft } from "d3-axis"; -import { scaleLinear } from "d3-scale"; -import { line, curveCatmullRom } from "d3-shape"; -import { transition } from "d3-transition"; -import { extent } from "d3-array"; -import { easeBack } from "d3-ease"; - -export class Scatter { - constructor(opts) { - // load in arguments from config object - this.element = opts.element; - this.trainData = trainData; - this.testData = testData; - - this.margin = - window.innerWidth <= 700 - ? { left: 20, right: 1, top: 15, bottom: 30 } - : { left: 40, right: 9, top: 15, bottom: 40 }; - this.chartDims = select("#scroll-figure").node().getBoundingClientRect(); - - // this.innerWidth = - // window.innerWidth <= 700 - // ? window.innerWidth / 3.1 - // : window.innerWidth / 3; - this.innerWidth = this.chartDims.width * 0.85; - this.innerHeight = window.innerHeight * 0.36; - this.radius = window.innerWidth < 700 ? 6 : 10; - - // scale for bottom charts (so don't remake) - this.realizationScale = scaleLinear() - .domain(extent(modelsData, (d) => d.x)) - .range([0, this.innerWidth]); - this.realizationLine = line() - .x((d) => this.realizationScale(d.x)) - .y((d) => this.yScale(d[column])) - .curve(curveCatmullRom.alpha(0.5)); - - // grab errorBar chart so we can line up transitions - this.errorBar = opts.errorBar; - - this.linearRegression = regressionLinear() - .x((d) => d.x) - .y((d) => d.y) - .domain([0, 16]); - - // tracker for loops - this.loopDraw = true; - - this.drawBaseChart(); - } - - loop() { - const that = this; - // loop through async func calls - const args = arguments; - this.loopDraw = true; - if (args.length <= 0) return; - (function chain(i) { - // break when scroll to different stage - if (that.loopDraw !== true) return; - if (i >= args.length || typeof args[i] !== "function") return; - window.setTimeout(function () { - args[i](); - chain(i + 1); - }, 110); - })(0); - } - - drawBaseChart() { - // define x-scale - this.xScale = scaleLinear() - .domain([-0.05, 1.15]) - .range([0, this.innerWidth]); - - // define y-scale - this.yScale = scaleLinear() - .domain([-1.4, 1.4]) - .range([this.innerHeight, 0]); - - // create line generator - this.lineGen = line() - .x((d) => this.xScale(d.x)) - .y((d) => this.yScale(d.y)) - .curve(curveCatmullRom.alpha(0.5)); - - this.lineGenUF = line() - .x((d) => this.xScale(d.x)) - .y((d) => this.yScale(d.y_pred_uf)) - .curve(curveCatmullRom.alpha(0.5)); - - this.lineGenOF = line() - .x((d) => this.xScale(d.x)) - .y((d) => this.yScale(d.y_pred_of)) - .curve(curveCatmullRom.alpha(0.5)); - - // define axes - this.xAxisGenerator = axisBottom(this.xScale).tickSizeOuter(0).ticks(4); - this.yAxisGenerator = axisLeft(this.yScale).tickSizeOuter(0).ticks(4); - - // create svg - this.scatterSvg = select(this.element) - .append("svg") - .attr("id", "scatter-svg") - .attr("width", this.innerWidth + this.margin.left + this.margin.right) - .attr("height", this.innerHeight + this.margin.top + this.margin.bottom); - - // create scatter plot - this.scatterPlot = this.scatterSvg - .append("g") - .attr("transform", `translate(${this.margin.left}, ${this.margin.top})`); - - // add x-axis - this.xAxis = this.scatterPlot - .append("g") - .attr("class", "axis") - .attr("id", "scatter-x-axis") - .call(this.xAxisGenerator) - .attr("transform", `translate(0, ${this.innerHeight})`); - - // add y-axis - this.yAxis = this.scatterPlot - .append("g") - .attr("class", "axis") - .call(this.yAxisGenerator); - - // add circles - this.scatterPlot - .selectAll("circle.train") - .data(this.trainData) - .enter() - .append("circle") - .attr("class", "train") - .attr("r", this.radius) - .attr("cx", (d) => this.xScale(d.x)) - .attr("cy", (d) => this.yScale(d.y)); - - // add labels to axes - this.xLabel = this.scatterSvg - .append("text") - .attr("id", "scatter-x-axis-label") - .attr("x", this.innerWidth / 2 + this.margin.left + this.margin.right) - .attr("y", this.innerHeight + this.margin.top + this.margin.bottom) - .text("X"); - this.yLabel = this.scatterSvg - .append("text") - .attr("id", "scatter-y-axis-label") - .attr("x", 0) - .attr("y", this.innerHeight / 2 + this.margin.top + 4) - .text("Y") - .style("fill", "black"); - } - - drawLineUnderfit() { - // Create a update selection: bind to the new data - this.regressionLine = this.scatterPlot - .selectAll("#regression-line-1") - .data([this.trainData], (d) => d.x); - // Updata the line - this.regressionLine - .enter() - .append("path") - .attr("id", "regression-line-1") - .merge(this.regressionLine) - .transition() - .ease(easeBack) - .duration(1500) - .attr("d", this.lineGenUF); - - // ensure line under circles - selectAll("path#regression-line-1").lower(); - } - - drawLineOverfit() { - this.regressionLine = this.scatterPlot - .selectAll("#regression-line-1") - .data([this.trainData], (d) => d.x); - // Updata the line - this.regressionLine - .enter() - .append("path") - .attr("id", "regression-line-1") - .merge(this.regressionLine) - .transition() - .ease(easeBack) - .duration(1500) - .attr("d", this.lineGenOF); - } - - drawTrainErrorUnderfit() { - const linRegData = this.linearRegression(this.trainData); - const a = linRegData.a; - const b = linRegData.b; - - // draw error bars - let errorData = this.trainData.map((pair) => { - let errorBnds = { - x: pair.x, // keep x at same point - y1: a * pair.x + b, - y2: pair.y, - }; - return errorBnds; - }); - // draw vertical line between pairs of points - let errorLines = this.scatterPlot - .selectAll("line.errorLine") - .data(errorData); - - let errorLinePath = errorLines - .enter() - .merge(errorLines) - .append("line") - .attr("class", "errorLine") - .attr("x1", (d) => this.xScale(d.x)) - .attr("x2", (d) => this.xScale(d.x)) - .attr("y1", (d) => this.yScale(d.y2)) - .attr("y2", (d) => this.yScale(d.y2)); - selectAll("line.errorLine").lower(); - - errorLinePath - .transition() - .duration(1000) - .attr("y1", (d) => this.yScale(d.y1)); - - const trainY = this.trainData.map((d) => d.y); - const trainPred = this.trainData.map((d) => a * d.x + b); - - const trainMSE = meanSquaredError(trainY, trainPred); - this.underfitError = [{ name: "Train", error: trainMSE }]; - this.errorBar.plotBars(this.underfitError); - - // update title of bar - this.errorBar.addTitle("Mean-Squared Error"); - } - - drawTestErrorOverfit() { - const linRegData = this.linearRegression(this.trainData); - const a = linRegData.a; - const b = linRegData.b; - let testErrorData = this.testData.map((pair) => { - let errorBnds = { - x: pair.x, // keep x at same point - y1: a * pair.x + b, - y2: pair.y, - }; - return errorBnds; - }); - - let testErrorLines = this.scatterPlot - .selectAll("line.testErrorLine") - .data(testErrorData); - - testErrorLines - .enter() - .merge(testErrorLines) - .append("line") - .attr("class", "testErrorLine") - .attr("x1", (d) => this.xScale(d.x)) - .attr("x2", (d) => this.xScale(d.x)) - .attr("y1", (d) => this.yScale(d.y2)) - .attr("y2", (d) => this.yScale(d.y2)) - .transition() - .duration(1000) - .attr("y1", (d) => this.yScale(d.y1)); - - selectAll("line.testErrorLine").lower(); - - this.scatterPlot - .selectAll("circle.test") - .data(this.testData) - .enter() - .append("circle") - .attr("class", "test") - .attr("r", 0) - .attr("cx", (d) => this.xScale(d.x)) - .attr("cy", (d) => this.yScale(d.y)) - .transition() - .attr("r", this.radius * 2) - .transition() - .attr("r", this.radius); - - // calculate MSE for barcharts - const testY = this.testData.map((d) => d.y); - const testPred = this.testData.map((d) => a * d.x + b); - const testMSE = meanSquaredError(testY, testPred); - - this.underfitError.push({ name: "Test", error: testMSE }); - this.errorBar.plotBars(this.underfitError); - } - - drawBarsTestOverfit() { - const that = this; - // func to find interpolated point along complex path - // using binary search - function findY(path, x) { - path = path.node(); - const pathLength = path.getTotalLength(); - let start = 0; - let end = pathLength; - let target = (start + end) / 2; - - while (target >= start && target <= pathLength) { - let pos = path.getPointAtLength(target); - - // use threshold bc float point precision - if (Math.abs(pos.x - x) < 0.1) { - return that.yScale.invert(pos.y); - } else if (pos.x > x) { - end = target; - } else { - start = target; - } - target = (start + end) / 2; - } - } - // define error data - let errorData = this.testData.map((pair) => { - let errorBnds = { - x: pair.x, // keep x at same point - y1: findY(that.regressionLine, that.xScale(pair.x)), - y1: findY(that.regressionLine, that.xScale(pair.x)), - y2: pair.y, - }; - return errorBnds; - }); - - // draw error lines - let errorLines = this.scatterPlot - .selectAll("line.errorLineComplex") - .data(errorData); - - let errorLinePath = errorLines - .enter() - .merge(errorLines) - .append("line") - .attr("class", "errorLineComplex") - .attr("x1", (d) => this.xScale(d.x)) - .attr("x2", (d) => this.xScale(d.x)) - .attr("y1", (d) => this.yScale(d.y2)) - .attr("y2", (d) => this.yScale(d.y2)); - - selectAll("line.errorLineComplex").lower(); - - errorLinePath - .transition() - .duration(1000) - .attr("y1", (d) => this.yScale(d.y1)); - - // calculate MSE for barcharts - const testY = this.testData.map((d) => d.y); - const testPred = this.testData.map((d) => - findY(that.regressionLine, that.xScale(d.x)) - ); - const trainY = this.trainData.map((d) => d.y); - const trainPred = this.trainData.map((d) => - findY(that.regressionLine, that.xScale(d.x)) - ); - - const trainMSE = meanSquaredError(trainY, trainPred); - const testMSE = meanSquaredError(testY, testPred); - - // draw bars overfit - this.overfitError.push({ name: "Test", error: testMSE }); - this.errorBar.plotBars(this.overfitError); - } - - drawBarsTrainOverfit() { - this.overfitError = [{ name: "Train", error: 0.001 }]; - this.errorBar.plotBars(this.overfitError); - } - - plotTestBar() { - const testError = this.overfitError.filter((d) => d.name === "Test"); - const maxError = 5; - testError.push({ name: "Test", error: maxError * 1.01 }); - testError.push({ name: "Test", error: maxError * 1.02 }); - this.errorBar.plotDecompositionBar(testError); - this.errorBar.addTitle("Test Error Decomposition"); - } - - modelRealization(opa, column) { - this.realizationLine.y((d) => this.yScale(d[column])); - // Create a update selection: bind to the new data - const modelRealization = this.scatterPlot - .selectAll(`#${column}`) - .data([modelsData]); - - // Updata the line - modelRealization - .enter() - .append("path") - .attr("id", `${column}`) - .attr("class", `model-realization`) - .attr("d", this.realizationLine) - .style("opacity", opa) - .transition() - .style("opacity", opa); - selectAll("path.model-realization").lower(); - } - - drawUnderfitRealizations() { - this.addTitle("Simple Model Realizations"); - // draw associated errors - const that = this; - this.underfitOpa = 0.3; - this.goodFitOpa = 0; - this.overfitOpa = 0; - this.drawLoop = false; - selectAll("[id^='uf-preds']").remove(); - selectAll("[id^='of-preds']").remove(); - selectAll("[id^='good-preds']").remove(); - this.errorBar.drawErrorBase(); - window.setTimeout(function () { - that.drawLoop = true; - }, 120); - this.loop( - () => this.modelRealization(this.underfitOpa, "uf-preds-0"), - () => this.modelRealization(this.underfitOpa, "uf-preds-1"), - () => this.modelRealization(this.underfitOpa, "uf-preds-2"), - () => this.modelRealization(this.underfitOpa, "uf-preds-3"), - () => this.modelRealization(this.underfitOpa, "uf-preds-4"), - () => this.modelRealization(this.underfitOpa, "uf-preds-5"), - () => this.modelRealization(this.underfitOpa, "uf-preds-6"), - () => this.modelRealization(this.underfitOpa, "uf-preds-7"), - () => this.modelRealization(this.underfitOpa, "uf-preds-8"), - () => this.modelRealization(this.underfitOpa, "uf-preds-9"), - () => this.modelRealization(this.underfitOpa, "uf-preds-10"), - () => this.modelRealization(this.underfitOpa, "uf-preds-11"), - () => this.modelRealization(this.underfitOpa, "uf-preds-12") - ); - } - - drawOverfitRealizations() { - const that = this; - this.drawLoop = false; - this.overfitOpa = 0.3; - this.underfitOpa = 0; - this.goodFitOpa = 0; - selectAll("[id^='uf-preds']").remove(); - selectAll("[id^='of-preds']").remove(); - selectAll("[id^='good-preds']").remove(); - this.addTitle("Complex Model Realizations"); - window.setTimeout(function () { - that.drawLoop = true; - }, 120); - this.loop( - () => this.modelRealization(this.overfitOpa, "of-preds-0"), - () => this.modelRealization(this.overfitOpa, "of-preds-1"), - () => this.modelRealization(this.overfitOpa, "of-preds-2"), - () => this.modelRealization(this.overfitOpa, "of-preds-3"), - () => this.modelRealization(this.overfitOpa, "of-preds-4"), - () => this.modelRealization(this.overfitOpa, "of-preds-5"), - () => this.modelRealization(this.overfitOpa, "of-preds-6"), - () => this.modelRealization(this.overfitOpa, "of-preds-7"), - () => this.modelRealization(this.overfitOpa, "of-preds-8"), - () => this.modelRealization(this.overfitOpa, "of-preds-9"), - () => this.modelRealization(this.overfitOpa, "of-preds-10"), - () => this.modelRealization(this.overfitOpa, "of-preds-11"), - () => this.modelRealization(this.overfitOpa, "of-preds-12") - ); - } - - drawGoodRealizations() { - const that = this; - this.drawLoop = false; - this.overfitOpa = 0; - this.underfitOpa = 0; - this.goodFitOpa = 0.3; - selectAll("[id^='uf-preds']").remove(); - selectAll("[id^='of-preds']").remove(); - selectAll("[id^='good-preds']").remove(); - this.addTitle("Balanced Model Realizations"); - window.setTimeout(function () { - that.drawLoop = true; - }, 120); - this.loop( - () => this.modelRealization(this.goodFitOpa, "good-preds-0"), - () => this.modelRealization(this.goodFitOpa, "good-preds-1"), - () => this.modelRealization(this.goodFitOpa, "good-preds-2"), - () => this.modelRealization(this.goodFitOpa, "good-preds-3"), - () => this.modelRealization(this.goodFitOpa, "good-preds-4"), - () => this.modelRealization(this.goodFitOpa, "good-preds-5"), - () => this.modelRealization(this.goodFitOpa, "good-preds-6"), - () => this.modelRealization(this.goodFitOpa, "good-preds-7"), - () => this.modelRealization(this.goodFitOpa, "good-preds-8"), - () => this.modelRealization(this.goodFitOpa, "good-preds-9"), - () => this.modelRealization(this.goodFitOpa, "good-preds-10"), - () => this.modelRealization(this.goodFitOpa, "good-preds-11"), - () => this.modelRealization(this.goodFitOpa, "good-preds-12") - ); - } - - addLegend() { - const that = this; - const legendData = ["Train Data", "Test Data"]; - - const nodeWidth = (d) => d.getBBox().width; - - const legend = this.scatterPlot - .append("g") - .attr("class", "legend") - .attr("transform", "translate(0,0)"); - - const lg = legend.selectAll("g").data(legendData).enter().append("g"); - - const legendCircle = lg - .append("circle") - .attr("class", "scatter-legend-circle") - .attr("r", 6) - .attr("fill", (d, i) => (i % 2 == 0 ? trainColorDot : testColorDot)) - .attr("cy", -5) - .attr("cx", 1) - .attr("stroke-width", 0); - lg.append("text") - .attr("class", "scatter-legend-text") - .attr("x", 11.5) - .attr("y", 0) - .text((d) => d); - - let offset = 0; - - lg.attr("transform", function (d) { - let x = offset; - let offsetValue = window.innerWidth <= 600 ? 3 : 10; - offset += nodeWidth(this) + offsetValue; - return `translate(${x}, ${0})`; - }); - - legend.attr("transform", function () { - return `translate(${(that.innerWidth - nodeWidth(this)) / 2}, 0)`; - }); - } - - removeRealizationLines() { - // remove predrawn lines - this.overfitOpa = 0; - this.underfitOpa = 0; - this.goodFitOpa = 0.3; - selectAll("[id^='uf-preds']").remove(); - selectAll("[id^='of-preds']").remove(); - selectAll("[id^='good-preds']").remove(); - } - - transitionUp5() { - this.removeRealizationLines(); - - // remove lines & symbols from error line charts - selectAll(".error-line-bottom").remove(); - select("rect.stacked-error").remove(); - select("#error-text").remove(); - selectAll(".error-symbol").remove(); - - // update title - this.errorBar.addTitle("Test Error Decomposition"); - - this.errorBar.reverseDecomposition(); - } - - addTitle(title) { - // remove title if shown - select(".scatter-title").remove(); - - // add title - this.scatterSvg - .append("g") - .append("text") - .attr("class", "scatter-title") - .attr("x", this.innerWidth / 2 + this.margin.left) - .attr("y", 20) - .text(title) - .attr("text-anchor", "middle"); - } -} diff --git a/bias-variance/js/annotations.js b/bias-variance/js/annotations.js deleted file mode 100644 index 3b56e3d4..00000000 --- a/bias-variance/js/annotations.js +++ /dev/null @@ -1,105 +0,0 @@ -import { annotate } from "rough-notation"; -const col2 = "rgba(255, 241, 118, .5)"; // "rgba(0,128,128, .48)"; -const biasColor = "skyblue"; -const varianceColor = "rgba(0,128,128, .8)"; -const n1 = document.querySelector("#bias"); -const n2 = document.querySelector("#variance"); -const n3 = document.querySelector("#overfit-highlight"); -const n4 = document.querySelector("#underfit-highlight"); -const n5 = document.querySelector("#underfit-def"); -const n6 = document.querySelector("#overfit-def"); -const n7 = document.querySelector("#bias-def"); -const n8 = document.querySelector("#variance-def"); -const n9 = document.querySelector("#balance-def"); -const n10 = document.querySelector("#decomp-highlight"); -const n11 = document.querySelector("#conclusion"); - -const a1 = annotate(n1, { - type: "highlight", - color: biasColor, - strokeWidth: 1, -}); -const a2 = annotate(n2, { - type: "highlight", - color: varianceColor, - strokeWidth: 0.2, -}); -const a3 = annotate(n3, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 1, - iterations: 1, -}); -const a4 = annotate(n4, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, -}); -const a5 = annotate(n5, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); -const a6 = annotate(n6, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); -const a7 = annotate(n7, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); -const a8 = annotate(n8, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); -const a9 = annotate(n9, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); -const a10 = annotate(n10, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); -const a11 = annotate(n11, { - type: "highlight", - padding: [0, 0], - color: col2, - strokeWidth: 2, - iterations: 1, - multiline: true, -}); - -setTimeout(() => { - a1.show(); -}, 750); -setTimeout(() => { - a2.show(); -}, 750); - -export { a3, a4, a5, a6, a7, a8, a9, a10, a11 }; diff --git a/bias-variance/js/constants.js b/bias-variance/js/constants.js deleted file mode 100644 index b9e0773b..00000000 --- a/bias-variance/js/constants.js +++ /dev/null @@ -1,7 +0,0 @@ -const trainColorDot = "#94CAE0"; -const testColorDot = "#E57873"; -const testColorBar = testColorDot; -const trainColorBar = trainColorDot; -const lineColor = "green"; - -export { testColorBar, trainColorBar, trainColorDot, testColorDot, lineColor }; diff --git a/bias-variance/js/dataFiles.js b/bias-variance/js/dataFiles.js deleted file mode 100644 index d1015f81..00000000 --- a/bias-variance/js/dataFiles.js +++ /dev/null @@ -1,777 +0,0 @@ -export const trainData = [ - { x: 0.005, y: 0.564, y_pred_uf: 0.424, y_pred_of: 0.564 }, - { x: 0.114, y: 0.576, y_pred_uf: 0.341, y_pred_of: 0.576 }, - { x: 0.218, y: 0.634, y_pred_uf: 0.261, y_pred_of: 0.634 }, - { x: 0.323, y: 0.569, y_pred_uf: 0.181, y_pred_of: 0.569 }, - { x: 0.448, y: -0.593, y_pred_uf: 0.087, y_pred_of: -0.593 }, - { x: 0.528, y: -0.414, y_pred_uf: 0.025, y_pred_of: -0.414 }, - { x: 0.63, y: -0.849, y_pred_uf: -0.053, y_pred_of: -0.849 }, - { x: 0.749, y: -0.106, y_pred_uf: -0.143, y_pred_of: -0.106 }, - { x: 0.839, y: -0.191, y_pred_uf: -0.212, y_pred_of: -0.191 }, - { x: 1.05, y: 0.35, y_pred_uf: -0.373, y_pred_of: 0.35 }, -]; -export const testData = [ - { x: 0.028, y: 0.24 }, - { x: 0.161, y: 0.27 }, - { x: 0.25, y: 1.098 }, - { x: 0.367, y: -0.032 }, - { x: 0.441, y: -0.273 }, - { x: 0.503, y: -1.252 }, - { x: 0.603, y: -0.546 }, - { x: 0.759, y: -0.98 }, - { x: 0.844, y: 0.227 }, - { x: 0.957, y: 1.154 }, -]; - -export const ddTrainTest = [ - { x: 1, y_train: 14, y_test: 23 }, - { x: 3, y_train: 6, y_test: 17 }, - { x: 4, y_train: 4, y_test: 15.5 }, - { x: 5, y_train: 3, y_test: 15 }, - { x: 6, y_train: 2.5, y_test: 15 }, - { x: 7, y_train: 2, y_test: 16 }, - { x: 8, y_train: 1.8, y_test: 18.5 }, - { x: 9, y_train: 1.8, y_test: 24 }, - { x: 11, y_train: 1.6, y_test: 6 }, - { x: 13, y_train: 1.4, y_test: 3 }, - { x: 15, y_train: 1.1, y_test: 2 }, - { x: 17, y_train: 1.1, y_test: 1.82 }, - { x: 19, y_train: 1.1, y_test: 1.82 }, -]; - -export const ddUShape = [ - { x: 1, y_u: 23 }, - { x: 3, y_u: 17 }, - { x: 4, y_u: 15.5 }, - { x: 5, y_u: 15 }, - { x: 6, y_u: 15 }, - { x: 7, y_u: 16 }, - { x: 8, y_u: 18.5 }, - { x: 9, y_u: 25.5 }, - { x: 10, y_u: 35 }, -]; - -export const errorData = [ - { - x: 0.028, - error_uf: 0.108, - error_of: 7.631, - error_good: 0.171, - bias_uf: 0.013, - bias_of: 0.315, - bias_good: 0.019, - var_uf: 0.022, - var_of: 7.318, - var_good: 0.107, - noise_uf: 0.057, - noise_of: 0.057, - noise_good: 0.057, - noise_final: 0.03, - error_final: 1.09, - bias_final: 0.95, - var_final: 0.11, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.161, - error_uf: 0.242, - error_of: 0.655, - error_good: 0.085, - bias_uf: 0.19, - bias_of: 0.016, - bias_good: 0.007, - var_uf: 0.014, - var_of: 0.593, - var_good: 0.027, - noise_uf: 0.049, - noise_of: 0.049, - noise_good: 0.049, - noise_final: 0.03, - error_final: 0.81, - bias_final: 0.65, - var_final: 0.13, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.25, - error_uf: 0.239, - error_of: 0.154, - error_good: 0.081, - bias_uf: 0.208, - bias_of: 0.0, - bias_good: 0.002, - var_uf: 0.01, - var_of: 0.092, - var_good: 0.021, - noise_uf: 0.061, - noise_of: 0.061, - noise_good: 0.061, - noise_final: 0.03, - error_final: 0.68, - bias_final: 0.5, - var_final: 0.15, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.367, - error_uf: 0.064, - error_of: 0.102, - error_good: 0.075, - bias_uf: 0.004, - bias_of: 0.0, - bias_good: 0.007, - var_uf: 0.007, - var_of: 0.046, - var_good: 0.016, - noise_uf: 0.056, - noise_of: 0.056, - noise_good: 0.056, - noise_final: 0.03, - error_final: 0.58, - bias_final: 0.35, - var_final: 0.2, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.441, - error_uf: 0.167, - error_of: 0.113, - error_good: 0.084, - bias_uf: 0.083, - bias_of: 0.001, - bias_good: 0.001, - var_uf: 0.007, - var_of: 0.052, - var_good: 0.023, - noise_uf: 0.061, - noise_of: 0.061, - noise_good: 0.061, - noise_final: 0.03, - error_final: 0.55, - bias_final: 0.3, - var_final: 0.24, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.503, - error_uf: 0.391, - error_of: 0.133, - error_good: 0.106, - bias_uf: 0.282, - bias_of: 0.0, - bias_good: 0.001, - var_uf: 0.007, - var_of: 0.057, - var_good: 0.027, - noise_uf: 0.076, - noise_of: 0.076, - noise_good: 0.076, - noise_final: 0.03, - error_final: 0.54, - bias_final: 0.24, - var_final: 0.28, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.603, - error_uf: 0.562, - error_of: 0.128, - error_good: 0.092, - bias_uf: 0.451, - bias_of: 0.004, - bias_good: 0.004, - var_uf: 0.009, - var_of: 0.065, - var_good: 0.028, - noise_uf: 0.054, - noise_of: 0.054, - noise_good: 0.054, - noise_final: 0.03, - error_final: 0.546, - bias_final: 0.2, - var_final: 0.34, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.759, - error_uf: 0.137, - error_of: 0.175, - error_good: 0.107, - bias_uf: 0.022, - bias_of: 0.015, - bias_good: 0.007, - var_uf: 0.017, - var_of: 0.103, - var_good: 0.038, - noise_uf: 0.069, - noise_of: 0.069, - noise_good: 0.069, - noise_final: 0.03, - error_final: 0.68, - bias_final: 0.15, - var_final: 0.5, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.844, - error_uf: 0.177, - error_of: 0.262, - error_good: 0.092, - bias_uf: 0.108, - bias_of: 0.0, - bias_good: 0.014, - var_uf: 0.022, - var_of: 0.221, - var_good: 0.035, - noise_uf: 0.04, - noise_of: 0.04, - noise_good: 0.04, - noise_final: 0.03, - error_final: 0.81, - bias_final: 0.13, - var_final: 0.65, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, - { - x: 0.957, - error_uf: 0.713, - error_of: 6.517, - error_good: 0.216, - bias_uf: 0.609, - bias_of: 0.213, - bias_good: 0.012, - var_uf: 0.032, - var_of: 6.239, - var_good: 0.155, - noise_uf: 0.051, - noise_of: 0.051, - noise_good: 0.051, - noise_final: 0.03, - error_final: 1.09, - bias_final: 0.11, - var_final: 0.95, - noise_point: 0.03, - error_point: 0.55, - bias_point: 0.29, - var_point: 0.27, - x_point: 0.48, - }, -]; -export const modelsData = [ - { - x: 0.013, - "uf-preds-0": 0.418, - "uf-preds-1": 0.614, - "uf-preds-2": 0.28, - "uf-preds-3": 0.435, - "uf-preds-4": 0.303, - "uf-preds-5": 0.183, - "uf-preds-6": 0.248, - "uf-preds-7": -0.007, - "uf-preds-8": 0.168, - "uf-preds-9": 0.109, - "uf-preds-10": 0.273, - "uf-preds-11": 0.296, - "uf-preds-12": 0.414, - "uf-preds-13": 0.059, - "uf-preds-14": 0.571, - "of-preds-0": 0.534, - "of-preds-1": -4.423, - "of-preds-2": -0.019, - "of-preds-3": -2.004, - "of-preds-4": -1.84, - "of-preds-5": 10.122, - "of-preds-6": -8.253, - "of-preds-7": 0.826, - "of-preds-8": -7.947, - "of-preds-9": -0.013, - "of-preds-10": -0.86, - "of-preds-11": -0.565, - "of-preds-12": -2.681, - "of-preds-13": 0.323, - "of-preds-14": -0.943, - "good-preds-0": 0.523, - "good-preds-1": 0.02, - "good-preds-2": -0.127, - "good-preds-3": -0.042, - "good-preds-4": -0.116, - "good-preds-5": -0.417, - "good-preds-6": -1.14, - "good-preds-7": 0.254, - "good-preds-8": -1.017, - "good-preds-9": 0.015, - "good-preds-10": 0.133, - "good-preds-11": 0.058, - "good-preds-12": 0.614, - "good-preds-13": 0.082, - "good-preds-14": 0.07, - }, - { - x: 0.125, - "uf-preds-0": 0.333, - "uf-preds-1": 0.474, - "uf-preds-2": 0.196, - "uf-preds-3": 0.339, - "uf-preds-4": 0.242, - "uf-preds-5": 0.168, - "uf-preds-6": 0.223, - "uf-preds-7": -0.018, - "uf-preds-8": 0.134, - "uf-preds-9": 0.056, - "uf-preds-10": 0.218, - "uf-preds-11": 0.266, - "uf-preds-12": 0.335, - "uf-preds-13": 0.063, - "uf-preds-14": 0.45, - "of-preds-0": 0.582, - "of-preds-1": 2.216, - "of-preds-2": 0.653, - "of-preds-3": 0.959, - "of-preds-4": 0.518, - "of-preds-5": -1.566, - "of-preds-6": 0.825, - "of-preds-7": -0.044, - "of-preds-8": 0.755, - "of-preds-9": 0.475, - "of-preds-10": -0.56, - "of-preds-11": 0.788, - "of-preds-12": 0.782, - "of-preds-13": 0.047, - "of-preds-14": 2.575, - "good-preds-0": 0.823, - "good-preds-1": 0.904, - "good-preds-2": 0.813, - "good-preds-3": 0.61, - "good-preds-4": 0.63, - "good-preds-5": 0.727, - "good-preds-6": 0.6, - "good-preds-7": 0.534, - "good-preds-8": 0.598, - "good-preds-9": 0.63, - "good-preds-10": 0.77, - "good-preds-11": 0.751, - "good-preds-12": 0.583, - "good-preds-13": 0.169, - "good-preds-14": 0.78, - }, - { - x: 0.201, - "uf-preds-0": 0.275, - "uf-preds-1": 0.379, - "uf-preds-2": 0.139, - "uf-preds-3": 0.274, - "uf-preds-4": 0.201, - "uf-preds-5": 0.157, - "uf-preds-6": 0.205, - "uf-preds-7": -0.026, - "uf-preds-8": 0.111, - "uf-preds-9": 0.02, - "uf-preds-10": 0.181, - "uf-preds-11": 0.246, - "uf-preds-12": 0.281, - "uf-preds-13": 0.067, - "uf-preds-14": 0.367, - "of-preds-0": 0.696, - "of-preds-1": 0.805, - "of-preds-2": 0.771, - "of-preds-3": 0.603, - "of-preds-4": 0.393, - "of-preds-5": 0.377, - "of-preds-6": 0.877, - "of-preds-7": 0.808, - "of-preds-8": 0.472, - "of-preds-9": 0.358, - "of-preds-10": 0.767, - "of-preds-11": 0.389, - "of-preds-12": 0.286, - "of-preds-13": 0.06, - "of-preds-14": 0.64, - "good-preds-0": 0.678, - "good-preds-1": 0.864, - "good-preds-2": 0.847, - "good-preds-3": 0.675, - "good-preds-4": 0.666, - "good-preds-5": 0.733, - "good-preds-6": 0.814, - "good-preds-7": 0.411, - "good-preds-8": 0.78, - "good-preds-9": 0.558, - "good-preds-10": 0.76, - "good-preds-11": 0.752, - "good-preds-12": 0.467, - "good-preds-13": 0.205, - "good-preds-14": 0.823, - }, - { - x: 0.346, - "uf-preds-0": 0.164, - "uf-preds-1": 0.199, - "uf-preds-2": 0.03, - "uf-preds-3": 0.149, - "uf-preds-4": 0.122, - "uf-preds-5": 0.136, - "uf-preds-6": 0.172, - "uf-preds-7": -0.04, - "uf-preds-8": 0.068, - "uf-preds-9": -0.048, - "uf-preds-10": 0.111, - "uf-preds-11": 0.207, - "uf-preds-12": 0.178, - "uf-preds-13": 0.073, - "uf-preds-14": 0.21, - "of-preds-0": 0.314, - "of-preds-1": 0.473, - "of-preds-2": 0.321, - "of-preds-3": 0.135, - "of-preds-4": 0.409, - "of-preds-5": 0.023, - "of-preds-6": 0.144, - "of-preds-7": -0.289, - "of-preds-8": 0.201, - "of-preds-9": 0.372, - "of-preds-10": 0.276, - "of-preds-11": 0.341, - "of-preds-12": 0.184, - "of-preds-13": 0.292, - "of-preds-14": 0.7, - "good-preds-0": 0.085, - "good-preds-1": 0.184, - "good-preds-2": 0.232, - "good-preds-3": 0.308, - "good-preds-4": 0.207, - "good-preds-5": 0.055, - "good-preds-6": 0.21, - "good-preds-7": -0.148, - "good-preds-8": 0.155, - "good-preds-9": -0.061, - "good-preds-10": 0.216, - "good-preds-11": 0.266, - "good-preds-12": 0.103, - "good-preds-13": 0.154, - "good-preds-14": 0.393, - }, - { - x: 0.42, - "uf-preds-0": 0.107, - "uf-preds-1": 0.106, - "uf-preds-2": -0.025, - "uf-preds-3": 0.086, - "uf-preds-4": 0.082, - "uf-preds-5": 0.126, - "uf-preds-6": 0.156, - "uf-preds-7": -0.047, - "uf-preds-8": 0.046, - "uf-preds-9": -0.083, - "uf-preds-10": 0.075, - "uf-preds-11": 0.187, - "uf-preds-12": 0.125, - "uf-preds-13": 0.076, - "uf-preds-14": 0.129, - "of-preds-0": -0.148, - "of-preds-1": -0.011, - "of-preds-2": -0.093, - "of-preds-3": -0.603, - "of-preds-4": -0.205, - "of-preds-5": -0.197, - "of-preds-6": -0.394, - "of-preds-7": -0.656, - "of-preds-8": -0.198, - "of-preds-9": -0.267, - "of-preds-10": -0.031, - "of-preds-11": -0.132, - "of-preds-12": 0.075, - "of-preds-13": 0.002, - "of-preds-14": 0.333, - "good-preds-0": -0.22, - "good-preds-1": -0.197, - "good-preds-2": -0.183, - "good-preds-3": 0.011, - "good-preds-4": -0.106, - "good-preds-5": -0.305, - "good-preds-6": -0.218, - "good-preds-7": -0.458, - "good-preds-8": -0.286, - "good-preds-9": -0.408, - "good-preds-10": -0.151, - "good-preds-11": -0.034, - "good-preds-12": -0.116, - "good-preds-13": 0.065, - "good-preds-14": 0.081, - }, - { - x: 0.511, - "uf-preds-0": 0.038, - "uf-preds-1": -0.007, - "uf-preds-2": -0.093, - "uf-preds-3": 0.008, - "uf-preds-4": 0.033, - "uf-preds-5": 0.113, - "uf-preds-6": 0.135, - "uf-preds-7": -0.056, - "uf-preds-8": 0.018, - "uf-preds-9": -0.126, - "uf-preds-10": 0.031, - "uf-preds-11": 0.163, - "uf-preds-12": 0.061, - "uf-preds-13": 0.08, - "uf-preds-14": 0.031, - "of-preds-0": -0.653, - "of-preds-1": -0.732, - "of-preds-2": -0.557, - "of-preds-3": -0.506, - "of-preds-4": -0.727, - "of-preds-5": -0.321, - "of-preds-6": -0.481, - "of-preds-7": -0.712, - "of-preds-8": -0.573, - "of-preds-9": -0.865, - "of-preds-10": -0.437, - "of-preds-11": -0.533, - "of-preds-12": -0.318, - "of-preds-13": -0.228, - "of-preds-14": -0.371, - "good-preds-0": -0.489, - "good-preds-1": -0.521, - "good-preds-2": -0.604, - "good-preds-3": -0.336, - "good-preds-4": -0.427, - "good-preds-5": -0.552, - "good-preds-6": -0.592, - "good-preds-7": -0.747, - "good-preds-8": -0.685, - "good-preds-9": -0.711, - "good-preds-10": -0.539, - "good-preds-11": -0.309, - "good-preds-12": -0.361, - "good-preds-13": -0.08, - "good-preds-14": -0.262, - }, - { - x: 0.619, - "uf-preds-0": -0.044, - "uf-preds-1": -0.142, - "uf-preds-2": -0.174, - "uf-preds-3": -0.084, - "uf-preds-4": -0.026, - "uf-preds-5": 0.097, - "uf-preds-6": 0.111, - "uf-preds-7": -0.067, - "uf-preds-8": -0.014, - "uf-preds-9": -0.176, - "uf-preds-10": -0.022, - "uf-preds-11": 0.134, - "uf-preds-12": -0.015, - "uf-preds-13": 0.084, - "uf-preds-14": -0.086, - "of-preds-0": -0.73, - "of-preds-1": -0.749, - "of-preds-2": -0.938, - "of-preds-3": 0.402, - "of-preds-4": -0.518, - "of-preds-5": -0.68, - "of-preds-6": 0.002, - "of-preds-7": -0.795, - "of-preds-8": -0.681, - "of-preds-9": -0.799, - "of-preds-10": -0.984, - "of-preds-11": -0.272, - "of-preds-12": -0.686, - "of-preds-13": -0.159, - "of-preds-14": -0.524, - "good-preds-0": -0.591, - "good-preds-1": -0.612, - "good-preds-2": -0.83, - "good-preds-3": -0.598, - "good-preds-4": -0.607, - "good-preds-5": -0.47, - "good-preds-6": -0.659, - "good-preds-7": -0.856, - "good-preds-8": -0.784, - "good-preds-9": -0.789, - "good-preds-10": -0.775, - "good-preds-11": -0.404, - "good-preds-12": -0.54, - "good-preds-13": -0.239, - "good-preds-14": -0.519, - }, - { - x: 0.729, - "uf-preds-0": -0.128, - "uf-preds-1": -0.279, - "uf-preds-2": -0.256, - "uf-preds-3": -0.179, - "uf-preds-4": -0.085, - "uf-preds-5": 0.082, - "uf-preds-6": 0.086, - "uf-preds-7": -0.078, - "uf-preds-8": -0.047, - "uf-preds-9": -0.228, - "uf-preds-10": -0.075, - "uf-preds-11": 0.105, - "uf-preds-12": -0.093, - "uf-preds-13": 0.089, - "uf-preds-14": -0.205, - "of-preds-0": -0.241, - "of-preds-1": -0.311, - "of-preds-2": -0.797, - "of-preds-3": -0.392, - "of-preds-4": -0.525, - "of-preds-5": 0.058, - "of-preds-6": -0.442, - "of-preds-7": -0.676, - "of-preds-8": -0.775, - "of-preds-9": -0.516, - "of-preds-10": -0.603, - "of-preds-11": -0.062, - "of-preds-12": -0.495, - "of-preds-13": -0.297, - "of-preds-14": -0.56, - "good-preds-0": -0.44, - "good-preds-1": -0.409, - "good-preds-2": -0.655, - "good-preds-3": -0.576, - "good-preds-4": -0.506, - "good-preds-5": -0.037, - "good-preds-6": -0.294, - "good-preds-7": -0.611, - "good-preds-8": -0.42, - "good-preds-9": -0.508, - "good-preds-10": -0.643, - "good-preds-11": -0.194, - "good-preds-12": -0.48, - "good-preds-13": -0.268, - "good-preds-14": -0.559, - }, - { - x: 0.801, - "uf-preds-0": -0.183, - "uf-preds-1": -0.368, - "uf-preds-2": -0.31, - "uf-preds-3": -0.24, - "uf-preds-4": -0.124, - "uf-preds-5": 0.072, - "uf-preds-6": 0.069, - "uf-preds-7": -0.085, - "uf-preds-8": -0.069, - "uf-preds-9": -0.261, - "uf-preds-10": -0.11, - "uf-preds-11": 0.085, - "uf-preds-12": -0.144, - "uf-preds-13": 0.092, - "uf-preds-14": -0.283, - "of-preds-0": -0.064, - "of-preds-1": -0.169, - "of-preds-2": -0.056, - "of-preds-3": -0.571, - "of-preds-4": -0.709, - "of-preds-5": 0.91, - "of-preds-6": -0.81, - "of-preds-7": -0.195, - "of-preds-8": -0.162, - "of-preds-9": -0.105, - "of-preds-10": 0.045, - "of-preds-11": -0.085, - "of-preds-12": -0.081, - "of-preds-13": -0.269, - "of-preds-14": -0.55, - "good-preds-0": -0.235, - "good-preds-1": -0.207, - "good-preds-2": -0.316, - "good-preds-3": -0.355, - "good-preds-4": -0.292, - "good-preds-5": 0.306, - "good-preds-6": 0.088, - "good-preds-7": -0.23, - "good-preds-8": 0.007, - "good-preds-9": -0.155, - "good-preds-10": -0.315, - "good-preds-11": 0.089, - "good-preds-12": -0.241, - "good-preds-13": -0.134, - "good-preds-14": -0.47, - }, - { - x: 0.94, - "uf-preds-0": -0.289, - "uf-preds-1": -0.542, - "uf-preds-2": -0.414, - "uf-preds-3": -0.359, - "uf-preds-4": -0.2, - "uf-preds-5": 0.052, - "uf-preds-6": 0.038, - "uf-preds-7": -0.098, - "uf-preds-8": -0.11, - "uf-preds-9": -0.327, - "uf-preds-10": -0.177, - "uf-preds-11": 0.048, - "uf-preds-12": -0.243, - "uf-preds-13": 0.098, - "uf-preds-14": -0.435, - "of-preds-0": -1.21, - "of-preds-1": -0.515, - "of-preds-2": 0.257, - "of-preds-3": -2.259, - "of-preds-4": 0.985, - "of-preds-5": -0.114, - "of-preds-6": 1.803, - "of-preds-7": 0.984, - "of-preds-8": -1.93, - "of-preds-9": -1.027, - "of-preds-10": 0.553, - "of-preds-11": 0.753, - "of-preds-12": 0.763, - "of-preds-13": 0.295, - "of-preds-14": 3.604, - "good-preds-0": 0.22, - "good-preds-1": -0.089, - "good-preds-2": 0.743, - "good-preds-3": 0.631, - "good-preds-4": 0.351, - "good-preds-5": 0.514, - "good-preds-6": 0.664, - "good-preds-7": 1.031, - "good-preds-8": 0.881, - "good-preds-9": 0.735, - "good-preds-10": 0.903, - "good-preds-11": 0.811, - "good-preds-12": 0.883, - "good-preds-13": 0.735, - "good-preds-14": -0.142, - }, -]; diff --git a/bias-variance/js/index.js b/bias-variance/js/index.js deleted file mode 100644 index 83dfcb53..00000000 --- a/bias-variance/js/index.js +++ /dev/null @@ -1,325 +0,0 @@ -import "intersection-observer"; -import scrollama from "scrollama"; -import { ErrorBar } from "./ErrorBar"; -import { a3, a4, a5, a6, a7, a8, a9, a10, a11 } from "./annotations"; -import { Scatter } from "./Scatter"; -import { KNN } from "./KNN"; -import { Loess } from "./Loess"; -import { DoubleDescent } from "./DoubleDescent"; -import { select, selectAll } from "d3-selection"; - -// chart selections -const chart1Container = "#scroll-viz"; -const chart2Container = "#svg2"; - -// get current width to track mobile -const screenWidth = window.innerWidth; -const mobileBreak = 600; - -// using d3 for convenience -let main = select("main"); -let scrolly = main.select("#scrolly"); -let figure = scrolly.select("figure"); -let article = scrolly.select("article"); -let step = article.selectAll(".step"); -let scatterChart = select(chart1Container); -let errorChart = select(chart1Container); - -const stepHPercentage = 1; -const offsetTriggerFromTop = screenWidth > mobileBreak ? 0.5 : 0.5; - -// ensure refresh goes to top of page -window.onbeforeunload = () => window.scrollTo(0, 0); - -// initialize the scrollama -let scroller = scrollama(); - -const errorBar = new ErrorBar(chart2Container); -const reglin = new Scatter({ - element: chart1Container, - errorBar: errorBar, -}); - -// KNN Stuff -const KnnModel = new KNN({ - fitContainer: "fit-container", - predictContainer: "predict-container", - sliderContainer: "slider-container", - k: 3, -}); - -// button handler for knn -select("#button-knn").on("click", function () { - KnnModel.refreshChartWithNewData(); -}); - -// LOESS Stuff -const LOESSModel = new Loess({ - loessContainer: "fit-container-loess", - barContainer: "predict-container-loess", - sliderContainer: "slider-container-loess", - k: 3, -}); - -select("#button-loess").on("click", function () { - LOESSModel.generateData(); -}); - -// draw double descent chart -const ddModel = new DoubleDescent({ - ddContainer: "dd-container", -}); - -// generic window resize listener event -function handleResize() { - // 1. update height of step elements - // important: height of each step - let stepHPercentageResponsive = - window.innerWidth <= 900 ? 1.8 : stepHPercentage; - let stepH = Math.floor(window.innerHeight * stepHPercentageResponsive); - step.style("height", stepH + "px"); - - let figureHeight = window.innerHeight / 1.1; - let figureWidth = window.innerWidth / 1.1; - let responsiveWidth = window.innerWidth / 2.4; - let responsiveHeight = window.innerHeight * 0.3; - let figureMarginTop = (window.innerHeight - figureHeight) / 2; - - figure - .style("height", `${figureHeight}px`) - .style("width", `${figureWidth}px`) - .style("top", `${figureMarginTop}px`); - - scatterChart - .attr("height", `${responsiveHeight}px`) - .attr("width", `${responsiveWidth}px`); - - errorChart - .attr("height", `${responsiveHeight}px`) - .attr("width", `${responsiveWidth}px`); - - // update knnSize - // KnnModel.resizeCharts(); - LOESSModel.resizeCharts(); - - // 3. tell scrollama to update new element dimensions - scroller.resize(); -} - -// remove lines drawn from simulations all in one go -const removeModelRealizations = () => { - selectAll("[id^='uf-preds']").remove(); - selectAll("[id^='of-preds']").remove(); - selectAll("[id^='good-preds']").remove(); -}; - -// define event dict for each step in scrolly -const stepEvents = { - down: { - 0: () => { - reglin.drawLineUnderfit(); - }, - 1: () => { - reglin.drawTrainErrorUnderfit(); - select("#errorBarSvg") - .selectAll(".axes") - .transition() - .delay(600) - .attr("visibility", "visible"); - }, - 2: () => { - reglin.addLegend(); - reglin.drawTestErrorOverfit(); - setTimeout(() => { - a4.show(); - a5.show(); - }, 750); - }, - 3: () => { - // remove the underfit error lines - const removeClasses = [".errorLine", ".testErrorLine"]; - removeClasses.map((d) => { - selectAll(d).remove(); - }); - // draw the overfit line - reglin.drawLineOverfit(); - // update bar - reglin.drawBarsTrainOverfit(); - }, - 4: () => { - reglin.drawBarsTestOverfit(); - setTimeout(() => { - a3.show(); - a6.show(); - }, 750); - }, - 5: () => { - // remove error lines from prev step - removeModelRealizations(); - selectAll(".errorLineComplex").remove(); - reglin.plotTestBar(); - // remove circles (make sure to add back in) - selectAll("circle.test").transition().attr("r", 0); - select("#regression-line-1").attr("visibility", "hidden"); - selectAll(".legend").attr("visibility", "hidden"); - setTimeout(() => { - a10.show(); - }, 750); - }, - 6: () => { - removeModelRealizations(); - reglin.errorBar.addTitle(""); - reglin.errorBar.positionErrorBarsAsLabels(); - reglin.drawUnderfitRealizations(); - reglin.errorBar.plotErrorLines("x", "uf"); - setTimeout(() => { - a7.show(); - }, 750); - }, - 7: () => { - removeModelRealizations(); - reglin.drawOverfitRealizations(); - reglin.errorBar.plotErrorLines("x", "of"); - setTimeout(() => { - a8.show(); - }, 750); - }, - 8: () => { - removeModelRealizations(); - reglin.drawGoodRealizations(); - reglin.errorBar.plotErrorLines("x", "good"); - setTimeout(() => { - a9.show(); - }, 750); - }, - 9: () => { - removeModelRealizations(); - reglin.errorBar.repositionSvgNew(); - reglin.errorBar.plotErrorLines("x_point", "point"); - reglin.errorBar.plotComplexCircleOne(); - }, - 10: () => { - removeModelRealizations(); - reglin.errorBar.plotErrorLines("x", "final"); - reglin.errorBar.plotComplexCircleAll(); - setTimeout(() => { - a11.show(); - }, 750); - }, - }, - - up: { - 0: () => { - removeModelRealizations(); - selectAll("rect.errorBar").transition().attr("width", 0); - selectAll(".errorBar").transition().delay(500).remove(); - selectAll(".errorLine").remove(); - select("#errorBarSvg") - .selectAll(".axes") - .transition() - .delay(600) - .attr("visibility", "hidden"); - // remove barchart title - select("#errorBarTitle").remove(); - selectAll(".legend").remove(); - }, - 1: () => { - removeModelRealizations(); - reglin.drawTrainErrorUnderfit(); - selectAll(".testErrorLine").remove(); - selectAll("circle.test").transition().attr("r", 0).transition().remove(); - selectAll(".legend").remove(); - }, - 2: () => { - removeModelRealizations(); - selectAll(".testErrorLine").remove(); - selectAll(".errorLineComplex").remove(); - reglin.drawLineUnderfit(); - reglin.addLegend(); - reglin.drawTestErrorOverfit(); - }, - 3: () => { - removeModelRealizations(); - selectAll(".errorLineComplex").remove(); - // draw the overfit line - reglin.drawLineOverfit(); - // update bar - reglin.drawBarsTrainOverfit(); - }, - 4: () => { - removeModelRealizations(); - selectAll("rect.stacked").remove(); - selectAll(".decomp-text").remove(); - selectAll("circle.test").transition().attr("r", 10); - select("#regression-line-1").attr("visibility", "visible"); - selectAll(".legend").attr("visibility", "visible"); - reglin.errorBar.plotReverseDecompositionBar(); - reglin.errorBar.addTitle("Mean-Squared Error"); - reglin.drawBarsTestOverfit(); - }, - 5: () => { - // reset title - reglin.addTitle(""); - // redraw model lines - removeModelRealizations(); - reglin.transitionUp5(); - }, - 6: () => { - removeModelRealizations(); - reglin.drawUnderfitRealizations(); - reglin.errorBar.plotErrorLines("x", "uf"); - }, - 7: () => { - removeModelRealizations(); - reglin.drawOverfitRealizations(); - reglin.errorBar.plotErrorLines("x", "of"); - }, - 8: () => { - reglin.errorBar.upPositionSvg(); - reglin.errorBar.plotErrorLines("x", "good"); - selectAll("[class^='complex-']").transition().attr("r", 0).remove(); - }, - 9: () => { - selectAll("[class^='complex-']").transition().attr("r", 0).remove(); - reglin.errorBar.plotErrorLines("x_point", "point"); - reglin.errorBar.plotComplexCircleOne(); - }, - 10: () => {}, // placeholder to stop error throw - }, -}; - -// scrollama event handlers -function handleStepEnter(response) { - // update chart based on step - stepEvents[response.direction][response.index](); -} - -function setupStickyfill() { - selectAll(".sticky").each(function () { - Stickyfill.add(this); - }); -} - -function init() { - setupStickyfill(); - - // 1. force a resize on load to ensure proper dimensions are sent to scrollama - handleResize(); - - // 2. setup the scroller passing options - // this will also initialize trigger observations - // 3. bind scrollama event handlers (this can be chained like below) - scroller - .setup({ - step: "#scrolly article .step", - offset: offsetTriggerFromTop, - // debug: true, - }) - .onStepEnter(handleStepEnter); - - // setup resize event - window.addEventListener("resize", handleResize); -} - -// kick things off -init(); diff --git a/bias-variance/js/katexCalls.js b/bias-variance/js/katexCalls.js deleted file mode 100644 index 63368ac7..00000000 --- a/bias-variance/js/katexCalls.js +++ /dev/null @@ -1,44 +0,0 @@ -import katex from "katex"; - -katex.render( - `\\mathrm{Error}(x) = \\Big( \\mathbf{E}\\big[\\widehat{f}(x)\\big] - f(x) \\Big)^2 + \\mathbf{E}\\Big[\\Big(\\widehat{f}(x) - \\mathbf{E}\\big[\\widehat{f}(x)\\big]\\Big)^2\\Big] + \\mathrm{Noise} `, - document.querySelector(".katex-bv-equation"), - { - throwOnError: false, - } -); - -katex.render( - `\\mathrm{Bias}^2(x) = \\Big( \\mathbf{E}\\big[\\widehat{f}(x)\\big] - f(x) \\Big)^2`, - document.querySelector(".katex-bias"), - { - throwOnError: false, - } -); - -katex.render( - `\\mathrm{Variance}(x) = \\mathbf{E}\\Big[\\Big(\\widehat{f}(x) - \\mathbf{E}\\big[\\widehat{f}(x)\\big]\\Big)^2\\Big]`, - document.querySelector(".katex-var"), - { - throwOnError: false, - } -); - -katex.render( - `\\mathrm{Error} = \\mathrm{Bias}^2 + \\mathrm{Variance} + \\mathrm{Noise}`, - document.querySelector(".katex-bv-text"), - { - throwOnError: false, - } -); - -katex.render(`\\thinspace \\mathrm{Noise}`, document.querySelector(".katex-noise"), { - throwOnError: false, -}); -katex.render( - `\\thinspace E[\\widehat{f}(x)]`, - document.querySelector(".katex-bias-inline"), - { - throwOnError: false, - } -); diff --git a/bias-variance/js/meanSquaredError.js b/bias-variance/js/meanSquaredError.js deleted file mode 100644 index b1919c04..00000000 --- a/bias-variance/js/meanSquaredError.js +++ /dev/null @@ -1,15 +0,0 @@ -// calculate MSE for two equal-dimension arrays - -export const meanSquaredError = (actual, pred) => { - // helper funcs - const sqr = a => a * a; - const add = (a, b) => a + b; - const difference = (a, b) => a.map((x, i) => x - b[i]); - - // calculate MSE - const squaredError = difference(actual, pred).map(sqr); - const sumSquaredError = squaredError.reduce(add, 0); - const mse = sumSquaredError / actual.length; - - return mse -} \ No newline at end of file diff --git a/bias-variance/package-lock.json b/bias-variance/package-lock.json deleted file mode 100644 index 24589b66..00000000 --- a/bias-variance/package-lock.json +++ /dev/null @@ -1,7545 +0,0 @@ -{ - "name": "bias_variance", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", - "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true - }, - "@babel/core": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", - "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.15.8", - "@babel/generator": "^7.15.8", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.8", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.8", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", - "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", - "dev": true, - "requires": { - "@babel/types": "^7.15.6", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", - "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", - "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", - "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", - "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.6" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", - "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-wrap-function": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", - "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, - "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", - "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", - "dev": true - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", - "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", - "@babel/plugin-proposal-optional-chaining": "^7.14.5" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", - "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.15.4", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", - "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", - "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", - "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", - "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", - "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", - "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", - "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", - "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", - "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", - "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", - "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-create-class-features-plugin": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", - "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", - "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", - "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-remap-async-to-generator": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", - "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", - "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", - "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", - "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-flow": "^7.14.5" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", - "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", - "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-identifier": "^7.14.9", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", - "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", - "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", - "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", - "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.9" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", - "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", - "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", - "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", - "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", - "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", - "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", - "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/preset-env": { - "version": "7.15.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", - "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-validator-option": "^7.14.5", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", - "@babel/plugin-proposal-async-generator-functions": "^7.15.8", - "@babel/plugin-proposal-class-properties": "^7.14.5", - "@babel/plugin-proposal-class-static-block": "^7.15.4", - "@babel/plugin-proposal-dynamic-import": "^7.14.5", - "@babel/plugin-proposal-export-namespace-from": "^7.14.5", - "@babel/plugin-proposal-json-strings": "^7.14.5", - "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", - "@babel/plugin-proposal-numeric-separator": "^7.14.5", - "@babel/plugin-proposal-object-rest-spread": "^7.15.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", - "@babel/plugin-proposal-optional-chaining": "^7.14.5", - "@babel/plugin-proposal-private-methods": "^7.14.5", - "@babel/plugin-proposal-private-property-in-object": "^7.15.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.14.5", - "@babel/plugin-transform-async-to-generator": "^7.14.5", - "@babel/plugin-transform-block-scoped-functions": "^7.14.5", - "@babel/plugin-transform-block-scoping": "^7.15.3", - "@babel/plugin-transform-classes": "^7.15.4", - "@babel/plugin-transform-computed-properties": "^7.14.5", - "@babel/plugin-transform-destructuring": "^7.14.7", - "@babel/plugin-transform-dotall-regex": "^7.14.5", - "@babel/plugin-transform-duplicate-keys": "^7.14.5", - "@babel/plugin-transform-exponentiation-operator": "^7.14.5", - "@babel/plugin-transform-for-of": "^7.15.4", - "@babel/plugin-transform-function-name": "^7.14.5", - "@babel/plugin-transform-literals": "^7.14.5", - "@babel/plugin-transform-member-expression-literals": "^7.14.5", - "@babel/plugin-transform-modules-amd": "^7.14.5", - "@babel/plugin-transform-modules-commonjs": "^7.15.4", - "@babel/plugin-transform-modules-systemjs": "^7.15.4", - "@babel/plugin-transform-modules-umd": "^7.14.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", - "@babel/plugin-transform-new-target": "^7.14.5", - "@babel/plugin-transform-object-super": "^7.14.5", - "@babel/plugin-transform-parameters": "^7.15.4", - "@babel/plugin-transform-property-literals": "^7.14.5", - "@babel/plugin-transform-regenerator": "^7.14.5", - "@babel/plugin-transform-reserved-words": "^7.14.5", - "@babel/plugin-transform-shorthand-properties": "^7.14.5", - "@babel/plugin-transform-spread": "^7.15.8", - "@babel/plugin-transform-sticky-regex": "^7.14.5", - "@babel/plugin-transform-template-literals": "^7.14.5", - "@babel/plugin-transform-typeof-symbol": "^7.14.5", - "@babel/plugin-transform-unicode-escapes": "^7.14.5", - "@babel/plugin-transform-unicode-regex": "^7.14.5", - "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.15.6", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.5", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "core-js-compat": "^3.16.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - } - }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@parcel/fs": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", - "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.2" - } - }, - "@parcel/logger": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", - "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", - "dev": true, - "requires": { - "@parcel/workers": "^1.11.0", - "chalk": "^2.1.0", - "grapheme-breaker": "^0.3.2", - "ora": "^2.1.0", - "strip-ansi": "^4.0.0" - } - }, - "@parcel/utils": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", - "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", - "dev": true - }, - "@parcel/watcher": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", - "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "chokidar": "^2.1.5" - } - }, - "@parcel/workers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", - "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", - "dev": true, - "requires": { - "@parcel/utils": "^1.11.0", - "physical-cpu-count": "^2.0.0" - } - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "dev": true, - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "ansi-to-html": { - "version": "0.6.15", - "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.15.tgz", - "integrity": "sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==", - "dev": true, - "requires": { - "entities": "^2.0.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - } - } - }, - "babylon-walk": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", - "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", - "dev": true, - "requires": { - "babel-runtime": "^6.11.6", - "babel-types": "^6.15.0", - "lodash.clone": "^4.5.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", - "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", - "dev": true, - "requires": { - "quote-stream": "^1.0.1", - "resolve": "^1.1.5", - "static-module": "^2.2.0", - "through2": "^2.0.0" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - }, - "dependencies": { - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - } - } - }, - "browserslist": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.5.tgz", - "integrity": "sha512-I3ekeB92mmpctWBoLXe0d5wPS2cBuRvvW0JyyJHMrk9/HmP2ZjrTboNAZ8iuGqaEIlKguljbQY32OkOJIRrgoA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001271", - "electron-to-chromium": "^1.3.878", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - } - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001271", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz", - "integrity": "sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", - "dev": true - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", - "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.19.0.tgz", - "integrity": "sha512-R09rKZ56ccGBebjTLZHvzDxhz93YPT37gBm6qUhnwj3Kt7aCjjZWD1injyNbyeFHxNKfeZBSyds6O9n3MKq1sw==", - "dev": true, - "requires": { - "browserslist": "^4.17.5", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-modules-loader-core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", - "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.1", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "postcss": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", - "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", - "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.8", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "requires": { - "internmap": "^1.0.0" - } - }, - "d3-axis": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz", - "integrity": "sha512-z/G2TQMyuf0X3qP+Mh+2PimoJD41VOCjViJzT0BHeL/+JQAofkiWZbWxlwFGb1N8EN+Cl/CW+MUKbVzr1689Cw==" - }, - "d3-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", - "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" - }, - "d3-delaunay": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz", - "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==", - "requires": { - "delaunator": "4" - } - }, - "d3-dispatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", - "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" - }, - "d3-ease": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", - "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" - }, - "d3-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", - "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" - }, - "d3-hexbin": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/d3-hexbin/-/d3-hexbin-0.2.2.tgz", - "integrity": "sha1-nFg32s/UcasFM3qeke8Qv8T5iDE=" - }, - "d3-interpolate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", - "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", - "requires": { - "d3-color": "1 - 2" - } - }, - "d3-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", - "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" - }, - "d3-random": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-2.2.2.tgz", - "integrity": "sha512-0D9P8TRj6qDAtHhRQn6EfdOtHMfsUWanl3yb/84C4DqpZ+VsgfI5iTVRNRbELCfNvRfpMr8OrqqUTQ6ANGCijw==" - }, - "d3-regression": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/d3-regression/-/d3-regression-1.3.9.tgz", - "integrity": "sha512-PoMpToIvxSnVpgAZTCERVseRend40JIBICJxwATJ/T4laWGaI5dpRdRxrPITxD8hk8W455fKonVChwSmDyWEyg==" - }, - "d3-scale": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", - "integrity": "sha512-1JGp44NQCt5d1g+Yy+GeOnZP7xHo0ii8zsQp6PGzd+C1/dl0KGsp9A7Mxwp+1D1o4unbTTxVdU/ZOIEBoeZPbQ==", - "requires": { - "d3-array": "^2.3.0", - "d3-format": "1 - 2", - "d3-interpolate": "1.2.0 - 2", - "d3-time": "^2.1.1", - "d3-time-format": "2 - 3" - } - }, - "d3-selection": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" - }, - "d3-shape": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-2.1.0.tgz", - "integrity": "sha512-PnjUqfM2PpskbSLTJvAzp2Wv4CZsnAgTfcVRTwW03QR3MkXF8Uo7B1y/lWkAsmbKwuecto++4NlsYcvYpXpTHA==", - "requires": { - "d3-path": "1 - 2" - } - }, - "d3-time": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", - "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", - "requires": { - "d3-array": "2" - } - }, - "d3-time-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", - "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", - "requires": { - "d3-time": "1 - 2" - } - }, - "d3-timer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", - "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "d3-transition": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", - "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", - "requires": { - "d3-color": "1 - 2", - "d3-dispatch": "1 - 2", - "d3-ease": "1 - 2", - "d3-interpolate": "1 - 2", - "d3-timer": "1 - 2" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "deasync": { - "version": "0.1.23", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.23.tgz", - "integrity": "sha512-CGZSokFwidI50GOAmkz/7z3QdMzTQqAiUOzt95PuhKgi6VVztn9D03ZCzzi93uUWlp/v6A9osvNWpIvqHvKjTA==", - "dev": true, - "requires": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - } - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delaunator": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz", - "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - } - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.881", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.881.tgz", - "integrity": "sha512-XoAaO4CXk7FXtF2JH0PJ7KgHL1PyZ76G+NhuL337pMiOGlEWwTTSzMQyYZvxN97d9KhdLMOW8XVVk/6sN2Xflw==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "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": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", - "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "falafel": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", - "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "foreach": "^2.0.5", - "isarray": "^2.0.1", - "object-keys": "^1.0.6" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "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" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "grapheme-breaker": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", - "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", - "dev": true, - "requires": { - "brfs": "^1.2.0", - "unicode-trie": "^0.3.1" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true - }, - "htmlnano": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.9.tgz", - "integrity": "sha512-jWTtP3dCd7R8x/tt9DK3pvpcQd7HDMcRPUqPxr/i9989q2k5RHIhmlRDFeyQ/LSd8IKrteG8Ce5g0Ig4eGIipg==", - "dev": true, - "requires": { - "cssnano": "^4.1.11", - "posthtml": "^0.15.1", - "purgecss": "^2.3.0", - "relateurl": "^0.2.7", - "srcset": "^3.0.0", - "svgo": "^1.3.2", - "terser": "^5.6.1", - "timsort": "^0.3.0", - "uncss": "^0.17.3" - }, - "dependencies": { - "posthtml": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.15.2.tgz", - "integrity": "sha512-YugEJ5ze/0DLRIVBjCpDwANWL4pPj1kHJ/2llY8xuInr0nbkon3qTiMPe5LQa+cCwNjxS7nAZZTp+1M+6mT4Zg==", - "dev": true, - "requires": { - "posthtml-parser": "^0.7.2", - "posthtml-render": "^1.3.1" - } - }, - "posthtml-parser": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.7.2.tgz", - "integrity": "sha512-LjEEG/3fNcWZtBfsOE3Gbyg1Li4CmsZRkH1UmbMR7nKdMXVMYI3B4/ZMiCpaq8aI1Aym4FRMMW9SAOLSwOnNsQ==", - "dev": true, - "requires": { - "htmlparser2": "^6.0.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - } - } - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - }, - "dependencies": { - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - } - } - }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "intersection-observer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.5.1.tgz", - "integrity": "sha512-Zd7Plneq82kiXFixs7bX62YnuZ0BMRci9br7io88LwDyF3V43cQMI+G5IiTlTNTt+LsDUppl19J/M2Fp9UkH6g==" - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-html": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", - "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", - "dev": true, - "requires": { - "html-tags": "^1.0.0" - } - }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", - "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, - "is-weakref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", - "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "katex": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz", - "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==", - "requires": { - "commander": "^2.19.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", - "dev": true - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "magic-string": { - "version": "0.22.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", - "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", - "dev": true, - "requires": { - "vlq": "^0.2.2" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", - "dev": true, - "requires": { - "source-map": "^0.5.6" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.50.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", - "dev": true - }, - "mime-types": { - "version": "2.1.33", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", - "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", - "dev": true, - "requires": { - "mime-db": "1.50.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", - "dev": true - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "ora": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", - "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", - "dev": true, - "requires": { - "chalk": "^2.3.1", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.1.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^4.0.0", - "wcwidth": "^1.0.1" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "parcel-bundler": { - "version": "1.12.5", - "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.5.tgz", - "integrity": "sha512-hpku8mW67U6PXQIenW6NBbphBOMb8XzW6B9r093DUhYj5GN2FUB/CXCiz5hKoPYUsusZ35BpProH8AUF9bh5IQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.4.4", - "@babel/generator": "^7.4.4", - "@babel/parser": "^7.4.4", - "@babel/plugin-transform-flow-strip-types": "^7.4.4", - "@babel/plugin-transform-modules-commonjs": "^7.4.4", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/preset-env": "^7.4.4", - "@babel/runtime": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4", - "@iarna/toml": "^2.2.0", - "@parcel/fs": "^1.11.0", - "@parcel/logger": "^1.11.1", - "@parcel/utils": "^1.11.0", - "@parcel/watcher": "^1.12.1", - "@parcel/workers": "^1.11.0", - "ansi-to-html": "^0.6.4", - "babylon-walk": "^1.0.2", - "browserslist": "^4.1.0", - "chalk": "^2.1.0", - "clone": "^2.1.1", - "command-exists": "^1.2.6", - "commander": "^2.11.0", - "core-js": "^2.6.5", - "cross-spawn": "^6.0.4", - "css-modules-loader-core": "^1.1.0", - "cssnano": "^4.0.0", - "deasync": "^0.1.14", - "dotenv": "^5.0.0", - "dotenv-expand": "^5.1.0", - "envinfo": "^7.3.1", - "fast-glob": "^2.2.2", - "filesize": "^3.6.0", - "get-port": "^3.2.0", - "htmlnano": "^0.2.2", - "is-glob": "^4.0.0", - "is-url": "^1.2.2", - "js-yaml": "^3.10.0", - "json5": "^1.0.1", - "micromatch": "^3.0.4", - "mkdirp": "^0.5.1", - "node-forge": "^0.10.0", - "node-libs-browser": "^2.0.0", - "opn": "^5.1.0", - "postcss": "^7.0.11", - "postcss-value-parser": "^3.3.1", - "posthtml": "^0.11.2", - "posthtml-parser": "^0.4.0", - "posthtml-render": "^1.1.3", - "resolve": "^1.4.0", - "semver": "^5.4.1", - "serialize-to-js": "^3.0.0", - "serve-static": "^1.12.4", - "source-map": "0.6.1", - "terser": "^3.7.3", - "v8-compile-cache": "^2.0.0", - "ws": "^5.1.1" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "physical-cpu-count": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", - "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", - "dev": true - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "posthtml": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", - "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", - "dev": true, - "requires": { - "posthtml-parser": "^0.4.1", - "posthtml-render": "^1.1.5" - } - }, - "posthtml-parser": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", - "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", - "dev": true, - "requires": { - "htmlparser2": "^3.9.2" - }, - "dependencies": { - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "posthtml-render": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", - "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "dev": true, - "requires": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quote-stream": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", - "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", - "dev": true, - "requires": { - "buffer-equal": "0.0.1", - "minimist": "^1.1.3", - "through2": "^2.0.0" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "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" - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rough-notation": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/rough-notation/-/rough-notation-0.4.0.tgz", - "integrity": "sha512-hDgn9qMIxWnfY+WWjt30aLMtDHR13H8r/NI3EQNdJiEFAzpklH5nKg4eH/thpxCWTYzyg8ueMsKIfz9MzOBQ4Q==" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.43.4", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.4.tgz", - "integrity": "sha512-/ptG7KE9lxpGSYiXn7Ar+lKOv37xfWsZRtFYal2QHNigyVQDx685VFT/h7ejVr+R8w7H4tmUgtulsKl5YpveOg==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "dev": true, - "requires": { - "xmlchars": "^2.1.1" - } - }, - "scrollama": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/scrollama/-/scrollama-2.2.3.tgz", - "integrity": "sha512-fKuGfBaIycyk0TdninJKNgxctSnzjVMAVm0G1fDhZN1KjbDvxVse3K8OElqnvrCAWVup5YN/8K6aOKgj7dmYWA==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serialize-to-js": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", - "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", - "dev": true - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-copy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", - "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", - "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "srcset": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.1.tgz", - "integrity": "sha512-MM8wDGg5BQJEj94tDrZDrX9wrC439/Eoeg3sgmVLPMjHgrAFeXAKk3tmFlCbKw5k+yOEhPXRpPlRcisQmqWVSQ==", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "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" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "static-eval": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", - "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", - "dev": true, - "requires": { - "escodegen": "^1.11.1" - }, - "dependencies": { - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "static-module": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", - "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", - "dev": true, - "requires": { - "concat-stream": "~1.6.0", - "convert-source-map": "^1.5.1", - "duplexer2": "~0.1.4", - "escodegen": "~1.9.0", - "falafel": "^2.1.0", - "has": "^1.0.1", - "magic-string": "^0.22.4", - "merge-source-map": "1.0.4", - "object-inspect": "~1.4.0", - "quote-stream": "~1.0.2", - "readable-stream": "~2.3.3", - "shallow-copy": "~0.0.1", - "static-eval": "^2.0.0", - "through2": "~2.0.3" - }, - "dependencies": { - "object-inspect": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", - "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", - "dev": true - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stickyfill": { - "version": "1.1.1-strict", - "resolved": "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1-strict.tgz", - "integrity": "sha512-sATIqk4FvUQqSEWAVVWHUJoH98cKQ5REqDl5y8/Ij5Yj7tCLv+Y2gj/ioMcYuvUbtPL8j4kWmPTARR6fiDJNgQ==" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "terser": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", - "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tiny-inflate": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", - "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "uncss": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", - "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "glob": "^7.1.4", - "is-absolute-url": "^3.0.1", - "is-html": "^1.1.0", - "jsdom": "^14.1.0", - "lodash": "^4.17.15", - "postcss": "^7.0.17", - "postcss-selector-parser": "6.0.2", - "request": "^2.88.0" - }, - "dependencies": { - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "unicode-trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", - "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", - "dev": true, - "requires": { - "pako": "^0.2.5", - "tiny-inflate": "^1.0.0" - } - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - } - } - }, - "vlq": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", - "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", - "dev": true - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "dev": true, - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "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" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - } - } -} diff --git a/bias-variance/package.json b/bias-variance/package.json deleted file mode 100644 index 070d87e4..00000000 --- a/bias-variance/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "bias_variance", - "version": "1.0.0", - "license": "Creative Commons Attribution-ShareAlike 4.0 International Public License", - "description": "MLU-Explain article about the bias-variance tradeoff in machine learning.", - "author": "Jared Wilber", - "main": "dist/index.html", - "files": [ - "dist/**" - ], - "scripts": { - "clean": "rm -rf dist/ build/*", - "test": "echo \"Error: no test specified\" ", - "start": "parcel index.html", - "prebuild": "rm -rf dist", - "build": "parcel build index.html --public-url ./", - "release": "npm run build" - }, - "dependencies": { - "d3-array": "^2.12.1", - "d3-axis": "^2.1.0", - "d3-delaunay": "^5.3.0", - "d3-ease": "^2.0.0", - "d3-hexbin": "^0.2.2", - "d3-random": "^2.2.2", - "d3-regression": "^1.3.9", - "d3-scale": "^3.3.0", - "d3-selection": "^2.0.0", - "d3-shape": "^2.1.0", - "d3-transition": "^2.0.0", - "intersection-observer": "^0.5.1", - "katex": "^0.12.0", - "rough-notation": "^0.4.0", - "scrollama": "^2.2.3", - "stickyfill": "^1.1.1-strict" - }, - "devDependencies": { - "cssnano": "^4.1.10", - "parcel-bundler": "^1.12.4", - "sass": "^1.43.4" - } -}