From e80dfc886e3235fa23caf78fd5c8112cfc4dacc7 Mon Sep 17 00:00:00 2001
From: Wes Hulette <jwhulette@gmail.com>
Date: Fri, 28 Sep 2018 12:46:22 -0400
Subject: [PATCH] Added admin-lte-options file, moved pGenerator to main js
 file

---
 package.json                                  |   1 +
 public/js/vendor.js                           | Bin 792279 -> 796144 bytes
 public/mix-manifest.json                      |   2 +-
 resources/assets/js/admin-lte-options.js      | 696 ++++++++++++++++++
 resources/assets/js/app.js                    | 695 -----------------
 .../assets/js/extensions/pGenerator.jquery.js | 146 ++++
 resources/views/modals/user.blade.php         |   1 -
 resources/views/users/edit.blade.php          |   1 -
 webpack.mix.js                                |   5 +-
 9 files changed, 847 insertions(+), 700 deletions(-)
 create mode 100644 resources/assets/js/admin-lte-options.js
 delete mode 100755 resources/assets/js/app.js
 create mode 100755 resources/assets/js/extensions/pGenerator.jquery.js

diff --git a/package.json b/package.json
index d9370a8e1..287ab6dbc 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,7 @@
     "icheck": "^1.0.2",
     "imagemin": "^5.3.1",
     "jquery-slimscroll": "^1.3.8",
+    "jquery-ui": "^1.12.1",
     "jquery-ui-dist": "^1.12.1",
     "jquery.iframe-transport": "^1.0.0",
     "less": "less/less.js#efa6eb5306f28a7ef7e235d79ce854b780345591",
