From c2ce139c6940313f9a7e1239aa030687634224c5 Mon Sep 17 00:00:00 2001 From: Richard Feldman Date: Thu, 9 Aug 2018 01:32:05 -0400 Subject: [PATCH] Add intro/part1 --- intro/part1/Main.elm | 40 + intro/part1/README.md | 19 + intro/part1/elm.json | 21 + intro/part1/index.html | 15 + intro/server/.gitignore | 6 + intro/server/LICENSE | 21 + intro/server/data/articles.db | 6 + intro/server/data/comments.db | 0 intro/server/data/favorites.db | 0 intro/server/data/follows.db | 1 + intro/server/data/users.db | 3 + intro/server/elm.json | 32 + intro/server/logo.png | Bin 0 -> 28896 bytes intro/server/mixins/db.mixin.js | 31 + intro/server/moleculer.config.js | 15 + intro/server/package-lock.json | 8509 +++++++++++++++++ intro/server/package.json | 47 + .../server/public/android-chrome-192x192.png | Bin 0 -> 2774 bytes .../server/public/android-chrome-512x512.png | Bin 0 -> 9631 bytes intro/server/public/apple-touch-icon.png | Bin 0 -> 2327 bytes intro/server/public/asset-manifest.json | 4 + intro/server/public/assets/images/error.jpg | Bin 0 -> 74241 bytes .../public/assets/images/smiley-cyrus.jpg | Bin 0 -> 1343 bytes intro/server/public/browserconfig.xml | 9 + intro/server/public/favicon-16x16.png | Bin 0 -> 736 bytes intro/server/public/favicon-32x32.png | Bin 0 -> 985 bytes intro/server/public/favicon.ico | Bin 0 -> 15086 bytes intro/server/public/fonts.css | 528 + intro/server/public/images/smiley-cyrus.jpg | Bin 0 -> 1343 bytes intro/server/public/index.html | 43 + intro/server/public/main.css | 4 + intro/server/public/mstile-144x144.png | Bin 0 -> 1956 bytes intro/server/public/mstile-150x150.png | Bin 0 -> 2285 bytes intro/server/public/mstile-310x150.png | Bin 0 -> 2542 bytes intro/server/public/mstile-310x310.png | Bin 0 -> 4166 bytes intro/server/public/mstile-70x70.png | Bin 0 -> 1563 bytes intro/server/public/safari-pinned-tab.svg | 29 + intro/server/public/site.webmanifest | 19 + intro/server/rw-logo.png | Bin 0 -> 36083 bytes intro/server/services/api.service.js | 171 + intro/server/services/articles.service.js | 614 ++ intro/server/services/comments.service.js | 266 + intro/server/services/favorites.service.js | 177 + intro/server/services/follows.service.js | 153 + intro/server/services/metrics.service.js | 96 + intro/server/services/users.service.js | 390 + intro/server/src/Main.elm | 62 + 47 files changed, 11331 insertions(+) create mode 100644 intro/part1/Main.elm create mode 100644 intro/part1/README.md create mode 100644 intro/part1/elm.json create mode 100644 intro/part1/index.html create mode 100644 intro/server/.gitignore create mode 100644 intro/server/LICENSE create mode 100644 intro/server/data/articles.db create mode 100644 intro/server/data/comments.db create mode 100644 intro/server/data/favorites.db create mode 100644 intro/server/data/follows.db create mode 100644 intro/server/data/users.db create mode 100644 intro/server/elm.json create mode 100644 intro/server/logo.png create mode 100644 intro/server/mixins/db.mixin.js create mode 100644 intro/server/moleculer.config.js create mode 100644 intro/server/package-lock.json create mode 100644 intro/server/package.json create mode 100644 intro/server/public/android-chrome-192x192.png create mode 100644 intro/server/public/android-chrome-512x512.png create mode 100644 intro/server/public/apple-touch-icon.png create mode 100644 intro/server/public/asset-manifest.json create mode 100644 intro/server/public/assets/images/error.jpg create mode 100644 intro/server/public/assets/images/smiley-cyrus.jpg create mode 100644 intro/server/public/browserconfig.xml create mode 100644 intro/server/public/favicon-16x16.png create mode 100644 intro/server/public/favicon-32x32.png create mode 100644 intro/server/public/favicon.ico create mode 100644 intro/server/public/fonts.css create mode 100644 intro/server/public/images/smiley-cyrus.jpg create mode 100644 intro/server/public/index.html create mode 100644 intro/server/public/main.css create mode 100644 intro/server/public/mstile-144x144.png create mode 100644 intro/server/public/mstile-150x150.png create mode 100644 intro/server/public/mstile-310x150.png create mode 100644 intro/server/public/mstile-310x310.png create mode 100644 intro/server/public/mstile-70x70.png create mode 100644 intro/server/public/safari-pinned-tab.svg create mode 100644 intro/server/public/site.webmanifest create mode 100644 intro/server/rw-logo.png create mode 100644 intro/server/services/api.service.js create mode 100644 intro/server/services/articles.service.js create mode 100644 intro/server/services/comments.service.js create mode 100644 intro/server/services/favorites.service.js create mode 100644 intro/server/services/follows.service.js create mode 100644 intro/server/services/metrics.service.js create mode 100644 intro/server/services/users.service.js create mode 100644 intro/server/src/Main.elm diff --git a/intro/part1/Main.elm b/intro/part1/Main.elm new file mode 100644 index 0000000..fff019f --- /dev/null +++ b/intro/part1/Main.elm @@ -0,0 +1,40 @@ +module Main exposing (main) + +import Html exposing (..) +import Html.Attributes exposing (..) + + +banner = + {- TODO Add a logo and tagline to this banner, so its structure becomes: + + + + HINT 1: the
above is an element with 2 child nodes. + + HINT 2: the
below is an element with text. + -} + div [ class "banner" ] + [ div [ class "container" ] + [ text "TODO: Put a

here instead of this text, then add a

right after the

" ] + ] + + +feed = + div [ class "feed-toggle" ] [ text "(In the future we’ll display a feed of articles here!)" ] + + +main = + div [ class "home-page" ] + [ p [] [ text "TODO: Replace this

with the banner" ] + , div [ class "container page" ] + [ div [ class "row" ] + [ div [ class "col-md-9" ] [ feed ] + , div [ class "col-md-3" ] [] + ] + ] + ] diff --git a/intro/part1/README.md b/intro/part1/README.md new file mode 100644 index 0000000..994449e --- /dev/null +++ b/intro/part1/README.md @@ -0,0 +1,19 @@ +# Part 1 + +To build everything, `cd` into the `part1/` directory and run: + +```shell +elm make Main.elm --output elm.js +``` + +This will compile your Main.elm file into `elm.js`, which gets loaded by +`index.html`. + +Then open `index.html` in your browser. + +## Exercise + +Open `Main.elm` in your editor and resolve the TODOs there. + +After you complete each one, re-run `elm make Main.elm --output elm.js` to +recompile the `elm.js` file, then refresh the browser to see the results! diff --git a/intro/part1/elm.json b/intro/part1/elm.json new file mode 100644 index 0000000..3e54afb --- /dev/null +++ b/intro/part1/elm.json @@ -0,0 +1,21 @@ +{ + "type": "application", + "source-directories": [ + "." + ], + "elm-version": "0.19.0", + "dependencies": { + "direct": { + "elm/core": "1.0.0", + "elm/html": "1.0.0" + }, + "indirect": { + "elm/json": "1.0.0", + "elm/virtual-dom": "1.0.0" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/intro/part1/index.html b/intro/part1/index.html new file mode 100644 index 0000000..3860a04 --- /dev/null +++ b/intro/part1/index.html @@ -0,0 +1,15 @@ + + + + + Elm Workshop + + + + +

+ + + diff --git a/intro/server/.gitignore b/intro/server/.gitignore new file mode 100644 index 0000000..99d0c92 --- /dev/null +++ b/intro/server/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +node_modules/ +coverage/ +npm-debug.log +stats.json +yarn-error.log diff --git a/intro/server/LICENSE b/intro/server/LICENSE new file mode 100644 index 0000000..3a3f75b --- /dev/null +++ b/intro/server/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Ice Services + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/intro/server/data/articles.db b/intro/server/data/articles.db new file mode 100644 index 0000000..f63d96f --- /dev/null +++ b/intro/server/data/articles.db @@ -0,0 +1,6 @@ +{"title":"this is my title","description":"this is just a test","body":"Hello World!","tagList":[],"slug":"this-is-my-title-ladzo0","author":"gsZdyqSGbQscoIU6","createdAt":{"$$date":1525546112100},"updatedAt":{"$$date":1525546112100},"_id":"9kCKBGvHDiWaDSjj"} +{"title":"Elm is fun!","description":"Programming","body":"I've really been enjoying it!","tagList":["elm","fun"],"slug":"elm-is-fun--zb6nba","author":"Z1YiwpVIz2GQQ13Q","createdAt":{"$$date":1525523441276},"updatedAt":{"$$date":1525523455652},"_id":"AfnCDbXe6wi8Vg8C"} +{"title":"Who says undefined isn't a function anyway?","description":"Functions","body":"Quite frankly I think undefined can be anything it wants to be, if it believes in itself.","tagList":["programming"],"slug":"who-says-undefined-isnt-a-function-anyway-t39ope","author":"Z1YiwpVIz2GQQ13Q","createdAt":{"$$date":1525523547620},"updatedAt":{"$$date":1525523547620},"_id":"CDCDlBclmwWpWdCX"} +{"title":"Are dragons real?","description":"dragons","body":"Do Komodo Dragons count? I think they should. It's right there in the name!","tagList":["dragons"],"slug":"are-dragons-real-467lsh","author":"Z1YiwpVIz2GQQ13Q","createdAt":{"$$date":1525523750396},"updatedAt":{"$$date":1525523750396},"_id":"I2h7s1VuXciCP5nl"} +{"title":"Hello World","description":"stuff","body":"this is not port 8000","tagList":[],"slug":"hello-world-dwkkns","author":"gsZdyqSGbQscoIU6","createdAt":{"$$date":1525547607765},"updatedAt":{"$$date":1525547607765},"_id":"fiusiOt77z4zbKe8"} +{"title":"This compiler is pretty neat","description":"Elm","body":"It tells me about problems in my code. How neat is that?","tagList":["compilers","elm"],"slug":"this-compiler-is-pretty-neat-9ycui8","author":"Z1YiwpVIz2GQQ13Q","createdAt":{"$$date":1525523694805},"updatedAt":{"$$date":1525523694805},"_id":"ttAbrJu6OrOJ7jAf"} diff --git a/intro/server/data/comments.db b/intro/server/data/comments.db new file mode 100644 index 0000000..e69de29 diff --git a/intro/server/data/favorites.db b/intro/server/data/favorites.db new file mode 100644 index 0000000..e69de29 diff --git a/intro/server/data/follows.db b/intro/server/data/follows.db new file mode 100644 index 0000000..1d9b162 --- /dev/null +++ b/intro/server/data/follows.db @@ -0,0 +1 @@ +{"follow":"Z1YiwpVIz2GQQ13Q","user":"gsZdyqSGbQscoIU6","createdAt":{"$$date":1525550850919},"_id":"f8Yep9EguoPa8Rwn"} diff --git a/intro/server/data/users.db b/intro/server/data/users.db new file mode 100644 index 0000000..deecd23 --- /dev/null +++ b/intro/server/data/users.db @@ -0,0 +1,3 @@ +{"username":"rtfeldman","email":"richard.t.feldman@gmail.com","password":"$2a$10$4WPM2GSk3pH8COW1UVAVEeu2OC7/CrCzjR91PcPZIw/Ycdvyg3Aqi","bio":"","image":null,"createdAt":{"$$date":1533459071196},"_id":"7r8Pdo5csPGElToj"} +{"username":"SamSample","email":"sam@sample.com","password":"samsample","bio":"I'm the sample user for the workshop. Hi!","image":"https://user-images.githubusercontent.com/1094080/39663282-6459c64e-503e-11e8-8da8-a2af2c81d052.png","createdAt":{"$$date":1525523183044},"_id":"Z1YiwpVIz2GQQ13Q","updatedAt":{"$$date":1525523378471}} +{"username":"wefjbsfdjkhdgrskjhsdfgjhb","email":"sdfgjhsgjhbdfgkjhsdf@sfgdhjfjhgdfgf.com","password":"$2a$10$gnFdddybmitDP.yKM3OjfubgZ1O3geK9N8LymFV4mZYaSGe9WYPby","bio":"","image":null,"createdAt":{"$$date":1525546056406},"_id":"gsZdyqSGbQscoIU6"} diff --git a/intro/server/elm.json b/intro/server/elm.json new file mode 100644 index 0000000..ff88284 --- /dev/null +++ b/intro/server/elm.json @@ -0,0 +1,32 @@ +{ + "type": "application", + "source-directories": [ + "src" + ], + "elm-version": "0.19.0", + "dependencies": { + "direct": { + "NoRedInk/json-decode-pipeline": "1.0.0", + "elm/browser": "1.0.0", + "elm/core": "1.0.0", + "elm/html": "1.0.0", + "elm/http": "1.0.0", + "elm/json": "1.0.0", + "elm/time": "1.0.0", + "elm/url": "1.0.0", + "elm-explorations/markdown": "1.0.0", + "lukewestby/elm-http-builder": "6.0.0", + "rtfeldman/elm-iso8601": "1.0.1", + "rtfeldman/elm-validate": "4.0.0" + }, + "indirect": { + "elm/parser": "1.0.0", + "elm/regex": "1.0.0", + "elm/virtual-dom": "1.0.0" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/intro/server/logo.png b/intro/server/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3410641ae99f4b51e203308a0be9217962f73c06 GIT binary patch literal 28896 zcmce-hg*}&^FEvqrAZSIMVg3!Gy&;dn)DW=S3!z&#L%mtfG8-vBT6y!PUu0S2uP9M ziJ=5S3m}Bf`{+4-&*%3Kyk2x)K$*+@xKp;vDbrmQGMEo2C z0)t73flu0{$}R#g7n~Gz6hWZsgi9w6f4{$BuMX7#fdaWepztUV=m_{Id<6u834uU3 zTM$S(9R#}SmECM03w%Lrr=_L>yaN9Ym0QAq7cwt(Gaq2Y<=_9oJzTpAAdr`ehKk|? z|EY~xzwAe_RRCCEKJEJ}9fgpu4L3hQcS-N$g?KEj47rr~1A@3B3D?K8=rIGmm(;xgp zGL+=q$%FfROkl0>^6(9pg!1q{mjurGuKUPmQ})+ZD&>yCHEiGSn?lM;M_3y{ zz2RBmYvHc0=WXw0joan+0^a-;m*5Ef2r;_Pmj#*zwLp$RL7-^}ft~9aLxW@iudw%1 z7B5O+jiA0Xo=<5z)D7urpD{DO{7Mo25R|XrSUGK415RD4+#2>3>W@?qCDk#ZvOGE`6RJFKmG#d<-0F% zdmN~dPV4(A8-94l^zg+9`0unMvD)NU%I=z*sc3`bSo|p}NL{}6AqT=e!A{9tJ$!~F ze2|q53FTP|&noV)y2`p}gv;8~H#gFUx6Jy45W~x?F$?K+> z(z&c&On46TrKRefEkhEHzdCNY%aa@lOh+oo;LnK1k8Jz-kWvvl=Pa^Y9+$!V9ew{#UC4fW^M| zA*Ung0EN2zXP_R#0q*AjkgUQJAZo?&s_qN)=z3tHl>a8;5e$Jt)Zur{1H`?!xT2ow zbrCrMt~8*{67$#00ju39N+~~jz9LB?t`-8bY^mG;0Mlzoa`Uf+MFQ{eJOF?|6bzma zgz@99VL^g`md_La+thMtaZlIpnMriJqTVb!hM|A;I4=eKC&}aXK)XVHhq}8I!KD5U zIMb1Bc}0HiMy~&?(5E{7XFD6=g5U&Qmbm7x1L0QzNydw*RQ?)s5{D}QCV6rLuVY&| zQvGqw@`7wFU`(0+ndbiZ<{xRbW)!|fy?NPM@Os1I+ zJb?G_M;Ojps#qY6?Inau2T^0LXo!guC}wZBuV5CJh1Co0S?5VJ z?3GaicJ|a{iTXQY@2M&j7_dqr4{5yxXe}TQa#kv9oclkzH-rWM9>NG}2gxeH_@R9o zNG$;6vHwX@XRXHl+=VZyokCUy#y=!#bJ5z_?ys05caESWLN+NsG}-h!quxvn`$Pzi z%oYEIHRt$S$QbY?*#SSkb);II2~UI;sV9{F6;K2A2ugZDgHIe$RIkNDZ)p7|J4+gU z$t&YI;#PSW^AK}u^<8r*b{NfHE6j}VKJ>G;AJ+1#k9h~q~<pna13$|nTSQ)azPx5gA(g2`;iS2Q0VaMl ziQhuJU&o|;v0uwX$bWtS1grRW4W=paFTZ`B?Ew0tD}#B( zzON#yW;EZT>NsB6t<``nQaNPM=DoSg^zeu5WX(b9S9-=xurIgL&Rki}oAJKHcTTA< zd9-qHMZese0b;rVy2A3$cQ!Zc_~RJhZxule%xYmafWHdM#OsYp(hEIU_#1(#%$PMfA({2`RxHU z^am_eo(5g%%qYy_MZ%RLsh{BKc%_t<&~^O=x@=@*bKneQsyQExUMzb9WXlC&)b zQ?brIo2HtJ@9sRiNgWV|IWzl<(RUXuS;=^q4_{L z$KyS@h2X}A=0l=8HWH{$OdiD#EQz<@+55^YCmIUM?4699rv9rjSaE~dZ|`5f5ZwCB z{*@r}qa+fK&d`>0nxXZwjPTRV;embXnOD<(GX*Q3Lt25<$_~rp{C6v}aDhYsae%{6 zR0TXF;pv>RlKA=V^eR-Ke%4si#hwnyE|dImvo6ZTCVwkOAa*?BuPZgV#ud=uY0)2V zQVYr7{WeD8+2fc+g@}H${K$@0+}hNxSnjHDyVu8+&vNZRF!sjDYyG?XX1$$1wqUxr z#c`p^_n33NY5dtCca&yfko?XA{gy%=YB8r^+WiUd7%>?E_b)%^On}`bHV^#!`-06x zS)L2Q*CxtVB44dH31{8e$P0pgeDGdWRt4U{#>M?Gn23v;hms0<{d#uT&Ef~oBG^}$ zVm5Sj@4;w~NEYmKH&Vkpp=^*s+9ae(ea|f+eO_TxoQR^R9-Yy|BMr7ogt@va(bL)f zR)51za#ln#N#!f!c#?ScFV*7n4woUPoLpRv=W>Oe;F5)fvZLd}vUarH*sPbx=&0+e zh2$rsuSG5TjNtGn!RpeAj~B6GLI_Z*8=1w{MT>Q!kdW;) z$H(s;*u6Jj8cJ#One34F@CT(ghMf9Pw0h{?Hn=Y2vt|IiG@ug=t#JCDp< zsR&U(%HaVbgr6b7;;(bEBnmLYUm1&EJfm8lc)75#-5xmsi<2MI>EA(7P~Ht)xa)D; zkyo>f;lsG(Mx0IYltNkZ-iZzle1hyh?5<8I3fsO3>`6poMuF6Ch8&yF*_YNesu<$e z*t@85LJ%iBZ)2n6h`S7_nVOKWyJq2md1=I#QD(eaSuS2elr+j4Qb^k(V2S!H zG5hQ_G4VACVNveL5U(Y7{D8!1p;2@ztz;EIdIezff039Y=x~T=9DE-|gS;Pil%DNC zRUmqePN^~bm;0FIQ$|3~njD{#iHUDh{xZCN?VabNbZD4@-`OGa+3x6;aMP13zXrUd zkBQO!7C!~gFG*MvokE0!nDe&Q63%6WC<;Rn`?3dX1lzux`T_&{(?Z(bu5s@kopGPl z9+?%vlxw)P4;>HQcRaAO?dcF~-}TjPJDi^p7WOt7Qm+*;d;aCKfZSp~GVA|Q^R3@h zoKZl%BriG=1|7;JfuxNWZ zKNq-bHSlWpGCdsqTYwLz8iOiD8{Wo=S|`jyd?zALiq~owwJvobKUy$ z>!I0z2$oNq@91h) zT)|!F0_f-mc;w$A2-c9w^;^H}Xe+qPtUg=?wjm9;*Y5XYh|c(USM!=@!P!?;&U8zX z#`zJ+$0I^T@}}PQ+PtH}*5yxjr^J5sd4JKffus6d$AvoiCCs5NTNPFce*YoY-%}ewL;YR@8 z@b47TCcVESXOA6P04^i@pYo%2ibS+Q{rn?Kj5I$-Qg}3qX={Jq2;$~u zY#wN!+`m+!G!NpRyv~K4@PN^#dT4z}(KxlFXBdP4_@#lxsFvI3@TrnaMUVUpiERsTBw?guR3iPl8^Ic-{hwIqUpKUYmGR+B$aCpFYgAj)-^7!d^yv>t z62jv~SaRyk6CbTsCph{iSY=q&U+3ap3tL6qN-7<%!oN8+J&B2iT1m(&w-_O|IBa`o zZD&gmv>$W3HB1|?H%wpkRdD;7=#%t7>SD0`;8oFX?n+FIGhx6wrX`I~6>%n}ciZ~19GO5gO_MNp#=pJ=l zVPdpfHBhVR-tN-JZF#24Huo-Gpb!X;%%y0Ny}cq;`~7IV42ZBd%QP(JI%kG|jS{>_=9xMA#_rT1nFHH&vAhBb`D*CzM*IMI#Be7MXJT2C&VQ&~tjT2>uMkw-_SL3^;WCOmY^It&6N ztQCv8H=QgE4xJ$cTiYxFyKY1VtrEc*L49U#qr|xpS zEdc;i`QSY@;_=4y3ex~?iE^vYncW)qkB%l>{G)(mW!Ibkkc+ESyE$zzdoRuQi}}H4 zKA?c2j~O4myi{GIp#Cq0hRP`DXU_7G%7%VV+Dqu@goHZ>siyDNE$sWHq<*-NtSKa{ z2-|255S1mPOR9S6I`L?_Wx8-|b5X@oOjHfXHA%mHz)eh438slDR*BUpDa+E@(cDg83PZO<}=rKm10I)5GCvUxgSO+QRhI7HG)k@VMZ3e0%j z^zs3o?KDGB;T;kNTwNE?@5tMVoBa&m7PhxXa^3=OJ{=Eg=cX-4J$aG-8=&tdQj`Wj z48@!8M!tv>;0mpo0%s@1tJ1YezkuAMz ze(3+FF>pi5pBo<^)n!9j2L2jh5$=H8t3Pj}LeL>B-hvA`27K&$N z^F~N)L?gtnU=vLrg5-;6yu8KXvz;|X$W3deGfWP@3f>}a=z;giM4W5P3jZ;1ppiik zxf~y?tAG_#(mICYt_b!g!waD2k@Mjakd^`}T^HqXkP~)hnFw8vT3okG5>#cp(5^Kz z{YYL|j^cn0|8ax`zDm+gl&v00#vYS&&A50o`%g4z<0brIl43%c&Gu0005^xaL~MA@ z^5#9voNgMV1Cp!Fte--k1J!Ri2HWV&Hf1Id>ABUszKHbuCP5}*vvncY@Lr2*+toj_ z4e`?hUVYnkc!VV>@S9_Lj5~KUt;r=z;#THsnk;Wdh+k@7kfoBm?R~xvKI1EH5GS5X zMkrW-^TU0)BZg@SI=>@sL9Ve1bVUO$GpY_>{H*4aAilpi0$#E9C6b3&sx#N622M&L zM=v(auaoCE%1L1Nb2YpXOGbEC-uwq|DX?3fRc=eG=d+D;-j2X6x)^K0JTbuR& z^e$<81b&w>Zi+LuR?zFwK%U70BCg03=>eJ71Khm=1`D;|t*cAlR8FNU-uZ5ktf#(H zP|Z=(>iVrLOrM!eU|b^kVoY72XrXjlK{ znCzdQeA&?^m*a&w-3nmweRB~>9WDR`#t&Ze{-S?*pNs3U`KmL9RaW&e4C)N>HwACZ zfldm)g#6PVgDw7X-j~-^-iS(2m%cJSG9<}2n`S+*!`&!gFsI5kustrf7I^B`xxq&4 zHudRDmd4cbUW)<|m&FA2Kg-{<=6k+LvYy#2k~l$$@WkB^%+>B_u6Y(?zu9a1IbGf(e#6xt4Q24`?NnWs~vfIhyZ|kK~fT?<_Ik}HjI9EXOMmC zLnPmalm_djaU}(?c*c@FH-@*g7ziDq#AR*|%PQ4FY6=)|zi6MF)>V{EV;J^U^=+%d zef8WG*Z;7Z$EiCLhR#FaiNtDCkf{%R}XezbD zJg?y8&_d|jXxy^|Lfr^Us`;Xu9b?l?X0l}R_;bXw>AcMqhF|cQg24=A&9jAnYH^=8 zYS0x$xD5NMb?cp7f*~4&enphv{Q#${De&NdS#@8;DS3RG(J@(hBa4@Q#D*t1v+2E- z)cB;|x`OvDzNP04M5_+XY~)FY-+}SrCD92N>%(Zg3)4m}NyBXNL(~o5*M6gYqNe{{ zv*2df*MD@unyLA_amTbU#|f30Dg@f$nbI+L>S_IHz1iNkQqmF_5(7IKkuRT3-Fae@ zZ(K=hUiqy+|1x&%CVGg-{vXMA2iG<8-6L3_eo8}a>-Spajb5!qG%}3rTf=3z>%U2( zxi8kA3faDU*O0*XaW-R}WZhJMTJ_d*OU^%LhBCQ`^VG?Fp=?&q>;T&~jwn8DBKI-` zZ)_$4arx4fdhGX`FDEVBWrix2`Rr1L_K~?4>()a5NwxL)j!8;E#hc*;FIwf}>WL3@ z!5f+MP{BhoA!}ffb-o9W$Qmalo5RK9B=sbS!gvoX|8Vev0B7G6y~`q6oJ*hAYW<5L z=P5o}m!N){F8NESw&$#7_ofp-b2&a)@FXQQkX9^KKu|R~{`j)cS2~$SMrNtnY-*6Zz>y!B%iIT&Q3;vbL&ll`|M`ITLm^fyshE<(k10ho- zQbi^lQIFV%8DVV4H8J7iMo0%_UMwH6hwkiK=3n3-5Xor&XDUNht%#pf=M{e3Rpf~4 z2qMHa$x8z#sjOn%vO`Z@=*94LCv3$xwlS260XkpYmNeeh@+}c99H7`f4bv%p- zaRY`FXb=-3m(4xM&Dy|L#)Z#=&M%!X(7}Jh#=IaSMJX-@w!&Fod<+y`asQk&41KA9 zj1ehIHJEA6@?gTp3}YiLsh4vjiqJ>IC+**Gq0COu%shhT2Fiov*@CW|4lkPvDP zuE^!YI*SKEZq}|&ZMjf0 zK6;_l|&2u6qofKC9*lON*93?%7mY8L`LGCfNfgqK?f5SH38r2Qnno z?ClDK8)us{c0Fn3i<@M=X^^Y5+>|H6y)~oo<3XO*%Bx*L>vH|i$Lp}~7y5$mKwEl} z3K1oFsc}PYiDbZ```e6xD=*!&>)=3I zvv7aQ)u)7l;?>}|1VNzwcfM%RJ8;2KeILs~<^l~Q;M6Lk(C;pxvmzs#h}pzzrqO#~ zl)dkW(%V+#xdGa!{#;<^z85>549&FI_>x1A6YYi0Ks_21zsTk(fEUBqqQ3~NV~tP> z@jJj6F`Wi)@v1QJ>4^~jYxdL;7ycEIU3Tdbih5%0iSybOWU){DRy2~%++W_8d#*7a zyE)3IDouSrgujB0XV|C9JeNDvMO)P#G>2luPN^{DO^5zs_-@AbW!|YZc~Of5BKe*+ zx|je&>sZ3D%Xug(eu;T{YoGeCmR8A>T=w-r%ULH%)Q{4wGg3))eeB3I6AjxlQveVV546rJmj@Zl{3gkyxuU-_9Or z!|EY5kS4YKt^qZ{Qv>#=QrB~O-}#c}t7!MPg&&+{Z*7ejp}Ki&z`6r9WrciN%A_)v zNeIQqYN-y#jdxQiQ4{-wJ>Ahlg6YbJ>y!`syQUN+iy!P{`Hq&pU&LCM-Ps&Ey=1hh z=Bh?r$EyjsE%;bMTd4JXSQks9SFgbM@VLZ$P_WZSW9~`EtXW1zvzcJ~4fo65sh-8R zp3~O{zPW5iyOM*V^)B~Pz?AI~M&pBSdJo%j-Y(eAAfB~s2ImhYftny{a@p zdEkk$-BZ`?o1^v@#8=RK>PC{(@VDHK_O(%D)}9ZT+MNcSGbv4Q_trEZ2tY-3OE>$Y zga)o$l`~3-^q6MLRqx?hWU`_A1z8e*UDAgX{yM1+<=IstMzNAot3v2;k?iPW5F=2^ z&d*0jL!zT;LWz4gw4R+!jT@r}-okvBf3N=AQp~bB(32cdHsLw$Vi6W5es+n0uSWgg50H z^EKOd5Y|WtgyNTkPvsp0-o39Mq8F_g)CuC*K0y+7Li@Afc@Tv{7+F4CoSUjDN9}|r z@zYn7f+b*v!`Ysw!3U=(Ffxob>1kWhN0m=t(K|t6SEDb_^Yuw4`Ij%TCn&DU+Z{&B z>O3KkN55ZJ;m;$eVZzNyY;a5v&l{=C0RkHa=3ZQpNMR=b(+CtappPr+-EpE)7X)kQ zrsQ1WL_?_KwG)F5kg>a6Ryw%5?YF+$?TPj(3B_pRe3VJq$l1Ra{qj%-V&07k`pl2J zJ7cKWTiv6Hp!s*9N-I~9(d3fL`|MFk;bAnDeK#FNID}r;y+y{JtVAlv z-CmieE8jt#Ky=2cBA(!DvSanQgT<84triZS5Dm2@p>X zDlfU3i(OgW)+o;2t)iwYWj?~7)Mr~f6XZm8t;(G`G*WeBE0#^Q2fA%ORIugn}HDQRwFeMG$SL_R#eb1tN z{@(tZ6`EyO9^m`F!nS7@(1X$gf{@%KC&qMh+QloVJnSWB4}N>`7ZKFaH0{>Yg6z*< zGiAqdqC%tW4IRp{dbf)Z)ILKNN@BOgkg z8o+UH zg@lJAlt`JL)3j@yhIkZNXw3`@b8M<@>tlL;>cr-0h{I2hy)dtS(ZvR>d3?KrWK$yT z0e=p>iUJe{2`KPI<_O_r_?J?r|Q7XY5R* zNIqN~MWK3fMCu6q=+b&4gYpLN9G_}AybNw@UP3oJeCMkqBTi@Q;HJ51U3{rbtu8(fvSU}p7`-o)<=?eDZ|f_ZC+fwC_fxjI+5# z=dVk4w2gBY8hPCdn|>jZ|M3?3G8<+!fcQX%SM`29lUU z%$&Bg9HWN%{nHr9n%qLAAhY!PNMP_%oYvrY+u9Rk{@6Tb8q&5 zSXE~1IR~Jks;k^*icfENhd%`F+Taj^)vsonr#h%Fv@82C-PQ98#py1;%R@-7#KIvz zW=4to!ajX3)Ctv@VOsApOBKlb>FUYhQFkVTDWG)WR=0Hj)lWGAO@>B3p zqQj&L>CX(*@oC~?K|xNcblIBGdV(@(T&%`$-~w6Rx0>}XDb}?g$i_*0LB0dhDI&?S zTKL2rrSgRl$?X~vz~G(Ne7~?UfjjkjsLves2{DtN%+={}%p7cLd{&9MKn|cplp&$* z5vG|tTI^AmF`99W2IroUz}1P%gw0aEC_DwmHc;-IB$z_d2eLIV4Rje9QMa&1d0)sx z=PGP{(7$LtDVn9$2eS1CQD(lN+0?RJ>afqL>_|+fIW|sp5HX5GkRg)OM~YqE2tB0s zdZ<{qg66w(PKt9!?W~ z;_#G|WLyw+y0w-z|2nXmnxnAo)Jkx6io@ik*kfd9$O}Pg_9zo>N$%%sUylP@@T_Y< zs$FsKyY)O(bi2*PVw5%D7e(bT#!c%?WFt)Ll=6Ajo<0U?!`;TV&rX$#HLy8|Ksjs% zl=Z9s6hQ6h&Uy$`qs%X79zr-03I=&7&srEshW#66wON(UV#8atx>z(U*^~XU%Xhpm zQr$t7(X#8x*>4GQFEtRbBhCCYu%HG@)N+L}4u?h2D(uZrFsC_8+5_GYWZl(Q<7SrX zP{}nm*-_G&mP4=PuTR${nPK{*aI?35vQ^-+l0T7t#qN+M`hdT8Y|-l#l=Np3YDjPI zEB_eClVtyU%{q#|*H|p*`xJ6XD~2=S`e86>e#%msL`6=*bJTpSA)U7bC;@P)QNT81 zDjlAXT-_PA%3Olp{MLtt;vWPAVSQ5&9R0{_KiW|`$6>OEzt>vTvU|kYro`Sgh_Qai zDzb<@Dl#@U=5=wa^+kEbV4G0R-kNP$s!WGTU{bm0gN$EefQ8gDn+EDWc(hj*FUsxT zu^!Hi%N^4`MCe|(9O37;Ze_g0z+X7hpMv+%FaLzLEeTmS?_aBv^t^H2cQx$6y=+3E z4~a1~$JkJqVbaFB;*4lxQjQAqx4xDF>lUC*=>pzh)i|9j6Pb)K^{r;?jjd%GZ=pcM z_`8d*Iiq)XW!VCHYoE>>C3cW*@$KQi-GHV_6hfCU^M6@~v5d;2re4`7Lp%*5x7ss*{Z_WUY_ z_a&4_se5YNW@oZ;+GsvCpoX;fT6ueG;(R3UD|lb|Rtrpah*~scCuH*X%A08gwifsI zw$O%AvGHLhU~ZPj^Oar$HKR_DguE?^4e5}I7c_JCW{w{o;i7?Cm$n_^OHI_?TSgOX zfU!Du*Mn0XY$(~ww!-AtF0p5)I!sQnN7+?6j7@<%24=KuGS1ji=OBHQ_heTzT9_;oM-aK_Qmk5f+}Gf0>x1 ze*an!8S*%>kQbaCJ zNk-v$(L9E^$CP+{E3MMnXisZf@=@u{GuP9wD4Kn)&BnWsssMW{U^JB@)r-y7C+ zq=IZ;d#ifHYK~3bXiT#x)3UgPAYGo|6fr zwGchTTbUm!HC7sa6$^V~E>+v88x)v`poM2UOyY=+5%Mqg$Pxqj^cx`Ye9|v6<-)1; z4hc39_ShDi9{!^cl5MQ)EJTTPO+l?KF6fNvkZ;?^_wAheOjLXB_|@QbxHy-t__TeG zPX`IBcwU?FGLS#Qz-pJZf=73IXg*O1$O<;C6&?qc1|+mazux{$#H#=z-v2&nDsTL8 zJHus(R~=zs_prOz{rF0`oqaaUlU*mGW3UB{$xU}nZByA4M8u<9trfp_+iVwW_av^T z$*j_!qB@s6(g<^+Ykfd}vrsfQN77>LV~5@lTeySNug5W8MNY3vJv*@OF|<~wHK8M5 zR`1)`O%YdE;bum_--jEJWbnwrnbCb#=Q{7b=SVsWQ*+#%`iv#L4`(I0jwWaAX^6w! zr>DqqfQjsE>XANFK!@R4MZvPQ;kUkAjm?wbj);p;b1>V7w;tC68Olm=VIY3M+2C51 z7olBl9He$Ng$7`VhB2|ZtMQlE-3H`HT)D%s^i~a3;s@tr#Depc#&e}t_93h?OY=_P z1fC|$Z6w@8GLG1QCCN@Ci$htg@B!)F zyw}sh(&JcSAUUedZ_|-Sx3@#_=9m!NF6uaFIO~Havf?Exh~e1J0{5o zr-Pg6OTOSzfv^{bEfHGP$7fn zSQ}L>wjlOvB1BG6p|xx7k1u0IljwVbQsD(BVlwaGh|al|7^Y_NmY>0Lbc+fyhwh6l z34;nT5EC|z&}(_GWnv=Ts5$c@DpW-~5{7l^)0bVZ;9;0|M@9ALAw1O;8)`9R`S(sf zKMlgvU|XH~sALJ^`HT-bH(1LUsYF9CGg7k>x@BJFv-5tm}`^g954V_tlet(zetIHKjhs80n>n^U{ZVR^2 z>kL}AYAuqxD%V}`W@NTi7wZ&b>Voq@!cdCm?;T5mqk`#3THbDv4EaPvgH8H(kIyxk zU!ChwRkvm@n{ z6FGWj4T0jx2U0n~#zXGp-+di142w2rcN6kP&*(*Z32gOe?Qi^N2Yy9w@nU$tMaB|- zv}z?$K=B|KyWR-ke!4Jq<h>){xPV*#R#eAY^hmF zQ{VPHRBmJS;*3w&S2loV=DjGHi^rWdM{` zF=DHJ=KWwnB|-yQ1>?b?B5{?yEl+1|Ri8N2&b{%mq&Y_hU*EO(BC5gPc{pHx&ailG z+#5Bjltw>@9g$aU?ea~0i2ic1?$~-cjM_qH#%9e9m*z!FqjdXn@95a>9R0D5+r8(e z@=tK{bCIZH#oEYILGJ#dx!*lK+AVv%EYHvEQ35eRx+A-vfQBvKW^#Rs2$O6_SX})1 zSC!hsuuHOzkV=W&fZ+Bs-E3#$%A23Si-!HaTx{y5E~RhjV(ESqO>;+8xu!a#6;pYM zw^kC$M*b<*23)v!L^GuQmt03nuFO2?h5g!t5ip4^u*9D~RofEjaeHe|+3dP&eV=mU z>Fr+QTiu9d`MUP!E?A}*S}5Gw%-=z9O$U(oonH=Q*^c~j9NS&8TAFaCYB{^Bu`?Oz zoM?(!qTSJ&V7YJkW3arRYwY#BJl2=3b6qosIqh?`W9_qLwZ%00z*GL?ykZ3!t%qXv zGHAF|7fiRjZ&asYmk$#vsPJ95fz}(@F{|~;QmJ)3*XVd_uT(BNCbCb4&gqq>&P?2@ z9`d}9Dv&jvU6-PJc;Fj1{L~E7)Zc<~Ym`h3;#LAx5VyaTM!Qou~mn^g1?t_>Rbvg=>h&%AnMc#^x` zp?kkIJ{_0FoYqf94UWi%3U?jc*tALVyLnR(dzs)kkt7M(cS7ytH;%GOTu$;(0LkCe z_G%+LkQYhAx~c`}7K9(P2WiA(-_!MO*K2;LVNaQwMYHo(Di zAGOzOnk0z;GmY$@XZC16l#!C^;lp_M4HMh!jrYJ=Gm)e2M-~;!wxL(9F{L?U-wIs(xwB6um5Y}0p_-7cWV_^2~B9 z{c(`WJ<|MyuY3s|iPG)FI7;VNZ|3Daw>U%lGd+0lDduKHW@PN^s;3!^rQyJNNiW~( zoCYqXhlz^a?JhP|x=Rcd%dmIC@zC;hPo+neP?7K8$Ly_0?32@COh_Ac4TV-R7+*w95KDk%duTJHiM70p6lhLQT4!2$$*2a0k2^> zBL5|~DKd77%e}*676E5d{JlHYOLIIPZusDqiX%63ceW1>l-BKcA3DDdWw79W1!p;F z@7&FzCERuMn;Q?Z7?`zp${(&=l?}K4YJ+IOnVe>-_-;1eEzQ^-s2-Uy`{Trt*5nB;23EzkZurLJy&9>1iO?|fqYSww} zH2Rwb$BjXKi?c{DEcd*FzgL(4grdIke%^d)0acmp>qMn-?pLd0!~+T6;VGLwm$$e2 z0;L}=y(H|-jg=B6C|7^EO6%puJ^M|dTy3@7-ACrwSlaHvq%1!+y*<9&{##QUThXRIb-=wy zEb!FU1Vu&3?o50D>kS||M|h3}Jic&npEUnxR3go%&%kMWamx#Yr-PuyH2To-tD&^w z2Zii7({4EnzU#8{y^&o&v9Gbv?H5!O@5un9ga+%jF7XE~Mdx$qC0zu-V_0n8#ct^w zD&D(z?b@|R{{HNR&@h}nxwr;=M5M!_Rd=|AD39|j!fMg6EM&1Ia5>@P*Fa?|cQ?iC zhj}iM(~f1%?XfNVg`wTgJa*{pq)Hv-E49bUpiNK5T6Y`VuFaWg3>E(#OG1Or_BBu@f&jKO`J5lzE|)sqq_7SUqjgR zyPt`|iUYr$QRbc-;*gH|o@SQ*rd0T!aFIm<8+m3w_1-=+qW4f&y~un;$1L3hJWD`Ft73c=S6OUM=FiHPZldiVWO#&mt%S zburL2W58Q%p30wZ(R@m%<^82dwM3#^aXyIXW;eFNl(PQP{*iOX-r{ve0RR5n$JLi4wt#ZyZ#% zxS0Z_)?)VKZYGy(4EHTQ=a28n?{hS^UaWUnaNayT+zdr>N!3#dvnO|z6alR$6F|*! zrQHMq4wTb^s~&cr4+h%JsyM2>Hx(_8N~DF$7EO)jO4y8%N@jcw&8OS=JGii-Kp>Zo z7syK_E*JcGx9Z3qB}>45&mzF!?YeD6apk;l+h_+-x)OeA}Qt zyM4j@Fs>s3;W-=^QAuNRsqE%v+f!b=0a^?dk!FCl#e@@vral|#^zprqnz?Lv*23oR zhLH@@mM@iPSj_ESl{Fy~o9=?|uqJn~WB1Kr*{uVSj>U%aVYv1hS-(eS#uM5=8@PhV zdJMgk6uz(~d;Xliw>|F&rJh+!X+-uIJIeR}fP6}up zmS0VxQVkol2FcP&rkW0wUZwNgSbTtXmud_^C7;VjA&T`y&cG+7v0EMB1Ci~yA7%DU zEy+vDKF*%Nl^t_k_ob#lvYqM5veB;YV_9e4oeBkyrnxcTHd#2c4k+b4HE_n$%^vk3 zCds6zq>=IHIV$#!6;IS4iJLM%dz1Y}wb@3s>PDCZF~en&j2GTj8aejLL22S5?5)mo z<1JByi5VD9%<95`DmYVv+$!sz9q3>s(Z{IH$?fIL%paeYv-JD&k(XkQl?60eUTyA3 zVA`#wmnN3yX4)zT7oIo^ChT}B+{`N&T!_#=-ij6-9uy6`(Q)NtzySHiNP&K1U;GAr zK&5z_7%Vza{e!~EIn#k94!!K`km}%S@w6CAu-3K zo67vf%_QYk?sw{kSeX3X$u^E#dX580c37ura{_g)cKR5EJKh;%iaow1d2Nz&6R}`y zT!zSi!dsHcMqN_+B<6GT^DDyE<|39BLO-=Rsa78-rBxQ>L&gXMk$}$9wF((`FdZu#F+LGDV0kep= zSoYVggu*QC*?iU^=R$l5f3JrYi)9PYvj%v5F=|nt;}kWZ!om|(#kXBc$VVB~1nAy+ z`+#|CjRhH0HWC788z>Z~X60bq$qC!r^<~x}Bq1TEaAlqc_0rvokMvG9LRq$@HyqZ& zr?0pAGI??0!%%lUZMe^bvm3`j3Y;GO*2(WpZq|R0)#TU*JD|&-{v?A{NP#Wkeb|RMve_u{mOSQ+~!+>l+D66jQEW#= zP?_n$5d8i~r+YYIPaGrHQ2z8^urKG(0}le10*?=f!DVj1*((Q{4khsvb~QIVWr(;( zSXEbICbOlEh<5V~jBjq%@5s-*sTwW=hZ4(5b&30tQ1#~L$eIkE!~`cQQQw?5x*bqS z+Y`j;T53GA7?N#m^CPQA1qTxKe7)~-O@qah>6qVpcxzRjQZ_5dbLR};NI;@IHoyVb z@Yvl{`S*@#9ZdpjHM75aiF+raE~3b&OdQM_JmR}HW95`aw#6TuRp*3l1=x5(=Ip1T ze7|Gy9uI1s zD_itCI^-KlWpT5wrejOfcXpU|%r4jS9d4Q=b>(UpmiITc=>Y8>qklt9uEE3}lTpK4 zCZOPVz#*p$fQoe_FC>H;ABs*u8L12dXJ``=y){f4{82)rtuGG_J-aDvLN9yk{SXNk z0d}Z|J1AtBdf&ObP)E2$zqLjdkl^n6f1aD9bhYT8o1EB90+R5}Z!n;Z9c_pTk>A;` zWS%~v^s)pCi@QqorDU0FS~~0?M_3FDLzS}0lE=?%l#%Q@4Z`;=za*#C*Nf*RDqC1A z(GTCn%xMKQi(&Vr#dwkl0fXz`9}}0p~r&?~noKIZOwR zq(3D$Pbd8@p@HM;E+@0pvKc4Rhkn2l`DaWAHN6pn;Q79q^`QsVn(ps@VB49X)?Kye z|F5<$kB7Po-?n7QI+jw|lJMA-eJ_dzQ6prRlCqC|9Ymp$qOmhAmhAh^m}*KU}t|7Qk*_sM8xWzGkZ5IY$g7j%YUJxWjH3 z6B`*e^S?mgw?X};H$)b$O5g!#zhjFBR3N7BrXTTl_uQQ7l%tjAj*Jwk79XQdPDP2R zXseUKc_uaW?iL@u&Ks-=l=Z3Ty5y>RR0=&RcX=^`*R;f3)K8Nw^l;6#!(BZco^_dI zn~q&(0NgTVi9h}X&O6-~Q-P^4Du=-qJ`r zt8{&&OkCXA`_v|6G*6Yq$1x;ED)If(W08-WhsAKIzBbce2OeM#25o)qda<@ERQjq)#>C2 z9mmt7LDU6UrX)VzqAfqxi9wKW#di}u-4@X%JA}9lhANN_AXnUn&eBDwhU($=$DgI3 z$6d#-Y8(B2he`@A>@l?fN(Cm#+pVwOy>m4(S{_B5+V6N#L^h=F38JinJ5=Ni{=_&l zND{XSjkF){YBa&T#3-_Vi(unEHgK+Ydm^*lAL}da=N#1*B$ElRJCw+3~J-TS7P1md)SJXSN!490NsO$SbDNHvC5h zl9NXmLUQ(;SiE5(N_8&mbVt;!S~+d`ct2jstDB1Qbmm-QI!ZmY>0bLp3_|6SS!6Bt zIi|` zs)0U>^}$aIn!u3g33moAa51d2ht$pXL|9LZgEQ;Z-lw~&o%*_Zp@$4EbL5)sbWrs` z&NW4iGGE0c^0LFmX@R?)g;hQ=+LI`V7cGwj_}=-G(q}wm#o~FZo#Qfarosfd+&Jp$ ztFV-LAxFRS5eizTMBJdu^o~yhxOd)O zUY2m-CW>c5OezwiB4?fhO#LHo+}VrdO&Bp9RCV%6Hl8{K8nFHLU7tud(i zQichZEb8q4el_UuVol!jfAbEhpyPnS^?V?7{))s>>!kq6m_dQByN0o3^4IahnvFqp zeguZCaT&#rH5GtEr*x`C;PFhAFs~%}qSr>1X<|~^<5E1~>M_MIsk3*TT6PoF7CWyi zE*5+;s_&Y83%XMMmt$rD<{$eyc89y2^C6b5VH9QmUi`^gh1|S30g9VTza4k z39Cxn6tB7FdJ%yPh_H}W8es8TOf~tq&b^WGsqe>_+3psbFtXKBcS?sy2+Ajb5k|}s zVXR_a#-r@d^7(4za!gyg`C{1TbUJn4Ag!50c~)&cck1?>q+WZh1}>0K+VwpTyx9t0 z0x9iu^Uk7`sg{4v^+BHk$|O~|pAjr#-4rzGNd`e2r#Met6iro=Qkdv{?S`i@BG68( zUX~X+?I%uSQUU5&Y1OpkpFElGe3BI!h(~3C*PnkoU`yy}=`gg@D!Fjv*nM zZUpy!Xz3^hNe>W4%GtKdU-sZkgq_R!J?5j6H~EqgOp$>K^ZjavqPbQVFIupR@drIX zT_U&4#i9-d>XgXFL(&;id??G`OD1zT7w6gLAG`=lOXDlI zZz_@!>7Tte+vj+^sw>iwBeD^*=FFj^RNRQpy6V857(os!ZC8s&?L%a>DwoQ-!M+hN z&USve1U{R`1+br*=pq7a zaWurSiA}Al`xJ-j`d!N-`!eOHxeevgDDP{3_+lcCv~OoYUYUmlAC0f(T(!BHe*(2$ zD6+!uij4mbx{`9Wnl&kCC&*%raIt+QKwISqzAMSoXY`Djzzcub9z$%M^yyd)-`s4C zK#hVdenr!G@}oy@z=`&i2Wj<1WCwewS~Zm3J0k`M;WOkr-?-WU%BEu@DDzy+pQ{X; zy8RG86*%)dF03;pnhyPLn@Sl1o}xZB-w=vNAect!3!1ZNi38;#IY$v+&z~?{hAk69 z3iB5qI=c#yoLo^71Z3J_rPQktJvSV*oht&2=)KYGp=Mn3a>pwrN2-ug1+Ta7YrGB{ zxrtje*f#sj6@fdT5MQlNK{G3MYV_33W#8D{!AvGiD;L`tj5>cylTtVm6Up)X`?%&frwYWhxV;bq*32D{=U2E{e6^F5Ns!hBs;dlKZ z@S}CMgABBs057RWw3*pCPC7Tz)>;JC%JMn3a9$LkBx-haMtaKv9rDwJ*WM(*TdBXZ zP5qKxVZD1XyENXRY%`SiL`y~nf)wR<1@vkh4)y7c+7(*bDXZV5cSsA!Nny?(xF(px zyXehr0f%Xwl|Q`H0L+mHimZSbT&4r@_i()wD5dXQAFi4|u_Qz)sQb>vG@g4kM9q`3 z9Vx{E)dh74R^l$F)2{#Q`pm1X@TcGvOY~_4X}EdCjJ^F)hihAM&oZO1^4!7ux?_Fr zv8HTZv?wg^*^k|AQzJ*=4WHNpyz00$MAoI?s-L2cM2_`hv%ZA&enOS;xZD#O9!hDh zb?dt>_(iuM^F*jrg}n5-vWw#_MC0rz==8X=T+i)yo>gy@RQ?U4#4VZ-3t%0yzn7@o}rrVJI&D`xUch(8| zfSbM|%O;c%Q=u=89$QH}7I7JhbclSdw_)E_0Z^i$r=!A=bgtBN4=^a$Q>OrGKhhn} z1zb<=RfrFGDR#q%hMM&OYRT%~bE{52VTeR!zR0S&LfpVQlL)TC660LVdip6>EAqRj zD*o5f2+=BV-^`Bz_o1IH61Vgkz8tD>oUX|ouxPh6lAHJ{gE~sX4!(}9i|HUQbwpvx zlJw`8G`m(+iEnd9@Y_*UF=`o*sv)Tl6A{5;=BexAtDd`M4?vh^M&pUoDYqf5!4IY5 zLC@KAkkb*Ce59LgzO0fybSE`~aS!Kt&tKzhDKn1XZeGEEG#-)|apW9bTQQf*U3VUu zbtzdKAS<8Y;g#VVXeXt`n&dFBmxf#CL!T1pn+g^l;$Nrpu;g3i_Wh%_wB|*;qFKK} z;IAXR=Zn3U6v3f;D^o5TDoSx7_F<2Fc4k=1o`j=JC+%vJ<$7uezLMz$*=0=FmkXBA zy2bN~&B*nQ=Sa|SinGpmxOL*=B3w@Q_c%n9%=zIJC6bq}UC zw_N6IZ;L^A?DiI9*0z}@mOVtU=%i>ob)DVv+kaxi?5bQ?kQ>)@2Pd53RG~m>!fVD-3eyV%YJ>u$Ahv>AGYRJX}~J=DYU3IyidT8 zRj`=rSbVkoQk{uz1|8v?@KwI>1@t(>_*KD`J+w^uXsQ8dv^i;~uO$B6r&B%!dH%z} z#UTE+lM~7+`jCwfQg{9_4qkWf?OPg0qnY6nxVD%rV{gu3vB&w6%y9_L4p(-#rA+HLRRv{&(B$M{1S$hT@lR0aP4!Q7Q>KTH>_C}vU z9lyE8L)=G-+15@fG(niQ7e^((Z79oG6$34f!vouwlBTcR^Zy4<*<~ZKJs9!mYDa23 zB45Qq4}#vV61B4J9Zo02P1cF;C09RKR^)bPlsFHsg`Bd+!ad0w{ope=>qMp`H{3Rk zyeMk$wKY-C``j;3`e9;6gy+OAg00{k_o}%9NTTgfSSzA7h(G; z!LFp4*O(CxobZ0H+`by-m_?;6i3NeF(ZR_iXg)W6ibU_`c=Os?tO0;p>;BwGQ{nJ!k(&r;kWe0O(yBP+P(G*8JaD0W@sFxaS;o#x(;{Pb=Kaf zh!8K>Ig6*?l(Q49LpeNYd7rq&KM(+8eL8fqx&<6A_zc#)SSQ%U;y2PCM;-RNlt<2B z#8rCZoj`0y8%z>fq*RrwLGYNzZcPPBERPNP8#VZc(u{YOBY82C&^FiUI*hnrd+=V% ziKNnWMaIJ1?G+Ji@n2x$BjD)U7pq-uW^O!uN%LCQK1p9-A}Uu%(ZLggVcjQqc!p zAp6C15-xN3ZFd4%gcN!rFK;Hap|G?ON5r z!0EHtFA04t`syrb2W{Mn{FQA}7n~NZQ!Sn{B-gWR8Avu@ZR4YU8VwmXjXstxh8&1E z&w9lw-HkR@$~a)nhBy=ok5g<(I>=2CD70Calb_KIe*FuFA~lHId#zOK5z5!53p%48 zf|@=Dx8jfGu49{?6seR#F0V}M0ZN^uCR`sncnJ9w87?)jxg=a%h^7Xo=KvS z{epJLa%c_eQ+UO&%|C7=b|Mqj?(^7G@~O&*$bUjm`+PuK_KadrZ70NrexQy{LpPq1 zYTb3f;Hzf5pG?iv2p;Kb46%{zZOpskN@^ef(C7>7p11x9Dib+LNl(L#lBREw=cbr( zzDA=twMt^~XvnL3i4ooB!L>x92LD23%-(<%RgTn_xx{)U{xa-)5J(D;0R*&9F2^fk z4B>2niTLs1m%)XJTCoI+G3gSPD8(Q;-EWgqZN47^EhKm0W93b$!AILz`9AnSC!1g_ zrRg`%9-A~cGC1jTTi-w4lWc{LWeph9DhBKrIKMj)HXdT`z@n= z9ENPjO7MKMyB}o23|SXh6c`@(P}~AG@|N{TA_;wt(0is7fT=Zf9eNY4=V1R?1r>}t z&UI*DjvmuDALh!gVK+HW+onhQeJ3ZZDjQN|b3Iqs#?y9T3%o;eIDkHVQg z9M8K1etf=xj$g_E?{^E})8ANMqV)Yw2!H(_s|Is|VPqXs7Nw)Q8~#>29JZx15wGyFZ4Yq?qBmI$KJn zRmTvOx#+=3B|m@GiCFNaWEr>lG9w0v4Iv2-fbC0jv+bMK0R2r2Qgjy6<7vr0O!+E> zD*X+&bI%4nOM#SW>4bC#BruW(d6`k&wQ?CJ+W{gb$?c6Zo7auTU8y>`xtS>Twgq(l zL+aOvfA^HMJ?Bpb*+q+3_o9Vdyg0&6M7Hhz$>c@eIU)V}CuZ|x7!0B;>op%5|<`X@@}#Nk>o(c@e{ zLn?gQ_TcP|3VXp7C*xWO!3tJG#Y$8GekMkQdW1xDyBMeHD>m@3vmLZK^116rBiGrR z)676)T0-U++tU&~Q=u~i#ULqz4~IV2vq9rio!CqgkMzD%0@eyHIzW-tMw za4cQ;h!3UEG?CFok=}<>Z2LiIrJ@94VUv4lr7!$7CLL>4(#9CU$W6b1`=Q5@&!ht~ zqb-jGHW{kD^T;&1cBwZTjv!V!--hU&l~Yt6n=@q92f0O?l^Y;gAB%C~bRyht_TT0c zi%0R|=7z9@{<&x;M(lp3xoB$^NY&FUJ#GYF=*@Ju5PaDDFekP^1eAV;_mTjL@I`o) z1g0$3CIM0@jtJHUHOO@t*Oo8HhN`hd4OVo-Je+k2t)KH=$umh-OD|(HvfdzLY|s*H zWyyOmYnuZ|{!RH4TM-1j@Z;9e+n7c0YESN(n0?S~8@hAkkeE-*PP5Rk-TB=4Ks7kC z`$P`&3^AOvJnj5pWveSm8M*sG*Yi-ZpESIBDU!5E5WImJ`Zh+)z!uo^=#xcx($Y#Q z_94!mn66L|-!;FfF2F}iTtDgOHS2P{I$J}-4l10Oz05)k!xH98x*HwM+Iy>B>}(ll z@@E5-i;P&jKE&n-E^t>(V*KjeX51)iJEsO{TCt@m>=$c~xqR?ut9Fb#E{Hkg^f-sk zk*@*6D-uLcvG^$9*EokGRf}}Ptqw!8&IKsPK z$zHwbfNXlu#^iNL$$>(>v9OJBkcW^7f{^4#b;X~t8uO&>4|~BtW7N5?HqKgikPO8R z*{z&stq2i2aX5YX6^$8gG_cVSoxbn1f0Ao`z zS5a&yJ1Z5J$62pU&-tB~Qc;!TWt`ncdKiFA=o@0X63jdgGly-Jt&FUS_$td%PR z`y)LmVzvFCkpBUA%-Rzt5v6(jR=D<($Oxr9bnp6L0@#U;DyT;)!{29WVM?ufTBg(I zzRk_WzhPXlsW3mOq4DY#Q(TGR%>g#zNJ$)oZjgTQ_<)XlcUNML!Axz9C|t2%i;vIF zx1ibo(#nz`aTR-dpgq?}=+drQMTJ$Qa?Slq9iFS~*Z{(q`q+RLa-H=IfFU!;Cv z!XPodB^D-9rJTc23h|T!uF$807e~f8ES}1+2s&#m!HWu_mgmY1DnTq>JgLxQ9EzS~lTAts&;w`3&g&bxII3umMj>)7;b%uD_zXB-z+Vm8dDzKJbV+wU0s=xht- z6$9?`ol8k&I(p|Ex}D-h8M%*F4r@Lk?wUb*96Js-7rq>HfNoEcn3%f0n3{`o70qPH zY2<}g)Zd$Hj<7Ou@)47~tNk(=5H?uwEZSQfJMX%B-Szxd3ZK-?7uo>K)V<<~dCjiV zi%UuqQ&ZtvF+DzRSkwo~Qf%v?pf3tDfvJn>>f5I4O2*<8iW&7YJzMIv#!t)TXj&mN z`JuIhXHz3tiBCOZg6YwFnwzTq~2W+p5t=)~ivr*hub0c{7J6wMe+{5tt@` z9GUCbx`z>uy?8gzp^WQNL=^%omjv-9_6sRNnYQy?GRdvGlRHus6r3!nHNrukqB`Wm zQu3BY_x!Te?z6x!IZ>2jdk5`;%l!+NnRY0MC`srM zwi!44+TW{AxTka{F*41d_+sZz3vKO;b>sJ3m}njr`o^0t;WVS|oh?q1h`}skkXQY! zZoURw443t;lSPki``SV0t&1cyD@(DSSYD+X$VCmuL0&mw34#%P`m`TL4#JHO+tigi z<1V9@)ktLIy~Iv3Z7;DAz_nzEF)q?=DpFe?O7|fD91@EcfJNWBXjub}qOz3y;kyNK ziHr%{M;ER{iY~OUMXJJUUk726r*VwC47paaA?k!f)(pmj*8UaxPWck&LjXtPnzWRN zPX6XqqcAIl%#@Xw^RqgHgJnT=a`uMX5%VB=-p24?JABs|){Y{qZLwp6?`23kZikoh zmn}%URh^(0E?rZ&UBkwbmfQ5vy^E{4s;NPwrK?xH(r52H%rG1M?cI5|df2gadM&vi zW7KjSx%S$%1rIqWQRr3mZ#PI=PCxN7?Y>a z#_@1qZ$^F4}Ezy&?2lg&ZDYtiwX z5MGbDS#*{5t&~hh%nf@RaR5#c<3`arrCHjCh04PzD%@$G!z=8}(w6&O*4{am$V^aJ5B6Z5&Wimc0wzr*|lg>hHL5gy8 zhAPr_Co@r(XT3|PGlU1uG~1U&m`bj^ETafL%Puy`EC;CQdO;Zr*>_@7E65_-d?pNq zGS~M7mvHtm`-$j7fEC7q9-Y?uT=Mqy>#!Twy&v<3`-hcp@8D0raF>&;tPG=rr}y__ zhc@gX)MMGLqM!X;$EI@<>k@p9r$eLYkvxRx@EwhN zyAaZ1vZF`T5y^bQ0c^mwA_*JIo|qQCT$-hi+QN9t>lvrwAK9I_AyX2x=S;0l*7%z` zw>2Puj;puVxWUeCtQEewHQdQC-WoJ{KSf=+$g--IRHaO121ITp?1HC}JJFC|zDw7_k@ z=w>O>p^=+H|1qap0_N0)egn~S{h!Nx&9ySC6fRU)xBU1r2fIVr9S-_MDYeJLlnWS9 zAs8A%H1zXlcEy%-nSTBR>x|4pDB_ouUF0k!ngN~j*JEu=e_e*`h{DoZ;bYDUWM}oU zbke6;UK^(n_9lmL!_wECAQfPae)^xpK|n)zAp~5YEMi3)Hk;$f&RvSV?N9m>tTOhf zcxOMbe`^zi9)4vBCK*+z$MTDC3vm4P4gd!0kM^<13LPS5xj&cIv(mEN>Xy`6Zf;d! ztx0?4xlXQ9a3Si;M~yIyLff5wo8)1V`l}4AK*>rMskd{Zq~@%zrR-v}gC?b0E4WlN zPrT=}8T&xhTd}-D3lrbrljokW1moNIiy(ca&`x?Eg`QYyE#l|0;o-CWx-fDsBiiDt zchKGUNl>4bnSy^_Qmzr(_MA8Q#HAEWej2EC!$bC6q}`AL0vt_0bkD~q6+hC^&|SdX^IOiN!7ECtW>?_ra1-e4Ns zoq(B4rqMk%kuYL5wma~a3S=G@i}eJ4Pw>L$FLoen%cCLmwftS2oUm!++=2#ehkZx2F9pD*lfU4>_DY$S5|aOJc>q4Dc7djG5a_N40KQ0}}x77NZU07QE{V!*k1~=#Z81g-x-U~Fyy@Z2xk*oftm!!{|o%A2`AK2bR zMXt_FZ-=9VLqF{VU#r^kdVgI|@mcf}6wEm(HR)NtU(a3S_T)29jX41_1*Px!l6byJ zS;@9zZWRp^WluQRSQOYp6-gJb0|&>ST&ur&1;|A_>v80_HB)OnX^FWGtpaDHF2_c zvKH@tMqc?+gc+c=xvbIr@VtOmw+qeX^Oeza?OeZIqT6vqE*4x}XiV*`-zL3OYI*M6 zIoRO(CZQGMM^nmC_*!q}HtFOD&Yfw0ak}G!1!usP<4ostY3jsVsV-Y|xMoOsM_dr! z94y4v`^A~0*j;)x=Vr~lhmjsi0TmL(^JBiheVXdgHGR^Tu2+7U4y?CVtBd8{--@`qe^HUGi6UtX=xuqzuR1mkns zd!EK$3L5wmU{Zi#_b~RBU1A?!M*|6sJ#xu^XAR$G0(2``21FM+HUE0R z0Jskpv0});xR0;g&$Ir!c&WpujU{h`5F|rkBbt_6eWXS_PDK9M68CG>M~;RAjRSo+ zai;}*UbMkRc?GKZC;up@oKC3Zw*wM6`E*X_%s8O)&ln#6^?WE0Bq3H}Ki!MP0c8|G zF@2wEu z+v-vH2@I|qT#o2p18J5)d&YL43KHxr``fea=ei3ZrvPq9g(Bgy0u*38$2fF4fp7@? z&jMyc2PJRQ?Xl6vrp0c76>=mS5D$YD(g%#D|32u8S73j>LEoOQ(xvPJu5vI4iDF1m z`EQwLk2~h^GyIc+tYUeJIyy1!V@%r$cqMz z-pNu#Hu^7hp^wHE62FGSLg!4kW+8k}>n$O6PckL?j~)tirGFJXNfyKj2Egl(34Sgf zN6)SPXE=enO|ToKz#+0Q2{GQVu4jz_!j!kbgY5sfoiw*D81sw!*1?hs%7I=$WJe7_ z*Io${{xW}7ce;?AWp;$uIr2T(B~blqv+)!!i3Yah6@r z!nD~#fnL>i-yf+QyvM(SPz?F>?eu%PQP~YEvE1~8|A!!yAy7YI4V9!gW6&j&7Y)e_ zC}uQ}>8dglzW@6@m(KcMwJJIdkx(YT3$vkt8J!F$u}TiRJgr0jy=}43r$S(&0HGMB zCq{g!z32iHf+>H@T8p)EPhbTGRh37XrBV@BIQ3b z(IA^6*dwu`{Q8L4&j_xQAKL!TZ5wAzgfBJ4W!8Vr|HwTif^h1NMK(HIamBd`9YHFiew zHZSM*7T$kvz8MWzm0HWvieq#6Vqywm`oW&G^S!u<; z{B0{<){HIa3ELN&Dd)5)F8@q)U8KGytIge{(E8kaHp<79>z}zcU$+{V`hd%tj zbmGnegWh0xT})jfTyNcwby0S)bh$adnjFJ~O$`*s(82pJiYh@J#+1!R=iF6mMn~o` zY%ZF9rt@$0rCrfLy*%#02@df+u|eor^D~tO HF1P*%z7CT# literal 0 HcmV?d00001 diff --git a/intro/server/mixins/db.mixin.js b/intro/server/mixins/db.mixin.js new file mode 100644 index 0000000..98400ba --- /dev/null +++ b/intro/server/mixins/db.mixin.js @@ -0,0 +1,31 @@ +"use strict"; + +const path = require("path"); +const mkdir = require("mkdirp").sync; + +const DbService = require("moleculer-db"); + +//process.env.MONGO_URI = "mongodb://localhost/conduit"; + +module.exports = function(collection) { + if (process.env.MONGO_URI) { + // Mongo adapter + const MongoAdapter = require("moleculer-db-adapter-mongo"); + + return { + mixins: [DbService], + adapter: new MongoAdapter(process.env.MONGO_URI), + collection + }; + } + + // --- NeDB fallback DB adapter + + // Create data folder + mkdir(path.resolve("./data")); + + return { + mixins: [DbService], + adapter: new DbService.MemoryAdapter({ filename: `./data/${collection}.db` }) + }; +}; \ No newline at end of file diff --git a/intro/server/moleculer.config.js b/intro/server/moleculer.config.js new file mode 100644 index 0000000..60548d5 --- /dev/null +++ b/intro/server/moleculer.config.js @@ -0,0 +1,15 @@ +"use strict"; + +const os = require("os"); + +module.exports = { + // It will be unique when scale up instances in Docker or on local computer + nodeID: os.hostname().toLowerCase() + "-" + process.pid, + + logger: false, + logLevel: "info", + + cacher: "memory", + + metrics: false +}; diff --git a/intro/server/package-lock.json b/intro/server/package-lock.json new file mode 100644 index 0000000..a1494a8 --- /dev/null +++ b/intro/server/package-lock.json @@ -0,0 +1,8509 @@ +{ + "name": "moleculer-realworld-example-app", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", + "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + }, + "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.6" + } + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.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" + } + } + } + }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "1.9.1" + } + }, + "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.10", + "normalize-path": "2.1.1" + }, + "dependencies": { + "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.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "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" + } + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + }, + "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.1.0" + } + }, + "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 + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + } + } + }, + "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.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.1" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "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.2", + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "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-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "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.3" + } + }, + "args": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/args/-/args-3.0.8.tgz", + "integrity": "sha512-yZ9pTP1UzoR04R2iusf2H3UG70O7mo55O5DjOS/MPKMTvxAFZenVCgi+JP8Q/dI+18qiM/m4r8En9j5/WlsBjQ==", + "requires": { + "camelcase": "4.1.0", + "chalk": "2.1.0", + "mri": "1.1.0", + "pkginfo": "0.4.1", + "string-similarity": "1.2.0" + }, + "dependencies": { + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "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=" + }, + "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-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "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=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "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=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + }, + "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.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==" + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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 + } + } + }, + "babel-core": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.2.tgz", + "integrity": "sha512-rFKFnHY8sbRSqja2O5eTx0z0Na5hukdtsFt7X9xdBFXMurrJ5YoY78Y/2/EuNZIaDQKEJSfxSMePfsymxt0CZg==", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.1", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", + "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "4.1.6", + "babel-preset-jest": "21.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "6.13.0", + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.10.1", + "test-exclude": "4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", + "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "core-js": "2.5.5", + "regenerator-runtime": "0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", + "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "21.2.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.2", + "babel-runtime": "6.26.0", + "core-js": "2.5.5", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "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.5.5", + "regenerator-runtime": "0.11.1" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.4", + "lodash": "4.17.4" + } + }, + "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" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + } + }, + "base64url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", + "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" + }, + "bcrypt-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/bcrypt-nodejs/-/bcrypt-nodejs-0.0.3.tgz", + "integrity": "sha1-xgkX8m3CNWYVZsaBBhwwPCsohCs=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "binary-search-tree": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz", + "integrity": "sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q=", + "requires": { + "underscore": "1.4.4" + } + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.2", + "http-errors": "1.6.3", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.16" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "2.0.0", + "camelcase": "4.1.0", + "chalk": "2.3.0", + "cli-boxes": "1.0.0", + "string-width": "2.1.1", + "term-size": "1.2.0", + "widest-line": "2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.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" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "bson": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", + "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "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" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsite-record": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/callsite-record/-/callsite-record-3.2.2.tgz", + "integrity": "sha1-mgOQZC5D/ou4I5ReUUZPafQWQ94=", + "dev": true, + "requires": { + "callsite": "1.0.0", + "chalk": "1.1.3", + "error-stack-parser": "1.3.6", + "highlight-es": "1.0.3", + "lodash": "4.17.4", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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 + } + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "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==", + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "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=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-0.3.2.tgz", + "integrity": "sha1-dfpfcowwjMSsWUsF4GzF2A2szYY=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.42", + "memoizee": "0.3.10", + "timers-ext": "0.1.5" + } + }, + "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": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", + "dev": true + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "clui": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/clui/-/clui-0.3.6.tgz", + "integrity": "sha512-Z4UbgZILlIAjkEkZiDOa2aoYjohKx7fa6DxIh6cE9A6WNWZ61iXfQc6CmdC9SKdS5nO0P0UyQ+WfoXfB65e3HQ==", + "dev": true, + "requires": { + "cli-color": "0.3.2" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "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=" + }, + "combined-stream": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "compare-versions": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.1.0.tgz", + "integrity": "sha512-4hAxDSBypT/yp2ySFD346So6Ragw5xmBn/e/agIGl3bZr6DLUqnoRZPusxKrXdYRZpgexO9daejmIenlq/wrIQ==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "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.3.6", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "dev": true, + "requires": { + "dot-prop": "4.2.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "unique-string": "1.0.0", + "write-file-atomic": "2.3.0", + "xdg-basedir": "3.0.0" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + }, + "core-js": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=", + "dev": true + }, + "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=" + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cross-spawn-async": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", + "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", + "dev": true, + "requires": { + "lru-cache": "4.1.2", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + } + } + }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "d": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", + "integrity": "sha1-2hhMU10Y2O57oqoim5FACfrhEwk=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + }, + "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" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "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=" + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "1.0.2" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "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 + }, + "depcheck": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-0.6.9.tgz", + "integrity": "sha1-7+b99c8AwhcoEbwqJAPVnlNB5Rk=", + "dev": true, + "requires": { + "babel-traverse": "6.26.0", + "babylon": "6.18.0", + "builtin-modules": "1.1.1", + "deprecate": "1.0.0", + "deps-regex": "0.1.4", + "js-yaml": "3.11.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "require-package-name": "2.0.1", + "walkdir": "0.0.11", + "yargs": "8.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "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" + } + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "deprecate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=", + "dev": true + }, + "deps-regex": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", + "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", + "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", + "requires": { + "base64url": "2.0.0", + "safe-buffer": "5.1.2" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "1.0.1" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "error-stack-parser": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", + "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", + "dev": true, + "requires": { + "stackframe": "0.3.1" + } + }, + "es5-ext": { + "version": "0.10.42", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", + "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "next-tick": "1.0.0" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42", + "es6-symbol": "3.1.1" + }, + "dependencies": { + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + } + } + }, + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=" + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42" + }, + "dependencies": { + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + } + } + }, + "es6-weak-map": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", + "integrity": "sha1-cGzvnpmqI2undmwjnIueKG6n0ig=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.42", + "es6-iterator": "0.1.3", + "es6-symbol": "2.0.1" + }, + "dependencies": { + "es6-iterator": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz", + "integrity": "sha1-1vWLjE/EE8JJtLqhl2j45NfIlE4=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.42", + "es6-symbol": "2.0.1" + } + }, + "es6-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz", + "integrity": "sha1-dhtcZ8/U8dGK+yNPaR1nhoLLO/M=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.42" + } + } + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "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=" + }, + "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.2", + "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 + }, + "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, + "optional": true + } + } + }, + "eslint": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.11.0.tgz", + "integrity": "sha512-UWbhQpaKlm8h5x/VLwm0S1kheMrDj8jPwhnBMjr/Dlo3qqT7MvcN/UfKAR3E1N4lr4YNtOvS4m3hwsrVc/ky7g==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.2", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "espree": "3.5.4", + "esquery": "1.0.1", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.8", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.11.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.3", + "text-table": "0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.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" + } + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.1", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.42" + }, + "dependencies": { + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + } + } + }, + "eventemitter2": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-4.1.2.tgz", + "integrity": "sha1-DhqEd6+CGm7zmVsxG/dMI6UkfxU=" + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "dev": true, + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + }, + "expect": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", + "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "jest-diff": "21.2.1", + "jest-get-type": "21.2.0", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "0.1.1" + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "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 + }, + "fastest-validator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/fastest-validator/-/fastest-validator-0.6.5.tgz", + "integrity": "sha1-pr3QdNneQYO7JnLzauoK9/7Add0=" + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "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" + } + }, + "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.6" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "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=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.2.tgz", + "integrity": "sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.10.0", + "node-pre-gyp": "0.9.1" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "nan": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", + "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.9.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.3", + "mkdirp": "0.5.1", + "needle": "2.2.0", + "nopt": "4.0.1", + "npm-packlist": "1.1.10", + "npmlog": "4.1.2", + "rc": "1.2.6", + "rimraf": "2.6.2", + "semver": "5.5.0", + "tar": "4.4.1" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.1", + "osenv": "0.1.5" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "1.0.2", + "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.2" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true + } + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "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" + } + }, + "giturl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.0.tgz", + "integrity": "sha1-lzKoHp4lxFeiLw4socnFHbu1Ml8=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "1.3.5" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "1.0.2", + "is-windows": "1.0.2", + "resolve-dir": "1.0.1" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "homedir-polyfill": "1.0.1", + "ini": "1.3.5", + "is-windows": "1.0.2", + "which": "1.3.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "requires": { + "create-error-class": "3.0.2", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.1", + "safe-buffer": "5.1.2", + "timed-out": "4.0.1", + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.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.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.2", + "har-schema": "2.0.0" + } + }, + "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.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + } + }, + "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=", + "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=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.1", + "sntp": "2.1.0" + } + }, + "highlight-es": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", + "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", + "dev": true, + "requires": { + "chalk": "2.4.1", + "is-es2016-keyword": "1.0.0", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "dev": true, + "requires": { + "has-flag": "3.0.0" + } + } + } + }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "1.0.0" + } + }, + "hosted-git-info": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", + "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", + "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.3" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": "1.5.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.4.1", + "sshpk": "1.14.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ignore": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", + "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "dev": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.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" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "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==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "dev": true, + "requires": { + "ci-info": "1.1.3" + } + }, + "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==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-es2016-keyword": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", + "integrity": "sha1-9uVOEQxeT40mXmnS7Q6vjPX0dxg=", + "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=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "0.1.1", + "is-path-inside": "1.0.1" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "requires": { + "is-number": "3.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "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==", + "requires": { + "isobject": "3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "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-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "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-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "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=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz", + "integrity": "sha512-duj6AlLcsWNwUpfyfHt0nWIeRiZpuShnP40YTxOGQgtaN8fd6JYSxsvxUphTDy8V5MfDXo4s/xVCIIvVCO808g==", + "dev": true, + "requires": { + "async": "2.6.0", + "compare-versions": "3.1.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-hook": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-report": "1.1.4", + "istanbul-lib-source-maps": "1.2.4", + "istanbul-reports": "1.3.0", + "js-yaml": "3.11.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz", + "integrity": "sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz", + "integrity": "sha512-p3En6/oGkFQV55Up8ZPC2oLxvgSxD8CzA0yBrhRZSh3pfv3OFj9aSGVC0yoerAi/O4u7jUVnOGVX1eVFM+0tmQ==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", + "dev": true, + "requires": { + "babel-generator": "6.26.1", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.2.0", + "semver": "5.5.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz", + "integrity": "sha512-Azqvq5tT0U09nrncK3q82e/Zjkxa4tkFZv7E6VcqP0QCPn6oNljDPfrZEC/umNXds2t7b8sRJfs6Kmpzt8m2kA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz", + "integrity": "sha512-fDa0hwU/5sDXwAklXgAoCJCOsFsBplVQ6WBldz5UwaqOzmDhUK4nfuR7/G//G2lERlblUNJB8P6e8cXq3a7MlA==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.2.0", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "istanbul-reports": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.3.0.tgz", + "integrity": "sha512-y2Z2IMqE1gefWUaVjrBm0mSKvUkaBy9Vqz8iwr/r40Y9hBbIteH5wqHG/9DLTfJ9xUnUT2j7A3+VVJ6EaYBllA==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", + "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", + "dev": true, + "requires": { + "jest-cli": "21.2.1" + } + }, + "jest-changed-files": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", + "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-cli": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", + "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", + "dev": true, + "requires": { + "ansi-escapes": "3.1.0", + "chalk": "2.3.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "is-ci": "1.1.0", + "istanbul-api": "1.3.1", + "istanbul-lib-coverage": "1.2.0", + "istanbul-lib-instrument": "1.10.1", + "istanbul-lib-source-maps": "1.2.3", + "jest-changed-files": "21.2.0", + "jest-config": "21.2.1", + "jest-environment-jsdom": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve-dependencies": "21.2.0", + "jest-runner": "21.2.1", + "jest-runtime": "21.2.1", + "jest-snapshot": "21.2.1", + "jest-util": "21.2.1", + "micromatch": "2.3.11", + "node-notifier": "5.2.1", + "pify": "3.0.0", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "worker-farm": "1.6.0", + "yargs": "9.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "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" + } + } + } + }, + "jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "21.2.1", + "jest-environment-node": "21.2.1", + "jest-get-type": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "jest-validate": "21.2.1", + "pretty-format": "21.2.1" + } + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.5.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1" + } + }, + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.5.0", + "worker-farm": "1.6.0" + } + }, + "jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "expect": "21.2.1", + "graceful-fs": "4.1.11", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-snapshot": "21.2.1", + "p-cancelable": "0.3.0" + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", + "dev": true + }, + "jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "jest-resolve": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0", + "is-builtin-module": "1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", + "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", + "dev": true, + "requires": { + "jest-regex-util": "21.2.0" + } + }, + "jest-runner": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", + "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", + "dev": true, + "requires": { + "jest-config": "21.2.1", + "jest-docblock": "21.2.0", + "jest-haste-map": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-message-util": "21.2.1", + "jest-runtime": "21.2.1", + "jest-util": "21.2.1", + "pify": "3.0.0", + "throat": "4.1.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "jest-runtime": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", + "dev": true, + "requires": { + "babel-core": "6.26.2", + "babel-jest": "21.2.0", + "babel-plugin-istanbul": "4.1.6", + "chalk": "2.3.0", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "9.0.1" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "21.2.1" + } + }, + "jest-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "jest-message-util": "21.2.1", + "jest-mock": "21.2.0", + "jest-validate": "21.2.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "leven": "2.1.0", + "pretty-format": "21.2.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", + "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "dev": true, + "requires": { + "argparse": "1.0.10", + "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, + "optional": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.1", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.4", + "parse5": "1.5.1", + "request": "2.85.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.4", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "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.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "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": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonwebtoken": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", + "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", + "requires": { + "jws": "3.1.4", + "lodash.includes": "4.3.0", + "lodash.isboolean": "3.0.3", + "lodash.isinteger": "4.0.4", + "lodash.isnumber": "3.0.3", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.once": "4.1.1", + "ms": "2.0.0", + "xtend": "4.0.1" + } + }, + "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" + } + }, + "jwa": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", + "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", + "requires": { + "base64url": "2.0.0", + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.9", + "safe-buffer": "5.1.2" + } + }, + "jws": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", + "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", + "requires": { + "base64url": "2.0.0", + "jwa": "1.1.5", + "safe-buffer": "5.1.2" + } + }, + "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==" + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "4.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "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" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "requires": { + "immediate": "3.0.6" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "localforage": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.1.tgz", + "integrity": "sha1-5JJ+BCMCuGTbMPMhHxO1xvDell0=", + "requires": { + "lie": "3.1.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", + "dev": true + }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + } + } + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", + "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "dev": true, + "requires": { + "es5-ext": "0.10.42" + } + }, + "make-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", + "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "dev": true, + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "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=", + "requires": { + "object-visit": "1.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.2.0" + } + }, + "memoizee": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.3.10.tgz", + "integrity": "sha1-TsoNiu057J0Bf0xcLy9kMvQuXI8=", + "dev": true, + "requires": { + "d": "0.1.1", + "es5-ext": "0.10.42", + "es6-weak-map": "0.1.4", + "event-emitter": "0.3.5", + "lru-queue": "0.1.0", + "next-tick": "0.2.2", + "timers-ext": "0.1.5" + }, + "dependencies": { + "next-tick": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-0.2.2.tgz", + "integrity": "sha1-ddpKkn7liH45BliABltzNkE7MQ0=", + "dev": true + } + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "merge-options": { + "version": "0.0.64", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-0.0.64.tgz", + "integrity": "sha1-y+BPWUppheryf3+PCyo6z2+dVi0=", + "dev": true, + "requires": { + "is-plain-obj": "1.1.0" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "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.6" + } + } + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "1.33.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 + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "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==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "moleculer": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/moleculer/-/moleculer-0.11.10.tgz", + "integrity": "sha512-FJd5orcvMrx/Td2vG5DsytvEViSE1FmI+GjkEY2GOCcqELyb2jR+7vH2CbDLZ81ANMD0bijuPwwDLVEVkN4v+w==", + "requires": { + "args": "3.0.8", + "bluebird": "3.5.1", + "chalk": "2.3.0", + "es6-error": "4.1.1", + "eventemitter2": "4.1.2", + "fastest-validator": "0.6.5", + "glob": "7.1.2", + "lodash": "4.17.4", + "nanomatch": "1.2.7", + "node-object-hash": "1.3.0" + } + }, + "moleculer-db": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.7.0.tgz", + "integrity": "sha1-5XpM1qV2TlyZDfL0Zil5Yo4NgiE=", + "requires": { + "bluebird": "3.5.1", + "lodash": "4.17.4", + "nedb": "1.8.0" + } + }, + "moleculer-db-adapter-mongo": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/moleculer-db-adapter-mongo/-/moleculer-db-adapter-mongo-0.1.6.tgz", + "integrity": "sha1-ce9jZx3kHm0TLkO889rrEuo+t9o=", + "requires": { + "mongodb": "2.2.33" + } + }, + "moleculer-repl": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/moleculer-repl/-/moleculer-repl-0.3.2.tgz", + "integrity": "sha1-T9VHVPBEyS847yZYnkvmKX+LepI=", + "dev": true, + "requires": { + "chalk": "2.3.0", + "clui": "0.3.6", + "lodash": "4.17.4", + "pretty-bytes": "4.0.2", + "table": "4.0.2", + "vorpal": "1.12.0" + }, + "dependencies": { + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "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 + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.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" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + } + } + }, + "moleculer-web": { + "version": "0.6.0-beta7", + "resolved": "https://registry.npmjs.org/moleculer-web/-/moleculer-web-0.6.0-beta7.tgz", + "integrity": "sha1-VoyWL5ghPc3OPCsyCCTHnlYYYpM=", + "requires": { + "body-parser": "1.18.2", + "es6-error": "4.0.2", + "isstream": "0.1.2", + "lodash": "4.17.4", + "nanomatch": "1.2.5", + "path-to-regexp": "1.7.0", + "serve-static": "1.13.1" + }, + "dependencies": { + "es6-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.0.2.tgz", + "integrity": "sha1-7sXHJurO9Rt/a3PCDbbhsTsGnJg=" + }, + "nanomatch": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.5.tgz", + "integrity": "sha512-ZHJamn1utzcUvW8Bais+Kk7pobp6dKmUEKOSQ/HI2glGwOMA/GvjRRKlLyORBUrdRXnwTU/6LIBcW7jYSlutgg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "mongodb": { + "version": "2.2.33", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.33.tgz", + "integrity": "sha1-tTfEcdNKZlG0jzb9vyl1A0Dgi1A=", + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.17", + "readable-stream": "2.2.7" + }, + "dependencies": { + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "mongodb-core": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.17.tgz", + "integrity": "sha1-pBizN6FKFJkPtRC5I97mqBMXPfg=", + "requires": { + "bson": "1.0.6", + "require_optional": "1.0.1" + } + }, + "mri": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.0.tgz", + "integrity": "sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "nats": { + "version": "0.7.24", + "resolved": "https://registry.npmjs.org/nats/-/nats-0.7.24.tgz", + "integrity": "sha1-fSdofC29iqYFipkP7mz1wb3Idig=", + "requires": { + "nuid": "0.6.14" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "nedb": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz", + "integrity": "sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg=", + "requires": { + "async": "0.2.10", + "binary-search-tree": "0.2.5", + "localforage": "1.7.1", + "mkdirp": "0.5.1", + "underscore": "1.4.4" + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "node-emoji": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz", + "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==", + "dev": true, + "requires": { + "lodash.toarray": "4.4.0" + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-localstorage": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz", + "integrity": "sha1-RaBgHGky395mRKIzYfG+Fzx1068=", + "dev": true + }, + "node-notifier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.5.0", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "node-object-hash": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-1.3.0.tgz", + "integrity": "sha512-/IHFGoMJWIAcFbrI3KYx6TUmHdBXRZXACAVbkHzYB39JZzoVqgme7wcMnhrOwCvrO8HfIipFTBhELJFMhiw1mg==" + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.6.0", + "is-builtin-module": "1.0.0", + "semver": "5.5.0", + "validate-npm-package-license": "3.0.3" + } + }, + "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.1.0" + } + }, + "npm-check": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/npm-check/-/npm-check-5.5.2.tgz", + "integrity": "sha512-xK2DNWha5ZUguocpoOmRO6650d6TAWgdmJljm4XhOvjMhROrnitfx4FH9I2b3AgXaPoBICnuy4Ubo+mTaQqlnw==", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "callsite-record": "3.2.2", + "chalk": "1.1.3", + "co": "4.6.0", + "depcheck": "0.6.9", + "execa": "0.2.2", + "giturl": "1.0.0", + "global-modules": "1.0.0", + "globby": "4.1.0", + "inquirer": "0.12.0", + "is-ci": "1.1.0", + "lodash": "4.17.4", + "meow": "3.7.0", + "merge-options": "0.0.64", + "minimatch": "3.0.4", + "node-emoji": "1.8.1", + "ora": "0.2.3", + "package-json": "4.0.1", + "path-exists": "2.1.0", + "pkg-dir": "1.0.0", + "semver": "5.5.0", + "semver-diff": "2.1.0", + "text-table": "0.2.0", + "throat": "2.0.2", + "update-notifier": "2.5.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "execa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.2.2.tgz", + "integrity": "sha1-4urUcsLDGq1vc/GslW7vReEjIMs=", + "dev": true, + "requires": { + "cross-spawn-async": "2.2.5", + "npm-run-path": "1.0.0", + "object-assign": "4.1.1", + "path-key": "1.0.0", + "strip-eof": "1.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "6.0.4", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "npm-run-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz", + "integrity": "sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8=", + "dev": true, + "requires": { + "path-key": "1.0.0" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-key": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz", + "integrity": "sha1-XVPVeAGWRsDWiADbThRua9wqx68=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "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 + }, + "throat": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz", + "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "nuid": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/nuid/-/nuid-0.6.14.tgz", + "integrity": "sha1-oiXItyDkbFY62NE2QTaGafbCW0g=" + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwmatcher": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "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=", + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "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=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.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==" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "requires": { + "isobject": "3.0.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "requires": { + "isobject": "3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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=", + "requires": { + "wrappy": "1.0.2" + } + }, + "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.2.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "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", + "wordwrap": "1.0.0" + } + }, + "ora": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", + "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-spinners": "0.1.2", + "object-assign": "4.1.1" + }, + "dependencies": { + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "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 + } + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", + "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.2.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "6.7.1", + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0", + "semver": "5.5.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "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=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "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.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "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 + }, + "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 + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-bytes": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "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.6" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.5.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "rc": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", + "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", + "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "2.0.0", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + } + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "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==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "1.2.6", + "safe-buffer": "5.1.2" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "1.2.6" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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 + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.85.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", + "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.7.0", + "caseless": "0.12.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.2", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.6.0", + "uuid": "3.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-package-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz", + "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.5.0" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "global-modules": "1.0.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "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.1", + "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==" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "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==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "requires": { + "ret": "0.1.15" + } + }, + "sane": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.0.tgz", + "integrity": "sha512-glfKd7YH4UCrh/7dD+UESsr8ylKWRE7UQPoXuz28FgmcF0ViJQhCTCCZHICRKxf8G8O1KdLEn20dcICK54c7ew==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.2.2", + "micromatch": "3.1.10", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + }, + "dependencies": { + "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.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "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" + } + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + }, + "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.1.0" + } + }, + "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 + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + } + } + }, + "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.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.1" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "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.2", + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "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-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "5.5.0" + } + }, + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "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.6.3", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "requires": { + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "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 + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "slug": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/slug/-/slug-0.9.1.tgz", + "integrity": "sha1-rwj2CKfBFRa2F3iqgA3OhMUYz9o=", + "requires": { + "unicode": "10.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.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=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + } + } + }, + "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.1", + "snapdragon-util": "3.0.1" + } + }, + "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.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.6" + } + } + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.1" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "requires": { + "atob": "2.1.0", + "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.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "spdx-correct": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", + "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.1.0", + "spdx-license-ids": "3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", + "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", + "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==", + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "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==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", + "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "stackframe": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", + "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "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=", + "requires": { + "is-descriptor": "0.1.6" + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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" + } + } + } + }, + "string-similarity": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-1.2.0.tgz", + "integrity": "sha1-11FTyzg4RjGLejmo2SkrtNtOnDA=", + "requires": { + "lodash": "4.17.4" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "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.2" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "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.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "requires": { + "has-flag": "2.0.0" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "ajv-keywords": "3.1.0", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "3.0.2" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.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" + } + } + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "0.7.0" + } + }, + "test-exclude": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.1.tgz", + "integrity": "sha512-qpqlP/8Zl+sosLxBcVKl9vYy26T9NPalxSzzCP/OY6K7j938ui2oKgo+kRZYfxAeIpLqpbVnsHq1tyV70E4lWQ==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "3.1.10", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + }, + "dependencies": { + "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.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "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.1" + } + } + } + }, + "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" + } + }, + "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.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.6" + } + }, + "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.1" + } + }, + "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.1.0" + } + }, + "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 + } + } + }, + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "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.2" + } + }, + "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.1" + } + } + } + }, + "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.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.1" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "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.2.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.6" + } + } + } + }, + "is-odd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", + "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", + "dev": true, + "requires": { + "is-number": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "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.2", + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + }, + "nanomatch": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", + "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "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-odd": "2.0.0", + "is-windows": "1.0.2", + "kind-of": "6.0.2", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "timers-ext": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.5.tgz", + "integrity": "sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg==", + "dev": true, + "requires": { + "es5-ext": "0.10.42", + "next-tick": "1.0.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "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 + }, + "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=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "1.0.2", + "isobject": "3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "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==", + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, + "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" + } + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "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.1.2" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": 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" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "underscore": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", + "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" + }, + "unicode": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/unicode/-/unicode-10.0.0.tgz", + "integrity": "sha1-5dUcHbk7bHGguHngsMSvfm/faI4=" + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "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=" + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "1.3.0", + "chalk": "2.3.0", + "configstore": "3.1.2", + "import-lazy": "2.1.0", + "is-ci": "1.1.0", + "is-installed-globally": "0.1.0", + "is-npm": "1.0.0", + "latest-version": "3.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "3.0.0" + } + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "1.0.4" + } + }, + "use": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", + "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", + "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "dev": true, + "requires": { + "spdx-correct": "3.0.0", + "spdx-expression-parse": "3.0.0" + } + }, + "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.3.0" + } + }, + "vorpal": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz", + "integrity": "sha1-S+eypOSPj8/JzzZIxBnTEcUiFZ0=", + "dev": true, + "requires": { + "babel-polyfill": "6.26.0", + "chalk": "1.1.3", + "in-publish": "2.0.0", + "inquirer": "0.11.0", + "lodash": "4.17.4", + "log-update": "1.0.2", + "minimist": "1.2.0", + "node-localstorage": "0.6.0", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-width": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz", + "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "inquirer": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz", + "integrity": "sha1-dEi/qSQJKvMR1HFzu6uZDK4rsCc=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "1.1.1", + "figures": "1.7.0", + "lodash": "3.10.1", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "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 + } + } + }, + "walkdir": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.0.11.tgz", + "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=", + "dev": true + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "0.2.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.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" + } + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "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" + } + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } + } + } +} diff --git a/intro/server/package.json b/intro/server/package.json new file mode 100644 index 0000000..a0d4d84 --- /dev/null +++ b/intro/server/package.json @@ -0,0 +1,47 @@ +{ + "name": "moleculer-realworld-example-app", + "version": "1.0.0", + "description": "RealWorld example app with Moleculer microservices framework", + "scripts": { + "start": "moleculer-runner services" + }, + "keywords": [ + "microservices", + "moleculer", + "realworld" + ], + "author": "", + "license": "MIT", + "devDependencies": { + "eslint": "4.11.0", + "jest": "21.2.1", + "jest-cli": "21.2.1", + "moleculer-repl": "^0.3.0", + "npm-check": "5.5.2" + }, + "dependencies": { + "bcrypt-nodejs": "0.0.3", + "jsonwebtoken": "8.1.0", + "lodash": "4.17.4", + "moleculer": "^0.11.0", + "moleculer-db": "0.7.0", + "moleculer-db-adapter-mongo": "0.1.6", + "moleculer-web": "0.6.0-beta7", + "nats": "0.7.24", + "slug": "0.9.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ice-services/moleculer-realworld-example-app.git" + }, + "engines": { + "node": ">= 6.x.x" + }, + "jest": { + "testEnvironment": "node", + "rootDir": "./services", + "roots": [ + "../test" + ] + } +} diff --git a/intro/server/public/android-chrome-192x192.png b/intro/server/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..ff83974ad3f0957dce04cf055cf43f880a0044e4 GIT binary patch literal 2774 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 literal 0 HcmV?d00001 diff --git a/intro/server/public/android-chrome-512x512.png b/intro/server/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8f58163e057f4a7d03cc14ca0b49c766d053bd GIT binary patch literal 9631 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 K{<-f3KmH$Sk#vXv literal 0 HcmV?d00001 diff --git a/intro/server/public/apple-touch-icon.png b/intro/server/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0a048cc9004391214941081a76c9ad02a78ce8fc GIT binary patch literal 2327 zcmZ`(2~<;88h#KE0V$4x$fnF#smlO?utq>pl7O-(V1hst2s}a}Noo?=L=iP21){}; zgvEroKtfQKK#5Z7NW~?AP!cN4pvPK6=GCe-pa(|CJkRT)9nYC_?)~rgfB*L{_q==F zncZ;&I~x}p008WwqaqXFv+Lttih`}p%6G5@EOH`ZBLJYCZ~Gy`681ePQ3*( z;Kk@CN<_R!F6JV7n1|C}%Yip?0JbnTnSeK~A6-*FfM{Tg$Y2slN5Jo7>mMZ21upW3 zvhDXMOu`E(h+sqvTUfl9g5X6GX^oJJ7?}al!1$9Cn1>fq5Ya5w|1*!w0EZ9_?0y1} z5YiN>27iu@Fr^3l*^YA(;t~P=6;#1lbH1edTwzny*W#MWBGLJ;E?=l9HoMq(CLq}E zNO}5w_GzON?AJd(C_emZ?VDEm ziyg$V$^==%$XKe`bDSXMf0!2j6m2Lx1`R@l~7rNksx* zQ$3gY0PtC9aKUexgJ~o>PFhdBCF+I$?g%4_6}-@eSh2Kj@tssXwCVc^f^@wSt$Ecny{x< zwZt{8myS{iC2EDEGOk@`(Y5zShST!N13oda+jk|7YW|^(?D~6vqu0(@{1(WSVR1N- zC#-(OTtj5`a?R-P^X@{8jvd0|ZQ^cy-(+})@WeeCnN1*dYN#`hUrOJjMv`Z=F+|MB z{IB>Dt0ysg*(1S<;h3b(kqwHc|KjGa&>r!}yZhB>ovA0W2d_1=H7}rAfoN#^`+Vn_ z$pUst!)fot>#At3r!ul3Fn=-(Ujmd5krGwb+(0ZT7Bi@uH7x9xd~46FmfC7UXv&al z-VsKf8#|JGQZFskx82$*^4?+8rm=UE%k|B(`m;)h$*t*H`=8WiTwkGd2y+WMvCTiW zf&NZvMy8e?as1Z^NE1xIvE%`_ixGbf1+gJc|6H=u(e2CiBC0RtbT*m4UZKR2ZQow(49&g zUsW)Z&TEp-_9|{{N>=!;8^K_Rd8%R5$e9)zeY2fo#p#2j_?I>piPp zHa!)fsunV?Nj3{|Xk~)RHn6cd{$*TUi=je)PMGD{BomTnoE$KAdFlgW@GU5hO%UBd zsT9aOMg1*IP&#V3T3ZNxUK9;p#GcwO9N&8^mDjC*O{;UJtsjgbZH@ptu)Kw%)Axb^f*(B+c78_C3>|Px)Te z&p00IDbazawL7~)M8pnt z+uU$SO7pmk_=7rp20Q0NSx6O*ONejPYz6JRm(qAU>TjSts7fof?vyM{X*VgYjmh%X z*#i&s=Ta1zhjmitP6^|FXkt)CW3#KTJ!AqL#~;vD#V$Jdx4WK$OXg%{aI&$KL)q{F z_@RA+z0d((Xul*h2J0J)^+j(+`(e>&wg)u(KM8rvtX#10|0kH2B;eo#=Z_r{nII=W z<4`t`pP%oY%b>F<8LVt?=AoRrSD`Mjh*Xr6%t^?|_h21jg1HB?JvfD|Y>!+PhXMcv z_0QifTlyt&!-j|Pk5thw5&+aXTW^Z(%5^Ju)i|J5dPJ7`-_1g;>rC=^^jLd;KsDet gVD+dpO0?4(fSmrqdAmK}0^9GXpZBH-zFFaFJ#{d8T literal 0 HcmV?d00001 diff --git a/intro/server/public/asset-manifest.json b/intro/server/public/asset-manifest.json new file mode 100644 index 0000000..189fff6 --- /dev/null +++ b/intro/server/public/asset-manifest.json @@ -0,0 +1,4 @@ +{ + "main.js": "static/js/main.cd99036f.js", + "main.js.map": "static/js/main.cd99036f.js.map" +} \ No newline at end of file diff --git a/intro/server/public/assets/images/error.jpg b/intro/server/public/assets/images/error.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dfc53d1432625a658baa9d39e2f2794846345564 GIT binary patch literal 74241 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 literal 0 HcmV?d00001 diff --git a/intro/server/public/browserconfig.xml b/intro/server/public/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/intro/server/public/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/intro/server/public/favicon-16x16.png b/intro/server/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..246ebd738342ea5e54cda880944ec5315bad3f87 GIT binary patch literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>rFC0o{dp-A>GuO+j(et_I zyk{OBCGJmc-QAwJz5Sdc4b;MzpcO;4W!g*rW5977~7`<{O()}$c9lAvsHgKi%N5z)O$emAGKZCnwXX QKr0wLUHx3vIVCg!0Dzqsn*aa+ literal 0 HcmV?d00001 diff --git a/intro/server/public/favicon-32x32.png b/intro/server/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..72a40d1b1c02c162e7df5aa0d2335a0562fa2377 GIT binary patch literal 985 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10;$eVKi0l9V|3gT1H)(~-#)@mtSCrIbe{S0rpb({Rxmi0Up{MJAU6HRW!*ov`K1hqVkq^l>c% z!+(alOIE8wLEQK27*+v|x@eQQ^=wp9#e1-V=;X?e>llE>0u@K4Q~*)wq?x79TpBJ| z11*inEe2Wvw7Tx1^|Q@Dy;eZG9<|hGf&$#bJ4;X3%1XnzJ!^1Nd?Qa#g$x(syO#9tlqPrX7~JBj$L&- z{dO?sGcRH3>xthDG?6jM+uensgH_f8$l)yTh%5$*#e*`sfBUUD6 zA>NOho<0T2v3a^UhFF|#J$2pbkb{83MZq_$g4_q0l$@^INV>ivV)EVp{}t0Gr5bPM z{J8HPv+>r5koj}HD-8bkGlVLMu>^EaWpdoAuwYtOQY3?j_Uc8Z+C~ecUO%{UM}WaK zd-B$;dy|i_tZ=)1dE2>naWVPtxEJshT|6o;J+V3F%cXo4=2r&7wVyp@I45*A{#_~H zAiLeRzg9?Sfq;A~bDQ#imxf@@wsgk_^EcNQa-Q>_bYTCc|5ke#zfay_`d@F)^?)BL za+m%~*k!W4QUBQUU$yEg&j$ZRV*6d+&tm-O*|V7cY{Tcknz~FjF8QP171&khyVNsz z*>}dVEvpfVWeT?M>}%`tf5g7ZuIs+NW!!tGxV@7~fPti1;u=wsl30>zm0Xkxq!^40 z3@vmGOmz*6LJW+p3@xk-jkOJotPBjCPJBo~(U6;;l9^VCTZ8dbj~hS@k{}y`^V3So z6N^$A%FE03GV`*FlM@S4_413-XTP(N0xAlx3W+EQN-S3>D9TUE%t=)!sVqoU$Sf#H zW?-n8^Y{}FM`4(T#wq{PXFQ(m_pwD+_y17GV}vaA`0(oWiWUIYi;~jVmXP loH-(Mg#C1b#{w@shF9W(C7+y3rvj~D@O1TaS?83{1OR(=hlv0H literal 0 HcmV?d00001 diff --git a/intro/server/public/favicon.ico b/intro/server/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ac278087f4c38139b33db4edbfbf1f46cf9f8a58 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/intro/server/public/index.html b/intro/server/public/index.html new file mode 100644 index 0000000..4622d2a --- /dev/null +++ b/intro/server/public/index.html @@ -0,0 +1,43 @@ + + + + + Elm Workshop + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/intro/server/public/main.css b/intro/server/public/main.css new file mode 100644 index 0000000..43a88ad --- /dev/null +++ b/intro/server/public/main.css @@ -0,0 +1,4 @@ +.tag-pill.tag-selected{background-color:#5cb85c;color:white;} +.logo-font{font-family:titillium web,sans-serif}html{position:relative;min-height:100vh;padding-bottom:100px}/*!* Bootstrap v4.0.0-alpha.2 (http://getbootstrap.com) +* Copyright 2011-2016 Twitter, Inc. +* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*//*!normalize.css commit fe56763 | MIT License | github.com/necolas/normalize.css*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active{outline:0}a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*,*::before,*::after,*::first-letter,*::first-line{text-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.tag{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}@-ms-viewport{width:device-width;}html{font-size:16px;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}body{font-family:source sans pro,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #818a91}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#5cb85c;text-decoration:none}a:focus,a:hover{color:#3d8b3d;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:not([href]){color:inherit;text-decoration:none}a:not([href]):focus,a:not([href]):hover{color:inherit;text-decoration:none}a:not([href]):focus{outline:0}pre{margin-top:0;margin-bottom:1rem}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}table{background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;text-align:left;caption-side:bottom}th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,textarea{margin:0;line-height:inherit;border-radius:0}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300}.display-2{font-size:5.5rem;font-weight:300}.display-3{font-size:4.5rem;font-weight:300}.display-4{font-size:3.5rem;font-weight:300}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#818a91}.blockquote-footer::before{content:"\2014 \00A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer::before{content:""}.blockquote-reverse .blockquote-footer::after{content:"\00A0 \2014"}.img-fluid,.carousel-inner>.carousel-item>img,.carousel-inner>.carousel-item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:.3rem}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#818a91}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,liberation mono,courier new,monospace}code{padding:.2rem .4rem;font-size:90%;color:#bd4147;background-color:#f7f7f9;border-radius:.25rem}kbd{padding:.2rem .4rem;font-size:90%;color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#373a3c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}@media(min-width:544px){.container{max-width:576px}}@media(min-width:768px){.container{max-width:720px}}@media(min-width:992px){.container{max-width:940px}}@media(min-width:1200px){.container{max-width:1140px}}.container-fluid{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.row{display:flex;flex-wrap:wrap;margin-left:-15px;margin-right:-15px}.col-xs{position:relative;flex-basis:0;flex-grow:1;max-width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 8.33333%;max-width:8.33333%}.col-xs-2{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 16.66667%;max-width:16.66667%}.col-xs-3{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 25%;max-width:25%}.col-xs-4{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 33.33333%;max-width:33.33333%}.col-xs-5{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 41.66667%;max-width:41.66667%}.col-xs-6{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 50%;max-width:50%}.col-xs-7{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 58.33333%;max-width:58.33333%}.col-xs-8{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%}.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 75%;max-width:75%}.col-xs-10{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 83.33333%;max-width:83.33333%}.col-xs-11{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 91.66667%;max-width:91.66667%}.col-xs-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 100%;max-width:100%}.pull-xs-0{right:auto}.pull-xs-1{right:8.33333%}.pull-xs-2{right:16.66667%}.pull-xs-3{right:25%}.pull-xs-4{right:33.33333%}.pull-xs-5{right:41.66667%}.pull-xs-6{right:50%}.pull-xs-7{right:58.33333%}.pull-xs-8{right:66.66667%}.pull-xs-9{right:75%}.pull-xs-10{right:83.33333%}.pull-xs-11{right:91.66667%}.pull-xs-12{right:100%}.push-xs-0{left:auto}.push-xs-1{left:8.33333%}.push-xs-2{left:16.66667%}.push-xs-3{left:25%}.push-xs-4{left:33.33333%}.push-xs-5{left:41.66667%}.push-xs-6{left:50%}.push-xs-7{left:58.33333%}.push-xs-8{left:66.66667%}.push-xs-9{left:75%}.push-xs-10{left:83.33333%}.push-xs-11{left:91.66667%}.push-xs-12{left:100%}.offset-xs-1{margin-left:8.33333%}.offset-xs-2{margin-left:16.66667%}.offset-xs-3{margin-left:25%}.offset-xs-4{margin-left:33.33333%}.offset-xs-5{margin-left:41.66667%}.offset-xs-6{margin-left:50%}.offset-xs-7{margin-left:58.33333%}.offset-xs-8{margin-left:66.66667%}.offset-xs-9{margin-left:75%}.offset-xs-10{margin-left:83.33333%}.offset-xs-11{margin-left:91.66667%}@media(min-width:544px){.col-sm{position:relative;flex-basis:0;flex-grow:1;max-width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col-sm-1{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 25%;max-width:25%}.col-sm-4{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 50%;max-width:50%}.col-sm-7{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 75%;max-width:75%}.col-sm-10{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 100%;max-width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.33333%}.pull-sm-2{right:16.66667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.33333%}.pull-sm-5{right:41.66667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.33333%}.pull-sm-8{right:66.66667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.33333%}.pull-sm-11{right:91.66667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.33333%}.push-sm-2{left:16.66667%}.push-sm-3{left:25%}.push-sm-4{left:33.33333%}.push-sm-5{left:41.66667%}.push-sm-6{left:50%}.push-sm-7{left:58.33333%}.push-sm-8{left:66.66667%}.push-sm-9{left:75%}.push-sm-10{left:83.33333%}.push-sm-11{left:91.66667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0%}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media(min-width:768px){.col-md{position:relative;flex-basis:0;flex-grow:1;max-width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col-md-1{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 25%;max-width:25%}.col-md-4{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 50%;max-width:50%}.col-md-7{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 75%;max-width:75%}.col-md-10{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 100%;max-width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.33333%}.pull-md-2{right:16.66667%}.pull-md-3{right:25%}.pull-md-4{right:33.33333%}.pull-md-5{right:41.66667%}.pull-md-6{right:50%}.pull-md-7{right:58.33333%}.pull-md-8{right:66.66667%}.pull-md-9{right:75%}.pull-md-10{right:83.33333%}.pull-md-11{right:91.66667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.33333%}.push-md-2{left:16.66667%}.push-md-3{left:25%}.push-md-4{left:33.33333%}.push-md-5{left:41.66667%}.push-md-6{left:50%}.push-md-7{left:58.33333%}.push-md-8{left:66.66667%}.push-md-9{left:75%}.push-md-10{left:83.33333%}.push-md-11{left:91.66667%}.push-md-12{left:100%}.offset-md-0{margin-left:0%}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media(min-width:992px){.col-lg{position:relative;flex-basis:0;flex-grow:1;max-width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col-lg-1{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 25%;max-width:25%}.col-lg-4{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 50%;max-width:50%}.col-lg-7{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 75%;max-width:75%}.col-lg-10{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 100%;max-width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.33333%}.pull-lg-2{right:16.66667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.33333%}.pull-lg-5{right:41.66667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.33333%}.pull-lg-8{right:66.66667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.33333%}.pull-lg-11{right:91.66667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.33333%}.push-lg-2{left:16.66667%}.push-lg-3{left:25%}.push-lg-4{left:33.33333%}.push-lg-5{left:41.66667%}.push-lg-6{left:50%}.push-lg-7{left:58.33333%}.push-lg-8{left:66.66667%}.push-lg-9{left:75%}.push-lg-10{left:83.33333%}.push-lg-11{left:91.66667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0%}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media(min-width:1200px){.col-xl{position:relative;flex-basis:0;flex-grow:1;max-width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col-xl-1{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 25%;max-width:25%}.col-xl-4{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 50%;max-width:50%}.col-xl-7{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 75%;max-width:75%}.col-xl-10{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px;flex:0 0 100%;max-width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.33333%}.pull-xl-2{right:16.66667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.33333%}.pull-xl-5{right:41.66667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.33333%}.pull-xl-8{right:66.66667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.33333%}.pull-xl-11{right:91.66667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.33333%}.push-xl-2{left:16.66667%}.push-xl-3{left:25%}.push-xl-4{left:33.33333%}.push-xl-5{left:41.66667%}.push-xl-6{left:50%}.push-xl-7{left:58.33333%}.push-xl-8{left:66.66667%}.push-xl-9{left:75%}.push-xl-10{left:83.33333%}.push-xl-11{left:91.66667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0%}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #eceeef}.table-bordered th,.table-bordered td{border:1px solid #eceeef}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover tbody tr:hover{background-color:#f5f5f5}.table-active,.table-active>th,.table-active>td{background-color:#f5f5f5}.table-hover .table-active:hover{background-color:#e8e8e8}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:#e8e8e8}.table-success,.table-success>th,.table-success>td{background-color:#dff0d8}.table-hover .table-success:hover{background-color:#d0e9c6}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>th,.table-info>td{background-color:#d9edf7}.table-hover .table-info:hover{background-color:#c4e3f3}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>th,.table-warning>td{background-color:#fcf8e3}.table-hover .table-warning:hover{background-color:#faf2cc}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>th,.table-danger>td{background-color:#f2dede}.table-hover .table-danger:hover{background-color:#ebcccc}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.table-responsive{display:block;width:100%;min-height:.01%;overflow-x:auto}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#55595c;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse.table-bordered{border:0}.table-inverse th,.table-inverse td,.table-inverse thead th{border-color:#55595c}.table-reflow thead{float:left}.table-reflow tbody{display:block;white-space:nowrap}.table-reflow th,.table-reflow td{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow th:last-child,.table-reflow td:last-child{border-right:1px solid #eceeef}.table-reflow thead:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tbody:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td{border-bottom:1px solid #eceeef}.table-reflow tr{float:left}.table-reflow tr th,.table-reflow tr td{display:block!important;border:1px solid #eceeef}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;color:#55595c;background-color:#fff;background-image:none;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{border-color:#66afe9;outline:0}.form-control::placeholder{color:#999;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:2.5rem}.form-control-file,.form-control-range{display:block}.form-control-label{padding:.5rem .75rem;margin-bottom:0}.form-control-legend{padding:.5rem .75rem;margin-bottom:0;font-size:1rem}_::-webkit-full-page-media.form-control,input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:2.5rem}_::-webkit-full-page-media.input-sm,.input-group-sm _::-webkit-full-page-media.form-control,input[type=date].input-sm,.input-group-sm input[type=date].form-control,input[type=time].input-sm,.input-group-sm input[type=time].form-control,input[type=datetime-local].input-sm,.input-group-sm input[type=datetime-local].form-control,input[type=month].input-sm,.input-group-sm input[type=month].form-control{line-height:1.8125rem}_::-webkit-full-page-media.input-lg,.input-group-lg _::-webkit-full-page-media.form-control,input[type=date].input-lg,.input-group-lg input[type=date].form-control,input[type=time].input-lg,.input-group-lg input[type=time].form-control,input[type=datetime-local].input-lg,.input-group-lg input[type=datetime-local].form-control,input[type=month].input-lg,.input-group-lg input[type=month].form-control{line-height:3.16667rem}.form-control-static{min-height:2.5rem;padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0}.form-control-static.form-control-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn,.form-control-static.form-control-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.form-group{margin-bottom:1rem}.radio,.checkbox{position:relative;display:block;margin-bottom:.75rem}.radio label,.checkbox label{padding-left:1.25rem;margin-bottom:0;cursor:pointer}.radio label input:only-child,.checkbox label input:only-child{position:static}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.radio+.radio,.checkbox+.checkbox{margin-top:-.25rem}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:1.25rem;margin-bottom:0;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:.75rem}input[type=radio]:disabled,input[type=radio].disabled,input[type=checkbox]:disabled,input[type=checkbox].disabled{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label{cursor:not-allowed}.form-control-success,.form-control-warning,.form-control-danger{padding-right:2.25rem;background-repeat:no-repeat;background-position:center right .625rem;background-size:1.25rem 1.25rem}.has-success .text-help,.has-success .form-control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label,.has-success .custom-control{color:#5cb85c}.has-success .form-control{border-color:#5cb85c}.has-success .input-group-addon{color:#5cb85c;border-color:#5cb85c;background-color:#eaf6ea}.has-success .form-control-feedback{color:#5cb85c}.has-success .form-control-success{background-image:url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGZpbGw9IiM1Y2I4NWMiIGQ9Ik0yLjMgNi43My42IDQuNTNjLS40LTEuMDQuNDYtMS40IDEuMS0uOGwxLjEgMS40IDMuNC0zLjhjLjYtLjYzIDEuNi0uMjcgMS4yLjdsLTQgNC42Yy0uNDMuNS0uOC40LTEuMS4xeiIvPjwvc3ZnPg==)}.has-warning .text-help,.has-warning .form-control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label,.has-warning .custom-control{color:#f0ad4e}.has-warning .form-control{border-color:#f0ad4e}.has-warning .input-group-addon{color:#f0ad4e;border-color:#f0ad4e;background-color:#fff}.has-warning .form-control-feedback{color:#f0ad4e}.has-warning .form-control-warning{background-image:url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGZpbGw9IiNmMGFkNGUiIGQ9Ik00LjQgNS4zMjRoLS44di0yLjQ2aC44em0wIDEuNDJoLS44VjUuODloLjh6TTMuNzYuNjMuMDQgNy4wNzVjLS4xMTUuMi4wMTYuNDI1LjI2LjQyNmg3LjM5N2MuMjQyLjAuMzcyLS4yMjYuMjU4LS40MjZDNi43MjYgNC45MjQgNS40NyAyLjc5IDQuMjUzLjYzYy0uMTEzLS4xNzQtLjM5LS4xNzQtLjQ5NC4weiIvPjwvc3ZnPg==)}.has-danger .text-help,.has-danger .form-control-label,.has-danger .radio,.has-danger .checkbox,.has-danger .radio-inline,.has-danger .checkbox-inline,.has-danger.radio label,.has-danger.checkbox label,.has-danger.radio-inline label,.has-danger.checkbox-inline label,.has-danger .custom-control{color:#b85c5c}.has-danger .form-control{border-color:#b85c5c}.has-danger .input-group-addon{color:#b85c5c;border-color:#b85c5c;background-color:#f6eaea}.has-danger .form-control-feedback{color:#b85c5c}.has-danger .form-control-danger{background-image:url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiNkOTUzNGYiIHZpZXdCb3g9Ii0yIC0yIDcgNyI+PHBhdGggc3Ryb2tlPSIjZDk1MzRmIiBkPSJNMCAwbDMgM20wLTNMMCAzIi8+PGNpcmNsZSByPSIuNSIvPjxjaXJjbGUgY3g9IjMiIHI9Ii41Ii8+PGNpcmNsZSBjeT0iMyIgcj0iLjUiLz48Y2lyY2xlIGN4PSIzIiBjeT0iMyIgcj0iLjUiLz48L3N2Zz4=)}@media(min-width:544px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;border-radius:.25rem}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{text-decoration:none}.btn.focus{text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-primary:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#449d44;border-color:#419641}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#419641;background-image:none}.btn-primary:active:hover,.btn-primary:active:focus,.btn-primary:active.focus,.btn-primary.active:hover,.btn-primary.active:focus,.btn-primary.active.focus,.open>.btn-primary.dropdown-toggle:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#2d672d}.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary:disabled:focus,.btn-primary:disabled.focus{background-color:#5cb85c;border-color:#5cb85c}.btn-primary.disabled:hover,.btn-primary:disabled:hover{background-color:#5cb85c;border-color:#5cb85c}.btn-secondary{color:#373a3c;background-color:#fff;border-color:#ccc}.btn-secondary:hover{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary:focus,.btn-secondary.focus{color:#373a3c;background-color:#e6e6e6;border-color:#adadad}.btn-secondary:active,.btn-secondary.active,.open>.btn-secondary.dropdown-toggle{color:#373a3c;background-color:#e6e6e6;border-color:#adadad;background-image:none}.btn-secondary:active:hover,.btn-secondary:active:focus,.btn-secondary:active.focus,.btn-secondary.active:hover,.btn-secondary.active:focus,.btn-secondary.active.focus,.open>.btn-secondary.dropdown-toggle:hover,.open>.btn-secondary.dropdown-toggle:focus,.open>.btn-secondary.dropdown-toggle.focus{color:#373a3c;background-color:#d4d4d4;border-color:#8c8c8c}.btn-secondary.disabled:focus,.btn-secondary.disabled.focus,.btn-secondary:disabled:focus,.btn-secondary:disabled.focus{background-color:#fff;border-color:#ccc}.btn-secondary.disabled:hover,.btn-secondary:disabled:hover{background-color:#fff;border-color:#ccc}.btn-info{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#2aabd2}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#2aabd2;background-image:none}.btn-info:active:hover,.btn-info:active:focus,.btn-info:active.focus,.btn-info.active:hover,.btn-info.active:focus,.btn-info.active.focus,.open>.btn-info.dropdown-toggle:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1f7e9a}.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info:disabled:focus,.btn-info:disabled.focus{background-color:#5bc0de;border-color:#5bc0de}.btn-info.disabled:hover,.btn-info:disabled:hover{background-color:#5bc0de;border-color:#5bc0de}.btn-success{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#419641}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#419641}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#419641;background-image:none}.btn-success:active:hover,.btn-success:active:focus,.btn-success:active.focus,.btn-success.active:hover,.btn-success.active:focus,.btn-success.active.focus,.open>.btn-success.dropdown-toggle:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#2d672d}.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success:disabled:focus,.btn-success:disabled.focus{background-color:#5cb85c;border-color:#5cb85c}.btn-success.disabled:hover,.btn-success:disabled:hover{background-color:#5cb85c;border-color:#5cb85c}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#eb9316}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#eb9316;background-image:none}.btn-warning:active:hover,.btn-warning:active:focus,.btn-warning:active.focus,.btn-warning.active:hover,.btn-warning.active:focus,.btn-warning.active.focus,.open>.btn-warning.dropdown-toggle:hover,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#b06d0f}.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning:disabled:focus,.btn-warning:disabled.focus{background-color:#f0ad4e;border-color:#f0ad4e}.btn-warning.disabled:hover,.btn-warning:disabled:hover{background-color:#f0ad4e;border-color:#f0ad4e}.btn-danger{color:#fff;background-color:#b85c5c;border-color:#b85c5c}.btn-danger:hover{color:#fff;background-color:#9d4444;border-color:#964141}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#9d4444;border-color:#964141}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#9d4444;border-color:#964141;background-image:none}.btn-danger:active:hover,.btn-danger:active:focus,.btn-danger:active.focus,.btn-danger.active:hover,.btn-danger.active:focus,.btn-danger.active.focus,.open>.btn-danger.dropdown-toggle:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle.focus{color:#fff;background-color:#843939;border-color:#672d2d}.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger:disabled:focus,.btn-danger:disabled.focus{background-color:#b85c5c;border-color:#b85c5c}.btn-danger.disabled:hover,.btn-danger:disabled:hover{background-color:#b85c5c;border-color:#b85c5c}.btn-outline-primary{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.btn-outline-primary:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-primary:focus,.btn-outline-primary.focus{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-primary:active,.btn-outline-primary.active,.open>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-primary:active:hover,.btn-outline-primary:active:focus,.btn-outline-primary:active.focus,.btn-outline-primary.active:hover,.btn-outline-primary.active:focus,.btn-outline-primary.active.focus,.open>.btn-outline-primary.dropdown-toggle:hover,.open>.btn-outline-primary.dropdown-toggle:focus,.open>.btn-outline-primary.dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#2d672d}.btn-outline-primary.disabled:focus,.btn-outline-primary.disabled.focus,.btn-outline-primary:disabled:focus,.btn-outline-primary:disabled.focus{border-color:#a3d7a3}.btn-outline-primary.disabled:hover,.btn-outline-primary:disabled:hover{border-color:#a3d7a3}.btn-outline-secondary{color:#ccc;background-image:none;background-color:transparent;border-color:#ccc}.btn-outline-secondary:hover{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-secondary:focus,.btn-outline-secondary.focus{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-secondary:active,.btn-outline-secondary.active,.open>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#ccc;border-color:#ccc}.btn-outline-secondary:active:hover,.btn-outline-secondary:active:focus,.btn-outline-secondary:active.focus,.btn-outline-secondary.active:hover,.btn-outline-secondary.active:focus,.btn-outline-secondary.active.focus,.open>.btn-outline-secondary.dropdown-toggle:hover,.open>.btn-outline-secondary.dropdown-toggle:focus,.open>.btn-outline-secondary.dropdown-toggle.focus{color:#fff;background-color:#a1a1a1;border-color:#8c8c8c}.btn-outline-secondary.disabled:focus,.btn-outline-secondary.disabled.focus,.btn-outline-secondary:disabled:focus,.btn-outline-secondary:disabled.focus{border-color:#fff}.btn-outline-secondary.disabled:hover,.btn-outline-secondary:disabled:hover{border-color:#fff}.btn-outline-info{color:#5bc0de;background-image:none;background-color:transparent;border-color:#5bc0de}.btn-outline-info:hover{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info:focus,.btn-outline-info.focus{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info:active,.btn-outline-info.active,.open>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#5bc0de;border-color:#5bc0de}.btn-outline-info:active:hover,.btn-outline-info:active:focus,.btn-outline-info:active.focus,.btn-outline-info.active:hover,.btn-outline-info.active:focus,.btn-outline-info.active.focus,.open>.btn-outline-info.dropdown-toggle:hover,.open>.btn-outline-info.dropdown-toggle:focus,.open>.btn-outline-info.dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1f7e9a}.btn-outline-info.disabled:focus,.btn-outline-info.disabled.focus,.btn-outline-info:disabled:focus,.btn-outline-info:disabled.focus{border-color:#b0e1ef}.btn-outline-info.disabled:hover,.btn-outline-info:disabled:hover{border-color:#b0e1ef}.btn-outline-success{color:#5cb85c;background-image:none;background-color:transparent;border-color:#5cb85c}.btn-outline-success:hover{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success:focus,.btn-outline-success.focus{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success:active,.btn-outline-success.active,.open>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#5cb85c;border-color:#5cb85c}.btn-outline-success:active:hover,.btn-outline-success:active:focus,.btn-outline-success:active.focus,.btn-outline-success.active:hover,.btn-outline-success.active:focus,.btn-outline-success.active.focus,.open>.btn-outline-success.dropdown-toggle:hover,.open>.btn-outline-success.dropdown-toggle:focus,.open>.btn-outline-success.dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#2d672d}.btn-outline-success.disabled:focus,.btn-outline-success.disabled.focus,.btn-outline-success:disabled:focus,.btn-outline-success:disabled.focus{border-color:#a3d7a3}.btn-outline-success.disabled:hover,.btn-outline-success:disabled:hover{border-color:#a3d7a3}.btn-outline-warning{color:#f0ad4e;background-image:none;background-color:transparent;border-color:#f0ad4e}.btn-outline-warning:hover{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:focus,.btn-outline-warning.focus{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:active,.btn-outline-warning.active,.open>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#f0ad4e;border-color:#f0ad4e}.btn-outline-warning:active:hover,.btn-outline-warning:active:focus,.btn-outline-warning:active.focus,.btn-outline-warning.active:hover,.btn-outline-warning.active:focus,.btn-outline-warning.active.focus,.open>.btn-outline-warning.dropdown-toggle:hover,.open>.btn-outline-warning.dropdown-toggle:focus,.open>.btn-outline-warning.dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#b06d0f}.btn-outline-warning.disabled:focus,.btn-outline-warning.disabled.focus,.btn-outline-warning:disabled:focus,.btn-outline-warning:disabled.focus{border-color:#f8d9ac}.btn-outline-warning.disabled:hover,.btn-outline-warning:disabled:hover{border-color:#f8d9ac}.btn-outline-danger{color:#b85c5c;background-image:none;background-color:transparent;border-color:#b85c5c}.btn-outline-danger:hover{color:#fff;background-color:#b85c5c;border-color:#b85c5c}.btn-outline-danger:focus,.btn-outline-danger.focus{color:#fff;background-color:#b85c5c;border-color:#b85c5c}.btn-outline-danger:active,.btn-outline-danger.active,.open>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#b85c5c;border-color:#b85c5c}.btn-outline-danger:active:hover,.btn-outline-danger:active:focus,.btn-outline-danger:active.focus,.btn-outline-danger.active:hover,.btn-outline-danger.active:focus,.btn-outline-danger.active.focus,.open>.btn-outline-danger.dropdown-toggle:hover,.open>.btn-outline-danger.dropdown-toggle:focus,.open>.btn-outline-danger.dropdown-toggle.focus{color:#fff;background-color:#843939;border-color:#672d2d}.btn-outline-danger.disabled:focus,.btn-outline-danger.disabled.focus,.btn-outline-danger:disabled:focus,.btn-outline-danger:disabled.focus{border-color:#d7a3a3}.btn-outline-danger.disabled:hover,.btn-outline-danger:disabled:hover{border-color:#d7a3a3}.btn-link{font-weight:400;color:#5cb85c;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#3d8b3d;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover{color:#818a91;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;transition-timing-function:ease;transition-duration:.35s;transition-property:height}.dropup,.dropdown{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-right:.25rem;margin-left:.25rem;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropup .dropdown-toggle::after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-item{display:block;width:100%;padding:3px 20px;clear:both;font-weight:400;color:#373a3c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-item.active,.dropdown-item.active:focus,.dropdown-item.active:hover{color:#fff;text-decoration:none;background-color:#5cb85c;outline:0}.dropdown-item.disabled,.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{color:#818a91}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:5px 20px;font-size:.875rem;color:#818a91;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar::after{content:"";display:table;clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:.3em .3em 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group::after{content:"";display:table;clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;width:100%;display:flex}.input-group .form-control{position:relative;z-index:2;flex:1;margin-bottom:0}.input-group .form-control:focus,.input-group .form-control:active,.input-group .form-control:hover{z-index:3}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#55595c;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:1.25rem;border-radius:.3rem}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:not(:last-child),.input-group-addon:not(:last-child),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group .form-control:not(:first-child),.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn:not(:first-child),.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:focus,.input-group-btn>.btn:active,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:hover,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:hover{z-index:3}.custom-control{position:relative;display:inline;padding-left:1.5rem;cursor:pointer}.custom-control+.custom-control{margin-left:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0074d9}.custom-control-input:focus~.custom-control-indicator{box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#84c6ff}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eee}.custom-control-input:disabled~.custom-control-description{color:#767676;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.0625rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4IDgiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02LjU2NC43NWwtMy41OSAzLjYxMi0xLjUzOC0xLjU1TDAgNC4yNiAyLjk3NCA3LjI1IDggMi4xOTN6Ii8+PC9zdmc+)}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0074d9;background-image:url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0IDQiPjxwYXRoIHN0cm9rZT0iI2ZmZiIgZD0iTTAgMmg0Ii8+PC9zdmc+)}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IC00IDggOCI+PGNpcmNsZSByPSIzIiBmaWxsPSIjZmZmIi8+PC9zdmc+)}.custom-controls-stacked .custom-control{display:inline}.custom-controls-stacked .custom-control::after{display:block;margin-bottom:.25rem;content:""}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;padding:.375rem 1.75rem .375rem .75rem;padding-right:.75rem \9;color:#55595c;vertical-align:middle;background:#fff url(data:image/svg+xml;charset=utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0IDUiPjxwYXRoIGZpbGw9IiMzMzMiIGQ9Ik0yIDAgMCAyaDR6bTAgNUwwIDNoNHoiLz48L3N2Zz4=) no-repeat right .75rem center;background-image:none \9;background-size:8px 10px;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;-moz-appearance:none;-webkit-appearance:none}.custom-select:focus{border-color:#51a7e8;outline:0}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;cursor:pointer}.custom-file-input{min-width:14rem;max-width:100%;margin:0;filter:alpha(opacity=0);opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;user-select:none;background-color:#fff;border:1px solid #ddd;border-radius:.25rem}.custom-file-control:lang(en)::after{content:"Choose file..."}.custom-file-control::before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;background-color:#eee;border:1px solid #ddd;border-radius:0 .25rem .25rem 0}.custom-file-control:lang(en)::before{content:"Browse"}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:inline-block}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#818a91}.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:not-allowed;background-color:transparent}.nav-inline .nav-item{display:inline-block}.nav-inline .nav-item+.nav-item,.nav-inline .nav-link+.nav-link{margin-left:1rem}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs::after{content:"";display:table;clear:both}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.nav-tabs .nav-link{display:block;padding:.5em 1em;border:1px solid transparent;border-radius:.25rem .25rem 0 0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover,.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover{color:#55595c;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.nav-pills::after{content:"";display:table;clear:both}.nav-pills .nav-item{float:left}.nav-pills .nav-item+.nav-item{margin-left:.2rem}.nav-pills .nav-link{display:block;padding:.5em 1em;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover,.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover{color:#fff;cursor:default;background-color:#5cb85c}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar::after{content:"";display:table;clear:both}@media(min-width:544px){.navbar{border-radius:.25rem}}.navbar-full{z-index:1000}@media(min-width:544px){.navbar-full{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media(min-width:544px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:sticky;top:0;z-index:1030;width:100%}@media(min-width:544px){.navbar-sticky-top{border-radius:0}}.navbar-brand{float:left;padding-top:.25rem;padding-bottom:.25rem;margin-right:1rem;font-size:1.25rem}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}.navbar-divider{float:left;width:1px;padding-top:.425rem;padding-bottom:.425rem;margin-right:1rem;margin-left:1rem;overflow:hidden}.navbar-divider::before{content:"\00a0"}.navbar-toggler{padding:.5rem .75rem;font-size:1.25rem;line-height:1;background:0 0;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media(min-width:544px){.navbar-toggleable-xs{display:block!important}}@media(min-width:768px){.navbar-toggleable-sm{display:block!important}}@media(min-width:992px){.navbar-toggleable-md{display:block!important}}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;padding-top:.425rem;padding-bottom:.425rem}.navbar-nav .nav-link+.nav-link{margin-left:1rem}.navbar-nav .nav-item+.nav-item{margin-left:1rem}.navbar-light .navbar-brand{color:rgba(0,0,0,.8)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.8)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.6)}.navbar-light .navbar-nav .open>.nav-link,.navbar-light .navbar-nav .open>.nav-link:focus,.navbar-light .navbar-nav .open>.nav-link:hover,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .active>.nav-link:focus,.navbar-light .navbar-nav .active>.nav-link:hover,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .nav-link.open:focus,.navbar-light .navbar-nav .nav-link.open:hover,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.active:focus,.navbar-light .navbar-nav .nav-link.active:hover{color:rgba(0,0,0,.8)}.navbar-light .navbar-divider{background-color:rgba(0,0,0,.075)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .open>.nav-link,.navbar-dark .navbar-nav .open>.nav-link:focus,.navbar-dark .navbar-nav .open>.nav-link:hover,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .active>.nav-link:focus,.navbar-dark .navbar-nav .active>.nav-link:hover,.navbar-dark .navbar-nav .nav-link.open,.navbar-dark .navbar-nav .nav-link.open:focus,.navbar-dark .navbar-nav .nav-link.open:hover,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.active:focus,.navbar-dark .navbar-nav .nav-link.active:hover{color:#fff}.navbar-dark .navbar-divider{background-color:rgba(255,255,255,.075)}.card{position:relative;display:block;margin-bottom:.75rem;background-color:#fff;border-radius:.25rem;box-shadow:inset 0 0 0 1px rgba(0,0,0,.125)}.card-block{padding:1.25rem}.card-block::after{content:"";display:table;clear:both}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-header{padding:.75rem 1.25rem;background-color:#f5f5f5;box-shadow:inset 0 0 0 1px rgba(0,0,0,.125)}.card-header::after{content:"";display:table;clear:both}.card-header:first-child{border-radius:.25rem .25rem 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f5f5f5;box-shadow:inset 0 0 0 1px rgba(0,0,0,.125)}.card-footer::after{content:"";display:table;clear:both}.card-footer:last-child{border-radius:0 0 .25rem .25rem}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-tabs .nav-item{margin-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#5cb85c;border-color:#5cb85c}.card-success{background-color:#5cb85c;border-color:#5cb85c}.card-info{background-color:#5bc0de;border-color:#5bc0de}.card-warning{background-color:#f0ad4e;border-color:#f0ad4e}.card-danger{background-color:#b85c5c;border-color:#b85c5c}.card-outline-primary{background-color:transparent;border-color:#5cb85c}.card-outline-secondary{background-color:transparent;border-color:#ccc}.card-outline-info{background-color:transparent;border-color:#5bc0de}.card-outline-success{background-color:transparent;border-color:#5cb85c}.card-outline-warning{background-color:transparent;border-color:#f0ad4e}.card-outline-danger{background-color:transparent;border-color:#b85c5c}.card-inverse .card-header,.card-inverse .card-footer{border-bottom:1px solid rgba(255,255,255,.2)}.card-inverse .card-header,.card-inverse .card-footer,.card-inverse .card-title,.card-inverse .card-blockquote{color:#fff}.card-inverse .card-link,.card-inverse .card-text,.card-inverse .card-blockquote>footer{color:rgba(255,255,255,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{border-radius:.25rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{border-radius:.25rem .25rem 0 0}.card-img-bottom{border-radius:0 0 .25rem .25rem}@media(min-width:544px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-.625rem;margin-left:-.625rem}.card-deck .card{flex:1 0 0;margin-right:.625rem;margin-left:.625rem}}@media(min-width:544px){.card-group{display:flex;flex-flow:row wrap}.card-group .card{flex:1 0 0}.card-group .card+.card{margin-left:0;border-left:0}.card-group .card:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group .card:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group .card:not(:first-child):not(:last-child){border-radius:0}.card-group .card:not(:first-child):not(:last-child) .card-img-top,.card-group .card:not(:first-child):not(:last-child) .card-img-bottom{border-radius:0}}@media(min-width:544px){.card-columns{column-count:3;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:.25rem}.breadcrumb::after{content:"";display:table;clear:both}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#818a91}.pagination{display:inline-block;padding-left:0;margin-top:1rem;margin-bottom:1rem;border-radius:.25rem}.page-item{display:inline}.page-item:first-child .page-link{margin-left:0;border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.page-item:last-child .page-link{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.page-item.active .page-link,.page-item.active .page-link:focus,.page-item.active .page-link:hover{z-index:2;color:#fff;cursor:default;background-color:#5cb85c;border-color:#5cb85c}.page-item.disabled .page-link,.page-item.disabled .page-link:focus,.page-item.disabled .page-link:hover{color:#818a91;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;color:#5cb85c;text-decoration:none;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#3d8b3d;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:.3rem;border-top-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:.3rem;border-top-right-radius:.3rem}.pagination-sm .page-link{padding:.275rem .75rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.2rem;border-top-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.2rem;border-top-right-radius:.2rem}.tag{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.tag:empty{display:none}.btn .tag{position:relative;top:-1px}a.tag:focus,a.tag:hover{color:#fff;text-decoration:none;cursor:pointer}.tag-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.tag-default{background-color:#818a91}.tag-default[href]:focus,.tag-default[href]:hover{background-color:#687077}.tag-primary{background-color:#5cb85c}.tag-primary[href]:focus,.tag-primary[href]:hover{background-color:#449d44}.tag-success{background-color:#5cb85c}.tag-success[href]:focus,.tag-success[href]:hover{background-color:#449d44}.tag-info{background-color:#5bc0de}.tag-info[href]:focus,.tag-info[href]:hover{background-color:#31b0d5}.tag-warning{background-color:#f0ad4e}.tag-warning[href]:focus,.tag-warning[href]:hover{background-color:#ec971f}.tag-danger{background-color:#b85c5c}.tag-danger[href]:focus,.tag-danger[href]:hover{background-color:#9d4444}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media(min-width:544px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:15px;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:35px}.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d0e9c6;color:#3c763d}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faf2cc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7ecb5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebcccc;color:#a94442}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;width:100%;height:1rem;margin-bottom:1rem}.progress[value]{background-color:#eee;border:0;appearance:none;border-radius:.25rem}.progress[value]::-ms-fill{background-color:#0074d9;border:0}.progress[value]::-moz-progress-bar{background-color:#0074d9;border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.progress[value="100"]::-moz-progress-bar{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.progress[value="100"]::-webkit-progress-value{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:.25rem}base::-moz-progress-bar,.progress[value]{background-color:#eee;border-radius:.25rem}@media screen and (min-width:0\0){.progress{background-color:#eee;border-radius:.25rem}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.progress[width="100%"]{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}}.progress-striped[value]::-webkit-progress-value{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-striped[value]::-ms-fill{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}@media screen and (min-width:0\0){.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}}.progress-animated[value]::-webkit-progress-value{animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}@media screen and (min-width:0\0){.progress-animated .progress-bar-striped{animation:progress-bar-stripes 2s linear infinite}}.progress-success[value]::-webkit-progress-value{background-color:#5cb85c}.progress-success[value]::-moz-progress-bar{background-color:#5cb85c}.progress-success[value]::-ms-fill{background-color:#5cb85c}@media screen and (min-width:0\0){.progress-success .progress-bar{background-color:#5cb85c}}.progress-info[value]::-webkit-progress-value{background-color:#5bc0de}.progress-info[value]::-moz-progress-bar{background-color:#5bc0de}.progress-info[value]::-ms-fill{background-color:#5bc0de}@media screen and (min-width:0\0){.progress-info .progress-bar{background-color:#5bc0de}}.progress-warning[value]::-webkit-progress-value{background-color:#f0ad4e}.progress-warning[value]::-moz-progress-bar{background-color:#f0ad4e}.progress-warning[value]::-ms-fill{background-color:#f0ad4e}@media screen and (min-width:0\0){.progress-warning .progress-bar{background-color:#f0ad4e}}.progress-danger[value]::-webkit-progress-value{background-color:#b85c5c}.progress-danger[value]::-moz-progress-bar{background-color:#b85c5c}.progress-danger[value]::-ms-fill{background-color:#b85c5c}@media screen and (min-width:0\0){.progress-danger .progress-bar{background-color:#b85c5c}}.media{display:flex;margin-bottom:1rem}.media-body{flex:1}.media-middle{align-self:center}.media-bottom{align-self:flex-end}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right{padding-left:10px}.media-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:0}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:.25rem;border-top-left-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:not-allowed;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;text-decoration:none;background-color:#5cb85c;border-color:#5cb85c}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#eaf6ea}.list-group-flush .list-group-item{border-radius:0}.list-group-item-action{width:100%;color:#555;text-align:inherit}.list-group-item-action .list-group-item-heading{color:#333}.list-group-item-action:focus,.list-group-item-action:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9{padding-bottom:42.85714%}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.embed-responsive-1by1{padding-bottom:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0;-webkit-overflow-scrolling:touch}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-25%)}.modal.in .modal-dialog{transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header::after{content:"";display:table;clear:both}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer::after{content:"";display:table;clear:both}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media(min-width:544px){.modal-dialog{max-width:600px;margin:30px auto}.modal-sm{max-width:300px}}@media(min-width:992px){.modal-lg{max-width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:source sans pro,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.in{opacity:.9}.tooltip.tooltip-top,.tooltip.bs-tether-element-attached-bottom{padding:5px 0;margin-top:-3px}.tooltip.tooltip-top .tooltip-arrow,.tooltip.bs-tether-element-attached-bottom .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.tooltip-right,.tooltip.bs-tether-element-attached-left{padding:0 5px;margin-left:3px}.tooltip.tooltip-right .tooltip-arrow,.tooltip.bs-tether-element-attached-left .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.tooltip-bottom,.tooltip.bs-tether-element-attached-top{padding:5px 0;margin-top:3px}.tooltip.tooltip-bottom .tooltip-arrow,.tooltip.bs-tether-element-attached-top .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.tooltip-left,.tooltip.bs-tether-element-attached-right{padding:0 5px;margin-left:-3px}.tooltip.tooltip-left .tooltip-arrow,.tooltip.bs-tether-element-attached-right .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:source sans pro,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.popover-top,.popover.bs-tether-element-attached-bottom{margin-top:-10px}.popover.popover-top .popover-arrow,.popover.bs-tether-element-attached-bottom .popover-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.popover-top .popover-arrow::after,.popover.bs-tether-element-attached-bottom .popover-arrow::after{bottom:1px;margin-left:-10px;content:"";border-top-color:#fff;border-bottom-width:0}.popover.popover-right,.popover.bs-tether-element-attached-left{margin-left:10px}.popover.popover-right .popover-arrow,.popover.bs-tether-element-attached-left .popover-arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.popover-right .popover-arrow::after,.popover.bs-tether-element-attached-left .popover-arrow::after{bottom:-10px;left:1px;content:"";border-right-color:#fff;border-left-width:0}.popover.popover-bottom,.popover.bs-tether-element-attached-top{margin-top:10px}.popover.popover-bottom .popover-arrow,.popover.bs-tether-element-attached-top .popover-arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25)}.popover.popover-bottom .popover-arrow::after,.popover.bs-tether-element-attached-top .popover-arrow::after{top:1px;margin-left:-10px;content:"";border-top-width:0;border-bottom-color:#fff}.popover.popover-left,.popover.bs-tether-element-attached-right{margin-left:-10px}.popover.popover-left .popover-arrow,.popover.bs-tether-element-attached-right .popover-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.popover.popover-left .popover-arrow::after,.popover.bs-tether-element-attached-right .popover-arrow::after{right:1px;bottom:-10px;content:"";border-right-width:0;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:.2375rem .2375rem 0 0}.popover-content{padding:9px 14px}.popover-arrow,.popover-arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover-arrow{border-width:11px}.popover-arrow::after{content:"";border-width:10px}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>img,.carousel-inner>.carousel-item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.carousel-item{transition:transform .6s ease-in-out;backface-visibility:hidden;perspective:1e3px}.carousel-inner>.carousel-item.next,.carousel-inner>.carousel-item.active.right{left:0;transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.prev,.carousel-inner>.carousel-item.active.left{left:0;transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right,.carousel-inner>.carousel-item.active{left:0;transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5}.carousel-control.left{background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev::before{content:"\2039"}.carousel-control .icon-next::before{content:"\203a"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media(min-width:544px){.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.bg-inverse{color:#eceeef;background-color:#373a3c}.bg-faded{background-color:#f7f7f9}.bg-primary{color:#fff!important;background-color:#5cb85c!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#449d44!important}.bg-success{color:#fff!important;background-color:#5cb85c!important}a.bg-success:focus,a.bg-success:hover{background-color:#449d44!important}.bg-info{color:#fff!important;background-color:#5bc0de!important}a.bg-info:focus,a.bg-info:hover{background-color:#31b0d5!important}.bg-warning{color:#fff!important;background-color:#f0ad4e!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ec971f!important}.bg-danger{color:#fff!important;background-color:#b85c5c!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#9d4444!important}.clearfix::after{content:"";display:table;clear:both}.pull-xs-left{float:left!important}.pull-xs-right{float:right!important}.pull-xs-none{float:none!important}@media(min-width:544px){.pull-sm-left{float:left!important}.pull-sm-right{float:right!important}.pull-sm-none{float:none!important}}@media(min-width:768px){.pull-md-left{float:left!important}.pull-md-right{float:right!important}.pull-md-none{float:none!important}}@media(min-width:992px){.pull-lg-left{float:left!important}.pull-lg-right{float:right!important}.pull-lg-none{float:none!important}}@media(min-width:1200px){.pull-xl-left{float:left!important}.pull-xl-right{float:right!important}.pull-xl-none{float:none!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.m-x-auto{margin-right:auto!important;margin-left:auto!important}.m-a-0{margin:0!important}.m-t-0{margin-top:0!important}.m-r-0{margin-right:0!important}.m-b-0{margin-bottom:0!important}.m-l-0{margin-left:0!important}.m-x-0{margin-right:0!important;margin-left:0!important}.m-y-0{margin-top:0!important;margin-bottom:0!important}.m-a-1{margin:1rem!important}.m-t-1{margin-top:1rem!important}.m-r-1{margin-right:1rem!important}.m-b-1{margin-bottom:1rem!important}.m-l-1{margin-left:1rem!important}.m-x-1{margin-right:1rem!important;margin-left:1rem!important}.m-y-1{margin-top:1rem!important;margin-bottom:1rem!important}.m-a-2{margin:1.5rem!important}.m-t-2{margin-top:1.5rem!important}.m-r-2{margin-right:1.5rem!important}.m-b-2{margin-bottom:1.5rem!important}.m-l-2{margin-left:1.5rem!important}.m-x-2{margin-right:1.5rem!important;margin-left:1.5rem!important}.m-y-2{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-a-3{margin:3rem!important}.m-t-3{margin-top:3rem!important}.m-r-3{margin-right:3rem!important}.m-b-3{margin-bottom:3rem!important}.m-l-3{margin-left:3rem!important}.m-x-3{margin-right:3rem!important;margin-left:3rem!important}.m-y-3{margin-top:3rem!important;margin-bottom:3rem!important}.p-a-0{padding:0!important}.p-t-0{padding-top:0!important}.p-r-0{padding-right:0!important}.p-b-0{padding-bottom:0!important}.p-l-0{padding-left:0!important}.p-x-0{padding-right:0!important;padding-left:0!important}.p-y-0{padding-top:0!important;padding-bottom:0!important}.p-a-1{padding:1rem!important}.p-t-1{padding-top:1rem!important}.p-r-1{padding-right:1rem!important}.p-b-1{padding-bottom:1rem!important}.p-l-1{padding-left:1rem!important}.p-x-1{padding-right:1rem!important;padding-left:1rem!important}.p-y-1{padding-top:1rem!important;padding-bottom:1rem!important}.p-a-2{padding:1.5rem!important}.p-t-2{padding-top:1.5rem!important}.p-r-2{padding-right:1.5rem!important}.p-b-2{padding-bottom:1.5rem!important}.p-l-2{padding-left:1.5rem!important}.p-x-2{padding-right:1.5rem!important;padding-left:1.5rem!important}.p-y-2{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-a-3{padding:3rem!important}.p-t-3{padding-top:3rem!important}.p-r-3{padding-right:3rem!important}.p-b-3{padding-bottom:3rem!important}.p-l-3{padding-left:3rem!important}.p-x-3{padding-right:3rem!important;padding-left:3rem!important}.p-y-3{padding-top:3rem!important;padding-bottom:3rem!important}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-xs-left{text-align:left!important}.text-xs-right{text-align:right!important}.text-xs-center{text-align:center!important}@media(min-width:544px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media(min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media(min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media(min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-muted{color:#818a91!important}a.text-muted:focus,a.text-muted:hover{color:#687077}.text-primary{color:#5cb85c!important}a.text-primary:focus,a.text-primary:hover{color:#449d44}.text-success{color:#5cb85c!important}a.text-success:focus,a.text-success:hover{color:#449d44}.text-info{color:#5bc0de!important}a.text-info:focus,a.text-info:hover{color:#31b0d5}.text-warning{color:#f0ad4e!important}a.text-warning:focus,a.text-warning:hover{color:#ec971f}.text-danger{color:#b85c5c!important}a.text-danger:focus,a.text-danger:hover{color:#9d4444}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.invisible{visibility:hidden!important}.hidden-xs-up{display:none!important}@media(max-width:543px){.hidden-xs-down{display:none!important}}@media(min-width:544px){.hidden-sm-up{display:none!important}}@media(max-width:767px){.hidden-sm-down{display:none!important}}@media(min-width:768px){.hidden-md-up{display:none!important}}@media(max-width:991px){.hidden-md-down{display:none!important}}@media(min-width:992px){.hidden-lg-up{display:none!important}}@media(max-width:1199px){.hidden-lg-down{display:none!important}}@media(min-width:1200px){.hidden-xl-up{display:none!important}}.hidden-xl-down{display:none!important}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}.flex-xs-first{order:-1}.flex-xs-last{order:1}.flex-items-xs-top{align-items:flex-start}.flex-items-xs-middle{align-items:center}.flex-items-xs-bottom{align-items:flex-end}.flex-xs-top{align-self:flex-start}.flex-xs-middle{align-self:center}.flex-xs-bottom{align-self:flex-end}.flex-items-xs-left{justify-content:flex-start}.flex-items-xs-center{justify-content:center}.flex-items-xs-right{justify-content:flex-end}.flex-items-xs-around{justify-content:space-around}.flex-items-xs-between{justify-content:space-between}@media(min-width:544px){.flex-sm-first{order:-1}.flex-sm-last{order:1}}@media(min-width:544px){.flex-items-sm-top{align-items:flex-start}.flex-items-sm-middle{align-items:center}.flex-items-sm-bottom{align-items:flex-end}}@media(min-width:544px){.flex-sm-top{align-self:flex-start}.flex-sm-middle{align-self:center}.flex-sm-bottom{align-self:flex-end}}@media(min-width:544px){.flex-items-sm-left{justify-content:flex-start}.flex-items-sm-center{justify-content:center}.flex-items-sm-right{justify-content:flex-end}.flex-items-sm-around{justify-content:space-around}.flex-items-sm-between{justify-content:space-between}}@media(min-width:768px){.flex-md-first{order:-1}.flex-md-last{order:1}}@media(min-width:768px){.flex-items-md-top{align-items:flex-start}.flex-items-md-middle{align-items:center}.flex-items-md-bottom{align-items:flex-end}}@media(min-width:768px){.flex-md-top{align-self:flex-start}.flex-md-middle{align-self:center}.flex-md-bottom{align-self:flex-end}}@media(min-width:768px){.flex-items-md-left{justify-content:flex-start}.flex-items-md-center{justify-content:center}.flex-items-md-right{justify-content:flex-end}.flex-items-md-around{justify-content:space-around}.flex-items-md-between{justify-content:space-between}}@media(min-width:992px){.flex-lg-first{order:-1}.flex-lg-last{order:1}}@media(min-width:992px){.flex-items-lg-top{align-items:flex-start}.flex-items-lg-middle{align-items:center}.flex-items-lg-bottom{align-items:flex-end}}@media(min-width:992px){.flex-lg-top{align-self:flex-start}.flex-lg-middle{align-self:center}.flex-lg-bottom{align-self:flex-end}}@media(min-width:992px){.flex-items-lg-left{justify-content:flex-start}.flex-items-lg-center{justify-content:center}.flex-items-lg-right{justify-content:flex-end}.flex-items-lg-around{justify-content:space-around}.flex-items-lg-between{justify-content:space-between}}@media(min-width:1200px){.flex-xl-first{order:-1}.flex-xl-last{order:1}}@media(min-width:1200px){.flex-items-xl-top{align-items:flex-start}.flex-items-xl-middle{align-items:center}.flex-items-xl-bottom{align-items:flex-end}}@media(min-width:1200px){.flex-xl-top{align-self:flex-start}.flex-xl-middle{align-self:center}.flex-xl-bottom{align-self:flex-end}}@media(min-width:1200px){.flex-items-xl-left{justify-content:flex-start}.flex-items-xl-center{justify-content:center}.flex-items-xl-right{justify-content:flex-end}.flex-items-xl-around{justify-content:space-around}.flex-items-xl-between{justify-content:space-between}}.tag-default{color:#fff!important;font-size:.8rem;padding-top:.1rem;padding-bottom:.1rem;white-space:nowrap;margin-right:3px;margin-bottom:.2rem;display:inline-block}.tag-default:hover{text-decoration:none}.tag-default.tag-outline{border:1px solid #ddd;color:#aaa!important;background:0 0!important}ul.tag-list{padding-left:0!important;display:inline-block;list-style:none!important}ul.tag-list li{display:inline-block!important}.navbar-brand{font-family:titillium web,sans-serif;font-size:1.5rem!important;padding-top:0!important;margin-right:2rem!important;color:#5cb85c!important}.nav-link .user-pic{height:26px;border-radius:50px;float:left;margin-right:5px}.nav-link:hover{transition:.1s all}.nav-pills.outline-active .nav-link{border-radius:0;border:0;border-bottom:2px solid transparent;background:0 0;color:#aaa}.nav-pills.outline-active .nav-link:hover{color:#555}.nav-pills.outline-active .nav-link.active{background:#fff!important;border-bottom:2px solid #5cb85c!important;color:#5cb85c!important}footer{background:#f3f3f3;margin-top:3rem;padding:1rem 0;position:absolute;bottom:0;width:100%}footer .logo-font{vertical-align:middle}footer .attribution{vertical-align:middle;margin-left:10px;font-size:.8rem;color:#bbb;font-weight:300}.error-messages{color:#b85c5c!important;font-weight:700}.banner{color:#fff;background:#333;padding:2rem;margin-bottom:2rem}.banner h1{text-shadow:0 1px 3px rgba(0,0,0,.3);margin-bottom:0}.container.page{margin-top:1.5rem}.preview-link{color:inherit!important}.preview-link:hover{text-decoration:inherit!important}.article-meta{display:block;position:relative;font-weight:300}.article-meta img{display:inline-block;vertical-align:middle;height:32px;width:32px;border-radius:30px}.article-meta .info{margin:0 1.5rem 0 .3rem;display:inline-block;vertical-align:middle;line-height:1rem}.article-meta .info .author{display:block;font-weight:500!important}.article-meta .info .date{color:#bbb;font-size:.8rem;display:block}.article-preview{border-top:1px solid rgba(0,0,0,.1);padding:1.5rem 0}.article-preview .article-meta{margin:0 0 1rem}.article-preview .preview-link h1{font-weight:600!important;font-size:1.5rem!important;margin-bottom:3px}.article-preview .preview-link p{font-weight:300;font-size:24px;color:#999;margin-bottom:15px;font-size:1rem;line-height:1.3rem}.article-preview .preview-link span{max-width:30%;font-size:.8rem;font-weight:300;color:#bbb;vertical-align:middle}.article-preview .preview-link ul{float:right;max-width:50%;vertical-align:top}.article-preview .preview-link ul li{font-weight:300;font-size:.8rem!important;padding-top:0!important;padding-bottom:0!important}.btn .counter{font-size:.8rem!important}.home-page .banner{background:#5cb85c;box-shadow:inset 0 8px 8px -8px rgba(0,0,0,.3),inset 0 -8px 8px -8px rgba(0,0,0,.3)}.home-page .banner p{color:#fff;text-align:center;font-size:1.5rem;font-weight:300!important;margin-bottom:0}.home-page .banner h1{text-shadow:0 1px 3px rgba(0,0,0,.3);font-weight:700!important;text-align:center;font-size:3.5rem;padding-bottom:.5rem}.home-page .feed-toggle{margin-bottom:-1px}.home-page .sidebar{padding:5px 10px 10px;background:#f3f3f3;border-radius:4px}.home-page .sidebar p{margin-bottom:.2rem}.article-page .banner{padding:2rem 0}.article-page .banner h1{font-size:2.8rem;font-weight:600}.article-page .banner .btn{opacity:.8}.article-page .banner .btn:hover{transition:.1s all;opacity:1}.article-page .banner .article-meta{margin:2rem 0 0}.article-page .banner .article-meta .author{color:#fff}.article-page .article-content p{font-family:'source serif pro',serif;font-size:1.2rem;line-height:1.8rem;margin-bottom:2rem}.article-page .article-content h1,.article-page .article-content h2,.article-page .article-content h3,.article-page .article-content h4,.article-page .article-content h5,.article-page .article-content h6{font-weight:500!important;margin:1.6rem 0 1rem}.article-page .article-actions{text-align:center;margin:1.5rem 0 3rem}.article-page .article-actions .article-meta .info{text-align:left}.article-page .comment-form .card-block{padding:0}.article-page .comment-form .card-block textarea{border:0;padding:1.25rem}.article-page .comment-form .card-footer .btn{font-weight:700;float:right}.article-page .comment-form .card-footer .comment-author-img{height:30px;width:30px}.article-page .card{border:1px solid #e5e5e5;box-shadow:none!important}.article-page .card .card-footer{border-top:1px solid #e5e5e5;box-shadow:none!important;font-size:.8rem;font-weight:300}.article-page .card .comment-author-img{display:inline-block;vertical-align:middle;height:20px;width:20px;border-radius:30px}.article-page .card .comment-author{display:inline-block;vertical-align:middle}.article-page .card .date-posted{display:inline-block;vertical-align:middle;margin-left:5px;color:#bbb}.article-page .card .mod-options{float:right;color:#333;font-size:1rem}.article-page .card .mod-options i{margin-left:5px;opacity:.6;cursor:pointer}.article-page .card .mod-options i:hover{opacity:1}.profile-page .user-info{text-align:center;background:#f3f3f3;padding:2rem 0 1rem}.profile-page .user-info .user-img{width:100px;height:100px;border-radius:100px;margin-bottom:1rem}.profile-page .user-info h4{font-weight:700}.profile-page .user-info p{margin:0 auto .5rem;color:#aaa;max-width:450px;font-weight:300}.profile-page .user-info .action-btn{float:right;color:#999;border:1px solid #999}.profile-page .articles-toggle{margin:1.5rem 0 -1px}.editor-page .tag-list i{font-size:.6rem;margin-right:5px;cursor:pointer} diff --git a/intro/server/public/mstile-144x144.png b/intro/server/public/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..c606809142942b42f794194d9c91507c8fb85bc7 GIT binary patch literal 1956 zcmZ`(dr(tn7XR|VM8FM!G+3oE1Y@C?5)iu>f=%qbkcf~F(k_Ea!GJuJr>W)v5;2nS zm`!+yfCw?7K&)6$Tie>wDOgZ!A&3rZ?W#PM=q^Hl;$y7rhm4l}V`t9&o!|MLbAI19 zckbLGab(yE$5oC1fE7XkB7xbs@DOnj`>S1xVZtZ#BlrNc8Ju1uIKY}N6G$QeP^|+% zqXpnOlr%N~K4Sy$C>{V#H305eb>BpB0l;L7w@FbrkZ%pnAK-v_5P#`LtV{t>V-1D~ z^;ev`!23B1eBe+0pp~N;;HdjIL4Cdf%)eT2|3z^rhvJ(Onk<%ZY<_-zy6|ZzeChk;lE`RaIDt{e}3z zyy}C;@}uKdYlxUbhI*``3S&G_&``Gju&Mkr?a2!H5p(6f!c#|eIaQ6g?5v}W*q5oN zamKQ&v~qmK*~~qamNR=>GSYF))lD@SwN2@nXX=_yoZgFV#2jm>#_y@AwWJ-ddwDkX zMCb#DdUylOuJABK6?E%J8Y~EMVFXGTcEI9XNo%fXufZ=XT!`?ciaS3KJ=^ELaV6ot zyHD627K<)rv2-~KU$lf(fc=;YNXQiRsKuN1G~!9eR}+ud{UiPFPkJ)uX14DxKTuzD zV^o3ppk21MPZpfuE8AMteqDpG1If-2_-{Eb6IGhq(ZzE;=og#W)@3O%<_Ph-=I>m^ z66@t{(t>4cExbzF1_eXXg{{BDey>fO=2;t>+a z#EenX3Cy=9yh=PwR~YWiZq|$V%IMK$Nfaedh;E>ikp_!WI`Ea@ql6?^2VSiFzKJWs zN+{UWsOui(njHO)CTBCTIX}ud5z(PFmr#+A7dtEW?AfqSL%GWLK`xE=yx6i$3sS97 zE#pHel(!OilCm*>^N6c)oBYQ)1PwAGgVSAzz(@`0{hgbfamPe-8ZP#rd2xI&b|g|H z))KOjrn~ha_A=ru-ZATVd&DIhUNdcICibojIUmkTAYZ!>(S zI5?NZi!zXZHikHhC!R@t+H4nc?u`HR5#c0P5H<1j$5VWPft<&m5%W_Fl4$?3n;+qS z`$=7D3oq6!V<;Ks;0)4oWOk)>XUF*20un=wWt`W6U5YD=4g$#%@@X_TG%!Q`y+=K4MA5IM>MpNeQ^BAIVirvJ!*UJr^?M%7oVUOqSGB7P6A5wG0 zSOb+m=tf}L15r;AMXG*$jr*myt>{p>veeep;I!HMWLQg4`)$7`&rFT9M&k3C`$+#O z0(1KC?Ey8LVY?+mIwbsel*0^C%EVVWzfHD;M3HAFii%7J3=*}k6}P@wCW^to&E=Cv zr?iOistn2R;^ohc*h}aY-M$4oXbr?2^}0Mosm*UqbFxA5?K_MfTXr$Mshe5wIZa2L zR+ZW&*9p`wAFdvx@-sx+FFHK`Yf}>w+dJcJ2y1EEI{WGJ>yK0Q@kH8o{Nbq>#>&EO zeLS7UT2Z2uq@dn1b-AZ2gh z_y=+PH~O*zIBd4(%Bykzvyh&dn7Ui}{};q)-Y{JFn@SoZmn0mZXXRw>PTiYCmn*Z9 z=&4z9832m9k!fdQ_9x!n*G0WIgkutb^KyD$=H%w(7G6QYxzQ0#U}qxE>w=WtJ2cqS jb)(Cpi_ohPn6|zT9=Vg{(_1zkg+~A(8i}-Si7)ss0TkbW86FiO27)+ZO?Qmr*ZDD>?>qP0eb!lfopsOM z=j@M+;5a#;4hVucg@p!1BZv*&^4Q}5S(`fj2)y3gwlaJrg4D|$UnNe1u{$?3IvhcS zix5Qo1%kW;NIZlf8Ds=`l7JwLZxF;S?bzigCJ611ToV&)A>5*ibWE|1iI|auf3%5p z{u{ViA{_&IXt}=xSU|16Naruo`ir$p%do>Anq?M19TS2#i45R~J3!4s%k5+UXg-4& zYmjGe+JF+VYK~REMF1D;{6IWMO9yeQh`8MnfQXe0v9OH=t_;;+HSis7^_kycA-`+6 zoir;h)-tS%zV+75%GbX2X|bpC&(m7;Au(TPQGgggafijT_|3QHcf952bVyo3Zg21u1cOY=AOe+pHAh3dFvpL#zD*=8+z92ec9pa%cwaNOI$Jct|!t9d% z;zh#41CKvC^kL4yL6SU+nESr`bg4t%0@C2950?MI{k(f<{@q@8(O>RR=5>!!(tP;y z=6Clj9$J=;t2EsHco)^}SHTirLdK(KPj=t(T%PIY>XmAI=>FudUcS(h7%GyVP4gU4YO257@DZrdcW>HVR`pOx`VvxWzHtnG}%l-w>?WcoPo9I z?+pQE1OAwuu(1p`P!ONmYu{JT?uFnniMd-n5m@J!p1{-&-^6TKwF+B~y?mGjsVR_J z$b-~a*$e1*%kI`*(nwj%onywpIz#U_BbVuCz=Rto$=UQWLMA3$TvI^&LQ_)v=70TKi`FL(Rs8W-k_fKlOFHpY!Y(t6XWUMU%i6C!kfW1GE!#C!C)d&Mgjo> zMuCYunuGj`;VzM9Xv6~;k13}{e_1hpeXrZq`;(EchnnP{E3?bHr})h*S5zJl`#|)x z%vRD>(G@vKZe7=VFgwP#8uA`tv*niyFFS95$!nZ-?1v)HwFOPx6*Y;^1M7~Yy~uV! z<=y$$e6z~Ci)gt_6Z+&)VzvV|N^q2Z^mnv{Yj&Y+Vzr?{aJN{Zkc6{`3*x;8(u`+! zoX(N_wyt;RIf+_Eef`^c_(eT?D_ScyR*XO-;Xd!`bai%Z zteXUT%1-NId4MfJ80`$f$0@^1xe$b%l*DkW2|oCKk}@<~$9V&Q>xY*qbOVaGusc4I!{tN8hQDo!mJkK*u79L=dC!+nkh=SYkNdS=yl&gzMQgA&0Sj zYR*!$MX&FCh%QdA&U<|F_&7P)qq(m}_xwdyTG@7l&86E@DZdId8eSse3Lek5G$>u-JasbunwS$`KB%s)W~$c>2~wEx&gwcqT&D! zBK4A|jvvX*T$CZ3FyMHC95@TmxRN(VJ#P|b>DXTQo?v|d(@?uII} zlU+w+;Z*IEO?+p&;|`nzfBN#Dc9aklKk#RquvD#~cU~x@Ts=BllYlOQlqDLq_uk}r zKuy6MrOLg$q`P$};EtN>=mvN%;~Y2Mk3=^Tt_}7)mftk)3esw!-W9YHyb{8o`ewax zn~SAT8_V>$p3+kgloC&bG~pWKHM7>kN*OzkVTXLT!)Z#9jf*(9Pg|}VTV4z-xN!mX z6Iday-nT?UDypMwl`GAv?&fnM&hS6~&pr32w_u#;acKD`OOYpTvjk(Se7}Yzkg(v0pxRXl GdwvHZ(=_7% literal 0 HcmV?d00001 diff --git a/intro/server/public/mstile-310x150.png b/intro/server/public/mstile-310x150.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f88b827f18860878c91454a2f554742edd4b74 GIT binary patch literal 2542 zcma)6c~nzZ9)8HU;xeKoE{ISTQON>=EWs+9f{`tz1=AQdp|VsVgb@-*a$Lt!6+~au z+FC6U*`@F-5mKfjSZGj_kPt=O6B|LGMivn?bMK4easHTd%(*A;cfa3vzx(~}b~q|x z)0|mLW+4bNCoD9Wjv!M=2x2jJh9y8wD>62M&)>cZ2oFGzx?@(82~$DeJ}HzQjvzc2 z1QG2=kk=uSWX=p~F#I7$K0L@f9llMM{6fgv4W=A|;iX zlq*#Ffq&5QZ+!+q1y!h|3Kdk5!XI{3RM21+fJ%Q5-~;^tN2CI3ke1)&2S8H=@}e5~ z3vW;B5woVT>Ky`bk-}1YB z%(zJ5XP)$(x0~w(ig!MtJteh30rkN^ff6c!7=R)b^en<_7pUIx3sk;>|JG>M1e_1W zL2S1AAqY6;_8tTrGt-O%8z3-)CXD;jJkm--7PO-F}udkO@Ajq_wu;2hjZqGn( zOi6F>!h;FlWpF&)vN{&q%w9xE{mo@lN%+lp)!v!coiLMcfA_Z=e~LDA(fc!7Cs@zb zH`921mAs+neaomo{NsKe)X3K>dOFHpIY!)gyfbps{_o3DM=r>0-PJs$-Q4qCZ*F}i zJFEPOFfj7>9-P6Hi|b#Han?$=e803*oNc_;iW63k za0U%{v~>W|&Zd!j`W0yBRBDfIbnibv3O#YjMevGStU-dz-Ods4vR*PaT2vK2~Rc zXUKgThCY5Pp2MlDp%PNbm6+!kTp$Z+JMXlXGp1^Z^d5$QgEW*^UMp$5m9&qw#p(~| zX7M)S7$bcp?@ka2J)pPlp=A?CVAWCaqy$-mhJF_oap0-7ipB>v?D*|%RS#KL`9O5{ z6Vrq3_=f&F`&pl)3B@Z7Eh=mp5}1l#vjfw%;aMkX!-(}4v@DaH&2bMqLCYrBGwlo& z5*1YL;H36BH=}yENTH`_1?1yQln1uWA(fOP>rBt1T!LlEbcsiO#2R)fb^=f4ku+=_ z<_6>Q|74;3!{rjg)a$J}`k-?S;1h0JpOjw^-)0)xE;h2hVcQwW6FN*$7*;Ips0qs{zyK~Fu7p!-|PIa}Q z2KHL)m!PURVx<4GxC^{H>L2Dx1=#cTMPo*Fm)h8(s72ih2a>n)eG-E;#&1oA!^}i} zUboQT3(jTVmoyeA{0A+Ny^pmHd(`S1LH#4OVC$l-q_K|G`UBgDWRy%lHDaX4lF1W? zBGrMU?%C0WRbo0(mw4nd8Z&u_U9JA~nS=!ftl2^=WY684=0HfFR^i+r)=mb!WVW}R zIiEJOUqXk3SfYcBkq+_)D8XQ~D>j_El!r_knJu$IzulCAf&RuQIo|Joc=Fi-I2*#*+DN!^3Z z(X=2a)WDP%J7GKS-134qNU;-B&* zZTz0;_*L{I{#0l=8C6XDSyHrP4E&7OfeSkR#8rBG4Ub5}-z4g2nQ&PxSQjvDX%wv- zzGbRQ$x7g|bx{*~fw0I^Kpalg7Pnllb(X)qNcgz7{o`1sIi@L+qfQnnGji*|2xo3c zEO$o&H`y`qC|NVezZWhUFFW^$7dB=_tSuIGkUqkEt})Q-BrH2D MBqF#bFn;fU0P%sYHvj+t literal 0 HcmV?d00001 diff --git a/intro/server/public/mstile-310x310.png b/intro/server/public/mstile-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..f0702f48c81fff349e9034ba23dc00ad9d402417 GIT binary patch literal 4166 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 literal 0 HcmV?d00001 diff --git a/intro/server/public/mstile-70x70.png b/intro/server/public/mstile-70x70.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7596f428df3507300793440458ec4f59ac0055 GIT binary patch literal 1563 zcmZ`&X;4#F6uvJT0fHs4KzVm(O-1lbQH!)G$ ztSp=?0036(@X$CI(S?VIgR0T-lXCMn}t`fYh_z3P7C8TD(`zVJvlt3?02S|DYAU~O(38%pc z5HwwN(VNzpd?Gi;bg@Mc(qL}#@GbVHW-Yc%$-ga85--P;FY-+ZTnceG7M4b%QNJwB z4}LzrFfM8buQ*-{6FoJr*#{i@dvcRTxR zI+i}U*KTe9xb1eStZB%ZIxtMSYO8u=y`=S_%SdO7)dQR64$^a1m5e&**#2~MxwX@? zwq?$(m!#oFxDVMMu`Tpq$6?(HSeOafkzr;p@ffV#l7qk0?gId8!474`i=Jt_Qh5Dz zO8yInt8U9wM^s!@z6zJ+vXSb0lWjCIwd|r*ZRWXc@9MVvdRs~JHl4_!vOdQ~ zzeDHF9iMP)NR(O$(Qh;GnTj7D#o{wTffoQ7cp|L~V5TpMFeHulU@-p7DkhT4Kje&% z&a6}*xyh6~EbY7k4|`GgGj8eF>DZ%r?r6bzTg%Up-!TV3ox+8N3ut+(9q#j<2Gb)v zy_ZTqS%SG>aUWd9Fi@Mxp#m+lKtWbmyLtw>TyMP?>AL#4>(O!X!Q45@|bv!4ROrA zaQ+&NqUe5aUo6Wv9AVL!L?4BCb$vK~%tkm{gu$S(>Hz`K0}xn}efAf?-1Z30gcrsM z$bOE$e?J%hW&pE-8G`CgV?5CniupJuL9^==&{`rcOk$-{91pObN-*^`#+imsUryc( z=Kh#@Nf_>~F1m>(*SvZ#95^hK-N3EsJWEbQbs5a3P2$%+KIlAMK0eBu#2l^zh$^3pJe2Q;$jSiOx-ajW=#Q+FC(bm4B-=u8BtiZVIym#6s!sCF}%l=L<7+m zlk4^6JLGy5vgiGmtUk&0$DqNmM_O$R)`uWsagDss8mF6$lx8wWoQVl(nbEft88n>I zT=7&J+`!FI3UwX<<+m-$K1>u7P`zW0J1#|1)i+Dfh*wiL>BWd(^o7`sN;O;u_ddkj znF}gK>h&d>kSJ{Wl%?{axg8qal&o1YJrSXdqbu&M#mT@?30wT8nF%L=(ksa|Pm-uWm?d|2dKdMilqip*1u8 z01y@bHbWw2?DX(xkM8JX zzlsA`cS|3hCE1-EafyN@(?Zb=Dn8b|CZ5(Y_@uSDv)Q@XtOE^~f93 + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + + + + + + + diff --git a/intro/server/public/site.webmanifest b/intro/server/public/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/intro/server/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/intro/server/rw-logo.png b/intro/server/rw-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4ecd6b6231fdb6ab060e65e6d9715a3c3e69bc GIT binary patch literal 36083 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 literal 0 HcmV?d00001 diff --git a/intro/server/services/api.service.js b/intro/server/services/api.service.js new file mode 100644 index 0000000..93d62ec --- /dev/null +++ b/intro/server/services/api.service.js @@ -0,0 +1,171 @@ +"use strict"; + +const _ = require("lodash"); +const ApiGateway = require("moleculer-web"); +const { UnAuthorizedError } = ApiGateway.Errors; + +module.exports = { + name: "api", + mixins: [ApiGateway], + + settings: { + port: process.env.PORT || 3000, + + routes: [{ + path: "/api", + + authorization: true, + + aliases: { + // Login + "POST /users/login": "users.login", + + // Users + "REST /users": "users", + + // Current user + "GET /user": "users.me", + "PUT /user": "users.updateMyself", + + // Articles + "GET /articles/feed": "articles.feed", + "REST /articles": "articles", + "GET /tags": "articles.tags", + + // Comments + "GET /articles/:slug/comments": "articles.comments", + "POST /articles/:slug/comments": "articles.addComment", + "PUT /articles/:slug/comments/:commentID": "articles.updateComment", + "DELETE /articles/:slug/comments/:commentID": "articles.removeComment", + + // Favorites + "POST /articles/:slug/favorite": "articles.favorite", + "DELETE /articles/:slug/favorite": "articles.unfavorite", + + // Profile + "GET /profiles/:username": "users.profile", + "POST /profiles/:username/follow": "users.follow", + "DELETE /profiles/:username/follow": "users.unfollow", + }, + + // Disable to call not-mapped actions + mappingPolicy: "restrict", + + // Set CORS headers + cors: true, + + // Parse body content + bodyParsers: { + json: { + strict: false + }, + urlencoded: { + extended: false + } + } + }], + + assets: { + folder: "./public" + }, + + // logRequestParams: "info", + // logResponseData: "info", + + onError(req, res, err) { + // Return with the error as JSON object + res.setHeader("Content-type", "application/json; charset=utf-8"); + res.writeHead(err.code || 500); + + if (err.code == 422) { + let o = {}; + err.data.forEach(e => { + let field = e.field.split(".").pop(); + o[field] = e.message; + }); + + res.end(JSON.stringify({ errors: o }, null, 2)); + } else { + const errObj = _.pick(err, ["name", "message", "code", "type", "data"]); + res.end(JSON.stringify(errObj, null, 2)); + } + this.logResponse(req, res, err? err.ctx : null); + } + + }, + + methods: { + /** + * Authorize the request + * + * @param {Context} ctx + * @param {Object} route + * @param {IncomingRequest} req + * @returns {Promise} + */ + authorize(ctx, route, req) { + let token; + if (req.headers.authorization) { + let type = req.headers.authorization.split(" ")[0]; + if (type === "Token" || type === "Bearer") + token = req.headers.authorization.split(" ")[1]; + } + + return this.Promise.resolve(token) + .then(token => { + if (token) { + // Verify JWT token + return ctx.call("users.resolveToken", { token }) + .then(user => { + if (user) { + this.logger.info("Authenticated via JWT: ", user.username); + // Reduce user fields (it will be transferred to other nodes) + ctx.meta.user = _.pick(user, ["_id", "username", "email", "image"]); + ctx.meta.token = token; + } + return user; + }) + .catch(err => { + // Ignored because we continue processing if user is not exist + return null; + }); + } + }) + .then(user => { + if (req.$endpoint.action.auth == "required" && !user) + return this.Promise.reject(new UnAuthorizedError()); + }); + }, + + /** + * Convert ValidationError to RealWorld.io result + * @param {*} req + * @param {*} res + * @param {*} err + */ + /*sendError(req, res, err) { + if (err.code == 422) { + res.setHeader("Content-type", "application/json; charset=utf-8"); + res.writeHead(422); + let o = {}; + err.data.forEach(e => { + let field = e.field.split(".").pop(); + o[field] = e.message; + }); + return res.end(JSON.stringify({ + errors: o + }, null, 2)); + + } + + return this._sendError(req, res, err); + }*/ + }, + + created() { + // Pointer to the original function + //this._sendError = ApiGateway.methods.sendError.bind(this); + } + + +}; diff --git a/intro/server/services/articles.service.js b/intro/server/services/articles.service.js new file mode 100644 index 0000000..0bb85c2 --- /dev/null +++ b/intro/server/services/articles.service.js @@ -0,0 +1,614 @@ +"use strict"; + +const { MoleculerClientError } = require("moleculer").Errors; +const { ForbiddenError } = require("moleculer-web").Errors; + +const _ = require("lodash"); +const slug = require("slug"); +const DbService = require("../mixins/db.mixin"); + +module.exports = { + name: "articles", + mixins: [DbService("articles")], + + /** + * Default settings + */ + settings: { + fields: ["_id", "title", "slug", "description", "body", "tagList", "createdAt", "updatedAt", "favorited", "favoritesCount", "author", "comments"], + + // Populates + populates: { + author: { + action: "users.get", + params: { + fields: ["username", "bio", "image"] + } + }, + comments: { + action: "comments.get", + params: { + fields: ["_id", "body", "author"], + populates: ["author"] + } + }, + favorited(ids, articles, rule, ctx) { + if (ctx.meta.user) + return this.Promise.all(articles.map(article => ctx.call("favorites.has", { article: article._id.toString(), user: ctx.meta.user._id.toString() }).then(res => article.favorited = res))); + else { + articles.forEach(article => article.favorited = false); + return this.Promise.resolve(); + } + }, + favoritesCount(ids, articles, rule, ctx) { + return this.Promise.all(articles.map(article => ctx.call("favorites.count", { article: article._id.toString() }).then(count => article.favoritesCount = count))); + } + }, + + // Validation schema for new entities + entityValidator: { + title: { type: "string", min: 1 }, + description: { type: "string", min: 1 }, + body: { type: "string", min: 1 }, + tagList: { type: "array", items: "string", optional: true }, + } + }, + + /** + * Actions + */ + actions: { + + /** + * Create a new article. + * Auth is required! + * + * @actions + * @param {Object} article - Article entity + * + * @returns {Object} Created entity + */ + create: { + auth: "required", + params: { + article: { type: "object" } + }, + handler(ctx) { + let entity = ctx.params.article; + return this.validateEntity(entity) + .then(() => { + + entity.slug = slug(entity.title, { lower: true }) + "-" + (Math.random() * Math.pow(36, 6) | 0).toString(36); + entity.author = ctx.meta.user._id.toString(); + entity.createdAt = new Date(); + entity.updatedAt = new Date(); + + return this.adapter.insert(entity) + .then(doc => this.transformDocuments(ctx, { populate: ["author", "favorited", "favoritesCount"]}, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)) + .then(json => this.entityChanged("created", json, ctx).then(() => json)); + }); + } + }, + + /** + * Update an article. + * Auth is required! + * + * @actions + * @param {String} id - Article ID + * @param {Object} article - Article modified fields + * + * @returns {Object} Updated entity + */ + update: { + auth: "required", + params: { + id: { type: "string" }, + article: { type: "object", props: { + title: { type: "string", min: 1, optional: true }, + description: { type: "string", min: 1, optional: true }, + body: { type: "string", min: 1, optional: true }, + tagList: { type: "array", items: "string", optional: true }, + } } + }, + handler(ctx) { + let newData = ctx.params.article; + newData.updatedAt = new Date(); + // the 'id' is the slug + return this.Promise.resolve(ctx.params.id) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found", 404)); + + if (article.author !== ctx.meta.user._id.toString()) + return this.Promise.reject(new ForbiddenError()); + + const update = { + "$set": newData + }; + + return this.adapter.updateById(article._id, update); + }) + .then(doc => this.transformDocuments(ctx, { populate: ["author", "favorited", "favoritesCount"]}, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)) + .then(json => this.entityChanged("updated", json, ctx).then(() => json)); + } + }, + + /** + * List articles with pagination. + * + * @actions + * @param {String} tag - Filter for 'tag' + * @param {String} author - Filter for author ID + * @param {String} favorited - Filter for favorited author + * @param {Number} limit - Pagination limit + * @param {Number} offset - Pagination offset + * + * @returns {Object} List of articles + */ + list: { + cache: { + keys: ["#token", "tag", "author", "favorited", "limit", "offset"] + }, + params: { + tag: { type: "string", optional: true }, + author: { type: "string", optional: true }, + favorited: { type: "string", optional: true }, + limit: { type: "number", optional: true, convert: true }, + offset: { type: "number", optional: true, convert: true }, + }, + handler(ctx) { + const limit = ctx.params.limit ? Number(ctx.params.limit) : 20; + const offset = ctx.params.offset ? Number(ctx.params.offset) : 0; + + let params = { + limit, + offset, + sort: ["-createdAt"], + populate: ["author", "favorited", "favoritesCount"], + query: {} + }; + let countParams; + + if (ctx.params.tag) + params.query.tagList = {"$in" : [ctx.params.tag]}; + + return this.Promise.resolve() + .then(() => { + if (ctx.params.author) { + return ctx.call("users.find", { query: { username: ctx.params.author } }) + .then(users => { + if (users.length == 0) + return this.Promise.reject(new MoleculerClientError("Author not found")); + + params.query.author = users[0]._id; + }); + } + if (ctx.params.favorited) { + return ctx.call("users.find", { query: { username: ctx.params.favorited } }) + .then(users => { + if (users.length == 0) + return this.Promise.reject(new MoleculerClientError("Author not found")); + + return users[0]._id; + }) + .then(user => { + return ctx.call("favorites.find", { fields: ["article"], query: { user }}) + .then(list => { + params.query._id = { $in: list.map(o => o.article) }; + }); + }); + } + }) + .then(() => { + countParams = Object.assign({}, params); + // Remove pagination params + if (countParams && countParams.limit) + countParams.limit = null; + if (countParams && countParams.offset) + countParams.offset = null; + }) + .then(() => this.Promise.all([ + // Get rows + this.adapter.find(params), + + // Get count of all rows + this.adapter.count(countParams) + + ])).then(res => { + return this.transformDocuments(ctx, params, res[0]) + .then(docs => this.transformResult(ctx, docs, ctx.meta.user)) + .then(r => { + r.articlesCount = res[1]; + return r; + }); + }); + } + }, + + /** + * List articles from followed authors. + * Auth is required! + * + * @actions + * @param {Number} limit - Pagination limit + * @param {Number} offset - Pagination offset + * + * @returns {Object} List of articles + */ + feed: { + auth: "required", + cache: { + keys: ["#token", "limit", "offset"] + }, + params: { + limit: { type: "number", optional: true, convert: true }, + offset: { type: "number", optional: true, convert: true }, + }, + handler(ctx) { + const limit = ctx.params.limit ? Number(ctx.params.limit) : 20; + const offset = ctx.params.offset ? Number(ctx.params.offset) : 0; + + let params = { + limit, + offset, + sort: ["-createdAt"], + populate: ["author", "favorited", "favoritesCount"], + query: {} + }; + let countParams; + + return this.Promise.resolve() + .then(() => { + return ctx.call("follows.find", { fields: ["follow"], query: { user: ctx.meta.user._id.toString() } }) + .then(list => { + const authors = _.uniq(_.compact(_.flattenDeep(list.map(o => o.follow)))); + params.query.author = {"$in" : authors}; + }); + }) + .then(() => { + countParams = Object.assign({}, params); + // Remove pagination params + if (countParams && countParams.limit) + countParams.limit = null; + if (countParams && countParams.offset) + countParams.offset = null; + }) + .then(() => this.Promise.all([ + // Get rows + this.adapter.find(params), + + // Get count of all rows + this.adapter.count(countParams) + + ])).then(res => { + return this.transformDocuments(ctx, params, res[0]) + .then(docs => this.transformResult(ctx, docs, ctx.meta.user)) + .then(r => { + r.articlesCount = res[1]; + return r; + }); + }); + } + }, + + /** + * Get an article by slug + * + * @actions + * @param {String} id - Article slug + * + * @returns {Object} Article entity + */ + get: { + cache: { + keys: ["#token", "id"] + }, + params: { + id: { type: "string" } + }, + handler(ctx) { + return this.findBySlug(ctx.params.id) + .then(entity => { + if (!entity) + return this.Promise.reject(new MoleculerClientError("Article not found!", 404)); + + return entity; + }) + .then(doc => this.transformDocuments(ctx, { populate: ["author", "favorited", "favoritesCount"] }, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)); + } + }, + + /** + * Remove an article by slug + * Auth is required! + * + * @actions + * @param {String} id - Article slug + * + * @returns {Number} Count of removed articles + */ + remove: { + auth: "required", + params: { + id: { type: "any" } + }, + handler(ctx) { + return this.findBySlug(ctx.params.id) + .then(entity => { + if (!entity) + return this.Promise.reject(new MoleculerClientError("Article not found!", 404)); + + if (entity.author !== ctx.meta.user._id.toString()) + return this.Promise.reject(new ForbiddenError()); + + return this.adapter.removeById(entity._id) + .then(() => ctx.call("favorites.removeByArticle", { article: entity._id })) + .then(json => this.entityChanged("removed", json, ctx).then(() => json)); + }); + } + }, + + /** + * Favorite an article + * Auth is required! + * + * @actions + * @param {String} id - Article slug + * + * @returns {Object} Updated article + */ + favorite: { + auth: "required", + params: { + slug: { type: "string" } + }, + handler(ctx) { + return this.Promise.resolve(ctx.params.slug) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found", 404)); + + return ctx.call("favorites.add", { article: article._id.toString(), user: ctx.meta.user._id.toString() }).then(() => article); + }) + .then(doc => this.transformDocuments(ctx, { populate: ["author", "favorited", "favoritesCount"] }, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)); + } + }, + + /** + * Unfavorite an article + * Auth is required! + * + * @actions + * @param {String} id - Article slug + * + * @returns {Object} Updated article + */ + unfavorite: { + auth: "required", + params: { + slug: { type: "string" } + }, + handler(ctx) { + return this.Promise.resolve(ctx.params.slug) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found", 404)); + + return ctx.call("favorites.delete", { article: article._id.toString(), user: ctx.meta.user._id.toString() }).then(() => article); + }) + .then(doc => this.transformDocuments(ctx, { populate: ["author", "favorited", "favoritesCount"] }, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)); + } + }, + + /** + * Get list of available tags + * + * @returns {Object} Tag list + */ + tags: { + cache: { + keys: [] + }, + handler(ctx) { + return this.Promise.resolve() + .then(() => this.adapter.find({ fields: ["tagList"], sort: ["createdAt"] })) + .then(list => { + return _.uniq(_.compact(_.flattenDeep(list.map(o => o.tagList)))); + }) + .then(tags => ({ tags })); + } + }, + + /** + * Get all comments of an article. + * + * @actions + * @param {String} slug - Article slug + * + * @returns {Object} Comment list + * + */ + comments: { + cache: { + keys: ["#token", "slug"] + }, + params: { + slug: { type: "string" } + }, + handler(ctx) { + return this.Promise.resolve(ctx.params.slug) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found", 404)); + + return ctx.call("comments.list", { article: article._id.toString() }); + }); + } + }, + + /** + * Add a new comment to an article. + * Auth is required! + * + * @actions + * @param {String} slug - Article slug + * @param {Object} comment - Comment fields + * + * @returns {Object} Comment entity + */ + addComment: { + auth: "required", + params: { + slug: { type: "string" }, + comment: { type: "object" } + }, + handler(ctx) { + return this.Promise.resolve(ctx.params.slug) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found", 404)); + + return ctx.call("comments.create", { article: article._id.toString(), comment: ctx.params.comment }); + }); + } + }, + + /** + * Update a comment. + * Auth is required! + * + * @actions + * @param {String} slug - Article slug + * @param {String} commentID - Comment ID + * @param {Object} comment - Comment fields + * + * @returns {Object} Comment entity + */ + updateComment: { + auth: "required", + params: { + slug: { type: "string" }, + commentID: { type: "string" }, + comment: { type: "object" } + }, + handler(ctx) { + return this.Promise.resolve(ctx.params.slug) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found", 404)); + + return ctx.call("comments.update", { id: ctx.params.commentID, comment: ctx.params.comment }); + }); + } + }, + + /** + * Remove a comment. + * Auth is required! + * + * @actions + * @param {String} slug - Article slug + * @param {String} commentID - Comment ID + * + * @returns {Number} Count of removed comment + */ + removeComment: { + auth: "required", + params: { + slug: { type: "string" }, + commentID: { type: "string" } + }, + handler(ctx) { + return this.Promise.resolve(ctx.params.slug) + .then(slug => this.findBySlug(slug)) + .then(article => { + if (!article) + return this.Promise.reject(new MoleculerClientError("Article not found")); + + return ctx.call("comments.remove", { id: ctx.params.commentID }); + }); + } + } + }, + + /** + * Methods + */ + methods: { + /** + * Find an article by slug + * + * @param {String} slug - Article slug + * + * @results {Object} Promise
this.transformEntity(ctx, item, user)) + .then(articles => ({ articles })); + } else { + return this.transformEntity(ctx, entities, user) + .then(article => ({ article })); + } + }, + + /** + * Transform a result entity to follow the RealWorld API spec + * + * @param {Context} ctx + * @param {Object} entity + * @param {Object} user - Logged in user + */ + transformEntity(ctx, entity, user) { + if (!entity) return this.Promise.resolve(); + + return this.Promise.resolve(entity); + } + }, + + events: { + "cache.clean.articles"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.users"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.comments"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.follows"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.favorites"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + } + } +}; \ No newline at end of file diff --git a/intro/server/services/comments.service.js b/intro/server/services/comments.service.js new file mode 100644 index 0000000..0e3ac46 --- /dev/null +++ b/intro/server/services/comments.service.js @@ -0,0 +1,266 @@ +"use strict"; + +const { ForbiddenError } = require("moleculer-web").Errors; +const DbService = require("../mixins/db.mixin"); + +module.exports = { + name: "comments", + mixins: [DbService("comments")], + + /** + * Default settings + */ + settings: { + fields: ["_id", "author", "article", "body", "createdAt", "updatedAt"], + populates: { + "author": { + action: "users.get", + params: { + fields: ["_id", "username", "bio", "image"] + } + } + }, + entityValidator: { + article: { type: "string" }, + body: { type: "string", min: 1 }, + } + }, + + /** + * Actions + */ + actions: { + /** + * Create a comment. + * Auth is required! + * + * @actions + * @param {String} article - Article ID + * @param {Object} comment - Comment entity + * + * @returns {Object} Created comment entity + */ + create: { + auth: "required", + params: { + article: { type: "string" }, + comment: { type: "object" } + }, + handler(ctx) { + let entity = ctx.params.comment; + entity.article = ctx.params.article; + entity.author = ctx.meta.user._id.toString(); + + return this.validateEntity(entity) + .then(() => { + + entity.createdAt = new Date(); + entity.updatedAt = new Date(); + + return this.adapter.insert(entity) + .then(doc => this.transformDocuments(ctx, { populate: ["author"]}, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)) + .then(json => this.entityChanged("created", json, ctx).then(() => json)); + }); + } + }, + + /** + * Update a comment. + * Auth is required! + * + * @actions + * @param {String} id - Comment ID + * @param {Object} comment - Comment modified fields + * + * @returns {Object} Updated comment entity + */ + update: { + auth: "required", + params: { + id: { type: "string" }, + comment: { type: "object", props: { + body: { type: "string", min: 1 }, + } } + }, + handler(ctx) { + let newData = ctx.params.comment; + newData.updatedAt = new Date(); + + return this.getById(ctx.params.id) + .then(comment => { + if (comment.author !== ctx.meta.user._id.toString()) + return this.Promise.reject(new ForbiddenError()); + + const update = { + "$set": newData + }; + + return this.adapter.updateById(ctx.params.id, update); + }) + .then(doc => this.transformDocuments(ctx, { populate: ["author"]}, doc)) + .then(entity => this.transformResult(ctx, entity, ctx.meta.user)) + .then(json => this.entityChanged("updated", json, ctx).then(() => json)); + } + }, + + /** + * List of comments by article. + * + * @actions + * @param {String} article - Article ID + * @param {Number} limit - Pagination limit + * @param {Number} offset - Pagination offset + * + * @returns {Object} List of comments + */ + list: { + cache: { + keys: ["#token", "article", "limit", "offset"] + }, + params: { + article: { type: "string" }, + limit: { type: "number", optional: true, convert: true }, + offset: { type: "number", optional: true, convert: true }, + }, + handler(ctx) { + const limit = ctx.params.limit ? Number(ctx.params.limit) : 20; + const offset = ctx.params.offset ? Number(ctx.params.offset) : 0; + + let params = { + limit, + offset, + sort: ["-createdAt"], + populate: ["author"], + query: { + article: ctx.params.article + } + }; + let countParams; + + return this.Promise.resolve() + .then(() => { + countParams = Object.assign({}, params); + // Remove pagination params + if (countParams && countParams.limit) + countParams.limit = null; + if (countParams && countParams.offset) + countParams.offset = null; + }) + .then(() => this.Promise.all([ + // Get rows + this.adapter.find(params), + + // Get count of all rows + this.adapter.count(countParams) + + ])).then(res => { + return this.transformDocuments(ctx, params, res[0]) + .then(docs => this.transformResult(ctx, docs, ctx.meta.user)) + .then(r => { + r.commentsCount = res[1]; + return r; + }); + }); + + } + }, + + /** + * Remove a comment + * Auth is required! + * + * @actions + * @param {String} id - Comment ID + * + * @returns {Number} Count of removed comments + */ + remove: { + auth: "required", + params: { + id: { type: "any" } + }, + handler(ctx) { + return this.getById(ctx.params.id) + .then(comment => { + if (comment.author !== ctx.meta.user._id.toString()) + return this.Promise.reject(new ForbiddenError()); + + return this.adapter.removeById(ctx.params.id) + .then(json => this.entityChanged("updated", json, ctx).then(() => json)); + }); + } + } + }, + + /** + * Methods + */ + methods: { + + /** + * Transform the result entities to follow the RealWorld API spec + * + * @param {Context} ctx + * @param {Array} entities + * @param {Object} user - Logged in user + */ + transformResult(ctx, entities, user) { + if (Array.isArray(entities)) { + return this.Promise.map(entities, item => this.transformEntity(ctx, item, user)) + .then(comments => ({ comments })); + } else { + return this.transformEntity(ctx, entities, user) + .then(comment => ({ comment })); + } + }, + + /** + * Transform a result entity to follow the RealWorld API spec + * + * @param {Context} ctx + * @param {Object} entity + * @param {Object} user - Logged in user + */ + transformEntity(ctx, entity, loggedInUser) { + if (!entity) return this.Promise.resolve(); + + return this.Promise.resolve(entity) + .then(entity => { + entity.id = entity._id; + + if (loggedInUser) { + return ctx.call("follows.has", { user: loggedInUser._id.toString(), follow: entity.author._id }) + .then(res => { + entity.author.following = res; + return entity; + }); + } + + entity.author.following = false; + + return entity; + }); + + } + }, + + events: { + "cache.clean.comments"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.users"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.follows"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.articles"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + } + } +}; \ No newline at end of file diff --git a/intro/server/services/favorites.service.js b/intro/server/services/favorites.service.js new file mode 100644 index 0000000..dbb0dff --- /dev/null +++ b/intro/server/services/favorites.service.js @@ -0,0 +1,177 @@ +"use strict"; + +const { MoleculerClientError } = require("moleculer").Errors; +const DbService = require("../mixins/db.mixin"); + + +module.exports = { + name: "favorites", + mixins: [DbService("favorites")], + + /** + * Default settings + */ + settings: { + + }, + + /** + * Actions + */ + actions: { + + /** + * Create a new favorite record + * + * @actions + * + * @param {String} article - Article ID + * @param {String} user - User ID + * @returns {Object} Created favorite record + */ + add: { + params: { + article: { type: "string" }, + user: { type: "string" }, + }, + handler(ctx) { + const { article, user } = ctx.params; + return this.findByArticleAndUser(article, user) + .then(item => { + if (item) + return this.Promise.reject(new MoleculerClientError("Articles has already favorited")); + + return this.adapter.insert({ article, user, createdAt: new Date() }) + .then(json => this.entityChanged("created", json, ctx).then(() => json)); + + }); + } + }, + + /** + * Check the given 'article' is followed by 'user'. + * + * @actions + * + * @param {String} article - Article ID + * @param {String} user - User ID + * @returns {Boolean} + */ + has: { + cache: { + keys: ["article", "user"] + }, + params: { + article: { type: "string" }, + user: { type: "string" }, + }, + handler(ctx) { + const { article, user } = ctx.params; + return this.findByArticleAndUser(article, user) + .then(item => !!item); + } + }, + + /** + * Count of favorites. + * + * @actions + * + * @param {String?} article - Article ID + * @param {String?} user - User ID + * @returns {Number} + */ + count: { + cache: { + keys: ["article", "user"] + }, + params: { + article: { type: "string", optional: true }, + user: { type: "string", optional: true }, + }, + handler(ctx) { + let query = {}; + if (ctx.params.article) + query = { article: ctx.params.article }; + + if (ctx.params.user) + query = { user: ctx.params.user }; + + return this.adapter.count({ query }); + } + }, + + /** + * Delete a favorite record + * + * @actions + * + * @param {String} article - Article ID + * @param {String} user - User ID + * @returns {Number} Count of removed records + */ + delete: { + params: { + article: { type: "string" }, + user: { type: "string" }, + }, + handler(ctx) { + const { article, user } = ctx.params; + return this.findByArticleAndUser(article, user) + .then(item => { + if (!item) + return this.Promise.reject(new MoleculerClientError("Articles has not favorited yet")); + + return this.adapter.removeById(item._id) + .then(json => this.entityChanged("removed", json, ctx).then(() => json)); + }); + } + }, + + /** + * Remove all favorites by article + * + * @actions + * + * @param {String} article - Article ID + * @returns {Number} Count of removed records + */ + removeByArticle: { + params: { + article: { type: "string" } + }, + handler(ctx) { + return this.adapter.removeMany(ctx.params); + } + } + }, + + /** + * Methods + */ + methods: { + /** + * Find the first favorite record by 'article' or 'user' + * @param {String} article - Article ID + * @param {String} user - User ID + */ + findByArticleAndUser(article, user) { + return this.adapter.findOne({ article, user }); + }, + }, + + events: { + "cache.clean.favorites"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.users"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.articles"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + } + } +}; \ No newline at end of file diff --git a/intro/server/services/follows.service.js b/intro/server/services/follows.service.js new file mode 100644 index 0000000..6438566 --- /dev/null +++ b/intro/server/services/follows.service.js @@ -0,0 +1,153 @@ +"use strict"; + +const { MoleculerClientError } = require("moleculer").Errors; +const DbService = require("../mixins/db.mixin"); + +module.exports = { + name: "follows", + mixins: [DbService("follows")], + + /** + * Default settings + */ + settings: { + + }, + + /** + * Actions + */ + actions: { + + /** + * Create a new following record + * + * @actions + * + * @param {String} user - Follower username + * @param {String} follow - Followee username + * @returns {Object} Created following record + */ + add: { + params: { + user: { type: "string" }, + follow: { type: "string" }, + }, + handler(ctx) { + const { follow, user } = ctx.params; + return this.findByFollowAndUser(follow, user) + .then(item => { + if (item) + return this.Promise.reject(new MoleculerClientError("User has already followed")); + + return this.adapter.insert({ follow, user, createdAt: new Date() }) + .then(json => this.entityChanged("created", json, ctx).then(() => json)); + }); + } + }, + + /** + * Check the given 'follow' user is followed by 'user' user. + * + * @actions + * + * @param {String} user - Follower username + * @param {String} follow - Followee username + * @returns {Boolean} + */ + has: { + cache: { + keys: ["article", "user"] + }, + params: { + user: { type: "string" }, + follow: { type: "string" }, + }, + handler(ctx) { + return this.findByFollowAndUser(ctx.params.follow, ctx.params.user) + .then(item => !!item); + } + }, + + /** + * Count of following. + * + * @actions + * + * @param {String?} user - Follower username + * @param {String?} follow - Followee username + * @returns {Number} + */ + count: { + cache: { + keys: ["article", "user"] + }, + params: { + follow: { type: "string", optional: true }, + user: { type: "string", optional: true }, + }, + handler(ctx) { + let query = {}; + if (ctx.params.follow) + query = { follow: ctx.params.follow }; + + if (ctx.params.user) + query = { user: ctx.params.user }; + + return this.adapter.count({ query }); + } + }, + + /** + * Delete a following record + * + * @actions + * + * @param {String} user - Follower username + * @param {String} follow - Followee username + * @returns {Number} Count of removed records + */ + delete: { + params: { + user: { type: "string" }, + follow: { type: "string" }, + }, + handler(ctx) { + const { follow, user } = ctx.params; + return this.findByFollowAndUser(follow, user) + .then(item => { + if (!item) + return this.Promise.reject(new MoleculerClientError("User has not followed yet")); + + return this.adapter.removeById(item._id) + .then(json => this.entityChanged("removed", json, ctx).then(() => json)); + }); + } + } + }, + + /** + * Methods + */ + methods: { + /** + * Find the first following record by 'follow' or 'user' + * @param {String} follow - Followee username + * @param {String} user - Follower username + */ + findByFollowAndUser(follow, user) { + return this.adapter.findOne({ follow, user }); + }, + }, + + events: { + "cache.clean.follows"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.users"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + } + } +}; \ No newline at end of file diff --git a/intro/server/services/metrics.service.js b/intro/server/services/metrics.service.js new file mode 100644 index 0000000..f4a1ccc --- /dev/null +++ b/intro/server/services/metrics.service.js @@ -0,0 +1,96 @@ +let _ = require("lodash"); + +module.exports = { + name: "metrics", + + events: { + "metrics.trace.span.start"(payload) { + this.requests[payload.id] = payload; + payload.spans = []; + + if (payload.parent) { + let parent = this.requests[payload.parent]; + if (parent) + parent.spans.push(payload.id); + } + }, + + "metrics.trace.span.finish"(payload) { + let item = this.requests[payload.id]; + _.assign(item, payload); + + if (!payload.parent) + this.printRequest(payload.id); + } + }, + + methods: { + printRequest(id) { + let main = this.requests[id]; + + let w = 73; + let r = _.repeat; + let gw = 35; + let maxTitle = w - 2 - 2 - gw - 2 - 1; + + this.logger.info(["┌", r("─", w-2), "┐"].join("")); + + let printSpanTime = (span) => { + let time = span.duration.toFixed(2); + + let maxActionName = maxTitle - (span.level-1) * 2 - time.length - 3 - (span.fromCache ? 2 : 0) - (span.remoteCall ? 2 : 0) - (span.error ? 2 : 0); + let actionName = span.action ? span.action.name : ""; + if (actionName.length > maxActionName) + actionName = _.truncate(span.action.name, { length: maxActionName }); + + let strAction = [ + r(" ", span.level - 1), + actionName, + r(" ", maxActionName - actionName.length + 1), + span.fromCache ? "* " : "", + span.remoteCall ? "» " : "", + span.error ? "× " : "", + time, + "ms " + ].join(""); + + if (span.startTime == null || span.endTime == null) { + this.logger.info(strAction + "! Missing invoke !"); + return; + } + + let gstart = (span.startTime - main.startTime) / (main.endTime - main.startTime) * 100; + let gstop = (span.endTime - main.startTime) / (main.endTime - main.startTime) * 100; + + if (_.isNaN(gstart) && _.isNaN(gstop)) { + gstart = 0; + gstop = 100; + } + + let p1 = Math.round(gw * gstart / 100); + let p2 = Math.round(gw * gstop / 100) - p1; + let p3 = Math.max(gw - (p1 + p2), 0); + + let gauge = [ + "[", + r(".", p1), + r("■", p2), + r(".", p3), + "]" + ].join(""); + + this.logger.info("│ " + strAction + gauge + " │"); + + if (span.spans.length > 0) + span.spans.forEach(spanID => printSpanTime(this.requests[spanID])); + }; + + printSpanTime(main); + this.logger.info(["└", r("─", w-2), "┘"].join("")); + } + }, + + created() { + this.requests = {}; + } +}; \ No newline at end of file diff --git a/intro/server/services/users.service.js b/intro/server/services/users.service.js new file mode 100644 index 0000000..c395aed --- /dev/null +++ b/intro/server/services/users.service.js @@ -0,0 +1,390 @@ +"use strict"; + +const { MoleculerClientError } = require("moleculer").Errors; + +//const crypto = require("crypto"); +const bcrypt = require("bcrypt-nodejs"); +const jwt = require("jsonwebtoken"); + +const DbService = require("../mixins/db.mixin"); + +module.exports = { + name: "users", + mixins: [DbService("users")], + + /** + * Default settings + */ + settings: { + /** Secret for JWT */ + JWT_SECRET: process.env.JWT_SECRET || "jwt-conduit-secret", + + /** Public fields */ + fields: ["_id", "username", "email", "bio", "image"], + + /** Validator schema for entity */ + entityValidator: { + username: { type: "string", min: 2, pattern: /^[a-zA-Z0-9]+$/ }, + password: { type: "string", min: 6 }, + email: { type: "email" }, + bio: { type: "string", optional: true }, + image: { type: "string", optional: true }, + } + }, + + /** + * Actions + */ + actions: { + /** + * Register a new user + * + * @actions + * @param {Object} user - User entity + * + * @returns {Object} Created entity & token + */ + create: { + params: { + user: { type: "object" } + }, + handler(ctx) { + let entity = ctx.params.user; + return this.validateEntity(entity) + .then(() => { + if (entity.username) + return this.adapter.findOne({ username: entity.username }) + .then(found => { + if (found) + return Promise.reject(new MoleculerClientError("Username is exist!", 422, "", [{ field: "username", message: "is exist"}])); + + }); + }) + .then(() => { + if (entity.email) + return this.adapter.findOne({ email: entity.email }) + .then(found => { + if (found) + return Promise.reject(new MoleculerClientError("Email is exist!", 422, "", [{ field: "email", message: "is exist"}])); + }); + + }) + .then(() => { + entity.password = bcrypt.hashSync(entity.password, bcrypt.genSaltSync(10)); + entity.bio = entity.bio || ""; + entity.image = entity.image || null; + entity.createdAt = new Date(); + + return this.adapter.insert(entity) + .then(doc => this.transformDocuments(ctx, {}, doc)) + .then(user => this.transformEntity(user, true, ctx.meta.token)) + .then(json => this.entityChanged("created", json, ctx).then(() => json)); + }); + } + }, + + /** + * Login with username & password + * + * @actions + * @param {Object} user - User credentials + * + * @returns {Object} Logged in user with token + */ + login: { + params: { + user: { type: "object", props: { + email: { type: "email" }, + password: { type: "string", min: 1 } + }} + }, + handler(ctx) { + const { email, password } = ctx.params.user; + + return this.Promise.resolve() + .then(() => this.adapter.findOne({ email })) + .then(user => { + if (!user) + return this.Promise.reject(new MoleculerClientError("Email or password is invalid!", 422, "", [{ field: "email", message: "is not found"}])); + + return bcrypt.compare(password, user.password).then(res => { + if (!res) + return Promise.reject(new MoleculerClientError("Wrong password!", 422, "", [{ field: "email", message: "is not found"}])); + + // Transform user entity (remove password and all protected fields) + return this.transformDocuments(ctx, {}, user); + }); + }) + .then(user => this.transformEntity(user, true, ctx.meta.token)); + } + }, + + /** + * Get user by JWT token (for API GW authentication) + * + * @actions + * @param {String} token - JWT token + * + * @returns {Object} Resolved user + */ + resolveToken: { + cache: { + keys: ["token"], + ttl: 60 * 60 // 1 hour + }, + params: { + token: "string" + }, + handler(ctx) { + return new this.Promise((resolve, reject) => { + jwt.verify(ctx.params.token, this.settings.JWT_SECRET, (err, decoded) => { + if (err) + return reject(err); + + resolve(decoded); + }); + + }) + .then(decoded => { + if (decoded.id) + return this.getById(decoded.id); + }); + } + }, + + /** + * Get current user entity. + * Auth is required! + * + * @actions + * + * @returns {Object} User entity + */ + me: { + auth: "required", + cache: { + keys: ["#token"] + }, + handler(ctx) { + return this.getById(ctx.meta.user._id) + .then(user => { + if (!user) + return this.Promise.reject(new MoleculerClientError("User not found!", 400)); + + return this.transformDocuments(ctx, {}, user); + }) + .then(user => this.transformEntity(user, true, ctx.meta.token)); + } + }, + + /** + * Update current user entity. + * Auth is required! + * + * @actions + * + * @param {Object} user - Modified fields + * @returns {Object} User entity + */ + updateMyself: { + auth: "required", + params: { + user: { type: "object", props: { + username: { type: "string", min: 2, optional: true, pattern: /^[a-zA-Z0-9]+$/ }, + password: { type: "string", min: 6, optional: true }, + email: { type: "email", optional: true }, + bio: { type: "string", optional: true }, + image: { type: "string", optional: true }, + }} + }, + handler(ctx) { + const newData = ctx.params.user; + return this.Promise.resolve() + .then(() => { + if (newData.username) + return this.adapter.findOne({ username: newData.username }) + .then(found => { + if (found && found._id.toString() !== ctx.meta.user._id.toString()) + return Promise.reject(new MoleculerClientError("Username is exist!", 422, "", [{ field: "username", message: "is exist"}])); + + }); + }) + .then(() => { + if (newData.email) + return this.adapter.findOne({ email: newData.email }) + .then(found => { + if (found && found._id.toString() !== ctx.meta.user._id.toString()) + return Promise.reject(new MoleculerClientError("Email is exist!", 422, "", [{ field: "email", message: "is exist"}])); + }); + + }) + .then(() => { + newData.updatedAt = new Date(); + const update = { + "$set": newData + }; + return this.adapter.updateById(ctx.meta.user._id, update); + }) + .then(doc => this.transformDocuments(ctx, {}, doc)) + .then(user => this.transformEntity(user, true, ctx.meta.token)) + .then(json => this.entityChanged("updated", json, ctx).then(() => json)); + + } + }, + + /** + * Get a user profile. + * + * @actions + * + * @param {String} username - Username + * @returns {Object} User entity + */ + profile: { + cache: { + keys: ["#token", "username"] + }, + params: { + username: { type: "string" } + }, + handler(ctx) { + return this.adapter.findOne({ username: ctx.params.username }) + .then(user => { + if (!user) + return this.Promise.reject(new MoleculerClientError("User not found!", 404)); + + return this.transformDocuments(ctx, {}, user); + }) + .then(user => this.transformProfile(ctx, user, ctx.meta.user)); + } + }, + + /** + * Follow a user + * Auth is required! + * + * @actions + * + * @param {String} username - Followed username + * @returns {Object} Current user entity + */ + follow: { + auth: "required", + params: { + username: { type: "string" } + }, + handler(ctx) { + return this.adapter.findOne({ username: ctx.params.username }) + .then(user => { + if (!user) + return this.Promise.reject(new MoleculerClientError("User not found!", 404)); + + return ctx.call("follows.add", { user: ctx.meta.user._id.toString(), follow: user._id.toString() }) + .then(() => this.transformDocuments(ctx, {}, user)); + }) + .then(user => this.transformProfile(ctx, user, ctx.meta.user)); + } + }, + + /** + * Unfollow a user + * Auth is required! + * + * @actions + * + * @param {String} username - Unfollowed username + * @returns {Object} Current user entity + */ + unfollow: { + auth: "required", + params: { + username: { type: "string" } + }, + handler(ctx) { + return this.adapter.findOne({ username: ctx.params.username }) + .then(user => { + if (!user) + return this.Promise.reject(new MoleculerClientError("User not found!", 404)); + + return ctx.call("follows.delete", { user: ctx.meta.user._id.toString(), follow: user._id.toString() }) + .then(() => this.transformDocuments(ctx, {}, user)); + }) + .then(user => this.transformProfile(ctx, user, ctx.meta.user)); + } + } + }, + + /** + * Methods + */ + methods: { + /** + * Generate a JWT token from user entity + * + * @param {Object} user + */ + generateJWT(user) { + const today = new Date(); + const exp = new Date(today); + exp.setDate(today.getDate() + 60); + + return jwt.sign({ + id: user._id, + username: user.username, + exp: Math.floor(exp.getTime() / 1000) + }, this.settings.JWT_SECRET); + }, + + /** + * Transform returned user entity. Generate JWT token if neccessary. + * + * @param {Object} user + * @param {Boolean} withToken + */ + transformEntity(user, withToken, token) { + if (user) { + //user.image = user.image || "https://www.gravatar.com/avatar/" + crypto.createHash("md5").update(user.email).digest("hex") + "?d=robohash"; + user.image = user.image || ""; + if (withToken) + user.token = token || this.generateJWT(user); + } + + return { user }; + }, + + /** + * Transform returned user entity as profile. + * + * @param {Context} ctx + * @param {Object} user + * @param {Object?} loggedInUser + */ + transformProfile(ctx, user, loggedInUser) { + //user.image = user.image || "https://www.gravatar.com/avatar/" + crypto.createHash("md5").update(user.email).digest("hex") + "?d=robohash"; + user.image = user.image || "/assets/images/smiley-cyrus.jpg"; + + if (loggedInUser) { + return ctx.call("follows.has", { user: loggedInUser._id.toString(), follow: user._id.toString() }) + .then(res => { + user.following = res; + return { profile: user }; + }); + } + + user.following = false; + + return { profile: user }; + } + }, + + events: { + "cache.clean.users"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + }, + "cache.clean.follows"() { + if (this.broker.cacher) + this.broker.cacher.clean(`${this.name}.*`); + } + } +}; \ No newline at end of file diff --git a/intro/server/src/Main.elm b/intro/server/src/Main.elm new file mode 100644 index 0000000..2a336be --- /dev/null +++ b/intro/server/src/Main.elm @@ -0,0 +1,62 @@ +port module Main exposing (..) + +{- | Displays “You’re all set!” and a heart in the style of the Elm logo (created + by Marco Perone, CC-BY-SA-4.0 - thanks for sharing it, Marco!) + + If this doesn't display, it means something needs to be fixed about your local + setup, and you should ask the instructor for help! +-} + +import Browser +import Html exposing (Html, h1, img, section, text) +import Html.Attributes exposing (alt, src, style) +import Json.Decode exposing (Value) + + +port storeSession : Maybe String -> Cmd msg + + +port onSessionChange : (Value -> msg) -> Sub msg + + +main : Program () () () +main = + Browser.application + { init = \_ _ _ -> ( (), Cmd.none ) + , onUrlChange = \_ -> () + , onUrlRequest = \_ -> () + , update = + \() () -> + if False then + ( (), storeSession Nothing ) + + else + ( (), Cmd.none ) + , subscriptions = \() -> onSessionChange (\_ -> ()) + , view = + \() -> + { title = "Elm 0.19 workshop" + , body = + [ section + [ style "margin" "40px auto" + , style "width" "960px" + , style "text-align" "center" + ] + [ h1 + [ style "margin" "40px auto" + , style "font-family" "Helvetica, Arial, sans-serif" + , style "font-size" "128px" + , style "color" "rgb(90, 99, 120)" + ] + [ text "You’re all set!" ] + , img + [ alt "Heart in the style of the Elm logo, by Marco Perone" + , src "https://user-images.githubusercontent.com/1094080/39399444-a90f2746-4aeb-11e8-9bd6-4fe45e535921.png" + , style "width" "368px" + , style "height" "305px" + ] + [] + ] + ] + } + }