diff --git a/.gitignore b/.gitignore index 5f850209..3fc22767 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ *.DS_Store bin/ .bin/ +.gradle/ +.settings/ +.recommenders/ +**/.idea/* diff --git a/.gradle/4.3/fileChanges/last-build.bin b/.gradle/4.3/fileChanges/last-build.bin deleted file mode 100644 index f76dd238..00000000 Binary files a/.gradle/4.3/fileChanges/last-build.bin and /dev/null differ diff --git a/.gradle/4.3/fileHashes/fileHashes.lock b/.gradle/4.3/fileHashes/fileHashes.lock deleted file mode 100644 index f7eafded..00000000 Binary files a/.gradle/4.3/fileHashes/fileHashes.lock and /dev/null differ diff --git a/.gradle/4.3/taskHistory/taskHistory.lock b/.gradle/4.3/taskHistory/taskHistory.lock deleted file mode 100644 index eff1ca87..00000000 Binary files a/.gradle/4.3/taskHistory/taskHistory.lock and /dev/null differ diff --git a/.gradle/4.4/fileChanges/last-build.bin b/.gradle/4.4/fileChanges/last-build.bin deleted file mode 100644 index f76dd238..00000000 Binary files a/.gradle/4.4/fileChanges/last-build.bin and /dev/null differ diff --git a/.gradle/4.4/fileContent/fileContent.lock b/.gradle/4.4/fileContent/fileContent.lock deleted file mode 100644 index 4166665e..00000000 Binary files a/.gradle/4.4/fileContent/fileContent.lock and /dev/null differ diff --git a/.gradle/4.4/fileHashes/fileHashes.bin b/.gradle/4.4/fileHashes/fileHashes.bin deleted file mode 100644 index bfec01d6..00000000 Binary files a/.gradle/4.4/fileHashes/fileHashes.bin and /dev/null differ diff --git a/.gradle/4.4/fileHashes/fileHashes.lock b/.gradle/4.4/fileHashes/fileHashes.lock deleted file mode 100644 index 4b254e1f..00000000 Binary files a/.gradle/4.4/fileHashes/fileHashes.lock and /dev/null differ diff --git a/.gradle/4.4/fileHashes/resourceHashesCache.bin b/.gradle/4.4/fileHashes/resourceHashesCache.bin deleted file mode 100644 index 9c17aad2..00000000 Binary files a/.gradle/4.4/fileHashes/resourceHashesCache.bin and /dev/null differ diff --git a/.gradle/4.4/javaCompile/classAnalysis.bin b/.gradle/4.4/javaCompile/classAnalysis.bin deleted file mode 100644 index 34f0480e..00000000 Binary files a/.gradle/4.4/javaCompile/classAnalysis.bin and /dev/null differ diff --git a/.gradle/4.4/javaCompile/jarAnalysis.bin b/.gradle/4.4/javaCompile/jarAnalysis.bin deleted file mode 100644 index 124d9b04..00000000 Binary files a/.gradle/4.4/javaCompile/jarAnalysis.bin and /dev/null differ diff --git a/.gradle/4.4/javaCompile/javaCompile.lock b/.gradle/4.4/javaCompile/javaCompile.lock deleted file mode 100644 index 83d1ead4..00000000 Binary files a/.gradle/4.4/javaCompile/javaCompile.lock and /dev/null differ diff --git a/.gradle/4.4/javaCompile/taskHistory.bin b/.gradle/4.4/javaCompile/taskHistory.bin deleted file mode 100644 index 8cf69e3e..00000000 Binary files a/.gradle/4.4/javaCompile/taskHistory.bin and /dev/null differ diff --git a/.gradle/4.4/javaCompile/taskJars.bin b/.gradle/4.4/javaCompile/taskJars.bin deleted file mode 100644 index 7355121c..00000000 Binary files a/.gradle/4.4/javaCompile/taskJars.bin and /dev/null differ diff --git a/.gradle/4.4/taskHistory/taskHistory.bin b/.gradle/4.4/taskHistory/taskHistory.bin deleted file mode 100644 index 8248009a..00000000 Binary files a/.gradle/4.4/taskHistory/taskHistory.bin and /dev/null differ diff --git a/.gradle/4.4/taskHistory/taskHistory.lock b/.gradle/4.4/taskHistory/taskHistory.lock deleted file mode 100644 index 3e91d554..00000000 Binary files a/.gradle/4.4/taskHistory/taskHistory.lock and /dev/null differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index f192fd3c..00000000 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and /dev/null differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index 8742197f..00000000 --- a/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Thu Feb 22 11:33:14 EST 2018 -gradle.version=4.3 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin deleted file mode 100644 index e35c8652..00000000 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fdt b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fdt deleted file mode 100644 index f45918db..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fdt and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fdx b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fdx deleted file mode 100644 index 47905a63..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fdx and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fnm b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fnm deleted file mode 100644 index e5e6f9a6..00000000 --- a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.fnm +++ /dev/null @@ -1,3 +0,0 @@ - -coordinate fingerprintssymbolic-names -classifierselfccallovrdselfmovrpovrmstaticsctor \ No newline at end of file diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.frq b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.frq deleted file mode 100644 index 46d06e30..00000000 --- a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.frq +++ /dev/null @@ -1,1018 +0,0 @@ ->H!D =m](?*"Q#"1_ͯ -3')|"7 u2|K#0)\.B7  $/1HAC8 -=2'0o(2/dQGɡ!;ը"%!8% 2cu"9wvKYׄ -Fy?n7q-vFx\2uTώ-fE? hÞ~LrKߩ:Kc<{ iN-8/O -*: w 2B&F՛V`L)'N<& -!# |G0` c(-'+  j!$ %3a A - w*/"$"O /! }"#)- P(? (0A-*K"$"7'!#>IC;U)! -&c3&/`&#I"<ׅ , A;1S 1_<Q-j! A5@U(9!0*G#`0) ל D-w)_/; S'7+?!$7*W\9:(3 *A* "-(e !KY*|# FE G `((#! DVl ;! 5" (1 @#+A'I"9&P %~9!(I%-! ~w+$5"V 'v A>qO;I U 8! -Cj  "1 -jVC&$Q#P !E? 7ɓ -fL? -+QK!19? X$)$X,$ )X#E!="9  <[N&/ ]C?9fo57da"#=?%#:M$)5%#!-(%i-N5;'5')%3071/A"8 + "*;_-k##$ L#]b15ɛbB{~$Yu_2LTOσ4VI[[Ӑ7w|f!˵PŇY "1Ӭ -JJM#>%#L'[$XQ:E,&8/  I vA!Ϯ{'/SSz$3<ͅm !{% !0{? MiC- [5Vb<'&f !%Y, 9! ѝ7Z -"U;{ K?8a" -v4 -G2!^ # UfJ$=S bۀ$ U?w y".I -C ;#i"q>$%=/C/:#)1=VADtD! -*4]/8(u".sJI#v#!DZ  .+Ӱ!!DtKu.1Sݱ6t"0|<# -#ј "%?DFF!){Cə"$ŏÃ* @=!!{M " >WӖ!""( -E;D" #3$&q*"! - 8L) "#}{w ~ 6qFz͋p+95 E*/\!#:>!Ӥ['QV[0S,?)=.mK$۟w&&Jϑ8<5Y _=?>Y12 #?K_!PD'O%%YŚ8h 0 5WWSH(.V1X,;?gX=;? ?1[7n&/ 'p_| ;%9'!,u*mq}#'xCa @* ٔ$lnAK1-E ;AJk 0 1X7;{4K]] ZY"y#1_@>i;|`dWzK@VLJ":/ "T  y 0  -(@ v## 0h& 9"! 7Gk; )/(Aٷ LG$" ) oxN -  !$O! "c u 'G/ o A"E"j  -#bV    $j 2;B H! B+V!6H$  x2B!!v2&vɆ ) w ?   F!FQ!RA$. ! }R BC #! $j":@! @# -x#!"|+6P!h)q'G/F@@c;?V: - ˡOs"4b4{;( @=(6-x/2)۵B|E G^$2*;6S* CL( ',i .%o5_(cwϔD& 1*J/ !GO #=@?#`*I+B8541S8%/ˈ,\.$a+-K' +,.9  y`"1+k-"1M*5!$C1O A58I 2 ?!5 *L W F3 N' *n.B%:.  \ 3C ^5 $12( - j:`9"w*'',9F<5 f7!" (12h+D%9 Mv9.I-h!a -.  6F(E*L75,073S$)$'+-"eE;5!]24% 8?2 44-'12'",0hDR)4$6>g- +<8 E)*;?1-ɲ D@%&7++j |+E(Q  s*)ð2z+.>*'WDAY,6((BJ^' - Jq V$8Q4"F K%*#\W2V(OC$L#-L!<L !K"("D*M -.~>E!BdQ$#"їS #CqV 3q - +ѐ5"[-]0;W!! "#žv5 ݄SA7 !%!?ICBQ)0T7ۉXz( L'!D=*" J#<!ߗ< V,)(5 Z?/%!" 'i"&y( +~0O =u ϯ3nz4#I` s -_dO.  r  C(ѕ&'(=^&'&!Z*a+# J D5GM!)%(k D!n(7ayE EOCS*+T!VArGP1pO}!!W#"L -#9C|+DL"~٘& w)#"Fr2,-Kk #fi -sŋ:1)-y#. "_!q0 -%Q|)g -*  "I{<$f%`ϗ'S۬ dAݨ&c&Vݚ#k#I %DD" C;YoBDvW^q R"Ix!)$7c9CIY0dEtA.uAr#C 9.-vDCLB7^ -U=% ?A1rE'GE !"H-C9p_- # "3'"@DDK۱ -)3aNA˲+'L7x'/tBMr(%(b$>7+]97!E(- :/&]!9۷7 &7)#" -CQC%1"I Z#QG8%A&5[K<.7uEz#&DK.'0#E -F*5! 9ueCE$7oI7ݍ" C+E C)1ň'4#L  8EB5=>_=E%.E-='=x(/Տd(O"G  i y =; U=8yB HxG/Xp8?R759۝YWF"n-"W{mÅN.21P.F %zr "= ˸ O -6KF%0\Un: }1 -M.>FǔǾ110:*;'фKdϙu^!o%"(Rt' p;!J)% z%L*!!הW2B;7SB &Z( 0, -Y-4o5+J * Ӈ '0ft#  ( -ё"",  6y!D"z5x4*CtM>GhG&" N9=qזI???qv% '"j4~5=7ߌ@1b.O;3R.}h%/n 2 %6%=[ c&K['ņɒzU!>%Ӏ gQE۔?-"1 - -9"M9")G -5%Y90{$70^3-i.n$"glj%Vb&'a5-6C01;w A:FF]QdMA+$ALF])ߢG,k%g( )/)m'c>:&͟ Pq;)_'3+R@ne ۅb,R&$Z X =v*KkkT%;K)stAS=g2mmDjE;T!(/ u\ Q%L(+]*4EFK  <)DSJ N(Ӱ;'ϛC˧)ˉd~,."ߴ!P"U_E"!0\QJ - L= ?Q^q-.~0߅> y*p -~)AHj'CôfOv=E-EqջyPS)ai RHtcǿU32` -Vr0cI x28D5ׇװ5jc8W9 +nߓB6۲c6S?#U4f<ߛ :Ǚɟp/.S\w5\߂zJcZF\۽v.ZA -|\͙U!Ò[9*sFɧ&$ә:9}-/]+Oo'-$b? qE͟27ӹ P+8ݮ=oT(%Ƀ- >L.]'& EՇ')$$_B ;CBCTh d H%P` *eK, M$a!*݄ 'I 1^/VÆ 8ŀRիxչ5-0cѤ)vEi"?v;2Z]h#M K%3_"H"! DU MGGUm)|a#u -#I"]b|i_{=!& x*ϕMɾ~!"&):oJ 'ǐr1>%JţͰjǑ;ӎ!7C+sEjx; pnM}IvLe:b;' G+1b!!tE" -`|էgOD'ϱB[)>ō,#{DO ɰu% -E##o*@(2 $ -1c!i $!1)<# 'Ei!"/!!i!(M#'A\$ x+ #!C  -'p - @2.')O+/."_JF r. ^/ l(! G/r$Q).<c ?BYr&22 #   W_651'Z+1*qx&[)"(C 8!),I-?11h(l#  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?E/ / -#!)4/ J"*)υ)D/ <" " (w'k)"s $U1C) CY=R>V- 9hhK YrK';!s*9| x@!)9#)FCH  -F?L ͔I;XQ 3!|2G]I*K 7n5'0с'5# ߣ#OL=EQ;!3&Ś' ! AL(3F!>F?J,)_8! %ˮ`,+ <qHOUvK'45 -\@ 'Gd{)IYCu2vxC' 'pB" )+EL >J&ɪXSi-no?6ǁB?5s'^)A##՜- _"O";/(#"1= ː:1xA&7&(HM\' i&5e"_!= =gJ ?="3)*xW9 &8!#1ÖE>I" =SL)t 7(=*MA)b0;QM*!4}9!0}AL 1ǎ"h*r&'א;i.#I*sX<) $s.ם>) \ɗpHP E&vCxCoj&*"TE=E_tǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2EB'($$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ͊(' -D*"$B"@& ("&2(+!E$#&)*.+$+" &7~D ?#-!9>**"DF -O S? Y 4%U>5( A7o G-$#*U H .&)+Dd;ٰAY/M/7 q! P+*i17 / ?' r $'2^ -'a(U}+7"/ AF!$D 0(]1) #E #(F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2v.!&(@EGW?K4ϼG~!r`nz.CӪ5X9zK]:JJ(5(W6Z *C'K "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO mNl9"լ}`WGE,8Gnj˃,í(iBz| -'`g' -Pb 80'B#6ˆEzjÉ'nɦ!/W(D771'3w9-0$: +u+Z@/"b+~-X@ -; #k;Y"ł"m?!"P5?L ;?oC-?!C#& -"}9E#Kb'='|;-/s9"  !(x=C E -E xJ8 M#oD ۗ>KD )DG j< -׉Ó7IOHct'C"E; )!W x#!5{1#^4y-s7&7/G>~݌DžF5F~ݪ+S8".-[ёϯ?yA1/K"-v 7u=:8W! =Z @ K?/ŒMBG ezS; m IɁ-<A Dѡ,'SmB Og -:E?H!#5gAC59B)eAD/y#/ð:;$4׼e#=UA{I9#3}>V7hўD7"RDPL9[] O9E1Z#|ö83'~!Şh1AXdt w=LZє N٬5"ߋ6c?A1 ?D;X^ 7:[W"eXy2y9"G5p4;":8uR3v+g'auj( "$i  o7C! YzY 7vDٔ"!-VCJmͬC-DZ?|÷ɊO--ل;{k5ŗA5!?d9TIű3 S9 -X"us"OXl -"\5r!bh{D94By"( 1.6@ SIYńYyL7$B?g8!ߡ"79M"} C?e{A;ϭC!? 0)/Aߪ 2a! s)1e/Jo GJt;]A %w"G =-y7aѶP%bu"C6?~)!Q`ÿKrP81HEFE.sJk(=#J$5+8)eߗ3)CFpA'q7#1aT!"i+ˍ; 52W 7}1VCK/3dF=+/϶]MLE + A"k )݊M ǣ?!ӱ[" 4Ւ -;aG4$ "2Q%h~W8*Mɨd ?߫1E`748ϣ QTVNS-`êcT#.#{׾,hgCݫkGvNRDMˑu}Շ)E_ODX)Rl{ E1vHjQŴC${Bzզ!zTdٻ"lKUd&['eɑwו" '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M߲^05<8,)'?C4S1( o+-&2-:#1 -I!`z1' $J, -q+o9](5g~IZ1˟PE2&X1M(2e2s  | uِr/6Umb"5w>"!  :Yz#LK0zD  Q0yL(} -!Ş/x"AP.$'#>/&^ {#!w" "*{P* `ѯp!B "C 0!z!)> <)| Ex uFxJwD# τH! - -'  -?B!ѩ M -#ŕw"'# -P(X+R p+!,;<"š[&"v$#7"% 9K~2 EH}# - ":G ="C#-u "}*) V;Nnb5 sd - <  '$;* ?D m@ #.|Ba -m vсA߼~:!r7  `!."!'z pe+; Ät8"kPKd#&"!JX"p0Ey"q;gY#8lųo"I"Xɸr oA%X0 (rf׏˄K"QA"AeQNc""!OJ !z%SIl y! %=0T;dc,Ǩh;Okj;lt˓6fIj)H3)UWۚ́?dbݻ" -+Ő)! -S+G"$0 K%# " a1K.##v8#$x M)4'> ^#/-0#F/}#(/7;I"\&P>i_45٨.tG0SǬN~S`p(/Xx6"_) [90 ,U3J /?!ӗ \ͭU0xaqW*Tv&Rr08= ɏ"Jݗ=٪"|.ݧ!S#ev z-?1t[цK8Xa{3!v׵!1w X9g _p#-/Ol D!ۯg9j,3p3ٗr#_ɇA793r 9#CB*|# b=qZa1U017 +& *j4 M ' טC* '+$*?cӫj1-##>Vq0DL##j"T"$'I<1/#1 ( % #G xW1#ŰBհ(Sӻɮ  CS[4F![s7n3[a`Nݼw#IYxU.yшjD/2!H1[ )N,3T5s-J`/*#4sZD- -C<7=p;I9##,0 -O-DD& "TM`^|Y -+3 G.1 BO1 3s ( C"Mw=тt'|Tfg "O͂9* *##No^ "L r !97=CT+!EZW/.Qs\T@9( 11@Jdi@S !!m#LݎgJ߶PJR-S?"!L%&O.B #T.0FF%)QO1BE:у9"3:  -W&&,MA$*PWK (8-JDw -l.+!d,)g5%*"p+(J'B 3-3v .-p=6JZ>#vI#B )K ߁>JXA pYӜ:S3|Uipz!Z/q!,5a.! "lp7'sم^{C>0`#9:B #>! CY@ŮzWT[\ -U!@ -3M% M(Eq1W9˔J' .[fɂۂO2"51GN7*"S J$W'u\KI4U3  p#(iBJr`?r" - LN7al|(q8%6|$ŕ -@ q3Se߆XǏ/2\0952' #z 8j:VoK85Ð1*Pپ{#F<*oF3a8/2VyF)Yݙ)d#['5{UogZDoK0'&ˀs\5zd/A25ǕtuIkS>xQu' #[˰v -K%ɶ*(?Y:"~ٸ,oo4:!# t""ߏ"o& R9u7 &) R*( -: -@56>݋H )F! .< -$Q#}0 x\u.GEA"#5!& y - * i  #8*%B+9: 7PFk+$t -9 -/ 1g $Ü>@ !52( ! @04R !&7I " #h  -})2! -J('b -M;(,8,'+w -c -ݶ:8  GGp;G* )"3V! - |  0`    - - -        &+                                                                                                                                                                                                                                                                                                   /|/ 0`    - - -        $""'  """                                                                                                                                                                                                                                                                                                  /|/ 0`    - - -        $""'  """                                                                                                                                                                                                                                                                                                  /|/ 0`    - - -        $""'  """                                                                                                                                                                                                                                                                                                  /|/ 0`    - - -        $"     "$  !! !                                                                                                                                                                                                                                                                                                                                     !                                                                                                                                                                                                                                                                                                                                                                                                                               H|0` -#-'%-*)& #,%)")0%".;$*!/, $.)'"1##%$$%'-+)/')'#(##%((!)((*&%%3)#*(.(&'% (!( 3(%")'0'!+(()%)-$')'#$)""   '0+"#'("!*%$,,6'&'6'!%&,"+$5*!(',,$-$2 -2)$"#+-""#"&'&+$& #+!#*(&(,))&&)*"%&""4%&$%#-&*+ #+" *!((% %%%)'0#'2+%2&+'"$!&# -!#)% )-.!,$%"+-%" %+&%&$#*!*!.,!#"'."++*)%'($%".$" #% $% +                                                               &|' 0`    - - -        t$>MŠ&;kjHHHjiUϏfgST+?UmmJZLL)(_zͯ -33G|ն7Sfe^"0#hh_`t6``gipYZmn;^Q/0=>ml݀"Յʹpۿ{WlI~:Y#)MTDl3ǴHASBǍǚwh#7ՑAp1 fQ;t,N\1gGAe.1fR;.$}Y_J2 XmIf"4BfbMCIlr?oqkID<{2Akq. ˶ݠh6Ao=oYn'eddžGGɡ;;lըݢjH#]:H%ɓ/uɗM9wϸvYׄ -Fy?n7q-vFx\2uTώ-fE? hÞ~LrKߩ:Kc<{ iN-8/VORfq_TGM*: B&F՛V`L)'abNxoqb<;Nߙx44 Cj3ZZpɈיr`ۛ<<^7ׅ˔Ӷ  VLb0 !_SR=קǻךyk%%+CCJkrff_5r` !վǛPX &:$('(01))((>=OONNcc˒%%9jGHZ7!CI"fZ/ +*Ū_`hk!Eh$mY ]qb5ɛbB{~$Yu_2LTOσ4VI[Ӑ7ñw|f˵PŇma /͸Ӭ -ZJ۰U''|Ltn8a)6͆!]rlWl -_1~t 49tύo[$XQeN:,.&g8 @2vbAϮ{'`մ0`z3<ͅm+ !4{{ MniC]Q$׸5lVǁ=>EZכsiɳhӀhG ! R:7(}{ W ]$"ǘuaɢvz>4SNH22Ӓ#,fJntDzS ۀۤU?w*3(yݛh -cZ;;NdiiK4"՟hkS>$Łl=CY:Obj9=є5"tK5 -r]K8ZKD}u.Ѵs#IՋv|#FDI 0E1A+ӰߤYDJوtǸu&&ߪ6͹Ũ0F7<_e -.Ǫ -S?TjD1)hF{əū+$ÃTg^=,$4MaZ#*>Ӗ_7d -Ϣ;ߥ5;3q3 -Z8LaL?+#{ùw~͠YEqz͋pŃ+,5IBEo\}Zv:Ӥ['="VD&S,k=]m)QŷeP~7Cߎ۟Ѳ?f&ϑR8{өZ_=lXa2A 0z_PsDL%v%XDŚ:0t?,Wc[sDK͗WgۖY;z0L~7K8c@3rՆN67=2`! k]qHv6ߚO Ya(X5}jJn.a2p]g*x~YA,ݏ}Zպ٫1cW*Dˀ`J -ѧ#ABpXC$Q,K.9LݑpA  -Ϟa4Q4{ee]CdAݷIwʼnDD%00 Z' {\0zP]H5xE͛ #}naJ<`LF}״_<7RՁz+/0|ǶͲ.WXmKyɝJ`ע[/ ق˅/?Í[X$(1KXki/yGɄu&6׶JŔnm&V[(4_t|;%-|U9(0,ѭuկmtٕwśq}xûaeKv  lA1HC-s|;AkÛ1{4K[xiY9ysB@>i;|`dWzK@VLgJ^:i:\ 2<]g"+ły2IkY{nV -.ۮ`;Q.~vŹNBV۞h}vɣ[9ՔsG\kŕk;G٠qAٷ*U@JŢ՞rlG0Q< -W 3ǧ5 ߹uǤ#7^ 7hEAӌŧ0 -)MɌVlc?6 gS?;Qfݩ "*oHi\0"Ų65 2߸tT?/@VhnjߠͫYH2!  XMřőqs˕ۜOU FCY-*?Tm-^M(dCATǀy˿H> oͮBٌ59[c*ѷ:{ џugR='hEA" -#+LUw~||Dߞhq'(/F@dc? - ˡOs"4b4d;@A[266-.x[2۵U| ͑^WIh"Y7z*1YZ3Y4jn):wϔDlEw*G#k!f*>|G`Ë\8mÌS/ա\ыaqKrj ӉLaHK &Gz`˜.@T".Bw!Eɻ͉atO m+sVş`R ݇B\5,"uW^RzR٩$;ѱqy.e*zH 7i@ե ^5g,0 ˛<:>`9Z2*i)'VyݚwBfןCk"hqxMsW X"PŸa ǥ>Gr7m@t7T0Mu)"q;6JM,däɵ 8lۡ'YO"|sZ6$1hͻgϺӁE*Tݹ~vp?ɲN h@ߍfc7j|bEf s)2l.W˷EC]wOk(XJPˤ|ׯJ׻oyeQw'm%4fR7ϓ݈1QW7N)Q#ݬR<Kn˖<Tr8MA+Fi;] 5oGBgR (]U2M- ͎W,+pZnz͍/z2o,˯ wge]9ϧדDZ[ӷ5|KE\D1 ׿|C~|[Qp,߻+j3$,&i.@cd~p#5i^kR2G^>'>IXݞ<&%͇ǜpoL`&36 ~ -5ɍ S*çנ /S=ǝr$*lɷjU@hp/Eߺ HjvӊLDM]A -տe#EQuїwSfrClWVydzۺq*-ӯťɭ`_<5Ê-;"!De#žv Ϳ݄Sh`aAрժFF?CBGqTT6!XztLӂ=g3H]3TM4!VLiV-]i(lT?RѽiAA3Y"y= ݲcO"u# nz4#I` s -_dϚO}rsv,&Muv=?6]\a7++#hh5GM%kwټnӾyydTS*VVx!!rGP1pO}ݟ(aL -#P9|ݤېD"5٘wϠ@j$r.\K_߉^fفwv(ϳ׹$:lɚl{zJm)ź&%lwǡ C I{<$f%`ϗ'S۬ dAݨ&c&VkIj`ckIۓՙӕ;oqvvq(Ruux(c9}}YщdeVkEtuxrǕ -%.vC^iUdrøm'(N+ HH9Map#$4  (K@IKDY۱3 - -e]NN˲^MLxtٜrtbck?>~]^}77@ɥa::]۷P&'& -d!DC18[IWUh٥QR^8'&ݿ[\c[<.uzDُW0.M#hm -dP:95I^ոÈueepjEoݍP +! eň4DDLa[ߖˠ}88aaE>=/.ŻxՠՏ˸͏fdwUO)/! ivuׂyۍͺѻ8yߣKBVx|/Xp8?R759۝YWF"n-"W{mÅN.21P.F %zͷrE ]g åK]˻\p~w۹#}1G<9?TZFӣyǔǾgL+%i?:~;фjdϙu!5*4]tѬpJtz׍gg'HהWɉ~iVB;b[qٟղ7Kъ 4Ŷ, - I5,w -ۄŘ߄o+JlW -Tkt*7 # -*׷&Z9NZ,]I6Egyz{<Ӕ!utћ6E2+&I^iyNaQ=ז~??߰ٛveBB5 _H4~G=ߌJbCO3R}߿hB/nێS2%6%=yo;xq BQrM2qOsw7-[a +t ?&݁w߯dӘ&OET$)~D8$REͦn!$8RV%bH8՚PKLJszGurBّWa 3c2\9iWrђfӆ l@TW߽ -Yt bNNӋA} 2A1nR`ݜ'VͳA}Y0J@G!~sD1s+>5EץǢ2ntHkk/8w &KǦ'ŭɒzU!>+,Q0EQRo۔˾Z\cO::]e/NMx]$$aú/0ɱӺ׃۴ %# -Nũխ.&PgkEnUMqwVhsFa<ŤS&,K5eZ:'(1!|X;|P.gk24Zu{VuC_\:X}ɤ@?a?3msanq;тj:JMF` Ӹ6YoVF@˫t_\+(^7[IþgyzNcR<& GG%19#hٞM?ՈtJݒ{t'?5|W9-HBb3 K -$mUk=͐!>< c!!.T.ՍcMODVcbAMXkcIM\kF -HI>%߷$MH9~{6}in$ljjVm>E&a5-ϲm==ߐF^]wAB+$Lwɠߢ ,×g6 /Ymc&PRq__3ӓRnۅяbyR$<^~X} @vKkskT;%K)stSf&=g23mيIjՂFvT06!u(wQLu4]ˇ4CETKf<SJ\N(;bϛXC˧ˉdy~,P.ߴPd"U_YE4"R!c\Q - XH=Ր?n^q~߅>O y{p~)UAH<Côf}gvɋ=E-EqջyPS)ai RHtcǿU32` -Vr0cI x28D5ׇװ5jc8W9 +nߓB6۲c6S?#U4f<ߛ :Ǚɟp/9 -Ӛ.S\w5\߂zJcZF\۽v.ZA -|\͙U!Ò[9*sFɧc>ә:9}-/]+Oo'-$b? qE͟27ӹ P+8ݮ=otTé%Ǔ{L PAj'H$_~;[hǗdru% ׭c9j,:Mr!K3 O[1^/VÆ 8ŀRիxչ5-0Ѥϐvi"?v;2Z]rn#)Ub3H_d@2# DXU MbՎGUm)au -I3]b|i_{QQ=3&}xݶ*ϕMɾ~~ݭe;&:oJX 1ǐr>%ZJţͰqjǑ߳;ӎٯR7Cs}jxG;^pnM}IvLeŝ:;c rG3b$tE" -`|էgOD'ϱB[)>ō{ uۻlVX#FFooۙq@Sm2>>Uzæ1rr\F1Z10 VOφ'-OX0ݥ''˨xÚWW 7
,;mW1ˮ`TTMqUjvw5<pq\ dy{{nYM 2ˋx5 pӛ E >E'J&)/mihSnуEo6ہBӅs^dEDS##t_43bO9((99]4P&<:PxӼ&,G ՕHnq\ χeۋ_=WKJͼ3e;:3xC9i#gjUÖlI ǺѥSjόcaL}}tQ=xѹ*bwQbbaM46}Z hâ߮r'-׮pi|RQ.s=<^sם>h \ߵpP^ kEvxoӑj:"T˦=_tǨOˊT0/5@&Ŏ4CKɯ"r*ӈ:uJ>bfwwH6K$y[-8~u"]Fy#>GoK$`ͣkɿ\~]ɞT)% -٭Kp AXK eר˙*Ѩ͊T|AQu/Çb"{?Y݆2Z[+R{P+ײߏd͈k/4$٣oV?tP!9p>i׽DO^S?̓ے* F lH0-cًPUgp S+Cn#[ QR. -0@{ -?*ɴvv~2Lh Oů 3\ZT͓[^47" ݾɫ-TUh}@FUS@6Ƿs75"o ;3Ѽ}>mNBbϩ{ӏff ۸۠ϥ,r^Ov&:NvHW?DÏϼGI~rnzdQ=ӪXz{Մ:bŋ5]a68?F|ZϜͧ*WCKX{_KŌyolpۘ.`%gU{Lvw~ -W %OZmǼl<}fOc@~T*G@ Qgݵ/S_fI|.&ýn8˘ sNbd %zNٳmJ8jàpoמfDQce}uטF /q"r[׋3 -3o B׌mzVvoZP-Bx('2ىsFSiCyJnl,Hw_ßu9PM2;>լ}`WGE,8Gnj˃,í(iBz| -'`g'˺PW8ieBVC B.jÉ'nɦmmW(97j'3ɜw9$:4 Z@AHkbbuߊ,~X@ - -Aߧ~kـ{Y6,&m?AbPPXXLopØ.-EXߕGGj&(K}((m%&wb|0ss/- WxVWCI -x_^8R//ǵoۗ?> "LLDXjHG<׉Ó)(IOcthFIIEV1W xx!5{5^4yssLaG>~݌ 2DžXXF~ݪ+88Z. [ёϯ?5A1mmKv u O:هWx,R=Z @VV /ŒMOɘב4ez˞yzmɁ-<Dѡ61c'-hSmBV10g-:QH!))gC;;5B)eAD/yð:;R$4׼eeUVj{˽9@@}Õ>hўIIDRDP[}]PO1Z(|ö88_~ŞhXdt xwZǹżӧ N٬ߋ67>cߑIIAW?Xjj^:>Q[WYm"`aX2"#7ݳp4):8uR3v+gauj( "$piאoC˼%.Yz{vٔbbAV+Jmͬ-D\Za?AV|1Ɋ0--لlkqѝŗ(h9jiTű 9 -e"6sXl"\5rtŖbh{4Bëy(J6ۊ SI٢ń`Yygf$Bg8:[bߡ/.&9} C՝e{;ϭCEF!TT?G0+*)A2as)1ϊzeJo at11?]Î%ϹwG=-aѶPٴbux~76~#$Q`ÿrP88ׁFGuskӨJ$+8)e3))mFppǃ͘'q7'11a՘vTi+ˍee\;2W }..V^3dFhi=϶]2LLX+ 4k݊M ǣϫӱ[5+%4Ւgf^<ONTuLNb[zv%Bd{{3~}Ͻ|ǫ87g_W 6pc_Oü'-ɀ|ݐN*lQwJXYC/vîN Fp+߭hh{@*oj~pVpo`G&ˢZ1!s))-NT ͢CӲoWx - iJGݸ'gz_6ߘn11(exӴ~~ -"̀()}8UDͤXl;lHmǰõ3qVlϟǩ Q6=`RfRy,UAdP _=C<{NGۚm$ cɎNMx?eX{{\4onZ%vPu6nD|crG2f<<ג}&Ŧۈul7W-FDF[o"FyQ;S^;Ӎωۭ(WY]=z>aGF$ Ӧ"Uh5LW8HVɨۨœãs߫1E`748ϣ eQTVNS-`êcT#.#{׾,hgCݫkGvNRDMˑu}Շ)E_ODX)Rl{ E1vHjQŴhC{zզzTdٻ"lKUd&['eɑwï1XY2';j)Kk}wO cMπyņYa(Q5Ռzٹρ_8َݴ0sRf W͞і2߲^ۑ<\,,(xCSSH:oњXn&:?--ױ --=`aˎz۫A d -qoo]^E?xg~~RPExYXcMy2ge9O *7| u׬ِrr6Unmb5w!-'5 :zߗLz ݦQ0FѮy( +!/Q>x|AP.$[8n>f^tѿǞ{w|J7"*Pz `)p6 ICVY80z>Rf U)˥ YxuϷxwۼ τ7=+?ѩ{fM- -}w5!S/' -ٍPeXYgRɽpVM /хo#Nb snd{[3'@jzQU? v]ZR#VB -w@%۶ͽс%A߼~:!rK7 r`"5!;!ɕz&p+;P Ät8[k~לPdD"Xh23ӡpZE՜yq;l%8SrlųoIkroA%X 0(r׏˄KnQ#AAHeQf3Nc!O *?zhSIlwyϒ "ݕ*%m=T;dc,hckj;˓6xfI)f3)<ۧ?Ӈ|QJy cF"Q0 qɔWZNJ ɃˏU  ӟOɩDgBWjAba0'ϦmͶч#gop׳LBY aJw L^OSA n [J&2qo+դ6Ϭ#ձ Lyj(kљѸUL߈LE݅CnktB'`GFU!BBMmmiѕTռٮNOupC- V͚'(REbI j@ B+r&A I,Ŋ'(#l23߀`ͩziB@nˈ׊͝h*kKee!uI=L5Y=__*Yu]NhGqQ wnɬQXGf b=Q,Ӯm;bI'MkՀ__7q(r*rl;a>ó١wݻſ"߾--!6EF@Seb\~~ϡpBC/#+ۉr}7sI"\&Pi_u4E5٨tG0SǬNc~GFS˳`p(/Xx6ɰ_) [j9 ,ǭUe3JU/?`ӗ \ͭٲU0xaq*TvϝRr8˚= ɏJ˝ݗ=٪|ݧS1evՊ z-?S1[цٝK8a{3@v׵1w+ X9 _ݓp-6OlxDfۯgѰ2F,,p3ٗr23ɇ͜׆rש%$gۦ*=ɼF,'ˬqZaÀ߱*1POg{ŏgA+ j4@ai 1='nCD+Pd*?cӫj1^fэh#*۪aM)2YfRݡ|vTIlW՗^ x1#ŰBհTSӻɮ CcS[4F!!s7n3\[`NݼwՉIբx.yшjŅUK|ÂyNh,_5s-J`/=\qc_<.sյhVO=וۆ=;:^],b)1DJ /`^|ٚӥDxUݘj ْO/ Od]"V [^;4 PPdUMwۇ%tt'|Tfg0. O͂*ͪ#NӢ^iL rS=T+ǟE/.Qs\T@9( 11@Jdi@S !!mmLݎjgJJ߶PJRYbX7ͥ%LTffO}y%#My˪))BB)&%9[ccvN:\d >d ,zU+$˂xXW8LLթwlrѳK_ppdːս]>56pٵ@Uӵ**BOUU"3M_64p6J__Zpك>÷)vBBKkٖ߁T>ZAbpӜhSѵ3|iz+nq3$5:.P4lp_7sم^{]gT>0e`lj0L:eD`> ӳCߜ@@ŮzT[m -"x.@Jɺ3ϴ%*)V <(EqW9KJݽB.nɂۂ2;"56݉9A1N7`=iSue_JoϖWu~~\kI]U0 } i`J`?'I? MLN7a|sq88ò6$R -qq3Se߆XǏ.b/Ѿi052'˩zjј:̈́oK8Ð,*LPپ{F*oۏ7a/bVy)Yݙd&[\'oZoՃK0X&ߦs\ǯ5d!/A^2ǽ5tuϿkS>ٶQu #[v -U%,ɶ*0(??:\~ٸ,oo\:ɖt"oR9u]7Qۃ R}Ǯɸ:DŽD6>݋r^H09)Fgq.FfP@<]*b9ds K!>ݱ4<^M/fϻ  NBצח#ݰˌ}٧dt!L8ѦrJbVrDT*$q -W+/G?cN"wϪ/:ѓs 2B]KפpG`>)/Vx&+  0M) ۾=AKdhٕw(,S;ݞ\b05[ BR'&I:vaǕɑWXђ0cj`l.9v(?î2 ш^224ˬ6c9kE`|XY5@hmɗ>c%:5Yð>gͭUDO- -gf?@X& ǭ1 Vb^ m ׺- 41 kV [ӹxP4\Wnh< I x4hӧz>F0!"vK ݄٤=lj Gň<qp]RxR~tdiG&>OeFB>Mgc.:bdQ8-5HKVǩ)q'Xàa3Un@G\P-XW?߃,`zDz*:݌_$`LBR(`LUUAluwDBߞ 1U M/=D1-KK[ 6rQը<9rP-׻["a:^MJnBFSCG{vxթ~W/%pwi)v:l.8ApbO\ s> ɃvI-1jʼneՔo Q_ Y~zSH|HE*b "ߠ%V "R4ǂc&\ӄH}U2Ѯ$ KSŎM͒˲ RՏI$˗fz$a ["פ!˔AiifS~P~q<ŘU=ŲM'ϔK.?͈uqx{ͯםeh xnDf߄V@˧j1@VdńòHǪϽߋg'H͹1]ӝ -!>C -$o?}o -q_=+_cWz'njMR#W^Lͥ!e $Ŋ>p2Z{Y߅B3]]A~DAJE|XdU674n(rI$+R)*:U])%646%1&> -oP#|z՚َcӭ -٦n?ik -Fx.œ?& Gŧ߲nK@'~a-h_'t O$RtT?Bùy kVю`P6DZyQ BlɄo A)#.x ǯ-_3~Q-sU#1ӢiٰNGsA{j#bz3s{z˫*}Eљ݅ˑ{z -ÑBw"0y?i`Ӆ6vJCjk|qL5}nXg(BF\|;7k(a)הqmу_ۦ[%Ӟp EWUJV\f)o]2@g۞$ mϋ8іmD_ xiR\Z>`23͔m[,#f}Nb,ŖFr -ÄǢ i1g|E ero)d=HyNjEuUfAY]J`~W1O;m ݠoߺ-.e݂FIPd9û:߶&&Y*בo[6%т G2fHt@e1\c̀-;swO._D> #l7=qz(7(R)aӦ7Y,%ŮEgKnr -uɮN XI16ELRˢ&Q_u?Y٥MtۛB#k -V60՘D[-2K۱!2)ӘCHj7@״jyJ5gH8:/{~.ǣYSQݒ;ţ[xod="ő@Z;uxۆt^HDZ`ۡ<i~cpϕ{BrWc}@Tnr͞,cdy2jMA۝ź GhӔYcSca5ͳ 92g@^&lɞ0ѕǧZ+Dϳl\ ۫ӗ R'э4PPO-tv61ISم-J,ӓyNKoT2iyo~-\?x{Õ| DVp69qӋ9 _$I9'Yuۙ =L|evrpѨ)˸x55z _&kbh -\dѐ5q\cr#,qNSJTkjy7vy6]1ݹx]+b%'3;7g8:q KkSɔjی&RJí`$$p+IυAeˈrUщ^Ņʹ`AsC+V\z?!Xpύ<@`3+%3ϒ٫p; -I$8|kc}˛O8L`)PCPRRō,J Ӳ.ۓ~Aۄyp_/vAss$!|KKjqŕ{Ol2SC׭bi -="Y߈uuF,`C͵فpx)˰M,*vә@ɖ*VI(ۤ>Hkۚ>@n?^v9fMӈv} fVӰi |aa -ϵROkE 29׿) \IshTofKwUX׆ J*fX>4]#׃&#ٷ{h9Gw V5z%Ak0{ٔ!;Q +wPٖ(ӉQ|kFw76P:7[$`TVv4A >QnՙvC&=zUӮեX Na~wrfbl DGnbsEn}Ih'}2D:hy@@M:= - Y6_v|k@QӖ ^3Nיh!^IFj,IU -RT́Z= -8zۮaI]50Pni )o<40ݓ%z=՞b#Ѣ - јI" -rϼ8ŜoOyKO[BkPAvlbk E[LT{3BՐ~=@j~4ÞŻٵQ]Nsݽ0 /YycuP)im<ϸl}S|e#CZY032Yrbl$o5 G'tӸ~}daϢSGqǞ˜*(SL/3ëRJmwvQW ϜzCP$Tۗ\ -'2dC/E{r`L#Dr dYcːp|Y$%%75W}{cŶ6Ѷgcr7'2MiPV)]xXx"YlM)AYӤfg>TN* =͌c_kh*dž4R|V +ɨL`CÜ'/CLkxˣǁS`: ' lN48n%@gon!CߐVYXɢɣL>eQe3Q%d?j˻c'=IuX8T -Xx=!JvBy77لAǡGPRnk+YU>գ $Gzê7U* $Q( |z*lRvW}%vemtBN͆f˴Z~wg+I;w/}UT4[ -%]{ŋ:&eoW|]++QK4X+a-7$dQūOo'`!ձs(Lͻ\Mq&  -s -,BE)jr^M٘Je{HہUզg2۠z}e$,ջ1gt.k?ɴ \p 4+śT6<_`:dz2~ zyÔ81*T: -o}Dռ5Musp{4#GUm_Sd~m9ͦ>Ǜugu2Nô 1$Nd8x55y7ыz=#zB,dv*JbZ͏XC_Z$*9tQ#^T zX *ݰɻlrF"[C]w9BDͿRJ.ia%B '-mC;X>M5Ͱq<Td,˽ozߥj"DTZ"@UۼvI+ǔ `C͸lO"I{τ^Rt i rn~ -G\ۣېۀu0;IåN۸;8>9P1!s?4doM{(WsS.tGXu_˥tt-t{+v٣{ftbӴ wR!tQ6yeSsA3@`O݉[\ۊŏ͢( xlLj wũ*UB0"jt1ӣˆwg8,1dJh,ϩa'UTYdw=j-ɥ@/9"g -^ߦչ[5^6remN˹ŬVZ4Օ3Q/ 5?:= ,ׄwɎ*bCmf'O -."_P8}ۨeG9Rɏ=} 5NJ`'uxb -HMOCu([>^&AKJRpA9+@!]g~^p:VF7(/՝3*%} V+ӎpPa@:{s0׮aXj{$ZÊ0_y9 RyzfSL.U/v(q*2WߑdF.Y3-}Òcѧ49'BE|HKϐs'g9NA+A+Cψ  )ߊ@mױ)E$FA7ۍmaCϨ.#ǵպsRP[0Pj;B;W@v>s[C=/;ɼMQɝ( ەժY yS,+YU՛LP˞Tr%q'͗ wB[UnE Ǻ>`˝@zJU_h|yãݝjZ2eٓ.96''&%=eG TqAߩ" 1\]k;y*W"vP 5xkJ9Ǎˎac!' 3[r&A96d>1j2NnxөVB()NWIu=h9kZ1npH%!^?eZYW T_`7Wdm iuB'd?NwGudݯi q^ d4#f@rNjAaL˚շ*|0lRE UE[(`>wØߟZwߕ6o=go !mu-_C4KS!^)͠#0͑wB cH _TixP#j+s -!g@ n8F-t8)hkxDs<ÂO?(ZqV*$v?=io3w<!"7W3BդˋهWcgx0߰ݪϣa?LF#˟~7ťxJ:GWϊs|FU@)6۲@Mbh5gOC˳c|V -why5dчשъ)ˠ^E%O`ZJלGTA Xs u׉a(jCB"}U4^Sմ\%] 2apN,=|"&LuOsݡ]Us=|FBXǦp ET&,_Y'5z;# -mjzGjNNNc|+ Pۋ*9 dAN/^ӂD4ٟdɀb_qeͣH:MJXɌNzpV`_% ͇QoǼZzx&O"?lBɷӺ7R@ ]d:rN_,P0#i'..A>jzo>Ouk& gkϟߴ߽k%;ٱrb006ZJxH/Oǚ$\D:R jrJïñ:r.sKcS4"$Vh8}߷8}"Hc<&!qů(ѩ?1Sɿ}h]* {pdAT| -b4y{+h[W&"ӌCm{ Ɂ4 -.f0Czϴ8}Cӕ(fپ/$]S+]^E}ݷqc=kߢDǑD<j;EoߜE&tYӵ:,wI)1T.XMuA+yߚ7X*!Kpec^uBqͅ`ZHB| ѱ'$CݣX7Y~,VP>i,Ѻ~Xpnzݏi# Fs -ǘ٩{\&2èxYYoAŦ/sV`vll(u\kϮ{XYËP/^hiš}+:!PT͕~0ɰ\ŽJJ?CÌQwwǸC qUZ7J]}%ktOGk~e^ɠsgKt N pesv}{HXZQ4q*!WBir"KtKr~zGHZrɺ80CӨǟ#Spq$o/ɧ4m#7KpmX9]QU7p16t2D`Ilj)Q/Ƕ#GaHF"!^Ѫv>TMm@PycǓeD\[V}Ϻ_zA:g&(H 9h3uџ1}g!N4ɩ@S_Eь͐>סt٬&W4LSlnM8%3ɚݥ'\ - ټJP !~,ŷ׬[1EuՈ!6Ť~t:K@dDPӁ:a-fբT,IGAKdρpIÎ%{DŽBo68=-9۷lN'݆ ˨g߯MçnFiXvu&##+y0p{##9kŒ"cY Xǜ՗x!kSbkl}&M~;st][9< E{$%xLt"v"V0Ţ߫:@ooA!0F747L8OA>[߿٧[4mJɱ.8_ɭ8ɅA|5J8Y $Axk1 ۏ48RRKH.3=8iiJsnzٺbka#8i?Q{&YgE;A6j*(RϘqUZz{d -;9nA͙ٛכ%yٚ6;Nѹ4-"nj]j5{˩v}1@ Cw? "ZV=V͛"˖B pזg3 -\Q -kB=6 -ێ;r)SɲQ]le^pՒa8Ûr8ߪ>߭~|\m;׊S0:TW"<Q;A1ݙA~kwg2/)E-/D/ۢ5\2c!az"p?՜Q,%`ImÖ%3?U!9˄wR+ӪsÙ pmw /`oqVG=ոV6\k٢\?A)ۅUkGS<_>Ls2˶aN x jVDu$.^#L]!ͮ1Di -Pkr7A]ߒ6نE{1cŌ&-D?l9WNE]ٲsd!=!ӃtF&P5cϿk5}~ۻs.bt^ f5OhZ2{ݕ4u1 @T yO!e)bgL&55SffɓLPBoa3 TǴ~ %7ϏPt8*3Ÿ##۪xCO@s*.t..חj9):*_;\ͩwdF ' E]zZ<RfgZOJjyY24?M9٪ B>Qk -%MM2׼/ z:dyGnt8`͎"ݐA b3m5x>?JTс\HY{j+o@Y(l!YGhѳ 3CgH^||.>qّ'N3^0.DO-p 4דvi^קmuǻݳ,ךg6dn/- 6Z_wnV͜P'˕2\fٝ.EawU#Cig1#k^ӫkx'l/Ro<[hˊ1hjalDI׀Aǀ)iY,77 !-A=KcϯǤWhb mQ;@S +|˭ I@s#']*'O۶ݮELlς H`Q #HhC(l|` [/RY&M]e?˙х65- :$-EŰn$SFz -+F R[boBI~ s<kK3p5 -Oe÷I\K},V vd7]Z{T Xm=7(|Oŗ2;Ŕr'eK?fT5G pRE('rLymհP3ǿHAxÍ@U8SfcwD6ϖ8iR*m|5 ۽}n`he)Hm\YnǾ7l ;˺EHX@=`->c_-|bMc^dx7ѸH*" 4DTs_v=bJXjG7uwm+bbىPQQI5F41٨B7J?ǏpUJv ZHdݫZE1_^Ӏ,cw hoL8tal2ϡwߌawa{Ktv:ݑj(OB1!yV+˅ٗj)} (C!V+z ff%Rӡ: 2fѴoYpћo((I7&*h(*}/rMhѾ|RKH&a ע%:#G xտ> yUZ`D62[t&[˪!ItLF/ӿ^Nq 0Kgza]u-y6o*|SǝlX?A=ioɡ3ET rOI^ [+Pos8;^]L}Q3F[5jpRW׶>ǎՎ,6~>=d+YL"*0 ǹO\W6x;Eu$[ն0~5- ׈׷h/χ8{v'p./tLouїHr^Z,w((f.~xF$ϭX"3Z?#D53i׋{;ۘcLJ>f!V&BG0~ZMٶѓJ~q\M+ Nj$pDó9GIJzpVYtW(ͤXdÃ`߀I; ՂrF<ZS݀xNrQF3-M,Cy <i!e˯:ɛv&2Vd+ݎ$Q_Ѭ=F<(mN).J{,q.\ -ai4MɬeCǽn,l١606lduˇgO׾ɉų:!݇ gqۇD/ɕFhn'^ߵ?kM8Jٻݻ+úOrGEgϱϞiOj0NrUEM+P/Nb\2!\+9eBN՟N ՠͶɟt4C>MO͝:y݁6!Q×UI[łŚ; Oc}eɯ:QӇ# &0 B)%i݈w~%˷ݱW{\hKbF0h}Xd*!.ѿ2Ň'`au^XQ.(Y0uj>}Te׹fװ'I8ßG53DsqMɋf"ט("˼[S1@J&Cצ%h}<iW'i=WC\97*GRhz3tr4 ű=ӟ:o)LYو pUei~ݵb;5Ydh,mnPh , F%2 ɪÀ -AUnɂ5]]IYX,SRu\Ֆ,gcgQ#}bm$GT9ia(ϑm;rנݔ_ErÈJ[ϪѲ?|z˃խQ];Eߍ%B_}iìE|ͱɐ_gOs1H+ǖG}7H8t`<1VF9`fDv.;;b%SH@l(zg#-U2des [;?o ɽ%6&-[+L=qXt')ϧbӒxKqv"xվwz8T;[KM׳f1":[ fnzsR\~xhI9G_F ׍] -^Ǭ JvOӚ_r? fكǙB$!Ft\LG;-#xuONןѭ6rLZsѰ^|l)۹ŹDc˾0QŴglpÐ qۧ^A(P˓ -1B>a3\ZeO/o(H -FU[GI!o0%7e$'43cP/YͧxY hFzقߧ^aQ=/eӊ m 2, wác`G>chnŝG*<v7D;߬d'w7=m](#"1_ -3')|"7 u2|K#:E,&8/ I vA!Ϯ'/SS3ͅ !{% !0{? Mi- [5Vb<'&f !%Y, 9! ѝ7Z -"U;{ K?a" -4 -G2!^ # UfJ$=ۀ$ U?w y". -C ;#i"$%=/C/:#)1=VADtD! -*4.sJ#! .Ӱ!!tKSݱ6t"DF{Cə"$ŏÃ* @=!!{M " >WӖ!""( -E;D"#3q*"! - 8L) "{w ~ 6qFz͋p+95 E*/:>!Ӥ['Q[0K$۟w&&Jϑ8<5_=?>Y12 #?K_!PD'O%%YŚ8h 0 5WWSH;?7;|`dzK@VJ":/ "T  y 0  -(@ v## 0h& 9"! 7k; )/( LG$" xN !$O! "c u 'G/ o "j  V  2;B +V!2B!!vvɆ )FQA$.R @# -x|+6P!h)c;?V: - ˡO"4{;(@=(6-۵B|E G* CL( ',i .%o5_wϔ8541S8%\.$a+-K' +`"1+k-"1M!$C18I 2 ?! n 3C $12(:`*'',9F Mv9.I-h! 6F($)$'+-24%'12'",0+<8 ɲ D|+  )ð2z+AY,6(JV$8Q4"F K%*#\(OC#-L!<L !K"(r!8+F";"WGBg (]U. ,+Z/J -?2c #BB$$ \F/C8|Q (y"lZ "RSsC.#sg&$#LW5( Z7RFp!. %ӓ o͇L'$ + -#HHɍ -5*T  #Ņ @PYM*D*M -.~>E!BdQ$#"їS #3 - +ѐ5"[-]0!! "#žv5 SA7 !%!?ICBQ)0ۉL'!D=*" #< V,(5 Z?/%! +~0O =u ϯ3nz4# -_dO.  r  C(ѕ&'(=^&'&!+# J5GM%(k D!n(7ayE EOCS!VAPpO}!#"L -#9C|+DL"~٘& #r2,-Kk #ŋ:1)-y#. "%Q|)g -* "I{<$f%` cVDD" C;Yx!)tA. 9B7^ -=%H-C9p_- 3'"@DDK۱ -)NA˲+'x'/r(%(b$>7+(- :/&]!9&7)#"QC%1"I #&5uEDK.'0*5oI7ݍ" C+E C)1ň'  B5=>_.E-='=d(O"G  i y =U=8yB HxG/X8?759W-"W{m21. %zr "= ˸KF%0\Un:}1 -M.>ǔǾ:*фKd!o"(Rt' J)% %L*הW2B;7SB &Z( , -Y-4o5+J *t#  ( "",  y!D"z5x4*CtM>GhG=qזI '"j~5=71b.O;R.}h%/n 2 %6%;=q 9Qr52q8O$w7--a +t;w8s5E$/)]i~($ߔRDn!$VbH8՚PKLJszGurBّa 3c2\Lrf#!ӆ l@TW߽Yt (NNG A1kn1R`<'߰ѡ}0(qJ](ӛ@!˩~TD.1+H)5 .Ǣ#2;H"/;;8>[&K[zU!>%Ӏ g۔?M9")G -5%Y90{$70^3-i.n$"gVb&'a5-6C01;w A:FF+$ALFߢG,k%g(/)m': q;)_'R@ ۅb,R&$*Kkk%;K)stA=g2mmDjE;T!(/ u\ Q%L(+]*4EFK <)DSJ N;'ϛC˧)d,.""U!0= ?Q~0>y*p -~)AHj'ôOvai Rtcr0c85ׇװ5W9ߓB6۲c6?ߛ :Ǚ\w5zJcZF\۽v.|\͙U*sә9}O?7ӹ P+=T( >'&')_B CTh d HM$a '/Æ ŀxչ0cѤ)v"v2Z#M U GGUa# -#b|i_=!ϕ"&)J '%JţͰjǑ;ӎ!7+sEjx; pn}:b G+1b!E|էgOD'ϱ)>,# ɰE##o*@(2 $ - $!1)'E'A\$  #!C  -'@2.')O+/."_r. ^/G/r$Q).<?BYr&22  W_651'Z+1*qx&,I-?11  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?E/ / -#!)4/ D/ <" " ( $U1C) CV- 9h x@  -F?L Q 3!|2G]I*K 7=EQ;!3&Ś AL(3F!>F?J, %ˮ<qHOUvK'45d{)IYCu2vxC' ' )+ELJ&ɪXSi-no?6ǁ)A##"O(#"1A&\'_!= =g9 &8!*MA)b!4}9!0}AL"א;iם>)ɗpHP E&vCxCoTE=E_tǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2EB'($$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ(' -D*"$B"@& ("&E$+$+" D ?#-!>**"? Y5( A7o#*U)+DٰAY/M/7 q! P+*?' r $'2^ -'a(U+7"/ AD 0(]1) #F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2&(@EGW?K4r`nz.Ӫ5X95(WZ K "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO mN}`WGE,8nj˃í(iBz -'`g' -Pb 80'B#6Ez'nɦ!/71'w-0$ +u+Z#k;łm?!"P5?L ;?-?!C#& -"}9Eb'='|;s9" !(x= -E oD ۗ>KDDG j< -׉OHc'C")!W x#!5{1#^s7&7/G>~݌~ݪ+S8".ёϯ?yAK"-v 7u=:8W!=Z@ K?/ŒG ezSm IɁ-<A Dѡ,'m Og :E?H!#5gAC59BeADð:;$׼e#UA{I9#3}>V7hўD7"D] O9E1#|ö83'ŞhXd w=Lє ߋ6c?A1 ?D;X"eXy"G5p4;":8uv'au( "$i  o7C YzY 7vDٔVCJmͬC-DZ?|÷ɊOل;{ S -X"us"OXl -"\5r!bBy"( 1.6@IYńYyL7$B?g8!9M"} C?e{A;ϭC!0)/Aߪ s)1e/JA %w"G =-y7aѶP%bu"C~)!Q`ÿKrP81HEFE.J$5))CFpA'aT!"i; 52 7}1/3dF=+/϶]LE + A"k )݊M [4Ւ -;aG4$ "2Q%h~W8*Mɨ178ϣ QN`êcT{׾ݫkGNRˑu}_EHC${Bzզ!zٻ&['e '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M߲^05<8?C4S1( -:#1 -I!z1'q+~IZPE2&(2e2s   uِr/6! :Yz#LKQ0yL -!Ş/AP.$'#^ " "P*ѯ "C <)| Ex uF! - -w"'# -P(X+R p+!,;<[&"v$#7"% 9K~2}# -:G="C#-u "}*) V;Nn s;* ?D m@  -m vсA߼: ."!'pe+; tkPKd#&E;gY8lųXɸr  (rfQA"AeQNc""z%SIl y! T;dc,Ǩh;Okt˓6fIj)H3)ۚdbݻ-+Ő)! -SG" K%# " a1KM)4'^##F/}#(/7;I"\&P>i_45٨.tG0SN~`x6 ,U3J /ͭU0xaqW*T= ɏ"Jݗ=.ݧ!S?1t[цK!v׵!1w X _p#-/Ol D!ۯg9j,3r#_ɇA793r 9#CB*|# b=qZ1U017 *4 ט'+$*?cj1-##>Vq0DL##j"T"$'I<1/#1 ( % G xW#ŰBհ( C[4![s7n3[aNݼwU.yjD/2!H1[ ),3TJ/*#4 -C<7=p;I9## -O-DD& "TM`^|Y -+3 G.1 B 3s (=тt'O͂9* *##NoL r !97T+!EZW/.s\T@9( 1@Jd@ m#߶J-S?"!L%&O.B #T.0FF%)QO1BE:у9"3:  ,MA$*PWK (w -l.+!d,)g5%*"p+(JB 3-3v .-p=6JZ>#vI# )K >JXӜ:3ipz!Zq!,5a.! "lp7'sم{C>0`#9:B #>! CY@ŮzWT\ -U!@ -3% M(EW9˔J' .[fɂۂO2"1GN*"J$W'I4U3  p#(iBJr`?r" -Lalq8%6|$ŕ -@3S߆XǏ' #:VK5Ð1Pپ{#*oF3a8/2yFYݙ)['5{Uog&ˀs\5zd/A25ǕtuI>xu' #[˰v -K%ɶ*?Yٸ,oo4:!#t""ߏ"o& R7 &) R*( ->݋H )F! Q#}x\u.GEA"# y - *8*%B+9: 7PFk+$9 -/ 1Ü>@ !5 ! @04R " #h  -})2! -J('b -M;(,8,'+w -c -ݶ p;)"3V! ->=m](#"1_ -3')|"7 u2|K#:E,&8/ I vA!Ϯ'/SS3ͅ !{% !0{? Mi- [5Vb<'&f !%Y, 9! ѝ7Z -"U;{ K?a" -4 -G2!^ # UfJ$=ۀ$ U?w y". -C ;#i"$%=/C/:#)1=VADtD! -*4.sJ#! .Ӱ!!tKSݱ6t"DF{Cə"$ŏÃ* @=!!{M " >WӖ!""( -E;D"#3q*"! - 8L) "{w ~ 6qFz͋p+95 E*/:>!Ӥ['Q[0K$۟w&&Jϑ8<5_=?>Y12 #?K_!PD'O%%YŚ8h 0 5WWSH;?7;|`dzK@VJ":/ "T  y 0  -(@ v## 0h& 9"! 7k; )/( LG$" xN !$O! "c u 'G/ o "j  V  2;B +V!2B!!vvɆ )FQA$.R @# -x|+6P!h)c;?V: - ˡO"4{;(@=(6-۵B|E G* CL( ',i .%o5_wϔ8541S8%\.$a+-K' +`"1+k-"1M!$C18I 2 ?! n 3C $12(:`*'',9F Mv9.I-h! 6F($)$'+-24%'12'",0+<8 ɲ D|+  )ð2z+AY,6(JV$8Q4"F K%*#\(OC#-L!<L !K"(r!8+F";"WGBg (]U. ,+Z/J -?2c #BB$$ \F/C8|Q (y"lZ "RSsC.#sg&$#LW5( Z7RFp!. %ӓ o͇L'$ + -#HHɍ -5*T  #Ņ @PYM*D*M -.~>E!BdQ$#"їS #3 - +ѐ5"[-]0!! "#žv5 SA7 !%!?ICBQ)0ۉL'!D=*" #< V,(5 Z?/%! +~0O =u ϯ3nz4# -_dO.  r  C(ѕ&'(=^&'&!+# J5GM%(k D!n(7ayE EOCS!VAPpO}!#"L -#9C|+DL"~٘& #r2,-Kk #ŋ:1)-y#. "%Q|)g -* "I{<$f%` cVDD" C;Yx!)tA. 9B7^ -=%H-C9p_- 3'"@DDK۱ -)NA˲+'x'/r(%(b$>7+(- :/&]!9&7)#"QC%1"I #&5uEDK.'0*5oI7ݍ" C+E C)1ň'  B5=>_.E-='=d(O"G  i y =U=8yB HxG/X8?759W-"W{m21. %zr "= ˸KF%0\Un:}1 -M.>ǔǾ:*фKd!o"(Rt' J)% %L*הW2B;7SB &Z( , -Y-4o5+J *t#  ( "",  y!D"z5x4*CtM>GhG=qזI '"j~5=71b.O;R.}h%/n 2 %6%;=q 9Qr52q8O$w7--a +t;w8s5E$/)]i~($ߔRDn!$VbH8՚PKLJszGurBّa 3c2\Lrf#!ӆ l@TW߽Yt (NNG A1kn1R`<'߰ѡ}0(qJ](ӛ@!˩~TD.1+H)5 .Ǣ#2;H"/;;8>[&K[zU!>%Ӏ g۔?M9")G -5%Y90{$70^3-i.n$"gVb&'a5-6C01;w A:FF+$ALFߢG,k%g(/)m': q;)_'R@ ۅb,R&$*Kkk%;K)stA=g2mmDjE;T!(/ u\ Q%L(+]*4EFK <)DSJ N;'ϛC˧)d,.""U!0= ?Q~0>y*p -~)AHj'ôOvai Rtcr0c85ׇװ5W9ߓB6۲c6?ߛ :Ǚ\w5zJcZF\۽v.|\͙U*sә9}O?7ӹ P+=T( >'&')_B CTh d HM$a '/Æ ŀxչ0cѤ)v"v2Z#M U GGUa# -#b|i_=!ϕ"&)J '%JţͰjǑ;ӎ!7+sEjx; pn}:b G+1b!E|էgOD'ϱ)>,# ɰE##o*@(2 $ - $!1)'E'A\$  #!C  -'@2.')O+/."_r. ^/G/r$Q).<?BYr&22  W_651'Z+1*qx&,I-?11  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?E/ / -#!)4/ D/ <" " ( $U1C) CV- 9h x@  -F?L Q 3!|2G]I*K 7=EQ;!3&Ś AL(3F!>F?J, %ˮ<qHOUvK'45d{)IYCu2vxC' ' )+ELJ&ɪXSi-no?6ǁ)A##"O(#"1A&\'_!= =g9 &8!*MA)b!4}9!0}AL"א;iם>)ɗpHP E&vCxCoTE=E_tǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2EB'($$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ(' -D*"$B"@& ("&E$+$+" D ?#-!>**"? Y5( A7o#*U)+DٰAY/M/7 q! P+*?' r $'2^ -'a(U+7"/ AD 0(]1) #F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2&(@EGW?K4r`nz.Ӫ5X95(WZ K "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO mN}`WGE,8nj˃í(iBz -'`g' -Pb 80'B#6Ez'nɦ!/71'w-0$ +u+Z#k;łm?!"P5?L ;?-?!C#& -"}9Eb'='|;s9" !(x= -E oD ۗ>KDDG j< -׉OHc'C")!W x#!5{1#^s7&7/G>~݌~ݪ+S8".ёϯ?yAK"-v 7u=:8W!=Z@ K?/ŒG ezSm IɁ-<A Dѡ,'m Og :E?H!#5gAC59BeADð:;$׼e#UA{I9#3}>V7hўD7"D] O9E1#|ö83'ŞhXd w=Lє ߋ6c?A1 ?D;X"eXy"G5p4;":8uv'au( "$i  o7C YzY 7vDٔVCJmͬC-DZ?|÷ɊOل;{ S -X"us"OXl -"\5r!bBy"( 1.6@IYńYyL7$B?g8!9M"} C?e{A;ϭC!0)/Aߪ s)1e/JA %w"G =-y7aѶP%bu"C~)!Q`ÿKrP81HEFE.J$5))CFpA'aT!"i; 52 7}1/3dF=+/϶]LE + A"k )݊M [4Ւ -;aG4$ "2Q%h~W8*Mɨ178ϣ QN`êcT{׾ݫkGNRˑu}_EHC${Bzզ!zٻ&['e '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M߲^05<8?C4S1( -:#1 -I!z1'q+~IZPE2&(2e2s   uِr/6! :Yz#LKQ0yL -!Ş/AP.$'#^ " "P*ѯ "C <)| Ex uF! - -w"'# -P(X+R p+!,;<[&"v$#7"% 9K~2}# -:G="C#-u "}*) V;Nn s;* ?D m@  -m vсA߼: ."!'pe+; tkPKd#&E;gY8lųXɸr  (rfQA"AeQNc""z%SIl y! T;dc,Ǩh;Okt˓6fIj)H3)ۚdbݻ-+Ő)! -SG" K%# " a1KM)4'^##F/}#(/7;I"\&P>i_45٨.tG0SN~`x6 ,U3J /ͭU0xaqW*T= ɏ"Jݗ=.ݧ!S?1t[цK!v׵!1w X _p#-/Ol D!ۯg9j,3r#_ɇA793r 9#CB*|# b=qZ1U017 *4 ט'+$*?cj1-##>Vq0DL##j"T"$'I<1/#1 ( % G xW#ŰBհ( C[4![s7n3[aNݼwU.yjD/2!H1[ ),3TJ/*#4 -C<7=p;I9## -O-DD& "TM`^|Y -+3 G.1 B 3s (=тt'O͂9* *##NoL r !97T+!EZW/.s\T@9( 1@Jd@ m#߶J-S?"!L%&O.B #T.0FF%)QO1BE:у9"3:  ,MA$*PWK (w -l.+!d,)g5%*"p+(JB 3-3v .-p=6JZ>#vI# )K >JXӜ:3ipz!Zq!,5a.! "lp7'sم{C>0`#9:B #>! CY@ŮzWT\ -U!@ -3% M(EW9˔J' .[fɂۂO2"1GN*"J$W'I4U3  p#(iBJr`?r" -Lalq8%6|$ŕ -@3S߆XǏ' #:VK5Ð1Pپ{#*oF3a8/2yFYݙ)['5{Uog&ˀs\5zd/A25ǕtuI>xu' #[˰v -K%ɶ*?Yٸ,oo4:!#t""ߏ"o& R7 &) R*( ->݋H )F! Q#}x\u.GEA"# y - *8*%B+9: 7PFk+$9 -/ 1Ü>@ !5 ! @04R " #h  -})2! -J('b -M;(,8,'+w -c -ݶ p;)"3V! ->=m](#"1_ -3')|"7 u2|K#:E,&8/ I vA!Ϯ'/SS3ͅ !{% !0{? Mi- [5Vb<'&f !%Y, 9! ѝ7Z -"U;{ K?a" -4 -G2!^ # UfJ$=ۀ$ U?w y". -C ;#i"$%=/C/:#)1=VADtD! -*4.sJ#! .Ӱ!!tKSݱ6t"DF{Cə"$ŏÃ* @=!!{M " >WӖ!""( -E;D"#3q*"! - 8L) "{w ~ 6qFz͋p+95 E*/:>!Ӥ['Q[0K$۟w&&Jϑ8<5_=?>Y12 #?K_!PD'O%%YŚ8h 0 5WWSH;?7;|`dzK@VJ":/ "T  y 0  -(@ v## 0h& 9"! 7k; )/( LG$" xN !$O! "c u 'G/ o "j  V  2;B +V!2B!!vvɆ )FQA$.R @# -x|+6P!h)c;?V: - ˡO"4{;(@=(6-۵B|E G* CL( ',i .%o5_wϔ8541S8%\.$a+-K' +`"1+k-"1M!$C18I 2 ?! n 3C $12(:`*'',9F Mv9.I-h! 6F($)$'+-24%'12'",0+<8 ɲ D|+  )ð2z+AY,6(JV$8Q4"F K%*#\(OC#-L!<L !K"(r!8+F";"WGBg (]U. ,+Z/J -?2c #BB$$ \F/C8|Q (y"lZ "RSsC.#sg&$#LW5( Z7RFp!. %ӓ o͇L'$ + -#HHɍ -5*T  #Ņ @PYM*D*M -.~>E!BdQ$#"їS #3 - +ѐ5"[-]0!! "#žv5 SA7 !%!?ICBQ)0ۉL'!D=*" #< V,(5 Z?/%! +~0O =u ϯ3nz4# -_dO.  r  C(ѕ&'(=^&'&!+# J5GM%(k D!n(7ayE EOCS!VAPpO}!#"L -#9C|+DL"~٘& #r2,-Kk #ŋ:1)-y#. "%Q|)g -* "I{<$f%` cVDD" C;Yx!)tA. 9B7^ -=%H-C9p_- 3'"@DDK۱ -)NA˲+'x'/r(%(b$>7+(- :/&]!9&7)#"QC%1"I #&5uEDK.'0*5oI7ݍ" C+E C)1ň'  B5=>_.E-='=d(O"G  i y =U=8yB HxG/X8?759W-"W{m21. %zr "= ˸KF%0\Un:}1 -M.>ǔǾ:*фKd!o"(Rt' J)% %L*הW2B;7SB &Z( , -Y-4o5+J *t#  ( "",  y!D"z5x4*CtM>GhG=qזI '"j~5=71b.O;R.}h%/n 2 %6%;=q 9Qr52q8O$w7--a +t;w8s5E$/)]i~($ߔRDn!$VbH8՚PKLJszGurBّa 3c2\Lrf#!ӆ l@TW߽Yt (NNG A1kn1R`<'߰ѡ}0(qJ](ӛ@!˩~TD.1+H)5 .Ǣ#2;H"/;;8>[&K[zU!>%Ӏ g۔?M9")G -5%Y90{$70^3-i.n$"gVb&'a5-6C01;w A:FF+$ALFߢG,k%g(/)m': q;)_'R@ ۅb,R&$*Kkk%;K)stA=g2mmDjE;T!(/ u\ Q%L(+]*4EFK <)DSJ N;'ϛC˧)d,.""U!0= ?Q~0>y*p -~)AHj'ôOvai Rtcr0c85ׇװ5W9ߓB6۲c6?ߛ :Ǚ\w5zJcZF\۽v.|\͙U*sә9}O?7ӹ P+=T( >'&')_B CTh d HM$a '/Æ ŀxչ0cѤ)v"v2Z#M U GGUa# -#b|i_=!ϕ"&)J '%JţͰjǑ;ӎ!7+sEjx; pn}:b G+1b!E|էgOD'ϱ)>,# ɰE##o*@(2 $ - $!1)'E'A\$  #!C  -'@2.')O+/."_r. ^/G/r$Q).<?BYr&22  W_651'Z+1*qx&,I-?11  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?E/ / -#!)4/ D/ <" " ( $U1C) CV- 9h x@  -F?L Q 3!|2G]I*K 7=EQ;!3&Ś AL(3F!>F?J, %ˮ<qHOUvK'45d{)IYCu2vxC' ' )+ELJ&ɪXSi-no?6ǁ)A##"O(#"1A&\'_!= =g9 &8!*MA)b!4}9!0}AL"א;iם>)ɗpHP E&vCxCoTE=E_tǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2EB'($$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ(' -D*"$B"@& ("&E$+$+" D ?#-!>**"? Y5( A7o#*U)+DٰAY/M/7 q! P+*?' r $'2^ -'a(U+7"/ AD 0(]1) #F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2&(@EGW?K4r`nz.Ӫ5X95(WZ K "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO mN}`WGE,8nj˃í(iBz -'`g' -Pb 80'B#6Ez'nɦ!/71'w-0$ +u+Z#k;łm?!"P5?L ;?-?!C#& -"}9Eb'='|;s9" !(x= -E oD ۗ>KDDG j< -׉OHc'C")!W x#!5{1#^s7&7/G>~݌~ݪ+S8".ёϯ?yAK"-v 7u=:8W!=Z@ K?/ŒG ezSm IɁ-<A Dѡ,'m Og :E?H!#5gAC59BeADð:;$׼e#UA{I9#3}>V7hўD7"D] O9E1#|ö83'ŞhXd w=Lє ߋ6c?A1 ?D;X"eXy"G5p4;":8uv'au( "$i  o7C YzY 7vDٔVCJmͬC-DZ?|÷ɊOل;{ S -X"us"OXl -"\5r!bBy"( 1.6@IYńYyL7$B?g8!9M"} C?e{A;ϭC!0)/Aߪ s)1e/JA %w"G =-y7aѶP%bu"C~)!Q`ÿKrP81HEFE.J$5))CFpA'aT!"i; 52 7}1/3dF=+/϶]LE + A"k )݊M [4Ւ -;aG4$ "2Q%h~W8*Mɨ178ϣ QN`êcT{׾ݫkGNRˑu}_EHC${Bzզ!zٻ&['e '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M߲^05<8?C4S1( -:#1 -I!z1'q+~IZPE2&(2e2s   uِr/6! :Yz#LKQ0yL -!Ş/AP.$'#^ " "P*ѯ "C <)| Ex uF! - -w"'# -P(X+R p+!,;<[&"v$#7"% 9K~2}# -:G="C#-u "}*) V;Nn s;* ?D m@  -m vсA߼: ."!'pe+; tkPKd#&E;gY8lųXɸr  (rfQA"AeQNc""z%SIl y! T;dc,Ǩh;Okt˓6fIj)H3)ۚdbݻ-+Ő)! -SG" K%# " a1KM)4'^##F/}#(/7;I"\&P>i_45٨.tG0SN~`x6 ,U3J /ͭU0xaqW*T= ɏ"Jݗ=.ݧ!S?1t[цK!v׵!1w X _p#-/Ol D!ۯg9j,3r#_ɇA793r 9#CB*|# b=qZ1U017 *4 ט'+$*?cj1-##>Vq0DL##j"T"$'I<1/#1 ( % G xW#ŰBհ( C[4![s7n3[aNݼwU.yjD/2!H1[ ),3TJ/*#4 -C<7=p;I9## -O-DD& "TM`^|Y -+3 G.1 B 3s (=тt'O͂9* *##NoL r !97T+!EZW/.s\T@9( 1@Jd@ m#߶J-S?"!L%&O.B #T.0FF%)QO1BE:у9"3:  ,MA$*PWK (w -l.+!d,)g5%*"p+(JB 3-3v .-p=6JZ>#vI# )K >JXӜ:3ipz!Zq!,5a.! "lp7'sم{C>0`#9:B #>! CY@ŮzWT\ -U!@ -3% M(EW9˔J' .[fɂۂO2"1GN*"J$W'I4U3  p#(iBJr`?r" -Lalq8%6|$ŕ -@3S߆XǏ' #:VK5Ð1Pپ{#*oF3a8/2yFYݙ)['5{Uog&ˀs\5zd/A25ǕtuI>xu' #[˰v -K%ɶ*?Yٸ,oo4:!#t""ߏ"o& R7 &) R*( ->݋H )F! Q#}x\u.GEA"# y - *8*%B+9: 7PFk+$9 -/ 1Ü>@ !5 ! @04R " #h  -})2! -J('b -M;(,8,'+w -c -ݶ p;)"3V! ->=m](#"1_ -3')|"7 u2|K#:E,&8/ I vA!Ϯ'/SS3ͅ !{% !0{? Mi- [5Vb<'&f !%Y, 9! ѝ7Z -"U;{ K?a" -4 -G2!^ # UfJ$=ۀ$ U?w y". -C ;#i"$%=/C/:#)1=VADtD! -*4.sJ#! .Ӱ!!tKSݱ6t"DF{Cə"$ŏÃ* @=!!{M " >WӖ!""( -E;D"#3q*"! - 8L) "{w ~ 6qFz͋p+95 E*/:>!Ӥ['Q[0K$۟w&&Jϑ8<5_=?>Y12 #?K_!PD'O%%YŚ8h 0 5WWSH;?7;|`dzK@VJ":/ "T  y 0  -(@ v## 0h& 9"! 7k; )/( LG$" xN !$O! "c u 'G/ o "j  V  2;B +V!2B!!vvɆ )FQA$.R @# -x|+6P!h)c;?V: - ˡO"4{;(@=(6-۵B|E G* CL( ',i .%o5_wϔ8541S8%\.$a+-K' +`"1+k-"1M!$C18I 2 ?! n 3C $12(:`*'',9F Mv9.I-h! 6F($)$'+-24%'12'",0+<8 ɲ D|+  )ð2z+AY,6(JV$8Q4"F K%*#\(OC#-L!<L !K"(r!8+F";"WGBg (]U. ,+Z/J -?2c #BB$$ \F/C8|Q (y"lZ "RSsC.#sg&$#LW5( Z7RFp!. %ӓ o͇L'$ + -#HHɍ -5*T  #Ņ @PYM*D*M -.~>E!BdQ$#"їS #3 - +ѐ5"[-]0!! "#žv5 SA7 !%!?ICBQ)0ۉL'!D=*" #< V,(5 Z?/%! +~0O =u ϯ3nz4# -_dO.  r  C(ѕ&'(=^&'&!+# J5GM%(k D!n(7ayE EOCS!VAPpO}!#"L -#9C|+DL"~٘& #r2,-Kk #ŋ:1)-y#. "%Q|)g -* "I{<$f%` cVDD" C;Yx!)tA. 9B7^ -=%H-C9p_- 3'"@DDK۱ -)NA˲+'x'/r(%(b$>7+(- :/&]!9&7)#"QC%1"I #&5uEDK.'0*5oI7ݍ" C+E C)1ň'  B5=>_.E-='=d(O"G  i y =U=8yB HxG/X8?759W-"W{m21. %zr "= ˸KF%0\Un:}1 -M.>ǔǾ:*фKd!o"(Rt' J)% %L*הW2B;7SB &Z( , -Y-4o5+J *t#  ( "",  y!D"z5x4*CtM>GhG=qזI '"j~5=71b.;R.}h%/n 2 %6%;=q 9Qr52q8O$w7--a +t;w8s5E$/)]i~($ߔRDn!$VbH8՚PKLJszGurBّa 3c2\Lrf#!ӆ l@TW߽Yt (NNG A1kn1R`<'߰ѡ}0(qJ](ӛ@!˩~TD.1+H)5 .Ǣ#2;H"/;;8>[&K[zU!>%Ӏ g۔?M9")G -5%Y90{$70^3-i.n$"gVb&'a5-6C01;w A:FF+$ALFߢG,k%g(/)m': q;)_'R@ ۅb,R&$*Kkk%;K)stA=g2mmDjE;T!(/ u\ Q%L(+]*4EFK <)DSJ N;'ϛC˧)d,.""U!0= ?Q~0>y*p -~)AHj'ôOvai Rtcr0c85ׇװ5W9ߓB6۲c6?ߛ :Ǚ\w5zJcZF\۽v.|\͙U*sә9}O?7ӹ P+=T( >'&')_B CTh d HM$a '/Æ ŀxչ0cѤ)v"v2Z#M U GGUa# -#b|i_=!ϕ"&)J '%JţͰjǑ;ӎ!7+sEjx; pn}:b G+1b!E|էgOD'ϱ)>,# ɰE##o*@(2 $ - $!1)'E'A\$  #!C  -'@2.')O+/."_r. ^/G/r$Q).<?BYr&22  W_651'Z+1*qx&,I-?11  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?E/ / -#!)4/ D/ <" " ( $U1C) CV- 9h x@  -F?L Q 3!|2G]I*K 7=EQ;!3&Ś AL(3F!>F?J, %ˮ<qHOUvK'45d{)IYCu2vxC' ' )+ELJ&ɪXSi-no?6ǁ)A##"O(#"1A&\'_!= =g9 &8!*MA)b!4}9!0}AL"א;iם>)ɗpHP E&vCxCoTE=E_tǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2EB'($$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ(' -D*"$B"@& ("&E$+$+" D ?#-!>**"? Y5( A7o#*U)+DٰAY/M/7 q! P+*?' r $'2^ -'a(U+7"/ AD 0(]1) #F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2&(@EGW?K4r`nz.Ӫ5X95(WZ K "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO mN}`WGE,8nj˃í(iBz -'`g' -Pb 80'B#6Ez'nɦ!/71'w-0$ +u+Z#k;łm?!"P5?L ;?-?!C#& -"}9Eb'='|;s9" !(x= -E oD ۗ>KDDG j< -׉OHc'C")!W x#!5{1#^s7&7/G>~݌~ݪ+S8".ёϯ?yAK"-v 7u=:8W!=Z@ K?/ŒG ezSm IɁ-<A Dѡ,'m Og :E?H!#5gAC59BeADð:;$׼e#UA{I9#3}>V7hўD7"D] O9E1#|ö83'ŞhXd w=Lє ߋ6c?A1 ?D;X"eXy"G5p4;":8uv'au( "$i  o7C YzY 7vDٔVCJmͬC-DZ?|÷ɊOل;{ S -X"us"OXl -"\5r!bBy"( 1.6@IYńYyL7$B?g8!9M"} C?e{A;ϭC!0)/Aߪ s)1e/JA %w"G =-y7aѶP%bu"C~)!Q`ÿKrP81HEFE.$5))CFpA'aT!"i; 52 7}1/3dF=+/϶]LE + A"k )݊M [4Ւ -;aG4$ "2Q%h~W8*Mɨ178ϣ QN`êcT{׾ݫkGNRˑu}_EHC${Bzզ!zٻ&['e '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M߲^05<8?C4S1( -:#1 -I!z1'q+~IZPE2&(2e2s   uِr/6! :Yz#LKQ0yL -!Ş/AP.$'#^ " "P*ѯ "C <)| Ex uF! - -w"'#P(X+R p+!,;<[&"v$#7"% 9K~2}# -:G="C#-u "}*) V;Nn s;* ?D m@  -m vсA߼: ."!'pe+; tkPKd#&E;gY8lųXɸr  (rfQA"AeQNc""z%SIl y! T;dc,Ǩh;Okt˓6fIj)H3)ۚdbݻ-+Ő)! -SG" K%# " a1KM)4'^##F/}#(/7;I"\&P>i_45٨.tG0SN~`x6 ,U3J /ͭU0xaqW*T= ɏ"Jݗ=.ݧ!S?1t[цK!v׵!1w X _p#-/Ol D!ۯg9j,3r#_ɇA793r 9#CB*|# b=qZ1U017 *4 ט'+$*?cj1-##>Vq0DL##j"T"$'I<1/#1 ( % G xW#ŰBհ( C[4![s7n3[aNݼwU.yjD/2!H1[ ),3TJ/*#4 -C<7=p;I9## -O-DD& "TM`^|Y -+3 G.1 B 3s (=тt'O͂9* *##NoL r !97T+!EZW/.s\T@9( 1@Jd@ m#߶J-S?"!L%&O.B #T.0FF%)QO1BE:у9"3:  ,MA$*PWK (w -l.+!d,)g5%*"p+(JB 3-3v .-p=6JZ>#vI# )K >JXӜ:3ipz!Zq!,5a.! "lp7'sم{C>0`#9:B #>! CY@ŮzWT\ -U!@ -3% M(EW9˔J' .[fɂۂO2"1GN*"J$W'I4U3  p#(iBJr`?r" -Lalq8%6|$ŕ -@3S߆XǏ' #:VK5Ð1Pپ{#*oF3a8/2yFYݙ)['5{Uog&ˀs\5zd/A25ǕtuI>xu' #[˰v -K%ɶ*?Yٸ,oo4:!#t""ߏ"o& R7 &) R*( ->݋H )F! Q#}x\u.GEA"# y - *8*%B+9: 7PFk+$9 -/ 1Ü>@ !5 ! @04R " #h  -})2! -J('b -M;(,8,'+w -c -ݶ p;)"3V! -N   -/W% -M-?5 Jt*?H: G8 53B== K$m=3<c!I .&- coD GS GA 6 BX IMkF -> -5%Y90{$70^3-i.n$"glj%Vb&'a56C01;w A:FF+$ALFߢG,k%g(/)m': q;)_'R@ ۅb,R&$Z *Kkk%;K)stA=mDjE;T!(/ u\ Q%L(+]*4EFK <)DJ N(Ӱ;'C˧)d~,.""E!0= ?Q~0>y*p -~)AHj'Ovai Rtc2`r0c285ׇװ5W9ߓB6۲c6?ߛ :Ǚ\w5zJcZF\۽v. -|\͙UÒ[*sә9}O?7ӹ P+=T( >'&')_B CTh d HM$a '1^/Æ ŀxչ0cѤ)vEi"v2Z#MK3""! U GGUa# -#b|i_=!& x*ϕɾ"&)J 'r1>%JţͰjǑ;ӎ!7+sEjx; pn}:b G+1b!!E|էgOD'ϱ[)>,# ɰE##o*@(2 $ - $!1)'E'A\$  #!C  -'p -@2.')O+/."_r. ^/G/$Q).<?BYr&22  W_651'Z+1*qx&[)",I-?11  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?E/ / -#!)4/ D/ <" " ( $U1C) CV- 9h x@FCH  -F?L ͔I;XQ 3!|2G]I*K 7=EQ;!3&Ś AL(3F!>F?J, %ˮ<qHOUvK'45 'Gd{)IYCu2vxC' ' )+ELJ&ɪXSi-no?6ǁ)A##"O(#"1A&\'_!= =g9 &8!=*MA)b!4}9!0}AL"h*א;iם>)ɗpHP E&vCxCoTE=E_tǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2EB'($$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ͊(' -D*"$B"@& ("&E$+$+" D ?#-!>**"? Y5( A7o#*U)+DٰAY/M/7 q! P+*?' r $'2^ -'a(U+7"/ AD 0(]1) #F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2&(@EGW?K4r`nz.Ӫ5X95(WZ K "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO mN}`GE,8nj˃í(iBz -'`g' -Pb 80'B#6ˆEz'nɦ!/71'w-0$ +u+Zb+~-X@#k;Y"ł"m?!"P5?L ;?-?!C#& -"}9E#Kb'='|;s9"  !(x=C E -E xJ#oD ۗ>KDDG j< -׉OHcE; )!W x#!5{1#^s7&7/G>~݌~ݪ+S8".[ёϯ?yAK"-v 7u=:8W!=Z@ K?/ŒG ezSm IɁ-<A Dѡ,'m Og :E?H!#5gAC59BeADð:;$׼e#UA{I9#3}>V7hўD7"D] O9E1#|ö83'~!ŞhXd w=Lє N٬5"ߋ6c?A1 ?D;X^ 7["eXy"G5p4;":8uvg'au( "$i  o7C YzY 7vDٔVCJmͬC-DZ?|÷ɊOل;{ S -X"us"OXl -"\5r!bBy"( 1.6@IYńYyL7$B?g8!"79M"} C?e{A;ϭC!0)/Aߪ s)1e/JA %w"G =-y7aѶP%bu"C6?~)!Q`ÿKrP81HEFE.$5))CFpA'aT!"i; 52 7}1/3dF=+/϶]LE + A"k )݊M [4Ւ -;aG4$ "2Q%h~W8*Mɨ߫1748ϣ QTN`êcT{׾ݫGNRˑu}_XRE1vHC${Bzզ!zٻ&['ew '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M߲^05<8?C4S1( &2-:#1 -I!z1'J,q+o9](~IZPE2&(2e2s   uِr/65! :Yz#LKzD  Q0yL(} -!Ş/P.$'#>/&^ w" "P*ѯ "C <)| Ex uFxJ! -  -w"P(X+R p+!,;<"[&"v$#7"% 9K~2H}# -:G="C#-u "}*) V;Nnb5 s '$;* ?D m@ Ba -m vA߼:7 ."!'z pe+; tkPKd#&Ey";gY#8lųXɸr  (rfQA"AeQNc""z%SIl y! T;dc,Ǩh;Okt˓6fIj)H3)ۚ́?dbݻ-+Ő)! -SG"$0 K%# " a1KM)4'^##F/}#(7;\&i5tG0SN~`x6 90 ,U3J /ͭU0xaqW*T ݗ=.v ?1t[цK!v׵!1w X9g/l D!ۯg9j,3#_ɇA793r 9#CB*|# b=qZ1U017 *j4 ט'+$*?cj1-##>Vq0DL##j"T"$'I<1/#1 ( % G xW#ŰBհ( C[4![s7n3[aNݼwxU.yD/2!H1[ ),3T5J/*#4 -C<7=p;I9##,0 -O-DD& "TM|Y -+3 G.1 B 3s (=тt'|TO͂9* *##NoL r !97=CT+!EZW/.s\T@9( 11@Jdi@ m#Lݎ߶PJR-S?"!L%&O.B #T.0FF%)QO1BE:у9"3: ,MA$*PWK (w -l.d,)g"p+(JB 3-3v .-p=6JZ>#vI#B )K >JXӜ:3ipz!Zq!,5a.! "lp7'sم^{C>0`#9:B #>! CY@ŮzWT\ -U!@ -3% M(EW9˔J' .[fɂۂO2"51GN7*"J$W'\KI4U3  p#(iBJr`?r" - Lalq8%6|$ŕ -@ 3S߆XǏ5' #:VK5Ð1Pپ{#*oF3a8/2yFݙ)d#['5{UogZDo&ˀ5zA25ǕuIS>xQu'#˰v -K%ɶ*?Yٸ,oo4:!#t""ߏ"o& R7 &) R*( ->݋H )F! Q#}x\u.GEA"#5!& y - *8*%B+9: 7PFk+$9 -/ 1Ü>@ !5 ! @04R " #h  -})2! -J('b -M;(,8,'+w -c -ݶ p;G* )"3V! ->H!D =m](#"1_ -3')7 u2|K6)%F2;^/0 ."b<p!7"ID:$!$##DE !A -M+(5 1br A/< # -,H1 .W# *er') -  Y#-6.  -1d(#*wo(D!(<>0)\.B7  $/1HAC8 -=2'0o(2/dQG;lը"%!8% 2cu"9wYFn7-vFx\2uT-? Þ~Kߩ:K<{ iN-8/O -*: w 2FV`L)'N<& -!# |G0` c(-'+  j!$ %3a A - w*/"$"O /! }"#)- P(? (0A-*K"$"7'!#>IC;U)! -&c3&/`&#I"<ׅ , A;1S 15@U(9!0*G#`0) ל D-w)_/; S'7+?!$7*W "-(e !KY*|# G `((#! l ;! 5" (1 1! A*@#+A'I"9&P %~9!(I%-! ~w+$5"V 'v A>qO;I U 8! -Cj $Q#P !E? 7ɓ -fL? -+QK!19? X$)$X,$ )X#E!="9  <[N&/ ]C?9%#:M$)5%#!-(%i-N5;'5')%3071/A"+ "*;_-]b15ɛbB{YuOσ4VI[[Ӑ7w|f!˵PŇY "1Ӭ #L'[XQ:E,&8/  I vA!Ϯ'/SSz$3<ͅm !{% !0{? iC- [5Vb<'&f !%Y, 9! ѝ7Z -"U;{ K?8a" -4 -G2!^ # UfJ$=S bۀ$ U?w y". -C ;#i"q>$%=/C/:#)1=VADtD! -*4]/(sJI##!  .+Ӱ!!tKu.1Sݱ6t" "%?DFF!){Cə"$ŏÃ* @=!!{M >WӖ!""( -E;D"#$&q*"! - 8 "#}{w ~ 6qFzp+95 E*/\!#:>!Ӥ['QV[0S,?)=.mK$۟w&&Jϑ8<5_=?>Y12 #?K_!PD'O%%YŚ8h WSH(.V1X,;?X=;? ?1[7&/ 'p_| ;%9'!,u*mxCa @* ٔ$-E ;AJk 0 1X7;{4]]Y"y#1_@>;dWzK@VLJ:/ "T  y 0  -(@ # 0h& 9"! 7Gk; )/( LG$" ) oxN -  "c u  o "j  V  2;BH! B+V!6H$  x2B!!vvɆ ) ?   F!Q!RA$.R :@! @# -x#!"|+6P!h)'G/Fc;?V: - ˡOsb4@=(6-x۵B|E G^$6S* CL( ',i .%o5_(cϔD& 1*J/ !GO #=@?#`*I+B8541S8%/ˈ,\.$a+-K' +,.9+k-"1M!$C1 A5 2 ?! W F3 n 3C $12(:`9"w*'<5 f7!" (12h+D%9 Mv-h! 6F(E*L75,0$)$'+-"eE24% '12'",0R)46>+<8 ɲ D  s*)ð2z+.>*Y,6(JV$8Q4%*#\(OC$L#-L!<L !K"("D* -.~>E!BdQ$#"S #Cq3q - +ѐ5"[-]0!! "žv5 ݄SA7 !%!?ICBQ)0T7ۉXL'!D=*" J#!ߗ< V,(5 Z?/%" 'i"& +~0O =u ϯ3nz4# -_dO.  r  C&'(=^&+# J5GM%(n(7ayE EO!VAP1O}!!WL -#9C|+DL"~٘&#r2,-Kk #ŋ:1)-y#. "%Q| "{<$f%`ϗ'۬ Aݨ&c&VDD" C;YvW^q R"Ix!)$7ctA.uAr#C 9.-vDB7^ -UA1rEH-C93'"@DDK۱ -)3a˲+'L7x'/tBMr(%(b$>7+7!E(- :/&۷7 &7)#" -CQC%1"I #QG8%A&5.7uEz#&DK.'0#E -F*5!9ueCE$7oI7ݍ" C+E C  8E=.E-='=x(/ՏG  i y =; U=8yB HxGX8?R79n-{ÅN.2. %zr "= ˸ O -6KF%\Un: }FǔǾ110:*;'фKjdu^!o%"(Rt' p;!J)% z%L*!!הW2B;7SB &Z( 0 -Y-4o5J * Ӈ '0t#  ( -ё"",  y!D"z5x4*C!tM>GhG&" N9=qI??v% '"j4~5=71b.OR.}h%/n 2 %6%=[&K['ņɒzU!>%Ӏ g۔?-"1 - -9"M9")G -5%Y90{$70^3-i.n$"glj%&'a5-6C01;w A:FF]QdMA+$ALF])ߢG,k%g( )/)m'c>:&͟ Pq;)_'R@ ۅb,R&$Z  =v*KkkT%;K)stAS=g2mmDjE;T!(/ u\ Q%L(+]*4EFK <)DSJ N(Ӱ;'ϛC˧)ˉd~,."ߴ!P"U_E"QJ= ?Q^q-.~0߅> y*p -~)AHj'CôfOvEqջyPS)ai RH2`Vr0c85ׇװ5jcW9ߓB6۲c6S?ɟp/9 -Ӛ.S\w5zJcZF\۽v.ZA -|\!Ò[9sFɧ&$:9}-/]+Oo'-$b? q͟2ӹ Pݮ=oT(%Ƀ- >L.]'& EՇ')$$_B ;CBCTd H *, M$a '1/VÆ 8ŀRիxչ5-0cѤ)vEi"v;2Z]h#M K%3_"H"!DU GGU)|a#u -#"]b|i_{=!& x*ϕMɾ"&):oJ 'r1>%JţͰjǑ;ӎ!7C+sEjx; pnM}vLe:b;' G+1b!!tE" -`|էgOD'ϱB[)>,# ɰu% -E##o*@(2 $ -1c!i $!1)<'Ei!"!(M#'A\$  #!C  -'p - @2.')O+/."_JF r. ^/ l(!G/r$Q).<c ?BYr&22 #   W_651'Z+1*qx&[)",I-?11h(  q#~\":XTy^Ç#"\1).0cu. <$(:<%$ W"s"?/ -#!)4/ υ)D/ <" " ( $U1C) CY=R>V- 9hhK YrK';!s*9| x@!)9#)FCH  -F?L ͔I;XQ 3!|2G]I*K 7'5# ߣ#OL=EQ;!' ! AL(3F!>F?J,)_8! %ˮ<qHOUvK'45 -\@ 'G{)IYCu2vxC' 'pB" )+EL>J&ɪXSi-no?6ǁ)A##՜- _"O";/(#"1:1xA&\'_!= =gJ ?3)*xW9 &8!#1t 7(=*MA)bM*!4}9!0}AL"h*r&'א;i<) $s.>) \ɗpHP E&vCxCj&*TE=E_ǨOˊT/A5 -C&Ŏ)4MKɯ"O'(N('> +)_$E1.1O$'-& < <"]"2E$&-/\;c] *J -A$)$ !V - - 2C -;"Ѩ͊(' -D*"$B("&2(+!E$#&)*.+$+" ~D ?#-!>**"DF -O S? Y5( A7o G-$#*U H .&)+Dd;ٰAY/M q! P+*17 / ?' r $'2^ -'a(}+7"/ AF!$(]1) #E #(F4* -'b$E+)t M# ,C '#; -)st/( b*{./ӏ7fE ۭ ۠+,x0O/2&(@EGW?K4~!r`CX9zK]:JJ(5(WK "].y!l#p'>1%ۃ( U2"{;L*A  -Mw xO l9"լ}`WGE,8nj˃,í(iBz'g' -Pb ˆEz'nɦ!/71'3w9-0$:b+~-X@#k;Y"ł"m?!"P5?!C#& -"}9E#Kb'='|;-/s9" !(x=C E -E xJ8 M#oD ۗ>KD )DG jOHcE; )!W x#!5{1#^s7&7/G>݌ݪ+S8".-[ёϯ?yA1/v 7u==Z @ K?/ŒMBG ezSm IɁ-<A Dѡ,mB Og H!#5gAC59BeADy#/ð:;$4׼e#=#3}"DPL9[] #|ö83'~!h1Ad w=LZє N٬5"ߋ6cA1 ?D;X^ 7W"eXy"G":8Rvg'a( "$i   Y 7vDٔVCJmͬC-DZ?|÷ɊOل;{S9 -X"us"OXl -"\5r!bh{D94( 1.6@ SIYńYyL7$B?g8!ߡ"79M"} C?e{A;ϭC!? 0)/s)e/Jt;]%w"G =-y7aѶP%bu"6?~)!Q`ÿKrP81HEFE.+))CFpA'aT!"i+ˍ 7}K/F=+/϶]LE + A"k )݊M ӱ[4Ւ -;aG4$ "2Q%h~W8*Mɨ߫1`748ϣ QTV-`êcT#.#{׾,hgCݫkGNRDMˑu}Շ)E_ODX)Rl{ EHjŴC${Bzզ!zTdٻ"lKd&['eɑwו" '$ &;/+#"O( 1yVņ 1Q!s!z 8&!# "َ&#)s -<W.M,)'?C4S1( &2-:#1 -I!`55g~IZ1˟PE2&X1M(2e2s  | uِr/6Umb"5w>"!  :Yz#LK0zD  Q0yL(} -!Ş/AP.$'#>/&^ {#!w" "*{P* `ѯp!B "C z!) < Ex uFxJ#τH! - -'  -?B!ѩ M -#ŕw"'# -X+R p+!,;<"š[&"v$#7"% 9K~2zK EH# -:G="C#-u "}*) V;#K2'Nnb5 s '$;* ?D m@ #.| -m vсA߼~:!r7  `"'pe+ tkPKd#&"!JXEy"qY8lųXɸr A˄K"QA"AeQNc""OJ !*z%SIl ! %=0T;dc,Ǩh;Okj;lt˓6fIj)H3)UWۚdbݻ" -+Ő)! -S+G"$0 K%# " a1K.##$x M)4'/-0#F/}#(/7;I"\&_45٨.tG0SǬN~GFS`p(x6"_) [90 ,U3J /?!ӗ\ͭU0xaqW*Tv&Rr08= ɏ"Jݗ=.ݧ!S#v z-?1t[цK8Xa!v׵!1w X9g _p#-/Ol ۯg9j,3p3r#_ɇA793r 9#CB*|# b=qZa1U017 +& *j4 MC* '*?cӫ1-##>Vq0DL##j"2  (T"$'I<1/#1 ( % #G xW1#ŰBհ(ӻ CS[4F![s7n3[a`Nݼw#IYxU.yшjD/2!H1[ )N,3Ts-J/*#4sZD- -C<7=p;I9##,0 -O-DD& "TM`^|Y -+3 G.1O1 3s ( C"=тt|T͂9* #No^ " r !97=CT+!EZW/.s\T@9( 11@Jdi@S m#LJ߶PJR-S?"!L%&O.B FF%)QO1BE::  -W&&,MA$*PWK (8-JDl.+!d,)g5%*"p+(JB 3-3v .-p=6JZ>#vI#B )K ߁>JXA pYӜ:S3|Uipz!Zq!,5a.! "p7'sم^{C>0`#9:B #>! CY@ŮzWT\ -U!3M% M(Eq1W9˔J' .[fɂۂO2"51GN7*"S J$W'u\KI4U3  p#(iBJr`?r" - L7al|(q8%6|$ŕ -@ q3SeXǏ/2\095' #z 8j:VoK85Ð1*Pپ{#F<*oF3a8/2VyF)Yݙ)d#['5{UogZDoK0'&ˀs\5zd/A25ǕtuIkS>xQu' #[˰v -K%ɶ*?Y:"ٸ,oo4:!# "ߏ"o& 9u7 &)R*( -: -@56>݋H )F! .< -$Q#}0 x\u.GEA"#5!& y 8*%B+9: 7PFt -9 -/ 1>@ !5 ! @04R !&7I " #h  -})2J(' -M;(,8,'+w -c -ݶ:8  GG)"3V! -18l,Hw_ßu"<8/##k9M2;>)}լ`WGE,8G=m](H!D #"1?*"Q_ͯ -3')7 u2|"|KF2#0)\.B7  $/1HAC8 -=2'0o(dQGlɡ!;ը"%!8% 2cu"w9vKY -ׄFny?-7qv\Fx2Tu-ώ fE?hÞ~LrNKߩ:Kc<{ i-8/O -*: w 2&BF`՛VL'N<& -!# |G0`+  j c(-'a A -!$ %3w*/ /! }"$"O P(? (0"#)-  -&cA-*7'!#K"$";U)!>IC3&/`&ׅ #I"<;1S, A_<Q- 1`0) (9!j! A5@U0*G# D-ל w)_/; S'7(1 +?!$7*W\9:(3 "-(e *A* !K FE Y*|# G `((#! DVl ;! 5" X$)@#+A1! A*O;I'I"9&P %~9!(I%-! ~w+$5"V 'v A>q U 8! -Cj  "1 -jVC&$Q#P !E? 7ɓ -fL? -+QK!19?$X,$ )X#="9 E! <[&/ ]C?9fo57da"#=?%#:M$)5%#!-(%i-N5;'5')]1## 5#A"%3071/8 "+*;_-5ɛb{B~$Yu_σ2LOT4VI[5%,7W|צf3!WPY "1L!8 -JJM#>%#8f +T"!2;5t ύ#"[X$, EQ&8/  I A!Ϯ{'/SSz$3ɋ<ͅm{%!0{? MiC<'&- [5Vbf !%Y,-"U; 9! ѝ7Z K?{8a" -4 -Gv2!^ # UJ$=fۀ$ S bU?w -*4y".IC -C/;#"i>q$%=/#)1:=VAtD!D8]/ #u"(sJ.vI#DZ! .+!Ӱ!tKDSݱu.16t"<#0| -#ј? "%=!{CDFF!)$ŏə"Ã* @!{M Ӗ!"">W "( -E;D"# 3$&!q*"8 - {L) "#} w6~ ͋zqFp+95 E*/\!#:>!Ӥ['Q,')J07)CK=.DK$&&98_  5W8<5=? >J OH (.V1X(X /;? 91X(V$*"201I< ; -;.).-&771MՔ1F;? /#<.#E*3  .#;,#;1%G";F -@2  %.Y"?HC0$1RY1 #?K_D#O%AY -S *.!3W<4XO{4C'"A#)w/ I E ,E' ZE;*"'$=J - "2#!C#6F7 -7 Tz#( ,M+Ow. 1a|6J#  #1_ق˅?M+/[H$XK|(X0k i2 -0u# ٔ$J׶>n&/|  'p_%;9'!,u*mqa}#'xC @*1X77A* M1-E ;AJk 0 K4GQ]] ZY"y@Vk>hѯ;sin`dtKoqfWc@nLJ:/" "Ty 0   h& -(@ v## 09"! 7Gk; )/(AٷxN LG$" ) o !$O! - ;B "c u  o 'G/"j  A"EV  -#b 2  $jv H! B+V!2B!!6H$  x2&Ɇ )v w ?   F!A$.F!RQR ! }#! BC $j"@#:@! #!" -x57+h)!/A -Cq'GF?$;14@@ZQ$#"n  72c #/J -?BB "RS  ã $$wPKT%\!Q (\FE1&/C8 |y"lZ?s }C.#sg#LW&$Z75( ׫RFp!%ӓ o.  #Ņ͇L'$ + -#HHɍ -5*T ѕ rh -.~@PYM*ETD >"D*ME!Bd>ї3S #V Cqq+ѐ - =*"+v55"[!! "-]0;W#˚ S݄ -!%!A7 BQ)0?ICˡL'!DۉT7Xz(  #JV, -Oss*4% !t#bu ϯ3(5 )Z?/%0O!" 'i"&y( +~ =G>$ =;(M{ -~6xN2)H/nB1+|E2*;6S* CL $,(zi .5_%o#(cwϔD& 1!GO *J/ I#=`*I+B8541` +S8%/ˈ,K'\.$a+-  y,.9+k-`"1"1M!$C1*5O A58I 2 ?! 5 *LW F3 nN' *.B%:. 3C  \ $12(^5  - j:`9"w Mv*'',9F<5 f7!" (12h+D%9a -.-h!9.I 6F( E*L75,0$73S)$'+-"eE;524%!] 8?2 '12'44-",0hDR)4$6>+<8 g- E)*;?1- -s_dr O.  =^& C(ѕ&'(+# J'&!Z*a D5GM%(!)n(7ak D!EOyE !VACS*+TrQ, - V8Jq #\ -*"F 1WNG(6C2V$LK""1<L !#--!}!!WL#" -;L C,o%qWB R"I!)cq$7t(9 #I E r$ 9 .GD - CL -)B^ -E7=%U ?r+1 9-* G"3"pp9 - @.K%/3aNA˲+'L7x'r(tBM(b$- >7+]97!E(#":/&]!9۷7 &7)# - CFQ1 %; 8G A -5<5.FE 7z#& DK --' !u9EC7o" 7 ;  ECB %ň 14#'=8E=B5.E>_=E%-=x/GǔO!=  i  #C٘&|+DL"~ ,-#w)"Fr2Kk #ŋfi -s:1)- "y#.!q0 -_%Q|)g -* " *'Y,AWD6(J(B^'U= 8 HxG/Xp?8R759Y۝WF"n-"W{mÅN.21.PF %zr ";} O -6KF%0n:\U 1 -M}.>ǾFǔ;110:*'фKdjϙu^!o%"(Rt' p;!J)% z%L*!!הW2B7S;B &Z(0,o5 -Y-4+J * Ӈ '0,  t#f  ( "" -ё6y!D"z5x4*CG!tM>hGN9&" =qזI??v%?q '"j4~&, 1ߌ0.  -h% R. }n )% <=2 ;5r$ 92q8 ˧7 O$--w"t; 2&[A&d.sA+ $/RDrّB)]i~($ߔaW 3c\29n$!RMV$8RN b[,E8HͦK*PLWr#!ӆ lђfA}}GG1kA 2n1W@T߽`<ӛ'. 9VIJ](ѡ}/0(q@!!q˩D.~F 1)+H.5 2#Ǣ#H"! ;;8>[ cK[&6\ -R3'ņtY (NNӋ -D?L5  dR=9- ?)K ;!K's9ECH8!9#X(I;7 3!R]2GI*='[K 70=5''  DL#,F?JQ;!4&G &  A(3!r5:K'4)_" - %W<`,+ UHO -\@ 'GY )Id([ 'xC' 9L )+pB" 7%Ӏ gQE-"۔?1 - -9"M9")G߃: |:&JU3>;P^Qi=)_?%+ S!n<),Q>, 5&#$ Z X =U3v^={ p)6J kM]B%!!tKf  ۫s:0 r2m`!:e  T!V(!/yu&5J( 9%V+' .*++K .OE<  2) dA p# JS1!&"+( 2ϛNX)ˉd\7F,S ?!Pb" YUoF_-\"9Z!0S\WQ> -  L?Q #' a^ 8j  !:Co> t ˯y.p -1 ~!A*Hb'{#ôCF <])&}O-EC.+Vy6 a'- ImcR-AMUi`RZo -іV6!3 @/$"O92Պ5+RD]%18*)R C6},A .@S:>:N/@/ -%1:1:'9\)^ -/`.%0&\00L\&Z 7FGH!i?AA -QA UD9!w[62"F&$*IW,aә:4D-c/Q][O+-'G$>?M X@3x2m,7m+ Eh+8ݮ$G;[`T(%Ƀ- >L.]'& EՇ')$$ '_B CT;CBh d H%P` *eK, M$a!*݄I 0{/V/ 8ŀRիxչ5-c͊ѤvNE)?v;2Zh]#MK 3%"_"H! *kCY;!'DUn M:p"Mq^!O?'lG 9Fm)|a#'uB|i_ -#"]Sb{y=!& D&)Z:4>41,%Jj ǑJ+s6jH; nM}2IvLe:b;' :+1Kp 'yǐH)!!tE" -|E`>ō,#o*2 $ -@(1c!i1) $!<'E# i!"/!!i!(M#'A\$  #!Cx+  -'p - @2.')O+/."{DO ɰEu% - l(!JF r. ^/ G/?Br$Q)c ..Juo1r>lSi"iB?5#!A^'BD- 15";r/"# 1|A:'= &7&8=!!= \'DM( D"&5D ?>9 &!3)*W "ň= G:=I"*E>*7IA)=" 7(L)M*,Q(0;!.{9!L"A 1r"K>;h*('E&<) .#I!O(N('> +)_$E1.1O$'-"& < <]"2E]B'($$&-/\;c *J -A$)$ !V - - 2C -;"Ѩ͊(' -D*"$B"@& ("&2(+!E$#&)*.+$+" &7~D ?#-!9ם>) \ɗPpHvC E&xCo*j&TE"=E **"DF -O S C 4%U>&J)")&'5( A7o G-$#*U H .&)+Dd;ٰAY/M/7 q! P+*i17 / ?' r $ 2^ -'aU}+7"/ AF!$D 0(]1) #E #(F4* -'b$E+)t M# ,C '#; -)T_s<8*"-':M %d&4(]tAEǨH?6-01* ,XO-+@^*5ˊ6\<N#48C#l;iQ#"sD$1(3 , ^ B$kx#y3*; -#1$yK !y -! -5~*LJv#2W-2 \+O2D(BJ)R 'T0[DEɫO-'L*A 6 +8@*B's' -o0i/] .3>/7( ~_./b*,s+0 [ER O/2EGv.!&(@?74r`ϼG~!n .CX95:@K >5(WJ(6K "P Z% *'y!.p'>l#1%ۃ(U2 {;" x -MwO l9"mN KDDG ,4jJH< -A-7 J1#($c'C" E; W#)!%@57/6V7&4E-&Ga~݌ F!Q9F5%jݪ+S. -"q-I%>-ё1z/=TK"- 7g:8W! = Q $&?;FMBDgA G reS; m DɁI;B-b:,>m'S- O6- - E? -&#5e,-#MA59o)eAD/I#/$;7&׼4A #J#=#3=UA,II:>),7 D7l"DRP A9"#S719EZw83'!öhXJ 1AdXt GL j=47^5"6%')?A1 -#+;^ 74% Gy*HW^"ey9"G_#4;05;"8uRv3+a#$'(}uOj3  $E  +C+7! 7zYv&"!--)>C uC -XkZs?XK÷OY-W;{hk5hű35!ŗA?dTI9 kS9-!X"O u"9^ -44D9B7"(a 1Y6@ SI; -B7 @#%;? 0D(M"#!D"7rC"#?# @AF!"9-0 )/W,Ah 2aD! )J"J/3 GJ;%Q"A DK -$E7PI%u"C6?~)!-4=PLK81HEÉFE. sJk(=#$&\58+))&!1K'HA 7k(7:21#aT!"ia2 5WU&1>k͌C5+/M{>K/3F]+ E S&M A"M? ) áǣ?!ӱ[" e)!Eh4^ -L 2N= 30 A4_CdA) `A' % m?'&D"lISH N-J%#%l0#'v M+d$h :!S1q=h)4poj& (8Vi3H-A;!`s3 AD7' >5CL=W -S9e;"+( 5s_)7A6` n^O(! -(VD'$ 8(0*0YA$7. -3qˬ I  # & !b= 2%#  !2=% s*@ d ?߫1`E4۔8ϣ CT<cGV-NS`@D#.׾#{,hgCݫkFGUvNDAMˑYՇ)E_.O,).R-l E}1DHjQŴC${Bzզ!zTdٻ"lKUd&[\'=ɑwו" ';/+$ &#"O( 1yVņ 1Q!s!z  "8&!#)َ&#sW. -<<55M^0')ٮ( 1C4?&2o+-- -Ir1 5`z1'J, $q+ -eI1(9g51M -1 -E -%&2y -U -2 s v| s66;/85P*>/&^ {#!w" "*{` ѯp!BC "z!)0! <> E)|uFx xJ#wDτH   :Yz#LK0zD  Q0yL(} -/!Şx"! -w" -' - ѩ ?B!w>" -#ŕM'# -X+P(!R p+!,;<'#"š"v[&!#8Ӏ7."%$ ~29KHzK Eu # -}:G "="C #-"}*)#K2'Nnb5 s '$d - < ;* ? m@ ?D#.|Ba X -Yс%߼~:!r .<ג `!."'!z pe+; d#PKkÄt8"&X"!J"p0Ey"q;gY#8lųɸo"I"Xr o9|9=A7ZM^#&'~_B Ln9!`t-hCIp- nw.7E0 %30%A"K" AfN"$" ! -O dJ*eS b!I" 1`%0,g),6ih1*H60;.=t;H=) j) -<hJR w s?_ L"$x0!b fcW=F0 bI U. D Y!NJB$OA(I7 -c.a0'' ߂ӁϦ*m` M)B -fdkR;J=5]- C@ ! _1,&#Z)=0n +Ϭ#ձL */#,'c;k.<(B ?-<; bECA7/+B(?2EG`B!$;H7<~,C -3i/' Ab= DCC,*V6 ~G݅'C 6 9`0@P3  {; +BES;br&',];#aDl2Q~`-/eͩi,BFr'9c -Anh!+;!'5KC: E 3'=5$L4uN]hGq Qnw1KӮ==G - T,d'!;' -(H7' "rL *H/́?ۚ;& ->UWdb-+Ő)" ݻ! -S$0+G" " a K%#.##v8#$x 4'M)^#> #F//-0 Q<-C#F/}x.0#pG,W}#(/7;I"\&iO>J4*85|2O>GFS4%(HL/)'26A6gGl D!  )_."[C  MG +0%'!63!h/ 0$Xa**WR#&%8:0/ 1FHD",Zb." .QT!e;#X, i-M0'd1)+"J^8)-!5`Gn@1F>! g& MZɬ,39jrp3ٗɇA#_7 993r#CB*|# b=qZa1U017 +&k 3[*4 ӫM  'jטC* +$*r)1-##>VDLq0##j" *T"$'2  (I<1/N/: #1 ( % #G lW1#dŰBk((Sӻɮ  COS4&J.z![H;3;X[aw`Nmc+#IYxbU.Jjш C"D/2!H1[ ),3TN5s-J`/*#4s -C<7ZD-9##=p;I,0DD& -O- "TM`^|Y B -+3 G.1O1( 3s =тM*t6'T' f !97f4 "7O39* *o##No^ "L=CTEZW+!/.Q@\sT19( 1@dJi@S !!m#LݎgJ߶PJR)QO1"!L-S?%&O.B #T.0FF%BE:: у9"3l. -W&&WK (,MA$*P8-JDw -+!B 3)gd,"5%*p+(J'3v -.& 2Iςa 2B>Y -hJ  #L3%v"i {'( rB@` 3r ׈" -wz@> -#&zWT[S &G - H9  n/!F@ -(0ÅwEq1W" M)"% %  HN7al|(q -?$$jWyFu9=K=2> 488@F%V6c -Y)Ӂ )B"#'5Q)@!/Q]Qnu # ["S"e&߆ -Ke %*'ɶ(?YO:"~ٸ:!$,Bo&  t""ߏ", #R9u*7 &)R*( : -@5 -6>H)!  #b. -$x? \.GN-c - y 5!&%B- * # i 8*+9: 7PFk+$t - 19 -/g $ !5Ü>@2( " 4R ! @0!&7I #h  - -M;(})2! -J('b,,'+8w )"xݶ:8 % GG0p;G<* 3V! -nj˃,í_E(iBz| -'`g'N \ No newline at end of file diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.nrm b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.nrm deleted file mode 100644 index 19f64e58..00000000 --- a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.nrm +++ /dev/null @@ -1 +0,0 @@ -NRM|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||vvvwvvyvyvvx||vvvvvvy|yyvvvy|vv|vvv|yvyyvv||vxv||yy|vv|vvvvvvvvvyyvyyvvwxvyvvvvvvyyvvy|vvvvvvv|vyvvy|vvvwvv|yvvyvvxvvv|yvv|vyvvvv||vvxvvyv||y||vvvvxyyvvwvvyvvvv|vvv||vvy|vwvvvvw|yvvyvv|vvvvxvyvvv|vvvyvv||vyyvvyxvvvv|||vvvyvyvyvvvxxvvyvvvy||vxyvvvvvyv|vvv|xvwvyyvy|vw|vv|vvvvw|vvxvyy|vyvvvxyyvxvvvvvyv|vvyvvyw|vyyvvvy||vvvvvvwy|yyyvwvvyyvvvvvvvvvv|vv||wyyvyvvvvvvvvyvvvvvvvvyvyyyy|vv|ywvvvvvvyvyv|vvvvyvvv|yxvvyvvv||vvvvyy|vvvyv|vyvv|vvvyvywyyv|vvvyvvvvvvyyy|xvvvyyyy|vyv|y|vvy||vv|vvvvy|v|vvy|vvv|vvvvvyv|yvyy|vvvvvvvx|yy|vvvv|vvvvyv|vvv|vvvv||yvv|vxvvv|yv|vxvvwxvv|vvyyvvvyvyv|yvvvvvvv|vvvyvyv|yvv|yvyvvvvv|vvvvvvvvvvvy|v|yv||vvyvv|vvyvvvyvyv|vwvvvvxyvv|vvy|v|yv|vvvyvvv|wvvvyvvy|vvvvvvx|v|v|yvvvvvy|vvvvy||||vvv|vyvvv|vvvvvvvvxyv|yyvwvvvvvvwvv|vw|wvvvvvvvvy|vyvvvvvvvvvvvyvvvvvv||yvvvvvvvvvvv|vvvv|v|vvv|yvvvvvvv|vv|vvyvyvvvvvvwvvvvxvyvy|vvvv|vyvyvvvvwyvvvvvv|yxyvyyvvv|vvvv|yv|vxvvyxxvvyvxvvvvvvv|yv|vvyvv||vvyvv|vyvvy||vvvv|vvvvyvvvvvv||vvvyvy|vvvwvvyvv||vyyvvvvxvvvvvvv|vyvvvvyvvvyxv|vyvv|yv|vxvvvvvv|vvvvvvvvvvvxvvvvvvvvwvvv|vv|yvvvvvvvyyyvvwvyvvywvvvxy|vvvvyyvy|yvvvv|vvvvwvvv|||yvyv|vv||vv|vvvvvyv|vvvvvvvyvx|yvvvvvyvvvvvvy|vvvvvyvvv||vwyyvvvvvvvvvvvvy|vvvvvvvyvyvxvvvvyvvyvvvvvvvv|vvvvvx|yvwyyvvvvv|vv|v|vvvvvyvvv|vvyyvvvvyvyvvyvvvvvvyvvvvv|v|yyvvvv|vw|v|vvvv|yvyvyvy|vyvvvvvxvyvvvvv|y|vy|v|yvvyvv|vvvvvvxvvxyvvvvvvvvvvvyvvvyvvvvvvvvvvyvv|vvvyyvvvv|vvvvvvvvvvyvvv|vyvvvvyvv|wvvxyvvvyvx|yyvyv|yvvvvvvvv|v|vyvvvvyvvvv|vvvvy|vvyv|wy|yvvyyvyvv|vvvvvvv|yvvvyvyvvyx||xvy|yv|v|vvyyvy|yvvvvvvyvvvyyvvvyvyvvvvvyvxvvvvvwvvvvvyvvyvyvvvvvvvx|vvyxvvyvvvvvvyyvvvyvvvv|yvyv|vvvv|vvvvvx|vvvvvy|v|vvvvvvvvvyvvvyxvyvvyvyvvvvxvvvvvyvvvvv||xyyv|yvvvyyvv|yvyvvyvvyyvyyyyvvvvv|vyvyv|yv|v|yyvvv|vvv|vvvvvvvyvwvy|vxyvvvvvvvy|vvvvyvvvvvyy||vvv|yvvvyxvvvvyvv||vvvvvwvvv|vvvvyvvvvvyyvyvvvvxvyvvv|yyvw|v|vvxvv|||vyvvvyv|vxvyvvvvvvvvyvyvvvvvvvvyvyyvvvv|vvvyvvvy|yyvvv|v|vvvvv|vvvvvvvvvwvvvvvvvvvvvyvv|vyvvwyvxvyv|vvv|yvvvvvvvvv|yvyvvvv|wyy|vvvvvvv|vvyvv|vvvvvvvvvvvvvvvvvvyv||vvvvv|wyyvvvxwvx|vvyvyvyyvv|vvvwvvyyvyvvv|vyvyvxy|yvv|vvy||vyv|vvwvvvvvyyvvv|v|vvyvvvvv||||vvyv|v|vvvvwvvvvvvy|vvvvvyvv|y||vwyvvyv||vvyvv|vvyvvvyvxyyvvy|vvvvvvvy|vvyy|yyvvvvvvxvyvyy|vyvyvv|v|vvvvvw|vvvyvvvvvvvvvxyv|vvvvyvvvwvyvvvyvyvyv|vvvyyvyvwvvvvyvvvvvvyvvv|v|vvvvvwvwyv|vvyvvyyvvyvwv|vvvvwvvvvvvvvwvyvyvv|vy|yv|xvyyvvvvvvvv|vvvvvyvvvvvyvyyyywy|vvvv|vvvv|v|vvvyvyvvvv|vvvvvyvyvvvvvvvv|v||vvvvvv|vvyv|vy|vvvxv|yvvvvvyvvvvyvvyvvvvvy|v|vvvvvyv||v||xvvvyvvvvvv|vvvvvvvvvvvxvyvvvvvvyvwvvxvvvy|vyv|vvvyxyvwxvv|vvvvvyvyvvvvvvxxy|vvxyvvvvvvvvvxvyyyvvvwvvvyvvvvyvyvvvvyv|vy|vwvyvv|vv|vvvvyvwxvvvvvyyv||v|yxvvyyvvv||vvvvvyvvvv|vyyyvvvyvxvv|yvvvxxvvvy|yvyv|yyvv|vvwy|v|yw|vvvvvyyvvvvvvvxvvvvvvvv|vvvvvvvvvyvvvvvxy|vvvvvvvvyvvvvvyywvvvvyyyv|vvvvvvvyyyvvvvvyv|vyvv|wvvv|vyyxvvvyvvv||ywv|v|y|vvv|yvvvvvvv|vvvvyvvv|vvvyvyyvvvvwvvvv|wvvyvyvvvv||vyv|vyvv|yvvvvyvvv|vvvwyvvvvyyvvvwv|y|yvvvvyxvvyvyvyvvvvvvyvvvvvx||vyvvyvvvvwvv|vvvvvyv|vvxwvvvyv|vvv|vvv|vyvvvvv|xyvyvvvvvvvvvvvvvvvyvyv|v|v|yy|vwv|vyvvyvyvvy|y|vvvvyvvwvvvvyvvxvvvvvvvvvv|ywvvyvvxxvyyvvvvv|vx|yxv|yvvvyxvyvvxvvvv|vvvv|vvwv|vvvxyvyvvyyvvvvvyyvvxvvvyvvvvvvvvvvvvvyvv|vyvy|yvv|vvvvvvvvvvvvvvvyvvvyyvyvyv|vyyyvw|vyv|vvvvv|vvvv|vvvvvvvvyvwyv|vvwvv|vvvvyvxvvvyvv|yvvyyy|vvxxv|vvvvvwvyvv|y|vvvvxyvvvwyy|vvxvv||vvvvvvvyvxvyyvvvv|vvyvvvvvvvvvxyyvyyvyv|yv|vvyv|v|vvwvvyvv|yvvvxyvyvvvvyvvyw|wvvvvxvvv|xvvvv|v||vv|vy|||yvvyvvwv|vv|vvxvvvvvvvyvvvy|y|vv|vvvvvvvvvvv|vvvvvvvyvvvvvyvyvyv|yvvv|vvxyvvw|vvvvvvvvvvxvvvxvvvv|vw|vvvyvvvvvvvvvvvv|yv|yvv|vvvxvvvvv|yxvvvwvvyvyvvvvvvvvvvv|xvv|vv|yvvvyyvvvvvvyvwyv|vvvvvvvvvvvy|vyvvvvvv|xv|vvyvyvvvvv|vvv|vvvvyvywyw|vvxvy|vvvvvvvvvv|vyvvxvyvxvvvvvyvvyvv||||vvyvvyv|yvvyvvv|vvyvvvy|y|vy||vvvvvvvvvvv|vvvv|v|yvvvyyvvvvvyvvv|yvvxvyvvvyvvvvvvvyvvvvvxvvv|xvvvvvyv|vvvvvy|vvvvywv|v|vv|yvvvvvvvvvvyvvvy|vyvyvvvyvyyvvvvwvvvyyvyvyvvyvvvvvvv|vvyyvyvyyyvvyvvvvvyxv|yvvvvyvy|yvvv|yvyvv|vvvvyyvvvvvv|vvvyvvvvwvvvvyvyvvvvvvvv|vyvyvyv|vyvvyvvv|vxvyvvyvwywyvvy|vvyvvvyvvvvvyvvvvvvvvv||vvvyvyvx|vyv|vvvvvvvxvvyvvyvvvxvvyvvvyvvv||vvyvvvv|xyvyvvvvvvvvvvvvxvvvvv|vvvvvvvv|vyvvvyvvvvvvvvvy|vvvvvvxvvvvvvv|vvvvvv|yvyvyxvwvvy|vyyvvvv|vvvyv|vv||yvvwvvvvvvvvv|vvy|vvvvv|xyyyvvvv|vvvvvwvvyvvvvvvvvvvvvvvv|vvxyvvvvvvvvvvvvvv||vvvyvvvvvvvv|vvyvvvvvvvvvx|vvvyvvvv|vv|vvvvvv|vyvvvv|vvvvvyvvywvyvyvv||yvvvyvyy|yvyyyvyvyvvvyvvyv|yvvy|vv|xvyvyyvvvwyxvvvv|yvvvyv|vyvvv|y|vvyvvvvvvyvvvvvv|vvy|vyvy|vyvvy|wvyvvvvvvvvyvyyyvvyvvvxvvyv|xvvvvywwywvyvvyyvvvy|vvvvvvyvyvvyvvvvvvvvvvvvvvvvvyvvvyyw|yv|y|vv|vvvvv|vv|yvvvyvvvyv|vyvwvyv|vwvvxvvvvvvvvyvv|vv|vvvv|v|y|y|w|vvv|yvvvyvvyv|vv|xy|vvyvvvvvvvyyv|vvvvvwyvvvyvvvvyvvvv|vyvv|vvvvwv|vvw|yv|vvyvy|vvv|v||yvyvyv|yvvvvvv|v|yvyvyvv|vvvwv|vyvvvvvvvyvwv|vvvyvvvvvvvvyvvvvvvyvvyv|vyyv|v|vvvyxvvvvvyvvvvvv|vvwvvvv|vvyyvy|vyvvxyyxvyyvvvyvvxvvvyvv|vvvv|vv|yyvvvvwy|vyvv|vyyvvvyvxvvvvvv||vvvv|v|vv|xvvvv|v|vvxyvvvyvvvvvvvvyxvvv|vvvvv|yvvvvvy|yvvyvvvvvx|vvvvv|vv|vvvvv|vvvvvyvvvvvvvvvvvvvy|vvvvvv|yvyvvvvvxvvyyyvv|vvyv|vvvyvvy|vvvv|yvvvvvvyvvvv|yvvvwvvyvvvvyxvxvyv||yvvvvwvyvvvvvv|wvvy|yvvy|yv|yvvyyvvyvvvvyvvyvvvyvwvvv|vvvy|vvvvvv|vvvvvyyvv|vyy|vvvvwyvvvvvy|vv|yvvvwvyxvvvvvvyvyvyyyvvvv|vvvwvv|vvvwvvvvvvvvvv|vvvvvwvvvvvvxvvvxvvvvvvv|vvvvvvvvvvyvwvvvvwvvv|vyxvvyvvvvvvvvvvyvyxvv|vvvvvvyyvvvyyvyyvvwvvw|vvyxvvvyvyvyvvvvvvvvyvyv|vvvvvvvvvvyvvvvvyvvyyvvyvvvyyvvvvyxv||vvvvvyvvvvvvvvxyvvvyv|vvxvvvy|vvvvv||vv|vv|yyvvyvyvxvvvvvwvvvyxvvvvvvy|v||vyvvvyy|yxyvvyvvvwv|yvvy|ywvvvvvyvvv|v|xyvy|y|xyvvvvywvvvvv||y|wvvvyyvvyx|vvyvvxvvvyyyvvvyvyy|vvy|yvy|vyvvvyvvvvv|v|vvvvyvvvv||vyxvxvvyxvwwvvyyvvvwyvyv|vvvvvvvyvvv|vyvvvxyvvvvvvvvvvvvvvvvv|vvvyv|vvvvwvyvyvvvvvyvy|vvvvyyvvvvvvyvv|vvvvvvvv|yv|vvy|vvyvvvvvvvvv|vvyw|vvwvyvy|vvyvyvyyvvxv|vxyvv|vvvwvvvvvvvvvvvvv|v|vyvvvxvvyywvvvvvvvvy|vwvxyy|vv|vy||vy|vvwyvvv|vvvvvvyvv|yxvvvvvv|vvvvvywv|vxv|vvyvvv|yyxvy|xvxvyvyvyvyvvyv||vvvvvvvv|vvvyyvywvyvvywvvvvvvyvyvvvvxv|vv|vv|yyvv|yv|w|vwvxvvyv|y|vvxvvxvvyvvvv|yv|vvvvyyv|yvvvvvvvvvxvyv|v|vvvv|vvyv|yvvvv|vv|vy|vvyvy|vvyyvvyvvyyvvvxw|vvvvvv|xv||xvvxyvvyxvv|||vvyvvvvv|vvvvvvxvvvvvvvv||vyvvvvvvvv|v|vyvvyvvvvvyvvxyvxv|vvvvyyywvvyvyxyy|vvvvywv|vvy|vvw|vyxvyyvvyvvyvywvvv|vvyvyyvwvvvvvyyvvvvvyvyvywyvvvyyyvvy|vwvyyyvvv|yxvvyvvvvvv|vxvvx|yyvyxvvyvvwyvv|yvvvyyvxyyyvvyvwyvyvvyvvvvvvvvvvvvyvvvyvvvvvvvyyvvvvvvyvvvw|vyvv|vvvvyvvvvv|vyvvvyvvvvvvv|vvvvvvvvvywvvvvvyvywvvvvyyyxvyvvvvyvvvvvvvv|yvvvvvyvvw|vv|yyvvvy|v|v|vvw|vvv|vvv||vvvvvvvwvyyvv|vw|vvyyvv|vyvvwvvvyvvvvvvyvvvv|yvvxvxv|vv|vvvyvvvvvvvvvxyv|vvv||vyvvvv|vvvvy|vyvv|vyvvyvxvyy|yxvv|vvyvyvvv|vvv||vyvyvv|vv|vyvvvvvvyyvvvvvvyvv|vvvvvv|v|vvvvvvyyvvv|yyy|wvvvyv|vvvvvyvvvvv|yvvyxy|vyvwyvvy|yvvvvvyvvvvvyvyyvvyyyxv|vvyvyvvv|yvvvvvvvvvv||yyw|yvvvvvvvvvvvvy|vyvvyv|vvyvv||vvvvvvvvy|vv|vyyv|vvv|vv|vv|yvvyvvvvvvvvvyvv|y|v|vvy|vvvyv|vyvv|v|vyv|wvy|vvvvvywvyvyvvv|vvvvvvvvvvvvvxvvvy|v|yvyvywvvyyvvvvy|vvyyvyvvvv|vyvy||||w|vvyvvvv|vwv|y|yvvvvvvvvv|vyvvyyvyvwxvvvyvv|yvvvwy|ywyyv|vy|y|vwyvvvvvvvvyvvvyvvvyyv|vvvy|xvvyvvvvvvyvyvxvvvyv|vyyvwwvvyyvvv|vv|yvyvvvvxv|v|vvvxvx|vvvvy|yyv||vyvyxxy||vyy|v|vvvv|v||yvvv|yvvvyv|v|vxvvvy|vvvyv|vyvvvwvvvvvyyvy|y|vv|vvwyyvv|y||yvvyxvv|v|v|vvvv|vyvyyvvvvv|||vvvvvvyxv|vvyvvvv|vvyvvv|vvvvxwvyv|vvy|vy|v|y|vvvvyvvyyyvvvvv|vvvvvwwvyv|vvvvvvvvvy|vvyvv|yvyyyy|vvyvvvvvyvvxvvxvyvyvvxvvxvvyvvvvyvvvyvvyvyvvvvv||vxvvv|||yvvv|vv|vv|vvvy|yy|v|vx|||vvvyvv|vyvvxvvvyvyxyyvvvvvvvvvvv|vvvyyvvvvyyvyvy||vvvvvwvyvxvvvyvvyvvwvvvvvvvvvyv||vyvyyvvyvvwv|vvvy|vyvvyvyvvvvyyy|vvvyvv|wvyvvyyvvyy|vyvy|yvyv|yvvx|yvvvvxyvvvvvyv|yv|vvvv|vvvyvyvvv|vvvvyvvyvvwyvvyvvvv|vyvvvvvyyvyvvvvvv|yvyvy|vvwvvvvyvvvyyvvvvxy|vvyvvyv|vvvv|vyyv|vyvv|yvvvvvvvvv|yvvvvyvvvv|v|vvyvvvyvvvvvyvv|y|v||vvvvvvyv|vyy|vyvvvvvvvvvvvv||vvvyvvy|vywvvvyvvwvvvvwvvvvyvyvvvvvvvvvyvvvvyyvvvvyyyyvyvvyvvvvvyvv|vvvvv|yyv|vvvvvyvvxvyyvvvvvvyvvvvwvvyyvvxv|vyv|yvv|vv|vvv|v|vyvvvyvvvvvvvvvv|vvvvw|xvvyyvvvvvvv|vvwvvv|vvvvxyvvvwvwvvyvv|vvv|vvxwvvyyvvvvwyvv|vvy||vvvyvyvvvxvyvyvvvvvvvvvvv|yyyvvvvvv|yyvvxvy|yxvv|vvvxvyvvvvvv|vyvvv|vvv|vvyvvvvvvyvvvyvvvvv|vv|yvy|vvvyvvvvxvv|v|vyvyxvyy|wvvyvvvvvvyyvvvvvvv|vyvv|yw|vvvvyvvvvvvyvvvvvv|vyyvvy|yvvxv|vvyvvvvvy|yvvxvvvvvyyvyvyvvxv|vyvvyvvvvvvvv|vvvvvvyvvvvvvy|yyvvvyvy|vvvv|vyvvvvxv|y|vvvwvvvy|yv||wvvvvv|vywwvvxvwv|vyvxvvvv||vvvyvvvyvv|vv|yvywvvvv|yyvvvvvwv|yvvvvvvvvv|yyvyxvvvvvvvyv|vvvvyvvy|yvvyvvvyv|vvyyvv|vvv|vywvvvvvv|v|xvyxy|vvvxvvyvvvvvvyvxyvvxvvyvvyvv|yvvxyxvvvvvvvvvvvyvvvvvvvxvw|vvvvwvyvvvvvw|xvyvvvvvv|vvwvxyvvv|vy|wvyvvv|yvy|v||vvyvvvyyvv|vvyvvvv|v||vyv|vvvvvvvvvvvv|xvv|vyyvvv|vvyvvvvvv|v|vvvyvvv|vvvyxvv||vxvyvv|vvvvvyvvvvvyvvv|v||yyvv|vvvvvvvvvvvvv|vyvvvyxyvvyvyvvvxvv|vvyvvvvvvyyvvvyvvvvvvvv|v||vy|yvyyvvyvv|vvvvvvv|vvyyyvvvvv|vv|vvvyvv|v||vvv|vvvyvvvvvxyvvvxxvvyw|yy|vvxvvvvyvvvvvvvvvyvv|vvyvv|vyvvvvvvyyvvv|vyvyyyvvywvvyvvvvvyvvvvvvvvvvvvyyvvvvyvvvvvvvyxvvyvyyvyvvvyyvvvyv|vwvyv|vyvvvyv|vy|vv|vv|yvvvvy|yvwvvxyvyv||vvvyv|vvvyvvvvvyvvvvvvvvvyvvyvvvyvvywvvvvvvvvy|vyvvvvvyvvvxyvvvvvvvvvvvyvvvvyvv|vvyvvvvvv|vvyvv|||yvvvvxvvy|yv|vvv|vyvv|vv|vvvvv|vyvvvyyvvvvvvxv|yvywyvx|vyvvvvv|vyvy|vvyv||vvy|vvyvw|v|vvv|vv||vy|vv|vyvvvyxvvyy|v|vxvyvv|vyvvvvvvvyvv|vvyvyvvvvvvyv|vv||vvvvvvvyvyvvy|vvvwyvyvxyvv|yvvxvvvxvvvvx|vvyv|vyvyvvvvvvvwvvwv|vww|yvvvxyvv|vvx|vyvvvwvvvyyyvvwvvy|vvvvvvvvvvyvyyyvvvxvvvvy|vvvvvvx|vvyvvyvyvvvyvyvvyyvvwvvvvvv|v|vv|vv|wvv|yvx|xyv|w|vvv|vvvyvvvvvvvyvy|vvyvwwyvvvvvvvvvv|yvyyvvvxyvvv|vvyv|y|vyvvy|vvyvwvvvvvyvvv|vvvw|vvvyv|yvyvv|vvvvvvyv|ywyvv|vvyvvvvv||vyv|vvvy|||wvvvyvyv||v|vxvvvvvvvyx|y|||vyvwvvvvvwvvvy|vvyv|vvv|vyyyvyv|x||yvyvyvvvyvvvvvvv|vvvv|vyyvvvvvvy|vv||vvvvvvvvvvv|yvvvyvvv|||yxyyvvvyvvyyyvv|vvyvvvvvv|vvy|xyvvvvxvyvyvyvvyvyvvyvy|vvyyw|vvv|yvvvvvywvvvvvvvy|y|vvyv|vvvvvvvvvvvxvxvvyvvvyvvvvvvvy|vvvyxvyxvvyyvvvvvvvyvvwvvvvvv|vvywvvyvvyvyy|vvv||vvvxvyvyv|vvvvyvy|wvvvvvvvvvvvvvvvvvvvvxyvvvxvywvvyvvvv|vxvvvvv|v|yxvvvvvvvyvvyvvvvyvvvvyvvv|vyvvx|vvvvxvvyvvy|vwvxvwvvvv|xv|wvyy|yvvvv|vvv|vwvvvvvv|vvyv|xvywvyvvvv|vvvvvvvvv|yvv|vv|vvxvyv|v|vyvyvvvvxwyyvvvvv|wvxv|vvyvvvyvvv|vyvvvvyvv|v|vvyv|v|vvwvvwvyvyv|vvvvywyvv|vvv|yv|vvvwvvvyvxvvvvvvyvyvvvyvvvvvv|vvvyyxxv|vvv|vv|vvyvvvyyvvvvv|xvvyv|vv|vvvvyv|vvvyyyvvvvvvvvvvvvvvvvyv|v|vvvvvvvyvvvv|vvvvvvvvvyvvvvvvyw|yyvvvvvvvvx||yvvvvvxvxvvvvvyvyvvvvvvvvvvyvvvv||w|vvyvyyvvvvyvvv|vvvyvvyvvvv||vvyyxvvyvvv|vxvyvv|vyvyyvvvyv||vvvwvyyvvvvvvvvv|vvvvvvyvvvvywvvvyvvvvxvvvy|vvwvyv|v|vvvvyvxvvwvvyvxvvyvvyv|yvvyyvyvyvvvvyyvvvvvy|vvvvyvvyvvvvvvyvvvyv|y|yvvyvvvy|yvvx|vxvv|yy|vvyyvvvv|vxvvvvvvvvvvxvyvvyvvyv|vvvyxyvvv|wvvyv|vwvvvvvv|vvv|v|yyvvvvvvvvv|vyvvvvvywvywvvvyvvvvw|vvv|v|vv|yvvvyvyvyvyyvvvwv|vyvyvvvv|vvvyvvvvvyvvwvvvvvvvvvvvyyvyvyxvv|xvvyv||yvv|v|yvvvvvyvvv|vvvyx|yvv|vyyvvyvvvwvvvvvv|vvvvxywvvy|vyvvyv|ywwvvvv|vvy|vyvvvvwvv|vvv||vvyv|vvyvvyyvvvvvvvy|vxvxyyvyvvyv|vvxvvvvyvvyywvxvvvyvvv|vvvvvv|yvvyvvvvy|yy||vyvvvvvvvvyyvw|v|y|vvv|v|vvvvvyvvyvvv|yvvvyyv|vvvvvyxvv|vvvyyv|yy|yvvv|xvvvvwvv|xvv|vv|vvv|vvvvvyvvvvyyv|y|vy|vvyvvyvyvvvvvywvv|vvvv|vvvvvyv|vvv|vvwyvyv|vvvv|vvvvvy||vvv|v|yxvvvvvvyvvvyvvvvv|v|xvyyvxvvv|vvvvvvw|vyvyvvvv|yvvvvyvxvyvyvvvxvvvvv|vvvvvvvyvv|yvv|v|yvvvvyvyvvvyvvvvvvvvvwyvvvvvv|vvvvvvwvvvy|vvvyyy|vvvvvvyvvwvv||y|vvy|vvvvvvyyvvvvyyvvvvvv|v|yvv|yvv|x|vvvvvvvvv|vvv|vvvyvxvvyvvvv|v|v|yvvvvvvvvvvvvyvvvvyvy|vvvvwvvvv|vvvvvvvv|vv|yvvvvvvvyvvvvvvvyvvyvvwvvy|v|vvvvvvyvvvvxvvv|vvvvvvvvxvvvvyvv|vv|y|vvy|v|vvvvvxyvyvvxv|vvvvvvvv|vvvvvvv|vyyyvvvxvvy|yxvvvvyvy|vyvvyvvyv|yyvvvyvvvyv|vyvvyvyvvvvvvyvyvvvvyvyvxyvvvvvx|vvvvxvyvv|vvvvvvvxvyxvvvvyv|wvvwvvvvv|v|vyvvvyvvyvvv|vyvvvvvvvv|vvwvvv|vv|ywvv|vyv|vyvvvvvv||yvyvv|vv|vvv|vvvvv|vvvvvxvvvyyvvvvvvvvvvyxvvvv|yvwvv|xvyyvy|vxv|vvyvyvxvvyvv|yvyxvvw|vyvv|vvvvvvvvvy|wvv|vvvv|vv|vvvvvvvvy|vy|vvvyywyvyyvvvvwvyvvvyvvvvvvvvvv|y|yv|yyvvvvxvwvy|||vxyyv|vv|vvv|vv|yvvvvvw|yvyyyyv|vyyvvvyvvyvvvvvvyyv|vvyv|vyvvvvy|vvwv|vyxvvvvvv|vvvwvv||vvv|vxvvvvvwvv|vvvvvvvvvvvvvvwvvvvvyvvvvvvyyyyy|vvyywvyvv|vvyw|vy|vvvvvvvvvvvvvvyvvvvy|vvvvvyvxvvvvyyvyvvvxvvvxvvvyvvvvwvvyvvvvvxvvvvwvy|vvvvwvvyvvvyyxvv|vvvvwvyvvvvvyyv|vyyyvvvvyvvvyvv|vyyxvvyvyvv|vvvyyvvv|yvvvvvv|vvyvvxyvyvvyvvvvvvv||v|vv|vyvvvvvvy|v|vvxvvvyyvvvwvvvvvywyvvvv|v|vvxyyvvvvvvvvvxyyv|yvvvvvvyvvvvvyv|y|vwvvwvvvyvvvv|vy||vv|yvvyv|vvyvvvvvvyvvy|vyvvvyvy|yyyvvvvv|vvvvyvvxyvvvvvyvyvyv||y|vvvvvvvxvyy|vvxvyvvvvyvvvvvvv|vyvvvvvvyvvvyyv|vvvyyvvyvwvvyvvvvvvvv|vvvyvwvyvvvv|vyvv|vvvv|vvvvvv|vyyvvvvvvvvyyyyvvx||vv|vvvvvyvvyvyvvvv|vvyyxvvvvvvvy||vvvvvvyv|||yv|vvvyvvyyvvyvvvvvvv|vw|yvyy|vyvvvvvyyvvy|vvvvvvyvvyvyvvv|vvvvvvvw|vv|yvvvvvvwyy|vvvvv|||vvvvw|vvvvvvwvvvwvv|yvyv|v|vv|vvvyvxvvvwvyv||vv|yyvvvywvv|yvvvvywvvvvvvvyv||vyvyvyyyvvvvvyyvvvv|vvvvxvvvyvwvvyvvvyvvvyvvvvvvxv|vyvyvvvvvvyvyvxxvvvvvvyyvvv|v|vyvyvy||vyvyvvvvvywvvvvvv|vvvy|vvvvyvv|vyvvyvvyvvvvvvvv|vvvvvvv|vxxvvvvvvxxx|vvvvv|vv|vvvvvvyvvvvvvvvvyyvwvvv||vvvv|vvvv|vwvv|vvvvyvv|vyvyyvvyvyvyvvyv|vvyvvvx|yvwyyv|vv|v|vvvv|vvvv||vvvvvyvvy|vyyvv|vvvvvvvvvvvvvwvyyv|vvvvvvv|xvyvvvvvv|v||vvxwyvvxvvvvyvyvvvvvxvvv|yvy|yyyvvyvvvvvv|vvy|vvy|vvvyv||vvvxvvvyyvvv|vvvvvyvvvv|yvvvvvywvvyvvvv|vvvvyyyvwvvvvvwxvvv|yvvvvvyvxvvvv|vvv|yyvy|vvyvyvw|vvyv||vxwyyvvv||yv|yvv|v|vvy|vy|vy|yxvvvvxyvyvxvvvvvyvvvvyvvvyyv|yvvyvvvyvvv|vyvyyy|vvv|vxvvvvv|vvyv|vv|vy|vvyvvvvvvyvvvvvv|v|vyv||v|vvyyv|vvvvvwyvvvvvvyv|vvxvvvvy|vvvvyy|vvvv|vyvvvvy|vv|vx|vvyy||vvyvyvv||yyvvv|vvyvvvyvyvvvvvvxvv|vvyyvyvvvvvvxvvyvyvyyvvvvvyyvvvv|wvvyvvvv|yvwywvvvvvvvyvvvvyyyvvvvvvv|vvvyyyvvvv|vy|vvvvvvyvvvvvvvvvyvyvvvv|vyvvvvvvv|v|vvvvxv|vyyvvvvvvxyyvvvvvv|vyvyyvyv|yvyv||vvvyvyv|vvvvvvvyvvyv|v|vyvvvvvvyvvvyvwvvvvvvvvvvvvvvvvvvy|ywvvv|vvyvyvvvvvvvwyvvyyyvvvvvvvvvvvvvvwwvyvyvvyvvv|vyvyvywywvvvvvvvv|v|vvyyvvv|vy||w|vvyv|vyvvvvy|yyvvvvvvyvvvvvv|yv|vvvvvvvvvyyvvvv|yxvyvv|vvvvvvvyvvvyyvvvvyvvvvvvvv|vv|vy|v|vy|v|vyyv||vvvvwv||vvvyvvvvvvvyyyvvvv|vvvvvvyvvyvvvv|vvvyvyvvvvyyvvvy||vvvyvvyyvvvvyyvwvvvv|yvvvvvyvwvvyvvvvvvwyvvvv||xvvvwvvxvyxyvvvvvvvyvvyvv|yyvvv|vvyvyyvyvyywvvvyvv|v|vvvyxvvvvvvvyvvv|vvvvvvvvvvyyvv|yvv|vvvyvvvv|vvv|v|vvvvvvyyyvyyyvvvvyvvvyvvvvvvvy|yyvv|v|vvxvvvvvyv||vvvvvvvvvyyvyvvvyyvvw|vvvvvvv|vvvvvvv|v|vvyvvvyvvxvvvyvvv|vvvvv|vvv|vvvx|vv|vyv|yv|yvyvv||v|yvyvvxvyvv|yvvyvyyvvvyyvvvvyvvyvvyv|yvvvxvyyvvvvvyyvvvyyv|yvvvvvvvwvvvyvwvvyvvvvyv|vvyvvvyyxvwyvvvvvvvvyvvvyvv|vvvvvyvwvy||v|||vvvvxvvvxwy|vyv|xvv|wv|yvxy|vvyvvyyvvvwyvvvwv|v|vv|vvvvvvv|vyvyyvvvvvvvvyvvyyvvyvvv|vvvyy|yv|xvvv|vvvvyvvxv|vvvvvvyvvvyvv|vvvvvvvvyvyv|vvvvvyvvvxv|vxvvvvvvxyvvvvyv||vvyxvvvvvw|v|vvvyvvvv|vvvvwy|vyvvy|vvvwvvvvvvvvvvvvvvy|vyvvyvvx|vv|vvvvvv|vvvyvyyvwvvv|vvvv|v||v|vvvv|vvvyxyv||vwvvvvvvvvvv|y|vvvv|vvvvvvyvxxvvyvvvvvvyvvvv|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| \ No newline at end of file diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.prx b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.prx deleted file mode 100644 index 238226bf..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.prx and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.tii b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.tii deleted file mode 100644 index 3b536ad8..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.tii and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.tis b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.tis deleted file mode 100644 index d36d9c8d..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/_1.tis and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/segments.gen b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/segments.gen deleted file mode 100644 index 225a55b3..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/segments.gen and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/segments_2 b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/segments_2 deleted file mode 100644 index 378bfaee..00000000 Binary files a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/segments_2 and /dev/null differ diff --git a/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/write.lock b/.recommenders/index/http___download_eclipse_org_recommenders_models_oxygen_/write.lock deleted file mode 100644 index e69de29b..00000000 diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs deleted file mode 100644 index 483cff36..00000000 --- a/.settings/org.eclipse.buildship.core.prefs +++ /dev/null @@ -1,2 +0,0 @@ -#Thu Mar 15 16:45:01 EDT 2018 -connection.project.dir= diff --git a/README.md b/README.md index 0344d04a..04de2656 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,9 @@ This is a repository for the TreePLE Application created by Project Group 9 for the ECSE 321 Winter 2018 Course. +## Website URL +http://ecse321-9.ece.mcgill.ca:8087/#/ + ## Workflow Description Each member has their own development branch. We did this with the following command (for future reference): diff --git a/TMS-Android/.idea/assetWizardSettings.xml b/TMS-Android/.idea/assetWizardSettings.xml deleted file mode 100644 index 7c9ca25c..00000000 --- a/TMS-Android/.idea/assetWizardSettings.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/TMS-Android/.idea/caches/build_file_checksums.ser b/TMS-Android/.idea/caches/build_file_checksums.ser deleted file mode 100644 index 6e620b74..00000000 Binary files a/TMS-Android/.idea/caches/build_file_checksums.ser and /dev/null differ diff --git a/TMS-Android/.idea/codeStyles/Project.xml b/TMS-Android/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626c..00000000 --- a/TMS-Android/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/TMS-Android/.idea/gradle.xml b/TMS-Android/.idea/gradle.xml deleted file mode 100644 index 7ac24c77..00000000 --- a/TMS-Android/.idea/gradle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/TMS-Android/.idea/misc.xml b/TMS-Android/.idea/misc.xml deleted file mode 100644 index 99202cc2..00000000 --- a/TMS-Android/.idea/misc.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/TMS-Android/.idea/runConfigurations.xml b/TMS-Android/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460d..00000000 --- a/TMS-Android/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/TMS-Android/.idea/vcs.xml b/TMS-Android/.idea/vcs.xml deleted file mode 100644 index 6c0b8635..00000000 --- a/TMS-Android/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/TMS-Android/app/src/main/java/ca/mcgill/ecse321/tms/MainActivity.java b/TMS-Android/app/src/main/java/ca/mcgill/ecse321/tms/MainActivity.java index c25ba619..127c3cbe 100644 --- a/TMS-Android/app/src/main/java/ca/mcgill/ecse321/tms/MainActivity.java +++ b/TMS-Android/app/src/main/java/ca/mcgill/ecse321/tms/MainActivity.java @@ -76,6 +76,10 @@ public class MainActivity extends AppCompatActivity implements OnMapReadyCallbac // Marker list private HashMap markers = new HashMap(); + /** + * Method describings procedures on creation of Activity + * @param savedInstanceState + */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -92,6 +96,7 @@ protected void onCreate(Bundle savedInstanceState) { // Set-up Navigation Drawer mDrawerLayout = findViewById(R.id.drawer_layout); + // Define Navigation Drawer and Actions NavigationView navigationView = findViewById(R.id.nav_view); ((TextView) navigationView.getHeaderView(0).findViewById(R.id.header_text)).setText("Welcome, " + username + "!"); navigationView.setNavigationItemSelectedListener( @@ -130,10 +135,16 @@ public boolean onNavigationItemSelected(MenuItem menuItem) { } + /** + * Method describing actions followed when Google Maps Fragment is Ready + * @param googleMap + */ @Override public void onMapReady(final GoogleMap googleMap) { myMap = googleMap; generateMarkers(); + + //Zoom to Montreal LatLng montreal = new LatLng(45.50202067177077, -73.5668932646513); googleMap.moveCamera(CameraUpdateFactory.newLatLng(montreal)); @@ -167,6 +178,9 @@ public void onMapClick(LatLng point) { } + /** + * Set the Spinners for the Plant Tree Dialog Box Form + */ private void setSpinners() { // Add adapters to spinner lists and refresh spinner content Spinner speciesSpinner = (Spinner) myDialog.findViewById(R.id.species_spinner); @@ -195,6 +209,12 @@ private void setSpinners() { } + /** + * Method describing HTTP Request Procedures for Planting a Tree + * @param v Source View (to Reference view Elements) + * @param longt (Longitude of Tap Location) + * @param lat (Latitude of Tap Location) + */ public void plantTree(View v, double longt, double lat) { final double latitude = lat; @@ -294,6 +314,53 @@ public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSO } + /** + * Method defining procedure for issuing an HTTP Request to CutDown Trees + * @param v Source View (to Access View Elements) + * @param m Marker Tapped + */ + public void cutDownTree(View v, Marker m) { + + int id = 0; + try { + id = markers.get(m).getInt("id"); + } catch (JSONException e){ + return; + } + + RequestParams rp = new RequestParams(); + + rp.add("treeIDs", Integer.toString(id)); + rp.add("status", "cut"); + + HttpUtils.post("updateTrees/", rp, new JsonHttpResponseHandler() { + + @Override + public void onSuccess(int statusCode, Header[] headers, JSONObject response) { + refreshErrorMessage(); + } + + ; + + @Override + public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject + errorResponse) { + try { + error += errorResponse.get("message").toString(); + } catch (JSONException e) { + //error += e.getMessage(); + } + refreshErrorMessage(); + } + }); + + } + + /** + * Defines Navigation Drawer Reaction when Home Button is Tapped + * @param item Item Tapped (checks if this is the Home Button) + * @return + */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { @@ -304,7 +371,9 @@ public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } - //TODO set icons based on status + /** + * (Re)Generate Tree Icons on Map + */ private void generateMarkers() { HttpUtils.get("trees", new RequestParams(), new JsonHttpResponseHandler() { @@ -359,12 +428,19 @@ public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSO } + /** + * Utility Function to Regenerate Markers for Refresh Button + * @param menuItem MenuItem Tapped + */ public void generateMarkers(MenuItem menuItem) { generateMarkers(); } + /** + * Method to display Error Message in Plant Tree Dialog Box Form + */ private void refreshErrorMessage() { -// // set the error message + // set the error message TextView tvError = (TextView) myDialog.findViewById(R.id.error_message_dialog); tvError.setText(error); @@ -376,6 +452,11 @@ private void refreshErrorMessage() { } + /** + * Inflate the Menu with the options defined in the XML file + * @param menu Menu to Inflate + * @return Boolean indicating Success + */ @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. @@ -383,6 +464,11 @@ public boolean onCreateOptionsMenu(Menu menu) { return true; } + /** + * Call Plant Tree Dialog Box on Tap of Map + * @param longt Longitude of Tap + * @param lat Latitude of Tap + */ private void callRegisterDialog(double longt, double lat) { final double latitude = lat; final double longitude = longt; @@ -414,7 +500,11 @@ public void onClick(View v) { } - //TODO + /** + * Call Tree Info Dialog Box on long tap of Map Info Box + * @param m Marker associated to Info Box + * @throws JSONException thrown by trying to parse data from HTTP JSON REsponse + */ private void callTreeInfoDialog(Marker m) throws JSONException { JSONObject obj = markers.get(m); double x = obj.getJSONObject("location").getDouble("x"); @@ -469,43 +559,10 @@ public void onClick(View v) { } - public void cutDownTree(View v, Marker m) { - - int id = 0; - try { - id = markers.get(m).getInt("id"); - } catch (JSONException e){ - return; - } - - RequestParams rp = new RequestParams(); - - rp.add("treeIDs", Integer.toString(id)); - rp.add("status", "cut"); - - HttpUtils.post("updateTrees/", rp, new JsonHttpResponseHandler() { - - @Override - public void onSuccess(int statusCode, Header[] headers, JSONObject response) { - refreshErrorMessage(); - } - - ; - - @Override - public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject - errorResponse) { - try { - error += errorResponse.get("message").toString(); - } catch (JSONException e) { - //error += e.getMessage(); - } - refreshErrorMessage(); - } - }); - - } - + /** + * Function to show Date Picker Fragment + * @param v Source View (To Access Elements) + */ public void showDatePickerDialog(View v) { TextView tf = (TextView) v; Bundle args = getDateFromLabel(tf.getText().toString()); @@ -517,11 +574,23 @@ public void showDatePickerDialog(View v) { } + /** + * Utility Function to set Date on Fragment + * @param id id of Date Element + * @param d Day + * @param m Month + * @param y Year + */ public void setDate(int id, int d, int m, int y) { TextView tv = (TextView) myDialog.findViewById(id); tv.setText(String.format("%02d-%02d-%04d", d, m + 1, y)); } + /** + * Utility Function to Read Date from Date Label + * @param text + * @return Bundle containing Date Information + */ private Bundle getDateFromLabel(String text) { Bundle rtn = new Bundle(); String comps[] = text.toString().split("-"); @@ -541,7 +610,10 @@ private Bundle getDateFromLabel(String text) { return rtn; } - + /** + * Utility Function to Refresh Drop Down Lists on Plant Tree Form + * @param view Source View to access View Elements + */ public void refreshLists(View view) { refreshList(speciesAdapter, speciesNames, "species"); refreshList(municipalityAdapter, municipalityNames, "municipalities"); @@ -549,6 +621,12 @@ public void refreshLists(View view) { refreshListLandUse(landuseAdapter, landuseNames, "landuse"); } + /** + * Hard Code Tree Status Locations + * @param adapter Adapter to add list to Drop Down + * @param names List of Names to be added to Drop Down + * @param restFunctionName Rest Function name to match format of other refresh functions + */ private void refreshListStatus(final ArrayAdapter adapter, final List names, String restFunctionName) { names.clear(); names.add("Please select..."); @@ -559,6 +637,12 @@ private void refreshListStatus(final ArrayAdapter adapter, final List adapter, final List names, String restFunctionName) { names.clear(); names.add("Please select..."); @@ -591,6 +675,12 @@ public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSO }); } + /** + * Hard Code Land Use Refresh Lists + * @param adapter Adapter to add list to Drop Down + * @param names List of Names to be added to Drop Down + * @param restFunctionName Name of rest functions to get data + */ private void refreshListLandUse(final ArrayAdapter adapter, final List names, String restFunctionName) { names.clear(); names.add("Please select..."); diff --git a/TMS-Android/app/src/main/res/layout/plant_dialog.xml b/TMS-Android/app/src/main/res/layout/plant_dialog.xml index 26b213b0..5e0cc76e 100644 --- a/TMS-Android/app/src/main/res/layout/plant_dialog.xml +++ b/TMS-Android/app/src/main/res/layout/plant_dialog.xml @@ -155,7 +155,7 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="5dip" - android:hint="@string/edit_height" /> + android:hint="@string/description" /> diff --git a/TMS-Android/app/src/main/res/values/strings.xml b/TMS-Android/app/src/main/res/values/strings.xml index 4dc1ac0d..9d0fd2ae 100644 --- a/TMS-Android/app/src/main/res/values/strings.xml +++ b/TMS-Android/app/src/main/res/values/strings.xml @@ -39,4 +39,5 @@ Refresh Map Refresh Info Cut Down Tree + Description diff --git a/TMS-Spring/Procfile b/TMS-Spring/Procfile new file mode 100644 index 00000000..2ae2d138 --- /dev/null +++ b/TMS-Spring/Procfile @@ -0,0 +1 @@ +web: java -jar TMS-Spring/build/libs/TMS-Spring-0.0.1-SNAPSHOT.jar diff --git a/TMS-Spring/build.gradle b/TMS-Spring/build.gradle index f0f47e3f..a67fc478 100644 --- a/TMS-Spring/build.gradle +++ b/TMS-Spring/build.gradle @@ -13,18 +13,11 @@ buildscript { apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' -apply plugin: 'war' group = 'ca.mcgill.ecse321' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 - -war { - baseName = 'eventregistration' - version = '0.0.1-SNAPSHOT' -} - repositories { mavenCentral() } diff --git a/TMS-Spring/settings.gradle b/TMS-Spring/settings.gradle new file mode 100644 index 00000000..f4fbd862 --- /dev/null +++ b/TMS-Spring/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'TMS-Spring' diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/TMSSpringApplication.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/TMSSpringApplication.java index 398fff1f..ee62bb13 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/TMSSpringApplication.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/TMSSpringApplication.java @@ -35,13 +35,11 @@ public ModelMapper modelMapper() { return modelMapper; } - // TODO add a Bean to provide a registration manager @Bean public TreePLE treeMan() { - return PersistenceXStream.initializeModelManager(PersistenceXStream.getFilename()); + return PersistenceXStream.initializeModelManager(PersistenceXStream.getFILENAME()); } - // TODO add client configuration @Autowired private AndroidProperties androidProperties; diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/controller/TMSRestController.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/controller/TMSRestController.java index fc26fabf..fd1c73e1 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/controller/TMSRestController.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/controller/TMSRestController.java @@ -27,7 +27,6 @@ import ca.mcgill.ecse321.TMS.model.Local; import ca.mcgill.ecse321.TMS.model.LocationType; -import ca.mcgill.ecse321.TMS.model.LocationType.LandUseType; import ca.mcgill.ecse321.TMS.model.Municipality; import ca.mcgill.ecse321.TMS.model.Specialist; import ca.mcgill.ecse321.TMS.model.Species; @@ -37,9 +36,7 @@ import ca.mcgill.ecse321.TMS.model.TreeStatus; -import ca.mcgill.ecse321.TMS.model.TreeStatus.Status; import ca.mcgill.ecse321.TMS.model.User; -import ca.mcgill.ecse321.TMS.model.User.UserType; import ca.mcgill.ecse321.TMS.model.UserRole; @@ -64,78 +61,24 @@ public String index() { return "TreePLE application root. Use the REST API to manage trees.\n"; } - /////////////// TO DO LIST /////////////// - // Create municipality, if time select municipalities in specific area - // How can we pass coordinates? - - //tree id are all 1 for me, something with persistence - //deleting a tree - //update a tree, i.e. information or mark status change - //if local then can only mark his tree as cut down - // list of tree, change of status, user = change of status - // forecast - //what are the measurements in? cm m ft - //change status to enum in tree - - /////////////// HTTP REQUESTS /////////////// // TREES @PostMapping(value = {"/trees/"}) public TreeDto createTree( - @RequestParam double height, - @RequestParam double diameter, - @RequestParam Date datePlanted, - @RequestParam String x, - @RequestParam String y, - @RequestParam String description, - @RequestParam String location, - @RequestParam String status, - @RequestParam String species, - @RequestParam String municipality, + @RequestParam double height, @RequestParam double diameter, @RequestParam Date datePlanted, + @RequestParam String x, @RequestParam String y, @RequestParam String description, @RequestParam String location, + @RequestParam String status, @RequestParam String species, @RequestParam String municipality, @RequestParam String loggedUser) throws InvalidInputException { - - Species aSpecies = service.getSpeciesByName(species); if (aSpecies == null) throw new InvalidInputException("Could not find species"); Municipality aMunicipality = service.getMunicipalityByName(municipality); if (aMunicipality == null) throw new InvalidInputException("Could not find municipality"); - - TreeStatus aStatus = new TreeStatus(treePLE); - switch(status.toLowerCase()) { - case "healthy": - aStatus.setStatus(Status.Healthy); - break; - case "diseased": - aStatus.setStatus(Status.Diseased); - break; - case "cut": - aStatus.setStatus(Status.Cut); - break; - case "tobecut": - aStatus.setStatus(Status.ToBeCut); - break; - default: - treePLE.removeStatus(aStatus); - throw new InvalidInputException("Must select status"); - } - LocationType aLocationType = new LocationType(); - switch(location.toLowerCase()) { - case "residential": - aLocationType.setLandUseType(LandUseType.Residential); - break; - case "institutional": - aLocationType.setLandUseType(LandUseType.Institutional); - break; - case "municipal": - aLocationType.setLandUseType(LandUseType.Municipal); - break; - default: - throw new InvalidInputException("Must select location type"); - } - User user=service.getUserByName(loggedUser); - Tree tree = service.createTree(height, diameter, datePlanted, aStatus, aSpecies, user, aMunicipality, Double.parseDouble(x), Double.parseDouble(y), description, aLocationType); - System.out.println(tree.getId()); + TreeStatus aStatus = service.createStatus(status); + LocationType aLocationType = service.createLocationType(location); + User user = service.getUserByName(loggedUser); + Tree tree = service.createTree(height, diameter, datePlanted, aStatus, aSpecies, + user, aMunicipality, Double.parseDouble(x), Double.parseDouble(y), description, aLocationType); return convertToDto(tree); } @@ -143,28 +86,12 @@ public TreeDto createTree( public List updateTree( @RequestParam List treeIDs, @RequestParam String status) throws InvalidInputException{ - System.out.println("in controller "+treeIDs); - TreeStatus aStatus=new TreeStatus(treePLE); - switch(status.toLowerCase()) { - case "healthy": - aStatus.setStatus(Status.Healthy); - break; - case "diseased": - aStatus.setStatus(Status.Diseased); - break; - case "cut": - aStatus.setStatus(Status.Cut); - break; - default: - treePLE.removeStatus(aStatus); - throw new InvalidInputException("Must select status"); - } + TreeStatus aStatus = service.createStatus(status); List trees = service.updateTrees(treeIDs, aStatus.getStatus()); - List treeDtos=new ArrayList(); - for(Tree tree: trees) { + List treeDtos = new ArrayList(); + for(Tree tree: trees) treeDtos.add(convertToDto(tree)); - } - return treeDtos; + return treeDtos; } @GetMapping(value = { "/trees", "/trees/" }) @@ -202,7 +129,7 @@ public List findAllSpecies() { return species; } - // TREE STATUS + // STATUS @GetMapping(value = {"/status", "/status/"}) public List getAllTreeStatuses() { return service.getTreeStatuses(); @@ -236,9 +163,8 @@ public UserDto login( @GetMapping(value = { "/municipalities", "/municipalities/" }) public List findAllMunicipalities() { List municipalities = Lists.newArrayList(); - for (Municipality m : service.findAllMunicipalities()) { + for (Municipality m : service.findAllMunicipalities()) municipalities.add(convertToDto(m)); - } return municipalities; } @@ -250,7 +176,6 @@ public MunicipalityDto createMunicipality( } - // FORECASTS @GetMapping(value = {"/forecasts/"}) public int createCarbonForecast( @@ -306,12 +231,10 @@ private UserDto convertToDto(User user) { ArrayList roles = new ArrayList(); UserDto usD = modelMapper.map(user, UserDto.class); for (UserRole role : user.getUserRoles()) { - if (role instanceof Local) { + if (role instanceof Local) roles.add("local"); - } - if (role instanceof Specialist) { + if (role instanceof Specialist) roles.add("specialist"); - } } usD.setRoles(roles); return usD; diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/LocationTypeDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/LocationTypeDto.java index 1311704a..5e718c5c 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/LocationTypeDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/LocationTypeDto.java @@ -1,7 +1,4 @@ package ca.mcgill.ecse321.TMS.dto; - -import java.util.List; - import ca.mcgill.ecse321.TMS.model.LocationType.LandUseType; public class LocationTypeDto { diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/MunicipalityDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/MunicipalityDto.java index 992d26e5..a1abefe1 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/MunicipalityDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/MunicipalityDto.java @@ -1,18 +1,10 @@ package ca.mcgill.ecse321.TMS.dto; -import java.util.ArrayList; -import java.util.List; - -import ca.mcgill.ecse321.TMS.model.TreeLocation; - public class MunicipalityDto { - //not sure about the private part for now private String idNumber; private String name; - - public MunicipalityDto() { } @@ -38,5 +30,4 @@ public void setIdNumber(String idNumber) { this.idNumber = idNumber; } - } \ No newline at end of file diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/ParkDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/ParkDto.java index 9c253139..e60be0c4 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/ParkDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/ParkDto.java @@ -1,17 +1,13 @@ package ca.mcgill.ecse321.TMS.dto; -import java.util.List; - import ca.mcgill.ecse321.TMS.model.LocationType.LandUseType; public class ParkDto extends LocationTypeDto{ - private int parkCode; private String parkName; public ParkDto() { - } public ParkDto(int parkCode, String parkName, LandUseType landUseType) { @@ -36,5 +32,4 @@ public void setParkName(String parkName) { this.parkName = parkName; } - } diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/SpeciesDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/SpeciesDto.java index 7e53a578..001f42ed 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/SpeciesDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/SpeciesDto.java @@ -1,10 +1,5 @@ package ca.mcgill.ecse321.TMS.dto; -import java.util.ArrayList; -import java.util.List; - -import ca.mcgill.ecse321.TMS.model.Tree; - public class SpeciesDto { String name; @@ -12,7 +7,6 @@ public class SpeciesDto { int oxygenProduction; public SpeciesDto() { - } public SpeciesDto(String name, int carbonConsumption, int oxygenProduction) { diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeDto.java index e05db86c..d62ad8c9 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeDto.java @@ -2,9 +2,6 @@ import java.sql.Date; -import ca.mcgill.ecse321.TMS.model.Municipality; -import ca.mcgill.ecse321.TMS.model.User; - public class TreeDto { private int id; @@ -20,12 +17,9 @@ public class TreeDto { private MunicipalityDto municipality; - public TreeDto() { - } - public TreeDto(int height, int diameter, int id, Date datePlanted, Date dateAdded, TreeLocationDto location, TreeStatusDto status, SpeciesDto species, UserDto local, MunicipalityDto municipality) { @@ -41,7 +35,6 @@ public TreeDto(int height, int diameter, int id, Date datePlanted, Date dateAdde this.municipality = municipality; } - public int getHeight() { return height; } diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeLocationDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeLocationDto.java index bb92e8be..0fe09ca5 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeLocationDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeLocationDto.java @@ -1,24 +1,15 @@ package ca.mcgill.ecse321.TMS.dto; - -import ca.mcgill.ecse321.TMS.model.LocationType; -import ca.mcgill.ecse321.TMS.model.Municipality; import ca.mcgill.ecse321.TMS.model.Tree; public class TreeLocationDto { - private double x; private double y; private String description; - - //private Tree tree; private LocationTypeDto locationType; - - public TreeLocationDto() { - } public TreeLocationDto(double x, double y, String description, Tree tree, LocationTypeDto locationType) { @@ -27,7 +18,6 @@ public TreeLocationDto(double x, double y, String description, Tree tree, Locati this.description = description; this.locationType = locationType; } - public double getX() { return x; @@ -61,5 +51,4 @@ public void setLocationType(LocationTypeDto locationType) { this.locationType = locationType; } - } diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeStatusDto.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeStatusDto.java index a1a6f72c..db3918ff 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeStatusDto.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/dto/TreeStatusDto.java @@ -1,18 +1,12 @@ package ca.mcgill.ecse321.TMS.dto; -import java.sql.Date; -import java.util.List; - -import ca.mcgill.ecse321.TMS.model.Tree; import ca.mcgill.ecse321.TMS.model.TreeStatus.Status; public class TreeStatusDto { - private Status status; public TreeStatusDto() { - } public TreeStatusDto(Status status) { @@ -27,5 +21,4 @@ public void setStatus(Status status) { this.status = status; } - } diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/model/Park.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/model/Park.java index 85bb9d6e..c75d0238 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/model/Park.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/model/Park.java @@ -2,7 +2,7 @@ /*This code was generated using the UMPLE 1.27.0.3728.d139ed893 modeling language!*/ package ca.mcgill.ecse321.TMS.model; -import java.util.*; + // line 61 "../../../../../TreePLE.ump" public class Park extends LocationType diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/persistence/PersistenceXStream.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/persistence/PersistenceXStream.java index f6140223..9f847f54 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/persistence/PersistenceXStream.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/persistence/PersistenceXStream.java @@ -30,13 +30,13 @@ public class PersistenceXStream { private static XStream xstream = new XStream(); - private static String filename = "/TreePLE/data.xml"; + private static String FILENAME = "data.xml"; // TODO create the RegistrationManager instance here (replace the void return value as well) public static TreePLE initializeModelManager(String fileName) { // Initialization for persistence TreePLE tp; - setFilename(fileName); + setFILENAME(fileName); setAlias("user", User.class); setAlias("local", Local.class); setAlias("municipality", Municipality.class); @@ -78,7 +78,7 @@ public static boolean saveToXMLwithXStream(Object obj) { String xml = xstream.toXML(obj); // save our xml file try { - FileWriter writer = new FileWriter(filename); + FileWriter writer = new FileWriter(FILENAME); writer.write(xml); writer.close(); return true; @@ -91,7 +91,7 @@ public static boolean saveToXMLwithXStream(Object obj) { public static Object loadFromXMLwithXStream() { xstream.setMode(XStream.ID_REFERENCES); try { - FileReader fileReader = new FileReader(filename); // load our xml file + FileReader fileReader = new FileReader(FILENAME); // load our xml file return xstream.fromXML(fileReader); } catch (IOException e) { @@ -104,16 +104,16 @@ public static void setAlias(String xmlTagName, Class className) { xstream.alias(xmlTagName, className); } - public static void setFilename(String fn) { - filename = fn; + public static void setFILENAME(String fn) { + FILENAME = fn; } - public static String getFilename() { - return filename; + public static String getFILENAME() { + return FILENAME; } public static void clearData() { - File myFoo = new File(filename); + File myFoo = new File(FILENAME); FileWriter fooWriter; try { fooWriter = new FileWriter(myFoo, false); diff --git a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/service/TMSService.java b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/service/TMSService.java index 02e6272f..1363238c 100644 --- a/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/service/TMSService.java +++ b/TMS-Spring/src/main/java/ca/mcgill/ecse321/TMS/service/TMSService.java @@ -1,6 +1,5 @@ package ca.mcgill.ecse321.TMS.service; -import java.io.File; import java.sql.Date; import java.util.ArrayList; import java.util.Calendar; @@ -18,6 +17,7 @@ import ca.mcgill.ecse321.TMS.model.TreePLE; import ca.mcgill.ecse321.TMS.model.TreeStatus; import ca.mcgill.ecse321.TMS.model.User; +import ca.mcgill.ecse321.TMS.model.LocationType.LandUseType; import ca.mcgill.ecse321.TMS.model.User.UserType; import ca.mcgill.ecse321.TMS.model.TreeStatus.Status; import ca.mcgill.ecse321.TMS.persistence.PersistenceXStream; @@ -57,6 +57,7 @@ public Tree createTree(double aHeight, double aDiameter, return tree; } + //removing a tree record from the system public Tree removeTree(Tree aTree) { aTree.delete(); PersistenceXStream.saveToXMLwithXStream(tp); @@ -67,6 +68,7 @@ public List findAllTrees(){ return tp.getTrees(); } + //access list of trees by their id numbers public List findTreesById(Integer[] treeIds) throws InvalidInputException{ List trees = new ArrayList(); boolean wasAdded = false; @@ -83,11 +85,89 @@ public List findTreesById(Integer[] treeIds) throws InvalidInputException{ return trees; } - public void updateTree(Tree tree, int i, int j, Date newDatePlanted, TreeStatus newStatus, Species newSpecies, - User newUser, Municipality newMunicipality, int k, int l, String string, LocationType newLocationType) throws InvalidInputException{ - // TODO Auto-generated method stub + //update list of trees with a specific tree status + public List updateTrees(List treeIDs, Status status) throws InvalidInputException{ + List trees=tp.getTrees(); + for(int id: treeIDs) + for(Tree tree: trees) + if(id==tree.getId()) { + TreeStatus aTreeStatus= tree.getTreeStatus(); + aTreeStatus.setStatus(status); + } + return trees; } + //update all attributes for a single tree record + public void updateTree(Tree tree, int newHeight, int newDiameter, Date newDatePlanted, TreeStatus newStatus, Species newSpecies, + User newUser, Municipality newMunicipality, int newX, int newY, String locationDescription, LocationType newLocationType) throws InvalidInputException{ + Calendar c1 = Calendar.getInstance(); + Date currentDate = new Date(c1.getTimeInMillis()); + if( (tree==null) || (newHeight<0) || (newDiameter<0) || (newDatePlanted.after(currentDate)) || + (newDatePlanted==null) || (newStatus==null) || (newSpecies==null) || (newUser==null) || + (newMunicipality==null) || (newX<0) || (newY<0) || (locationDescription==null) || (newLocationType==null)){ + throw new InvalidInputException("Tree needs to be selected to be updated! Cannot pass negative integer! Cannot plant tree in the future! Status needs to be selected for registration! Species needs to be selected for registration! User needs to be logged in for registration! Municipality needs to be selected for registration!"); + } + TreePLE ple=tree.getTreePLE(); + if( (ple.indexOfStatus(newStatus)==-1) || (ple.indexOfSpecies(newSpecies)==-1) || (ple.indexOfUser(newUser)==-1) || (ple.indexOfMunicipality(newMunicipality)==-1) || ( (ple.indexOfStreet((Street)newLocationType)==-1) && (ple.indexOfPark((Park)newLocationType)==-1) ) ){ + throw new InvalidInputException("Status must exist! Species must exist! User must be registered! Municipality must exist! Street must exist!"); + } + tree.setTreeStatus(newStatus); + tree.setSpecies(newSpecies); + tree.setLocal(newUser); + tree.setMunicipality(newMunicipality); + tree.setDatePlanted(newDatePlanted); + tree.setHeight(newHeight); + tree.setDiameter(newDiameter); + if(!tree.hasTreeLocation()) { + TreeLocation newTreeLocation= new TreeLocation(newX, newY, locationDescription, tree, newLocationType); + tree.setTreeLocation(newTreeLocation); + } + else { + TreeLocation newTreeLocation=tree.getTreeLocation(); + newTreeLocation.setX(newX); + newTreeLocation.setY(newY); + newTreeLocation.setDescription(locationDescription); + } + + } + + public Tree markDiseased(Tree tree) throws InvalidInputException{ + if(tree==null) { + throw new InvalidInputException("Tree needs to be selected to be marked as diseased."); + } + if(tree.getTreeStatus().getStatus()== Status.Diseased) { + throw new InvalidInputException("Tree was already diseased!"); + } + tree.getTreeStatus().setStatus(Status.Diseased); + return tree; + } + + public Tree markToBeCut(Tree tree) throws InvalidInputException { + if(tree==null) { + throw new InvalidInputException("Tree needs to be selected to be mark as to be cut."); + } + if(tree.getTreeStatus().getStatus()==Status.Cut) { + throw new InvalidInputException("Tree was already cut down!"); + } + tree.getTreeStatus().setStatus(Status.ToBeCut); + return tree; + } + + public Tree getTreeById(int aId) { + List trees = tp.getTrees(); + for(Tree tree : trees) + if(tree.getId() == aId) + return tree; + return null; + } + + public List getTreesForMunicipality(Municipality m) { + return m.getTrees(); + } + + public List getTreesForSpecies(Species s) { + return s.getTrees(); + } ///////////////////// SPECIES ///////////////////// public List findAllSpecies() { @@ -108,9 +188,8 @@ public Species createSpecies(String name, int carbonConsumption, int oxygenProdu public Species getSpeciesByName(String name) { List species = tp.getSpecies(); - for (Species sp: species) { + for (Species sp: species) if (sp.getName().equals(name)) return sp; - } return null; } @@ -124,7 +203,7 @@ public Municipality createMunicipality(String name, int id) throws InvalidInputE if((name==null)|| (name.trim().equals("")) ){ throw new InvalidInputException(" Please enter a municiplaity name"); } - List muniList=tp.getMunicipalities(); + List muniList = tp.getMunicipalities(); for(Municipality muni: muniList) { if(id==muni.getIdNumber()) { throw new InvalidInputException(" ID already exists. Try another one please."); @@ -153,8 +232,48 @@ public List getTreeStatuses() { } return st; } - + public TreeStatus createStatus(String status) throws InvalidInputException { + TreeStatus aStatus = new TreeStatus(tp); + switch(status.toLowerCase()) { + case "healthy": + aStatus.setStatus(Status.Healthy); + break; + case "diseased": + aStatus.setStatus(Status.Diseased); + break; + case "cut": + aStatus.setStatus(Status.Cut); + break; + case "tobecut": + aStatus.setStatus(Status.ToBeCut); + break; + default: + tp.removeStatus(aStatus); + throw new InvalidInputException("Must select status"); + } + return aStatus; + } + + ///////////////////// LOCATION TYPE ///////////////////// + public LocationType createLocationType(String location) throws InvalidInputException { + LocationType aLocationType = new LocationType(); + switch(location.toLowerCase()) { + case "residential": + aLocationType.setLandUseType(LandUseType.Residential); + break; + case "institutional": + aLocationType.setLandUseType(LandUseType.Institutional); + break; + case "municipal": + aLocationType.setLandUseType(LandUseType.Municipal); + break; + default: + throw new InvalidInputException("Must select location type"); + } + return aLocationType; + } + ///////////////////// ERROR HANDLING ///////////////////// public String checkTreeInputException(double aHeight, double aDiameter, Date aDatePlanted, TreeStatus aTreeStatus, Species aSpecies, User aLocal, Municipality aMunicipality, double x, double y, @@ -232,20 +351,20 @@ public String checkTreeInputException(double aHeight, double aDiameter, Date aDa return description; } + ///////////////////// SUSTAINABILITY ///////////////////// public int calcOxygenProd(List treeList) throws InvalidInputException { int total=0; - if(treeList.size()==0) { + if(treeList.size()==0) throw new InvalidInputException("Please enter a list of trees"); - } for(Tree tree: treeList) { - if(tree.getTreeStatus().getStatus()!=Status.Cut) { - if(tree.getTreeStatus().getStatus()==Status.Diseased) { - int index=tree.getSpecies().getOxygenProduction(); - total+=index/2; + if(tree.getTreeStatus().getStatus() != Status.Cut) { + if(tree.getTreeStatus().getStatus() == Status.Diseased) { + int index = tree.getSpecies().getOxygenProduction(); + total += index/2; } else { - int index=tree.getSpecies().getOxygenProduction(); - total+=index; + int index = tree.getSpecies().getOxygenProduction(); + total += index; } } } @@ -254,96 +373,105 @@ public int calcOxygenProd(List treeList) throws InvalidInputException { public int calcCarbonConsump(List treeList) throws InvalidInputException { int total=0; - if(treeList.size()==0) { + if(treeList.size()==0) throw new InvalidInputException("Please enter a list of trees"); - } for(Tree tree: treeList) { - if(tree.getTreeStatus().getStatus()!=Status.Cut) { - if(tree.getTreeStatus().getStatus()==Status.Diseased) { - int index=tree.getSpecies().getCarbonConsumption(); - total+=index/2; + if(tree.getTreeStatus().getStatus() != Status.Cut) { + if(tree.getTreeStatus().getStatus() == Status.Diseased) { + int index = tree.getSpecies().getCarbonConsumption(); + total += index/2; } else { - int index=tree.getSpecies().getCarbonConsumption(); - total+=index; + int index = tree.getSpecies().getCarbonConsumption(); + total += index; } } } return total; } + public int bioIndexCalculator(List treeList) throws InvalidInputException{ + int index = 0; + if(treeList == null) + throw new InvalidInputException("List cannot be null"); + if(treeList.size()==0) + throw new InvalidInputException("List cannot be empty"); + for(Tree tree: treeList) { + if(tree == null) + throw new InvalidInputException("The list contains a null entry"); + if(tree.getTreeStatus().getStatus()!= Status.Cut) { + Species newSpecies = tree.getSpecies(); + Boolean marker = true; + for(int i=0; treeList.get(i) != tree; i++) + if(treeList.get(i).getSpecies() == newSpecies) marker=false; + if(marker) index++; + } + } + return index; + } + + ///////////////////// FORECASTING ///////////////////// + + //returns forecast percentage figure public int carbonForecast(List treeList, String strStatus) throws InvalidInputException{ - if(strStatus==null) { + if(strStatus==null) throw new InvalidInputException("String cannot be null"); - } - if(treeList == null) { + if(treeList == null) throw new InvalidInputException("List cannot be null"); - } - if(treeList.size()==0) { + if(treeList.size()==0) throw new InvalidInputException("Please enter a list of trees"); - } - double forecast=0; - double predicted=0; - double current=0; + double forecast=0, predicted = 0, current = 0; + Status status; - if("diseased".equals(strStatus.toLowerCase())) {status=Status.Diseased;} - else if("cut".equals(strStatus.toLowerCase())) {status=Status.Cut;} - else if("healthy".equals(strStatus.toLowerCase())) {status=Status.Healthy;} - else if("tobecut".equals(strStatus.toLowerCase())) {status=Status.Healthy;} + if("diseased".equals(strStatus.toLowerCase())) status=Status.Diseased; + else if("cut".equals(strStatus.toLowerCase())) status=Status.Cut; + else if("healthy".equals(strStatus.toLowerCase())) status=Status.Healthy; + else if("tobecut".equals(strStatus.toLowerCase())) status=Status.Healthy; else { throw new InvalidInputException("Please enter a valid tree status"); } for(Tree tree: treeList) { - if(tree==null) { + if(tree == null) throw new InvalidInputException("Cannot have null entry for tree in list"); - } if(status!=Status.Cut) { - if(status==Status.Diseased) { - double index=tree.getSpecies().getCarbonConsumption(); - predicted+=index/2; + if(status == Status.Diseased) { + double index = tree.getSpecies().getCarbonConsumption(); + predicted += index/2; } else { - double index=tree.getSpecies().getCarbonConsumption(); - predicted+=index; + double index = tree.getSpecies().getCarbonConsumption(); + predicted += index; } } } - current=calcCarbonConsump(treeList); - System.out.println("current is "+current); - System.out.println("predicted is "+predicted); - forecast=((predicted-current)/current)*100; - - + current = calcCarbonConsump(treeList); + forecast = ((predicted-current)/current)*100; return (int)forecast; } + //returns forecast percentage figure public int oxygenForecast(List treeList, String strStatus) throws InvalidInputException{ - if(strStatus==null) { + if(strStatus==null) throw new InvalidInputException("String cannot be null"); - } - if(treeList == null) { + if(treeList == null) throw new InvalidInputException("List cannot be null"); - } - if(treeList.size()==0) { + if(treeList.size()==0) throw new InvalidInputException("Please enter a list of trees"); - } - double forecast=0; - double predicted=0; - double current=0; + double forecast=0, predicted = 0, current = 0; + Status status; - if("Diseased".equals(strStatus)) {status=Status.Diseased;} - else if("Cut".equals(strStatus)) {status=Status.Cut;} - else if("Healthy".equals(strStatus)) {status=Status.Healthy;} - else if("ToBeCut".equals(strStatus)) {status=Status.Healthy;} - else { + if("Diseased".equals(strStatus)) status = Status.Diseased; + else if("Cut".equals(strStatus)) status = Status.Cut; + else if("Healthy".equals(strStatus)) status = Status.Healthy; + else if("ToBeCut".equals(strStatus)) status = Status.Healthy; + else throw new InvalidInputException("Please enter a valid tree status"); - } + for(Tree tree: treeList) { - if(tree==null) { + if(tree==null) throw new InvalidInputException("Cannot have null entry for tree in list"); - } if(status!=Status.Cut) { if(status==Status.Diseased) { double index=tree.getSpecies().getOxygenProduction(); @@ -355,178 +483,78 @@ public int oxygenForecast(List treeList, String strStatus) throws InvalidI } } } - current=calcOxygenProd(treeList); - forecast=((predicted-current)/current)*100; - + current = calcOxygenProd(treeList); + forecast = ((predicted-current)/current)*100; return (int)forecast; } - public int bioIndexCalculator(List treeList) throws InvalidInputException{ - int index = 0; - List speciesList= new ArrayList(); - if(treeList == null) { - throw new InvalidInputException("List cannot be null"); - } - if(treeList.size()==0) { - throw new InvalidInputException("List cannot be empty"); - } - for(Tree tree: treeList) { - if(tree == null) { - throw new InvalidInputException("The list contains a null entry"); - } - if(tree.getTreeStatus().getStatus()!= Status.Cut) { - Species newSpecies= tree.getSpecies(); - Boolean marker=true; - for(int i=0; treeList.get(i)!=tree;i++) { - if(treeList.get(i).getSpecies()==newSpecies) {marker=false;} - } - if(marker) {index++;} - - } - } - - return index; - } - + //returns change in species biodiversity for a list of trees public int bioForecast(List treeList, String status) throws InvalidInputException{ int forecast = 0; - if(treeList == null) { + if(treeList == null) throw new InvalidInputException("List cannot be null"); - } - if(treeList.size()==0) { + if(treeList.size()==0) throw new InvalidInputException("List cannot be empty"); - } - for(Tree tree: treeList) { - if(tree == null) { + for(Tree tree: treeList) + if(tree == null) throw new InvalidInputException("The list contains a null entry"); - } - } - if(status.equals("Cut")) { + if(status.equals("Cut")) forecast=0-bioIndexCalculator(treeList); - } else { for(Tree tree: treeList) { - if(tree == null) { + if(tree == null) throw new InvalidInputException("The list contains a null entry"); - } if(tree.getTreeStatus().getStatus()== Status.Cut) { Species newSpecies= tree.getSpecies(); Boolean marker=true; - for(int i=0; treeList.get(i)!=tree;i++) { + for(int i=0; treeList.get(i)!=tree;i++) if(treeList.get(i).getSpecies()==newSpecies) {marker=false;} - } - if(marker) {forecast++;} - + if(marker) forecast++; } } } - return forecast; } - public Tree getTreeById(int aId) { - List trees = tp.getTrees(); - for(Tree tree : trees) { - if(tree.getId() == aId) { - return tree; - } - } - return null; - } - - - - - public List getTreesForMunicipality(Municipality m) { - return m.getTrees(); - } - - public List getTreesForSpecies(Species s) { - return s.getTrees(); - } - - public Tree markDiseased(Tree tree) throws InvalidInputException{ - // TODO implement method - return null; - } - - public Tree markToBeCut(Tree tree) throws InvalidInputException { - // TODO implement method - return null; - } - - public int calcChangeOxygenProd(List treeList, String string) throws InvalidInputException { - // TODO Auto-generated method stub - return 0; - } - - public int calcChangeCarbonConsump(List treeList, String string) throws InvalidInputException { - // TODO Auto-generated method stub - return 0; - } - + ///////////////////// USER LOGIN and REGISTRATION ///////////////////// + //method logs the user in and returns his record to the controller public User login(String username, String password) throws InvalidInputException{ - if( ("".equals(username.trim())) || (password.trim()=="") ) { + if(("".equals(username.trim())) || (password.trim()=="")) throw new InvalidInputException("Please enter a username and password"); - } - List users= tp.getUsers(); + List users = tp.getUsers(); for(User user: users) { if(username.equals(user.getUsername())) { - if(password.equals(user.getPassword())){ + if(password.equals(user.getPassword())) return user; - } - else { + else throw new InvalidInputException("Please re-enter your password"); - } } } throw new InvalidInputException("username not found"); } - - public User register(String username, String password, Boolean isScientist) throws InvalidInputException{ - if( (username.trim()=="") || (password.trim()=="") ) { + //method registers a user and returns his record to the controller + public User register(String username, String password, Boolean isScientist) throws InvalidInputException { + if((username.trim()=="") || (password.trim()=="")) throw new InvalidInputException("Please enter a username and password"); - } - List users= tp.getUsers(); - for(User user: users) { - if(username.equals(user.getUsername())) { + List users = tp.getUsers(); + for(User user: users) + if(username.equals(user.getUsername())) throw new InvalidInputException("username already exists, please try another one"); - } - } - User newUser=tp.addUser(username, password); - if(isScientist) { + User newUser = tp.addUser(username, password); + if(isScientist) newUser.setUserType(UserType.Scientist); - } + PersistenceXStream.saveToXMLwithXStream(tp); return newUser; } public User getUserByName(String name) { List users = tp.getUsers(); - for (User user: users) { + for (User user: users) if (user.getUsername().equals(name)) return user; - } return null; } - public void loadFile(File input) throws InvalidInputException{ - // TODO Auto-generated method stub - - } - - public List updateTrees(List treeIDs, Status status) throws InvalidInputException{ - List trees=tp.getTrees(); - for(int id: treeIDs) { - for(Tree tree: trees) { - if(id==tree.getId()) { - TreeStatus aTreeStatus= tree.getTreeStatus(); - aTreeStatus.setStatus(status); - } - } - } - return trees; - } - - + } diff --git a/TMS-Spring/src/main/resources/application.properties b/TMS-Spring/src/main/resources/application.properties index d282ea7f..e5881699 100644 --- a/TMS-Spring/src/main/resources/application.properties +++ b/TMS-Spring/src/main/resources/application.properties @@ -1,4 +1,4 @@ -server.port=${port:8080} +server.port=${PORT:8080} client.web.ip=client.web.ip client.web.port=8087 client.android.ip=127.0.0.1 diff --git a/TMS-Spring/src/test/java/ca/mcgill/ecse321/TMS/service/TestService.java b/TMS-Spring/src/test/java/ca/mcgill/ecse321/TMS/service/TestService.java index 80d745a6..259cb3f5 100644 --- a/TMS-Spring/src/test/java/ca/mcgill/ecse321/TMS/service/TestService.java +++ b/TMS-Spring/src/test/java/ca/mcgill/ecse321/TMS/service/TestService.java @@ -1,1220 +1,1217 @@ -//package ca.mcgill.ecse321.TMS.service; -// -//import static org.junit.Assert.assertEquals; -//import static org.junit.Assert.fail; -// -//import java.io.File; -//import java.sql.Date; -//import java.util.ArrayList; -//import java.util.Calendar; -//import java.util.List; -// -//import org.assertj.core.util.Lists; -//import org.junit.After; -//import org.junit.AfterClass; -//import org.junit.Before; -//import org.junit.BeforeClass; -//import org.junit.Test; -// -//import ca.mcgill.ecse321.TMS.model.LocationType; -//import ca.mcgill.ecse321.TMS.model.Municipality; -//import ca.mcgill.ecse321.TMS.model.Park; -//import ca.mcgill.ecse321.TMS.model.Species; -//import ca.mcgill.ecse321.TMS.model.Street; -//import ca.mcgill.ecse321.TMS.model.Tree; -//import ca.mcgill.ecse321.TMS.model.TreePLE; -//import ca.mcgill.ecse321.TMS.model.TreeStatus; -//import ca.mcgill.ecse321.TMS.model.TreeStatus.Status; -//import ca.mcgill.ecse321.TMS.model.User; -//import ca.mcgill.ecse321.TMS.persistence.PersistenceXStream; -// -//public class TestService { -// -// private TreePLE ple; -// private TreePLE ple2; -// -// @BeforeClass -// public static void setUpBeforeClass() throws Exception { -// -// PersistenceXStream.initializeModelManager("output" + File.separator + "data.xml"); -// -// } -// -// @AfterClass -// public static void tearDownAfterClass() throws Exception { -// } -// -// @Before -// public void setUp() throws Exception { -// ple = new TreePLE(); -// ple2 = new TreePLE(); -// -// // create tree classes -// -// } -// -// @After -// public void tearDown() throws Exception { -// ple.delete(); -// } -// -// @Test -// public void testCreatetree() { -// TMSService erc = new TMSService(ple); -// -// assertEquals(0, ple.getTrees().size()); -// // create tree properties -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species = new Species("dandelion", 5, 4, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Date datePlanted = Date.valueOf("2014-09-09"); -// TreeStatus status = new TreeStatus(ple); -// LocationType location = new LocationType(); -// -// try { -// erc.createTree(height, diameter, datePlanted, status, species, user, municipality, 1, 1, "right", location); -// -// } catch (InvalidInputException e) { -// // TODO Auto-generated catch block -// fail(); -// } -// TreePLE ple1 = ple; -// -// checkResultTree(height, diameter, species, user, ple1); -// -// TreePLE ple2 = (TreePLE) PersistenceXStream.loadFromXMLwithXStream(); -// -// // check file contents -// -// // checkResultTree(height, diameter,species, user, ple2); -// -// ple2.delete(); -// } -// -// @Test -// public void testRemovetree() { -// -// // create tree properties -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species = new Species("dandelion", 5, 4, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status = new TreeStatus(ple); -// Tree tree = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// assertEquals(1, ple.getTrees().size()); -// -// TMSService erc = new TMSService(ple); -// erc.removeTree(tree); -// -// TreePLE ple1 = ple; -// assertEquals(0, ple.getTrees().size()); -// TreePLE ple2 = (TreePLE) PersistenceXStream.loadFromXMLwithXStream(); -// assertEquals(0, ple.getTrees().size()); -// -// ple1.delete(); -// ple2.delete(); -// -// } -// -// @Test -// public void testFindalltrees() { -// // create tree properties -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species = new Species("dandelion", 5, 4, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status = new TreeStatus(ple); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// List treeList; -// TMSService erc = new TMSService(ple); -// treeList = erc.findAllTrees(); -// assertEquals(3, treeList.size()); -// assertEquals(treeList.get(0), tree1); -// assertEquals(treeList.get(1), tree2); -// assertEquals(treeList.get(2), tree3); -// -// } -// -// private void checkResultTree(int height, int diameter, Species species, User user, TreePLE ple) { -// -// assertEquals(1, ple.getTrees().size()); -// assertEquals(user.getUsername(), ple.getTree(0).getLocal().getUsername()); -// assertEquals(species.getName(), ple.getTree(0).getSpecies().getName()); -// assertEquals(height, ple.getTree(0).getHeight()); -// assertEquals(diameter, ple.getTree(0).getDiameter()); -// -// } -// - -// @Test -// public void TestNullTreeInputException() { -// TMSService ts = new TMSService(ple); -// -// Date datePlanted = Date.valueOf("2020-09-09"); -// Street street = null; -// LocationType locationType1 = street; -// -// // check1 -// String error = null; -// try { -// ts.createTree(-5, -10, datePlanted, null, null, null, null, -2, -5, "left", locationType1); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// } -// assertEquals( -// "Cannot pass negative integer! Cannot plant tree in the future! Status needs to be selected for registration! Species needs to be selected for registration! User needs to be logged in for registration! Municipality needs to be selected for registration!", -// error); -// } -// -// @Test -// public void TestUnavailableTreeInputException() { -// TMSService ts = new TMSService(ple); -// TMSService ts2 = new TMSService(ple2); -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// TreeStatus status = new TreeStatus(ple2); -// Species species = new Species("daisy", 1, 1, ple2); -// User user = new User("idodin", ple2); -// Municipality municipality = new Municipality(1, "McGill", ple2); -// LocationType locationType = new Park(3, "Mt. Royal Park", ple2); -// -// String error = null; -// try { -// ts.createTree(1, 1, datePlanted, status, species, user, municipality, 1, 1, "", locationType); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// } -// assertEquals( -// "Status must exist! Species must exist! User must be registered! Municipality must exist! Park must exist!", -// error); -// -// } - ////////////////////////////// - -// @Test -// public void TestLoadFileInputSuccess() { -// // input.csv must be a correctly formatted csv file containing a single tree -// // with -// // the tree data that is checked afterwards. -// File input = new File("input.csv"); -// -// TMSService ts = new TMSService(ple); -// -// try { -// ts.loadFile(input); -// } catch (InvalidInputException e) { -// fail("Error in loading file!"); -// } -// -// Tree foundTree = null; -// // Check that Tree is in system -// for (Tree tree : ple.getTrees()) { -// if (tree.getLocal().getUsername().equals("idodin")) -// foundTree = tree; -// } -// if (foundTree == null) { -// fail("Input tree was not found within system"); -// } -// -// assertEquals("daisy", foundTree.getSpecies().getName()); -// assertEquals("McGill", foundTree.getMunicipality().getName()); -// assertEquals(1, foundTree.getMunicipality().getIdNumber()); -// assertEquals(10, foundTree.getTreeLocation().getX()); -// assertEquals(11, foundTree.getTreeLocation().getY()); -// assertEquals(TreeStatus.Status.Healthy, foundTree.getTreeStatus().getStatus()); -// assertEquals("South", foundTree.getTreeLocation().getDescription()); -// assertEquals(LocationType.LandUseType.Institutional, -// foundTree.getTreeLocation().getLocationType().getLandUseType()); -// -// Park park = null; -// if (foundTree.getTreeLocation().getLocationType() instanceof Park) { -// park = (Park) foundTree.getTreeLocation().getLocationType(); -// } else { -// fail("Location type was not a park"); -// } -// -// assertEquals(9, park.getParkCode()); -// assertEquals("Mt. Royal", park.getParkName()); -// -// } -// -// @Test -// public void TestEmptyFileInput() { -// File input = new File("empty.csv"); -// -// TMSService ts = new TMSService(ple); -// try { -// ts.loadFile(input); -// } catch (InvalidInputException e) { -// fail("Error in loading file!"); -// } -// -// assertEquals(0, ple.getTrees().size()); -// } -// -// @Test -// public void TestNullFileInput() { -// File input = null; -// String errorMessage = ""; -// -// TMSService ts = new TMSService(ple); -// try { -// ts.loadFile(input); -// } catch (InvalidInputException e) { -// errorMessage = e.getMessage(); -// } -// -// assertEquals("Must select a file to input!", errorMessage); -// -// } -// -// @Test -// public void TestBadContentFileInput() { -// File input = new File("badcontent.csv"); -// String errorMessage = ""; -// -// TMSService ts = new TMSService(ple); -// try { -// ts.loadFile(input); -// } catch (InvalidInputException e) { -// errorMessage = e.getMessage(); -// } -// -// assertEquals("Please check contents of file!", errorMessage); -// } -// -// @Test -// public void TestBadFileFormatInput() { -// File input = new File("hello.jpeg"); -// String errorMessage = ""; -// -// TMSService ts = new TMSService(ple); -// try { -// ts.loadFile(input); -// } catch (InvalidInputException e) { -// errorMessage = e.getMessage(); -// } -// -// assertEquals("Please ensure file is of type .csv", errorMessage); -// } -// -// @Test -// public void TestUpdateTreeSuccess() { -// TMSService ts = new TMSService(ple); -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); -// TreeStatus status = new TreeStatus(ple); -// status.setStatus(TreeStatus.Status.Healthy); -// Species species = new Species("daisy", 1, 1, ple); -// User user = new User("idodin", ple); -// Municipality municipality = new Municipality(1, "McGill", ple); -// LocationType locationType = new Park(3, "Mt. Royal Park", ple); -// -// Tree tree = new Tree(10, 11, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// Date newDatePlanted = Date.valueOf("2010-02-02"); -// Species newSpecies = new Species("clover", 2, 2, ple); -// TreeStatus newStatus = new TreeStatus(ple); -// newStatus.setStatus(TreeStatus.Status.Diseased); -// User newUser = new User("aelehwany", ple); -// Municipality newMunicipality = new Municipality(2, "Concordia", ple); -// LocationType newLocationType = new Street("Sherbrooke", ple); -// try { -// ts.updateTree(tree, 11, 12, newDatePlanted, newStatus, newSpecies, newUser, newMunicipality, 1, 2, "south", -// newLocationType); -// } catch (InvalidInputException e) { -// fail("Error in updating tree!"); -// } -// -// assertEquals(11, tree.getHeight()); -// assertEquals(12, tree.getDiameter()); -// assertEquals("2010-02-02", tree.getDatePlanted().toString()); -// assertEquals("clover", tree.getSpecies().getName()); -// assertEquals("aelehwany", tree.getLocal().getUsername()); -// assertEquals("Concordia", tree.getMunicipality().getName()); -// assertEquals(1, tree.getTreeLocation().getX()); -// assertEquals(2, tree.getTreeLocation().getY()); -// assertEquals("south", tree.getTreeLocation().getDescription()); -// -// Street street = null; -// if (tree.getTreeLocation().getLocationType() instanceof Street) { -// street = (Street) tree.getTreeLocation().getLocationType(); -// } else { -// fail("Location type was not a Street"); -// } -// -// assertEquals("Sherbrooke", street.getStreetName()); -// } -// -// @Test -// public void TestUnavailableUpdateTree() { -// TMSService ts = new TMSService(ple); -// String errorMessage = ""; -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); -// TreeStatus status = new TreeStatus(ple); -// status.setStatus(TreeStatus.Status.Healthy); -// Species species = new Species("daisy", 1, 1, ple); -// User user = new User("idodin", ple); -// Municipality municipality = new Municipality(1, "McGill", ple); -// LocationType locationType = new Park(3, "Mt. Royal Park", ple); -// -// Tree tree = new Tree(10, 11, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// Date newDatePlanted = Date.valueOf("2010-02-02"); -// Species newSpecies = new Species("clover", 2, 2, ple2); -// TreeStatus newStatus = new TreeStatus(ple2); -// newStatus.setStatus(TreeStatus.Status.Diseased); -// User newUser = new User("aelehwany", ple2); -// Municipality newMunicipality = new Municipality(2, "Concordia", ple2); -// LocationType newLocationType = new Street("Sherbrooke", ple2); -// -// try { -// ts.updateTree(tree, 11, 12, newDatePlanted, newStatus, newSpecies, newUser, newMunicipality, 1, 2, "south", -// newLocationType); -// } catch (InvalidInputException e) { -// errorMessage = e.getMessage(); -// } -// -// assertEquals( -// "Status must exist! Species must exist! User must be registered! Municipality must exist! Street must exist!", -// errorMessage); -// } -// -// @Test -// public void TestNullInputUpdateTree() { -// TMSService ts = new TMSService(ple); -// String errorMessage = ""; -// Date datePlanted = Date.valueOf("2100-02-02"); -// -// try { -// ts.updateTree(null, -4, -4, null, null, null, null, null, -3, -3, null, null); -// } catch (InvalidInputException e) { -// errorMessage = e.getMessage(); -// } -// -// assertEquals( -// "Tree needs to be selected to be updated! Cannot pass negative integer! Cannot plant tree in the future! Status needs to be selected for registration! Species needs to be selected for registration! User needs to be logged in for registration! Municipality needs to be selected for registration!", -// errorMessage); -// -// assertEquals( -// "Status must exist! Species must exist! User must be registered! Municipality must exist! Park must exist!", -// errorMessage); -// -// } -// -// // Calculate current oxygen production of a list of trees. -// @Test -// public void TestCalculateOxygenProduction() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// int production = 0; -// TMSService erc = new TMSService(ple); -// try { -// production = erc.calculateOxygenProduction(treeList); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(13, production); -// -// } -// -// // testing if calculateOxygenProduction is called with empty list of trees. -// @Test -// public void TestEmptyListOxygenProduction() { -// String error = ""; -// List treeList = new java.util.ArrayList<>(); -// TMSService erc = new TMSService(ple); -// try { -// int production = erc.calculateOxygenProduction(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("Please enter a list of trees", error); -// } -// -// } -// -// // Calculate current carbon consumption of a list of trees. -// @Test -// public void TestCalculateCarbonConsumption() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// int consumption = 0; -// TMSService erc = new TMSService(ple); -// try { -// consumption = erc.calculateCarbonConsumption(treeList); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(23, consumption); -// -// } -// -// // testing if calculateCarbonConsumption is called with empty list of trees. -// @Test -// public void TestEmptyListCarbonConsumption() { -// String error = ""; -// List treeList = new java.util.ArrayList<>(); -// TMSService erc = new TMSService(ple); -// try { -// int consumption = erc.calculateCarbonConsumption(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("Please enter a list of trees", error); -// } -// -// } -// -// // test null input for bioForecast -// @Test -// public void testNullListBioForecast() { -// String error = ""; -// List treeList = null; -// TMSService erc = new TMSService(ple); -// try { -// int bioForecast = erc.bioForecast(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// } -// -// @Test -// public void testMarkDiseasedSuccess() { -// TMSService ts = new TMSService(ple); -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); -// TreeStatus status = new TreeStatus(ple); -// status.setStatus(TreeStatus.Status.Healthy); -// Species species = new Species("daisy", 1, 1, ple); -// User user = new User("idodin", ple); -// Municipality municipality = new Municipality(1, "McGill", ple); -// -// Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// try { -// ts.markDiseased(tree); -// } catch (InvalidInputException e) { -// fail("Tree couldn't be marked as diseased due to invalid input"); -// } -// -// assertEquals(TreeStatus.Status.Diseased, tree.getTreeStatus().getStatus()); -// } -// -// @Test -// public void testMarkDiseasedNull() { -// TMSService ts = new TMSService(ple); -// String error = ""; -// -// Tree tree = null; -// -// try { -// ts.markDiseased(tree); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// } -// -// assertEquals("Tree needs to be selected to be marked as diseased.", error); -// } -// -// @Test -// public void testMarkDiseasedAlready() { -// TMSService ts = new TMSService(ple); -// String error = ""; -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); -// TreeStatus status = new TreeStatus(ple); -// status.setStatus(TreeStatus.Status.Diseased); -// Species species = new Species("daisy", 1, 1, ple); -// User user = new User("idodin", ple); -// Municipality municipality = new Municipality(1, "McGill", ple); -// -// Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// try { -// ts.markDiseased(tree); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// } -// -// assertEquals("Tree was already diseased!", error); -// } -// -// @Test -// public void testMarkToBeCutSuccess() { -// TMSService ts = new TMSService(ple); -// String error = ""; -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); -// TreeStatus status = new TreeStatus(ple); -// status.setStatus(TreeStatus.Status.Diseased); -// Species species = new Species("daisy", 1, 1, ple); -// User user = new User("idodin", ple); -// Municipality municipality = new Municipality(1, "McGill", ple); -// -// Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// try { -// ts.markToBeCut(tree); -// } catch (InvalidInputException e) { -// fail("Tree couldn't be marked as to be cut due to Invalid Input."); -// } -// -// assertEquals(true, tree.getTreeStatus().getToBeCut()); -// } -// -// @Test -// public void testMarkToBeCutNull() { -// TMSService ts = new TMSService(ple); -// String error = ""; -// -// Tree tree = null; -// -// try { -// ts.markToBeCut(tree); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// } -// -// assertEquals("Tree needs to be selected to be mark as to be cut.", error); -// } -// -// @Test -// public void testMarkToBeCutAlready() { -// TMSService ts = new TMSService(ple); -// String error = ""; -// -// Date datePlanted = Date.valueOf("2002-02-02"); -// Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); -// TreeStatus status = new TreeStatus(ple); -// status.setStatus(TreeStatus.Status.Cut); -// Species species = new Species("daisy", 1, 1, ple); -// User user = new User("idodin", ple); -// Municipality municipality = new Municipality(1, "McGill", ple); -// -// Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); -// -// try { -// ts.markToBeCut(tree); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// } -// -// assertEquals("Tree was already cut down!", error); -// } -// -// // test null list entry between valid list entries -// public void testNullEntryBioForecast() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// treeList.add(null); -// TMSService erc = new TMSService(ple); -// String error = ""; -// try { -// int bioForecast = erc.bioForecast(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("The list contains a null entry", error); -// } -// } -// -// // test empty list input for bioForecast -// @Test -// public void testEmptyListBioForecast() { -// String error = ""; -// List treeList = new java.util.ArrayList<>(); -// TMSService erc = new TMSService(ple); -// try { -// int bioForecast = erc.bioForecast(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be empty", error); -// } -// } -// -// // test valid input for BioForecast -// @Test -// public void testValidInputBioForecast() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// -// int bioForecast = 0; -// TMSService erc = new TMSService(ple); -// try { -// bioForecast = erc.bioForecast(treeList); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(6, bioForecast); -// } -// -// // test null input for bioIndexCalculator -// @Test -// public void testNullListBioIndex() { -// String error = ""; -// List treeList = null; -// TMSService erc = new TMSService(ple); -// try { -// int bioForecast = erc.bioIndexCalculator(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// } -// -// @Test -// // test null list entry between valid list entries -// public void testNullEntryBioIndex() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// treeList.add(null); -// TMSService erc = new TMSService(ple); -// String error = ""; -// try { -// int bioForecast = erc.bioIndexCalculator(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("The list contains a null entry", error); -// } -// } -// -// // test empty list input for bioIndexCalculator -// @Test -// public void testEmptyListBioIndex() { -// String error = ""; -// List treeList = new java.util.ArrayList<>(); -// TMSService erc = new TMSService(ple); -// try { -// int bioForecast = erc.bioIndexCalculator(treeList); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be empty", error); -// } -// } -// -// // test valid input for bioIndexCalculator -// @Test -// public void testValidInputBioIndex() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// -// int bioForecast = 0; -// TMSService erc = new TMSService(ple); -// try { -// bioForecast = erc.bioIndexCalculator(treeList); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(8, bioForecast); -// } -// -// // Test for valid calculation of a change in oxygen production -// // for list of trees -// @Test -// public void testValidChangeInOxygenProduction() { -// int height = 4; -// int diameter = 11; -// User user1 = new User("fouad", ple); -// User user2 = new User("bitar", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality1 = new Municipality(223, "countySquare", ple); -// Municipality municipality2 = new Municipality(133, "countyCircle", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted1 = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded1 = new Date(c2.getTimeInMillis()); -// Calendar c3 = Calendar.getInstance(); -// Date datePlanted2 = new Date(c3.getTimeInMillis()); -// Calendar c4 = Calendar.getInstance(); -// Date dateAdded2 = new Date(c4.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// -// Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status2, species1, user1, municipality1, -// ple); -// Tree tree2 = new Tree(height + 1, diameter + 1, datePlanted2, dateAdded2, status3, species1, user1, -// municipality2, ple); -// Tree tree3 = new Tree(height - 2, diameter + 2, datePlanted1, dateAdded2, status3, species2, user2, -// municipality1, ple); -// Tree tree4 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status3, species3, user2, municipality1, -// ple); -// Tree tree5 = new Tree(height + 2, diameter + 2, datePlanted1, dateAdded2, status1, species1, user2, -// municipality2, ple); -// Tree tree6 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status2, species2, user2, municipality1, -// ple); -// Tree tree7 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status1, species3, user2, municipality2, -// ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// treeList.add(tree4); -// treeList.add(tree5); -// treeList.add(tree6); -// treeList.add(tree7); -// -// int changeInOxygenProduction = 0; -// TMSService erc = new TMSService(ple); -// try { -// changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Healthy"); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(21, changeInOxygenProduction); -// try { -// changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Cut"); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(-25, changeInOxygenProduction); -// try { -// changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Diseased"); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(-2, changeInOxygenProduction); -// } -// -// @Test -// public void testNullInputOxygenProd() { -// String error = ""; -// List treeList = null; -// TMSService erc = new TMSService(ple); -// try { -// int changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Healthy"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// try { -// int changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Cut"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// try { -// int changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Diseased"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// } -// -// @Test -// public void testStringErrorInput() { -// String error = ""; -// int height = 4; -// int diameter = 11; -// User user1 = new User("fouad", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Calendar c1 = Calendar.getInstance(); -// Municipality municipality1 = new Municipality(223, "countySquare", ple); -// Date datePlanted1 = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded1 = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// status1.setStatus(Status.Cut); -// Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status1, species1, user1, municipality1, -// ple); -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// TMSService erc = new TMSService(ple); -// try { -// int changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, null); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("String cannot be null", error); -// } -// try { -// int changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "hug"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("Must select valid status to change to", error); -// } -// } -// -// @Test -// public void testNullEntryOxygenProd() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(null); -// treeList.add(tree3); -// TMSService erc = new TMSService(ple); -// String error = ""; -// try { -// int changeInOxygenProduction = erc.calcChangeOxygenProd(treeList, "Healthy"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("Cannot have null entry for tree in list", error); -// } -// } -// -// @Test -// public void testValidChangeInCarbonConsumption() { -// int height = 4; -// int diameter = 11; -// User user1 = new User("fouad", ple); -// User user2 = new User("bitar", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality1 = new Municipality(223, "countySquare", ple); -// Municipality municipality2 = new Municipality(133, "countyCircle", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted1 = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded1 = new Date(c2.getTimeInMillis()); -// Calendar c3 = Calendar.getInstance(); -// Date datePlanted2 = new Date(c3.getTimeInMillis()); -// Calendar c4 = Calendar.getInstance(); -// Date dateAdded2 = new Date(c4.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// -// Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status2, species1, user1, municipality1, -// ple); -// Tree tree2 = new Tree(height + 1, diameter + 1, datePlanted2, dateAdded2, status3, species1, user1, -// municipality2, ple); -// Tree tree3 = new Tree(height - 2, diameter + 2, datePlanted1, dateAdded2, status3, species2, user2, -// municipality1, ple); -// Tree tree4 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status3, species3, user2, municipality1, -// ple); -// Tree tree5 = new Tree(height + 2, diameter + 2, datePlanted1, dateAdded2, status1, species1, user2, -// municipality2, ple); -// Tree tree6 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status2, species2, user2, municipality1, -// ple); -// Tree tree7 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status1, species3, user2, municipality2, -// ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(tree3); -// treeList.add(tree4); -// treeList.add(tree5); -// treeList.add(tree6); -// treeList.add(tree7); -// -// int changeInCarbonConsumption = 0; -// TMSService erc = new TMSService(ple); -// try { -// changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Healthy"); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(44, changeInCarbonConsumption); -// try { -// changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Cut"); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(-46, changeInCarbonConsumption); -// try { -// changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Diseased"); -// } catch (InvalidInputException e) { -// fail(); -// } -// assertEquals(-1, changeInCarbonConsumption); -// } -// -// @Test -// public void testNullInputCabronConsump() { -// String error = ""; -// List treeList = null; -// TMSService erc = new TMSService(ple); -// try { -// int changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Healthy"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// try { -// int changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Cut"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// try { -// int changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Diseased"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("List cannot be null", error); -// } -// } -// -// @Test -// public void testStringErrorInputCarbonConsump() { -// String error = ""; -// int height = 4; -// int diameter = 11; -// User user1 = new User("fouad", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Calendar c1 = Calendar.getInstance(); -// Municipality municipality1 = new Municipality(223, "countySquare", ple); -// Date datePlanted1 = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded1 = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// status1.setStatus(Status.Cut); -// Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status1, species1, user1, municipality1, -// ple); -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// TMSService erc = new TMSService(ple); -// try { -// int changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, null); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("String cannot be null", error); -// } -// try { -// int changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "hug"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("Must select valid status to change to", error); -// } -// } -// -// @Test -// public void testNullEntryCarbonConsump() { -// int height = 5; -// int diameter = 10; -// User user = new User("aehwany", ple); -// Species species1 = new Species("dandelion", 18, 10, ple); -// Species species2 = new Species("Coconut", 8, 2, ple); -// Species species3 = new Species("Pine", 10, 6, ple); -// Municipality municipality = new Municipality(10, "rosemont", ple); -// Calendar c1 = Calendar.getInstance(); -// Date datePlanted = new Date(c1.getTimeInMillis()); -// Calendar c2 = Calendar.getInstance(); -// Date dateAdded = new Date(c2.getTimeInMillis()); -// TreeStatus status1 = new TreeStatus(ple); -// TreeStatus status2 = new TreeStatus(ple); -// TreeStatus status3 = new TreeStatus(ple); -// status1.setStatus(Status.Healthy); -// status2.setStatus(Status.Cut); -// status3.setStatus(Status.Diseased); -// // Create trees -// Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); -// Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); -// Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); -// -// List treeList = new java.util.ArrayList<>(); -// treeList.add(tree1); -// treeList.add(tree2); -// treeList.add(null); -// treeList.add(tree3); -// TMSService erc = new TMSService(ple); -// String error = ""; -// try { -// int changeInCarbonConsumption = erc.calcChangeCarbonConsump(treeList, "Healthy"); -// } catch (InvalidInputException e) { -// error = e.getMessage(); -// assertEquals("Cannot have null entry for tree in list", error); -// } -// } - -//} \ No newline at end of file +package ca.mcgill.ecse321.TMS.service; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + +import java.io.File; +import java.sql.Date; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.assertj.core.util.Lists; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import ca.mcgill.ecse321.TMS.model.LocationType; +import ca.mcgill.ecse321.TMS.model.Municipality; +import ca.mcgill.ecse321.TMS.model.Park; +import ca.mcgill.ecse321.TMS.model.Species; +import ca.mcgill.ecse321.TMS.model.Street; +import ca.mcgill.ecse321.TMS.model.Tree; +import ca.mcgill.ecse321.TMS.model.TreePLE; +import ca.mcgill.ecse321.TMS.model.TreeStatus; +import ca.mcgill.ecse321.TMS.model.TreeStatus.Status; +import ca.mcgill.ecse321.TMS.model.User; +import ca.mcgill.ecse321.TMS.persistence.PersistenceXStream; + +public class TestService { + + private TreePLE ple; + private TreePLE ple2; + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + + PersistenceXStream.initializeModelManager("output" + File.separator + "data.xml"); + + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + } + + @Before + public void setUp() throws Exception { + ple = new TreePLE(); + ple2 = new TreePLE(); + + // create tree classes + + } + + @After + public void tearDown() throws Exception { + ple.delete(); + ple2.delete(); + } + + + //create a valid tree + @Test + public void testCreatetree() { + TMSService erc = new TMSService(ple); + + assertEquals(0, ple.getTrees().size()); + // create tree properties + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species = new Species("dandelion", 5, 4, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Date datePlanted = Date.valueOf("2014-09-09"); + TreeStatus status = new TreeStatus(ple); + LocationType location = new LocationType(); + + try { + erc.createTree(height, diameter, datePlanted, status, species, user, municipality, -74.0, 45.0, "right", location); + + } catch (InvalidInputException e) { + // TODO Auto-generated catch block + fail(); + } + TreePLE ple1 = ple; + + checkResultTree(height, diameter, species, user, ple1); + + TreePLE ple2 = (TreePLE) PersistenceXStream.loadFromXMLwithXStream(); + + // check file contents + + // checkResultTree(height, diameter,species, user, ple2); + + ple2.delete(); + } + + @Test + public void testRemovetree() { + + // create tree properties + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species = new Species("dandelion", 5, 4, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status = new TreeStatus(ple); + Tree tree = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); + + assertEquals(1, ple.getTrees().size()); + + TMSService erc = new TMSService(ple); + erc.removeTree(tree); + + TreePLE ple1 = ple; + assertEquals(0, ple.getTrees().size()); + TreePLE ple2 = (TreePLE) PersistenceXStream.loadFromXMLwithXStream(); + assertEquals(0, ple.getTrees().size()); + + ple1.delete(); + ple2.delete(); + + } + //returns all trees from the persistence + @Test + public void testFindalltrees() { + // create tree properties + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species = new Species("dandelion", 5, 4, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status = new TreeStatus(ple); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status, species, user, municipality, ple); + + List treeList; + TMSService erc = new TMSService(ple); + treeList = erc.findAllTrees(); + assertEquals(3, treeList.size()); + assertEquals(treeList.get(0), tree1); + assertEquals(treeList.get(1), tree2); + assertEquals(treeList.get(2), tree3); + } + + ///////////////////// CREATE TREE ///////////////////// + //helper method for checks on creating a tree + private void checkResultTree(int height, int diameter, Species species, User user, TreePLE ple) { + + assertEquals(1, ple.getTrees().size()); + assertEquals(user.getUsername(), ple.getTree(0).getLocal().getUsername()); + assertEquals(species.getName(), ple.getTree(0).getSpecies().getName()); + assertEquals(height, ple.getTree(0).getHeight(), 0.001); + assertEquals(diameter, ple.getTree(0).getDiameter(), 0.001); + + } + + + @Test + public void TestNullTreeInputException() { + TMSService ts = new TMSService(ple); + + Date datePlanted = Date.valueOf("2020-09-09"); + Street street = null; + LocationType locationType1 = street; + + // check1 + String error = null; + try { + ts.createTree(-5, -10, datePlanted, null, null, null, null, -74.0, 45.0, "left", locationType1); + } catch (InvalidInputException e) { + error = e.getMessage(); + } + assertEquals( + "Height and diameter cannot be negative! Cannot plant tree in the future! Status needs to be selected for registration! Species needs to be selected for registration! User needs to be logged in for registration! Municipality needs to be selected for registration!", + error); + } + + @Test + public void TestUnavailableTreeInputException() { + TMSService ts = new TMSService(ple); + TMSService ts2 = new TMSService(ple2); + + Date datePlanted = Date.valueOf("2002-02-02"); + TreeStatus status = new TreeStatus(ple2); + Species species = new Species("daisy", 1, 1, ple2); + User user = new User("idodin", "ecse321", ple2); + Municipality municipality = new Municipality(1, "McGill", ple2); + LocationType locationType = new Park(3, "Mt. Royal Park", ple2); + + String error = null; + try { + ts.createTree(1, 1, datePlanted, status, species, user, municipality, -74.0, 45.0, "", locationType); + } catch (InvalidInputException e) { + error = e.getMessage(); + } + assertEquals( + "Status must exist! Species must exist! User must be registered! Municipality must exist! Park must exist!", + error); + + } + + ///////////////////// UPDATE TREE ///////////////////// + @Test + public void TestUpdateTreeSuccess() { + TMSService ts = new TMSService(ple); + + Date datePlanted = Date.valueOf("2002-02-02"); + Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); + TreeStatus status = new TreeStatus(ple); + status.setStatus(TreeStatus.Status.Healthy); + Species species = new Species("daisy", 1, 1, ple); + User user = new User("idodin", "ecse321", ple); + Municipality municipality = new Municipality(1, "McGill", ple); + LocationType locationType = new Park(3, "Mt. Royal Park", ple); + + Tree tree = new Tree(10, 11, datePlanted, dateAdded, status, species, user, municipality, ple); + + Date newDatePlanted = Date.valueOf("2010-02-02"); + Species newSpecies = new Species("clover", 2, 2, ple); + TreeStatus newStatus = new TreeStatus(ple); + newStatus.setStatus(TreeStatus.Status.Diseased); + User newUser = new User("aelehwany", "ecse321", ple); + Municipality newMunicipality = new Municipality(2, "Concordia", ple); + LocationType newLocationType = new Street("Sherbrooke", ple); + try { + ts.updateTree(tree, 11, 12, newDatePlanted, newStatus, newSpecies, newUser, newMunicipality, 1, 2, "south", + newLocationType); + } catch (InvalidInputException e) { + fail("Error in updating tree!"); + } + double t = 11.0; + assertEquals(t, tree.getHeight(), 0.001); + assertEquals(12.0, tree.getDiameter(), 0.001); + assertEquals("2010-02-02", tree.getDatePlanted().toString()); + assertEquals("clover", tree.getSpecies().getName()); + assertEquals("aelehwany", tree.getLocal().getUsername()); + assertEquals("Concordia", tree.getMunicipality().getName()); + assertEquals(1.0, tree.getTreeLocation().getX(), 0.001); + assertEquals(2.0, tree.getTreeLocation().getY(), 0.001); + assertEquals("south", tree.getTreeLocation().getDescription()); + + Street street = null; + if (tree.getTreeLocation().getLocationType() instanceof Street) { + street = (Street) tree.getTreeLocation().getLocationType(); + } else { + fail("Location type was not a Street"); + } + + assertEquals("Sherbrooke", street.getStreetName()); + } + + @Test + public void TestUnavailableUpdateTree() { + TMSService ts = new TMSService(ple); + String errorMessage = ""; + + Date datePlanted = Date.valueOf("2002-02-02"); + Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); + TreeStatus status = new TreeStatus(ple); + status.setStatus(TreeStatus.Status.Healthy); + Species species = new Species("newdaisy", 1, 1, ple); + User user = new User("idodin", "ecse321", ple); + Municipality municipality = new Municipality(1, "McGill", ple); + LocationType locationType = new Park(3, "Mt. Royal Park", ple); + + Tree tree = new Tree(10, 11, datePlanted, dateAdded, status, species, user, municipality, ple); + + Date newDatePlanted = Date.valueOf("2010-02-02"); + Species newSpecies = new Species("clover", 2, 2, ple2); + TreeStatus newStatus = new TreeStatus(ple2); + newStatus.setStatus(TreeStatus.Status.Diseased); + User newUser = new User("aelehwany", "ecse321", ple2); + Municipality newMunicipality = new Municipality(2, "Concordia", ple2); + LocationType newLocationType = new Street("Sherbrooke", ple2); + + try { + ts.updateTree(tree, 11, 12, newDatePlanted, newStatus, newSpecies, newUser, newMunicipality, 1, 2, "south", + newLocationType); + } catch (InvalidInputException e) { + errorMessage = e.getMessage(); + } + + assertEquals( + "Status must exist! Species must exist! User must be registered! Municipality must exist! Street must exist!", + errorMessage); + } + + @Test + public void TestNullInputUpdateTree() { + TMSService ts = new TMSService(ple); + String errorMessage = ""; + Date datePlanted = Date.valueOf("2100-02-02"); + + try { + ts.updateTree(null, -4, -4, null, null, null, null, null, -3, -3, null, null); + } catch (InvalidInputException e) { + errorMessage = e.getMessage(); + } + + + assertEquals( + "Tree needs to be selected to be updated! Cannot pass negative integer! Cannot plant tree in the future! Status needs to be selected for registration! Species needs to be selected for registration! User needs to be logged in for registration! Municipality needs to be selected for registration!", + errorMessage); + + } + +///////////////////// SUSTAINABILITY ATTRIBUTES ///////////////////// + // Calculate current oxygen production of a list of trees. + @Test + public void TestCalculateOxygenProduction() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + int production = 0; + TMSService erc = new TMSService(ple); + try { + production = erc.oxygenForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(38, production); + + } + + // testing if calculateOxygenProduction is called with empty list of trees. + @Test + public void TestEmptyListOxygenProduction() { + String error = ""; + List treeList = new java.util.ArrayList<>(); + TMSService erc = new TMSService(ple); + try { + int production = erc.oxygenForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please enter a list of trees", error); + } + + } + + // Calculate current carbon consumption of a list of trees. + @Test + public void TestCalculateCarbonConsumption() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + int consumption = 0; + TMSService erc = new TMSService(ple); + try { + consumption = erc.calcCarbonConsump(treeList); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(23, consumption); + + } + + // testing if calculateCarbonConsumption is called with empty list of trees. + @Test + public void TestEmptyListCarbonConsumption() { + String error = ""; + List treeList = new java.util.ArrayList<>(); + TMSService erc = new TMSService(ple); + try { + int consumption = erc.calcCarbonConsump(treeList); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please enter a list of trees", error); + } + + } + + // test null input for bioForecast + @Test + public void testNullListBioForecast() { + String error = ""; + List treeList = null; + TMSService erc = new TMSService(ple); + try { + int bioForecast = erc.bioForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + } +///////////////////// MARK TREES ///////////////////// + @Test + public void testMarkDiseasedSuccess() { + TMSService ts = new TMSService(ple); + + Date datePlanted = Date.valueOf("2002-02-02"); + Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); + TreeStatus status = new TreeStatus(ple); + status.setStatus(TreeStatus.Status.Healthy); + Species species = new Species("daisy", 1, 1, ple); + User user = new User("idodin", "ecse321", ple); + Municipality municipality = new Municipality(1, "McGill", ple); + + Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); + + try { + ts.markDiseased(tree); + } catch (InvalidInputException e) { + fail("Tree couldn't be marked as diseased due to invalid input"); + } + + assertEquals(TreeStatus.Status.Diseased, tree.getTreeStatus().getStatus()); + } + + @Test + public void testMarkDiseasedNull() { + TMSService ts = new TMSService(ple); + String error = ""; + + Tree tree = null; + + try { + ts.markDiseased(tree); + } catch (InvalidInputException e) { + error = e.getMessage(); + } + + assertEquals("Tree needs to be selected to be marked as diseased.", error); + } + + @Test + public void testMarkDiseasedAlready() { + TMSService ts = new TMSService(ple); + String error = ""; + + Date datePlanted = Date.valueOf("2002-02-02"); + Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); + TreeStatus status = new TreeStatus(ple); + status.setStatus(TreeStatus.Status.Diseased); + Species species = new Species("daisy", 1, 1, ple); + User user = new User("idodin", "ecse321", ple); + Municipality municipality = new Municipality(1, "McGill", ple); + + Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); + + try { + ts.markDiseased(tree); + } catch (InvalidInputException e) { + error = e.getMessage(); + } + + assertEquals("Tree was already diseased!", error); + } + + @Test + public void testMarkToBeCutSuccess() { + TMSService ts = new TMSService(ple); + String error = ""; + + Date datePlanted = Date.valueOf("2002-02-02"); + Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); + TreeStatus status = new TreeStatus(ple); + status.setStatus(TreeStatus.Status.Diseased); + Species species = new Species("daisy", 1, 1, ple); + User user = new User("idodin", "ecse321", ple); + Municipality municipality = new Municipality(1, "McGill", ple); + + Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); + + try { + ts.markToBeCut(tree); + } catch (InvalidInputException e) { + fail("Tree couldn't be marked as to be cut due to Invalid Input."); + } + + assertEquals(true, tree.getTreeStatus().setStatus(Status.ToBeCut)); + } + + @Test + public void testMarkToBeCutNull() { + TMSService ts = new TMSService(ple); + String error = ""; + + Tree tree = null; + + try { + ts.markToBeCut(tree); + } catch (InvalidInputException e) { + error = e.getMessage(); + } + + assertEquals("Tree needs to be selected to be mark as to be cut.", error); + } + + @Test + public void testMarkToBeCutAlready() { + TMSService ts = new TMSService(ple); + String error = ""; + + Date datePlanted = Date.valueOf("2002-02-02"); + Date dateAdded = new Date(Calendar.getInstance().getTime().getTime()); + TreeStatus status = new TreeStatus(ple); + status.setStatus(TreeStatus.Status.Cut); + Species species = new Species("daisy", 1, 1, ple); + User user = new User("idodin", "ecse321", ple); + Municipality municipality = new Municipality(1, "McGill", ple); + + Tree tree = new Tree(1, 1, datePlanted, dateAdded, status, species, user, municipality, ple); + + try { + ts.markToBeCut(tree); + } catch (InvalidInputException e) { + error = e.getMessage(); + } + + assertEquals("Tree was already cut down!", error); + } + + ///////////////////// BIOFORECAST ///////////////////// + // test null list entry between valid list entries + public void testNullEntryBioForecast() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + treeList.add(null); + TMSService erc = new TMSService(ple); + String error = ""; + try { + int bioForecast = erc.bioForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("The list contains a null entry", error); + } + } + + // test empty list input for bioForecast + @Test + public void testEmptyListBioForecast() { + String error = ""; + List treeList = new java.util.ArrayList<>(); + TMSService erc = new TMSService(ple); + try { + int bioForecast = erc.bioForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be empty", error); + } + } + + // test valid input for BioForecast + @Test + public void testValidInputBioForecast() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + + int bioForecast = 0; + TMSService erc = new TMSService(ple); + try { + bioForecast = erc.bioForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(1, bioForecast); + } + + // test null input for bioIndexCalculator + @Test + public void testNullListBioIndex() { + String error = ""; + List treeList = null; + TMSService erc = new TMSService(ple); + try { + int bioForecast = erc.bioIndexCalculator(treeList); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + } + + @Test + // test null list entry between valid list entries + public void testNullEntryBioIndex() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + treeList.add(null); + TMSService erc = new TMSService(ple); + String error = ""; + try { + int bioForecast = erc.bioIndexCalculator(treeList); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("The list contains a null entry", error); + } + } + + // test empty list input for bioIndexCalculator + @Test + public void testEmptyListBioIndex() { + String error = ""; + List treeList = new java.util.ArrayList<>(); + TMSService erc = new TMSService(ple); + try { + int bioForecast = erc.bioIndexCalculator(treeList); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be empty", error); + } + } + + // test valid input for bioIndexCalculator + @Test + public void testValidInputBioIndex() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + + int bioForecast = 0; + TMSService erc = new TMSService(ple); + try { + bioForecast = erc.bioIndexCalculator(treeList); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(2, bioForecast); + } + +///////////////////// OXYGEN PRODUCTION ///////////////////// + // Test for valid calculation of a change in oxygen production + // for list of trees + @Test + public void testValidChangeInOxygenProduction() { + int height = 4; + int diameter = 11; + User user1 = new User("fouad", "ecse321", ple); + User user2 = new User("bitar", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality1 = new Municipality(223, "countySquare", ple); + Municipality municipality2 = new Municipality(133, "countyCircle", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted1 = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded1 = new Date(c2.getTimeInMillis()); + Calendar c3 = Calendar.getInstance(); + Date datePlanted2 = new Date(c3.getTimeInMillis()); + Calendar c4 = Calendar.getInstance(); + Date dateAdded2 = new Date(c4.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + + Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status2, species1, user1, municipality1, + ple); + Tree tree2 = new Tree(height + 1, diameter + 1, datePlanted2, dateAdded2, status3, species1, user1, + municipality2, ple); + Tree tree3 = new Tree(height - 2, diameter + 2, datePlanted1, dateAdded2, status3, species2, user2, + municipality1, ple); + Tree tree4 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status3, species3, user2, municipality1, + ple); + Tree tree5 = new Tree(height + 2, diameter + 2, datePlanted1, dateAdded2, status1, species1, user2, + municipality2, ple); + Tree tree6 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status2, species2, user2, municipality1, + ple); + Tree tree7 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status1, species3, user2, municipality2, + ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + treeList.add(tree4); + treeList.add(tree5); + treeList.add(tree6); + treeList.add(tree7); + + int changeInOxygenProduction = 0; + TMSService erc = new TMSService(ple); + try { + changeInOxygenProduction = erc.oxygenForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(84, changeInOxygenProduction); + try { + changeInOxygenProduction = erc.oxygenForecast(treeList, "Cut"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(-100, changeInOxygenProduction); + try { + changeInOxygenProduction = erc.oxygenForecast(treeList, "Diseased"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(-8, changeInOxygenProduction); + } + + @Test + public void testNullInputOxygenProd() { + String error = ""; + List treeList = null; + TMSService erc = new TMSService(ple); + try { + int changeInOxygenProduction = erc.oxygenForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + try { + int changeInOxygenProduction = erc.oxygenForecast(treeList, "Cut"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + try { + int changeInOxygenProduction = erc.oxygenForecast(treeList, "Diseased"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + } + + @Test + public void testStringErrorInput() { + String error = ""; + int height = 4; + int diameter = 11; + User user1 = new User("fouad", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Calendar c1 = Calendar.getInstance(); + Municipality municipality1 = new Municipality(223, "countySquare", ple); + Date datePlanted1 = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded1 = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + status1.setStatus(Status.Cut); + Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status1, species1, user1, municipality1, + ple); + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + TMSService erc = new TMSService(ple); + try { + int changeInOxygenProduction = erc.oxygenForecast(treeList, null); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("String cannot be null", error); + } + try { + int changeInOxygenProduction = erc.oxygenForecast(treeList, "hug"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please enter a valid tree status", error); + } + } + + @Test + public void testNullEntryOxygenProd() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(null); + treeList.add(tree3); + TMSService erc = new TMSService(ple); + String error = ""; + try { + int changeInOxygenProduction = erc.oxygenForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("Cannot have null entry for tree in list", error); + } + } + +///////////////////// CARBON CONSUMPTION ///////////////////// + @Test + public void testValidChangeInCarbonConsumption() { + int height = 4; + int diameter = 11; + User user1 = new User("fouad", "ecse321", ple); + User user2 = new User("bitar", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality1 = new Municipality(223, "countySquare", ple); + Municipality municipality2 = new Municipality(133, "countyCircle", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted1 = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded1 = new Date(c2.getTimeInMillis()); + Calendar c3 = Calendar.getInstance(); + Date datePlanted2 = new Date(c3.getTimeInMillis()); + Calendar c4 = Calendar.getInstance(); + Date dateAdded2 = new Date(c4.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + + Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status2, species1, user1, municipality1, + ple); + Tree tree2 = new Tree(height + 1, diameter + 1, datePlanted2, dateAdded2, status3, species1, user1, + municipality2, ple); + Tree tree3 = new Tree(height - 2, diameter + 2, datePlanted1, dateAdded2, status3, species2, user2, + municipality1, ple); + Tree tree4 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status3, species3, user2, municipality1, + ple); + Tree tree5 = new Tree(height + 2, diameter + 2, datePlanted1, dateAdded2, status1, species1, user2, + municipality2, ple); + Tree tree6 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status2, species2, user2, municipality1, + ple); + Tree tree7 = new Tree(height, diameter + 2, datePlanted1, dateAdded2, status1, species3, user2, municipality2, + ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(tree3); + treeList.add(tree4); + treeList.add(tree5); + treeList.add(tree6); + treeList.add(tree7); + + int changeInCarbonConsumption = 0; + TMSService erc = new TMSService(ple); + try { + changeInCarbonConsumption = erc.carbonForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(95, changeInCarbonConsumption); + try { + changeInCarbonConsumption = erc.carbonForecast(treeList, "Cut"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(-100, changeInCarbonConsumption); + try { + changeInCarbonConsumption = erc.carbonForecast(treeList, "Diseased"); + } catch (InvalidInputException e) { + fail(); + } + assertEquals(-2, changeInCarbonConsumption); + } + + @Test + public void testNullInputCarbonConsump() { + String error = ""; + List treeList = null; + TMSService erc = new TMSService(ple); + try { + int changeInCarbonConsumption = erc.carbonForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + try { + int changeInCarbonConsumption = erc.carbonForecast(treeList, "Cut"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + try { + int changeInCarbonConsumption = erc.carbonForecast(treeList, "Diseased"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("List cannot be null", error); + } + } + + @Test + public void testStringErrorInputCarbonConsump() { + String error = ""; + int height = 4; + int diameter = 11; + User user1 = new User("fouad", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Calendar c1 = Calendar.getInstance(); + Municipality municipality1 = new Municipality(223, "countySquare", ple); + Date datePlanted1 = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded1 = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + status1.setStatus(Status.Cut); + Tree tree1 = new Tree(height - 1, diameter, datePlanted1, dateAdded1, status1, species1, user1, municipality1, + ple); + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + TMSService erc = new TMSService(ple); + try { + int changeInCarbonConsumption = erc.carbonForecast(treeList, null); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("String cannot be null", error); + } + try { + int changeInCarbonConsumption = erc.carbonForecast(treeList, "hug"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please enter a valid tree status", error); + } + } + + @Test + public void testNullEntryCarbonConsump() { + int height = 5; + int diameter = 10; + User user = new User("aehwany", "ecse321", ple); + Species species1 = new Species("dandelion", 18, 10, ple); + Species species2 = new Species("Coconut", 8, 2, ple); + Species species3 = new Species("Pine", 10, 6, ple); + Municipality municipality = new Municipality(10, "rosemont", ple); + Calendar c1 = Calendar.getInstance(); + Date datePlanted = new Date(c1.getTimeInMillis()); + Calendar c2 = Calendar.getInstance(); + Date dateAdded = new Date(c2.getTimeInMillis()); + TreeStatus status1 = new TreeStatus(ple); + TreeStatus status2 = new TreeStatus(ple); + TreeStatus status3 = new TreeStatus(ple); + status1.setStatus(Status.Healthy); + status2.setStatus(Status.Cut); + status3.setStatus(Status.Diseased); + // Create trees + Tree tree1 = new Tree(height, diameter, datePlanted, dateAdded, status1, species1, user, municipality, ple); + Tree tree2 = new Tree(height, diameter, datePlanted, dateAdded, status2, species2, user, municipality, ple); + Tree tree3 = new Tree(height, diameter, datePlanted, dateAdded, status3, species3, user, municipality, ple); + + List treeList = new java.util.ArrayList<>(); + treeList.add(tree1); + treeList.add(tree2); + treeList.add(null); + treeList.add(tree3); + TMSService erc = new TMSService(ple); + String error = ""; + try { + int changeInCarbonConsumption = erc.carbonForecast(treeList, "Healthy"); + } catch (InvalidInputException e) { + error = e.getMessage(); + assertEquals("Cannot have null entry for tree in list", error); + + } + } + +///////////////////// LOGIN AND REGISTER CHECKS ///////////////////// + @Test + public void testValidLogin() { + TMSService erc = new TMSService(ple); + ple.addUser("Ahmed", "ecse321p/"); + User loggedUser=null; + try { + loggedUser=erc.login("Ahmed", "ecse321p/"); + }catch(InvalidInputException e) { + fail(); + } + assertEquals("Ahmed", loggedUser.getUsername()); + assertEquals("ecse321p/", loggedUser.getPassword()); + } + + @Test + public void testValidRegister() { + TMSService erc = new TMSService(ple); + User newUser=null; + try { + newUser=erc.register("Ahmed","ecse321p/", false); + }catch(InvalidInputException e) { + fail(); + } + List users= ple.getUsers(); + User foundUser=null; + for(User user: users) { + if("Ahmed".equals(user.getUsername()) && ("ecse321p/".equals(user.getPassword()))) { + foundUser=user; + } + } + assertEquals("Ahmed",foundUser.getUsername()); + assertEquals("ecse321p/", foundUser.getPassword()); + } + + @Test + public void testNullLoginAndRegister() { + TMSService erc = new TMSService(ple); + String error=""; + try { + erc.login("",""); + }catch(InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please enter a username and password", error); + } + error=""; + try { + erc.register("","",false); + }catch(InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please enter a username and password", error); + } + } + + @Test + public void testInvalidLogin() { + TMSService erc = new TMSService(ple); + String error=""; + ple.addUser("Ahmed", "ecse321p/"); + ple.addUser("Karim", "ecse321p/"); + try { + erc.login("Bahaa","ecse321p/"); + }catch(InvalidInputException e) { + error = e.getMessage(); + assertEquals("username not found", error); + } + } + + @Test + public void testLoginInvalidPassword() { + TMSService erc = new TMSService(ple); + String error=""; + ple.addUser("Ahmed", "ecse321"); + ple.addUser("Karim", "ecse321p/"); + try { + erc.login("Ahmed","ecse321p/"); + }catch(InvalidInputException e) { + error = e.getMessage(); + assertEquals("Please re-enter your password", error); + } + } + + @Test + public void testRegisterExistingUsername() { + TMSService erc = new TMSService(ple); + String error=""; + ple.addUser("Ahmed", "ecse321p/"); + ple.addUser("Karim", "ecse321foo"); + try { + erc.register("Ahmed","ecse321p/", false); + }catch(InvalidInputException e) { + error = e.getMessage(); + assertEquals("username already exists, please try another one", error); + } + } + + +} + diff --git a/TMS-Web/Procfile b/TMS-Web/Procfile new file mode 100644 index 00000000..bbdcac95 --- /dev/null +++ b/TMS-Web/Procfile @@ -0,0 +1 @@ +web: echo $PORT && export PORT && npm start diff --git a/TMS-Web/config/index.js b/TMS-Web/config/index.js index d927727b..1880b082 100644 --- a/TMS-Web/config/index.js +++ b/TMS-Web/config/index.js @@ -4,10 +4,10 @@ var path = require('path') module.exports = { build: { env: require('./prod.env'), - port: 8087, - host: 'ecse321-9.ece.mcgill.ca', // set the real address of frontend VM + port: 443, + host: 'treeple-backend.herokuapp.com', // set the real address of frontend VM backendHost: 'ecse321-9.ece.mcgill.ca', // set it to real address of backend VM - backendPort: 8080, + backendPort: 80, index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', diff --git a/TMS-Web/package-lock.json b/TMS-Web/package-lock.json index fca8f5a8..02042581 100644 --- a/TMS-Web/package-lock.json +++ b/TMS-Web/package-lock.json @@ -4,6 +4,28 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@nuxt/opencollective": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.0.tgz", + "integrity": "sha512-Vf09BxCdj1iT2IRqVwX5snaY2WCTkvM0O4cWWSO1ThCFuc4if0Q/nNwAgCxRU0FeYHJ7DdyMUNSdswCLKlVqeg==", + "requires": { + "chalk": "^2.4.2", + "consola": "^2.10.1", + "node-fetch": "^2.6.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", @@ -16,14 +38,14 @@ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "dev": true, "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha1-9HPdR+AnegjijpvsWu6wR1HwuMk=", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, "acorn-dynamic-import": { @@ -32,7 +54,7 @@ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, "requires": { - "acorn": "4.0.13" + "acorn": "^4.0.3" }, "dependencies": { "acorn": { @@ -55,8 +77,8 @@ "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", "dev": true, "requires": { - "extend": "3.0.1", - "semver": "5.0.3" + "extend": "~3.0.0", + "semver": "~5.0.1" }, "dependencies": { "semver": { @@ -73,10 +95,10 @@ "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" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -91,9 +113,9 @@ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", "dev": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" }, "dependencies": { "kind-of": { @@ -102,7 +124,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -119,11 +141,6 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" - }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -133,7 +150,16 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "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.0" + } }, "anymatch": { "version": "1.3.2", @@ -141,8 +167,8 @@ "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" }, "dependencies": { "arr-diff": { @@ -151,7 +177,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "array-unique": { @@ -166,9 +192,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "expand-brackets": { @@ -177,7 +203,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "extglob": { @@ -186,7 +212,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-extglob": { @@ -201,7 +227,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "kind-of": { @@ -210,7 +236,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "micromatch": { @@ -219,19 +245,19 @@ "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" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } } } @@ -248,7 +274,7 @@ "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "dev": true, "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -293,7 +319,7 @@ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "array-uniq": "1.0.3" + "array-uniq": "^1.0.1" } }, "array-uniq": { @@ -332,9 +358,9 @@ "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", "dev": true, "requires": { - "bn.js": "4.11.8", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "assert": { @@ -376,7 +402,7 @@ "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.14.0" } }, "async-each": { @@ -409,12 +435,12 @@ "integrity": "sha1-JWZy+G98c12oScTwfQCKuwVgZ9w=", "dev": true, "requires": { - "browserslist": "2.11.3", - "caniuse-lite": "1.0.30000823", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "6.0.21", - "postcss-value-parser": "3.3.0" + "browserslist": "^2.11.3", + "caniuse-lite": "^1.0.30000805", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.17", + "postcss-value-parser": "^3.2.3" } }, "aws-sign2": { @@ -430,12 +456,19 @@ "dev": true }, "axios": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", - "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", "requires": { - "follow-redirects": "1.4.1", - "is-buffer": "1.1.6" + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" + } } }, "babel-code-frame": { @@ -444,9 +477,9 @@ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -461,11 +494,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -482,25 +515,25 @@ "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", "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.5", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.8", - "slash": "1.0.0", - "source-map": "0.5.7" + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "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.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" }, "dependencies": { "debug": { @@ -526,14 +559,14 @@ "integrity": "sha1-GERAjTuPDTWkBOp6wYDwh6YBvZA=", "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.5", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "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" }, "dependencies": { "source-map": { @@ -550,9 +583,9 @@ "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-builder-binary-assignment-operator-visitor": { @@ -561,9 +594,9 @@ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-call-delegate": { @@ -572,10 +605,10 @@ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-define-map": { @@ -584,10 +617,10 @@ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-explode-assignable-expression": { @@ -596,9 +629,9 @@ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-explode-class": { @@ -607,10 +640,10 @@ "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", "dev": true, "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-function-name": { @@ -619,11 +652,11 @@ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-get-function-arity": { @@ -632,8 +665,8 @@ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-hoist-variables": { @@ -642,8 +675,8 @@ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-optimise-call-expression": { @@ -652,8 +685,8 @@ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-helper-regex": { @@ -662,9 +695,9 @@ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-helper-remap-async-to-generator": { @@ -673,11 +706,11 @@ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helper-replace-supers": { @@ -686,12 +719,12 @@ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-helpers": { @@ -700,8 +733,8 @@ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-loader": { @@ -710,9 +743,9 @@ "integrity": "sha1-40Y5OL1ObVXRwXTFSF1AahiO0BU=", "dev": true, "requires": { - "find-cache-dir": "1.0.0", - "loader-utils": "1.1.0", - "mkdirp": "0.5.1" + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" } }, "babel-messages": { @@ -721,7 +754,7 @@ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-check-es2015-constants": { @@ -730,7 +763,7 @@ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-istanbul": { @@ -739,9 +772,9 @@ "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", "dev": true, "requires": { - "find-up": "2.1.0", - "istanbul-lib-instrument": "1.10.1", - "test-exclude": "4.2.1" + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.7.5", + "test-exclude": "^4.1.1" } }, "babel-plugin-syntax-async-functions": { @@ -798,9 +831,9 @@ "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-async-to-generator": { @@ -809,9 +842,9 @@ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-class-properties": { @@ -820,10 +853,10 @@ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-decorators": { @@ -832,11 +865,11 @@ "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", "dev": true, "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-arrow-functions": { @@ -845,7 +878,7 @@ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoped-functions": { @@ -854,7 +887,7 @@ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-block-scoping": { @@ -863,11 +896,11 @@ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "lodash": "4.17.5" + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, "babel-plugin-transform-es2015-classes": { @@ -876,15 +909,15 @@ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-helper-define-map": "6.26.0", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-computed-properties": { @@ -893,8 +926,8 @@ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-destructuring": { @@ -903,7 +936,7 @@ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-duplicate-keys": { @@ -912,8 +945,8 @@ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-for-of": { @@ -922,7 +955,7 @@ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-function-name": { @@ -931,9 +964,9 @@ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "dev": true, "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-literals": { @@ -942,7 +975,7 @@ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-modules-amd": { @@ -951,9 +984,9 @@ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-commonjs": { @@ -962,10 +995,10 @@ "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-types": "6.26.0" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, "babel-plugin-transform-es2015-modules-systemjs": { @@ -974,9 +1007,9 @@ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-modules-umd": { @@ -985,9 +1018,9 @@ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0" + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, "babel-plugin-transform-es2015-object-super": { @@ -996,8 +1029,8 @@ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.26.0" + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-parameters": { @@ -1006,12 +1039,12 @@ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.26.0", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-shorthand-properties": { @@ -1020,8 +1053,8 @@ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-spread": { @@ -1030,7 +1063,7 @@ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-sticky-regex": { @@ -1039,9 +1072,9 @@ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-plugin-transform-es2015-template-literals": { @@ -1050,7 +1083,7 @@ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-typeof-symbol": { @@ -1059,7 +1092,7 @@ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-es2015-unicode-regex": { @@ -1068,9 +1101,9 @@ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "babel-helper-regex": "6.26.0", - "babel-runtime": "6.26.0", - "regexpu-core": "2.0.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, "babel-plugin-transform-exponentiation-operator": { @@ -1079,9 +1112,9 @@ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.26.0" + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-object-rest-spread": { @@ -1090,8 +1123,8 @@ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.26.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, "babel-plugin-transform-regenerator": { @@ -1100,7 +1133,7 @@ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", "dev": true, "requires": { - "regenerator-transform": "0.10.1" + "regenerator-transform": "^0.10.0" } }, "babel-plugin-transform-runtime": { @@ -1109,7 +1142,7 @@ "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-plugin-transform-strict-mode": { @@ -1118,18 +1151,8 @@ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0" - } - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "requires": { - "babel-runtime": "6.26.0", - "core-js": "2.5.4", - "regenerator-runtime": "0.10.5" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, "babel-preset-env": { @@ -1138,36 +1161,36 @@ "integrity": "sha1-oYtWTMm5r99KrleuPBsNmRiOb0g=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0", - "browserslist": "2.11.3", - "invariant": "2.2.4", - "semver": "5.5.0" + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^2.1.2", + "invariant": "^2.2.2", + "semver": "^5.3.0" } }, "babel-preset-stage-2": { @@ -1176,10 +1199,10 @@ "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" } }, "babel-preset-stage-3": { @@ -1188,11 +1211,11 @@ "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", "dev": true, "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.26.0" + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" } }, "babel-register": { @@ -1201,28 +1224,30 @@ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", "dev": true, "requires": { - "babel-core": "6.26.0", - "babel-runtime": "6.26.0", - "core-js": "2.5.4", - "home-or-tmp": "2.0.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "source-map-support": "0.4.18" + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" } }, "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.4", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" }, "dependencies": { "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=", + "dev": true } } }, @@ -1232,11 +1257,11 @@ "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.5" + "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": { @@ -1245,15 +1270,15 @@ "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.5" + "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.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" }, "dependencies": { "debug": { @@ -1273,10 +1298,10 @@ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.5", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -1294,8 +1319,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -1303,13 +1327,13 @@ "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "dev": true, "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" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -1318,7 +1342,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } } } @@ -1348,7 +1372,7 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "better-assert": { @@ -1366,9 +1390,9 @@ "integrity": "sha1-4j2LJwV/HQIU/FYRQq2duZjyaDA=", "dev": true, "requires": { - "bluebird": "3.5.1", - "check-types": "7.3.0", - "tryer": "1.0.0" + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "tryer": "^1.0.0" } }, "big.js": { @@ -1408,15 +1432,15 @@ "dev": true, "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.16" + "type-is": "~1.6.15" }, "dependencies": { "debug": { @@ -1442,34 +1466,44 @@ "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "bootstrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0.tgz", - "integrity": "sha1-zrA4QsFF/MG5tOFdoqBWVrpoRpo=" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", + "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==" }, "bootstrap-vue": { - "version": "2.0.0-rc.6", - "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.0.0-rc.6.tgz", - "integrity": "sha1-EtCiQUFPHv1kfosUqIxRcHySDIY=", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.13.0.tgz", + "integrity": "sha512-V/q2tgIY+tDxeBGOwqdPC4jk8CWmpwpSVY/1OVGxg4Jg1Jxcs6gQn7chhpI9KuBrO8diG/Nd6JRtnYwyE3b7Qw==", "requires": { - "bootstrap": "4.0.0", - "lodash.get": "4.4.2", - "lodash.startcase": "4.4.0", - "opencollective": "1.0.3", - "popper.js": "1.14.2", - "vue-functional-data-merge": "2.0.6" + "@nuxt/opencollective": "^0.3.0", + "bootstrap": ">=4.4.1 <5.0.0", + "popper.js": "^1.16.1", + "portal-vue": "^2.1.7", + "vue-functional-data-merge": "^3.1.0" + }, + "dependencies": { + "bootstrap": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.4.1.tgz", + "integrity": "sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA==" + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" + } } }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", - "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -1479,18 +1513,18 @@ "integrity": "sha1-cIbJE7TloI2+N6wO5qJQDEumkbs=", "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "kind-of": "^6.0.2", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1499,7 +1533,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1508,7 +1542,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1531,12 +1565,12 @@ "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", "dev": true, "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "browserify-cipher": { @@ -1545,9 +1579,9 @@ "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", "dev": true, "requires": { - "browserify-aes": "1.2.0", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.3" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, "browserify-des": { @@ -1556,9 +1590,9 @@ "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" } }, "browserify-rsa": { @@ -1567,8 +1601,8 @@ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { - "bn.js": "4.11.8", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, "browserify-sign": { @@ -1577,13 +1611,13 @@ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, "browserify-zlib": { @@ -1592,7 +1626,7 @@ "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", "dev": true, "requires": { - "pako": "1.0.6" + "pako": "~1.0.5" } }, "browserslist": { @@ -1601,8 +1635,8 @@ "integrity": "sha1-/jYWeu0bvN5IJ+v+cTR6LMcLmbI=", "dev": true, "requires": { - "caniuse-lite": "1.0.30000823", - "electron-to-chromium": "1.3.41" + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" } }, "buffer": { @@ -1611,11 +1645,23 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.11", - "isarray": "1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -1646,19 +1692,19 @@ "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=", "dev": true, "requires": { - "bluebird": "3.5.1", - "chownr": "1.0.1", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lru-cache": "4.1.2", - "mississippi": "2.0.0", - "mkdirp": "0.5.1", - "move-concurrently": "1.0.1", - "promise-inflight": "1.0.1", - "rimraf": "2.6.2", - "ssri": "5.3.0", - "unique-filename": "1.1.0", - "y18n": "4.0.0" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" } }, "cache-base": { @@ -1667,15 +1713,15 @@ "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "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" } }, "callsite": { @@ -1690,8 +1736,8 @@ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "dev": true, "requires": { - "no-case": "2.3.2", - "upper-case": "1.1.3" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, "camelcase": { @@ -1706,8 +1752,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caniuse-api": { @@ -1716,10 +1762,10 @@ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000823", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" }, "dependencies": { "browserslist": { @@ -1728,8 +1774,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000823", - "electron-to-chromium": "1.3.41" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } } } @@ -1758,8 +1804,8 @@ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "dev": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chai": { @@ -1768,9 +1814,9 @@ "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "dev": true, "requires": { - "assertion-error": "1.1.0", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" } }, "chai-nightwatch": { @@ -1797,9 +1843,9 @@ "integrity": "sha1-JQ3JawdJG/1gHmSNZt319gx6XGU=", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.3.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "ansi-styles": { @@ -1808,7 +1854,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "supports-color": { @@ -1817,23 +1863,18 @@ "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" - }, "chart.js": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.2.tgz", "integrity": "sha512-90wl3V9xRZ8tnMvMlpcW+0Yg13BelsGS9P9t0ClaDxv/hdypHDr/YAGf+728m11P5ljwyB0ZHfPKCapZFqSqYA==", "requires": { - "chartjs-color": "2.2.0", - "moment": "2.22.0" + "chartjs-color": "^2.1.0", + "moment": "^2.10.2" } }, "chartjs-color": { @@ -1841,8 +1882,8 @@ "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", "requires": { - "chartjs-color-string": "0.5.0", - "color-convert": "0.5.3" + "chartjs-color-string": "^0.5.0", + "color-convert": "^0.5.3" }, "dependencies": { "color-convert": { @@ -1857,7 +1898,7 @@ "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", "requires": { - "color-name": "1.1.3" + "color-name": "^1.0.0" } }, "chartkick": { @@ -1877,15 +1918,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -1900,7 +1941,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -1917,11 +1958,11 @@ "integrity": "sha1-54Z8gjb2u4kCRze7/8mksz3tZYs=", "dev": true, "requires": { - "del": "3.0.0", - "extract-zip": "1.6.6", - "kew": "0.7.0", - "mkdirp": "0.5.1", - "request": "2.85.0" + "del": "^3.0.0", + "extract-zip": "^1.6.5", + "kew": "^0.7.0", + "mkdirp": "^0.5.1", + "request": "^2.83.0" } }, "cipher-base": { @@ -1930,8 +1971,8 @@ "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "clap": { @@ -1940,7 +1981,7 @@ "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", "dev": true, "requires": { - "chalk": "1.1.3" + "chalk": "^1.1.3" }, "dependencies": { "ansi-styles": { @@ -1955,11 +1996,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -1976,10 +2017,10 @@ "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -1988,7 +2029,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1997,7 +2038,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2006,7 +2047,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2017,7 +2058,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2026,7 +2067,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2037,9 +2078,9 @@ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -2056,7 +2097,7 @@ "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "0.5.x" }, "dependencies": { "source-map": { @@ -2071,8 +2112,9 @@ "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" + "restore-cursor": "^2.0.0" } }, "cli-spinners": { @@ -2081,19 +2123,14 @@ "integrity": "sha1-a6izVzlfB7eYHBrMJhRIXujAKi0=", "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=" - }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -2123,7 +2160,7 @@ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "dev": true, "requires": { - "q": "1.5.1" + "q": "^1.1.2" } }, "code-point-at": { @@ -2138,8 +2175,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color": { @@ -2148,18 +2185,17 @@ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "dev": true, "requires": { - "clone": "1.0.4", - "color-convert": "1.9.1", - "color-string": "0.3.0" + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" } }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", - "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { @@ -2173,7 +2209,7 @@ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.0.0" } }, "colormin": { @@ -2182,9 +2218,9 @@ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", "dev": true, "requires": { - "color": "0.11.4", + "color": "^0.11.0", "css-color-names": "0.0.4", - "has": "1.0.1" + "has": "^1.0.1" } }, "colors": { @@ -2199,7 +2235,7 @@ "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.5.0" } }, "combined-stream": { @@ -2208,7 +2244,7 @@ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -2244,8 +2280,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.0", @@ -2253,9 +2288,9 @@ "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, "connect": { @@ -2266,7 +2301,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.0", - "parseurl": "1.3.2", + "parseurl": "~1.3.2", "utils-merge": "1.0.1" }, "dependencies": { @@ -2286,12 +2321,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" } }, "statuses": { @@ -2308,13 +2343,18 @@ "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", "dev": true }, + "consola": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.11.3.tgz", + "integrity": "sha512-aoW0YIIAmeftGR8GSpw6CGQluNdkWMWh3yEFjH/hmynTYnMtibXszii3lxCXmk8YxJtI3FAK5aTiquA5VH68Gw==" + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "dev": true, "requires": { - "date-now": "0.1.4" + "date-now": "^0.1.4" } }, "consolidate": { @@ -2323,7 +2363,7 @@ "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", "dev": true, "requires": { - "bluebird": "3.5.1" + "bluebird": "^3.1.1" } }, "constants-browserify": { @@ -2368,12 +2408,12 @@ "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", "dev": true, "requires": { - "aproba": "1.2.0", - "fs-write-stream-atomic": "1.0.10", - "iferr": "0.1.5", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, "copy-descriptor": { @@ -2388,14 +2428,14 @@ "integrity": "sha1-/E9o9K3YN8xeE9ERsgcVeTIl0pw=", "dev": true, "requires": { - "cacache": "10.0.4", - "find-cache-dir": "1.0.0", - "globby": "7.1.1", - "is-glob": "4.0.0", - "loader-utils": "1.1.0", - "minimatch": "3.0.4", - "p-limit": "1.2.0", - "serialize-javascript": "1.4.0" + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" }, "dependencies": { "globby": { @@ -2404,12 +2444,12 @@ "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", "dev": true, "requires": { - "array-union": "1.0.2", - "dir-glob": "2.0.0", - "glob": "7.1.2", - "ignore": "3.3.7", - "pify": "3.0.0", - "slash": "1.0.0" + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } } } @@ -2417,7 +2457,8 @@ "core-js": { "version": "2.5.4", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz", - "integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=" + "integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2431,13 +2472,13 @@ "integrity": "sha1-YXPOvVb6wELB9DkO33r2wHx8uJI=", "dev": true, "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.7.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" } }, "create-ecdh": { @@ -2446,8 +2487,8 @@ "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", "dev": true, "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, "create-hash": { @@ -2456,10 +2497,10 @@ "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "sha.js": "^2.4.0" } }, "create-hmac": { @@ -2468,12 +2509,12 @@ "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", "dev": true, "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "cross-env": { @@ -2482,8 +2523,8 @@ "integrity": "sha1-9hwUKR98xlO7hkVwAuqAoEaZ0CI=", "dev": true, "requires": { - "cross-spawn": "5.1.0", - "is-windows": "1.0.2" + "cross-spawn": "^5.1.0", + "is-windows": "^1.0.0" } }, "cross-spawn": { @@ -2492,9 +2533,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.2", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { @@ -2503,7 +2544,7 @@ "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "dev": true, "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -2512,7 +2553,7 @@ "integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } } } @@ -2523,17 +2564,17 @@ "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", "dev": true, "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", - "randombytes": "2.0.6", - "randomfill": "1.0.4" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, "css-color-names": { @@ -2548,20 +2589,20 @@ "integrity": "sha1-w/mGSnAL4nEbtaJGKyOJsaOS2rc=", "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "css-selector-tokenizer": "0.7.0", - "cssnano": "3.10.0", - "icss-utils": "2.1.0", - "loader-utils": "1.1.0", - "lodash.camelcase": "4.3.0", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-modules-extract-imports": "1.2.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0", - "postcss-value-parser": "3.3.0", - "source-list-map": "2.0.0" + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": "^3.10.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.1.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.2.0", + "postcss-modules-local-by-default": "^1.2.0", + "postcss-modules-scope": "^1.1.0", + "postcss-modules-values": "^1.3.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -2576,11 +2617,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -2603,10 +2644,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -2621,7 +2662,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -2632,10 +2673,10 @@ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", "dev": true, "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", + "boolbase": "~1.0.0", + "css-what": "2.1", "domutils": "1.5.1", - "nth-check": "1.0.1" + "nth-check": "~1.0.1" } }, "css-selector-tokenizer": { @@ -2644,9 +2685,9 @@ "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", "dev": true, "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" }, "dependencies": { "regexpu-core": { @@ -2655,9 +2696,9 @@ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "dev": true, "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } } } @@ -2680,38 +2721,38 @@ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", "dev": true, "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" }, "dependencies": { "ansi-styles": { @@ -2726,12 +2767,12 @@ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000823", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" } }, "browserslist": { @@ -2740,8 +2781,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000823", - "electron-to-chromium": "1.3.41" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } }, "chalk": { @@ -2750,11 +2791,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -2777,10 +2818,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -2795,7 +2836,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -2806,8 +2847,8 @@ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", "dev": true, "requires": { - "clap": "1.2.3", - "source-map": "0.5.7" + "clap": "^1.0.9", + "source-map": "^0.5.3" }, "dependencies": { "source-map": { @@ -2824,7 +2865,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "custom-event": { @@ -2845,7 +2886,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "data-uri-to-buffer": { @@ -2866,8 +2907,8 @@ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.3.0" } }, "de-indent": { @@ -2925,8 +2966,8 @@ "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" } }, "defined": { @@ -2941,9 +2982,9 @@ "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", "dev": true, "requires": { - "ast-types": "0.11.3", - "escodegen": "1.8.1", - "esprima": "3.1.3" + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" }, "dependencies": { "esprima": { @@ -2960,12 +3001,12 @@ "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "6.1.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.1", - "p-map": "1.2.0", - "pify": "3.0.0", - "rimraf": "2.6.2" + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" } }, "delayed-stream": { @@ -2986,8 +3027,8 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, "destroy": { @@ -3002,7 +3043,7 @@ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "di": { @@ -3023,9 +3064,9 @@ "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", "dev": true, "requires": { - "bn.js": "4.11.8", - "miller-rabin": "4.0.1", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, "dir-glob": { @@ -3034,8 +3075,8 @@ "integrity": "sha1-CyBdK2rvmCOMooZZioIE0p0KADQ=", "dev": true, "requires": { - "arrify": "1.0.1", - "path-type": "3.0.0" + "arrify": "^1.0.1", + "path-type": "^3.0.0" }, "dependencies": { "path-type": { @@ -3044,7 +3085,7 @@ "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } } } @@ -3055,7 +3096,7 @@ "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", "dev": true, "requires": { - "utila": "0.3.3" + "utila": "~0.3" }, "dependencies": { "utila": { @@ -3072,10 +3113,10 @@ "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", "dev": true, "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" } }, "dom-serializer": { @@ -3084,8 +3125,8 @@ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "dev": true, "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" }, "dependencies": { "domelementtype": { @@ -3114,7 +3155,7 @@ "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "domutils": { @@ -3123,8 +3164,8 @@ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "dev": true, "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" + "dom-serializer": "0", + "domelementtype": "1" } }, "duplexer": { @@ -3139,10 +3180,10 @@ "integrity": "sha1-S7RsF5bqvr7sTKmi5muAjLej2LQ=", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "stream-shift": "1.0.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ecc-jsbn": { @@ -3152,7 +3193,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ee-first": { @@ -3179,13 +3220,13 @@ "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" } }, "emojis-list": { @@ -3200,21 +3241,13 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.19" - } - }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "engine.io": { @@ -3237,7 +3270,7 @@ "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", "dev": true, "requires": { - "mime-types": "2.1.18", + "mime-types": "~2.1.11", "negotiator": "0.6.1" } }, @@ -3315,10 +3348,10 @@ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.8" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" } }, "ent": { @@ -3339,7 +3372,7 @@ "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", "dev": true, "requires": { - "prr": "1.0.1" + "prr": "~1.0.1" } }, "error-ex": { @@ -3348,7 +3381,7 @@ "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "error-stack-parser": { @@ -3357,7 +3390,7 @@ "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", "dev": true, "requires": { - "stackframe": "1.0.4" + "stackframe": "^1.0.3" } }, "es6-promise": { @@ -3383,11 +3416,11 @@ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" }, "dependencies": { "source-map": { @@ -3397,7 +3430,7 @@ "dev": true, "optional": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -3450,8 +3483,8 @@ "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", "dev": true, "requires": { - "md5.js": "1.3.4", - "safe-buffer": "5.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, "expand-braces": { @@ -3460,9 +3493,9 @@ "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", "dev": true, "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" }, "dependencies": { "array-unique": { @@ -3477,7 +3510,7 @@ "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", "dev": true, "requires": { - "expand-range": "0.1.1" + "expand-range": "^0.1.0" } }, "expand-range": { @@ -3486,8 +3519,8 @@ "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", "dev": true, "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" } }, "is-number": { @@ -3510,13 +3543,13 @@ "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" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "debug": { @@ -3534,7 +3567,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -3543,7 +3576,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -3552,7 +3585,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3561,7 +3594,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3572,7 +3605,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3581,7 +3614,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3592,9 +3625,9 @@ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -3611,20 +3644,47 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" }, "dependencies": { "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "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" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "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 + } + } + } } }, "is-number": { @@ -3633,7 +3693,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "isobject": { @@ -3651,7 +3711,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3662,36 +3722,36 @@ "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.2", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.3", + "proxy-addr": "~2.0.3", "qs": "6.5.1", - "range-parser": "1.2.0", + "range-parser": "~1.2.0", "safe-buffer": "5.1.1", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.4.0", - "type-is": "1.6.16", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -3706,9 +3766,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extend-shallow": { @@ -3717,8 +3777,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -3727,35 +3787,25 @@ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } }, - "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha1-BFURz9jRM/OEZnPRBHwVTiFK09U=", - "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.19", - "tmp": "0.0.33" - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", "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" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -3764,7 +3814,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -3773,7 +3823,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3784,24 +3834,36 @@ "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=", "dev": true, "requires": { - "async": "2.6.0", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0", - "webpack-sources": "1.1.0" + "async": "^2.1.2", + "loader-utils": "^1.0.2", + "schema-utils": "^0.3.0", + "webpack-sources": "^1.0.1" } }, "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", "dev": true, "requires": { - "concat-stream": "1.6.0", - "debug": "2.6.9", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" }, "dependencies": { + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -3811,19 +3873,23 @@ "ms": "2.0.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } }, - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "minimist": "0.0.8" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } } } @@ -3858,30 +3924,13 @@ "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", "dev": true }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "1.2.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, "file-loader": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", "integrity": "sha1-T/HfKK84cZpgmAk7iMgscdF5SjQ=", "dev": true, "requires": { - "loader-utils": "1.1.0" + "loader-utils": "^1.0.2" } }, "file-uri-to-path": { @@ -3908,10 +3957,10 @@ "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" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -3920,7 +3969,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3932,12 +3981,12 @@ "dev": true, "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.4.0", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" }, "dependencies": { "debug": { @@ -3957,9 +4006,9 @@ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", "dev": true, "requires": { - "commondir": "1.0.1", - "make-dir": "1.2.0", - "pkg-dir": "2.0.0" + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" } }, "find-up": { @@ -3968,7 +4017,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "flatten": { @@ -3983,16 +4032,16 @@ "integrity": "sha1-xdWG7zivYJdlC0m8QbVfq7GfNb0=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { - "debug": "3.1.0" + "debug": "=3.1.0" } }, "for-in": { @@ -4007,7 +4056,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -4022,9 +4071,9 @@ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { - "asynckit": "0.4.0", + "asynckit": "^0.4.0", "combined-stream": "1.0.6", - "mime-types": "2.1.18" + "mime-types": "^2.1.12" } }, "formatio": { @@ -4033,7 +4082,7 @@ "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", "dev": true, "requires": { - "samsam": "1.3.0" + "samsam": "1.x" } }, "forwarded": { @@ -4048,7 +4097,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -4063,9 +4112,9 @@ "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=", "dev": true, "requires": { - "chalk": "1.1.3", - "error-stack-parser": "2.0.1", - "string-length": "1.0.1" + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-length": "^1.0.1" }, "dependencies": { "ansi-styles": { @@ -4080,11 +4129,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "supports-color": { @@ -4101,8 +4150,8 @@ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, "fs-extra": { @@ -4111,9 +4160,9 @@ "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" } }, "fs-write-stream-atomic": { @@ -4122,17 +4171,16 @@ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "iferr": "0.1.5", - "imurmurhash": "0.1.4", - "readable-stream": "2.3.5" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.1.3", @@ -4141,8 +4189,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "abbrev": { @@ -4159,15 +4207,16 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.1.1", @@ -4183,8 +4232,8 @@ "dev": true, "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "asn1": { @@ -4225,8 +4274,7 @@ "balanced-match": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" }, "bcrypt-pbkdf": { "version": "1.0.1", @@ -4235,16 +4283,15 @@ "dev": true, "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "boom": { @@ -4252,25 +4299,24 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, + "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "brace-expansion": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "dev": true, "requires": { - "balanced-match": "0.4.2", + "balanced-match": "^0.4.1", "concat-map": "0.0.1" } }, "buffer-shims": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" }, "caseless": { "version": "0.12.0", @@ -4290,42 +4336,44 @@ "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 + "dev": true, + "optional": true }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, + "optional": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "dev": true, + "optional": 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=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, + "optional": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "dashdash": { @@ -4335,7 +4383,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -4348,11 +4396,9 @@ } }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "optional": true, + "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" } @@ -4360,15 +4406,14 @@ "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, - "optional": true + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" }, "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 + "dev": true, + "optional": true }, "delegates": { "version": "1.0.0", @@ -4391,7 +4436,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "extend": { @@ -4405,7 +4450,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true + "dev": true, + "optional": true }, "forever-agent": { "version": "0.6.1", @@ -4429,31 +4475,29 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fstream-ignore": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "dev": true, - "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" + }, + "dependencies": { + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + } } }, "gauge": { @@ -4463,14 +4507,14 @@ "dev": true, "optional": true, "requires": { - "aproba": "1.1.1", - "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" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "getpass": { @@ -4480,7 +4524,7 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" }, "dependencies": { "assert-plus": { @@ -4496,22 +4540,15 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": 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" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, "har-schema": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", @@ -4542,18 +4579,20 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, + "optional": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true + "dev": true, + "optional": true }, "http-signature": { "version": "1.1.1", @@ -4562,39 +4601,36 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ini": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true, - "optional": true + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" }, "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, + "optional": true, "requires": { "number-is-nan": "1.0.1" } @@ -4609,8 +4645,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isstream": { "version": "0.1.2", @@ -4626,7 +4661,7 @@ "dev": true, "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "jsbn": { @@ -4650,7 +4685,7 @@ "dev": true, "optional": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -4693,13 +4728,15 @@ "version": "1.27.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true + "dev": true, + "optional": true }, "mime-types": { "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", "dev": true, + "optional": true, "requires": { "mime-db": "1.27.0" } @@ -4708,33 +4745,32 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { - "brace-expansion": "1.1.7" + "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "dev": true, + "optional": true }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, "node-pre-gyp": { "version": "0.6.39", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz", @@ -4742,17 +4778,80 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "dev": true, + "optional": true, + "requires": { + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true, + "optional": true + } + } + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "tar-pack": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "dev": true, + "optional": true, + "requires": { + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" + } + } } }, "nopt": { @@ -4773,17 +4872,18 @@ "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" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "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 + "dev": true, + "optional": true }, "oauth-sign": { "version": "0.8.2", @@ -4803,9 +4903,8 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -4836,8 +4935,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "performance-now": { "version": "0.2.0", @@ -4849,8 +4947,7 @@ "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=", - "dev": true + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "punycode": { "version": "1.4.1", @@ -4870,21 +4967,17 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true, - "optional": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "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, - "optional": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, @@ -4892,15 +4985,14 @@ "version": "2.2.9", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "dev": true, "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.1", - "util-deprecate": "1.0.2" + "buffer-shims": "~1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "request": { @@ -4910,44 +5002,42 @@ "dev": true, "optional": true, "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" }, "semver": { "version": "5.3.0", @@ -4975,8 +5065,9 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, + "optional": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "sshpk": { @@ -4986,15 +5077,15 @@ "dev": true, "optional": 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", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jodid25519": "^1.0.0", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" }, "dependencies": { "assert-plus": { @@ -5011,70 +5102,59 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, + "optional": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "dev": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": 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, + "optional": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "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, - "optional": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "tar": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "dev": true, - "optional": true, "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" } }, "tough-cookie": { @@ -5084,7 +5164,7 @@ "dev": true, "optional": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "tunnel-agent": { @@ -5094,7 +5174,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.0.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -5107,15 +5187,12 @@ "uid-number": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { "version": "3.0.1", @@ -5141,24 +5218,34 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" } } }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", "dev": true, "requires": { - "readable-stream": "1.1.14", + "readable-stream": "1.1.x", "xregexp": "2.0.0" }, "dependencies": { @@ -5174,10 +5261,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -5212,12 +5299,12 @@ "integrity": "sha1-29ysrNjGCKODFoaTaBF2l6FjHFk=", "dev": true, "requires": { - "data-uri-to-buffer": "1.2.0", - "debug": "2.6.9", - "extend": "3.0.1", - "file-uri-to-path": "1.0.0", - "ftp": "0.3.10", - "readable-stream": "2.3.5" + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "3", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" }, "dependencies": { "debug": { @@ -5243,21 +5330,20 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", - "dev": 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" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -5266,8 +5352,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -5282,7 +5368,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -5293,7 +5379,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -5308,7 +5394,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -5325,11 +5411,11 @@ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { @@ -5343,8 +5429,7 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "graceful-readlink": { "version": "1.0.1", @@ -5364,8 +5449,8 @@ "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", "dev": true, "requires": { - "duplexer": "0.1.1", - "pify": "3.0.0" + "duplexer": "^0.1.1", + "pify": "^3.0.0" } }, "handlebars": { @@ -5374,10 +5459,10 @@ "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" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "async": { @@ -5392,7 +5477,7 @@ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } }, "uglify-js": { @@ -5402,9 +5487,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "source-map": { @@ -5430,8 +5515,8 @@ "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "dev": true, "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" } }, "has": { @@ -5440,15 +5525,16 @@ "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.0.2" } }, "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" + "ansi-regex": "^2.0.0" } }, "has-binary": { @@ -5477,8 +5563,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-value": { "version": "1.0.0", @@ -5486,9 +5571,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -5497,8 +5582,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "kind-of": { @@ -5507,7 +5592,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5518,7 +5603,7 @@ "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "^2.0.1" } }, "hash-sum": { @@ -5533,8 +5618,8 @@ "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=", "dev": true, "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" } }, "hasha": { @@ -5543,8 +5628,8 @@ "integrity": "sha1-eNfL/B5tZjA/55g3NlmEUXsvbuE=", "dev": true, "requires": { - "is-stream": "1.1.0", - "pinkie-promise": "2.0.1" + "is-stream": "^1.0.1", + "pinkie-promise": "^2.0.0" } }, "hawk": { @@ -5553,10 +5638,10 @@ "integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", "dev": true, "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.1", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "he": { @@ -5571,9 +5656,9 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, "hoek": { @@ -5588,8 +5673,8 @@ "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, "hosted-git-info": { @@ -5616,13 +5701,13 @@ "integrity": "sha1-a8ptUzp/GKR23GrrPREwcatcFl4=", "dev": true, "requires": { - "camel-case": "3.0.0", - "clean-css": "4.1.11", - "commander": "2.15.1", - "he": "1.1.1", - "param-case": "2.1.1", - "relateurl": "0.2.7", - "uglify-js": "3.3.18" + "camel-case": "3.0.x", + "clean-css": "4.1.x", + "commander": "2.15.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.3.x" } }, "html-webpack-plugin": { @@ -5631,12 +5716,12 @@ "integrity": "sha1-f5xCG36pHsRg9WUn1430hO51N9U=", "dev": true, "requires": { - "bluebird": "3.5.1", - "html-minifier": "3.5.13", - "loader-utils": "0.2.17", - "lodash": "4.17.5", - "pretty-error": "2.1.1", - "toposort": "1.0.6" + "bluebird": "^3.4.7", + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "toposort": "^1.0.0" }, "dependencies": { "loader-utils": { @@ -5645,10 +5730,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } } } @@ -5659,10 +5744,10 @@ "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", "dev": true, "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" }, "dependencies": { "domutils": { @@ -5671,7 +5756,7 @@ "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", "dev": true, "requires": { - "domelementtype": "1.3.0" + "domelementtype": "1" } }, "isarray": { @@ -5686,10 +5771,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "string_decoder": { @@ -5706,10 +5791,10 @@ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.4.0" + "statuses": ">= 1.4.0 < 2" } }, "http-proxy": { @@ -5718,8 +5803,8 @@ "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", "dev": true, "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" + "eventemitter3": "1.x.x", + "requires-port": "1.x.x" } }, "http-proxy-agent": { @@ -5728,9 +5813,9 @@ "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.1" + "agent-base": "2", + "debug": "2", + "extend": "3" }, "dependencies": { "debug": { @@ -5750,10 +5835,10 @@ "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", "dev": true, "requires": { - "http-proxy": "1.16.2", - "is-glob": "3.1.0", - "lodash": "4.17.5", - "micromatch": "2.3.11" + "http-proxy": "^1.16.2", + "is-glob": "^3.1.0", + "lodash": "^4.17.2", + "micromatch": "^2.3.11" }, "dependencies": { "arr-diff": { @@ -5762,7 +5847,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "array-unique": { @@ -5777,9 +5862,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "expand-brackets": { @@ -5788,7 +5873,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "extglob": { @@ -5797,7 +5882,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" }, "dependencies": { "is-extglob": { @@ -5814,7 +5899,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } }, "kind-of": { @@ -5823,7 +5908,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "micromatch": { @@ -5832,19 +5917,19 @@ "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" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" }, "dependencies": { "is-extglob": { @@ -5859,7 +5944,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -5872,9 +5957,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.14.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-browserify": { @@ -5889,9 +5974,9 @@ "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.1" + "agent-base": "2", + "debug": "2", + "extend": "3" }, "dependencies": { "debug": { @@ -5908,7 +5993,8 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=" + "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=", + "dev": true }, "icss-replace-symbols": { "version": "1.1.0", @@ -5922,7 +6008,7 @@ "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, "requires": { - "postcss": "6.0.21" + "postcss": "^6.0.1" } }, "ieee754": { @@ -5955,7 +6041,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "indexes-of": { @@ -5974,17 +6060,15 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inject-loader": { "version": "3.0.1", @@ -5992,51 +6076,7 @@ "integrity": "sha1-hEpFlhUM9rhkwveYBtQKLK7kwsc=", "dev": true, "requires": { - "babel-core": "6.26.0" - } - }, - "inquirer": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz", - "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=", - "requires": { - "ansi-escapes": "1.4.0", - "chalk": "1.1.3", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.5", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx": "4.1.0", - "string-width": "2.1.1", - "strip-ansi": "3.0.1", - "through": "2.3.8" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "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=" - } + "babel-core": "~6" } }, "interpret": { @@ -6051,7 +6091,7 @@ "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -6084,7 +6124,7 @@ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-arrayish": { @@ -6099,13 +6139,14 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -6113,7 +6154,7 @@ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-data-descriptor": { @@ -6122,7 +6163,7 @@ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -6131,9 +6172,9 @@ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-directory": { @@ -6154,7 +6195,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -6175,21 +6216,16 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, - "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=" - }, "is-glob": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-number": { @@ -6198,7 +6234,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6207,7 +6243,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6218,7 +6254,7 @@ "integrity": "sha1-dkZiRnH9fqVYzNmieVGC8pWPGyQ=", "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -6241,7 +6277,7 @@ "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", "dev": true, "requires": { - "is-path-inside": "1.0.1" + "is-path-inside": "^1.0.0" } }, "is-path-inside": { @@ -6250,7 +6286,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-obj": { @@ -6265,7 +6301,7 @@ "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-posix-bracket": { @@ -6280,15 +6316,11 @@ "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=" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-svg": { "version": "2.1.0", @@ -6296,7 +6328,7 @@ "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", "dev": true, "requires": { - "html-comment-regex": "1.1.1" + "html-comment-regex": "^1.1.0" } }, "is-typedarray": { @@ -6359,20 +6391,20 @@ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", "dev": true, "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.11", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.3.0", - "wordwrap": "1.0.0" + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" }, "dependencies": { "async": { @@ -6387,11 +6419,11 @@ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "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" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-flag": { @@ -6406,7 +6438,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } }, "wordwrap": { @@ -6429,13 +6461,13 @@ "integrity": "sha1-cktLbKzrqGktPx+dByfiecQBr3s=", "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" + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.0", + "semver": "^5.3.0" } }, "js-base64": { @@ -6451,13 +6483,21 @@ "dev": true }, "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { - "argparse": "1.0.10", - "esprima": "2.7.3" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } } }, "jsbn": { @@ -6497,7 +6537,7 @@ "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "dev": true, "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -6524,7 +6564,7 @@ "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -6551,33 +6591,33 @@ "integrity": "sha1-hcwI6eCiLXzpzKN8ShvoJPaisa4=", "dev": true, "requires": { - "bluebird": "3.5.1", - "body-parser": "1.18.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.6", - "core-js": "2.5.4", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.4.1", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.2.0", - "range-parser": "1.2.0", - "rimraf": "2.6.2", - "safe-buffer": "5.1.1", + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", "socket.io": "1.7.3", - "source-map": "0.5.7", + "source-map": "^0.5.3", "tmp": "0.0.31", - "useragent": "2.3.0" + "useragent": "^2.1.12" }, "dependencies": { "lodash": { @@ -6598,7 +6638,7 @@ "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.1" } } } @@ -6609,11 +6649,11 @@ "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", "dev": true, "requires": { - "dateformat": "1.0.12", - "istanbul": "0.4.5", - "lodash": "3.10.1", - "minimatch": "3.0.4", - "source-map": "0.5.7" + "dateformat": "^1.0.6", + "istanbul": "^0.4.0", + "lodash": "^3.8.0", + "minimatch": "^3.0.0", + "source-map": "^0.5.1" }, "dependencies": { "lodash": { @@ -6637,6 +6677,14 @@ "dev": true, "requires": { "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 + } } }, "karma-phantomjs-launcher": { @@ -6645,8 +6693,8 @@ "integrity": "sha1-0jyjSAG9qYY60xjju0vUBisTrNI=", "dev": true, "requires": { - "lodash": "4.17.5", - "phantomjs-prebuilt": "2.1.16" + "lodash": "^4.0.1", + "phantomjs-prebuilt": "^2.1.7" } }, "karma-phantomjs-shim": { @@ -6661,7 +6709,7 @@ "integrity": "sha1-pZfltKE2n+ez19dsCe0gYaOOdH8=", "dev": true, "requires": { - "lolex": "1.6.0" + "lolex": "^1.6.0" } }, "karma-sourcemap-loader": { @@ -6670,7 +6718,7 @@ "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.2" } }, "karma-spec-reporter": { @@ -6679,7 +6727,7 @@ "integrity": "sha1-SDDccUihVcfXoYbmMjOaDYD63sM=", "dev": true, "requires": { - "colors": "1.1.2" + "colors": "^1.1.2" } }, "karma-webpack": { @@ -6688,12 +6736,12 @@ "integrity": "sha1-z1bjBWwVt3R6C7IUD8mmvkHdnwI=", "dev": true, "requires": { - "async": "2.6.0", - "babel-runtime": "6.26.0", - "loader-utils": "1.1.0", - "lodash": "4.17.5", - "source-map": "0.5.7", - "webpack-dev-middleware": "1.12.2" + "async": "^2.0.0", + "babel-runtime": "^6.0.0", + "loader-utils": "^1.0.0", + "lodash": "^4.0.0", + "source-map": "^0.5.6", + "webpack-dev-middleware": "^1.12.0" }, "dependencies": { "source-map": { @@ -6711,9 +6759,9 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "klaw": { @@ -6722,7 +6770,7 @@ "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "lazy-cache": { @@ -6737,7 +6785,7 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "levn": { @@ -6746,8 +6794,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "load-json-file": { @@ -6756,11 +6804,11 @@ "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" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" }, "dependencies": { "pify": { @@ -6783,9 +6831,9 @@ "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" } }, "locate-path": { @@ -6794,14 +6842,15 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha1-maktZcAnLevoyWtgV7yPv6O+1RE=" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true }, "lodash._arraycopy": { "version": "3.0.0", @@ -6821,8 +6870,8 @@ "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._baseclone": { @@ -6831,12 +6880,12 @@ "integrity": "sha1-MDUZv2OT/n5C802LYw73eU41Qrc=", "dev": true, "requires": { - "lodash._arraycopy": "3.0.0", - "lodash._arrayeach": "3.0.0", - "lodash._baseassign": "3.2.0", - "lodash._basefor": "3.0.3", - "lodash.isarray": "3.0.4", - "lodash.keys": "3.1.2" + "lodash._arraycopy": "^3.0.0", + "lodash._arrayeach": "^3.0.0", + "lodash._baseassign": "^3.0.0", + "lodash._basefor": "^3.0.0", + "lodash.isarray": "^3.0.0", + "lodash.keys": "^3.0.0" } }, "lodash._basecopy": { @@ -6893,9 +6942,9 @@ "integrity": "sha1-hGiMc9MrWpDKJWFpY/GJJSqZcEM=", "dev": true, "requires": { - "lodash._baseclone": "3.3.0", - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9" + "lodash._baseclone": "^3.0.0", + "lodash._bindcallback": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.create": { @@ -6904,9 +6953,9 @@ "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" } }, "lodash.defaultsdeep": { @@ -6915,12 +6964,12 @@ "integrity": "sha1-bBpYbmxWR7DmTi15gUG4g2FYvoo=", "dev": true, "requires": { - "lodash._baseclone": "4.5.7", - "lodash._stack": "4.1.3", - "lodash.isplainobject": "4.0.6", - "lodash.keysin": "4.2.0", - "lodash.mergewith": "4.6.1", - "lodash.rest": "4.0.5" + "lodash._baseclone": "^4.0.0", + "lodash._stack": "^4.0.0", + "lodash.isplainobject": "^4.0.0", + "lodash.keysin": "^4.0.0", + "lodash.mergewith": "^4.0.0", + "lodash.rest": "^4.0.0" }, "dependencies": { "lodash._baseclone": { @@ -6931,11 +6980,6 @@ } } }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", @@ -6960,9 +7004,9 @@ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" } }, "lodash.keysin": { @@ -6978,9 +7022,9 @@ "dev": true }, "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha1-Y5BX5ybDr72z59QnQcqo1uQzWSc=", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true }, "lodash.rest": { @@ -6989,11 +7033,6 @@ "integrity": "sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo=", "dev": true }, - "lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg=" - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -7006,7 +7045,7 @@ "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", "dev": true, "requires": { - "chalk": "2.3.2" + "chalk": "^2.0.1" } }, "log4js": { @@ -7015,8 +7054,8 @@ "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", "dev": true, "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" + "readable-stream": "~1.0.2", + "semver": "~4.3.3" }, "dependencies": { "isarray": { @@ -7031,10 +7070,10 @@ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "semver": { @@ -7069,7 +7108,7 @@ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "loud-rejection": { @@ -7078,8 +7117,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lower-case": { @@ -7094,14 +7133,14 @@ "integrity": "sha1-RSNLLm4vKzPaElYkxGZJKaAiTD8=", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.9.tgz", + "integrity": "sha512-k4F1JUof6cQXxNFzx3thLby4oJzXTXQueAOOts944Vqizn+Rjc2QNFenT9FJSLU1CH3PmrHRSyZs2E+Cqw+P2w==", "dev": true }, "make-dir": { @@ -7110,7 +7149,7 @@ "integrity": "sha1-bWpJ7q1KrilsU7vzoaAIvWyJRps=", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "map-cache": { @@ -7131,7 +7170,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "math-expression-evaluator": { @@ -7140,14 +7179,20 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, "md5.js": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "dev": true, "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" }, "dependencies": { "hash-base": { @@ -7156,8 +7201,8 @@ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } } } @@ -7174,8 +7219,8 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "dev": true, "requires": { - "errno": "0.1.7", - "readable-stream": "2.3.5" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "meow": { @@ -7184,16 +7229,16 @@ "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" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" } }, "merge-descriptors": { @@ -7214,19 +7259,19 @@ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "miller-rabin": { @@ -7235,8 +7280,8 @@ "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", "dev": true, "requires": { - "bn.js": "4.11.8", - "brorand": "1.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" } }, "mime": { @@ -7257,13 +7302,14 @@ "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=", "dev": true, "requires": { - "mime-db": "1.33.0" + "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": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=" + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "dev": true }, "minimalistic-assert": { "version": "1.0.0", @@ -7281,15 +7327,14 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", - "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mississippi": { "version": "2.0.0", @@ -7297,54 +7342,45 @@ "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=", "dev": true, "requires": { - "concat-stream": "1.6.0", - "duplexify": "3.5.4", - "end-of-stream": "1.4.1", - "flush-write-stream": "1.0.3", - "from2": "2.3.0", - "parallel-transform": "1.1.0", - "pump": "2.0.1", - "pumpify": "1.4.0", - "stream-each": "1.2.2", - "through2": "2.0.3" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "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": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "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=", - "dev": true, + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "mkpath": { @@ -7379,7 +7415,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "debug": { @@ -7397,12 +7433,12 @@ "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", "dev": 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" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-flag": { @@ -7411,13 +7447,28 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -7447,7 +7498,7 @@ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "graceful-readlink": ">= 1.0.0" } }, "debug": { @@ -7471,12 +7522,12 @@ "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", "dev": 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" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "has-flag": { @@ -7485,6 +7536,21 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "ms": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", @@ -7497,7 +7563,7 @@ "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -7513,12 +7579,12 @@ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "aproba": "1.2.0", - "copy-concurrently": "1.0.5", - "fs-write-stream-atomic": "1.0.10", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "run-queue": "1.0.3" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" } }, "ms": { @@ -7526,11 +7592,6 @@ "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=" - }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", @@ -7544,18 +7605,18 @@ "integrity": "sha1-h59xUMstq3pHElkGbBBO7m4Pp8I=", "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" + "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.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, "native-promise-only": { @@ -7588,7 +7649,7 @@ "integrity": "sha1-FW0XzQWMvDH0OrGOkV9+wpf7U+A=", "dev": true, "requires": { - "chai-nightwatch": "0.1.1", + "chai-nightwatch": "~0.1.x", "ejs": "2.5.7", "lodash.clone": "3.0.3", "lodash.defaultsdeep": "4.3.2", @@ -7606,7 +7667,7 @@ "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.0.0" } }, "q": { @@ -7623,17 +7684,13 @@ "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=", "dev": true, "requires": { - "lower-case": "1.1.4" + "lower-case": "^1.1.1" } }, "node-fetch": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", - "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "node-libs-browser": { "version": "2.1.0", @@ -7641,28 +7698,28 @@ "integrity": "sha1-X5QmPUBPbkR2fXJpAf/wVHjWAN8=", "dev": true, "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.2.0", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.12.0", - "domain-browser": "1.2.0", - "events": "1.1.1", - "https-browserify": "1.0.0", - "os-browserify": "0.3.0", + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.5", - "stream-browserify": "2.0.1", - "stream-http": "2.8.1", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.6", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", + "url": "^0.11.0", + "util": "^0.10.3", "vm-browserify": "0.0.4" } }, @@ -7672,7 +7729,7 @@ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "abbrev": "1.0.9" + "abbrev": "1" } }, "normalize-package-data": { @@ -7681,10 +7738,10 @@ "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "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" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -7693,7 +7750,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "normalize-range": { @@ -7708,10 +7765,10 @@ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" } }, "nth-check": { @@ -7720,7 +7777,7 @@ "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", "dev": true, "requires": { - "boolbase": "1.0.0" + "boolbase": "~1.0.0" } }, "num2fraction": { @@ -7744,7 +7801,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-component": { "version": "0.0.3", @@ -7758,9 +7816,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -7769,7 +7827,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -7778,7 +7836,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-data-descriptor": { @@ -7787,7 +7845,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -7796,9 +7854,9 @@ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -7815,7 +7873,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -7826,7 +7884,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.omit": { @@ -7835,8 +7893,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -7845,7 +7903,7 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "on-finished": { @@ -7861,63 +7919,17 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, "requires": { - "mimic-fn": "1.2.0" - } - }, - "opencollective": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz", - "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=", - "requires": { - "babel-polyfill": "6.23.0", - "chalk": "1.1.3", - "inquirer": "3.0.6", - "minimist": "1.2.0", - "node-fetch": "1.6.3", - "opn": "4.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=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "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" - } - }, - "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", - "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } + "mimic-fn": "^1.0.0" } }, "opener": { @@ -7932,7 +7944,7 @@ "integrity": "sha1-ZIcVZchjh18FLP31PT48ta21Oxw=", "dev": true, "requires": { - "is-wsl": "1.1.0" + "is-wsl": "^1.1.0" } }, "optimist": { @@ -7941,8 +7953,8 @@ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -7959,8 +7971,8 @@ "integrity": "sha1-UcrnEjDskaTBV2SXFeR0mODLRgs=", "dev": true, "requires": { - "underscore": "1.8.3", - "webpack-sources": "0.1.5" + "underscore": "^1.8.3", + "webpack-sources": "^0.1.0" }, "dependencies": { "source-list-map": { @@ -7981,8 +7993,8 @@ "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", "dev": true, "requires": { - "source-list-map": "0.1.8", - "source-map": "0.5.7" + "source-list-map": "~0.1.7", + "source-map": "~0.5.3" } } } @@ -7993,12 +8005,12 @@ "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" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { @@ -8021,10 +8033,10 @@ "integrity": "sha1-iERYIVs6XUCXWSKF+TMhu3p54uU=", "dev": true, "requires": { - "chalk": "2.3.2", - "cli-cursor": "2.1.0", - "cli-spinners": "1.3.0", - "log-symbols": "2.2.0" + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" } }, "os-browserify": { @@ -8045,13 +8057,14 @@ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { - "lcid": "1.0.0" + "lcid": "^1.0.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=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "p-limit": { "version": "1.2.0", @@ -8059,7 +8072,7 @@ "integrity": "sha1-DpK2vty1nwIsE9DxlJ3ILRWQnxw=", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -8068,7 +8081,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -8089,15 +8102,15 @@ "integrity": "sha1-NKOF399h0vDsrOCIWMdF0+eR/U0=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.1", - "get-uri": "2.0.1", - "http-proxy-agent": "1.0.0", - "https-proxy-agent": "1.0.0", - "pac-resolver": "2.0.0", - "raw-body": "2.3.2", - "socks-proxy-agent": "2.1.1" + "agent-base": "2", + "debug": "2", + "extend": "3", + "get-uri": "2", + "http-proxy-agent": "1", + "https-proxy-agent": "1", + "pac-resolver": "~2.0.0", + "raw-body": "2", + "socks-proxy-agent": "2" }, "dependencies": { "debug": { @@ -8117,11 +8130,11 @@ "integrity": "sha1-mbiNLxk/ve78HJpSnB8yYKtSd80=", "dev": true, "requires": { - "co": "3.0.6", - "degenerator": "1.0.4", + "co": "~3.0.6", + "degenerator": "~1.0.2", "ip": "1.0.1", - "netmask": "1.0.6", - "thunkify": "2.1.2" + "netmask": "~1.0.4", + "thunkify": "~2.1.1" }, "dependencies": { "co": { @@ -8144,9 +8157,9 @@ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, "requires": { - "cyclist": "0.2.2", - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, "param-case": { @@ -8155,7 +8168,7 @@ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", "dev": true, "requires": { - "no-case": "2.3.2" + "no-case": "^2.2.0" } }, "parse-asn1": { @@ -8164,11 +8177,11 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.10.1", - "browserify-aes": "1.2.0", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" } }, "parse-glob": { @@ -8177,10 +8190,10 @@ "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" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -8195,7 +8208,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -8206,7 +8219,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "parsejson": { @@ -8215,7 +8228,7 @@ "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseqs": { @@ -8224,7 +8237,7 @@ "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseuri": { @@ -8233,7 +8246,7 @@ "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "dev": true, "requires": { - "better-assert": "1.0.2" + "better-assert": "~1.0.0" } }, "parseurl": { @@ -8269,8 +8282,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -8296,9 +8308,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "pify": { @@ -8315,11 +8327,11 @@ "integrity": "sha1-o14TxkeZsGzhUyD0WcIw5o5zut4=", "dev": true, "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.11" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, "pend": { @@ -8340,15 +8352,15 @@ "integrity": "sha1-79ISpKOWbTZHaE6ouniFSb4q7+8=", "dev": true, "requires": { - "es6-promise": "4.2.4", - "extract-zip": "1.6.6", - "fs-extra": "1.0.0", - "hasha": "2.2.0", - "kew": "0.7.0", - "progress": "1.1.8", - "request": "2.85.0", - "request-progress": "2.0.1", - "which": "1.3.0" + "es6-promise": "^4.0.3", + "extract-zip": "^1.6.5", + "fs-extra": "^1.0.0", + "hasha": "^2.2.0", + "kew": "^0.7.0", + "progress": "^1.1.8", + "request": "^2.81.0", + "request-progress": "^2.0.1", + "which": "^1.2.10" } }, "pify": { @@ -8360,14 +8372,16 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "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" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -8376,7 +8390,7 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" } }, "popper.js": { @@ -8384,6 +8398,11 @@ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.2.tgz", "integrity": "sha1-Bm6OFhPmXmm6BQ9LeOe9TI1U5EM=" }, + "portal-vue": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", + "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -8396,9 +8415,9 @@ "integrity": "sha1-gmVmJpTt356aWWDbbaM8OeTNBp0=", "dev": true, "requires": { - "chalk": "2.3.2", - "source-map": "0.6.1", - "supports-color": "5.3.0" + "chalk": "^2.3.2", + "source-map": "^0.6.1", + "supports-color": "^5.3.0" }, "dependencies": { "supports-color": { @@ -8407,7 +8426,7 @@ "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -8418,9 +8437,9 @@ "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" }, "dependencies": { "ansi-styles": { @@ -8435,11 +8454,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8462,10 +8481,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8480,7 +8499,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8491,9 +8510,9 @@ "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", "dev": true, "requires": { - "colormin": "1.1.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" }, "dependencies": { "ansi-styles": { @@ -8508,11 +8527,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8535,10 +8554,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8553,7 +8572,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8564,8 +8583,8 @@ "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" }, "dependencies": { "ansi-styles": { @@ -8580,11 +8599,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8607,10 +8626,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8625,7 +8644,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8636,7 +8655,7 @@ "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.14" }, "dependencies": { "ansi-styles": { @@ -8651,11 +8670,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8678,10 +8697,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8696,7 +8715,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8707,7 +8726,7 @@ "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.4" }, "dependencies": { "ansi-styles": { @@ -8722,11 +8741,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8749,10 +8768,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8767,7 +8786,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8778,7 +8797,7 @@ "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.14" }, "dependencies": { "ansi-styles": { @@ -8793,11 +8812,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8820,10 +8839,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8838,7 +8857,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8849,7 +8868,7 @@ "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.16" }, "dependencies": { "ansi-styles": { @@ -8864,11 +8883,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8891,10 +8910,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8909,7 +8928,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8920,8 +8939,8 @@ "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", "dev": true, "requires": { - "postcss": "5.2.18", - "uniqs": "2.0.0" + "postcss": "^5.0.14", + "uniqs": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -8936,11 +8955,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -8963,10 +8982,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -8981,7 +9000,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -8992,8 +9011,8 @@ "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "dev": true, "requires": { - "postcss": "5.2.18", - "uniqid": "4.1.1" + "postcss": "^5.0.4", + "uniqid": "^4.0.0" }, "dependencies": { "ansi-styles": { @@ -9008,11 +9027,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9035,10 +9054,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9053,7 +9072,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9064,10 +9083,10 @@ "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", "dev": true, "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0", + "postcss-load-options": "^1.2.0", + "postcss-load-plugins": "^2.3.0" } }, "postcss-load-options": { @@ -9076,8 +9095,8 @@ "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", "dev": true, "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0" } }, "postcss-load-plugins": { @@ -9086,8 +9105,8 @@ "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", "dev": true, "requires": { - "cosmiconfig": "2.2.2", - "object-assign": "4.1.1" + "cosmiconfig": "^2.1.1", + "object-assign": "^4.1.0" } }, "postcss-merge-idents": { @@ -9096,9 +9115,9 @@ "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", "dev": true, "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" }, "dependencies": { "ansi-styles": { @@ -9113,11 +9132,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9140,10 +9159,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9158,7 +9177,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9169,7 +9188,7 @@ "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.4" }, "dependencies": { "ansi-styles": { @@ -9184,11 +9203,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9211,10 +9230,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9229,7 +9248,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9240,11 +9259,11 @@ "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", "dev": true, "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" }, "dependencies": { "ansi-styles": { @@ -9259,8 +9278,8 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000823", - "electron-to-chromium": "1.3.41" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } }, "chalk": { @@ -9269,11 +9288,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9296,10 +9315,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9314,7 +9333,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9331,9 +9350,9 @@ "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", "dev": true, "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -9348,11 +9367,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9375,10 +9394,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9393,7 +9412,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9404,8 +9423,8 @@ "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" }, "dependencies": { "ansi-styles": { @@ -9420,11 +9439,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9447,10 +9466,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9465,7 +9484,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9476,10 +9495,10 @@ "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", "dev": true, "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -9494,11 +9513,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9521,10 +9540,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9539,7 +9558,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9550,10 +9569,10 @@ "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", "dev": true, "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-selector-parser": "2.2.3" + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -9568,11 +9587,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9595,10 +9614,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9613,7 +9632,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9624,7 +9643,7 @@ "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "dev": true, "requires": { - "postcss": "6.0.21" + "postcss": "^6.0.1" } }, "postcss-modules-local-by-default": { @@ -9633,8 +9652,8 @@ "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "dev": true, "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.21" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" } }, "postcss-modules-scope": { @@ -9643,8 +9662,8 @@ "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "dev": true, "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.21" + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" } }, "postcss-modules-values": { @@ -9653,8 +9672,8 @@ "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "dev": true, "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.21" + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" } }, "postcss-normalize-charset": { @@ -9663,7 +9682,7 @@ "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.5" }, "dependencies": { "ansi-styles": { @@ -9678,11 +9697,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9705,10 +9724,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9723,7 +9742,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9734,10 +9753,10 @@ "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", "dev": true, "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" }, "dependencies": { "ansi-styles": { @@ -9752,11 +9771,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9779,10 +9798,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9797,7 +9816,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9808,8 +9827,8 @@ "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" }, "dependencies": { "ansi-styles": { @@ -9824,11 +9843,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9851,10 +9870,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9869,7 +9888,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9880,8 +9899,8 @@ "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", "dev": true, "requires": { - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" }, "dependencies": { "ansi-styles": { @@ -9896,11 +9915,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9923,10 +9942,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -9941,7 +9960,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -9952,7 +9971,7 @@ "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", "dev": true, "requires": { - "postcss": "5.2.18" + "postcss": "^5.0.4" }, "dependencies": { "ansi-styles": { @@ -9967,11 +9986,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -9994,10 +10013,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -10012,7 +10031,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -10023,9 +10042,9 @@ "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", "dev": true, "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0" + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" }, "dependencies": { "ansi-styles": { @@ -10040,11 +10059,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -10067,10 +10086,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -10085,7 +10104,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -10096,9 +10115,9 @@ "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", "dev": true, "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" } }, "postcss-svgo": { @@ -10107,10 +10126,10 @@ "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", "dev": true, "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.18", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" }, "dependencies": { "ansi-styles": { @@ -10125,11 +10144,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -10152,10 +10171,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -10170,7 +10189,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -10181,9 +10200,9 @@ "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", "dev": true, "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.18", - "uniqs": "2.0.0" + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -10198,11 +10217,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -10225,10 +10244,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -10243,7 +10262,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -10260,9 +10279,9 @@ "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", "dev": true, "requires": { - "has": "1.0.1", - "postcss": "5.2.18", - "uniqs": "2.0.0" + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -10277,11 +10296,11 @@ "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" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "dependencies": { "supports-color": { @@ -10304,10 +10323,10 @@ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "dev": true, "requires": { - "chalk": "1.1.3", - "js-base64": "2.4.3", - "source-map": "0.5.7", - "supports-color": "3.2.3" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, "source-map": { @@ -10322,7 +10341,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -10357,8 +10376,8 @@ "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", "dev": true, "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" + "renderkid": "^2.0.1", + "utila": "~0.4" } }, "private": { @@ -10397,7 +10416,7 @@ "integrity": "sha1-NV8mJQWmIWRrMTCnKOtkfiIFU0E=", "dev": true, "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.6.0" } }, @@ -10407,14 +10426,14 @@ "integrity": "sha1-V+tTR6qAXXTsaByyVknbo5yTNJk=", "dev": true, "requires": { - "agent-base": "2.1.1", - "debug": "2.6.9", - "extend": "3.0.1", - "http-proxy-agent": "1.0.0", - "https-proxy-agent": "1.0.0", - "lru-cache": "2.6.5", - "pac-proxy-agent": "1.1.0", - "socks-proxy-agent": "2.1.1" + "agent-base": "2", + "debug": "2", + "extend": "3", + "http-proxy-agent": "1", + "https-proxy-agent": "1", + "lru-cache": "~2.6.5", + "pac-proxy-agent": "1", + "socks-proxy-agent": "2" }, "dependencies": { "debug": { @@ -10452,11 +10471,11 @@ "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", "dev": true, "requires": { - "bn.js": "4.11.8", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.6" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" } }, "pump": { @@ -10465,8 +10484,8 @@ "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "pumpify": { @@ -10475,9 +10494,9 @@ "integrity": "sha1-gLfF334kFT0D8OesigWl0Gi9B/s=", "dev": true, "requires": { - "duplexify": "3.5.4", - "inherits": "2.0.3", - "pump": "2.0.1" + "duplexify": "^3.5.3", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, "punycode": { @@ -10510,8 +10529,8 @@ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", "dev": true, "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "querystring": { @@ -10526,34 +10545,13 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", - "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" - } - } - } - }, "randombytes": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.0" } }, "randomfill": { @@ -10562,8 +10560,8 @@ "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", "dev": true, "requires": { - "randombytes": "2.0.6", - "safe-buffer": "5.1.1" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, "range-parser": { @@ -10599,7 +10597,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.4.0" + "statuses": ">= 1.3.1 < 2" } }, "setprototypeof": { @@ -10616,9 +10614,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -10627,8 +10625,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { @@ -10637,8 +10635,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "path-exists": { @@ -10647,7 +10645,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } } } @@ -10658,13 +10656,13 @@ "integrity": "sha1-tPhQA6k4y7bsvOKhJPsQEr0ag40=", "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.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "readdirp": { @@ -10673,10 +10671,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.5", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" } }, "rechoir": { @@ -10685,7 +10683,7 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "1.1.7" + "resolve": "^1.1.6" } }, "redent": { @@ -10694,8 +10692,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "reduce-css-calc": { @@ -10704,9 +10702,9 @@ "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "dev": true, "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" }, "dependencies": { "balanced-match": { @@ -10723,7 +10721,7 @@ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", "dev": true, "requires": { - "balanced-match": "0.4.2" + "balanced-match": "^0.4.2" }, "dependencies": { "balanced-match": { @@ -10740,20 +10738,15 @@ "integrity": "sha1-DDNtOYBVPXVcObWGrjsgqknIK38=", "dev": true }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - }, "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha1-HkmWg3Ix2ot/PPQRTXG1aRoGgN0=", "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "private": "0.1.8" + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" } }, "regex-cache": { @@ -10762,7 +10755,7 @@ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -10771,8 +10764,8 @@ "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexpu-core": { @@ -10781,9 +10774,9 @@ "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", "dev": true, "requires": { - "regenerate": "1.3.3", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "regjsgen": { @@ -10798,7 +10791,7 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { @@ -10827,11 +10820,11 @@ "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", "dev": true, "requires": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "utila": "0.3.3" + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" }, "dependencies": { "utila": { @@ -10860,7 +10853,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { @@ -10869,28 +10862,28 @@ "integrity": "sha1-WgNhWkfGFCCz65m326IE+DYD4fo=", "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.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.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.4", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "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.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" } }, "request-progress": { @@ -10899,7 +10892,7 @@ "integrity": "sha1-XTa7V5YcZzqlt4jbyBQf3yO0Tgg=", "dev": true, "requires": { - "throttleit": "1.0.0" + "throttleit": "^1.0.0" } }, "require-directory": { @@ -10942,9 +10935,10 @@ "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" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -10959,16 +10953,15 @@ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", "dev": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", - "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "ripemd160": { @@ -10977,16 +10970,8 @@ "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", "dev": true, "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "2.1.0" + "hash-base": "^2.0.0", + "inherits": "^2.0.1" } }, "run-queue": { @@ -10995,14 +10980,9 @@ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", "dev": true, "requires": { - "aproba": "1.2.0" + "aproba": "^1.1.1" } }, - "rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=" - }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -11015,7 +10995,7 @@ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "samsam": { @@ -11036,7 +11016,7 @@ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "dev": true, "requires": { - "ajv": "5.5.2" + "ajv": "^5.0.0" } }, "selenium-server": { @@ -11058,18 +11038,18 @@ "dev": true, "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "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", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.4.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" }, "dependencies": { "debug": { @@ -11095,9 +11075,9 @@ "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", "dev": true, "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.2" } }, @@ -11114,15 +11094,15 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -11131,7 +11111,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -11154,8 +11134,8 @@ "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", "dev": true, "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "shebang-command": { @@ -11164,7 +11144,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -11179,15 +11159,16 @@ "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", "dev": true, "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" } }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sinon": { "version": "2.4.1", @@ -11195,14 +11176,14 @@ "integrity": "sha1-Ah/WS1TLd9nS+w1Dze3652KcOjY=", "dev": true, "requires": { - "diff": "3.2.0", + "diff": "^3.1.0", "formatio": "1.2.0", - "lolex": "1.6.0", - "native-promise-only": "0.8.1", - "path-to-regexp": "1.7.0", - "samsam": "1.3.0", + "lolex": "^1.6.0", + "native-promise-only": "^0.8.1", + "path-to-regexp": "^1.7.0", + "samsam": "^1.1.3", "text-encoding": "0.6.4", - "type-detect": "4.0.8" + "type-detect": "^4.0.0" }, "dependencies": { "isarray": { @@ -11252,14 +11233,14 @@ "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", "dev": true, "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" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "debug": { @@ -11277,7 +11258,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -11286,7 +11267,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -11295,7 +11276,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -11304,7 +11285,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11315,7 +11296,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -11324,7 +11305,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11335,9 +11316,9 @@ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -11360,9 +11341,9 @@ "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -11371,7 +11352,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } } } @@ -11382,7 +11363,7 @@ "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { @@ -11391,7 +11372,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11402,7 +11383,7 @@ "integrity": "sha1-LGzsFP7cIiJznK+bXD2F0cxaLMg=", "dev": true, "requires": { - "hoek": "4.2.1" + "hoek": "4.x.x" } }, "socket.io": { @@ -11553,8 +11534,8 @@ "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", "dev": true, "requires": { - "ip": "1.1.5", - "smart-buffer": "1.1.15" + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" }, "dependencies": { "ip": { @@ -11571,9 +11552,9 @@ "integrity": "sha1-huuwcZMlhjeHDhO3vZnybGY989M=", "dev": true, "requires": { - "agent-base": "2.1.1", - "extend": "3.0.1", - "socks": "1.1.10" + "agent-base": "2", + "extend": "3", + "socks": "~1.1.5" } }, "sort-keys": { @@ -11582,7 +11563,7 @@ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", "dev": true, "requires": { - "is-plain-obj": "1.1.0" + "is-plain-obj": "^1.0.0" } }, "source-list-map": { @@ -11603,11 +11584,11 @@ "integrity": "sha1-etD1k/IoFZjoVN+A8ZquS5LXoRo=", "dev": true, "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" + "atob": "^2.0.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": { @@ -11616,7 +11597,7 @@ "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", "dev": true, "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" }, "dependencies": { "source-map": { @@ -11639,8 +11620,8 @@ "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -11655,8 +11636,8 @@ "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -11671,7 +11652,7 @@ "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -11686,14 +11667,14 @@ "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" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "ssri": { @@ -11702,7 +11683,7 @@ "integrity": "sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.1.1" } }, "stackframe": { @@ -11717,8 +11698,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -11727,7 +11708,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -11736,7 +11717,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -11745,7 +11726,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11756,7 +11737,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -11765,7 +11746,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -11776,9 +11757,9 @@ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -11801,8 +11782,8 @@ "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.5" + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" } }, "stream-each": { @@ -11811,8 +11792,8 @@ "integrity": "sha1-joxGP5HaiZF3h2WHP+TZYNj2Fr0=", "dev": true, "requires": { - "end-of-stream": "1.4.1", - "stream-shift": "1.0.0" + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" } }, "stream-http": { @@ -11821,11 +11802,11 @@ "integrity": "sha1-0EQb4aRXpzpzOop7U1cL69nvZqQ=", "dev": true, "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.5", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.3", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" } }, "stream-shift": { @@ -11846,31 +11827,7 @@ "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", "dev": true, "requires": { - "strip-ansi": "3.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", - "requires": { - "is-fullwidth-code-point": "2.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=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -11879,21 +11836,22 @@ "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", + "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", "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" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -11902,7 +11860,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-indent": { @@ -11911,7 +11869,15 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" } }, "svgo": { @@ -11920,13 +11886,25 @@ "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", "dev": true, "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "dependencies": { + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + } } }, "tapable": { @@ -11941,11 +11919,11 @@ "integrity": "sha1-36Ii8DSAvKaSB8pyizfXS0X3JPo=", "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" + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" } }, "text-encoding": { @@ -11960,19 +11938,14 @@ "integrity": "sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=", "dev": true }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, "through2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { - "readable-stream": "2.3.5", - "xtend": "4.0.1" + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" } }, "thunkify": { @@ -11993,15 +11966,16 @@ "integrity": "sha1-JB52kn2coF9NlZgZAi9bNmS2S64=", "dev": true, "requires": { - "setimmediate": "1.0.5" + "setimmediate": "^1.0.4" } }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "to-array": { @@ -12028,7 +12002,7 @@ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12037,7 +12011,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12048,10 +12022,10 @@ "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -12060,8 +12034,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "toposort": { @@ -12076,7 +12050,7 @@ "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=", "dev": true, "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "trim-newlines": { @@ -12109,7 +12083,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -12125,7 +12099,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -12141,7 +12115,7 @@ "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.18" + "mime-types": "~2.1.18" } }, "typedarray": { @@ -12156,8 +12130,8 @@ "integrity": "sha1-4W32bXFjjfPJvGHM6CfkbyS9rAI=", "dev": true, "requires": { - "commander": "2.15.1", - "source-map": "0.6.1" + "commander": "~2.15.0", + "source-map": "~0.6.1" } }, "uglify-to-browserify": { @@ -12180,38 +12154,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" - }, - "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" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" - } - } + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" } }, "uniq": { @@ -12226,7 +12177,7 @@ "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", "dev": true, "requires": { - "macaddress": "0.2.8" + "macaddress": "^0.2.8" } }, "uniqs": { @@ -12241,7 +12192,7 @@ "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", "dev": true, "requires": { - "unique-slug": "2.0.0" + "unique-slug": "^2.0.0" } }, "unique-slug": { @@ -12250,7 +12201,7 @@ "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", "dev": true, "requires": { - "imurmurhash": "0.1.4" + "imurmurhash": "^0.1.4" } }, "unpipe": { @@ -12265,8 +12216,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -12275,9 +12226,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -12341,8 +12292,8 @@ "integrity": "sha1-zI/qgse5Bud3cBklCGnlaemVwpU=", "dev": true, "requires": { - "loader-utils": "1.1.0", - "mime": "1.3.6" + "loader-utils": "^1.0.2", + "mime": "1.3.x" }, "dependencies": { "mime": { @@ -12359,7 +12310,7 @@ "integrity": "sha1-FHFr8D/f79AwQK71jYtLhfOnxUQ=", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" } }, "useragent": { @@ -12368,8 +12319,8 @@ "integrity": "sha1-IX+UOtVAyyEoZYqyP8lg9qiMmXI=", "dev": true, "requires": { - "lru-cache": "4.1.2", - "tmp": "0.0.33" + "lru-cache": "4.1.x", + "tmp": "0.0.x" } }, "util": { @@ -12419,8 +12370,8 @@ "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=", "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vary": { @@ -12441,9 +12392,9 @@ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "vm-browserify": { @@ -12471,21 +12422,13 @@ "resolved": "https://registry.npmjs.org/vue-chartkick/-/vue-chartkick-0.3.0.tgz", "integrity": "sha512-fNEv5/i4ejyG17TxXNZLBwdbmjIQ1h2pYMj8xL0yR97uWA41Y9lI5SFdUoB+XJ8CSfFaYnYwMaQrafMgl/hggQ==", "requires": { - "chartkick": "2.3.5" - } - }, - "vue-chartkick": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/vue-chartkick/-/vue-chartkick-0.3.0.tgz", - "integrity": "sha512-fNEv5/i4ejyG17TxXNZLBwdbmjIQ1h2pYMj8xL0yR97uWA41Y9lI5SFdUoB+XJ8CSfFaYnYwMaQrafMgl/hggQ==", - "requires": { - "chartkick": "2.3.5" + "chartkick": "^2.3.5" } }, "vue-functional-data-merge": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-2.0.6.tgz", - "integrity": "sha1-8IBVrfuSRY3rzyrRDDqnEid/f8I=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", + "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==" }, "vue-hot-reload-api": { "version": "2.3.0", @@ -12499,19 +12442,19 @@ "integrity": "sha1-2QCdCr05K07+i4+x9UL2cjsC3To=", "dev": true, "requires": { - "consolidate": "0.14.5", - "hash-sum": "1.0.2", - "loader-utils": "1.1.0", - "lru-cache": "4.1.2", - "postcss": "6.0.21", - "postcss-load-config": "1.2.0", - "postcss-selector-parser": "2.2.3", - "prettier": "1.11.1", - "resolve": "1.6.0", - "source-map": "0.6.1", - "vue-hot-reload-api": "2.3.0", - "vue-style-loader": "3.1.2", - "vue-template-es2015-compiler": "1.6.0" + "consolidate": "^0.14.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "lru-cache": "^4.1.1", + "postcss": "^6.0.8", + "postcss-load-config": "^1.1.0", + "postcss-selector-parser": "^2.0.0", + "prettier": "^1.7.0", + "resolve": "^1.4.0", + "source-map": "^0.6.1", + "vue-hot-reload-api": "^2.2.0", + "vue-style-loader": "^3.0.0", + "vue-template-es2015-compiler": "^1.6.0" }, "dependencies": { "resolve": { @@ -12520,7 +12463,7 @@ "integrity": "sha1-D70hJ4sntABEgcOVNJ56umCp/1w=", "dev": true, "requires": { - "path-parse": "1.0.5" + "path-parse": "^1.0.5" } } } @@ -12536,8 +12479,8 @@ "integrity": "sha1-a2atNJmPyVIMLx5NX6QJFkHBWXo=", "dev": true, "requires": { - "hash-sum": "1.0.2", - "loader-utils": "1.1.0" + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" } }, "vue-template-compiler": { @@ -12546,8 +12489,8 @@ "integrity": "sha1-k7SFcOVscgzfPwUcwVKHwm+9BMs=", "dev": true, "requires": { - "de-indent": "1.0.2", - "he": "1.1.1" + "de-indent": "^1.0.2", + "he": "^1.1.0" } }, "vue-template-es2015-compiler": { @@ -12562,9 +12505,9 @@ "integrity": "sha1-Ix54Ovgwoi+JZvZcTEusyBQHLu0=", "dev": true, "requires": { - "chokidar": "2.0.3", - "graceful-fs": "4.1.11", - "neo-async": "2.5.0" + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" }, "dependencies": { "anymatch": { @@ -12573,8 +12516,8 @@ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", "dev": true, "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "chokidar": { @@ -12583,18 +12526,18 @@ "integrity": "sha1-3L1PbLsqVbR5m6ioQKxSfl9LEXY=", "dev": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.1", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" } }, "glob-parent": { @@ -12603,8 +12546,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -12613,7 +12556,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -12626,27 +12569,27 @@ "integrity": "sha1-sqEiaAQ3P/09A+qca9UlBnA09rE=", "dev": true, "requires": { - "acorn": "5.5.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "async": "2.6.0", - "enhanced-resolve": "3.4.1", - "interpret": "1.1.0", - "json-loader": "0.5.7", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "0.2.17", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.1.0", - "source-map": "0.5.7", - "supports-color": "3.2.3", - "tapable": "0.2.8", - "uglify-js": "2.8.29", - "watchpack": "1.5.0", - "webpack-sources": "1.1.0", - "yargs": "6.6.0" + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^4.7.0", + "ajv-keywords": "^1.1.1", + "async": "^2.1.2", + "enhanced-resolve": "^3.3.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^0.2.16", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^3.1.0", + "tapable": "~0.2.5", + "uglify-js": "^2.8.27", + "watchpack": "^1.3.1", + "webpack-sources": "^1.0.1", + "yargs": "^6.0.0" }, "dependencies": { "ajv": { @@ -12655,8 +12598,8 @@ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "camelcase": { @@ -12677,7 +12620,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "loader-utils": { @@ -12686,10 +12629,10 @@ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" } }, "source-map": { @@ -12704,9 +12647,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "supports-color": { @@ -12715,7 +12658,7 @@ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } }, "uglify-js": { @@ -12724,9 +12667,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "yargs": { @@ -12735,9 +12678,9 @@ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -12755,19 +12698,19 @@ "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", "dev": true, "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^4.2.0" }, "dependencies": { "camelcase": { @@ -12782,9 +12725,9 @@ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } } } @@ -12797,18 +12740,18 @@ "integrity": "sha1-ufv7ajLAqMHDI3Ij6QiQeWuVCrk=", "dev": true, "requires": { - "acorn": "5.5.3", - "bfj-node4": "5.3.1", - "chalk": "2.3.2", - "commander": "2.15.1", - "ejs": "2.5.7", - "express": "4.16.3", - "filesize": "3.6.1", - "gzip-size": "4.1.0", - "lodash": "4.17.5", - "mkdirp": "0.5.1", - "opener": "1.4.3", - "ws": "4.1.0" + "acorn": "^5.3.0", + "bfj-node4": "^5.2.0", + "chalk": "^2.3.0", + "commander": "^2.13.0", + "ejs": "^2.5.7", + "express": "^4.16.2", + "filesize": "^3.5.11", + "gzip-size": "^4.1.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "opener": "^1.4.3", + "ws": "^4.0.0" }, "dependencies": { "ws": { @@ -12817,8 +12760,8 @@ "integrity": "sha1-qXm119TaaL9U7+BAiWfDJIaacok=", "dev": true, "requires": { - "async-limiter": "1.0.0", - "safe-buffer": "5.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" } } } @@ -12829,11 +12772,11 @@ "integrity": "sha1-+PwRIM47T8VoDO7LQ9d3lmshEF4=", "dev": true, "requires": { - "memory-fs": "0.4.1", - "mime": "1.6.0", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0", - "time-stamp": "2.0.0" + "memory-fs": "~0.4.1", + "mime": "^1.5.0", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" }, "dependencies": { "mime": { @@ -12851,9 +12794,9 @@ "dev": true, "requires": { "ansi-html": "0.0.7", - "html-entities": "1.2.1", - "querystring": "0.2.0", - "strip-ansi": "3.0.1" + "html-entities": "^1.2.0", + "querystring": "^0.2.0", + "strip-ansi": "^3.0.0" } }, "webpack-merge": { @@ -12862,7 +12805,7 @@ "integrity": "sha1-XTct3dPh5fiHT1v1qOkp2wn+shY=", "dev": true, "requires": { - "lodash": "4.17.5" + "lodash": "^4.17.5" } }, "webpack-sources": { @@ -12871,8 +12814,8 @@ "integrity": "sha1-oQHrrlnWUHNU1x2AE5UKOot6WlQ=", "dev": true, "requires": { - "source-list-map": "2.0.0", - "source-map": "0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, "whet.extend": { @@ -12887,7 +12830,7 @@ "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -12914,8 +12857,8 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -12924,7 +12867,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -12933,9 +12876,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -12943,8 +12886,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { "version": "1.1.2", @@ -12952,8 +12894,8 @@ "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", "dev": true, "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "options": ">=0.0.5", + "ultron": "1.0.x" } }, "wtf-8": { @@ -12999,9 +12941,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" }, "dependencies": { @@ -13020,7 +12962,7 @@ "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, "requires": { - "camelcase": "3.0.0" + "camelcase": "^3.0.0" }, "dependencies": { "camelcase": { @@ -13031,15 +12973,6 @@ } } }, - "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", - "dev": true, - "requires": { - "fd-slicer": "1.0.1" - } - }, "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", diff --git a/TMS-Web/package.json b/TMS-Web/package.json index 547ce1c4..81ccac83 100644 --- a/TMS-Web/package.json +++ b/TMS-Web/package.json @@ -3,6 +3,20 @@ "version": "1.0.0", "description": "A Vue.js project", "author": "aljulanda-alabri ", + "contributors": [ + { + "name": "Imad Dodin", + "email": "imad.dodin@mail.mcgill.ca" + }, + { + "name": "Ahmed Elehwany", + "email": "ahmed.elehwany@mail.mcgill.ca" + }, + { + "name": "Nada Marawan", + "email": "nada.marwan@mail.mcgill.ca" + } + ], "private": true, "scripts": { "dev": "node build/dev-server.js", @@ -13,8 +27,8 @@ "test": "npm run unit && npm run e2e" }, "dependencies": { - "axios": "^0.18.0", - "bootstrap": "^4.0.0-beta.2", + "axios": "^0.18.1", + "bootstrap": "^4.4.1", "bootstrap-vue": "latest", "chart.js": "^2.7.2", "popper.js": "^1.12.9", diff --git a/TMS-Web/src/components/TMS.vue b/TMS-Web/src/components/TMS.vue index b4d7191c..704ebd03 100644 --- a/TMS-Web/src/components/TMS.vue +++ b/TMS-Web/src/components/TMS.vue @@ -107,6 +107,8 @@
+
+
If the map, charts or table is empty, make sure that you seletected a filter
diff --git a/TMS-Web/src/components/management.js b/TMS-Web/src/components/management.js index 1ffec84a..ee661357 100644 --- a/TMS-Web/src/components/management.js +++ b/TMS-Web/src/components/management.js @@ -15,6 +15,7 @@ export default { data () { return { forecastNum: '', + fTree: [], tmsUser: currUser.userName, user: '', forecastSelect: null, @@ -38,6 +39,7 @@ export default { statusForecast: [ { value: null, text: 'Status', disabled: true }, { value: 'Healthy', text: 'Healthy' }, + { value: 'ToBeCut', text: 'ToBeCut' }, { value: 'Cut', text: 'Cut' }, { value: 'Diseased', text: 'Diseased' } ], @@ -185,22 +187,40 @@ export default { methods: { updateTrees: function(updateSelect) { - console.log("updateTree called") + var treeIDs= []; - //status = "HEALTHY"; + this.rectTrees.forEach((tree) =>{ treeIDs.push(tree.id); }); AXIOS.post('/updateTrees/?treeIDs=' + treeIDs + '&status='+ updateSelect, {}, {}) .then(response => { - //this.findAllTrees(); - this.requestTrees = response.data; - this.printThis(); + + + + this.listTrees(); - this.updateStats(); - this.updateCities(); + + this.filterTrees = [] + this.requestTrees.forEach((tree) => { + + var tempTree = { + id: tree.id, + species: tree.species.name, + municipality: tree.municipality.name, + status: tree.status.status, + latitude: tree.location.y, + longitude: tree.location.x, + type: tree.location.landLocationType.landUseType, + user: tree.user.userName + } + this.filterTrees.push(tempTree); + console.log("beeh herer") + }) + + this.ids = ["Healthy", "Diseased", "ToBeCut", "Cut"] this.errorMessage = '' }).catch(e => { var errorMsg = e.response.data.message @@ -367,7 +387,7 @@ export default { user: tree.user.userName } if(this.ids.includes(tempTree.municipality) || this.ids.includes(tempTree.species) || this.ids.includes(tempTree.status)){ - console.log("testing if filters") + this.filterTrees.push(tempTree) } @@ -381,10 +401,6 @@ export default { }) }, - clear: function(){ - this.filterTrees = []; - this.ids = []; - }, forecasteTrees: function (){ this.rectTrees = []; var ne = this.rectangle.getBounds().getNorthEast(); @@ -468,8 +484,9 @@ export default { }, watch: { ids : function(val){ - this.printThis(); + this.listTrees(); + this.printThis(); this.updateStats(); this.updateCities(); } @@ -495,12 +512,6 @@ export default { this.filterTrees.push(tempTree) }) - console.log("insdieasd mouneetd") - - - - console.log("outside mouneetd") - //this.filterTrees = this.trees; this.updateStats(); diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..4a5f005e --- /dev/null +++ b/build.gradle @@ -0,0 +1,3 @@ +task stage () { + dependsOn ':TMS-Spring:assemble' +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..cc4fdc29 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..94920145 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 00000000..2fe81a7d --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..24467a14 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/package.json b/package.json new file mode 100644 index 00000000..4a89a0f7 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "scripts": { + "postinstall": "cd TMS-Web && npm install" + } +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..a10d7886 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':TMS-Spring'