diff --git a/public/js/vendor.js b/public/js/vendor.js
index 4082f972d56aacaed80389822f8975c376a58e8e..713a2d6aa30b314adbe9dd53d29102d13ea6e143 100644
GIT binary patch
delta 24205
zcmcb<*5JcwgL-`}MFq!{+{`?m5Lbo7f&#s)VlD+O1zR)#67x;W%v10R2C2%)OinDx
z%+FIu%gjktNXsumm{De=rx22nSqzo}X)DgiFU?6&NJ>@6%uCKGO-W5r$jnnn%*jzG
zNKCI!E!I=;EKx|#&nqd)&nZ?Y&d*I%$VsfsFD(IS&MyF2Q>>7fm!goFTac5Qo0?Zr
ztdLrfoKsqyS(b{hw;-o9Ju|OZk4r%dq|w2#v?L?HNI}6dC$~5;H8n*cxTG{CGaoD$
zTv||&UsR%ClTlw%QedU8UtV6Wmk3o@3|6O?oS$n4R_vOan3<!XpkPxB(dB?kVOeTX
zF(^!o^o;ckz*=)MlT-7GQx$wYLlkT>AXeoUq~;apmlh?b>g5-u*Xu*o6zltXhJY;8
z=i<`W_f5=BRVXekN>#`TEKMz{RLDpyR!B-s%~Qz9PXvWvQfgX$Q7R}ZKoORirl3($
zS&*8a22*cqYpbACnwOHAmYJ8DqNJ%%&848Apiq)glwYopms+miT2z!@q@h#~kNcw3
z!qUv5)MBU!N}ASO3JSGc3JMUUuLTckkV#r#LcsxKtAc-0R%&tyR3s&}IJqbj9Bm3J
zdT`@2ixo;TQWbJRX(%789-M6IL4qZzxdl0iC8_GgU=KkI0y!6sJxkP!6-tX!Q^1<w
z2_Z8tT_LSBFBy?WVCkhO6=Yxv7Nbh?!484iS)Zz>;GLRU05U1HEVZbzBm=}OFG?&Z
zfF{&D1&DjGm{m}eS_V#!$@zI{Ihn~N3gww484CF&8L34I&;$udy2T2K3Q4IYC8<TI
z#?*toSe{s^P?E2ZUzDDhmsypnkY8G)ker{Ass~oA&!vDIlC}!fwV=4+Qc%#>QqaW$
zz`7K4;Sr|b4~~vv1zo5NLQg%M36b*6PsvQH1cgv>ssb!9OY#+pOEXIpDnago2R^s}
z0P8|^pdL({Ei}>T>pP~TC=};p<`yRx<>%ypyqcF-mXuhekXxUcS6U1*L_uF4Tx!6R
zVP$?PNFgY_gPen`9}==qU72|b;D`g2CaDUj`2rNU5Sx5c^Gbu^F0fK4DJo6X;Zjhj
zS5UyFAUrdrB*RKU$+)0GNeAq-RE2Vom_mLU#5E9~Bqf656UhvZ)XemZ5-SBIBLf2@
z%^6@}nC{HHywoCv+|<0%dZ;hlQ}a@b5_1$1^D=Y60jp4404lUVMJuSt1q-L9D5Szl
zz~a*63<Xf3kYAyYoS&1ESWuj*pIT7>Dku~4zzJVLU%xmrB^4CTB}J*JWtpkvpioRn
zRVXdcPsuOO(^Ckk2bI*Y2un;(PAw<_6}AeQc_pdosYM_gax-&sGK*7_^Yc=QK|!XV
zps%l<mRMY(uA`uymtT~dn4_+vkYA*rUYwI(t`7DP+#A6lUsx%a8W_N|21A`xP+FV;
ziGPKX{PgskRE4C{l9K#9h2qql)Z~(UNWelp5CT>a43)7`P>N1TEJ@UbXtY(&PfJTq
z%qvSQR*zMJ+2fd8l3A8mlBxhTLIGl7YF;VWg;3G@fYRa&P~t!&36TFVG$W<nOh^hy
z%dALEf!0(CnZ*jlsU->;@YD-RYr&8-5&*84G?8sZ$kwCU>zbFCl!I_GG(Pk56f*M5
zQi~K))6!CtOTc9y)cp#%nR%IDqoMf+5|<zcrR5hTr>21N5Gb)LWTq)3<(FiDQ!m2p
z^`#}?0t$<9iAAZ9BDW+zJrz`<fvtfmbOon0|2z+nyQ~z_5_5{d`3V$wPWcr<scA*2
z#Tg0^zk@ZVg1v^2gLu3i7F|yH`6b0AMTwvWh(bwzeojed0kXc}ko<xIkRU`KM4MA^
z2t*~$lmRsfDP2H=*e$WRM8P?yJ~KI6PXWY9&H*vAiWQQJQWHy3K?Qbheo-pe4f^_d
zi6x-cMoB&>+oe_%q!wkS<|Ts)1yGQJMN?ACGLym0nKV#I3DuaKk)L0j3W^0t0D!|E
zQh@0w<R;d`>UmIchbZg7H7L{sXpsi1NuiY_sF|jqpa3xx?tZkGaE7$16kvG{S`UB?
zhUlz^DuJp%4qRxH3@QWFY6UIRLGc`(k(rzU&$W<NUP)1AI;h+LRqLRZj(&0u$ot@G
z5^SvkG`BmI<bfis9+cBD@-x(GU1(y1#~#SmkPJlrKq)E|;3bEZf|4GZ5zt}*WB@b)
z6z627q$<>d(l5C6nVJV~!6+y|%1B5^fSp_mNo@N1PWcrI;h8DvsU^^at)~DrtOQhy
zLShxHMPI)pAJoLnFIPy)uShKh#eY&Nyr512<vIQQB84Ku)ZF~CR7i0Ri4mv#3WyyL
z7hu>uozb65q#k4}L>WfJB*6^uOwP|MMno9M@6OPgLLoCbKM(9uP!$QQKdcng(-L)a
zGxJJ|)gktRWcBs^3sUn?b<~667NWc$2TgSl*h{GDi@;(K4JDbmsl||LLO}r<wh9RU
zfKml0QJ}dTYAUpjs7H%=1qHYbkeZ<!98I=L5MiZQ6#u|O0cskCVMqajY8*_0St(Y1
z`T}Dv5gvVgm&_tiq3oQI2#uN)uz+($VhJMf_4T1C1tO`CoRL_fkW{IVlA4xSngdID
zkQ9I%@t{ZprFf`IL5)OEWPoaUNX`OfG_YZy1fQ5(Qe3Z4keCN4wiLh#J2ANgz4}x~
z^HoM-i7rSNv_e&ig+vcDa`g3Gz}*ON(FLmJ^3y;mIll;;tV@ei71DF^lM-`sDisoo
z^6N|UQot(9Q<I7_OCT;u&d<p&LW<EGP$S7Hr!>_{K}p#-*&-z=8J<InQd2;pX{KhD
zrY3OF^rF<%Jdn77L86&yB3wMNurv`OoNSPqrli9KX;CXwrsm}2mxE-|j4hK5jo=!R
zptc$qm>VaV!-ew_%PK*t4Gaw3jNRbEC8>!yAYo%mXJ=<;xNv?>W*NloE|!+&25|A5
z%-njgxPhUY8<Kc_QDR;?Si;TC!qm_St|6^7Iiole>;pFgLn9|wxJ*H5Q9%w^i-oI^
ziK8Q2A~&%pKOY<vE*6GPW(doZauSoXt?Ct&l#Rdut|PrD5$v}VqZG50R3&h}hsP}_
zbrqK+=A|SSr6?39gMwM1II{{=W`WZvtX>AS1wg%P1yGXo1XppORGgQd3X1JwQ12eZ
zP^d3UEXoA6Vv6;0Qi~zO06I{WV4L;zOEOY(6*5wbK-FSCxQ_$1I2dFvBGXh9TPc`W
zKwFLq3dOlr3g%`Ou#zb^#Y(}_(g?=QNw-okG%_%Nw5UNHSG>I>kW;i2bQL^dg9?yV
zH)anB+ChS-2L)DMYDI}cQciwyHmErd>ZT!&OgM%?2UFC+-5M>l{wbu6C<e8wiwjbd
zGt)9tQ$XcFNd`EhXu<njiAnio$o;?RiK3js^-7@JR$Nk)nOvd-?E`|M!!5G{+$i*P
zh4g|-iW2jRGr_%Lkh>LBG?bF^Q!14-^&sV;b53G$v4&Dceol%mLM^1r57wZs?^;ok
znwJ81PG*`yYDGzXYEfQd4qPy`BC{A$bRi8uz}hL$dPzYM`$z<+OPdO|Lj%-2g~cMM
z!U18#$N{W72~shA#Y|2f_>cwE2Jk=ye5e8x9IlDQl?tHFOfk5G%7^rR!5%A1EK<l<
zutn-m!^}qt&fwG%h0+3WYDRSZ72-4VGD|cxtw9M4Y?i)0yqf?jg&~7h3b~2dkWN0b
z9S}LaL};Hx1MFs~A<&8e+SXA3b=4HWeKk;t4jK~!t3w1xy&g!3hPob9hdLI+pju&l
zAFv6aILg<9R57TnKG^6GC{AF}2Wvn<n}0}7&jp1PN_gY!-lr7h7l1mNNcLmvZ7Zm$
zDS!r&^3xPl^wRS5kUCq6(;MZv#OqZwl=L7v74$&eW+hD|MH-N?El{$7bhE7#@}a6h
zJv&H`9F%-ODijnFbIKDdi^DRDGm}8&D^k}5Bo8Y3Q1u7rWY$ARF2KVAV9zKh)N1M_
zgEA3#SU^cfLCMg-KoydOPy+`V=didy>xV*O1savG&M10>)PqK6^*|k1kcSX)kq=7)
zs1-aoL11?Tyqks6$AUNlk~BblDo9TY;fi`t%78Sf^pc7|O)Cxc(o9(2N=HFOuQXE+
z%7t34prE3m4k~oiHDNMH@dRsefkGN&A-KB-Yx%(g7?jY!oO)1k4rU?cxupCG(3nhm
zDxwI2C2x2e8sP;*{?UUskP!h1bu>0>KqDPy3gF%$*agU81@CturC^YlGpH}A08P7a
z0lmbMlEmZ;jg<W4QqVBA9w>P5*o@p%gakg410a&1MkX{%BY72WgQi}7p00*E*zuq-
z8a*UkpdtdJX{a+@@IQw*s0s%)$U)_#2B>SJsaKF#1RChnP=^|!3u<$!YwD$C78QdE
zMX<|2`6nsALJu-51F2-xAy$Ib>q6};)&+GRAmtWFPc2#?)GO$N$Cnipv=lu3JVQJk
zeLSOF6`VptLj3&{Lj2v`eOw_HVjuqmRoPH^(9k3}De5Ja<msjt<(C#f+P)As+A4vB
zA#9~sbxplgPy|g+66F-J1XUGa4TxX>B}kBiRiL4gmYJ8Lp#(Bo2^7@Oke=T6mqRK9
ztW^)80+QHL(d%Gvm5>T6H;@faOi6(Rp%Prpbem)@m3nY!f&B*wI0%V*I2aTh2n^B)
zZusP7mSiU8fQFkvwHK`1hYsdr87hVu5d~vFX^4T2IXQ^&W~4FsqEtld2-MU`&B-qZ
zH~F+cQ3F#5tz4(`Z{d)t*Vj_;fldH{!UHxL1+oW}BHS{;9qJ6&G?4<N&<9N_B_|fA
zf=0x2p+aeinK{rlD`-{-VjB9K1;|W?(&EJQR7j0o51tFt!>F=h_Jd4O02PR^AcHAQ
z%dF6V4D%^yK@~wvL@_WevjSSD!WDx;0%4#`h%3}Y1=t9>f&w@RB$lL351h#<kq%0l
z@t};UV5<P4VChmp0W7Kqb_o_ixWx!L6^-)Dyp;TM9R(#l$gD>ZIEjMlK~S4hQVXk*
zNH!r1ow|WXgd0}Tre#)u9b2!j@16>p7y;P=iz`t76_o0rHbR9VA*`UF0P<g6YC1UM
zsq2B}jC3<n6H`)))HU_;OG{FVAa%Nirh+!8nt`ZD%g-;tRAD_`pq_&hT%tid8V^ky
zwhAz>YwAISAgwY;%z<10t(1{9D8VXRC2X4X^+7F1kiT*>^I&NZJYir98vDsBNzFqY
zZB0r9O=;!lfts3d&x89%&=3LjFiJ9}FFe2@QV*(l5Doc^#A0aa03OU$(nOU1ARmAl
zOrX*>HLpY$8pt{ddPSgaH+WP{3DSB|M>tenM*%f}bWwwr1r)Z^4eB@~r%QKo34=ql
zAiuaIIJE@aEJ7qH1<+VCG+Ds{&(0Rs{(*|1Iu}$#L&ofgb+C5^X#N4+#d)de;L;Hk
z1Q3kuL<L(6FXpADTXRh>{KO#-Zex-hWT<Hbzul;6k;4nr?f`WwAWjB#VPHKvP+|f(
zswh7P7J$&C0Z%WG>;hE;&5YojgVf}Kc7f0u_0SHK9=J7TS(0Cb;(kzigSN`i3`gtI
zO=rB!DN>KB2A-u9>=clr09ro6JPPWWf*nO{w1Z<En^hJi8k#812Zbp-j6fWaozPJa
z1qDPY3@fA%Q|_QJ2Q|$UN)pq-6Yn4aP??&VqL2*gIm3+w1(71rc@m@=8ldoQ4s?!)
z5!_akv<A5mly#v=1=`JlDAK4-Ni8lZ%CCfs57xp<Af?38l6<A<`J6oB)Ai?YaZG=Z
z!ofX#RWc`6Jr3(^Z57nviv!d_jaNuU0!2k}eoiWC=0ug#ONFc)052f00+n2#z(h=i
z!Kc7VGEzlAW9iVo6LdaYQE9qj8HZ>+d_WYbvj>{&1ea#eX*HB^#*&($p@f)CLv=Tv
z@P-68c&HFGx(N<eP^pz!q5vM$0FT{(A_I)cj1iRN2+Gu`{bVi$4Y27D0@Du2WI4Fg
zH2p#vhlr&HW`(5yDx{Sl^&g~$M5>rTwWAVf4tjcFBA1Asm4Z@HdQzf>feskz8EL`?
z2q8{T0FV1YXT7I4wsJ~Nuj1t4ou<acTMrvc1Ft!NbyMLD7^LMwkT?S^7D<7u_yF}<
z!BgGvk+8&^%#upbj0h-SLE{kIBve3eq`5)Yc0dPpwG<%jG%Mt0707&0uUG@moG`T1
z0XI1j4XqGYc$XSWOUnxGUImSkdhq<SQ%N3j3WGFkz@9)FHiZNLv=IXtPX!Naf{JAL
zav0d4lOB=+P=x^3jL06~>2mcV=(HJJfr<vC*8*~rUVa`@*F$D{=w1%77`RGM%0nAt
z0)-hkPLLFVatk7Xfk!noG!^U=G?1LASDdS$t6-=JF7Z{d6nyH?=+uQxl&DXiSj{Qy
zicpF?0EwwuQx7_UsG$y-`%X=P$C3K<`{kT!&IqI69VEQwz+8fCP+%;l^wjk{T!x^q
z@kq=|L7H=ihYff{wKx~FPz@3Uph97K!z3=r>302`Y}m?uxI@7GTd>!Y5bnk5b+Ag*
zaap)2FsFltP$2WF8tO1HWbc5&#SUQ)X1G8t!56mBAQ4c3CkarA1gdF~s%B8D5j3;`
z?ie77@C?vQDri_vp*$ls4>DE)T15qE*n%gakPJ}(t?@t$R#*XqJrUa2VoQb5nxKjc
z;cY~V7?ub@-bQa2gIk)Q+8x}>0ZqO_n$hq;2We6VRi?6t78yJ@LJ}p&2ap9Bpc)Hm
z8>rt2S&0Gi4A>)BvO7387on`4fCo589|+gfC}@BN&&2anD%Cah;Qmqv*Ny6$(<ff#
zkW^Ju1GUdVK0#3fbq#11H&b16S_hX1AH>nnwHg}J8^3Xih{AelC~}ad5UA?|?(<=E
zE<rMotN?ED6D-l7#RaHf1NjS-*&sfLH)UZfTi{`!q9F$D@IgHS@*HT69-QP<!NCe2
zS44yiR58TY(-rn|h-iSr2R7}2sS=it)WNFl!Kxt*9Zfw%;fLf~<dPrc8*mWmLBdZ1
zlwKsJzbfG1nlAO9Lx2Q#8iH+xjg(@#6JkMXif(?ME;!9W9P9|zMuvl7{suc)i4Qd$
zfD=FlB1>T{v0x^sYwBT^G?>nXw}RkpZ<qmK+o0WAQUU;@s|(YN)wx()gzRnsNRC9R
zut51^djAYAR@6pMNKtAkdV>d&Y_$}e^YhA5i%K939%xzwEuqU-NL0uz%_+&uNi9pw
zfvE;f-#}(~KxHQGmQOus0uQFiArv%1h0^i?nS(qH1XYSUniS#+o-R_bMQYA~tVJYe
zP_70iX0-fX23k0Xx{wchjz?7k%k3&CqtMXyiMkHB*`c7VpstXUsgMXBD%D0bq`)K9
zpuR+AUN&fr47hs%o^XXOe4L)Rf<vYrW(TzEn~|EF?Fv~K334H5L`)B)2{NDq2^R3Q
zwKGU1sGSdLw1HH>)>DGk%Oygb1{#{mELJFk%n!jegGwHaWRQN>oO<vobiK@C4Rvtf
zf@bS<L4m5S39gf1>JZATpvI|dq9tB^eP{3jDUgFeCcy1eP=HznF$BC?DYQTX9M)W*
zgb@r{SqUDmm##-qijoUJW}=O@g9<NDQ4AVl09gwe=!6fSf`nj6xVWS!wIn$swO9dE
z1cM_3GE@c`mjW$+1C8n_BDor5GB`Cs$1p+tW)02hAM!aQ4AA@pnN!eE%E?5li(v!a
zu%4o48rW)(UqBI+mtTSrJ*hdM6$ohx8kk{^J&F`j!VDCZIO3=t<Rj1sCMaMaP6j6w
zBtL_45LCuiK?R)rAlzaN_0k+{vm_uhArTL1UV@q&U^9!s>&G*}<ADkgBcNR$aHN6k
zDa}!^g-Sst7t~905H1JJil(H((g{47z{_BeG5Y$@wNxMvfx;A=J|H6-3TZ|8x!}Nt
z+74bJ4br8cP@03XdO#hn6)}+mQi#aR5F-?F5UnCeeuap~=VZb&D?|j65<qzyDQxwV
zAj{7{jx9+n0<FCRSqv^55>p^6jX(lOo<P!#63O5^<dR>W2gyb7(1B#4aL6)skUii*
z9>|b8Xo(6^c%XU)Ej=S@L%4&~HLa&V{Kzc~nkdUl(NNFHgiZsgqc!=#<NK*F<@NC(
zg|PV_b+{yw&p;`NdN~-y;P?`OjLc$;{3|tGuZ)AEUSA))06Mc+A+tD7y+k2VAty60
zTSo!97Xlhs>8X&Ul#~kU2o$A4W&xoK9YM(iRGy;54k!y^W>v)0zJfxkUO`dn^r*cY
z;?sM+adJZD!4wowh9*!KHbA@un?QnXX@ZG5rlb_ZYeken3Gg^MtdR;;4y6!VUh1KH
zUeM={AhSK7o>NhN4s<*g66=X2sT$CcSezpgsQQq`CG_<(^FZsgN-{x<+DkH0#gO);
zD4@*{K_^{6i5Y1H3n<({WeB)@RzROR($^0yNCBA*bt1&W(18r>Yi2;>g`jO)P+vmF
zldZWFz$0tmDi>CALaP)ML!n}zVn8DwG76142n|}(4$6T@+XGMxNGi#LYK9MnKo$`=
zLdUY<s`d4KGK))6^I*eH;D!ch;|P4!uYy8SNgkGw6uDr1eNRXQ1aog@u>z<L0u|eE
z3m}soiclp;oi=EMf@fWl5{tm)6r>GbucoG;2<qse_w%r7L2EdG@;`W8E+~$nwjwzO
zHa`b)qXtx3M<E|lKR~O4>7}1Iq@}@$K@Yr`6kXx;JWd`t<X$i|96+5;@W6N?Xq5n{
zxdxuD)d39zgY!SsLWQJs(BMCKAsXCmpahr%nc9QQ_!Q;mzyl{K9eE}k?6i8lc+hla
z5@ccrZVWt9kQ@W<A4A8EL5u6N!Aldt;}6L5Ctzi8gFpolwnzZ0QrFZ}hp%`CWgoDU
zz%FvjF9OX(r@#Vjx<DtFTs_=bpg06g_d(lBnZ*j=)sQ6_iICbI8bs>F(CHi<&~Q^S
zXoFk@R0QrqNYYZ#PzPr>q>&Vq89h)(IaLTW!Kb0AU;`_>^fIO&Y~v7@L2);zkW9@h
zfxA4PlSg8j8W#t2GX_f10{H_e@Su(YB`f3sQmAiqK;!)>DANb}`oZ9Z_TUC2$S}k@
zdx*clwKAkPq7MpT5QZ9u)K3HHL{2Cm2dKk>95fycPIn+xpg>QmR7gxo0o6R9+yPPx
zZQejP|AEsCs5nhcge<)WSqkztc(N9;zaX=uI5j5?>SvG|L_&dA_G0QFTQS`R>P8|3
zD5SLqat>5EEQX+_gEJs;K?+K-NTCLD7YM@w4XOPv4jL~6Z>)vqFi>DX0!|0v86+*Z
zbf9<#lq0dY6%vaew?G<t;6#T}&w!kd7-B$-ctH9gx}g0MDWHxNa@7y<TXqq6$(?#Z
zK4ft#XaibeQgMDxX$h$51Pw`${Sfs<uvtjZP$qO19C>~O)YJs224Td|cTp;A?Sr&1
z*azV34$Cayu8ib#nNBVtcBn1W6>GRe4B(EkQh*NB!NyiV#w#eOLrMa5D+P7Xe4YCA
zkNF&u)BC=0vcppeC|F^|3W4B-S`7{l<bXni4OVBU=O$J_7bbul0$Q@DuH%RlaO$9Z
zng-g(2XiN~FVqVl*-AGlzoaBT7i5H~K|zH&XyFICFQA1C0e^sE29zOim1>|7=i*`w
z)O89l&qG2KI`0c^azN&JQCfuXwSW*`A~gnK0&o?e&SfHWo)Xkh$bifYK*y^<#R+U@
zrGge@!wE<XlwgY$(&}M7C&-u~_F)~wPHF6|Mr=zHVa|jkBL&bB6HuoSycrkTR0DP1
z!8@rzOJ$HJ$6)fvjX=y<Fu1Kq%}wx{fD-Vg4J<RSa2?PlpI%aaJ#^a=qyd&+1l=pD
zpa9xxRBVOCRfvU{2veYjfVVEeQXY8B1KwN1YEoieW<6xzY%q9O1QKSDE?i<sDsm!>
zPs*<#zMxV>SFWG{5>c>KfUV-RR?yc6StJeFZ3>DSNQx*(ErM<Dnf@?^LpT!N1_jL;
zKoeCeqz$S7otgnnF+t*4MFV6H(yBsr9q8gNc+BX*%$VN)mqQvf>nB$aDX?G?8qkG`
z&;}pKWcXr15C>G{LEFV3H$kcaN?gPSF#_QrF^Gd8!U*S}6c{kqBF7SRxR1Dq(${y(
zgl;+lEeeK=CP0$_q$UCh+rkF>po>}Si$O~_^DC4<opZERtSBa?RDwqvKy^1{jTySp
z@z4@X!4}jWh78Ln*(re1w=Srup`!rhK(vFnY57I<xe5w)C~DI3i*iwwBDaP?^`;_d
zc`dxkRDy+E3aHjZpXt)qhYm}FW~NGuA>+{nIneF)3JS8I6aWopz2uC{oRp%}JPjo)
z@RD97@U(~`%7_mnD#6(qk@P@wEz^AxxVVy$r9rI>q(lcwXC9zQLQoh&0}CFA;Jtsa
zAcS;KLJKq?rlDqi$Uu!OC=B4uFZ3_~jWj~4XIn%7fP4+{KX`K^lGXVAFN@RvAP<6r
z2<-Pvh-*=U2F?G$8TsYNjZ`E@B;{A2`X4+<1u+v_2!K-=BuhaiFR=xJ6l&W7qMSe$
zLrL}(&|yZnL%}__{0as1jD#m2CDrFwz@xMTG^&K^A9xrcRooyZuEoqCw}2KeJC_!h
z<mW<n;bJ@20=708)GE+Y04+{VhG>Crz$!`wmCm5kQ52F;7bSx&huGxgAE6NB>K5c0
z>;YYV4iSeMk3>Pl!ADqRg7%I>t*eLF2Wm}#wr+us2Z3aQ+=Bc(P+!H#KLUILP9kW(
zVlimvI7o3~3b<pUrI4sl1l>!I*a8YN0F()!2j?KBo|5t_)Qc60OF*MIpbf|hIraI8
z;C>KT4BRFGudLUC4r4)F2XQ-OZ4GEeo^n!tg)U^rfs!Vugo1A8*MRT*g2WrRC7}Ud
z!>yqLDXu}rDL{9s$)j#n1Fw5aLYxm^JN>>mr-TGp2dI!x2ujUMNiBleGkxcCZq0ho
zfHmYe0ca4wYCxzq1z7C~+V>3&E#0J&Jf!7Kpo9%t<B<<KcLx-{NvW`tbTm@+(ybH{
zvl1)xi;I%=3Ni|yV{@RL;2`z3piP)4W;rM3<Rm2~XCrFs{5+rh#FXHY#G(@9ES8jC
zG5z9hPO+%`3PfL{7IdIU5U8WBkeF7IS_Cc>pgw~i^8+5ALK-fGSm2VMhtigTnO~1$
zzJk7fIA|RPD49S`8Uhd2ARQkBInoDI{@3cj!WtZ<&=7@;yMej_If<1}F;MP@ih#%5
z)NN8S%OKrq+dw6#jFKIas8U*@LRz9OG)6$o;)2XPB|97al*}?H37I>9T2Yi*Qd$HW
z9?2}89wW*r0~u>hRDgOSvlw(J3S`eDR0nhjA+@9=GcUbZ52_G+_!0cfBak;C>LAnQ
zpivaeMUD#4rNJ;+y`21XeGR36oK(=B0?1y?N(H!Ez?GzeE~q4iWe!cWC72@hkd@p?
z`4w>2f&vlJ7J;_R5Xl0n7<>i_iuxia@F*uJ!-IE|6vKQAZ8M@YU*J0R_5IcIU>O6l
zBnK`BG7;NIXFX&J1au4qsAB_-Q@Az-P{~qMq5*0^gWQcIp|2m1S_E#sfHIOoa$*j2
zwi_JyaHlJQ3KMXXNJ&!<WQ_*gGoYwrPELhX@ti67d8uG~z}5NGT|E4-VMussQw+*%
zU^PesbPx|f9S&}_fouVJCNno3?p~04K<7K<rD#BvA}4;(ITFzH1j%*aY+bJh@)X!U
zkl#W6f>u-@CfrqUhod+OI^hPj46nPuQ4CcGn<LWDv<6KB!rc!KG>H2^r2-z;!Ft2B
zni`P9#9*F<Y_if)aE%D?@pSeKQ2^C;j?N*TVU8i5{(d0q5c{hT2Sq_DJ%}tueFv#f
zKqV|`)g5$`B*awku(CpCUU6zs3FHv2l8pLP1s8u`q!JTyR-Hn5VllKNC$Dw`&#fhv
zq&nqSfPz^;K>>TMrVTm=O+i5&<SobsY;{mN067@4X%)$!>HPmW#2t{j&G7CrVjc+8
z7y?HGVgd^-f*M*FTbNpyTUc6HTi9CITR66G9$3?E%F5Ml%F4anl$B?ZU_F<<mLlk+
zxdO=fQ6>3B(Bs>nO(TUeLp=jM@L_b&<L45Slk-dSN{R~-i;K(ii&8-6-08zOy6NC!
zs7msSbh8RU=g#Ru;uCtNo-_Dl9Poa1N3bz`CB*?q=1jk6!YCf>9^j(@aZZjxKxtA=
zX0n10^c*}5x75@eg|wnn(4>w+a(+RjjzTWv#4*reD5)u#prB1EEddSOXBI<;V)Qhp
z3$k$u*Q;oPM!GmbWoTY$Zc=JdaeQJ?QDUWnE%-z`M-W>>Q-_O_v$UWfwJ1IZeBK&P
zMLGH9gcX4c{=}U4<cvgL-1ey;!XL2?C9gCm$C?Z5+}zZXjQo^h@bC&JCukqJ!gR)q
zoT7rDG6md{0JWUBI5|0|A9&6!RnN)E$*G={nU?|@VFNb>)Ir|j<Wz^n6x14ZD+Q1>
zP|1|c;)0ySO004)jXtS)=_MKJRtkn@P+j1_0_~hrhioj+;eyx?4j&Y8u(O~+uWki8
zP7r*G8dw+_P|g{NMa6J~z%u!HurvZm6(y-4Z^24T4QP@}O@XP>RH(03s09TEO5+41
zkd|Mh0g8Um$^jD#YlTb&8wFDkt*xyIlIMgv4w5dwD~B~QHLXEXAgv&6W~LBrmWI{}
znJ{hOAV8#-dQeKjs@u{WqTA5O7)d)gq!8LMbVI`il!%bhP_(hJj<KnZnTd|EnU1lA
zj){?urJ;_cv5ujVk+F`Uk*SWQk&cPEj+wEJsfCWIrH-Ykj)|#`sd20|7uWQOce!Pf
zG&HNZK%V2ongHQV3>-@IKq(AS1A}-v@cD3!RLyEGPR{9pwczv!O~HDw*n&kCTstI`
zIYGlqAnQOhCuc1viJ@yjG>{RR6(Ifq#VstMBIWA(N=UZm<Sb6jfsPd_*n&=6gEafV
z(FaPY3fc%kaHOCMLemGbI%wp86E4WPU`tYyK^2d!f&o~ho-;2$9&8>gl93!&392?g
zUIsZHGTsWwV+ytkzKJCndTBZN`9*NA>cRX6RiqC(wF>GdO>1y$W~L!jgT0mj@&>4c
z0OcoreFd-}NK64*#DT2m1f_708$hYt0Fq3RodZd)3ZO{k<m8080+Pz7UkqRtsRtVi
z^C2V)MHeOJrR3+j73Jr8=9Q!tl_lnA80bJ8fT~h22VAg#w+F<6c4C3tS_}3M*3d%>
zP`%{*`n=@C5)CYlfCdXF^1<<<tqso65W|rJ3mUsfAq5p7Dx8$_AW=d%prEGW4I&gZ
zlm`wtY@lY=Lo6mbSdddVnPGzxG-CJ?5!5o|vJOWg!lIJ$aDpTvEJouEEl{>8N(D`x
zq^2MjEU;VxNf-*c3L221htw1W*hxJQDX8h0X~BrB3obA~xfB%UxN<1WR)UGn2W%W_
zp2HEaSX80~?DVWzY*OY}3Jjv1Q;%LE;&2PPGBk&PGcqTnvIhkbEWkmLkWreJmXoRh
z6M|GQFkXFdNfD@92U-gWZOCTjXXa_Bg9a2pCLxy#Fip^g5%@?VP_qdXF`!~f1rcdz
zN;UOBB_2!=Vkg)kTAY~04{GxZZp-w*I~-za8c3F)D%1omBv#7ID<~~d0&N)*oxb5N
z2a7Hq^_Xs&&M3kuGQIyBH{1089Gqf$cr=%!R+PX472+e1Zc$L958@}J?j@|6hqv6&
zbVAZSs3Xi-3#z<etvZEbXzb-{Rx9Z1gL)xcobVbdOGlwXM*&n%<wMhhwL)gSwL%tT
zX=`z+XI_a0xbB2hKN^|}S_+w(Itrk%=lp10-ON}Wh5YEuSOr^!{OBw&Ckw=>0LKk<
z7%AVH3(Zjw(@-ii(0W%Lg_3+tE+)?E=?(47qV*^iYiX3^>w*+%8)|BUXpjwHuY!j%
z5$%4Y1@;<{#u6xXfyM?nK@&F$5V7KD2py{clT}dQ<b*mHA|(b_qnB7vkW;AvKH))U
zx`Gsob`-S7$XTlZU+@e&ISHa0v=dW79Wvdku255>pa``Yw}r)epbp7o!+7aRuydhi
zgZf%vKBo$F%ddjEFSsA0pst{;05cY}l0PLs6|y1@ymuC~I|?$;poa(^bp^Q7xfB$@
J@q*ml1pxfw_eTH#

delta 8125
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

diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index 0e4716c0c..a9b806342 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -23,7 +23,7 @@
     "/css/overrides.css": "/css/overrides.css?id=6b828d7767ff152a582b",
     "/css/dist/all.css": "/css/dist/all.css?id=52eeb0ac804d01ab930e",
     "/css/build/all.css": "/css/build/all.css?id=52eeb0ac804d01ab930e",
-    "/js/vendor.js": "/js/vendor.js?id=712f037630011ba2d02c",
+    "/js/vendor.js": "/js/vendor.js?id=0b5b63ceb817e544cab2",
     "/js/html5shiv.min.js": "/js/html5shiv.min.js?id=ba846cb704dbfbc5f1b3",
     "/js/respond.min.js": "/js/respond.min.js?id=afc1984a3d17110449dc",
 >>>>>>> Cleaned up JS
diff --git a/resources/assets/js/admin-lte-options.js b/resources/assets/js/admin-lte-options.js
new file mode 100644
index 000000000..885a9cec9
--- /dev/null
+++ b/resources/assets/js/admin-lte-options.js
@@ -0,0 +1,696 @@
+/*! AdminLTE app.js
+ * ================
+ * Main JS application file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements exclusive AdminLTE plugins.
+ *
+ * @Author  Almsaeed Studio
+ * @Support <http://www.almsaeedstudio.com>
+ * @Email   <support@almsaeedstudio.com>
+ * @version 2.3.0
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+
+//Make sure jQuery has been loaded before app.js
+if (typeof jQuery === "undefined") {
+    throw new Error("AdminLTE requires jQuery");
+  }
+  
+  
+  /* AdminLTE
+   *
+   * @type Object
+   * @description $.AdminLTE is the main object for the template's app.
+   *              It's used for implementing functions and options related
+   *              to the template. Keeping everything wrapped in an object
+   *              prevents conflict with other plugins and is a better
+   *              way to organize our code.
+   */
+  $.AdminLTE = {};
+  
+  /* --------------------
+   * - AdminLTE Options -
+   * --------------------
+   * Modify these options to suit your implementation
+   */
+  $.AdminLTE.options = {
+    //Add slimscroll to navbar menus
+    //This requires you to load the slimscroll plugin
+    //in every page before app.js
+    navbarMenuSlimscroll: true,
+    navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
+    navbarMenuHeight: "200px", //The height of the inner menu
+    //General animation speed for JS animated elements such as box collapse/expand and
+    //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
+    //'fast', 'normal', or 'slow'
+    animationSpeed: 500,
+    //Sidebar push menu toggle button selector
+    sidebarToggleSelector: "[data-toggle='offcanvas']",
+    //Activate sidebar push menu
+    sidebarPushMenu: true,
+    //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
+    sidebarSlimScroll: true,
+    //Enable sidebar expand on hover effect for sidebar mini
+    //This option is forced to true if both the fixed layout and sidebar mini
+    //are used together
+    sidebarExpandOnHover: false,
+    //BoxRefresh Plugin
+    enableBoxRefresh: true,
+    //Bootstrap.js tooltip
+    enableBSToppltip: true,
+    BSTooltipSelector: "[data-toggle='tooltip']",
+    //Enable Fast Click. Fastclick.js creates a more
+    //native touch experience with touch devices. If you
+    //choose to enable the plugin, make sure you load the script
+    //before AdminLTE's app.js
+    enableFastclick: false,
+    //Control Sidebar Options
+    enableControlSidebar: true,
+    controlSidebarOptions: {
+      //Which button should trigger the open/close event
+      toggleBtnSelector: "[data-toggle='control-sidebar']",
+      //The sidebar selector
+      selector: ".control-sidebar",
+      //Enable slide over content
+      slide: true
+    },
+    //Box Widget Plugin. Enable this plugin
+    //to allow boxes to be collapsed and/or removed
+    enableBoxWidget: true,
+    //Box Widget plugin options
+    boxWidgetOptions: {
+      boxWidgetIcons: {
+        //Collapse icon
+        collapse: 'fa-minus',
+        //Open icon
+        open: 'fa-plus',
+        //Remove icon
+        remove: 'fa-times'
+      },
+      boxWidgetSelectors: {
+        //Remove button selector
+        remove: '[data-widget="remove"]',
+        //Collapse button selector
+        collapse: '[data-widget="collapse"]'
+      }
+    },
+    //Direct Chat plugin options
+    directChat: {
+      //Enable direct chat by default
+      enable: true,
+      //The button to open and close the chat contacts pane
+      contactToggleSelector: '[data-widget="chat-pane-toggle"]'
+    },
+    //Define the set of colors to use globally around the website
+    colors: {
+      lightBlue: "#3c8dbc",
+      red: "#f56954",
+      green: "#00a65a",
+      aqua: "#00c0ef",
+      yellow: "#f39c12",
+      blue: "#0073b7",
+      navy: "#001F3F",
+      teal: "#39CCCC",
+      olive: "#3D9970",
+      lime: "#01FF70",
+      orange: "#FF851B",
+      fuchsia: "#F012BE",
+      purple: "#8E24AA",
+      maroon: "#D81B60",
+      black: "#222222",
+      gray: "#d2d6de"
+    },
+    //The standard screen sizes that bootstrap uses.
+    //If you change these in the variables.less file, change
+    //them here too.
+    screenSizes: {
+      xs: 480,
+      sm: 768,
+      md: 992,
+      lg: 1200
+    }
+  };
+  
+  /* ------------------
+   * - Implementation -
+   * ------------------
+   * The next block of code implements AdminLTE's
+   * functions and plugins as specified by the
+   * options above.
+   */
+  $(function () {
+    "use strict";
+  
+    //Fix for IE page transitions
+    $("body").removeClass("hold-transition");
+  
+    //Extend options if external options exist
+    if (typeof AdminLTEOptions !== "undefined") {
+      $.extend(true,
+              $.AdminLTE.options,
+              AdminLTEOptions);
+    }
+  
+    //Easy access to options
+    var o = $.AdminLTE.options;
+  
+    //Set up the object
+    _init();
+  
+    //Activate the layout maker
+    $.AdminLTE.layout.activate();
+  
+    //Enable sidebar tree view controls
+    $.AdminLTE.tree('.sidebar');
+  
+    //Enable control sidebar
+    if (o.enableControlSidebar) {
+      $.AdminLTE.controlSidebar.activate();
+    }
+  
+    //Add slimscroll to navbar dropdown
+    if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
+      $(".navbar .menu").slimscroll({
+        height: o.navbarMenuHeight,
+        alwaysVisible: false,
+        size: o.navbarMenuSlimscrollWidth
+      }).css("width", "100%");
+    }
+  
+    //Activate sidebar push menu
+    if (o.sidebarPushMenu) {
+      $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
+    }
+  
+    //Activate Bootstrap tooltip
+    if (o.enableBSToppltip) {
+        $.widget.bridge('uitooltip', $.ui.tooltip);
+      $('body').tooltip({
+        selector: o.BSTooltipSelector
+      });
+  
+    }
+  
+    //Activate box widget
+    if (o.enableBoxWidget) {
+      $.AdminLTE.boxWidget.activate();
+    }
+  
+    //Activate fast click
+    if (o.enableFastclick && typeof FastClick != 'undefined') {
+      FastClick.attach(document.body);
+    }
+  
+    //Activate direct chat widget
+    if (o.directChat.enable) {
+      $(document).on('click', o.directChat.contactToggleSelector, function () {
+        var box = $(this).parents('.direct-chat').first();
+        box.toggleClass('direct-chat-contacts-open');
+      });
+    }
+  
+    /*
+     * INITIALIZE BUTTON TOGGLE
+     * ------------------------
+     */
+    $('.btn-group[data-toggle="btn-toggle"]').each(function () {
+      var group = $(this);
+      $(this).find(".btn").on('click', function (e) {
+        group.find(".btn.active").removeClass("active");
+        $(this).addClass("active");
+        e.preventDefault();
+      });
+  
+    });
+  });
+  
+  /* ----------------------------------
+   * - Initialize the AdminLTE Object -
+   * ----------------------------------
+   * All AdminLTE functions are implemented below.
+   */
+  function _init() {
+    'use strict';
+    /* Layout
+     * ======
+     * Fixes the layout height in case min-height fails.
+     *
+     * @type Object
+     * @usage $.AdminLTE.layout.activate()
+     *        $.AdminLTE.layout.fix()
+     *        $.AdminLTE.layout.fixSidebar()
+     */
+    $.AdminLTE.layout = {
+      activate: function () {
+        var _this = this;
+        _this.fix();
+        _this.fixSidebar();
+        $(window, ".wrapper").resize(function () {
+          _this.fix();
+          _this.fixSidebar();
+        });
+      },
+      fix: function () {
+        //Get window height and the wrapper height
+        var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();
+        var window_height = $(window).height();
+        var sidebar_height = $(".sidebar").height();
+        //Set the min-height of the content and sidebar based on the
+        //the height of the document.
+        if ($("body").hasClass("fixed")) {
+          $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight());
+        } else {
+          var postSetWidth;
+          if (window_height >= sidebar_height) {
+            $(".content-wrapper, .right-side").css('min-height', window_height - neg);
+            postSetWidth = window_height - neg;
+          } else {
+            $(".content-wrapper, .right-side").css('min-height', sidebar_height);
+            postSetWidth = sidebar_height;
+          }
+  
+          //Fix for the control sidebar height
+          var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
+          if (typeof controlSidebar !== "undefined") {
+            if (controlSidebar.height() > postSetWidth)
+              $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
+          }
+  
+        }
+      },
+      fixSidebar: function () {
+        //Make sure the body tag has the .fixed class
+        if (!$("body").hasClass("fixed")) {
+          if (typeof $.fn.slimScroll != 'undefined') {
+            $(".sidebar").slimScroll({destroy: true}).height("auto");
+          }
+          return;
+        } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
+          window.console.error("Error: the fixed layout requires the slimscroll plugin!");
+        }
+        //Enable slimscroll for fixed layout
+        if ($.AdminLTE.options.sidebarSlimScroll) {
+          if (typeof $.fn.slimScroll != 'undefined') {
+            //Destroy if it exists
+            $(".sidebar").slimScroll({destroy: true}).height("auto");
+            //Add slimscroll
+            $(".sidebar").slimscroll({
+              height: ($(window).height() - $(".main-header").height()) + "px",
+              color: "rgba(0,0,0,0.2)",
+              size: "3px"
+            });
+          }
+        }
+      }
+    };
+  
+    /* PushMenu()
+     * ==========
+     * Adds the push menu functionality to the sidebar.
+     *
+     * @type Function
+     * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
+     */
+    $.AdminLTE.pushMenu = {
+      activate: function (toggleBtn) {
+        //Get the screen sizes
+        var screenSizes = $.AdminLTE.options.screenSizes;
+  
+        //Enable sidebar toggle
+        $(toggleBtn).on('click', function (e) {
+          e.preventDefault();
+  
+          //Enable sidebar push menu
+          if ($(window).width() > (screenSizes.sm - 1)) {
+            if ($("body").hasClass('sidebar-collapse')) {
+              $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
+            } else {
+              $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
+            }
+          }
+          //Handle sidebar push menu for small screens
+          else {
+            if ($("body").hasClass('sidebar-open')) {
+              $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
+            } else {
+              $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
+            }
+          }
+        });
+  
+        $(".content-wrapper").click(function () {
+          //Enable hide menu when clicking on the content-wrapper on small screens
+          if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
+            $("body").removeClass('sidebar-open');
+          }
+        });
+  
+        //Enable expand on hover for sidebar mini
+        if ($.AdminLTE.options.sidebarExpandOnHover
+                || ($('body').hasClass('fixed')
+                        && $('body').hasClass('sidebar-mini'))) {
+          this.expandOnHover();
+        }
+      },
+      expandOnHover: function () {
+        var _this = this;
+        var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
+        //Expand sidebar on hover
+        $('.main-sidebar').hover(function () {
+          if ($('body').hasClass('sidebar-mini')
+                  && $("body").hasClass('sidebar-collapse')
+                  && $(window).width() > screenWidth) {
+            _this.expand();
+          }
+        }, function () {
+          if ($('body').hasClass('sidebar-mini')
+                  && $('body').hasClass('sidebar-expanded-on-hover')
+                  && $(window).width() > screenWidth) {
+            _this.collapse();
+          }
+        });
+      },
+      expand: function () {
+        $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
+      },
+      collapse: function () {
+        if ($('body').hasClass('sidebar-expanded-on-hover')) {
+          $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
+        }
+      }
+    };
+  
+    /* Tree()
+     * ======
+     * Converts the sidebar into a multilevel
+     * tree view menu.
+     *
+     * @type Function
+     * @Usage: $.AdminLTE.tree('.sidebar')
+     */
+    $.AdminLTE.tree = function (menu) {
+      var _this = this;
+      var animationSpeed = $.AdminLTE.options.animationSpeed;
+      $(document).on('click', menu + ' li a', function (e) {
+        //Get the clicked link and the next element
+        var $this = $(this);
+        var checkElement = $this.next();
+  
+        //Check if the next element is a menu and is visible
+        if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) {
+          //Close the menu
+          checkElement.slideUp(animationSpeed, function () {
+            checkElement.removeClass('menu-open');
+            //Fix the layout in case the sidebar stretches over the height of the window
+            //_this.layout.fix();
+          });
+          checkElement.parent("li").removeClass("active");
+        }
+        //If the menu is not visible
+        else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
+          //Get the parent menu
+          var parent = $this.parents('ul').first();
+          //Close all open menus within the parent
+          var ul = parent.find('ul:visible').slideUp(animationSpeed);
+          //Remove the menu-open class from the parent
+          ul.removeClass('menu-open');
+          //Get the parent li
+          var parent_li = $this.parent("li");
+  
+          //Open the target menu and add the menu-open class
+          checkElement.slideDown(animationSpeed, function () {
+            //Add the class active to the parent li
+            checkElement.addClass('menu-open');
+            parent.find('li.active').removeClass('active');
+            parent_li.addClass('active');
+            //Fix the layout in case the sidebar stretches over the height of the window
+            _this.layout.fix();
+          });
+        }
+        //if this isn't a link, prevent the page from being redirected
+        if (checkElement.is('.treeview-menu')) {
+          e.preventDefault();
+        }
+      });
+    };
+  
+    /* ControlSidebar
+     * ==============
+     * Adds functionality to the right sidebar
+     *
+     * @type Object
+     * @usage $.AdminLTE.controlSidebar.activate(options)
+     */
+    $.AdminLTE.controlSidebar = {
+      //instantiate the object
+      activate: function () {
+        //Get the object
+        var _this = this;
+        //Update options
+        var o = $.AdminLTE.options.controlSidebarOptions;
+        //Get the sidebar
+        var sidebar = $(o.selector);
+        //The toggle button
+        var btn = $(o.toggleBtnSelector);
+  
+        //Listen to the click event
+        btn.on('click', function (e) {
+          e.preventDefault();
+          //If the sidebar is not open
+          if (!sidebar.hasClass('control-sidebar-open')
+                  && !$('body').hasClass('control-sidebar-open')) {
+            //Open the sidebar
+            _this.open(sidebar, o.slide);
+          } else {
+            _this.close(sidebar, o.slide);
+          }
+        });
+  
+        //If the body has a boxed layout, fix the sidebar bg position
+        var bg = $(".control-sidebar-bg");
+        _this._fix(bg);
+  
+        //If the body has a fixed layout, make the control sidebar fixed
+        if ($('body').hasClass('fixed')) {
+          _this._fixForFixed(sidebar);
+        } else {
+          //If the content height is less than the sidebar's height, force max height
+          if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
+            _this._fixForContent(sidebar);
+          }
+        }
+      },
+      //Open the control sidebar
+      open: function (sidebar, slide) {
+        //Slide over content
+        if (slide) {
+          sidebar.addClass('control-sidebar-open');
+        } else {
+          //Push the content by adding the open class to the body instead
+          //of the sidebar itself
+          $('body').addClass('control-sidebar-open');
+        }
+      },
+      //Close the control sidebar
+      close: function (sidebar, slide) {
+        if (slide) {
+          sidebar.removeClass('control-sidebar-open');
+        } else {
+          $('body').removeClass('control-sidebar-open');
+        }
+      },
+      _fix: function (sidebar) {
+        var _this = this;
+        if ($("body").hasClass('layout-boxed')) {
+          sidebar.css('position', 'absolute');
+          sidebar.height($(".wrapper").height());
+          $(window).resize(function () {
+            _this._fix(sidebar);
+          });
+        } else {
+          sidebar.css({
+            'position': 'fixed',
+            'height': 'auto'
+          });
+        }
+      },
+      _fixForFixed: function (sidebar) {
+        sidebar.css({
+          'position': 'fixed',
+          'max-height': '100%',
+          'overflow': 'auto',
+          'padding-bottom': '50px'
+        });
+      },
+      _fixForContent: function (sidebar) {
+        $(".content-wrapper, .right-side").css('min-height', sidebar.height());
+      }
+    };
+  
+    /* BoxWidget
+     * =========
+     * BoxWidget is a plugin to handle collapsing and
+     * removing boxes from the screen.
+     *
+     * @type Object
+     * @usage $.AdminLTE.boxWidget.activate()
+     *        Set all your options in the main $.AdminLTE.options object
+     */
+    $.AdminLTE.boxWidget = {
+      selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
+      icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
+      animationSpeed: $.AdminLTE.options.animationSpeed,
+      activate: function (_box) {
+        var _this = this;
+        if (!_box) {
+          _box = document; // activate all boxes per default
+        }
+        //Listen for collapse event triggers
+        $(_box).on('click', _this.selectors.collapse, function (e) {
+          e.preventDefault();
+          _this.collapse($(this));
+        });
+  
+        //Listen for remove event triggers
+        $(_box).on('click', _this.selectors.remove, function (e) {
+          e.preventDefault();
+          _this.remove($(this));
+        });
+      },
+      collapse: function (element) {
+        var _this = this;
+        //Find the box parent
+        var box = element.parents(".box").first();
+        //Find the body and the footer
+        var box_content = box.find("> .box-body, > .box-footer, > form  >.box-body, > form > .box-footer");
+        if (!box.hasClass("collapsed-box")) {
+          //Convert minus into plus
+          element.children(":first")
+                  .removeClass(_this.icons.collapse)
+                  .addClass(_this.icons.open);
+          //Hide the content
+          box_content.slideUp(_this.animationSpeed, function () {
+            box.addClass("collapsed-box");
+          });
+        } else {
+          //Convert plus into minus
+          element.children(":first")
+                  .removeClass(_this.icons.open)
+                  .addClass(_this.icons.collapse);
+          //Show the content
+          box_content.slideDown(_this.animationSpeed, function () {
+            box.removeClass("collapsed-box");
+          });
+        }
+      },
+      remove: function (element) {
+        //Find the box parent
+        var box = element.parents(".box").first();
+        box.slideUp(this.animationSpeed);
+      }
+    };
+  }
+  
+  /* ------------------
+   * - Custom Plugins -
+   * ------------------
+   * All custom plugins are defined below.
+   */
+  
+  /*
+   * BOX REFRESH BUTTON
+   * ------------------
+   * This is a custom plugin to use with the component BOX. It allows you to add
+   * a refresh button to the box. It converts the box's state to a loading state.
+   *
+   * @type plugin
+   * @usage $("#box-widget").boxRefresh( options );
+   */
+  (function ($) {
+  
+    "use strict";
+  
+    $.fn.boxRefresh = function (options) {
+  
+      // Render options
+      var settings = $.extend({
+        //Refresh button selector
+        trigger: ".refresh-btn",
+        //File source to be loaded (e.g: ajax/src.php)
+        source: "",
+        //Callbacks
+        onLoadStart: function (box) {
+          return box;
+        }, //Right after the button has been clicked
+        onLoadDone: function (box) {
+          return box;
+        } //When the source has been loaded
+  
+      }, options);
+  
+      //The overlay
+      var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
+  
+      return this.each(function () {
+        //if a source is specified
+        if (settings.source === "") {
+          if (window.console) {
+            window.console.log("Please specify a source first - boxRefresh()");
+          }
+          return;
+        }
+        //the box
+        var box = $(this);
+        //the button
+        var rBtn = box.find(settings.trigger).first();
+  
+        //On trigger click
+        rBtn.on('click', function (e) {
+          e.preventDefault();
+          //Add loading overlay
+          start(box);
+  
+          //Perform ajax call
+          box.find(".box-body").load(settings.source, function () {
+            done(box);
+          });
+        });
+      });
+  
+      function start(box) {
+        //Add overlay and loading img
+        box.append(overlay);
+  
+        settings.onLoadStart.call(box);
+      }
+  
+      function done(box) {
+        //Remove overlay and loading img
+        box.find(overlay).remove();
+  
+        settings.onLoadDone.call(box);
+      }
+  
+    };
+  
+  })(jQuery);
+  
+  /*
+   * EXPLICIT BOX ACTIVATION
+   * -----------------------
+   * This is a custom plugin to use with the component BOX. It allows you to activate
+   * a box inserted in the DOM after the app.js was loaded.
+   *
+   * @type plugin
+   * @usage $("#box-widget").activateBox();
+   */
+  (function ($) {
+  
+    'use strict';
+  
+    $.fn.activateBox = function () {
+      $.AdminLTE.boxWidget.activate(this);
+    };
+  
+  })(jQuery);
+  
\ No newline at end of file
diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js
deleted file mode 100755
index 6453fc734..000000000
--- a/resources/assets/js/app.js
+++ /dev/null
@@ -1,695 +0,0 @@
-/*! AdminLTE app.js
- * ================
- * Main JS application file for AdminLTE v2. This file
- * should be included in all pages. It controls some layout
- * options and implements exclusive AdminLTE plugins.
- *
- * @Author  Almsaeed Studio
- * @Support <http://www.almsaeedstudio.com>
- * @Email   <support@almsaeedstudio.com>
- * @version 2.3.0
- * @license MIT <http://opensource.org/licenses/MIT>
- */
-
-//Make sure jQuery has been loaded before app.js
-if (typeof jQuery === "undefined") {
-  throw new Error("AdminLTE requires jQuery");
-}
-
-
-/* AdminLTE
- *
- * @type Object
- * @description $.AdminLTE is the main object for the template's app.
- *              It's used for implementing functions and options related
- *              to the template. Keeping everything wrapped in an object
- *              prevents conflict with other plugins and is a better
- *              way to organize our code.
- */
-$.AdminLTE = {};
-
-/* --------------------
- * - AdminLTE Options -
- * --------------------
- * Modify these options to suit your implementation
- */
-$.AdminLTE.options = {
-  //Add slimscroll to navbar menus
-  //This requires you to load the slimscroll plugin
-  //in every page before app.js
-  navbarMenuSlimscroll: true,
-  navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
-  navbarMenuHeight: "200px", //The height of the inner menu
-  //General animation speed for JS animated elements such as box collapse/expand and
-  //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
-  //'fast', 'normal', or 'slow'
-  animationSpeed: 500,
-  //Sidebar push menu toggle button selector
-  sidebarToggleSelector: "[data-toggle='offcanvas']",
-  //Activate sidebar push menu
-  sidebarPushMenu: true,
-  //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
-  sidebarSlimScroll: true,
-  //Enable sidebar expand on hover effect for sidebar mini
-  //This option is forced to true if both the fixed layout and sidebar mini
-  //are used together
-  sidebarExpandOnHover: false,
-  //BoxRefresh Plugin
-  enableBoxRefresh: true,
-  //Bootstrap.js tooltip
-  enableBSToppltip: true,
-  BSTooltipSelector: "[data-toggle='tooltip']",
-  //Enable Fast Click. Fastclick.js creates a more
-  //native touch experience with touch devices. If you
-  //choose to enable the plugin, make sure you load the script
-  //before AdminLTE's app.js
-  enableFastclick: false,
-  //Control Sidebar Options
-  enableControlSidebar: true,
-  controlSidebarOptions: {
-    //Which button should trigger the open/close event
-    toggleBtnSelector: "[data-toggle='control-sidebar']",
-    //The sidebar selector
-    selector: ".control-sidebar",
-    //Enable slide over content
-    slide: true
-  },
-  //Box Widget Plugin. Enable this plugin
-  //to allow boxes to be collapsed and/or removed
-  enableBoxWidget: true,
-  //Box Widget plugin options
-  boxWidgetOptions: {
-    boxWidgetIcons: {
-      //Collapse icon
-      collapse: 'fa-minus',
-      //Open icon
-      open: 'fa-plus',
-      //Remove icon
-      remove: 'fa-times'
-    },
-    boxWidgetSelectors: {
-      //Remove button selector
-      remove: '[data-widget="remove"]',
-      //Collapse button selector
-      collapse: '[data-widget="collapse"]'
-    }
-  },
-  //Direct Chat plugin options
-  directChat: {
-    //Enable direct chat by default
-    enable: true,
-    //The button to open and close the chat contacts pane
-    contactToggleSelector: '[data-widget="chat-pane-toggle"]'
-  },
-  //Define the set of colors to use globally around the website
-  colors: {
-    lightBlue: "#3c8dbc",
-    red: "#f56954",
-    green: "#00a65a",
-    aqua: "#00c0ef",
-    yellow: "#f39c12",
-    blue: "#0073b7",
-    navy: "#001F3F",
-    teal: "#39CCCC",
-    olive: "#3D9970",
-    lime: "#01FF70",
-    orange: "#FF851B",
-    fuchsia: "#F012BE",
-    purple: "#8E24AA",
-    maroon: "#D81B60",
-    black: "#222222",
-    gray: "#d2d6de"
-  },
-  //The standard screen sizes that bootstrap uses.
-  //If you change these in the variables.less file, change
-  //them here too.
-  screenSizes: {
-    xs: 480,
-    sm: 768,
-    md: 992,
-    lg: 1200
-  }
-};
-
-/* ------------------
- * - Implementation -
- * ------------------
- * The next block of code implements AdminLTE's
- * functions and plugins as specified by the
- * options above.
- */
-$(function () {
-  "use strict";
-
-  //Fix for IE page transitions
-  $("body").removeClass("hold-transition");
-
-  //Extend options if external options exist
-  if (typeof AdminLTEOptions !== "undefined") {
-    $.extend(true,
-            $.AdminLTE.options,
-            AdminLTEOptions);
-  }
-
-  //Easy access to options
-  var o = $.AdminLTE.options;
-
-  //Set up the object
-  _init();
-
-  //Activate the layout maker
-  $.AdminLTE.layout.activate();
-
-  //Enable sidebar tree view controls
-  $.AdminLTE.tree('.sidebar');
-
-  //Enable control sidebar
-  if (o.enableControlSidebar) {
-    $.AdminLTE.controlSidebar.activate();
-  }
-
-  //Add slimscroll to navbar dropdown
-  if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
-    $(".navbar .menu").slimscroll({
-      height: o.navbarMenuHeight,
-      alwaysVisible: false,
-      size: o.navbarMenuSlimscrollWidth
-    }).css("width", "100%");
-  }
-
-  //Activate sidebar push menu
-  if (o.sidebarPushMenu) {
-    $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
-  }
-
-  //Activate Bootstrap tooltip
-  if (o.enableBSToppltip) {
-      $.widget.bridge('uitooltip', $.ui.tooltip);
-    $('body').tooltip({
-      selector: o.BSTooltipSelector
-    });
-
-  }
-
-  //Activate box widget
-  if (o.enableBoxWidget) {
-    $.AdminLTE.boxWidget.activate();
-  }
-
-  //Activate fast click
-  if (o.enableFastclick && typeof FastClick != 'undefined') {
-    FastClick.attach(document.body);
-  }
-
-  //Activate direct chat widget
-  if (o.directChat.enable) {
-    $(document).on('click', o.directChat.contactToggleSelector, function () {
-      var box = $(this).parents('.direct-chat').first();
-      box.toggleClass('direct-chat-contacts-open');
-    });
-  }
-
-  /*
-   * INITIALIZE BUTTON TOGGLE
-   * ------------------------
-   */
-  $('.btn-group[data-toggle="btn-toggle"]').each(function () {
-    var group = $(this);
-    $(this).find(".btn").on('click', function (e) {
-      group.find(".btn.active").removeClass("active");
-      $(this).addClass("active");
-      e.preventDefault();
-    });
-
-  });
-});
-
-/* ----------------------------------
- * - Initialize the AdminLTE Object -
- * ----------------------------------
- * All AdminLTE functions are implemented below.
- */
-function _init() {
-  'use strict';
-  /* Layout
-   * ======
-   * Fixes the layout height in case min-height fails.
-   *
-   * @type Object
-   * @usage $.AdminLTE.layout.activate()
-   *        $.AdminLTE.layout.fix()
-   *        $.AdminLTE.layout.fixSidebar()
-   */
-  $.AdminLTE.layout = {
-    activate: function () {
-      var _this = this;
-      _this.fix();
-      _this.fixSidebar();
-      $(window, ".wrapper").resize(function () {
-        _this.fix();
-        _this.fixSidebar();
-      });
-    },
-    fix: function () {
-      //Get window height and the wrapper height
-      var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();
-      var window_height = $(window).height();
-      var sidebar_height = $(".sidebar").height();
-      //Set the min-height of the content and sidebar based on the
-      //the height of the document.
-      if ($("body").hasClass("fixed")) {
-        $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight());
-      } else {
-        var postSetWidth;
-        if (window_height >= sidebar_height) {
-          $(".content-wrapper, .right-side").css('min-height', window_height - neg);
-          postSetWidth = window_height - neg;
-        } else {
-          $(".content-wrapper, .right-side").css('min-height', sidebar_height);
-          postSetWidth = sidebar_height;
-        }
-
-        //Fix for the control sidebar height
-        var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
-        if (typeof controlSidebar !== "undefined") {
-          if (controlSidebar.height() > postSetWidth)
-            $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
-        }
-
-      }
-    },
-    fixSidebar: function () {
-      //Make sure the body tag has the .fixed class
-      if (!$("body").hasClass("fixed")) {
-        if (typeof $.fn.slimScroll != 'undefined') {
-          $(".sidebar").slimScroll({destroy: true}).height("auto");
-        }
-        return;
-      } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
-        window.console.error("Error: the fixed layout requires the slimscroll plugin!");
-      }
-      //Enable slimscroll for fixed layout
-      if ($.AdminLTE.options.sidebarSlimScroll) {
-        if (typeof $.fn.slimScroll != 'undefined') {
-          //Destroy if it exists
-          $(".sidebar").slimScroll({destroy: true}).height("auto");
-          //Add slimscroll
-          $(".sidebar").slimscroll({
-            height: ($(window).height() - $(".main-header").height()) + "px",
-            color: "rgba(0,0,0,0.2)",
-            size: "3px"
-          });
-        }
-      }
-    }
-  };
-
-  /* PushMenu()
-   * ==========
-   * Adds the push menu functionality to the sidebar.
-   *
-   * @type Function
-   * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
-   */
-  $.AdminLTE.pushMenu = {
-    activate: function (toggleBtn) {
-      //Get the screen sizes
-      var screenSizes = $.AdminLTE.options.screenSizes;
-
-      //Enable sidebar toggle
-      $(toggleBtn).on('click', function (e) {
-        e.preventDefault();
-
-        //Enable sidebar push menu
-        if ($(window).width() > (screenSizes.sm - 1)) {
-          if ($("body").hasClass('sidebar-collapse')) {
-            $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
-          } else {
-            $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
-          }
-        }
-        //Handle sidebar push menu for small screens
-        else {
-          if ($("body").hasClass('sidebar-open')) {
-            $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
-          } else {
-            $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
-          }
-        }
-      });
-
-      $(".content-wrapper").click(function () {
-        //Enable hide menu when clicking on the content-wrapper on small screens
-        if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
-          $("body").removeClass('sidebar-open');
-        }
-      });
-
-      //Enable expand on hover for sidebar mini
-      if ($.AdminLTE.options.sidebarExpandOnHover
-              || ($('body').hasClass('fixed')
-                      && $('body').hasClass('sidebar-mini'))) {
-        this.expandOnHover();
-      }
-    },
-    expandOnHover: function () {
-      var _this = this;
-      var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
-      //Expand sidebar on hover
-      $('.main-sidebar').hover(function () {
-        if ($('body').hasClass('sidebar-mini')
-                && $("body").hasClass('sidebar-collapse')
-                && $(window).width() > screenWidth) {
-          _this.expand();
-        }
-      }, function () {
-        if ($('body').hasClass('sidebar-mini')
-                && $('body').hasClass('sidebar-expanded-on-hover')
-                && $(window).width() > screenWidth) {
-          _this.collapse();
-        }
-      });
-    },
-    expand: function () {
-      $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
-    },
-    collapse: function () {
-      if ($('body').hasClass('sidebar-expanded-on-hover')) {
-        $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
-      }
-    }
-  };
-
-  /* Tree()
-   * ======
-   * Converts the sidebar into a multilevel
-   * tree view menu.
-   *
-   * @type Function
-   * @Usage: $.AdminLTE.tree('.sidebar')
-   */
-  $.AdminLTE.tree = function (menu) {
-    var _this = this;
-    var animationSpeed = $.AdminLTE.options.animationSpeed;
-    $(document).on('click', menu + ' li a', function (e) {
-      //Get the clicked link and the next element
-      var $this = $(this);
-      var checkElement = $this.next();
-
-      //Check if the next element is a menu and is visible
-      if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible'))) {
-        //Close the menu
-        checkElement.slideUp(animationSpeed, function () {
-          checkElement.removeClass('menu-open');
-          //Fix the layout in case the sidebar stretches over the height of the window
-          //_this.layout.fix();
-        });
-        checkElement.parent("li").removeClass("active");
-      }
-      //If the menu is not visible
-      else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
-        //Get the parent menu
-        var parent = $this.parents('ul').first();
-        //Close all open menus within the parent
-        var ul = parent.find('ul:visible').slideUp(animationSpeed);
-        //Remove the menu-open class from the parent
-        ul.removeClass('menu-open');
-        //Get the parent li
-        var parent_li = $this.parent("li");
-
-        //Open the target menu and add the menu-open class
-        checkElement.slideDown(animationSpeed, function () {
-          //Add the class active to the parent li
-          checkElement.addClass('menu-open');
-          parent.find('li.active').removeClass('active');
-          parent_li.addClass('active');
-          //Fix the layout in case the sidebar stretches over the height of the window
-          _this.layout.fix();
-        });
-      }
-      //if this isn't a link, prevent the page from being redirected
-      if (checkElement.is('.treeview-menu')) {
-        e.preventDefault();
-      }
-    });
-  };
-
-  /* ControlSidebar
-   * ==============
-   * Adds functionality to the right sidebar
-   *
-   * @type Object
-   * @usage $.AdminLTE.controlSidebar.activate(options)
-   */
-  $.AdminLTE.controlSidebar = {
-    //instantiate the object
-    activate: function () {
-      //Get the object
-      var _this = this;
-      //Update options
-      var o = $.AdminLTE.options.controlSidebarOptions;
-      //Get the sidebar
-      var sidebar = $(o.selector);
-      //The toggle button
-      var btn = $(o.toggleBtnSelector);
-
-      //Listen to the click event
-      btn.on('click', function (e) {
-        e.preventDefault();
-        //If the sidebar is not open
-        if (!sidebar.hasClass('control-sidebar-open')
-                && !$('body').hasClass('control-sidebar-open')) {
-          //Open the sidebar
-          _this.open(sidebar, o.slide);
-        } else {
-          _this.close(sidebar, o.slide);
-        }
-      });
-
-      //If the body has a boxed layout, fix the sidebar bg position
-      var bg = $(".control-sidebar-bg");
-      _this._fix(bg);
-
-      //If the body has a fixed layout, make the control sidebar fixed
-      if ($('body').hasClass('fixed')) {
-        _this._fixForFixed(sidebar);
-      } else {
-        //If the content height is less than the sidebar's height, force max height
-        if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
-          _this._fixForContent(sidebar);
-        }
-      }
-    },
-    //Open the control sidebar
-    open: function (sidebar, slide) {
-      //Slide over content
-      if (slide) {
-        sidebar.addClass('control-sidebar-open');
-      } else {
-        //Push the content by adding the open class to the body instead
-        //of the sidebar itself
-        $('body').addClass('control-sidebar-open');
-      }
-    },
-    //Close the control sidebar
-    close: function (sidebar, slide) {
-      if (slide) {
-        sidebar.removeClass('control-sidebar-open');
-      } else {
-        $('body').removeClass('control-sidebar-open');
-      }
-    },
-    _fix: function (sidebar) {
-      var _this = this;
-      if ($("body").hasClass('layout-boxed')) {
-        sidebar.css('position', 'absolute');
-        sidebar.height($(".wrapper").height());
-        $(window).resize(function () {
-          _this._fix(sidebar);
-        });
-      } else {
-        sidebar.css({
-          'position': 'fixed',
-          'height': 'auto'
-        });
-      }
-    },
-    _fixForFixed: function (sidebar) {
-      sidebar.css({
-        'position': 'fixed',
-        'max-height': '100%',
-        'overflow': 'auto',
-        'padding-bottom': '50px'
-      });
-    },
-    _fixForContent: function (sidebar) {
-      $(".content-wrapper, .right-side").css('min-height', sidebar.height());
-    }
-  };
-
-  /* BoxWidget
-   * =========
-   * BoxWidget is a plugin to handle collapsing and
-   * removing boxes from the screen.
-   *
-   * @type Object
-   * @usage $.AdminLTE.boxWidget.activate()
-   *        Set all your options in the main $.AdminLTE.options object
-   */
-  $.AdminLTE.boxWidget = {
-    selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
-    icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
-    animationSpeed: $.AdminLTE.options.animationSpeed,
-    activate: function (_box) {
-      var _this = this;
-      if (!_box) {
-        _box = document; // activate all boxes per default
-      }
-      //Listen for collapse event triggers
-      $(_box).on('click', _this.selectors.collapse, function (e) {
-        e.preventDefault();
-        _this.collapse($(this));
-      });
-
-      //Listen for remove event triggers
-      $(_box).on('click', _this.selectors.remove, function (e) {
-        e.preventDefault();
-        _this.remove($(this));
-      });
-    },
-    collapse: function (element) {
-      var _this = this;
-      //Find the box parent
-      var box = element.parents(".box").first();
-      //Find the body and the footer
-      var box_content = box.find("> .box-body, > .box-footer, > form  >.box-body, > form > .box-footer");
-      if (!box.hasClass("collapsed-box")) {
-        //Convert minus into plus
-        element.children(":first")
-                .removeClass(_this.icons.collapse)
-                .addClass(_this.icons.open);
-        //Hide the content
-        box_content.slideUp(_this.animationSpeed, function () {
-          box.addClass("collapsed-box");
-        });
-      } else {
-        //Convert plus into minus
-        element.children(":first")
-                .removeClass(_this.icons.open)
-                .addClass(_this.icons.collapse);
-        //Show the content
-        box_content.slideDown(_this.animationSpeed, function () {
-          box.removeClass("collapsed-box");
-        });
-      }
-    },
-    remove: function (element) {
-      //Find the box parent
-      var box = element.parents(".box").first();
-      box.slideUp(this.animationSpeed);
-    }
-  };
-}
-
-/* ------------------
- * - Custom Plugins -
- * ------------------
- * All custom plugins are defined below.
- */
-
-/*
- * BOX REFRESH BUTTON
- * ------------------
- * This is a custom plugin to use with the component BOX. It allows you to add
- * a refresh button to the box. It converts the box's state to a loading state.
- *
- * @type plugin
- * @usage $("#box-widget").boxRefresh( options );
- */
-(function ($) {
-
-  "use strict";
-
-  $.fn.boxRefresh = function (options) {
-
-    // Render options
-    var settings = $.extend({
-      //Refresh button selector
-      trigger: ".refresh-btn",
-      //File source to be loaded (e.g: ajax/src.php)
-      source: "",
-      //Callbacks
-      onLoadStart: function (box) {
-        return box;
-      }, //Right after the button has been clicked
-      onLoadDone: function (box) {
-        return box;
-      } //When the source has been loaded
-
-    }, options);
-
-    //The overlay
-    var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
-
-    return this.each(function () {
-      //if a source is specified
-      if (settings.source === "") {
-        if (window.console) {
-          window.console.log("Please specify a source first - boxRefresh()");
-        }
-        return;
-      }
-      //the box
-      var box = $(this);
-      //the button
-      var rBtn = box.find(settings.trigger).first();
-
-      //On trigger click
-      rBtn.on('click', function (e) {
-        e.preventDefault();
-        //Add loading overlay
-        start(box);
-
-        //Perform ajax call
-        box.find(".box-body").load(settings.source, function () {
-          done(box);
-        });
-      });
-    });
-
-    function start(box) {
-      //Add overlay and loading img
-      box.append(overlay);
-
-      settings.onLoadStart.call(box);
-    }
-
-    function done(box) {
-      //Remove overlay and loading img
-      box.find(overlay).remove();
-
-      settings.onLoadDone.call(box);
-    }
-
-  };
-
-})(jQuery);
-
-/*
- * EXPLICIT BOX ACTIVATION
- * -----------------------
- * This is a custom plugin to use with the component BOX. It allows you to activate
- * a box inserted in the DOM after the app.js was loaded.
- *
- * @type plugin
- * @usage $("#box-widget").activateBox();
- */
-(function ($) {
-
-  'use strict';
-
-  $.fn.activateBox = function () {
-    $.AdminLTE.boxWidget.activate(this);
-  };
-
-})(jQuery);
diff --git a/resources/assets/js/extensions/pGenerator.jquery.js b/resources/assets/js/extensions/pGenerator.jquery.js
new file mode 100755
index 000000000..466cf22d1
--- /dev/null
+++ b/resources/assets/js/extensions/pGenerator.jquery.js
@@ -0,0 +1,146 @@
+/*!
+ * pGenerator jQuery Plugin v1.0.0
+ * http://accountspassword.com/password-generator-jquery-plugin
+ *
+ * Created by AccountsPassword.com
+ * Released under the GPL General Public License (Feel free to copy, modify or redistribute this plugin.)
+ *
+ */
+
+(function($){
+  	var numbers_array = new Array(),
+		upper_letters_array = new Array(),
+		lower_letters_array = new Array(),
+		special_chars_array = new Array(),
+		$pGeneratorElement = null;
+	var methods = {
+		init : function( options, callbacks) {
+
+			var settings = $.extend({
+				'bind': 'click',
+				'passwordElement': null,
+				'displayElement': null,
+				'passwordLength': 16,
+				'uppercase': true,
+				'lowercase': true,
+				'numbers':   true,
+				'specialChars': true,
+				'onPasswordGenerated': function(generatedPassword) { }
+			}, options);
+
+			for(var i = 48; i < 58; i++)
+				numbers_array.push(i);
+			for(i = 65; i < 91; i++)
+				upper_letters_array.push(i);
+			for(i = 97; i < 123; i++)
+				lower_letters_array.push(i);
+			special_chars_array = [33,35,64,36,38,42,91,93,123,125,92,47,63,58,59,95,45,53];
+
+			return this.each(function(){
+
+				$pGeneratorElement = $(this);
+
+				$pGeneratorElement.bind(settings.bind, function(e){
+					e.preventDefault();
+					methods.generatePassword(settings);
+				});
+
+			});
+		},
+		generatePassword: function(settings) {
+
+			var password = new Array(),
+				selOptions = settings.uppercase + settings.lowercase + settings.numbers + settings.specialChars,
+				selected = 0,
+				no_lower_letters = new Array();
+
+			var optionLength = Math.floor(settings.passwordLength / selOptions);
+
+			if(settings.uppercase) {
+				// uppercase letters
+				for(var i = 0; i < optionLength; i++) {
+					password.push(String.fromCharCode(upper_letters_array[randomFromInterval(0, upper_letters_array.length - 1)]));
+				}
+
+				no_lower_letters = no_lower_letters.concat(upper_letters_array);
+
+				selected++;
+			}
+
+			if(settings.numbers) {
+				// numbers letters
+				for(var i = 0; i < optionLength; i++) {
+					password.push(String.fromCharCode(numbers_array[randomFromInterval(0, numbers_array.length - 1)]));
+				}
+
+				no_lower_letters = no_lower_letters.concat(numbers_array);
+
+				selected++;
+			}
+
+			if(settings.specialChars) {
+				// numbers letters
+				for(var i = 0; i < optionLength; i++) {
+					password.push(String.fromCharCode(special_chars_array[randomFromInterval(0, special_chars_array.length - 1)]));
+				}
+
+				no_lower_letters = no_lower_letters.concat(special_chars_array);
+
+				selected++;
+			}
+
+			var remained = settings.passwordLength - (selected * optionLength);
+
+			if(settings.lowercase) {
+
+				for(var i = 0; i < remained; i++) {
+					password.push(String.fromCharCode(lower_letters_array[randomFromInterval(0, lower_letters_array.length - 1)]));
+				}
+
+			} else {
+
+				for(var i = 0; i < remained; i++) {
+					password.push(String.fromCharCode(no_lower_letters[randomFromInterval(0, no_lower_letters.length - 1)]));
+				}
+			}
+			password = shuffle(password);
+			passwordString = password.join('');
+
+			if(settings.passwordElement !== null) {
+				$(settings.passwordElement).val(passwordString);
+			}
+
+			if(settings.displayElement !== null) {
+                if($(settings.displayElement).is("input")) {
+                    $(settings.displayElement).val(passwordString);
+                } else {
+                    $(settings.displayElement).text(passwordString);
+                }
+			}
+
+			settings.onPasswordGenerated(passwordString);
+
+		}
+  	};
+
+	function shuffle(o){ //v1.0
+		for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
+		return o;
+	};
+
+	function randomFromInterval(from, to)
+	{
+		return Math.floor(Math.random()*(to-from+1)+from);
+	};
+
+	$.fn.pGenerator = function(method) {
+    	if ( methods[method] ) {
+      		return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
+    	} else if ( typeof method === 'object' || ! method ) {
+      		return methods.init.apply( this, arguments );
+    	} else {
+      		$.error( 'Method ' +  method + ' does not exist on jQuery.pGenerator' );
+    	}
+  	};
+
+})(jQuery);
diff --git a/resources/views/modals/user.blade.php b/resources/views/modals/user.blade.php
index 7aec3ee9d..85db7d5d3 100644
--- a/resources/views/modals/user.blade.php
+++ b/resources/views/modals/user.blade.php
@@ -1,5 +1,4 @@
 {{-- See snipeit_modals.js for what powers this --}}
-<script src="/js/pGenerator.jquery.js"></script>
 
 <script nonce="{{ csrf_token() }}">
     $(document).ready(function () {
diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php
index 79f76b974..6a4dd22a6 100755
--- a/resources/views/users/edit.blade.php
+++ b/resources/views/users/edit.blade.php
@@ -587,7 +587,6 @@
 @stop
 
 @section('moar_scripts')
-<script src="{{ asset('js/pGenerator.jquery.js') }}"></script>
 
 <script nonce="{{ csrf_token() }}">
 $(document).ready(function() {
diff --git a/webpack.mix.js b/webpack.mix.js
index 156b64955..871804c32 100644
--- a/webpack.mix.js
+++ b/webpack.mix.js
@@ -87,17 +87,18 @@ mix.js([
  * Combine JS
  */
 mix.combine([
+    './node_modules/admin-lte/dist/js/adminlte.min.js',
+    './resources/assets/js/admin-lte-options.js',
     './node_modules/jquery-ui-dist/jquery-ui.js',
     './node_modules/tether/dist/js/tether.min.js',
     './node_modules/jquery-slimscroll/jquery.slimscroll.js',
     './node_modules/jquery.iframe-transport/jquery.iframe-transport.js',
     './node_modules/blueimp-file-upload/js/jquery.fileupload.js',
-    './node_modules/blueimp-file-upload/js/vendor/jquery.ui.widget.js',
     './node_modules/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js',
     './node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js',
     './node_modules/ekko-lightbox/dist/ekko-lightbox.js',
-    './node_modules/admin-lte/dist/js/adminlte.min.js',
     './node_modules/icheck/icheck.js',
+    './resources/assets/js/extensions/pGenerator.jquery.js'
 ], 'public/js/vendor.js')
 .version();
 
-- 
GitLab