From eb2414bda8c12e415a463543ea922980ee342d88 Mon Sep 17 00:00:00 2001 From: Luke Berndt Date: Wed, 17 Feb 2021 22:05:14 -0500 Subject: [PATCH] headings --- .gitignore | 1 + README.md | 3 + account/public/android-chrome-192x192.png | Bin 0 -> 3795 bytes account/public/android-chrome-512x512.png | Bin 0 -> 15497 bytes account/public/apple-touch-icon.png | Bin 0 -> 3549 bytes account/public/favicon-16x16.png | Bin 0 -> 403 bytes account/public/favicon-32x32.png | Bin 0 -> 627 bytes account/public/favicon.ico | Bin 3585 -> 15406 bytes account/public/index.html | 10 +- account/public/logo192.png | Bin 4153 -> 0 bytes account/public/logo512.png | Bin 12066 -> 0 bytes account/public/manifest.json | 25 -- account/public/site.webmanifest | 1 + account/server/config/express.js | 8 +- account/server/controllers/users.js | 2 +- admin/public/android-chrome-192x192.png | Bin 0 -> 3795 bytes admin/public/android-chrome-512x512.png | Bin 0 -> 15497 bytes admin/public/apple-touch-icon.png | Bin 0 -> 3549 bytes admin/public/favicon-16x16.png | Bin 0 -> 403 bytes admin/public/favicon-32x32.png | Bin 0 -> 627 bytes admin/public/favicon.ico | Bin 3585 -> 15406 bytes admin/public/index.html | 10 +- admin/public/logo192.png | Bin 4153 -> 0 bytes admin/public/logo512.png | Bin 12066 -> 0 bytes admin/public/manifest.json | 25 -- admin/public/site.webmanifest | 1 + admin/server/config/express.js | 8 +- docker-compose.yml | 3 + frontend/.eslintcache | 2 +- frontend/public/android-chrome-192x192.png | Bin 0 -> 3795 bytes frontend/public/android-chrome-512x512.png | Bin 0 -> 15497 bytes frontend/public/apple-touch-icon.png | Bin 0 -> 3549 bytes frontend/public/favicon-16x16.png | Bin 0 -> 403 bytes frontend/public/favicon-32x32.png | Bin 0 -> 627 bytes frontend/public/favicon.ico | Bin 3585 -> 15406 bytes frontend/public/index.html | 10 +- frontend/public/logo192.png | Bin 4153 -> 0 bytes frontend/public/logo512.png | Bin 12066 -> 0 bytes frontend/public/manifest.json | 25 -- frontend/public/site.webmanifest | 1 + frontend/src/Call/CallItem.js | 6 +- frontend/src/Call/CallPlayer.js | 311 +++++++++++---------- frontend/src/Call/MediaPlayer.js | 4 +- prod.env.example | 1 + test.env.example | 1 + 45 files changed, 205 insertions(+), 253 deletions(-) create mode 100644 account/public/android-chrome-192x192.png create mode 100644 account/public/android-chrome-512x512.png create mode 100644 account/public/apple-touch-icon.png create mode 100644 account/public/favicon-16x16.png create mode 100644 account/public/favicon-32x32.png delete mode 100644 account/public/logo192.png delete mode 100644 account/public/logo512.png delete mode 100644 account/public/manifest.json create mode 100644 account/public/site.webmanifest create mode 100644 admin/public/android-chrome-192x192.png create mode 100644 admin/public/android-chrome-512x512.png create mode 100644 admin/public/apple-touch-icon.png create mode 100644 admin/public/favicon-16x16.png create mode 100644 admin/public/favicon-32x32.png delete mode 100644 admin/public/logo192.png delete mode 100644 admin/public/logo512.png delete mode 100644 admin/public/manifest.json create mode 100644 admin/public/site.webmanifest create mode 100644 frontend/public/android-chrome-192x192.png create mode 100644 frontend/public/android-chrome-512x512.png create mode 100644 frontend/public/apple-touch-icon.png create mode 100644 frontend/public/favicon-16x16.png create mode 100644 frontend/public/favicon-32x32.png delete mode 100644 frontend/public/logo192.png delete mode 100644 frontend/public/logo512.png delete mode 100644 frontend/public/manifest.json create mode 100644 frontend/public/site.webmanifest diff --git a/.gitignore b/.gitignore index ab35e71..a44e998 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ account/.eslintcache admin/.eslintcache frontend/.eslintcache admin/.eslintcache +data/* diff --git a/README.md b/README.md index 7b0d576..33b1f0a 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,9 @@ You can then browser to: - openmhz.test - admin.openmhz.test +*Interesting Note*: Safari 13+ does not like the **.test** TLD and doesn't seem to want to store cookies from the TLD. It seems to work fine in production when you are using a real TLD. I guess use Chrome for local testing or a different TLD for testing, like local. +https://stackoverflow.com/questions/62023857/sharing-cookies-across-test-sub-domains-in-safari-13-not-possible + ### Debugging React Apps using Hot Reloading If you are trying to make changes to any of react frontends, it is a huge pain to have to compile to site and rebuild the container each time you make a change. Instead, simply run the react app in development mode. This will work for the frontends for the: - admin frontend diff --git a/account/public/android-chrome-192x192.png b/account/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee745e2b31d7c71bd2a6067f8a70ae46ef4d8f7 GIT binary patch literal 3795 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 K46^m@0{<5!0?>W{ literal 0 HcmV?d00001 diff --git a/account/public/apple-touch-icon.png b/account/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9f065231d200a43e1a690bcfb9e5b72968caa0 GIT binary patch literal 3549 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 literal 0 HcmV?d00001 diff --git a/account/public/favicon.ico b/account/public/favicon.ico index 354202a4e6baec3429e928e13d54144f8eebb62c..a65d71823e45409a25b5d1cb0b3f10cb91df6da2 100644 GIT binary patch literal 15406 zcmeHOO-vJ86dnZeCn^ws5Zw?LL>C$p^~DfPUflUdbmea%YNAAgF5I~ApGMrf$IR569KTwv?>j*Y|Tye23#FHU1}0 zoO9|wdgP?8UsdIRn>X!os?#~B>+5uV@bKXPul+NMHd?uN&jH7deTh@F(TdUNgH@}H zaP+8^=+><*(AM@3ZFTVZLU7}T9cpUa@aD}3oI3Rt#>Yd{^%EV_t&iX1`}aU%v(%qo zyl{cr9i;Y`<0v{P$S~qKQ_Sn1yyEzjOypqFd;x;NDBzeOrg)E~;8?wDmwC<@B#g;B zcCiBvf89|#<6eNGDFJvix=xg3$~e?tA|5}IwTc+SjAtm!~o~df0NXuOAXB8$N2Z8;J=<(eEj|wF4!cM<@e9c zHNgJ;pCy&m?~mR23BN_l zmGi3YlVoyF{ynhcs|BuoCMUy^iarcpL((R>rDX!HT6cAN`KO8zGMh4YCaowl6LX|hHTFw&HA@+0YBqp3SEARoWo z&Tc=32J>tm4gYL5l)u*aSDy3P5jFm2v!VQTrt{y~IVF4kYHy!Zp6DbItE-1)* z-F|)&n4;!L1o)hPr)>OXWmcv+Nl~yOMqGCm6*bDnzkYoqeEKvl(xS4a=g(bK`H#dk z9qvazeLAEpSdnNtT|X>Z6n}Oo5v$l|Tu0x%>kw&CS<~&?cF50ffX9yqd393j>eUT^ zbr)I?!^)M$nX_NQ8L(7kUS7Rw@aN?j;nppOEG;Nd4}R&Zv0)WR`tBU;JIU=uUx*|O&G=VzsNP>Z*7h3*W#I4HR89~rbzC7-@Z1eulEuB z?d|{JH=EUs9|3#4As876&b(7$&U4Qm3zU|ci5-2^%0FTg6U8cZ;TM=# zm@?D(cew(vb7w0VYfUEl|F2jWw&zCG>wWxQg^}RLxj56Lw$=-H)(`g{PM_||H25$! r7J>&4`r+EO93n4Y}?<9 literal 3585 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 Hu0mjfhdT@% diff --git a/account/public/index.html b/account/public/index.html index 430b58f..fc897ee 100644 --- a/account/public/index.html +++ b/account/public/index.html @@ -6,15 +6,15 @@ - + - + - React Redux App + %REACT_APP_SITE_NAME% diff --git a/account/public/logo192.png b/account/public/logo192.png deleted file mode 100644 index 33624109cdc98874ea8657a2a3a7ce71c81d1837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4153 zcmbtY`8U*!_kX{~V1@=W)+B~T_AJ@5WX3*ZiLy^A#RySCnlN_qh%8C6RhF`)(1h%I zWC@Wn_I(h8&|vWK{0raj53hUg>z;dmd7X35z30YTTbdv^ggF2JK;TUcZH|1?e}J(a zS({OB_9F-PGj;R_0Dk@d02)>5*8l+bGTsn(={|LZU~yOYE9$^lnY3w%o`+6nV>KP# z^U$HUva$Eu@2;h!ufs>R!uum6r-l%dP!vmFZ z^-OXH#`sID8365GK%V`SS0M0yy4oS>3gtZp+o7)qTGv0|I%wx5->VcYqfjweY5g#` zD+e0%`_b2^3z&lPp8Tf3M1)?z>lHOk4*2{i5|xLa$|VUfZ3V8G{fvVWCEi(_xEJuY z4F(^RKs80zon>F+X`T@UFFZ5;5y^hdm-7$^7Typ~FepKlnmFB8g4x zQ@ZQ(GuDCx^f1#mrX|;KtX zT=t}Zas>0>*S=dS<)$U1O3dG+h4;PO=GP{UO*}c!E6nHHp}8qLLBOTq6$>j4QZ;x| zvj)$DA^-fM%Zo>*0ty2MEHp3L$S-d*FV+Vgw#681SKeoIDA6rd#z0O<5~Q-1*?E27 zejz&%G*<0O`2kISF4psgjtss@loLOmFV)2n2_-(+rt7~NPJ_}!!Bu%qlWsfLf@3kh zwP}c33gEG&vD`Kz8l>v>crujscyFMfyc2_sg(+b`**Y8sJGfhSFp~u9KYyX)|O6c;9tM$Hj*E&5sGxM)G`(LoPIq z*Quv^MF~`WN{@k}!P*OC%gNqyR8xC&5WX=-i`)gNb3J^?)NQTN`0jHGRNYyAb+g$j zIm0$ro5Ucgk3-K+g;a_vc+B+JrLgkSvRJFQ%DfUaPxz|p(Sj>Q5elBnL2EKs#~#9m z#p#2&cnh>~+hUhi$Eu@1-Z566X0i7!eu-lG2yR7x6FkN}tV8zpC7t6`?}{*gUO$ zkQ*G5*y#0&krEz9(E)JhTgouHC8PZTA9L_)LY%s!!FbKyXHsM4hITC9-_%Fq{L2jF z7WH49Bb_hPiaG?5utQYS&y=LyoXOSnt7Ao!MtoF3X@8OMRsRI$#-SwKx>+$hQA3WI zwsn; zJ$-87v~Q+ofqN~Nnl>`iJgrHG@E{S`O^R^^?f4U}k-jvx0TI^X0#%jqEabpJ3 z;|l7uuHo%Fyh^XgANJB?#P%j^4G-lRG`tw#q|@ z4Y}7O&*;s8Zb$HFroANV!appLHkC{FII zvuc}rB^+VOi-!IV{wJrELl9Gkk8TONJgPmJg<%lao{SXEgeSyk6eZOUjec6Qhs6{r z@Em{}%b5XwKDNB(m*0FnhkKPsd0qpUv-E5d7ww*GYp*)>fju`uCI;HnKe*Y_to|Vh zn2H=t$JxBkQJ+5qcoHn-g4j;*mu!o*-2SWSr7wNF5V}jvuPa=tdR_%M{ak?U#oAJP zUKo3`db4lXtItSWH1ucRK%EDVRohOZr793HB&0JaC_Jzvp5MkoO;FQ#I;K=1fbE)B zJo8{ajScs4n8W29<6FZi^MZirr~SOx?qcITv6ET4E7!kxvqngfRUt#G?di)7d2r4= z{=zq1ccG5=eY9><=W`gKYkYmd%fAjyGN2hEW4tv#-`I?L*iV!_<9g$9T7N>g>jXvK zF-TVoJCd&Hd0pdZt*f8#%}GBqoPDoAT1DJ>HhX+KoTFqrDASehr)cv=?|a)BTl?Fd zywE=4VJQxmX>j!oV&r+%JBPH>yFsqeh6g+AF6X<##qIQRQPC3Da<;m_bp9abYUt{5uqsp)*CRVA-$E8r`G=yf|Y zrHVuo_94`nTGU~hNZ@e)0-DwFzBA6d_iSdExSK@}z4f`L)nV*K9_;aVH_jIrUgyi2 zW6@|R!zMoJ^Oy~~yO1MFFel^qpn%_TEpW2%L=?R=Iet6LFw}Wjaq<0>kKWNXzA<0w z4A?IK&)K(hO>Rxnf=K6ZPfMbx2WCk*F4=$irY#0Y^B)wGeIXPYSI8osp@?)X3t@#2 zua^ZQx)5j}5ZP;?Qv!GZAdLr-)$L z@id<N6}B ziuuc}E`JpyndwJx6=1 zVz_p6AU}HhDdSjI9jW)N!qBM_PwNbVxT=pFyi7Uae z_E>}(xArymn$#A(Qfa2Pq2`v&Ql@I7T0%VVJa#4A&Fm_tK}5aplQ(N(r#AP(+T;Y% zZwWz_OcCE?wu8IHL)U(Ci0MIuVuY<^rbT?zyeq{< zOJu7vrCDAOVp-Gsl1g%NSi({)_HX6Tj%lgChvU;0akBS6fht|~ZV_QJJwYXpRTG^U zob4Wy)9ofecwnTcelhngQ-)N>a=~q{hZch^irM+qcD{46ltx(G9PsYe2RYRfzPm5C z8uQ0l>A#}G$o0+dRy4(RAVQYzi_O!oHvqNqn!+JH2|e8;M@GVTE`0cfhg&g`5ZjEEWGwrMt6$}oQI+Xh2K;(!2ZjlSQxX8|q@4&eBr&^%6aaG15x9n)X zCp1eZIdwEl9)5UH)%ADFLG z%RNQL+5Xf#Aw`zI;ACKazU7auJ$^>AgLB6_kfPb?>ueWN&chc)(UIvsdnNIwYOpw& z6~*VI65VQ$!i!sJ3-1%WkK+7T!FUMYu$^Ps_>ggVz)T<7DC9}yBrrasno#i08y&z6 z_44lY+mVPlHFD&)wungRu4Cc?VftQf9s!U4eR9?9s{C}-v{rD5`<5Bdg}JYAi8Sk2 z)S~r!omBS}46T`#J_wZgU7-=;=pmbsUvft}ElT=PNKc3ypJBvrgP~(yNXqYv%j~_zJ5_&)Rv!gsJ#!A#9 zCEA3Xg3oO&rQf7UM|>ZQDI~Q{B(dU7-exl*+YhppE2u4D8Y-xrIh+^6LTm~{^v zhoq^8z(`xF7M>pmpVsJo5VajFk=_F79vT->lRv&ly~|a2AMO!PutU_C&}TfX3Pf2O z=b-oJ*f7Pp4@#B?JR~+V>33P-aS8UY8=7gQljrYcK6(U5btpCWw#wQMznV_=NvKzw zK0m3JnKm@r8EIo0!Zo_e2Y#clh72=97XxmhX~~JB3Ge=Wxbs@GSXdL?hHMmlYgA`h zCJy93F4(QO!rB?@tj(lOY0JsQ#yGHyE@j7`@ diff --git a/account/public/logo512.png b/account/public/logo512.png deleted file mode 100644 index b3516222f0b978579b871c871b955b5fc5b4ca5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12066 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 A^#A|> diff --git a/account/public/manifest.json b/account/public/manifest.json deleted file mode 100644 index 2f2be64..0000000 --- a/account/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/account/public/site.webmanifest b/account/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/account/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/account/server/config/express.js b/account/server/config/express.js index 38da07c..e040907 100644 --- a/account/server/config/express.js +++ b/account/server/config/express.js @@ -28,8 +28,8 @@ module.exports = function(app, passport) { const sess = { /*saveUninitialized: false, resave: false,*/ - resave: true, - saveUninitialized: true, + resave: false, + saveUninitialized: false, secret: secrets.sessionSecret, proxy: true, name: "sessionId", @@ -48,12 +48,12 @@ module.exports = function(app, passport) { console.log('--------------------------'); console.log('===> 😊 Starting Server . . .'); console.log('===> Environment: ' + node_env); - /*if(node_env === 'production') { + if(node_env === 'production') { console.log('===> 🚦 Note: In order for authentication to work in production'); console.log('===> you will need a secure HTTPS connection'); sess.cookie.secure = true; // Serve secure cookies sess.cookie.httpOnly = false; - }*/ + } app.use(session(sess)) diff --git a/account/server/controllers/users.js b/account/server/controllers/users.js index f4ff3ca..faeac7a 100644 --- a/account/server/controllers/users.js +++ b/account/server/controllers/users.js @@ -21,7 +21,7 @@ exports.isLoggedIn = function(req, res, next) { exports.authenticated = function(req, res, next) { res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate'); - //console.log("account/server/controllers/users.js - exports.authenticated() Auth check for user: " + req.user + " is: " + req.isAuthenticated()); + console.log("account/server/controllers/users.js - exports.authenticated() Auth check for user: " + req.user + " is: " + req.isAuthenticated()); if (req.isAuthenticated()) { var clientUser = (({ firstName, diff --git a/admin/public/android-chrome-192x192.png b/admin/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee745e2b31d7c71bd2a6067f8a70ae46ef4d8f7 GIT binary patch literal 3795 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 K46^m@0{<5!0?>W{ literal 0 HcmV?d00001 diff --git a/admin/public/apple-touch-icon.png b/admin/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9f065231d200a43e1a690bcfb9e5b72968caa0 GIT binary patch literal 3549 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 literal 0 HcmV?d00001 diff --git a/admin/public/favicon.ico b/admin/public/favicon.ico index 354202a4e6baec3429e928e13d54144f8eebb62c..a65d71823e45409a25b5d1cb0b3f10cb91df6da2 100644 GIT binary patch literal 15406 zcmeHOO-vJ86dnZeCn^ws5Zw?LL>C$p^~DfPUflUdbmea%YNAAgF5I~ApGMrf$IR569KTwv?>j*Y|Tye23#FHU1}0 zoO9|wdgP?8UsdIRn>X!os?#~B>+5uV@bKXPul+NMHd?uN&jH7deTh@F(TdUNgH@}H zaP+8^=+><*(AM@3ZFTVZLU7}T9cpUa@aD}3oI3Rt#>Yd{^%EV_t&iX1`}aU%v(%qo zyl{cr9i;Y`<0v{P$S~qKQ_Sn1yyEzjOypqFd;x;NDBzeOrg)E~;8?wDmwC<@B#g;B zcCiBvf89|#<6eNGDFJvix=xg3$~e?tA|5}IwTc+SjAtm!~o~df0NXuOAXB8$N2Z8;J=<(eEj|wF4!cM<@e9c zHNgJ;pCy&m?~mR23BN_l zmGi3YlVoyF{ynhcs|BuoCMUy^iarcpL((R>rDX!HT6cAN`KO8zGMh4YCaowl6LX|hHTFw&HA@+0YBqp3SEARoWo z&Tc=32J>tm4gYL5l)u*aSDy3P5jFm2v!VQTrt{y~IVF4kYHy!Zp6DbItE-1)* z-F|)&n4;!L1o)hPr)>OXWmcv+Nl~yOMqGCm6*bDnzkYoqeEKvl(xS4a=g(bK`H#dk z9qvazeLAEpSdnNtT|X>Z6n}Oo5v$l|Tu0x%>kw&CS<~&?cF50ffX9yqd393j>eUT^ zbr)I?!^)M$nX_NQ8L(7kUS7Rw@aN?j;nppOEG;Nd4}R&Zv0)WR`tBU;JIU=uUx*|O&G=VzsNP>Z*7h3*W#I4HR89~rbzC7-@Z1eulEuB z?d|{JH=EUs9|3#4As876&b(7$&U4Qm3zU|ci5-2^%0FTg6U8cZ;TM=# zm@?D(cew(vb7w0VYfUEl|F2jWw&zCG>wWxQg^}RLxj56Lw$=-H)(`g{PM_||H25$! r7J>&4`r+EO93n4Y}?<9 literal 3585 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 Hu0mjfhdT@% diff --git a/admin/public/index.html b/admin/public/index.html index 430b58f..fc897ee 100644 --- a/admin/public/index.html +++ b/admin/public/index.html @@ -6,15 +6,15 @@ - + - + - React Redux App + %REACT_APP_SITE_NAME% diff --git a/admin/public/logo192.png b/admin/public/logo192.png deleted file mode 100644 index 33624109cdc98874ea8657a2a3a7ce71c81d1837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4153 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 diff --git a/admin/public/logo512.png b/admin/public/logo512.png deleted file mode 100644 index b3516222f0b978579b871c871b955b5fc5b4ca5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12066 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 A^#A|> diff --git a/admin/public/manifest.json b/admin/public/manifest.json deleted file mode 100644 index 2f2be64..0000000 --- a/admin/public/manifest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/admin/public/site.webmanifest b/admin/public/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/admin/public/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/admin/server/config/express.js b/admin/server/config/express.js index a3cd997..b54deef 100644 --- a/admin/server/config/express.js +++ b/admin/server/config/express.js @@ -26,8 +26,8 @@ module.exports = function(app, passport) { app.use(express.static(path.join(process.cwd(), 'public'))); const sess = { - resave: true, - saveUninitialized: true, + resave: false, + saveUninitialized: false, secret: secrets.sessionSecret, proxy: true, name: "sessionId", @@ -46,12 +46,12 @@ module.exports = function(app, passport) { console.log('--------------------------'); console.log('===> 😊 Starting Server . . .'); console.log('===> Environment: ' + node_env); - /* + if(node_env === 'production') { console.log('===> 🚦 Note: In order for authentication to work in production'); console.log('===> you will need a secure HTTPS connection'); sess.cookie.secure = true; // Serve secure cookies - }*/ + } app.use(session(sess)) diff --git a/docker-compose.yml b/docker-compose.yml index e393288..af9fce8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,6 +55,7 @@ services: pid: "host" environment: - MONGO_NODE_DRIVER_HOST=mongo + - NODE_ENV - REACT_APP_BACKEND_SERVER - REACT_APP_ADMIN_SERVER - REACT_APP_FRONTEND_SERVER @@ -98,6 +99,7 @@ services: - REACT_APP_FRONTEND_SERVER - REACT_APP_SITE_NAME - MONGO_NODE_DRIVER_HOST=mongo + - NODE_ENV depends_on: - mongo networks: @@ -132,6 +134,7 @@ services: - REACT_APP_SITE_NAME - REACT_APP_ADMIN_EMAIL - REACT_APP_COOKIE_DOMAIN + - NODE_ENV depends_on: - mongo networks: diff --git a/frontend/.eslintcache b/frontend/.eslintcache index d4c212a..040af7d 100644 --- a/frontend/.eslintcache +++ b/frontend/.eslintcache @@ -1 +1 @@ -[{"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/ListCalls.js":"1","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-actions.js":"2","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystemsContainer.js":"3","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallPlayer.js":"4","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-constants.js":"5","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/SupportModal.js":"6","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/FilterModal.js":"7","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/query-string.js":"8","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModal.js":"9","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/configureStore.js":"10","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-actions.js":"11","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-reducer.js":"12","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/MediaPlayer.js":"13","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/GroupModal.js":"14","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-actions.js":"15","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/reducers.js":"16","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/SystemCard.js":"17","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModalContainer.js":"18","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystems.js":"19","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-constants.js":"20","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallItem.js":"21","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/system-actions.js":"22","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-reducer.js":"23","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Main/MainContainer.js":"24","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-reducer.js":"25","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-constants.js":"26"},{"size":1638,"mtime":1613098982285,"results":"27","hashOfConfig":"28"},{"size":9179,"mtime":1609597700043,"results":"29","hashOfConfig":"28"},{"size":277,"mtime":1545362103911,"results":"30","hashOfConfig":"28"},{"size":18826,"mtime":1613099368034,"results":"31","hashOfConfig":"28"},{"size":151,"mtime":1545362103908,"results":"32","hashOfConfig":"28"},{"size":1313,"mtime":1610678127937,"results":"33","hashOfConfig":"28"},{"size":4455,"mtime":1612233941171,"results":"34","hashOfConfig":"28"},{"size":362,"mtime":1610678313030,"results":"35","hashOfConfig":"28"},{"size":1778,"mtime":1609597248589,"results":"36","hashOfConfig":"28"},{"size":854,"mtime":1611803272298,"results":"37","hashOfConfig":"28"},{"size":2433,"mtime":1609597717050,"results":"38","hashOfConfig":"28"},{"size":1395,"mtime":1545362103908,"results":"39","hashOfConfig":"28"},{"size":4252,"mtime":1612317546527,"results":"40","hashOfConfig":"28"},{"size":2023,"mtime":1612233431556,"results":"41","hashOfConfig":"28"},{"size":1747,"mtime":1609597708479,"results":"42","hashOfConfig":"28"},{"size":595,"mtime":1609596047661,"results":"43","hashOfConfig":"28"},{"size":2045,"mtime":1609520570000,"results":"44","hashOfConfig":"28"},{"size":763,"mtime":1545362103896,"results":"45","hashOfConfig":"28"},{"size":1547,"mtime":1609520315634,"results":"46","hashOfConfig":"28"},{"size":537,"mtime":1545362103916,"results":"47","hashOfConfig":"28"},{"size":2909,"mtime":1613011408389,"results":"48","hashOfConfig":"28"},{"size":1575,"mtime":1610678224214,"results":"49","hashOfConfig":"28"},{"size":1045,"mtime":1610678295131,"results":"50","hashOfConfig":"28"},{"size":264,"mtime":1545362103910,"results":"51","hashOfConfig":"28"},{"size":7019,"mtime":1560857753468,"results":"52","hashOfConfig":"28"},{"size":1109,"mtime":1560828045933,"results":"53","hashOfConfig":"28"},{"filePath":"54","messages":"55","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"1du4mf8",{"filePath":"56","messages":"57","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"58","usedDeprecatedRules":"59"},{"filePath":"60","messages":"61","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"63","messages":"64","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"65","messages":"66","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"74","usedDeprecatedRules":"75"},{"filePath":"76","messages":"77","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"78"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"81","messages":"82","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"83","usedDeprecatedRules":"59"},{"filePath":"84","messages":"85","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"86","messages":"87","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"88","messages":"89","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"90","messages":"91","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"92"},{"filePath":"93","messages":"94","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"96","messages":"97","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"98","messages":"99","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"100","messages":"101","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"102","messages":"103","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"104","messages":"105","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"106"},{"filePath":"107","messages":"108","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"109","messages":"110","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"95"},{"filePath":"111","messages":"112","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"115","usedDeprecatedRules":"95"},{"filePath":"116","messages":"117","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/ListCalls.js",["118"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-actions.js",["119","120","121"],"import axios from \"axios\";\n\nimport * as types from \"./call-constants\";\nimport { push } from 'connected-react-router';\n\nconst FETCH_SUCCESS_STATISTIC = \"FETCH_SUCCESS_STATISTIC\"\n\nfunction beginFetchCallInfo() {\n return { type: types.FETCH_CALL_INFO };\n}\n\nfunction fetchCallInfoSuccess(data) {\n return { type: types.FETCH_SUCCESS_CALL_INFO,\n data };\n}\n\nfunction fetchCallInfoError(data) {\n return { type: types.FETCH_ERROR_CALL_INFO,\n data };\n}\n\nfunction prependCall() {\n return { type: types.PREPEND_CALL };\n}\n\nfunction beginAddStar() {\n return { type: types.ADD_STAR };\n}\n\nfunction addStarSuccess(data) {\n return { type: types.ADD_STAR_SUCCESS, data };\n}\n\nfunction addStarError(data) {\n return { type: types.ADD_STAR_ERROR, data };\n}\n\nfunction beginFetchCall() {\n return { type: types.FETCH_CALL };\n}\n\nfunction fetchCallSuccess(data) {\n return { type: types.FETCH_SUCCESS_CALL,\n data };\n}\n\n\n\nfunction fetchOlderCallSuccess(data) {\n return { type: types.FETCH_SUCCESS_OLDER_CALL,\n data };\n}\n\nfunction fetchNewerCallSuccess(data) {\n return { type: types.FETCH_SUCCESS_NEWER_CALL,\n data };\n}\n\nfunction fetchCallError(data) {\n return { type: types.FETCH_ERROR_CALL,\n data };\n}\n\n\nexport function changeUrl(url) {\n return dispatch => {\n dispatch(push(url));\n };\n}\n\n// Example of an Async Action Creator\n// http://redux.js.org/docs/advanced/AsyncActions.html\n\nfunction shouldFetchCalls(state, subreddit) {\n return true;\n if ((!state.call.items) || (state.call.items.length <1)) {\n return true\n } else if (state.call.isWaiting) {\n return false\n } else {\n return false\n }\n}\n\n\n\n\nfunction buildUrlParams(a) {\n return Object.keys(a).map(function(k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(a[k])\n }).join('&')\n}\n\nfunction buildCallUrl(state, date, direction) {\n var params = {};\n var url = \"\";\n\n\n if ((typeof direction === 'string') && (typeof date === 'number')) {\n url = url + '/' + direction;\n params[\"time\"] = date;\n } else {\n if (state.call.filterDate){\n url = url + '/older'\n params[\"time\"] = state.call.filterDate;\n }\n }\n if (state.call.filterStarred) {\n params[\"filter-starred\"] = true;\n }\n switch(state.call.filterType) {\n case 1:\n params[\"filter-type\"] = \"group\";\n params[\"filter-code\"] = state.call.filterGroupId;\n break;\n case 2:\n params[\"filter-type\"] = \"talkgroup\";\n params[\"filter-code\"] = state.call.filterTalkgroups;\n break;\n default:\n case 0:\n }\n/*\n\n if (this.filterCode != \"\") {\n params[\"filter-code\"] = this.filterCode;\n }\n\n if (this.filterType == this.FilterType.Group) {\n params[\"filter-type\"] = \"group\";\n params[\"filter-name\"] = this.filterName;\n }\n\n if (this.filterType == this.FilterType.Talkgroup) {\n params[\"filter-type\"] = \"talkgroup\";\n }\n\n if (this.filterType == this.FilterType.Unit) {\n params[\"filter-type\"] = \"unit\";\n }\n\n*/\n // url = startUp.backend_server + \"/\" + startUp.shortName.toLowerCase() + \"/calls\" + url + '?' + buildUrlParams(params);\n url = process.env.REACT_APP_BACKEND_SERVER + \"/\" + state.call.shortName + \"/calls\" + url + '?' + buildUrlParams(params);\n console.log(\"Trying to fetch data from this url: \" + url);\n return url;\n}\n\nexport function fetchNewerCalls( timestamp) {\n return (dispatch, getState) => {\n const state = getState();\n if (shouldFetchCalls(state)) {\n dispatch(beginFetchCall());\n const url = buildCallUrl(state, timestamp, \"newer\")\n return axios\n .get(url)\n .then(response => {\n if ((response.data) && (response.data.calls.length >0)) {\n var data = {shortName: state.call.shortName, calls: response.data.calls}\n dispatch(fetchNewerCallSuccess(data));\n } else {\n dispatch(fetchCallError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n}\n\n\nexport function fetchOlderCalls( timestamp) {\n return (dispatch, getState) => {\n const state = getState();\n if (shouldFetchCalls(state)) {\n dispatch(beginFetchCall());\n const url = buildCallUrl(state, timestamp, \"older\")\n return axios\n .get(url)\n .then(response => {\n if (response.data) {\n var data = {shortName: state.call.shortName, calls: response.data.calls}\n dispatch(fetchOlderCallSuccess(data));\n } else {\n dispatch(fetchCallError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n}\n\n\nexport function addStar( callId) {\n return (dispatch, getState) => {\n const state = getState();\n dispatch(beginAddStar());\n\n const url = process.env.REACT_APP_BACKEND_SERVER + \"/\" + state.call.shortName.toLowerCase() + \"/star/\" + callId\n return axios\n .post(url,{}, {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n }\n }).then(response => {\n if (response.data.success) {\n dispatch(addStarSuccess(response.data.call));\n } else {\n dispatch(addStarError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n\n\n\nexport function fetchCallInfo( callId) {\n return (dispatch, getState) => {\n const state = getState();\n dispatch(beginFetchCallInfo());\n\n const url = process.env.REACT_APP_BACKEND_SERVER + \"/\" + state.call.shortName.toLowerCase() + \"/call/\" + callId\n return axios\n .get(url)\n .then(response => {\n if (response.data.success) {\n dispatch(fetchCallInfoSuccess(response.data.call));\n } else {\n dispatch(fetchCallInfoError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n\nexport function fetchCalls() {\n return (dispatch, getState) => {\n const state = getState();\n if (shouldFetchCalls(state)) {\n dispatch(beginFetchCall());\n const url=buildCallUrl(state);\n return axios\n .get(url)\n .then(response => {\n if (response.data) {\n // check to make sure you actually got some calls back.\n if (response.data.calls.length > 0) {\n var data = {shortName: state.call.shortName, calls: response.data.calls}\n dispatch(fetchCallSuccess(data));\n } else {\n dispatch(fetchCallError());\n }\n } else {\n dispatch(fetchCallError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n}\n\nexport function addCall(call) {\n return (dispatch, getState) => {\n dispatch({ type: types.UPSERT_CALL, data: call});\n };\n}\n\nexport function setStarred(starred) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_STARRED_FILTER, data: starred});\n };\n}\n\nexport function setLive(live) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_LIVE, data: live});\n };\n}\n\nexport function setCurrentCallId(callId) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_CURRENT_CALL_ID, data: callId});\n };\n}\n\n// should be as a unix timestamp\nexport function setDateFilter(date) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_DATE_FILTER, date: date});\n };\n}\n\nexport function setAllFilter() {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_ALL_FILTER});\n };\n}\n\nexport function setTalkgroupFilter(tgs) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_TALKGROUP_FILTER, talkgroups: tgs});\n };\n}\n\nexport function setGroupFilter(groupId) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_GROUP_FILTER, groupId: groupId});\n };\n}\n\nexport function setShortName(shortName) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_SHORT_NAME, data: shortName});\n };\n}\n\nexport function setFilter(filter) {\n return (dispatch, getState) => {\n dispatch({ type: types.SET_FILTER, data: filter});\n };\n}\n",["122","123"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystemsContainer.js",[],["124","125"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallPlayer.js",["126","127"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-constants.js",[],["128","129"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/SupportModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/FilterModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/query-string.js",["130"],"export default {\n parse: function parse(queryString) {\n var query = {};\n var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n }\n return query;\n }\n}\n",["131","132"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModal.js",["133"],"import React, { Component } from \"react\";\nimport {\n Modal,\n Button,\n Icon,\n Header\n} from \"semantic-ui-react\";\nimport \"./CalendarModal.css\";\nimport DatePicker from 'react-datepicker';\nimport { subDays } from 'date-fns'\nimport 'react-datepicker/dist/react-datepicker.css';\n\nclass CalendarModal extends Component {\n constructor(props) {\n super(props)\n this.handleDateChange = this.handleDateChange.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handleClose = this.handleClose.bind(this);\n\n this.state = {\n open: false,\n startDate: new Date()\n }\n}\n\nhandleDateChange = (date) => {\n this.setState({\n startDate: date\n });\n }\n\nhandleClose = () => this.props.onClose(false);\nhandleDone(event) {\n this.props.callActions.setDateFilter(this.state.startDate.getTime());\n this.props.onClose(true);\n}\n\n\n render() {\n \n return (\n\n \n Select a Date & Time\n \n \n \n \n \n \n \n \n \n\n )\n }\n}\n\nexport default CalendarModal;\n","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/configureStore.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-actions.js",["134","135","136","137","138","139","140"],"import axios from 'axios';\n//import { browserHistory } from \"react-router\"\nimport * as types from \"./talkgroup-constants\";\nimport { push } from 'connected-react-router';\n\n// \"Log In\" action creators\nfunction beginImportTalkgroup() {\n return { type: types.IMPORT_TALKGROUP };\n}\n\nfunction importTalkgroupSuccess(data) {\n return {\n type: types.IMPORT_SUCCESS_TALKGROUP,\n data\n };\n}\n\nfunction importTalkgroupError(data) {\n return {\n type: types.IMPORT_ERROR_TALKGROUP,\n data\n };\n}\n\nfunction beginExportTalkgroup() {\n return { type: types.EXPORT_TALKGROUP };\n}\n\nfunction exportTalkgroupSuccess() {\n return { type: types.EXPORT_SUCCESS_TALKGROUP };\n}\n\nfunction exportTalkgroupError() {\n return { type: types.EXPORT_ERROR_TALKGROUP };\n}\n\n\nfunction beginFetchTalkgroup() {\n return { type: types.FETCH_TALKGROUP };\n}\n\nfunction fetchTalkgroupSuccess(data) {\n return { type: types.FETCH_SUCCESS_TALKGROUP,\n data };\n}\n\nfunction fetchTalkgroupError(data) {\n return { type: types.FETCH_ERROR_TALKGROUP,\n data };\n}\n\n\nfunction makeUserRequest(method, data, api) {\n // returns a Promise\n return axios({\n method: method,\n url: api,\n data: data\n });\n}\n\nexport function changeUrl(url) {\n return dispatch => {\n dispatch(push(url));\n };\n}\n\n\n// https://stackoverflow.com/questions/41878838/how-do-i-set-multipart-in-axios-with-react\n\n\n\nfunction shouldFetchTalkgroups(state, shortName) {\n if (!state.talkgroup.items.hasOwnProperty(shortName)) {\n return true\n } else if (state.talkgroup.isWaiting) {\n return false\n } else {\n return false\n }\n}\n\nexport function fetchTalkgroups(shortName) {\n return (dispatch, getState) => {\n if (shouldFetchTalkgroups(getState(), shortName)) {\n dispatch(beginFetchTalkgroup());\n\n return axios\n .get(process.env.REACT_APP_BACKEND_SERVER + \"/\" + shortName + \"/talkgroups\")\n .then(response => {\n if (response.data) {\n var data = {shortName: shortName, talkgroups: response.data.talkgroups}\n dispatch(fetchTalkgroupSuccess( data));\n } else {\n dispatch(fetchTalkgroupError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n}\n","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-reducer.js",["141","142"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/MediaPlayer.js",["143","144"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/GroupModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-actions.js",[],["145","146"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/reducers.js",[],["147","148"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/SystemCard.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModalContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystems.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallItem.js",["149"],"\nimport React, { Component } from \"react\";\nimport {\n Table,\n Icon,\n Label\n} from \"semantic-ui-react\";\nimport { connect } from \"react-redux\"\nimport { bindActionCreators } from 'redux'\nimport * as callActionCreators from \"./call-actions\"\n\n\nfunction mapStateToProps(state, props) {\n return {\n shortName: props.shortName\n\n\t}\n}\n\nfunction mapDispatchToProps(dispatch) {\n return {\n callActions: bindActionCreators(callActionCreators, dispatch)\n }\n}\n\n\nclass CallItem extends Component {\nconstructor(props) {\n super(props);\n this.hideStar = this.hideStar.bind(this);\n this.showStar = this.showStar.bind(this);\n this.addStar = this.addStar.bind(this);\n this.state = {\n starVisible: false,\n starClicked: false\n }\n}\nsourceString(call) {\n var srcString = \"\";\n if (call.srcList) {\n for (var src in call.srcList) {\n /* srcNum = call.srcList[src].src;\n if (sources.hasOwnProperty(srcNum)) {\n srcString = srcString + sources[srcNum].codeName + \", \";\n }*/\n }\n }\n\n return srcString;\n}\n\ncomponentDidUpdate(){\n if (this.props.activeCall) {\n console.log(\"Active call mounted\")\n }\n}\naddStar(e) {\n e.preventDefault();\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n if (!this.state.starClicked) {\n \n this.props.callActions.addStar(this.props.call._id);\n this.setState({starClicked: true});\n }\n}\n\nhideStar() {\n this.setState({ starVisible: false })\n}\n\nshowStar() {\n this.setState({ starVisible: true })\n}\n\nrender() {\n const call = this.props.call;\n const time = new Date(call.time);\n var rowSelected={};\n let starButton;\n var starClickable = {};\n if (!this.state.starClicked) {\n starClickable = {link: true };\n }\n if (!call.star && this.state.starVisible) {\n starButton = \n }\n\n if (call.star) {\n starButton = \n }\n if (call.star && call.star > 1) {\n starButton = (\n \n \n )\n }\n\n if (this.props.activeCall) {\n rowSelected={positive: true}\n }\n var talkgroup;\n if ((typeof this.props.talkgroups == 'undefined') || (typeof this.props.talkgroups[call.talkgroupNum] == 'undefined')) {\n talkgroup = call.talkgroupNum;\n } else {\n talkgroup = this.props.talkgroups[call.talkgroupNum].description;\n }\n return (\n this.props.onClick({call: call}, e)} {...rowSelected}>\n {call.len} \n {talkgroup} \n {time.toLocaleTimeString()} \n {starButton}\n \n\n\n );\n}\n}\n\nexport default connect(\n\tmapStateToProps,\n\tmapDispatchToProps\n)(CallItem)\n\n","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/system-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Main/MainContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-reducer.js",["150","151"],"import {\n FETCH_CALL_INFO,\n FETCH_SUCCESS_CALL_INFO,\n FETCH_ERROR_CALL_INFO,\n FETCH_CALL,\n PREPEND_CALL,\n UPSERT_CALL,\n FETCH_SUCCESS_CALL,\n FETCH_SUCCESS_OLDER_CALL,\n FETCH_SUCCESS_NEWER_CALL,\n FETCH_ERROR_CALL,\n SET_SHORT_NAME,\n SET_ALL_FILTER,\n SET_GROUP_FILTER,\n SET_TALKGROUP_FILTER,\n SET_DATE_FILTER,\n SET_STARRED_FILTER,\n SET_FILTER,\n SET_CURRENT_CALL_ID,\n SET_LIVE,\n ADD_STAR_SUCCESS\n} from \"./call-constants\";\n\nfunction updateObject(oldObject, newValues) {\n // Encapsulate the idea of passing a new object as the first parameter\n // to Object.assign to ensure we correctly copy data instead of mutating\n return Object.assign({}, oldObject, newValues);\n}\n\nfunction updateCallInItems(calls, action) {\nreturn calls.map( (item) => {\n if (item._id !== action.data._id) {\n // This isn't the item we care about - keep it as-is\n return item;\n }\n\n // Otherwise, this is the one we want - return an updated value\n return {\n ...action.data\n };\n });\n}\n/*\nfunction updateObjectInArray(array, action) {\n return array.map((item, index) => {\n if (index !== action.index) {\n // This isn't the item we care about - keep it as-is\n return item\n }\n\n // Otherwise, this is the one we want - return an updated value\n return {\n ...item,\n ...action.item\n }\n })\n}\n\nfunction updateObjectInArray(array, shortName, updatedItem) {\n return array.map( item => {\n if(item.shortName !== shortName) {\n // This isn't the item we care about - keep it as-is\n return item;\n }\n\n // Otherwise, this is the one we want - return an updated value\n return {\n ...item,\n ...updatedItem\n };\n });\n}\n*/\nconst now = new Date();\nconst call = (\n state = {\n isWaiting: false,\n shortName: \"\",\n byId: {},\n allIds: [],\n oldestCallTime: now,\n newestCallTime: now,\n filterType: 0,\n filterTalkgroups: [],\n filterGroupId: false,\n filterDate: false,\n filterStarred: false,\n currentCallId: false,\n live: false\n },\n action\n) => {\n switch (action.type) {\n\n case SET_CURRENT_CALL_ID:\n return Object.assign({}, state, {currentCallId: action.data});\n \n case SET_FILTER:\n {\n var filter={};\n filter.live = !action.data.live ? state.live : action.data.live;\n filter.filterStarred = !action.data.filterStarred ? false : action.data.filterStarred;\n filter.filterType = !action.data.filterType ? 0 : action.data.filterType;\n filter.filterTalkgroups = !action.data.filterTalkgroups ? [] : action.data.filterTalkgroups;\n filter.filterGroupId = !action.data.filterGroupId ? false : action.data.filterGroupId;\n filter.filterDate = !action.data.filterDate ? 0 : action.data.filterDate;\n return Object.assign({}, state, {\n live: action.data.live,\n filterType: action.data.filterType,\n filterTalkgroups: action.data.filterTalkgroups,\n filterGroupId: action.data.filterGroupId,\n filterDate: action.data.filterDate,\n filterStarred: action.data.filterStarred\n });\n }\n\n case SET_LIVE:\n return Object.assign({}, state, {live: action.data});\n \n case SET_SHORT_NAME:\n return Object.assign({}, state, {shortName: action.data});\n\n case SET_DATE_FILTER:\n return Object.assign({}, state, {filterDate: action.date});\n\n case SET_STARRED_FILTER:\n return Object.assign({}, state, {filterStarred: action.data});\n\n case SET_ALL_FILTER:\n return Object.assign({}, state, {filterType: 0, filterTalkgroups:[], filterGroupId: false});\n\n case SET_GROUP_FILTER:\n return Object.assign({}, state, {filterType: 1, filterTalkgroups:[], filterGroupId: action.groupId});\n\n case SET_TALKGROUP_FILTER:\n return Object.assign({}, state, {filterType: 2, filterTalkgroups: action.talkgroups, filterGroupId: false});\n\n case FETCH_CALL_INFO:\n case FETCH_CALL:\n return Object.assign({}, state, { isWaiting: true});\n\n case FETCH_SUCCESS_CALL_INFO:\n return Object.assign({}, state, {\n byId: {...state.byId, [action.data._id]: action.data },\n isWaiting: false\n\n });\n\n case ADD_STAR_SUCCESS:\n return Object.assign({}, state,{\n byId: {...state.byId, [action.data._id]: action.data },\n isWaiting: false\n\n });\n // This will set the items to the rx data\n case FETCH_SUCCESS_CALL:\n {\n const byId = action.data.calls.reduce((acc, call) => ({ ...acc, [call._id]: call }), {});\n const allIds = action.data.calls.map(call => call._id);\n return Object.assign({}, state, {\n isWaiting: false,\n shortName: action.data.shortName,\n newestCallTime: new Date(action.data.calls[0].time),\n oldestCallTime: new Date(action.data.calls[action.data.calls.length-1].time),\n byId: { ...byId},\n allIds: [...allIds]\n });\n }\n\n case UPSERT_CALL:\n if (typeof state.byId[action.data._id] !== \"undefined\") {\n return Object.assign({}, state, {\n byId: {...state.byId, [action.data._id]: action.data },\n });\n } else {\n return Object.assign({}, state, {\n newestCallTime: new Date(action.data.time),\n byId: {[action.data._id]: action.data, ...state.byId},\n allIds: [action.data._id, ...state.allIds]\n }); \n }\n\n case PREPEND_CALL:\n return Object.assign({}, state, {\n isWaiting: false,\n newestCallTime: new Date(action.data.time),\n byId: {[action.data._id]: action.data, ...state.byId},\n allIds: [action.data._id, ...state.allIds]\n });\n\n// This will add the array of Calls in the data to the beginning of the existing array of Calls\n case FETCH_SUCCESS_NEWER_CALL:\n const byId = action.data.calls.reduce((acc, call) => ({ ...acc, [call._id]: call }), {});\n const allIds = action.data.calls.map(call => call._id).reverse();\n return Object.assign({}, state, {\n isWaiting: false,\n shortName: action.data.shortName,\n newestCallTime: new Date(action.data.calls[action.data.calls.length-1].time),\n byId: {...state.byId, ...byId},\n allIds: [...allIds, ...state.allIds]\n });\n\n// This will add the array of Calls in the data to the end of the existing array of Calls\n case FETCH_SUCCESS_OLDER_CALL:\n {\n const byId = action.data.calls.reduce((acc, call) => ({ ...acc, [call._id]: call }), {});\n const allIds = action.data.calls.map(call => call._id);\n return Object.assign({}, state, {\n isWaiting: false,\n shortName: action.data.shortName,\n oldestCallTime: new Date(action.data.calls[action.data.calls.length-1].time),\n byId: {...state.byId, ...byId},\n allIds: [ ...state.allIds, ...allIds]\n });\n }\n case FETCH_ERROR_CALL_INFO:\n case FETCH_ERROR_CALL:\n return Object.assign({}, state, {\n isWaiting: false\n });\n\n default:\n return state;\n }\n};\n\nexport default call;\n","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-constants.js",[],{"ruleId":"152","severity":1,"message":"153","line":12,"column":3,"nodeType":"154","messageId":"155","endLine":16,"endColumn":4},{"ruleId":"156","severity":1,"message":"157","line":6,"column":7,"nodeType":"158","messageId":"159","endLine":6,"endColumn":30},{"ruleId":"156","severity":1,"message":"160","line":22,"column":10,"nodeType":"158","messageId":"159","endLine":22,"endColumn":21},{"ruleId":"161","severity":1,"message":"162","line":76,"column":3,"nodeType":"163","messageId":"164","endLine":82,"endColumn":4},{"ruleId":"165","replacedBy":"166"},{"ruleId":"167","replacedBy":"168"},{"ruleId":"165","replacedBy":"169"},{"ruleId":"167","replacedBy":"170"},{"ruleId":"156","severity":1,"message":"171","line":285,"column":15,"nodeType":"158","messageId":"159","endLine":285,"endColumn":19},{"ruleId":"172","severity":1,"message":"173","line":446,"column":27,"nodeType":"174","messageId":"175","endLine":446,"endColumn":29},{"ruleId":"165","replacedBy":"176"},{"ruleId":"167","replacedBy":"177"},{"ruleId":"178","severity":1,"message":"179","line":1,"column":1,"nodeType":"180","endLine":11,"endColumn":2},{"ruleId":"165","replacedBy":"181"},{"ruleId":"167","replacedBy":"182"},{"ruleId":"156","severity":1,"message":"183","line":6,"column":3,"nodeType":"158","messageId":"159","endLine":6,"endColumn":9},{"ruleId":"156","severity":1,"message":"184","line":7,"column":10,"nodeType":"158","messageId":"159","endLine":7,"endColumn":30},{"ruleId":"156","severity":1,"message":"185","line":11,"column":10,"nodeType":"158","messageId":"159","endLine":11,"endColumn":32},{"ruleId":"156","severity":1,"message":"186","line":18,"column":10,"nodeType":"158","messageId":"159","endLine":18,"endColumn":30},{"ruleId":"156","severity":1,"message":"187","line":25,"column":10,"nodeType":"158","messageId":"159","endLine":25,"endColumn":30},{"ruleId":"156","severity":1,"message":"188","line":29,"column":10,"nodeType":"158","messageId":"159","endLine":29,"endColumn":32},{"ruleId":"156","severity":1,"message":"189","line":33,"column":10,"nodeType":"158","messageId":"159","endLine":33,"endColumn":30},{"ruleId":"156","severity":1,"message":"190","line":53,"column":10,"nodeType":"158","messageId":"159","endLine":53,"endColumn":25},{"ruleId":"156","severity":1,"message":"191","line":7,"column":10,"nodeType":"158","messageId":"159","endLine":7,"endColumn":22},{"ruleId":"156","severity":1,"message":"192","line":13,"column":10,"nodeType":"158","messageId":"159","endLine":13,"endColumn":27},{"ruleId":"193","severity":1,"message":"194","line":77,"column":3,"nodeType":"154","messageId":"175","endLine":78,"endColumn":4},{"ruleId":"156","severity":1,"message":"195","line":89,"column":5,"nodeType":"158","messageId":"159","endLine":89,"endColumn":16},{"ruleId":"165","replacedBy":"196"},{"ruleId":"167","replacedBy":"197"},{"ruleId":"165","replacedBy":"198"},{"ruleId":"167","replacedBy":"199"},{"ruleId":"156","severity":1,"message":"200","line":41,"column":18,"nodeType":"158","messageId":"159","endLine":41,"endColumn":21},{"ruleId":"156","severity":1,"message":"191","line":24,"column":10,"nodeType":"158","messageId":"159","endLine":24,"endColumn":22},{"ruleId":"156","severity":1,"message":"201","line":30,"column":10,"nodeType":"158","messageId":"159","endLine":30,"endColumn":27},"no-useless-constructor","Useless constructor.","MethodDefinition","noUselessConstructor","no-unused-vars","'FETCH_SUCCESS_STATISTIC' is assigned a value but never used.","Identifier","unusedVar","'prependCall' is defined but never used.","no-unreachable","Unreachable code.","IfStatement","unreachableCode","no-native-reassign",["202"],"no-negated-in-lhs",["203"],["202"],["203"],"'refs' is assigned a value but never used.","eqeqeq","Expected '!==' and instead saw '!='.","BinaryExpression","unexpected",["202"],["203"],"import/no-anonymous-default-export","Assign object to a variable before exporting as module default","ExportDefaultDeclaration",["202"],["203"],"'Header' is defined but never used.","'beginImportTalkgroup' is defined but never used.","'importTalkgroupSuccess' is defined but never used.","'importTalkgroupError' is defined but never used.","'beginExportTalkgroup' is defined but never used.","'exportTalkgroupSuccess' is defined but never used.","'exportTalkgroupError' is defined but never used.","'makeUserRequest' is defined but never used.","'updateObject' is defined but never used.","'updateItemInArray' is defined but never used.","no-dupe-class-members","Duplicate name 'componentDidUpdate'.","'playEnabled' is assigned a value but never used.",["202"],["203"],["202"],["203"],"'src' is assigned a value but never used.","'updateCallInItems' is defined but never used.","no-global-assign","no-unsafe-negation"] \ No newline at end of file +[{"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/ListCalls.js":"1","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-actions.js":"2","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystemsContainer.js":"3","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallPlayer.js":"4","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-constants.js":"5","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/SupportModal.js":"6","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/FilterModal.js":"7","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/query-string.js":"8","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModal.js":"9","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/configureStore.js":"10","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-actions.js":"11","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-reducer.js":"12","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/MediaPlayer.js":"13","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/GroupModal.js":"14","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-actions.js":"15","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/reducers.js":"16","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/SystemCard.js":"17","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModalContainer.js":"18","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystems.js":"19","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-constants.js":"20","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallItem.js":"21","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/system-actions.js":"22","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-reducer.js":"23","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Main/MainContainer.js":"24","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-reducer.js":"25","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-constants.js":"26","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/index.js":"27"},{"size":1638,"mtime":1613617344583,"results":"28","hashOfConfig":"29"},{"size":9120,"mtime":1613445049756,"results":"30","hashOfConfig":"29"},{"size":277,"mtime":1545362103911,"results":"31","hashOfConfig":"29"},{"size":19377,"mtime":1613615960319,"results":"32","hashOfConfig":"29"},{"size":151,"mtime":1545362103908,"results":"33","hashOfConfig":"29"},{"size":1313,"mtime":1610678127937,"results":"34","hashOfConfig":"29"},{"size":4455,"mtime":1613445049753,"results":"35","hashOfConfig":"29"},{"size":362,"mtime":1610678313030,"results":"36","hashOfConfig":"29"},{"size":1778,"mtime":1609597248589,"results":"37","hashOfConfig":"29"},{"size":854,"mtime":1611803272298,"results":"38","hashOfConfig":"29"},{"size":2433,"mtime":1609597717050,"results":"39","hashOfConfig":"29"},{"size":1395,"mtime":1545362103908,"results":"40","hashOfConfig":"29"},{"size":4313,"mtime":1613615882987,"results":"41","hashOfConfig":"29"},{"size":2023,"mtime":1612233431556,"results":"42","hashOfConfig":"29"},{"size":1747,"mtime":1609597708479,"results":"43","hashOfConfig":"29"},{"size":595,"mtime":1609596047661,"results":"44","hashOfConfig":"29"},{"size":2045,"mtime":1609520570000,"results":"45","hashOfConfig":"29"},{"size":763,"mtime":1545362103896,"results":"46","hashOfConfig":"29"},{"size":1547,"mtime":1609520315634,"results":"47","hashOfConfig":"29"},{"size":537,"mtime":1545362103916,"results":"48","hashOfConfig":"29"},{"size":2982,"mtime":1613617462684,"results":"49","hashOfConfig":"29"},{"size":1575,"mtime":1610678224214,"results":"50","hashOfConfig":"29"},{"size":1045,"mtime":1610678295131,"results":"51","hashOfConfig":"29"},{"size":264,"mtime":1545362103910,"results":"52","hashOfConfig":"29"},{"size":7019,"mtime":1560857753468,"results":"53","hashOfConfig":"29"},{"size":1109,"mtime":1560828045933,"results":"54","hashOfConfig":"29"},{"size":1221,"mtime":1613445049764,"results":"55","hashOfConfig":"29"},{"filePath":"56","messages":"57","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"1du4mf8",{"filePath":"58","messages":"59","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"60","messages":"61","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"63","messages":"64","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"65","messages":"66","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"68","messages":"69","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"70","messages":"71","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"74","usedDeprecatedRules":"75"},{"filePath":"76","messages":"77","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"78"},{"filePath":"79","messages":"80","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"81","messages":"82","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"83","usedDeprecatedRules":"84"},{"filePath":"85","messages":"86","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"87","messages":"88","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"89","messages":"90","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"91","messages":"92","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"93"},{"filePath":"94","messages":"95","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"97","messages":"98","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"99","messages":"100","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"101","messages":"102","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"103","messages":"104","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"62"},{"filePath":"105","messages":"106","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"107","messages":"108","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"67"},{"filePath":"109","messages":"110","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"96"},{"filePath":"111","messages":"112","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"113","messages":"114","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"115","usedDeprecatedRules":"96"},{"filePath":"116","messages":"117","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"118","messages":"119","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/ListCalls.js",["120"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-actions.js",["121","122"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystemsContainer.js",[],["123","124"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallPlayer.js",["125","126"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-constants.js",[],["127","128"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/SupportModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/FilterModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/query-string.js",["129"],"export default {\n parse: function parse(queryString) {\n var query = {};\n var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n }\n return query;\n }\n}\n",["130","131"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModal.js",["132"],"import React, { Component } from \"react\";\nimport {\n Modal,\n Button,\n Icon,\n Header\n} from \"semantic-ui-react\";\nimport \"./CalendarModal.css\";\nimport DatePicker from 'react-datepicker';\nimport { subDays } from 'date-fns'\nimport 'react-datepicker/dist/react-datepicker.css';\n\nclass CalendarModal extends Component {\n constructor(props) {\n super(props)\n this.handleDateChange = this.handleDateChange.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handleClose = this.handleClose.bind(this);\n\n this.state = {\n open: false,\n startDate: new Date()\n }\n}\n\nhandleDateChange = (date) => {\n this.setState({\n startDate: date\n });\n }\n\nhandleClose = () => this.props.onClose(false);\nhandleDone(event) {\n this.props.callActions.setDateFilter(this.state.startDate.getTime());\n this.props.onClose(true);\n}\n\n\n render() {\n \n return (\n\n \n Select a Date & Time\n \n \n \n \n \n \n \n \n \n\n )\n }\n}\n\nexport default CalendarModal;\n","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/configureStore.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-actions.js",["133","134","135","136","137","138","139"],"import axios from 'axios';\n//import { browserHistory } from \"react-router\"\nimport * as types from \"./talkgroup-constants\";\nimport { push } from 'connected-react-router';\n\n// \"Log In\" action creators\nfunction beginImportTalkgroup() {\n return { type: types.IMPORT_TALKGROUP };\n}\n\nfunction importTalkgroupSuccess(data) {\n return {\n type: types.IMPORT_SUCCESS_TALKGROUP,\n data\n };\n}\n\nfunction importTalkgroupError(data) {\n return {\n type: types.IMPORT_ERROR_TALKGROUP,\n data\n };\n}\n\nfunction beginExportTalkgroup() {\n return { type: types.EXPORT_TALKGROUP };\n}\n\nfunction exportTalkgroupSuccess() {\n return { type: types.EXPORT_SUCCESS_TALKGROUP };\n}\n\nfunction exportTalkgroupError() {\n return { type: types.EXPORT_ERROR_TALKGROUP };\n}\n\n\nfunction beginFetchTalkgroup() {\n return { type: types.FETCH_TALKGROUP };\n}\n\nfunction fetchTalkgroupSuccess(data) {\n return { type: types.FETCH_SUCCESS_TALKGROUP,\n data };\n}\n\nfunction fetchTalkgroupError(data) {\n return { type: types.FETCH_ERROR_TALKGROUP,\n data };\n}\n\n\nfunction makeUserRequest(method, data, api) {\n // returns a Promise\n return axios({\n method: method,\n url: api,\n data: data\n });\n}\n\nexport function changeUrl(url) {\n return dispatch => {\n dispatch(push(url));\n };\n}\n\n\n// https://stackoverflow.com/questions/41878838/how-do-i-set-multipart-in-axios-with-react\n\n\n\nfunction shouldFetchTalkgroups(state, shortName) {\n if (!state.talkgroup.items.hasOwnProperty(shortName)) {\n return true\n } else if (state.talkgroup.isWaiting) {\n return false\n } else {\n return false\n }\n}\n\nexport function fetchTalkgroups(shortName) {\n return (dispatch, getState) => {\n if (shouldFetchTalkgroups(getState(), shortName)) {\n dispatch(beginFetchTalkgroup());\n\n return axios\n .get(process.env.REACT_APP_BACKEND_SERVER + \"/\" + shortName + \"/talkgroups\")\n .then(response => {\n if (response.data) {\n var data = {shortName: shortName, talkgroups: response.data.talkgroups}\n dispatch(fetchTalkgroupSuccess( data));\n } else {\n dispatch(fetchTalkgroupError());\n let registerMessage = response.data.message;\n return registerMessage;\n }\n })\n .catch(response => {\n if (response instanceof Error) {\n // Something happened in setting up the request that triggered an Error\n console.log(\"Error\", response.message);\n }\n });\n };\n};\n}\n",["140","141"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-reducer.js",["142","143"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/MediaPlayer.js",["144","145"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/GroupModal.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Group/group-actions.js",[],["146","147"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/redux-router/reducers.js",[],["148","149"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/SystemCard.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CalendarModalContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/ListSystems.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/CallItem.js",["150"],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/System/system-actions.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Talkgroups/talkgroup-reducer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Main/MainContainer.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-reducer.js",["151","152"],"import {\n FETCH_CALL_INFO,\n FETCH_SUCCESS_CALL_INFO,\n FETCH_ERROR_CALL_INFO,\n FETCH_CALL,\n PREPEND_CALL,\n UPSERT_CALL,\n FETCH_SUCCESS_CALL,\n FETCH_SUCCESS_OLDER_CALL,\n FETCH_SUCCESS_NEWER_CALL,\n FETCH_ERROR_CALL,\n SET_SHORT_NAME,\n SET_ALL_FILTER,\n SET_GROUP_FILTER,\n SET_TALKGROUP_FILTER,\n SET_DATE_FILTER,\n SET_STARRED_FILTER,\n SET_FILTER,\n SET_CURRENT_CALL_ID,\n SET_LIVE,\n ADD_STAR_SUCCESS\n} from \"./call-constants\";\n\nfunction updateObject(oldObject, newValues) {\n // Encapsulate the idea of passing a new object as the first parameter\n // to Object.assign to ensure we correctly copy data instead of mutating\n return Object.assign({}, oldObject, newValues);\n}\n\nfunction updateCallInItems(calls, action) {\nreturn calls.map( (item) => {\n if (item._id !== action.data._id) {\n // This isn't the item we care about - keep it as-is\n return item;\n }\n\n // Otherwise, this is the one we want - return an updated value\n return {\n ...action.data\n };\n });\n}\n/*\nfunction updateObjectInArray(array, action) {\n return array.map((item, index) => {\n if (index !== action.index) {\n // This isn't the item we care about - keep it as-is\n return item\n }\n\n // Otherwise, this is the one we want - return an updated value\n return {\n ...item,\n ...action.item\n }\n })\n}\n\nfunction updateObjectInArray(array, shortName, updatedItem) {\n return array.map( item => {\n if(item.shortName !== shortName) {\n // This isn't the item we care about - keep it as-is\n return item;\n }\n\n // Otherwise, this is the one we want - return an updated value\n return {\n ...item,\n ...updatedItem\n };\n });\n}\n*/\nconst now = new Date();\nconst call = (\n state = {\n isWaiting: false,\n shortName: \"\",\n byId: {},\n allIds: [],\n oldestCallTime: now,\n newestCallTime: now,\n filterType: 0,\n filterTalkgroups: [],\n filterGroupId: false,\n filterDate: false,\n filterStarred: false,\n currentCallId: false,\n live: false\n },\n action\n) => {\n switch (action.type) {\n\n case SET_CURRENT_CALL_ID:\n return Object.assign({}, state, {currentCallId: action.data});\n \n case SET_FILTER:\n {\n var filter={};\n filter.live = !action.data.live ? state.live : action.data.live;\n filter.filterStarred = !action.data.filterStarred ? false : action.data.filterStarred;\n filter.filterType = !action.data.filterType ? 0 : action.data.filterType;\n filter.filterTalkgroups = !action.data.filterTalkgroups ? [] : action.data.filterTalkgroups;\n filter.filterGroupId = !action.data.filterGroupId ? false : action.data.filterGroupId;\n filter.filterDate = !action.data.filterDate ? 0 : action.data.filterDate;\n return Object.assign({}, state, {\n live: action.data.live,\n filterType: action.data.filterType,\n filterTalkgroups: action.data.filterTalkgroups,\n filterGroupId: action.data.filterGroupId,\n filterDate: action.data.filterDate,\n filterStarred: action.data.filterStarred\n });\n }\n\n case SET_LIVE:\n return Object.assign({}, state, {live: action.data});\n \n case SET_SHORT_NAME:\n return Object.assign({}, state, {shortName: action.data});\n\n case SET_DATE_FILTER:\n return Object.assign({}, state, {filterDate: action.date});\n\n case SET_STARRED_FILTER:\n return Object.assign({}, state, {filterStarred: action.data});\n\n case SET_ALL_FILTER:\n return Object.assign({}, state, {filterType: 0, filterTalkgroups:[], filterGroupId: false});\n\n case SET_GROUP_FILTER:\n return Object.assign({}, state, {filterType: 1, filterTalkgroups:[], filterGroupId: action.groupId});\n\n case SET_TALKGROUP_FILTER:\n return Object.assign({}, state, {filterType: 2, filterTalkgroups: action.talkgroups, filterGroupId: false});\n\n case FETCH_CALL_INFO:\n case FETCH_CALL:\n return Object.assign({}, state, { isWaiting: true});\n\n case FETCH_SUCCESS_CALL_INFO:\n return Object.assign({}, state, {\n byId: {...state.byId, [action.data._id]: action.data },\n isWaiting: false\n\n });\n\n case ADD_STAR_SUCCESS:\n return Object.assign({}, state,{\n byId: {...state.byId, [action.data._id]: action.data },\n isWaiting: false\n\n });\n // This will set the items to the rx data\n case FETCH_SUCCESS_CALL:\n {\n const byId = action.data.calls.reduce((acc, call) => ({ ...acc, [call._id]: call }), {});\n const allIds = action.data.calls.map(call => call._id);\n return Object.assign({}, state, {\n isWaiting: false,\n shortName: action.data.shortName,\n newestCallTime: new Date(action.data.calls[0].time),\n oldestCallTime: new Date(action.data.calls[action.data.calls.length-1].time),\n byId: { ...byId},\n allIds: [...allIds]\n });\n }\n\n case UPSERT_CALL:\n if (typeof state.byId[action.data._id] !== \"undefined\") {\n return Object.assign({}, state, {\n byId: {...state.byId, [action.data._id]: action.data },\n });\n } else {\n return Object.assign({}, state, {\n newestCallTime: new Date(action.data.time),\n byId: {[action.data._id]: action.data, ...state.byId},\n allIds: [action.data._id, ...state.allIds]\n }); \n }\n\n case PREPEND_CALL:\n return Object.assign({}, state, {\n isWaiting: false,\n newestCallTime: new Date(action.data.time),\n byId: {[action.data._id]: action.data, ...state.byId},\n allIds: [action.data._id, ...state.allIds]\n });\n\n// This will add the array of Calls in the data to the beginning of the existing array of Calls\n case FETCH_SUCCESS_NEWER_CALL:\n const byId = action.data.calls.reduce((acc, call) => ({ ...acc, [call._id]: call }), {});\n const allIds = action.data.calls.map(call => call._id).reverse();\n return Object.assign({}, state, {\n isWaiting: false,\n shortName: action.data.shortName,\n newestCallTime: new Date(action.data.calls[action.data.calls.length-1].time),\n byId: {...state.byId, ...byId},\n allIds: [...allIds, ...state.allIds]\n });\n\n// This will add the array of Calls in the data to the end of the existing array of Calls\n case FETCH_SUCCESS_OLDER_CALL:\n {\n const byId = action.data.calls.reduce((acc, call) => ({ ...acc, [call._id]: call }), {});\n const allIds = action.data.calls.map(call => call._id);\n return Object.assign({}, state, {\n isWaiting: false,\n shortName: action.data.shortName,\n oldestCallTime: new Date(action.data.calls[action.data.calls.length-1].time),\n byId: {...state.byId, ...byId},\n allIds: [ ...state.allIds, ...allIds]\n });\n }\n case FETCH_ERROR_CALL_INFO:\n case FETCH_ERROR_CALL:\n return Object.assign({}, state, {\n isWaiting: false\n });\n\n default:\n return state;\n }\n};\n\nexport default call;\n","/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/Call/call-constants.js",[],"/Users/luke/Projects/OpenMHz/trunk-server-public/frontend/src/index.js",[],{"ruleId":"153","severity":1,"message":"154","line":12,"column":3,"nodeType":"155","messageId":"156","endLine":16,"endColumn":4},{"ruleId":"157","severity":1,"message":"158","line":20,"column":10,"nodeType":"159","messageId":"160","endLine":20,"endColumn":21},{"ruleId":"161","severity":1,"message":"162","line":74,"column":3,"nodeType":"163","messageId":"164","endLine":80,"endColumn":4},{"ruleId":"165","replacedBy":"166"},{"ruleId":"167","replacedBy":"168"},{"ruleId":"157","severity":1,"message":"169","line":288,"column":15,"nodeType":"159","messageId":"160","endLine":288,"endColumn":19},{"ruleId":"157","severity":1,"message":"170","line":340,"column":13,"nodeType":"159","messageId":"160","endLine":340,"endColumn":24},{"ruleId":"165","replacedBy":"171"},{"ruleId":"167","replacedBy":"172"},{"ruleId":"173","severity":1,"message":"174","line":1,"column":1,"nodeType":"175","endLine":11,"endColumn":2},{"ruleId":"165","replacedBy":"176"},{"ruleId":"167","replacedBy":"177"},{"ruleId":"157","severity":1,"message":"178","line":6,"column":3,"nodeType":"159","messageId":"160","endLine":6,"endColumn":9},{"ruleId":"157","severity":1,"message":"179","line":7,"column":10,"nodeType":"159","messageId":"160","endLine":7,"endColumn":30},{"ruleId":"157","severity":1,"message":"180","line":11,"column":10,"nodeType":"159","messageId":"160","endLine":11,"endColumn":32},{"ruleId":"157","severity":1,"message":"181","line":18,"column":10,"nodeType":"159","messageId":"160","endLine":18,"endColumn":30},{"ruleId":"157","severity":1,"message":"182","line":25,"column":10,"nodeType":"159","messageId":"160","endLine":25,"endColumn":30},{"ruleId":"157","severity":1,"message":"183","line":29,"column":10,"nodeType":"159","messageId":"160","endLine":29,"endColumn":32},{"ruleId":"157","severity":1,"message":"184","line":33,"column":10,"nodeType":"159","messageId":"160","endLine":33,"endColumn":30},{"ruleId":"157","severity":1,"message":"185","line":53,"column":10,"nodeType":"159","messageId":"160","endLine":53,"endColumn":25},{"ruleId":"165","replacedBy":"186"},{"ruleId":"167","replacedBy":"187"},{"ruleId":"157","severity":1,"message":"188","line":7,"column":10,"nodeType":"159","messageId":"160","endLine":7,"endColumn":22},{"ruleId":"157","severity":1,"message":"189","line":13,"column":10,"nodeType":"159","messageId":"160","endLine":13,"endColumn":27},{"ruleId":"190","severity":1,"message":"191","line":77,"column":3,"nodeType":"155","messageId":"192","endLine":78,"endColumn":4},{"ruleId":"157","severity":1,"message":"193","line":89,"column":5,"nodeType":"159","messageId":"160","endLine":89,"endColumn":16},{"ruleId":"165","replacedBy":"194"},{"ruleId":"167","replacedBy":"195"},{"ruleId":"165","replacedBy":"196"},{"ruleId":"167","replacedBy":"197"},{"ruleId":"157","severity":1,"message":"198","line":41,"column":18,"nodeType":"159","messageId":"160","endLine":41,"endColumn":21},{"ruleId":"157","severity":1,"message":"188","line":24,"column":10,"nodeType":"159","messageId":"160","endLine":24,"endColumn":22},{"ruleId":"157","severity":1,"message":"199","line":30,"column":10,"nodeType":"159","messageId":"160","endLine":30,"endColumn":27},"no-useless-constructor","Useless constructor.","MethodDefinition","noUselessConstructor","no-unused-vars","'prependCall' is defined but never used.","Identifier","unusedVar","no-unreachable","Unreachable code.","IfStatement","unreachableCode","no-native-reassign",["200"],"no-negated-in-lhs",["201"],"'refs' is assigned a value but never used.","'currentCall' is assigned a value but never used.",["200"],["201"],"import/no-anonymous-default-export","Assign object to a variable before exporting as module default","ExportDefaultDeclaration",["200"],["201"],"'Header' is defined but never used.","'beginImportTalkgroup' is defined but never used.","'importTalkgroupSuccess' is defined but never used.","'importTalkgroupError' is defined but never used.","'beginExportTalkgroup' is defined but never used.","'exportTalkgroupSuccess' is defined but never used.","'exportTalkgroupError' is defined but never used.","'makeUserRequest' is defined but never used.",["200"],["201"],"'updateObject' is defined but never used.","'updateItemInArray' is defined but never used.","no-dupe-class-members","Duplicate name 'componentDidUpdate'.","unexpected","'playEnabled' is assigned a value but never used.",["200"],["201"],["200"],["201"],"'src' is assigned a value but never used.","'updateCallInItems' is defined but never used.","no-global-assign","no-unsafe-negation"] \ No newline at end of file diff --git a/frontend/public/android-chrome-192x192.png b/frontend/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee745e2b31d7c71bd2a6067f8a70ae46ef4d8f7 GIT binary patch literal 3795 zcmdUy`8$;F_rRYS!;H|3kR{7ZN<*^EDA{H()?}A`CtIkH-3(*NzLhMAAxqwtqAZau zDqBn_O2)pgNr?DP-}iNWzW>1Im+uefIp=wvbKlo>pX;30Id`0ao+jG~z7qfduxV=% zjOe=UufUk-Powc$P`U#78fmHmRUi46=r05pbM2eguLELq8wP-4-2up77rOA#1ppWd zKmY?>gZ_Ri0RQK2TLHuW*?%3cD_rdXfRjqv1QnA&(3*|Kt%vGo!Uw(%J$bTj9&hA< zJ_jo_AI|-pb-$sLfGm918Ks4l;0~TSHLS(T$MGnTG1#G#XC~dvTA12NnCrmCT*NzP zyun2qq1Tosjy6Jq-BQ;20$L>N=KA_D+Hc?Y{ak4t*jA>kVkm|uqW}oMI&!t_yVMz& zGlB$6!t{gzklb}#Vk|Jp@ZYdgz~F0$NiTuyN`XTk^y5EO(W;p|SA1{c0Zi;##haj~ z^^ZP=A6)Ve-Qn61RMtJ8lw?vHu4MW>>`HV({Cy0k%+M z=@ZUpm&Tj-X|X~^8x*zuYXd<8$43e_iI@nNSW5tZ1-YpVos?7k3c_{_A<W=+>%VePB^~-^I9(S(iX+@*LsUPbyxXOf2D%iNGH#WN-vc-;4Jlfv3rCCVaZnAC8zgC{<;)w?C-B%7eCDRV*`J!if6)zC&B=na@$Gy zjYh&D>_eK`mO%r!nNl24~0wuJGI*@s>jcaA57Gz^epsIT~rRS^!Utz zO!!+f^c~j^w={J&X!>MsNh5Zl%ceEAcui>`KJ%Tjt?!drONX!>7i3o=`GXZYH#D=9 zAV>gSq1pI0*l$S0<6u#kZ}wO4{3-d5w0@jG=y;%loxI`kbb`t5-i%z}XNLExdXWHj zHIbEdP};j%h`4LRHzi`={oydBiyH9boIv2RXnctgc7YNr;_cek&%e1(BZ^K+3WwN3 z2AMzOKX=uazudYco{>kqd+!-nve%gErxr~qI0%Ms&kp@l{2ez)rD)~xjf5P^`EPk8 z!RAo_2rZWp5^yj#ukJm+$NctjYplYDB5{65EgdPGq1p=pa!tA_X^OJ(xhgdk4iHSE z@e9#S9vEIdRSx^UNUa?FzDf?(CZX(b9S=d0NF-E~4Ly18Z83X-&jKI_gmr996~MF) z^)EcNm?@}+cW)eo#nM7mSf&iZVfHy6GGD1Ky$KQJO!1_R5@+u(lyHwBh6XY`zBdJU z($aE~EIToQxCqxa35-u*pqNlmSO${M&8PIwnac*yYG8*Y`Q`cT@0}6`3%Qot+fT-) zdyLq;c*pj8tKMYt)q53vTB$C*{e)%bE^Va;^Q8fSml#t!JdfL&&-Gg-!?mL9gHvtZ zNw*jWu9M-PnqBjYI}i68q!eOJU`S|UyYIr{U{Q+E!7eSM0$L*)b(X#SmUl_lw|e73 zO1sF=QN|@6#-5G~YfBl2b3VuG3M-H8bRQh4FMQ1Nn@+mo)=;{DyP9;pl@;VXrn@nw zR*E~yayHAXR3Qu=b#V{>S;();;Te^H;gK`mgG>6#6y=Ew&yds%baKm)e0L-cvVM}n zA%29@X*w-gk^qIvPjO6{C*}l^TMv8H%=AVpFsEcmtdUz9JGRi4qZz%)hM|<1HaG$x zBV|cn+}RpQ^df>tajdqxX1V&m?dr-_j?}D+)JvbT=ABYC_}`*Ox$~NRzXKil;SLvx zt+gXwU&|*})TC@0IxtSi1G;w~0ME_976f;E4DyH~L={M-DB=MQFj;E&}T{0u;QA-bpEFn4>0t+}LB?rbCC)0{2GnhW+mxkK{u>~3c z*kC3-8}^TF>yzbt;>4n!^S6)mjo{|jP_m<-;Mx0NTJBF=V6H2G0RL8a0yE|A4)PwztWpK&aAg>L+AA2RWO4lU4@LeYhsc>q-7M5~29)jX^7+>IQL(=P4-M z>LO&}J?yHu1|UmRay+{6W@tLw$tuJ`ZA@ZXH|{o~kE`?!>h@h@p}G==;IZcv$>BF~bPNl-_bL^MtW z>V8}VFZg>pd*NieMh~u$@qm1hSP*r*^(wvN`iE|_5eg_Q;6Xr`+CA6nKH-!SG>blb zN=ZH`4+Xi!MFKAeXV3Ax7KCv)T;=x=L;-A4r}FL~TeKOy+~BFK`gC?d;)m>Rc@-B` zzbWZ<(D=De3n!D5$~p*H?+IDfLe9(b1=k+Cdc4r?rAV{iV;0bjNu7$avOl-ldBjO2b0^&+uC?l`gHF1+D(k>Qq21-&ye|;K(olq*GnQ|8J2DDrc~-gyVc&fhyzi~^b<3S zYw1Ol(Q2X#WAY(sPM`LiUY6ZowhMcBwtF^^Ul4|A&&We|ZG&FHakore&E;EVJwF?C zU8*0oXu2*U-F9rqpv#nyd%{;JD5`K=wC=oC|Bc;Fj@#jk6a)$UppcP82J<%loN!UP z;!lh5Q5Xn4N(ML!2!VRYt~`f1L6G{9YI3^2o@2sjloS^TW-lhfIdz`B+q0_MFP^Jg zLp{1Pv-nyPZu(9MJ{BgL|lpXWJ}y6z_o2e~00 z`bJEbu#mj8Hf4N_@&YL@zP)mzgQfu++F@#%{oOG~T!WzL>2X^s6KaegG4VeGopo`! zDH%6e`2@Ajz%!9RmBK3hg+ua<$4^KcNJXA^j&l09b#bSuLvrVCBJga0=50PYi`;)Z zC_(_C|4%kvjW~aUYslyR@Mz59znN2_*j4^d_v|$pLZ>4`q#!-yDQxE-NiMLQ?vF-y zxae0}FFByn`&Ae|^a@xzd=~u7Z4h}Z0U~N#X84C@KGS^*i z4_Zs!YfCHlveMYay9uN`Tu-uOk&@Z1QGEAGmGDK0Jwa&LO(7(yVDF}Yvhkf7K0 z6g|Iy03-0ohSagk^r7w>Pqb15-SOWY0MO_=^eQv`N``<*IM=b!lj*XCgFcd8%J|!; zS}*#}b`RvHsfe*mQYu0#k*yMytzv93GnOdX3#GB7Xpx<<&xovr zBKz12*%{jy=Kad^d!FaK=RE(t=Y7w6&hHOr=Jvh6_kGW`ey-1T-H**o40p2&vO^HG z`^;&B3lIbcU*Qmv1$Fg$K4v z{RB#ggII0_;*wc(s2TDtM_{aeha8LQ_tVlLXFh~kUXr#vd0kra%KJmlFI{;4+KlOu z(~<8#a27Iw=mY1|#n}VT+k9TM5N%fe+A`HrsX1OwDbP9W<>mNWcLT-97F;oDt)%z| zjE}BN=9H6^J3RNwAh^&F48i3tZRWwJR4s{v;7D;CnkyAbl@R}XFl2^3zo$U(Je`2So=sne>r^iM(f)69RC%Xsv#97e5) zz!KoRkaD|88`9uFDr(dBlgw)rO+W8U=B>rmd5tIdu)U^opV)Z|uV)j>xOAg{fp}P> zy=cQ>q)RWYJS#1q_jWuxZOOH3*Xi@v-x)F~FE)f!xZGvXoVbEu9%Z`u^Tt@YtyO>;SS_*H|FT&*&ivYga~7;8 z$!Zcle%ZiJ1wMioDM0@tk-Bb^9 z$qLI;#*$uh5Oz`4{=JbFq3zLf0TSV>gyux&946Da(RO(_LVMTJ!sseR){78O*0Ee% z^^%Zc+f=&s#i(ypSV57R`MNn^-JB#pHMnjvyQiDD4;x{C6UCk0duAWfKswr^TJMeF zFQ&4k99e-4&jY8*8_Wcp^*H|=W%((B5+n-tzK3KGlKiPq*s;>!M`%&z&+Gn5Q1WJ- z#?3Bbl{Am2 zZK8i}5b2&v*DCnMR&dV>p$W^m6RtdUkH)X!;Nq=4H~P54j8l_6R_7{~TIyU2nOd#pZ%p+p+R+%p~ zC9Aa)wca45wp`0YK*l*pwrK!|_m5*&N5BT*lWzkG$}x>!AGC(ZZg_4?^c7bp%bOLs zbXQfzM7t&j&QlO!Rn1_7HH)JsQaslU-$N;Xn_;>>^~-townU;tl;(}3rGsc#bZbT4Po#ltG-f@)vmTXu@5Vla9HHxz zos0jW*DUqY!)aE1WM8g{c!(KId~=l(j-0+ojx21ir$<)(xomIf90d1# zknhTPlI^~hc;lvBdq(abR{;si(*)0TU^(*y>}$hR73R*Wg@|EwbosuVq>H^wxxc?2 zt_cesj;Xa))-T(yGPMZQKZIf!M4@fj-UtkQ(wS1^o(WWuIl<)RBIW4lK%AZLA}xQi zfBuRw_flKo4<0-XXWLb2@H8jIHFw)}LCz%;lKVS|d>+S!T#bv9C9J>q7PQ9a9d60p zVEAG*^fg8tM381s8w(dYm4t{@UOk~qx|Tr=BnRrSmk3ej%W8<{AC&7u=`~{U_SRQ2{b20AeS=}iuE&N(!hey871F|+ zUcLk+u7&f6Udhz1ZjW{Oq+(}vj^hyi9rN_vgPJ1lt(xNv)EQ!P@a&rzP1sDbv!U(x z!1P>)@K^NBx#l5>&@hqB%r2=yKYv9|d;oVUYpShUHD=p^U{i}kLhkG<+w~BYhUv7> zrqo$_pZ_IS)OzeJ{Ua08ViT5@S=Tc71TPw4P{N8cM|#)*|68idg2511B<)c4l>M9{ zm_%W0`?(8UQqV4h4B2@tb)(9UhA7#2Rw9x&>A2{mZg2w;zHXw zz#7O=U(!fPE>#%?a{l|=}M8GQmHVzLU0f4 zX2Vkp>?CpMSHOwx{eJ$Aiz`prpR&+8+bbRQaQepLSW#CKuBwvCT9S-2YZ*y|wz)7#Iaxri8tk&qR zo`n~!r_Xt9@%+j+o}_=UVN(65cXTtaOTBgLO3KSv0liht^@ZD+jV*KjD!g3wR|5_{ z7REaPAocp365faJbos2yIJQ-2P_AfWHg4gp^z`)9&pXFHa0)Q>GUFSg{AK9p!eM@H zn+x^7l9yWI2wwfixrd4*xV@<0mwnGngsj;n_UL$Qkf^bAdaTi#wXrz0+bHUb7j-QG z*nKn~zqzL?EYG~=;x|0@UyRb}l!H$z!$BDrb_zg(mzVY;;bl>#m>*FABRm&KBbPF%wqf_vuBc2EZE2VD27T6 zEUkJOi}#z>Wnf%h5H7TBu-zQTZkkV=%MBE_pju7)KS!#w;2$E}n4+V!^PW?9b2)~m z)wL+=Z&5T=`Q#b9W!Z{i5xd|1l>Um0seGvilnffR&{&&lR?Sjw#Q3YYh@@ zEelSuXt=PSn8=vp_<~;Sv8lWA^CQD$NUYq3WKCJNzglK2q~-129G}~Nt99>$Lw}YK z3=yw_hUGpytjnE-_MNMkX>+8~*CQEgoIMLEjDsqh)XZV^k`J@c%tWs*bXH300zfIJ zY_{(2M=cp^&eNA1ex8y2R(?6#adhG?ckBRLTjY_qh8x9SG0H@dzB)CK_>TfV>ZGrE z3@}f>v&A~s>s9)fJ8zVe;xgSzj^EKb;(GE%!K@pK)pdNcrWC7l)U2=c;s;v6Mm4L$ zh}B@Mp=Wo0k=9U4niwrQ%Wo-ZnLxAgAG|h)PK=vlxYwr4(esv(M|g$=aku2ZE=i;s z7GVbZBRf;dwtUwY8fBXc#26))JjeAuE!7ptCH}y=H1wBMnqsFn?bogm^xk7r+Qfu( zyV&u5o?{g$qz#JNW-U(yfn;sS)!32U&KBd&#R5MMK#W1msX&Wj+zj1Q)~4Nc)AkzX zh4%f)w`%1sNzjlm_+7Z2Bl>yE-Oy?8c&8zy*wa&^xjlD_-E z`VRGdUt97GA1pS-TGlPU^3RO?>QZ`n=BnHjftf@nvkF#E(h>ol*alh9M1pay2!Ss* z8%tU5D!jWjtdPT7&N!;W*Y=*zsx^=zJwI|zqj4qY;oCzOQutYnx0xP2pa$v*{_aPS z9B-@{t@J5U6E!N}KzrGZ*^cjw&vw%#j0MuxRBn~K4vt^y@0J`8?0gBZ&OtuB$IYtD zoN|-0o{3Kli9fO#2?6s=J@=+QMOc*brz&VVO8+efTmuAV{fyQW;39jGhKw?v0e{A3 z{t|Y}P{vc|b`(1Fil$p0rb935LGnhO#_w9drhHT_TDH?s1eniaG@mEAd0V36kqZCzCNxiP1tQc zJOzNBB`9G5gp{s2XyWH?@0A19?j3`_&$Etx+ZQ8&LuUfeYGhU*4^baXpowP*M5i$=jdUf5hGxC`T=Zi>&vxFhZ={ zo`3k1Myceyt=L)9R`<#S5fmcXwhejIujjwp;+q(ly`#cX)}Eif=%}}GwI@xF@Nzng zf{9HFsyc^i%2foEL{H}jv4oM!h8?w`_6{eX(U<6B!gjb35Err4s@XT$}vT`Y+@)4~E1HTv_#4 zPdwTX-&VLB-XA%AtLQF0yWKS5h2Pxs{hQav1M{_S6&~($t`s~$JDfIiv*x5gS zWO#MIP?VDmgZNjbSRazm24-f#A;$u65+LN-PKkCB$HLrYNc90&2F`9 z>tc*e0vj+%3nBwolvcARE)J}z?$Ix4{+zwrPG5W+UO4hfHu{?zGC2LA|N6Y4p1exl zQs&jdGi3IL+e+}Wq^%-4oiZ2ya(CcO6xR1y?}4w^eE~(%X5`;V;oq*j9~8GvZT3gm zdOn}-Oom!ki6QYJ?{IuDOt{^03+h*l9%IQamj4wb5$y;wfsJYUId5F+!Y+phe4eo? zAkp7`?e@VcucdnyUKB44s#R9iS%^g4{Px1}k@~F=Ssu6#Un;A3&Wju6L1^CtE8UK| zQYV4q`Cu_yg^?JJ?vlM_1!6xq&Wf#vlaNNHZbw~KKUj#uDSLrdt$t)>&cKV8h$_R4 zhN3ZIq?MuzezTe{&P8_gR;lra;n*$w6mFNJR+0vvF}3QY*g%#ivzaGg4W6`DZV&HE zbY8Sw3%ukpZrh%YRc^UIAfqKx#hfl$kjB}KbRlZ%4nNGsPEg0EF-glP8^tMRX%IG4Fk+i`XC>IOUD zNf|0z^Py_@2L092ZEGhh_>^O#ByzDZCGESImy=%velfO&INuced5u2CpKxe-#Y6sME^ar@_|$A$e>>#|ckeA1Zjb70C^o9_ z06OXJ<0#J6ZPH{_(~jecoESqWH4=Y$jDAU z`sOdg26BY21TYp3&(0n|(*!znkX9`6c|mUo1e_t|Ux=rFGY(F-doN-q6>-gPuc(Y0 z{Kv|~(4;Z)7~ko-z3zfK_OfuA!I4?Xw4)`wsgU~%OknXspTf$K<8u8RU*ADYv=TQK zWtbdvErW8eO$%psCTi`hka|OmxvkQd7;bJQMB+pC?oofS&9!<5+SbO~JEkk?N^8zY zlk^P8{iSz~eIGLLqykh|cXMfu5iojO+2&9f3aP!m-rAhS2dzYl$smM5>OOW>J?+-1 zT^&-DA0j0!Y=|aze%{$r>l5+Fco#Nd=5ccUvGh zQ_w?9@sYjrS61V|9sj3If3Js|nvc5&T@&JZIQoL?DHGbrT@GAKbuu_hiY))xeNk0h z`yq$%oi+8nsk?c;1>up2Vr&KW7<#B1JCf4ngnDm+z@!sP$upWMBW-S6z;`^!p#U)I`B!v;c|X zJ^)ob5^Guca}uY{H*L!fnV+l1taJ+TW>9U-;fQebsHL1R0FT?~kNg4}g^n2=8{Pqb zc0fLbOgm;J4Eh7djI|{G3K-CZXrceuk_Jp_dtvG%<5Bcegwtw3t2OtYNKX8iI@w(# ztn!vVISp7-%^SZxn$r_A{Hm49ITfzfsdCTO2gz1Rrw#pcu^i9Ori)C>;GV$;ECc7f z*MBb&uwLK$HV2PJ`2G$N7|SEA3muGj8vK250yh7X_jetv?K>mGnHSBGk__2K;G9C> zxKl$$XwukBbJfb%!;5Qt=0{AJ*Y=9{GQ-wI``fLKSqDaFj3AeZ@O zQYWIM82;j#YZoWja;315TOv1;xCFp2RpcG^(u4cf)@$18O%7PSDa2Pcs_J22u1rsL zYHCAw(C>DsBqR4#|F7u8G2p2Cu<^qke0u~`L{5R96?cSp9q1wKf8MxrRiYQH4%S^B zkxA;FNqx#Rba1qG+n3vTud#RUn-6+Q|E;#l5mX!l?dPydV<-9jV+^u(D8|Tq?k+wW^#Ge&a@!r6XR6ovmIN6V5o}U!Zn6PYA^>DuWKK-1= zncK^E+~Bq4=pk9h6s0&Kh5ykb6EW_}Atm|~^fUN1#6Aa0wmVoj=8d_jDa^ftsFz*B zNFGZ`XOy%XdxV1|XyN=>I28VHedBByf#rwn@pbl>PTUs2L~@~ETYvWXOK4jkVqg@7 zl=F&b<~qpiit6@zcB0ewZ8V*79d7VfgmxgkkgxOn-s$9XRf4caJt%|T5g|W^JNFP+ zJjR6-z)2Hfy)(FLhzaq@9bp53YITlfsq03sW?1Pvm52RvDh^ZJv(K{WSDko zv1LSg%f}0HvdV4jWjO&azssJ@1R^;h09zdj!yTFK9eXoP+gg45?j+hD6E6xmo|EWj zd55A0&e9#dW@2A{N!f)Qdm8920v`C7NmX+j5a0*Axfu4^Y^Q|X3$ADng9fVYX)bq3 z@BjzC2lp6|TQ)Ubd{eZAdu(hpX?&jr_RxK!TEP*1ZEaj}*pDM2o3U+D_kqZ|2p8WH=8@PDU^wU%@W-e!?UZh7 z+s6IhH+$^MJ;_5aNWSRna@FC%{gQ9<4vDfn8(vtv@5&|Tzpu@I&O6k2z$eqV=OWBU6qg`_eg&9j^kH{tyBY?6 zA(U$fnHRE(`ya?vKm-zGL3;UoSi)O)UYkGQ9x$RI@y6g1L%Z1q({LQ^tMMo&rlX!2 z?-wmxaaN2~crp1Jhgz4qaII+=G7(~iX2@^RB@+si$v)EL-2_3CAenI!9@FmkAgsOF zOAp_{5KySkAm#EK5r6XKLCd|YTwe!)CU17-7kl3z;9R6@n< ztiuYRYGre<{@(oPUa29TTCa}c(UkA{s!utpRmoLCK{XQx{|>@jMn};ci7r8KeBF1w zJ;-C*uqV+&-&K37sEOI`2s2OWR0?JYl=|e`BR7!czru^xMxxU8b1}h@S!THA6mw*K zJ?%s)nUB61gDeIF<$qRs58$04IZ?|Ff8(4*6|j!QZ)*l5q!Y}{IQiFrN>VN8twC@f zVBrl$8Qm=>;mkTTm0f$3U$*Yr7BPMkIL-86m>2aUE}5Yc@iZ(MiImz{p1PH94T2?F z55!yQjVs+5{_MfWt*9a)_pdg6G!H*I;xVAB*C6&+F~5PG|CaNP5x{#0dzCY#f&?N5 z{qXU5jGx(#9sl&bxA@pP;_R&ygw%sCLR2U#EQV78hXc?Ss&8!doM;r+4YDd8)7qu3 zOM>$f*1w5Z4FD@nl^(k&eh_*Tc})L~Al@3;5R5iw_VzY2FTHwo1GrSLThrchiRh=J zdL9#LYUxu(rfeQJerDAWaePS_s;y1=m3@zYcv&_0Q9;M8HMM=lRD~vVY>eyu?p>#k z`yqb#n4CeD8^JwY?siUj3^5CwzUL&D^}HQs{n_!T3(&Tcf-J|>OY{#WRqy#~wcOir z-8k|?Hm`GoGf%P_3Pqv51-Fv55qE_TI_IKC+FjxrJcoFpQj?Uy2ve_>=gU(L7CB7F zs3PMhaFV>iz&)7DjVsQ3oCg#?+AO_{%!%X^Z#x5Q+~iOGbR=7_RQ8x;*6@u;wi~bs zdyD$c`ao_Zytgi^TUcwcL6zmC7N-be5ulvt`mDTf$Hgn>-KfDl`m1{7Siw`7%vs}& zRYwe?bkwsx=%V^2FXul*Xn~m9cF2;y{~mrU3`;E;y?NF=o*yA%tD@kpV0SXZ8Y=no zCQgv0aps-tain$^z!c!w=ORqqss(+%D7<;o1%Ec(oY)Rk37uq3C$^hlYW3bTBAve9 zzSzrxDzW5`K-UB9Yn^HiL@7nvAf3`-kxmKDC(RoK?q~iKQL*)+W3~pBwTfOJHs*a5 zDP*v9A`@!B?xCED7LDmS&-ioEWcWSK)k;4B-i1+5{V1rj<^5jR9hdyzb^Uvz#jK1I z;E6;69r7rA`}`s78F_qw|Xe%ZzoF_xBG-d+-0D{S3NxM{&SrUClzT(b=V z8@>W~-Iz|0GoxRV@iQ}7FuSd|9eN!C@xWcU+tL}aA`5Qa;&)rM6cl4;8O06x(V`sl zNx+CFs5~N^4gZ$iNhrVGC_&xz*~I{Adg({TK`5TR zVPjDobb&YD#EPS{lhOnVWZ&DCKVRiV(Eh&$< zlfaZ&p2IWmKpf?xi*2`_-;|XDJtOJn+42YbC8F!{4!~SAn0f62Y;W5~(d4@Ns)EGbZwKJYGz${}X{T19oCUub5x5mBl#e4o&LMQ=i9ko>& zU+d-MGp!EOc6hq-`3bT zKH6Fef?9*ipYHih_HKbvlca!Euhoq!17NbVEgg$mB`tu?Vuh>7>Snv*Ykq)?wJKYJ z3O+JCwdR%FVrbQ@Mvd(7%|J)})EDS|T9$ncV`OrFE@_u6#rTQOKek|@7~RjU3W8-8 zYEC;Z6LDX9^}5XO18_^#-V@k5n^mo={!IrXUYy~6%nd&TGE8maVJFBO%1&R;m`FHmeKkV72Bl}1JONQ)CayDLyF}|Un#`>cZ1o&JLe`fF zAgZUK=m$mgMsOOH?}v}0(yR?YZOP>mNC|b!gn=r#iME_}H=!MxwK8}BxyW{Il4!L& z4wvQ_#P=pJF5xxP3Sj&TzvCM&;BOk^JjY*2sf(+o+h(fLli0hz1YkzrE%Wx=c;nJ0 zrwkc;u4!BWVcX)c(KSCrtdwSX$=zEw4cOJ?xD37g9(wcnK9>1u|E=?rllTy5zLL*< z5Mg~eJ#9$kuCAfo$OPPmFflYFt?xT&W$$yUD;PW>@NT`dLFLbXqDTHG4f&EiIQyE; zAC*h;!z}Gm zy2|EYm|qo67i~GcLi(BG@3O|k8S!$i#%*C++(}lF&FlvZJwBQoJASKBmYmHrB$=Za zJ=)dF@BB0@uifOqQ}l!=$gbMAC^x>IfvG;EepmCJNE?3QhFZLFUpaN=^}EUwMc>cw z_xYtDw9kWqa^ns7oC(dx-5reilTb$4G6#wGQKXi<_I$_`^iYE>T(@%5&5ZT2;15|S zW9c);RuFm&$U88J-vZr#|;ld9qgBr8%g&dg? z)wbQd(AND~_3Pzr%`!rh5gaff{sG3_O#HNwJGJ`;Q%HnhV=zttzzLNXGA3tQ*Ey#S z;%+YuH78$5%M8idS7-&foDHv?=U^Nc{|DIb$G^GjH6MNAO^NT(OqkjcSKB+>PG5%H z?{DcT?WOo~l_-GAnNO~WIQ#b5I*gtIBLbTJY|$-CN~1@7m5?(Wxg~e_m>^9T_&`kt zG(P~>{*pq4p4HdgR6Pjo+uMDS$wK&}KkSOSb9B>j))2i5T*~U#P5v>om&i8)K9@cE zy#%p5;-&?K;)Sx%9;c{iis&7lObE`zxF<>WN{ut%xg{CBi%mN#2zF?l|8zaHuT2!! z#`DG{NE8}$`D_J%&4Ajh&cGY65L)G4I9`6}&AM3IK&q;=OAV3zyC3kI`DZTI2|T$= zRhW8W#GVEKsVaZ9_6D9SWKNkOKj`3vk_+Yztx)yRI^%a&v7s@8+FD!>xN;ZW#7m** zVs!facI~D#+A?~sbs^qU7nx4S13O@%D102h}In2P!=o&w&pT8LelP(Kl&u*L4+C!V{T zIeI{VE8v$N(g3vAx%{87<-WlA_bi1B8b9(uiVvLxE(mZw&rTusAAPtTD!>~6=>ppuTe>Gl1Ofe!&E~qnvab^?!mE8x z{JXlo>pTD_DW%sI9Ker|aowEtc%zXgv*&J0IGwb+=dN0|hD74uf?%e2^6{#HteIue z*|T>$!!|ipiHF0K&%%3?a3Tz=1#@B1`21p~BsG8duouYI)8NK=j)`l(!HpM-m&CeD z&Yz`qc??u&EE-Ya@f-NvLT~Z|{KKB>tJ0qF48Z|9Viu8 znZr=y-(D;5hF|E^+a+?Z_8JV0a+3K{kqE%X^%mv4qXMUuAtBVvk@u6Rl0B)K7pEW0 zG`lS~%7&^=6%^!!8a+fRf_!FS@cHQkbL_{edJ{eC43M|-RIu5IDBYPQc!#9>DaWjy zGS30$faByikTWu!dG2z(lSOS@&hd$`P{COQH-aAukZl zTe*egHN$6nNc$n?PJ3Vy&(aJT8n*q*SO}8u5|^ z&Az>HeW`>4NvZ-!i}o&kJ4~1IdY%o3+2$9Oo4pto-+;t}`mk@F=O5T~91=HKA7t>A z?=EyD244WL4>;>vKG}W;=KP4xJ@$z`)h&$py1Frk6xyW{X|veZ;w?CTLx=IL&}Typ zBzkl15>ZqfvsKj>yb4IH3L-SV&}UNp1h?$wm*iYE!oL3}oc#OH7iqJsOE(Q#H>0XX zMeaAS>bwMc1gS~b}=A{FNJG))a&4=PzcixY>wcgOua4RB*c{h<>+C1A%?X7yzP_)RN~y-kr)G6Ay_)~# z)&ySTd8B*;B|`QY5&nHSTvK7_)N})*WOS@{Et5NxbKBPkWEvPwCHudIB)b3)A25R7bZeIlLaL|=k zJxOPpa& zm1T0(mhb-FN~;Wya>tox_!$o{t09&#%aMqUWfJNeOrFfOTDsp>J|J!QkeaSW`(S>w zxG{UKZ5>Q%sRE+fu8Nf;p=yhc5}s-Jk+A?qQb9lbO7bSH>n&{}-9GdNXUwNRoYFWp zPq+NIL-Bm&#)tbqrd1wceTA(O&dPL|J{YAQk{-~vU=>3K1Hb=}-S~C5y5%d8Uzq|? z-?SMO6{+LTZP!}7#=ex#?a@IjKYm>260~BI(E>(UE8mSTaGW@?O{zT=#a3jY#)Yr? zt@Nk?qRqb2-b2st%X#ehA~`l4(12l*5s2@*@gX7TvX+;#^cko2Cx}y>CYQCA+`QeR zM88`dx+2_R!k9L(3D0rwm6^<&{K}tu2{8iTU6^cw!4D-^-*;I<+U*=P@ya(}e&idJ ze;G}HJg)%X0PUY{689V$jJFJjJ;=fS;w13qPAPjobCV6Ziuot*?J)dKlH|%m=gbmA zb|~ooeGv_7Lxf!2L6)`K<)`1H$DBK;QwGG(e>eUsod3ac<{7yt=k+cOV`=*};4>#p K46^m@0{<5!0?>W{ literal 0 HcmV?d00001 diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9f065231d200a43e1a690bcfb9e5b72968caa0 GIT binary patch literal 3549 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 literal 0 HcmV?d00001 diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico index 354202a4e6baec3429e928e13d54144f8eebb62c..a65d71823e45409a25b5d1cb0b3f10cb91df6da2 100644 GIT binary patch literal 15406 zcmeHOO-vJ86dnZeCn^ws5Zw?LL>C$p^~DfPUflUdbmea%YNAAgF5I~ApGMrf$IR569KTwv?>j*Y|Tye23#FHU1}0 zoO9|wdgP?8UsdIRn>X!os?#~B>+5uV@bKXPul+NMHd?uN&jH7deTh@F(TdUNgH@}H zaP+8^=+><*(AM@3ZFTVZLU7}T9cpUa@aD}3oI3Rt#>Yd{^%EV_t&iX1`}aU%v(%qo zyl{cr9i;Y`<0v{P$S~qKQ_Sn1yyEzjOypqFd;x;NDBzeOrg)E~;8?wDmwC<@B#g;B zcCiBvf89|#<6eNGDFJvix=xg3$~e?tA|5}IwTc+SjAtm!~o~df0NXuOAXB8$N2Z8;J=<(eEj|wF4!cM<@e9c zHNgJ;pCy&m?~mR23BN_l zmGi3YlVoyF{ynhcs|BuoCMUy^iarcpL((R>rDX!HT6cAN`KO8zGMh4YCaowl6LX|hHTFw&HA@+0YBqp3SEARoWo z&Tc=32J>tm4gYL5l)u*aSDy3P5jFm2v!VQTrt{y~IVF4kYHy!Zp6DbItE-1)* z-F|)&n4;!L1o)hPr)>OXWmcv+Nl~yOMqGCm6*bDnzkYoqeEKvl(xS4a=g(bK`H#dk z9qvazeLAEpSdnNtT|X>Z6n}Oo5v$l|Tu0x%>kw&CS<~&?cF50ffX9yqd393j>eUT^ zbr)I?!^)M$nX_NQ8L(7kUS7Rw@aN?j;nppOEG;Nd4}R&Zv0)WR`tBU;JIU=uUx*|O&G=VzsNP>Z*7h3*W#I4HR89~rbzC7-@Z1eulEuB z?d|{JH=EUs9|3#4As876&b(7$&U4Qm3zU|ci5-2^%0FTg6U8cZ;TM=# zm@?D(cew(vb7w0VYfUEl|F2jWw&zCG>wWxQg^}RLxj56Lw$=-H)(`g{PM_||H25$! r7J>&4`r+EO93n4Y}?<9 literal 3585 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 Hu0mjfhdT@% diff --git a/frontend/public/index.html b/frontend/public/index.html index d0ae633..47ae8c7 100644 --- a/frontend/public/index.html +++ b/frontend/public/index.html @@ -6,15 +6,15 @@ - + - +