From ffdfa0bb21b7b77d4ea30730e542db00a637742a Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Tue, 24 Oct 2017 15:24:54 +0200 Subject: [PATCH 01/40] Add simple getting started --- .gitignore | 1 + README.md | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/.gitignore b/.gitignore index df9d7e8..723e6e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules/ .idea/workspace.xml /.deploy/ +.idea diff --git a/README.md b/README.md index a552445..3da57d9 100644 --- a/README.md +++ b/README.md @@ -87,3 +87,13 @@ Finally, we also implemented a detailed view of the participant including all th - Romeo Bellon ([GitHub](https://github.com/mryraghi), [LinkedIn](https://www.linkedin.com/in/romeobellon/)) - Daniel Morandini ([GitHub](https://github.com/danielmorandini), [LinkedIn](https://www.linkedin.com/in/daniel-morandini-224a3586/)) - Alessandro Piccoli ([GitHub](https://github.com/alpicco)) + +# Getting Setup + +clone repo and install meteor ([Meteor](https://www.meteor.com/install)) + +`cd snowdays && meteor npm install` + +navigate to localhost:3000 + +# Getting users From ae65fca7b47eb0cda1aade1ce423242867707315 Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Tue, 24 Oct 2017 16:33:19 +0200 Subject: [PATCH 02/40] Adds seeder --- .idea/jsLibraryMappings.xml | 3 - .../meteor_packages_auto_import_browser.xml | 1994 +- .../meteor_packages_auto_import_npm.xml | 38532 ++++++++-------- imports/startup/client/routes.js | 4 +- server/logs.js | 7 +- server/seeder.js | 46 + 6 files changed, 20315 insertions(+), 20271 deletions(-) create mode 100644 server/seeder.js diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml index a3483b8..4c1cb28 100644 --- a/.idea/jsLibraryMappings.xml +++ b/.idea/jsLibraryMappings.xml @@ -1,10 +1,7 @@ - - - \ No newline at end of file diff --git a/.idea/libraries/meteor_packages_auto_import_browser.xml b/.idea/libraries/meteor_packages_auto_import_browser.xml index a99d388..390cf17 100644 --- a/.idea/libraries/meteor_packages_auto_import_browser.xml +++ b/.idea/libraries/meteor_packages_auto_import_browser.xml @@ -2,1035 +2,1035 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + - + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/libraries/meteor_packages_auto_import_npm.xml b/.idea/libraries/meteor_packages_auto_import_npm.xml index b7fcd53..8ae4c18 100644 --- a/.idea/libraries/meteor_packages_auto_import_npm.xml +++ b/.idea/libraries/meteor_packages_auto_import_npm.xml @@ -2,19275 +2,19275 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/imports/startup/client/routes.js b/imports/startup/client/routes.js index c3ff482..171f754 100644 --- a/imports/startup/client/routes.js +++ b/imports/startup/client/routes.js @@ -1,8 +1,8 @@ import "../../ui/pages/home"; import "../../ui/pages/login"; // import "../../ui/pages/admin"; -// import "../../ui/pages/externals/index"; -// import "../../ui/pages/participant/index"; +import "../../ui/pages/externals"; +import "../../ui/pages/participant"; import "../../ui/pages/event"; import "../../ui/pages/errors/404/not_found"; import _ from "lodash"; diff --git a/server/logs.js b/server/logs.js index c0b214c..a12868b 100644 --- a/server/logs.js +++ b/server/logs.js @@ -5,10 +5,11 @@ let client = new raven.Client('https://7b01834070004a4a91b5a7ed14c0b411:79de4d1b }); // catches all exceptions on the server -raven.patchGlobal(client); +//raven.patchGlobal(client); client.on('logged', function () { - console.log('Exception handled and sent to Sentry.io'); + + //console.log('Exception handled and sent to Sentry.io'); }); client.on('error', function (e) { @@ -16,6 +17,6 @@ client.on('error', function (e) { // e.reason -- raw response body // e.statusCode -- response status code // e.response -- raw http response object - + console.log(e); console.log('Couldn\'t connect to Sentry.io'); }); \ No newline at end of file diff --git a/server/seeder.js b/server/seeder.js new file mode 100644 index 0000000..b4c91ee --- /dev/null +++ b/server/seeder.js @@ -0,0 +1,46 @@ +if (Meteor.users.find().count() == 0) { + + console.log("seeding the database"); + let user = { + username: 'unibz_user', + email: 'unibz@me.com', + password: 'password', + profile: { + first_name: 'unibz', + last_name: 'ubibz', + allowed_participants: 20 + } + }; + Accounts.createUser(user); + let test = Meteor.users.findOne({username: user.username}); + Roles.addUsersToRoles(test._id, 'unibz'); + + let admin = { + username: 'admin', + email: 'admin@me.com', + password: 'password', + profile: { + first_name: 'admin', + last_name: 'admin', + allowed_participants: 20 + } + }; + Accounts.createUser(admin); + let test_admin = Meteor.users.findOne({username: admin.username}); + Roles.addUsersToRoles(test_admin._id, 'admin'); + + let external = { + username: 'external', + email: 'external@me.com', + password: 'password', + profile: { + first_name: 'external', + last_name: 'external', + allowed_participants: 20 + } + }; + Accounts.createUser(external); + let test_external = Meteor.users.findOne({username: external.username}); + Roles.addUsersToRoles(test_external._id, 'external'); + +}; \ No newline at end of file From bf4d6626a730998718f21d24ff3a6a1603d29758 Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Tue, 24 Oct 2017 16:35:45 +0200 Subject: [PATCH 03/40] Removes .idea files from being tracked --- .idea/dictionaries/Romeo.xml | 20 - .idea/encodings.xml | 6 - .idea/inspectionProfiles/Project_Default.xml | 18 - .../inspectionProfiles/profiles_settings.xml | 7 - .idea/jsLibraryMappings.xml | 7 - .idea/libraries/Generated_files.xml | 14 - .../meteor_packages_auto_import_browser.xml | 1037 - .../meteor_packages_auto_import_npm.xml | 19277 ---------------- .idea/misc.xml | 6 - .idea/modules.xml | 8 - .idea/preferred-vcs.xml | 6 - .idea/snowdays.iml | 18 - .idea/typescript-compiler.xml | 7 - .idea/vcs.xml | 6 - .idea/watcherTasks.xml | 30 - .idea/webResources.xml | 14 - snowdays-ctrl | 1 - 17 files changed, 20482 deletions(-) delete mode 100644 .idea/dictionaries/Romeo.xml delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/jsLibraryMappings.xml delete mode 100644 .idea/libraries/Generated_files.xml delete mode 100644 .idea/libraries/meteor_packages_auto_import_browser.xml delete mode 100644 .idea/libraries/meteor_packages_auto_import_npm.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/preferred-vcs.xml delete mode 100644 .idea/snowdays.iml delete mode 100644 .idea/typescript-compiler.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/watcherTasks.xml delete mode 100644 .idea/webResources.xml delete mode 160000 snowdays-ctrl diff --git a/.idea/dictionaries/Romeo.xml b/.idea/dictionaries/Romeo.xml deleted file mode 100644 index 71a9b28..0000000 --- a/.idea/dictionaries/Romeo.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - bcrypt - crypto - dfilename - enoent - flickity - iban - keypress - keyup - loggly - onbeforeunload - subdomain - tshirt - università - upsert - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 97626ba..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 9a67242..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 3b31283..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml deleted file mode 100644 index 4c1cb28..0000000 --- a/.idea/jsLibraryMappings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Generated_files.xml b/.idea/libraries/Generated_files.xml deleted file mode 100644 index 1bd2534..0000000 --- a/.idea/libraries/Generated_files.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/meteor_packages_auto_import_browser.xml b/.idea/libraries/meteor_packages_auto_import_browser.xml deleted file mode 100644 index 390cf17..0000000 --- a/.idea/libraries/meteor_packages_auto_import_browser.xml +++ /dev/null @@ -1,1037 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/meteor_packages_auto_import_npm.xml b/.idea/libraries/meteor_packages_auto_import_npm.xml deleted file mode 100644 index 8ae4c18..0000000 --- a/.idea/libraries/meteor_packages_auto_import_npm.xml +++ /dev/null @@ -1,19277 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 28a804d..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index b69cc6f..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/preferred-vcs.xml b/.idea/preferred-vcs.xml deleted file mode 100644 index 848cfc4..0000000 --- a/.idea/preferred-vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - ApexVCS - - \ No newline at end of file diff --git a/.idea/snowdays.iml b/.idea/snowdays.iml deleted file mode 100644 index eac47bf..0000000 --- a/.idea/snowdays.iml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/typescript-compiler.xml b/.idea/typescript-compiler.xml deleted file mode 100644 index 9242a56..0000000 --- a/.idea/typescript-compiler.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml deleted file mode 100644 index fb4dc33..0000000 --- a/.idea/watcherTasks.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/webResources.xml b/.idea/webResources.xml deleted file mode 100644 index 3432ba4..0000000 --- a/.idea/webResources.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/snowdays-ctrl b/snowdays-ctrl deleted file mode 160000 index a69a64d..0000000 --- a/snowdays-ctrl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a69a64d059d8f607332a4032db1389d579a9819b From e4e2a4e008c01e1aa5dfe096c6c355d7846d9657 Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Tue, 24 Oct 2017 16:39:27 +0200 Subject: [PATCH 04/40] adds the is development clause --- server/seeder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/seeder.js b/server/seeder.js index b4c91ee..024c8d2 100644 --- a/server/seeder.js +++ b/server/seeder.js @@ -1,4 +1,4 @@ -if (Meteor.users.find().count() == 0) { +if (Meteor.isDevelopment && Meteor.users.find().count() == 0) { console.log("seeding the database"); let user = { From ddb6aba9f8eec95c0f9d430009eb35d17428a2c0 Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Wed, 25 Oct 2017 15:33:48 +0200 Subject: [PATCH 05/40] Removes pg unnecessary requirement --- package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/package.json b/package.json index 7fb4bd6..d6c95fd 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,6 @@ "meteor-node-stubs": "^0.2.11", "moment": "^2.18.1", "papaparse": "^4.3.6", - "pg": "^6.4.2", - "pg-native": "^1.10.1", "popper.js": "^1.12.5", "prerender-node": "^2.7.4", "randomcolor": "^0.4.4", From 730d88a4e233a8cc3a0e56c46ff9cb50f55e397f Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Wed, 25 Oct 2017 15:48:45 +0200 Subject: [PATCH 06/40] Fixes admin sort @MILK --- imports/startup/client/routes.js | 2 +- imports/ui/pages/admin/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/imports/startup/client/routes.js b/imports/startup/client/routes.js index 171f754..7e59fbc 100644 --- a/imports/startup/client/routes.js +++ b/imports/startup/client/routes.js @@ -1,6 +1,6 @@ import "../../ui/pages/home"; import "../../ui/pages/login"; -// import "../../ui/pages/admin"; +import "../../ui/pages/admin"; import "../../ui/pages/externals"; import "../../ui/pages/participant"; import "../../ui/pages/event"; diff --git a/imports/ui/pages/admin/index.js b/imports/ui/pages/admin/index.js index 66bb5ce..f87a7b5 100644 --- a/imports/ui/pages/admin/index.js +++ b/imports/ui/pages/admin/index.js @@ -1,5 +1,5 @@ import './admin.html' -import './admin.list' +// import './admin.list' import './admin.add_new' import './admin.settings' import './admin.stats' From c233d0c66400ae691e0c158a5fb43bef0bf5bb14 Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Fri, 27 Oct 2017 01:44:14 +0200 Subject: [PATCH 07/40] Adds seeding mechanism that scales better. and adds accommodation table with ability to communicate --- README.md | 7 +- imports/collections/accommodations.js | 114 +++++++++++++++++++++++++ imports/data_seeds/accommodations.json | 1 + imports/data_seeds/participants.json | 1 + imports/data_seeds/users.json | 1 + server/publish.js | 6 ++ 6 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 imports/collections/accommodations.js create mode 100644 imports/data_seeds/accommodations.json create mode 100644 imports/data_seeds/participants.json create mode 100644 imports/data_seeds/users.json diff --git a/README.md b/README.md index 3da57d9..5fcf89b 100644 --- a/README.md +++ b/README.md @@ -96,4 +96,9 @@ clone repo and install meteor ([Meteor](https://www.meteor.com/install)) navigate to localhost:3000 -# Getting users +# Seeing pages + +`mongoimport --db meteor --collection users --file imports/data_seeds/users.json --jsonArray --port 3001` +`mongoimport --db meteor --collection participants --file imports/data_seeds/participants.json --jsonArray --port 3001` +`mongoimport --db meteor --collection accommodations --file imports/data_seeds/accommodations.json --jsonArray --port 3001` + diff --git a/imports/collections/accommodations.js b/imports/collections/accommodations.js new file mode 100644 index 0000000..e4c3de7 --- /dev/null +++ b/imports/collections/accommodations.js @@ -0,0 +1,114 @@ +import "babel-polyfill"; +import SimpleSchema from "simpl-schema"; +import _ from "lodash"; + +const Accommodations = new Mongo.Collection("accommodations"); + +const Schemas = {}; + +Schemas.Accommodation = new SimpleSchema({ +_id: { + type: String, + regEx: SimpleSchema.RegEx.Id +}, +name: { + type: String, + optional: true +}, +address: { + type: String, + max: 30, +}, +coordinates: { + type: String, + max: 30, + index: 1, + optional: true +}, +busZone: { + type: String, + allowedValues: [1, 2, 3], + optional: true +}, +capacity: { + type: String, + max: 10, + optional: false +}, history: { + type: Array, + optional: true, + autoValue: function () { + if (this.isUpdate) { + return { + $push: { + date: new Date, + updates: {} + } + }; + } else { + this.unset(); // Prevent user from supplying their own value + } + } + }, + 'history.$': { + type: Object, + }, + 'history.$.date': { + type: Date, + optional: true + }, + 'history.$.updates': { + type: Object, + optional: true + }, + 'history.$.updates.field': { + type: String, + optional: true + }, + 'history.$.updates.value': { + type: String, + optional: true + }, + token: { + type: String, + optional: true + }, + statusComplete: { + type: Boolean, + label: '', + defaultValue: false, + optional: true + }, + hasAcceptedTandC: { + type: Boolean, + defaultValue: false, + optional: true + }, + createdAt: { + type: Date, + defaultValue: new Date(), + denyUpdate: true, + optional: true + }, + updatedAt: { + type: Date, + autoValue: function () { + if (this.isUpdate) { + return new Date(); + } + }, + denyInsert: true, + optional: true + } +}, { + clean: { + filter: true, + autoConvert: true, + removeEmptyStrings: true, + trimStrings: true, + getAutoValues: true, + removeNullsFromArrays: true, + } +}); +Accommodations.attachSchema(Schemas.Accommodation); +export default Accommodations; \ No newline at end of file diff --git a/imports/data_seeds/accommodations.json b/imports/data_seeds/accommodations.json new file mode 100644 index 0000000..6c897a6 --- /dev/null +++ b/imports/data_seeds/accommodations.json @@ -0,0 +1 @@ +[{"_id:": 500, "name": "RIGLER", "address": "Bolzano", "coordinates": "", "busZone": 1, "capacity": 20}, {"_id:": 501, "name": "UNICITY", "address": "Bolzano", "coordinates": "", "busZone": 1, "capacity": 27}, {"_id:": 502, "name": "SALETTA", "address": "Bolzano", "coordinates": "", "busZone": 2, "capacity": 33}, {"_id:": 503, "name": "HSB", "address": "Bolzano", "coordinates": "", "busZone": 3, "capacity": 24}, {"_id:": 504, "name": "HAUSSB", "address": "Bolzano", "coordinates": "", "busZone": 3, "capacity": 24}, {"_id:": 505, "name": "SALEETA_HSB", "address": "Bolzano", "coordinates": "", "busZone": 2, "capacity": 18}, {"_id:": 506, "name": "RAINERUM", "address": "Bolzano", "coordinates": "", "busZone": 1, "capacity": 6}, {"_id:": 507, "name": "GALILEI", "address": "Bolzano", "coordinates": "", "busZone": 1, "capacity": 78}, {"_id:": 508, "name": "CARDUCCI", "address": "Bolzano", "coordinates": "", "busZone": 1, "capacity": 60}] \ No newline at end of file diff --git a/imports/data_seeds/participants.json b/imports/data_seeds/participants.json new file mode 100644 index 0000000..8d04b5f --- /dev/null +++ b/imports/data_seeds/participants.json @@ -0,0 +1 @@ +[{"_id": 1000, "firstName": "javier", "lastName": "javier", "university": "University of Tuebingen", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1001, "firstName": "richard", "lastName": "richard", "university": "Uni Salzburg", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1002, "firstName": "james", "lastName": "james", "university": "Goethe University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1003, "firstName": "andrea", "lastName": "andrea", "university": "Universita di Milano", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1004, "firstName": "dorothy", "lastName": "dorothy", "university": "Universita di Torino", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1005, "firstName": "edward", "lastName": "edward", "university": "TU Munich", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1006, "firstName": "tracy", "lastName": "tracy", "university": "LMU", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1007, "firstName": "christopher", "lastName": "christopher", "university": "Nordakademie", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1008, "firstName": "mark", "lastName": "mark", "university": "Universita di Sassari", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1009, "firstName": "robert", "lastName": "robert", "university": "Zeppelin University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1010, "firstName": "david", "lastName": "david", "university": "Johannes Gutenberg Universitat Mainz", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1011, "firstName": "daniel", "lastName": "daniel", "university": "Maastricht University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1012, "firstName": "bessie", "lastName": "bessie", "university": "Frankfurt am Main", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1013, "firstName": "terence", "lastName": "terence", "university": "Frankfurt School", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1014, "firstName": "chris", "lastName": "chris", "university": "HEC Lausanne", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1015, "firstName": "amber", "lastName": "amber", "university": "Universita di Verona", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1016, "firstName": "irene", "lastName": "irene", "university": "Universita di Genova", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1017, "firstName": "terry", "lastName": "terry", "university": "University of Bayreuth", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1018, "firstName": "lisa", "lastName": "lisa", "university": "ESB", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1019, "firstName": "krista", "lastName": "krista", "university": "Universita di Trento", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1020, "firstName": "roland", "lastName": "roland", "university": "Universita di Bologna", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1021, "firstName": "warren", "lastName": "warren", "university": "WHU", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}] \ No newline at end of file diff --git a/imports/data_seeds/users.json b/imports/data_seeds/users.json new file mode 100644 index 0000000..60b1869 --- /dev/null +++ b/imports/data_seeds/users.json @@ -0,0 +1 @@ +[{"_id": 1000, "username": "javier_clay", "email": "javier_clay@mail.com", "password": "password", "profile": {"first_name": "javier", "last_name": "clay", "allowed_participants": 6, "university": "University of Tuebingen", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1001, "username": "richard_waters", "email": "richard_waters@mail.com", "password": "password", "profile": {"first_name": "richard", "last_name": "waters", "allowed_participants": 10, "university": "Uni Salzburg", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1002, "username": "james_soileau", "email": "james_soileau@mail.com", "password": "password", "profile": {"first_name": "james", "last_name": "soileau", "allowed_participants": 10, "university": "Goethe University", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1003, "username": "andrea_harris", "email": "andrea_harris@mail.com", "password": "password", "profile": {"first_name": "andrea", "last_name": "harris", "allowed_participants": 11, "university": "Universita di Milano", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1004, "username": "dorothy_green", "email": "dorothy_green@mail.com", "password": "password", "profile": {"first_name": "dorothy", "last_name": "green", "allowed_participants": 11, "university": "Universita di Torino", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1005, "username": "edward_spratley", "email": "edward_spratley@mail.com", "password": "password", "profile": {"first_name": "edward", "last_name": "spratley", "allowed_participants": 12, "university": "TU Munich", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1006, "username": "tracy_fleniken", "email": "tracy_fleniken@mail.com", "password": "password", "profile": {"first_name": "tracy", "last_name": "fleniken", "allowed_participants": 12, "university": "LMU", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1007, "username": "christopher_williams", "email": "christopher_williams@mail.com", "password": "password", "profile": {"first_name": "christopher", "last_name": "williams", "allowed_participants": 13, "university": "Nordakademie", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1008, "username": "mark_daquino", "email": "mark_daquino@mail.com", "password": "password", "profile": {"first_name": "mark", "last_name": "daquino", "allowed_participants": 15, "university": "Universita di Sassari", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1009, "username": "robert_hudgins", "email": "robert_hudgins@mail.com", "password": "password", "profile": {"first_name": "robert", "last_name": "hudgins", "allowed_participants": 15, "university": "Zeppelin University", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1010, "username": "david_velazquez", "email": "david_velazquez@mail.com", "password": "password", "profile": {"first_name": "david", "last_name": "velazquez", "allowed_participants": 16, "university": "Johannes Gutenberg Universitat Mainz", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1011, "username": "daniel_bushee", "email": "daniel_bushee@mail.com", "password": "password", "profile": {"first_name": "daniel", "last_name": "bushee", "allowed_participants": 18, "university": "Maastricht University", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1012, "username": "bessie_howard", "email": "bessie_howard@mail.com", "password": "password", "profile": {"first_name": "bessie", "last_name": "howard", "allowed_participants": 18, "university": "Frankfurt am Main", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1013, "username": "terence_loe", "email": "terence_loe@mail.com", "password": "password", "profile": {"first_name": "terence", "last_name": "loe", "allowed_participants": 20, "university": "Frankfurt School", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1014, "username": "chris_vanzandt", "email": "chris_vanzandt@mail.com", "password": "password", "profile": {"first_name": "chris", "last_name": "vanzandt", "allowed_participants": 21, "university": "HEC Lausanne", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1015, "username": "amber_wallace", "email": "amber_wallace@mail.com", "password": "password", "profile": {"first_name": "amber", "last_name": "wallace", "allowed_participants": 21, "university": "Universita di Verona", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1016, "username": "irene_severson", "email": "irene_severson@mail.com", "password": "password", "profile": {"first_name": "irene", "last_name": "severson", "allowed_participants": 23, "university": "Universita di Genova", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1017, "username": "terry_east", "email": "terry_east@mail.com", "password": "password", "profile": {"first_name": "terry", "last_name": "east", "allowed_participants": 24, "university": "University of Bayreuth", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1018, "username": "lisa_collett", "email": "lisa_collett@mail.com", "password": "password", "profile": {"first_name": "lisa", "last_name": "collett", "allowed_participants": 25, "university": "ESB", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1019, "username": "krista_carter", "email": "krista_carter@mail.com", "password": "password", "profile": {"first_name": "krista", "last_name": "carter", "allowed_participants": 28, "university": "Universita di Trento", "gender": "M"}, "roles": ["external"], "create": "true"}, {"_id": 1020, "username": "roland_rodriguez", "email": "roland_rodriguez@mail.com", "password": "password", "profile": {"first_name": "roland", "last_name": "rodriguez", "allowed_participants": 36, "university": "Universita di Bologna", "gender": "F"}, "roles": ["external"], "create": "true"}, {"_id": 1021, "username": "warren_creager", "email": "warren_creager@mail.com", "password": "password", "profile": {"first_name": "warren", "last_name": "creager", "allowed_participants": 41, "university": "WHU", "gender": "M"}, "roles": ["external"], "create": "true"}] \ No newline at end of file diff --git a/server/publish.js b/server/publish.js index a1ae1b9..3c28da9 100644 --- a/server/publish.js +++ b/server/publish.js @@ -2,6 +2,7 @@ import Participants from "/imports/collections/participants"; import IDs from "/imports/collections/ids"; import Events from "/imports/collections/events"; import Reports from "/imports/collections/reports"; +import Accommodations from '/imports/collections/accommodations' import _ from "lodash"; Meteor.publish('users.current', function (token) { @@ -150,6 +151,11 @@ Meteor.publish('events.one', function (_id) { return Events.find(_id) }); +Meteor.publish('accommodations.all', function () { + return Accommodations.find() +}); + + // Meteor.publish('files.ids.all', function () { // return IDs.find().cursor; // }); \ No newline at end of file From 1c110ded9fe58769d3c37f2c577a782092e2312c Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Fri, 27 Oct 2017 01:48:56 +0200 Subject: [PATCH 08/40] adds spacing on ready --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 5fcf89b..1b5c3c5 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,9 @@ navigate to localhost:3000 # Seeing pages `mongoimport --db meteor --collection users --file imports/data_seeds/users.json --jsonArray --port 3001` + `mongoimport --db meteor --collection participants --file imports/data_seeds/participants.json --jsonArray --port 3001` + `mongoimport --db meteor --collection accommodations --file imports/data_seeds/accommodations.json --jsonArray --port 3001` + From 06e1c9b6f75a4322c8d660f44ed22255c973243d Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Mon, 30 Oct 2017 10:21:51 +0100 Subject: [PATCH 09/40] Balances out the gender seeds --- imports/data_seeds/participants.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/data_seeds/participants.json b/imports/data_seeds/participants.json index 8d04b5f..3ade1c5 100644 --- a/imports/data_seeds/participants.json +++ b/imports/data_seeds/participants.json @@ -1 +1 @@ -[{"_id": 1000, "firstName": "javier", "lastName": "javier", "university": "University of Tuebingen", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1001, "firstName": "richard", "lastName": "richard", "university": "Uni Salzburg", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1002, "firstName": "james", "lastName": "james", "university": "Goethe University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1003, "firstName": "andrea", "lastName": "andrea", "university": "Universita di Milano", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1004, "firstName": "dorothy", "lastName": "dorothy", "university": "Universita di Torino", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1005, "firstName": "edward", "lastName": "edward", "university": "TU Munich", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1006, "firstName": "tracy", "lastName": "tracy", "university": "LMU", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1007, "firstName": "christopher", "lastName": "christopher", "university": "Nordakademie", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1008, "firstName": "mark", "lastName": "mark", "university": "Universita di Sassari", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1009, "firstName": "robert", "lastName": "robert", "university": "Zeppelin University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1010, "firstName": "david", "lastName": "david", "university": "Johannes Gutenberg Universitat Mainz", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1011, "firstName": "daniel", "lastName": "daniel", "university": "Maastricht University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1012, "firstName": "bessie", "lastName": "bessie", "university": "Frankfurt am Main", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1013, "firstName": "terence", "lastName": "terence", "university": "Frankfurt School", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1014, "firstName": "chris", "lastName": "chris", "university": "HEC Lausanne", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1015, "firstName": "amber", "lastName": "amber", "university": "Universita di Verona", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1016, "firstName": "irene", "lastName": "irene", "university": "Universita di Genova", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1017, "firstName": "terry", "lastName": "terry", "university": "University of Bayreuth", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1018, "firstName": "lisa", "lastName": "lisa", "university": "ESB", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1019, "firstName": "krista", "lastName": "krista", "university": "Universita di Trento", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1020, "firstName": "roland", "lastName": "roland", "university": "Universita di Bologna", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1021, "firstName": "warren", "lastName": "warren", "university": "WHU", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}] \ No newline at end of file +[{"_id": 1000, "firstName": "javier", "lastName": "javier", "university": "University of Tuebingen", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1001, "firstName": "richard", "lastName": "richard", "university": "Uni Salzburg", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1002, "firstName": "james", "lastName": "james", "university": "Goethe University", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1003, "firstName": "andrea", "lastName": "andrea", "university": "Universita di Milano", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1004, "firstName": "dorothy", "lastName": "dorothy", "university": "Universita di Torino", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1005, "firstName": "edward", "lastName": "edward", "university": "TU Munich", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1006, "firstName": "tracy", "lastName": "tracy", "university": "LMU", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1007, "firstName": "christopher", "lastName": "christopher", "university": "Nordakademie", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1008, "firstName": "mark", "lastName": "mark", "university": "Universita di Sassari", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1009, "firstName": "robert", "lastName": "robert", "university": "Zeppelin University", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1010, "firstName": "david", "lastName": "david", "university": "Johannes Gutenberg Universitat Mainz", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1011, "firstName": "daniel", "lastName": "daniel", "university": "Maastricht University", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1012, "firstName": "bessie", "lastName": "bessie", "university": "Frankfurt am Main", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1013, "firstName": "terence", "lastName": "terence", "university": "Frankfurt School", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1014, "firstName": "chris", "lastName": "chris", "university": "HEC Lausanne", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1015, "firstName": "amber", "lastName": "amber", "university": "Universita di Verona", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1016, "firstName": "irene", "lastName": "irene", "university": "Universita di Genova", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1017, "firstName": "terry", "lastName": "terry", "university": "University of Bayreuth", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1018, "firstName": "lisa", "lastName": "lisa", "university": "ESB", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1019, "firstName": "krista", "lastName": "krista", "university": "Universita di Trento", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1020, "firstName": "roland", "lastName": "roland", "university": "Universita di Bologna", "gender": "F", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}, {"_id": 1021, "firstName": "warren", "lastName": "warren", "university": "WHU", "gender": "M", "checkedIn": "false", "isVolleyPlayer": "false", "isFootballPlayer": "false", "hasPersonalID": "false", "hasStudentID": "false", "foodAllergies": "None", "statusComplete": "false", "hasAcceptedTandC": "false", "createdAt": "", "day1": {"bus1": "false", "bus2": "false", "meal1": "false", "meal2": "false"}, "day2": {"bus1": "false", "bus2": "false", "course": "false", "meal1": "false", "meal2": "false", "hasSkipass": "false", "drink1": "false"}, "day3": {"bus1": "false", "meal1": "false", "meal2": "false"}}] \ No newline at end of file From 2b642dca7a37888cd4f751bce26c830fb6f7b563 Mon Sep 17 00:00:00 2001 From: lberger1993 Date: Mon, 30 Oct 2017 23:52:37 +0100 Subject: [PATCH 10/40] takes old code and restores to functional --- imports/ui/pages/admin/admin.list.html | 1852 +++++++----------------- imports/ui/pages/admin/admin.list.js | 1382 +++++------------- imports/ui/pages/admin/index.js | 2 +- 3 files changed, 889 insertions(+), 2347 deletions(-) diff --git a/imports/ui/pages/admin/admin.list.html b/imports/ui/pages/admin/admin.list.html index bc68307..838b4d2 100644 --- a/imports/ui/pages/admin/admin.list.html +++ b/imports/ui/pages/admin/admin.list.html @@ -1,1366 +1,548 @@ - - - - - - - - - - \ No newline at end of file diff --git a/imports/ui/pages/admin/admin.list.js b/imports/ui/pages/admin/admin.list.js index e2c1ed9..4ae7fb3 100644 --- a/imports/ui/pages/admin/admin.list.js +++ b/imports/ui/pages/admin/admin.list.js @@ -1,455 +1,358 @@ -import "./admin.list.html"; -import Participants from "/imports/collections/participants"; -import IDs from "/imports/collections/ids"; -import jwt from "jsonwebtoken"; -import _ from "lodash"; -import {deepFind} from "/lib/js/utilities"; -import "/node_modules/bootstrap/dist/js/bootstrap.min"; +import './admin.list.html' +import Participants from '/imports/collections/participants' +import jwt from 'jsonwebtoken' +import _ from 'lodash' +import {deepFlatten, deepPick, deepFind} from '/lib/js/utilities' let fields = require('/imports/collections/db_allowed_values.json'); -const participantsIndices = {'statusComplete': 1, 'firstName': 1, 'lastName': 1}; +const participantsIndices = {'firstName': 1, 'lastName': 1}; const usersIndices = {'username': 1, 'profile.firstName': 1, 'profile.lastName': 1, 'roles': 1}; -// AdminListSection -let collSub; - -// Modal -let modalSubIDs, modalSub, modalSubOwner, modalSubUser, modalSubParticipant; let raven = require('raven'); let client = new raven.Client('https://7b01834070004a4a91b5a7ed14c0b411:79de4d1bd9f24d1a93b78b18750afb54@sentry.io/126769', { - environment: Meteor.settings.public.environment, - server_name: 'snowdays', - tags: {section: 'API'}, - autoBreadcrumbs: true + environment: Meteor.settings.public.environment, + server_name: 'snowdays', + tags: {section: 'API'} }); // catches all exceptions on the server -// raven.patchGlobal(client); +raven.patchGlobal(client); client.on('logged', function () { - console.log('Exception handled and sent to Sentry.io'); + console.log('Exception handled and sent to Sentry.io'); }); client.on('error', function (e) { - // The event contains information about the failure: - // e.reason -- raw response body - // e.statusCode -- response status code - // e.response -- raw http response object + // The event contains information about the failure: + // e.reason -- raw response body + // e.statusCode -- response status code + // e.response -- raw http response object - console.log('Couldn\'t connect to Sentry.io'); + console.log('Couldn\'t connect to Sentry.io'); }); Template.AdminListSection.onCreated(function () { - // template instance - let template = Template.instance(); + let template = Template.instance(); - template.flattenedFields = new ReactiveVar(participantsIndices); - template.limit = new ReactiveVar(5); - template.skip = new ReactiveVar(0); - template.count = new ReactiveVar(0); + template.flattenedFields = new ReactiveVar(participantsIndices); - template.collection = new ReactiveVar({ - name: 'participants', - instance: Participants, - flattened: template.flattenedFields.get(), - searchQuery: '', - filters: [] - }); + template.collection = new ReactiveVar({ + name: 'participants', + instance: Participants, + flattened: template.flattenedFields.get(), + searchQuery: '', + filters: [] + }); - this.autorun(() => { - let collection = template.collection.get(); - let limit = template.limit.get(); - let skip = template.skip.get(); - - $.when(setSubscription(collection.name, collection.filters, collection.searchQuery, collection.flattened, limit, skip)).done(function (options) { - collSub = Meteor.subscribe(collection.name + ".all", options, function onStop(error) { - if (error) swal('Error', error, 'error'); - console.log(collection.name + ".all STOP") - }, function onReady() { - console.log(collection.name + ".all START"); - - Meteor.call(collection.name + '.count', options, function (error, count) { - template.count.set(count); - setTimeout(() => { - generateTable(template, options); - }, 300); - }); - }); - }) - }); + // subscribe as soon the template is created + // this.subscribe("users.current"); + this.autorun(() => { + let collection = template.collection.get(); + + $.when(setSubscription(collection.filters, collection.searchQuery, collection.flattened)).done(function (options) { + Meteor.subscribe(collection.name + ".all", options, () => { + console.log(Participants.find().fetch()); + setTimeout(() => { + generateTable(template, options); + }, 300); + }); + }) + }); }); -Template.AdminListSection.onDestroyed(function () { - // stop main subscription - collSub.stop() +Template.AdminListSection.onRendered(function () { + }); Template.AdminListSection.events({ - 'click .sn-open-modal': function (event, template) { - let modalId = $(event.target).attr('data-modal-id'); - let userId = $(event.target).attr('data-user-id'); - Session.set('_id', userId); - Session.set('userModalTab', 'UserModalParticipant'); - $('#' + modalId).modal('show') - }, - - 'click .sn-close-modal': function (event, template) { - let modalId = $(event.target).attr('data-modal-id'); - modalSub.stop(); - modalSubParticipant.stop(); - modalSubOwner.stop(); - modalSubUser.stop(); - Session.set('_id', ''); - $('#' + modalId).modal('hide') - }, - - /** - * Switches between collections - */ - 'change #collection_select': function (event, template) { - let collectionName = event.target.value; - - if (_.isEqual(collectionName, 'users')) { - template.collection.set({ - name: collectionName, - instance: Meteor.users, - flattened: usersIndices, - searchQuery: '', - filters: [] - }); - } else { - template.collection.set({ - name: collectionName, - instance: Participants, - flattened: participantsIndices, - searchQuery: '', - filters: [] - }) - } - - // reset skip and limit - template.skip.set(0); - template.limit.set(5); - - // reset search input - $('#search').val('') - }, + /** + * Switches between collections + */ + 'change #collection_select': function (event, template) { + let collectionName = event.target.value; + + if (_.isEqual(collectionName, 'users')) { + template.collection.set({ + name: collectionName, + instance: Meteor.users, + flattened: usersIndices, + searchQuery: '', + filters: [] + }); + } else { + template.collection.set({ + name: collectionName, + instance: Participants, + flattened: participantsIndices, + searchQuery: '', + filters: [] + }) + } - /** - * When selecting filters for filtering, it regenerates - * related allowed values' select options - */ - 'change #select_field': function (event, template) { - let field = event.target.value; - let collection = template.collection.get(); - let instance = collection.instance; + // reset search input + $('#search').val('') + }, - // TODO: everything should be set and retrieve from the website/db like this - // if (_.isEqual(field, 'university')) { - // retrieve all values from server - // console.log(Meteor.call('collection.raw', instance)); - // } + /** + * When selecting filters for filtering, it regenerates + * related allowed values' select options + */ + 'change #select_field': function (event, template) { + let value = event.target.value; + let collection = template.collection.get().name; - // deep find in object, returns values allowed - let allowed = deepFind(fields[collection.name], field) || deepFind(fields['common'], field) || deepFind(fields['common'], 'boolean'); + // deep find in object, returns values allowed + let allowed = deepFind(fields[collection], value) || deepFind(fields['common'], value) || deepFind(fields['common'], 'boolean'); - createOptionChildren(allowed, 'select_value'); - }, + console.log(value, fields[collection], deepFind(fields[collection], value.toString())); - /** - * Adds filters - */ - 'submit #add_filter_form': function (event, template) { - event.preventDefault(); + createOptionChildren(allowed, 'select_value'); + }, - let newFilter; - let collection = template.collection.get(); - let field = event.target.select_field.value; - let operation = event.target.operation.value; - let value = event.target.select_value.value; - let currentFilters = collection.filters; - let flattened = collection.flattened; - - if (!_.isEqual(field, 'Field') && !_.isEqual(value, 'Value')) { - - // _.zipObject returns an object composed from key-value pairs - if (_.isEqual(operation, 'e')) { - if (_.isEqual(value, 'true')) value = true; - if (_.isEqual(value, 'false')) value = false; - - console.log(value); - newFilter = _.zipObject([field], [{$eq: value}]); - } else if (_.isEqual(operation, 'ne')) { - newFilter = _.zipObject([field], [{$ne: value}]); - } - - currentFilters.push(newFilter); - flattened[field] = 1; - - // reset skip - template.skip.set(0); - - template.collection.set({ - name: collection.name, - instance: collection.instance, - flattened: flattened, - searchQuery: collection.searchQuery, - filters: currentFilters - }); - - // Clear form - document.getElementById('add_filter_form').reset(); - } - }, - - /** - * Deletes filters - */ - 'click #sn-delete-filter': (event, template) => { - // get filter index - let index = $(event.target).attr("name"); - let collection = template.collection.get(); - let currentFilters = collection.filters; + /** + * Adds filters + */ + 'submit #add_filter_form': function (event, template) { + event.preventDefault(); - // remove from array at index - _.pullAt(currentFilters, [index]); + let newFilter; + let collection = template.collection.get(); + let field = event.target.select_field.value; + let operation = event.target.operation.value; + let value = event.target.select_value.value; + let currentFilters = collection.filters; - // reset skip - template.skip.set(0); + console.log(field, operation, value); - // update reactive variable - template.collection.set({ - name: collection.name, - instance: collection.instance, - flattened: collection.flattened, - searchQuery: collection.searchQuery, - filters: currentFilters - }); - }, + // _.zipObject returns an object composed from key-value pairs + if (_.isEqual(operation, 'e')) + newFilter = _.zipObject([field], [{$eq: value}]); + else + newFilter = _.zipObject([field], [{$ne: value}]); - /** - * Handles search - */ - 'keyup [name="search"]': (event, template) => { - let value = event.target.value.trim(); - let collection = template.collection.get(); + currentFilters.push(newFilter); - // keyCode 13 = 'enter' - if (event.keyCode === 13) { - template.collection.set({ - name: collection.name, - instance: collection.instance, - flattened: collection.flattened, - searchQuery: value, - filters: collection.filters - }); - } - }, + template.collection.set({ + name: collection.name, + instance: collection.instance, + flattened: collection.flattened, + searchQuery: collection.searchQuery, + filters: currentFilters + }); + }, + + /** + * Deletes filters + */ + 'click #sn-delete-filter': (event, template) => { + // get filter index + let index = $(event.target).parent().attr("value"); + let collection = template.collection.get(); + let currentFilters = collection.filters; + + // remove from array at index + _.pullAt(currentFilters, [index]); + + // update reactive variable + template.collection.set({ + name: collection.name, + instance: collection.instance, + flattened: collection.flattened, + searchQuery: collection.searchQuery, + filters: currentFilters + }); + }, + + /** + * Handles search + */ + 'keyup [name="search"]': (event, template) => { + let value = event.target.value.trim(); + let collection = template.collection.get(); + + // keyCode 13 = 'enter' + if (event.keyCode === 13) { + template.collection.set({ + name: collection.name, + instance: collection.instance, + flattened: collection.flattened, + searchQuery: value, + filters: collection.filters + }); + } + }, - /** - * Updates fields in table - */ - 'submit #fields_form': function (event, template) { - event.preventDefault(); - let collection = template.collection.get(); + /** + * Updates fields in table + */ + 'submit #fields_form': function (event, template) { + event.preventDefault(); + let collection = template.collection.get(); - let currentFlattenedFields = collection.flattened; + let currentFlattenedFields = collection.flattened; - // replace each _ in children inputs with . - $(event.target).find('input').each(function () { - let replaced = this.id.replace(/_/g, '.'); + // replace each _ in children inputs with . + $(event.target).find('input').each(function () { + let replaced = this.id.replace(/_/g, '.'); - // set value = 1 - if (this.checked) currentFlattenedFields[replaced] = 1; + // set value = 1 + if (this.checked) currentFlattenedFields[replaced] = 1; - // or delete property - else delete currentFlattenedFields[replaced]; - }); + // or delete property + else delete currentFlattenedFields[replaced]; + }); - // update reactive variable - template.collection.set({ - name: collection.name, - instance: collection.instance, - flattened: currentFlattenedFields, - searchQuery: collection.searchQuery, - filters: collection.filters - }); - }, + // update reactive variable + template.collection.set({ + name: collection.name, + instance: collection.instance, + flattened: currentFlattenedFields, + searchQuery: collection.searchQuery, + filters: collection.filters + }); + }, - 'click #download_csv': function (event, template) { - let collection = template.collection.get(); - let filename = ''; - let download = ''; + 'click #download_csv': function (event, template) { + let collection = template.collection.get(); + let filename = ''; + let download = ''; - swal.setDefaults({ - confirmButtonText: 'Next →', - showCancelButton: true, - allowOutsideClick: false, - progressSteps: ['1', '2'] - }); + swal.setDefaults({ + confirmButtonText: 'Next →', + showCancelButton: true, + allowOutsideClick: false, + progressSteps: ['1', '2'] + }); - let steps = [ - { - title: 'Download ...', - input: 'radio', - inputOptions: { - 'all': ' All current collection', - 'results': ' Results shown only' - }, - confirmButtonColor: '#008eff', - inputValidator: function (result) { - return new Promise(function (resolve, reject) { - if (result) { - download = result; - resolve() - } else { - reject('You need to select something!') + let steps = [ + { + title: 'Download ...', + input: 'radio', + inputOptions: { + 'all': ' All current collection', + 'results': ' Results shown only' + }, + confirmButtonColor: '#008eff', + inputValidator: function (result) { + return new Promise(function (resolve, reject) { + if (result) { + download = result; + resolve() + } else { + reject('You need to select something!') + } + }) + } + }, + { + title: 'Please give the file a name', + input: 'text', + showCancelButton: true, + confirmButtonColor: '#008eff', + confirmButtonText: 'Download', + inputValidator: function (result) { + return new Promise(function (resolve, reject) { + if (result) { + filename = result; + resolve() + } else { + reject('You need to write something!') + } + }) + }, + preConfirm: function () { + return new Promise(function (resolve) { + $.when(setSubscription(collection.filters, collection.searchQuery, collection.flattened)).done(function (options) { + options['filename'] = filename; + options['download'] = download; + let encoded = jwt.sign(options, 'secret', {expiresIn: 60}); + Meteor.setTimeout(function () { + Router.go('/csv/' + encoded); + }, 300) + }) + }) + } } - }) - } - }, - { - title: 'Please give the file a name', - input: 'text', - showCancelButton: true, - confirmButtonColor: '#008eff', - confirmButtonText: 'Download', - inputValidator: function (result) { - return new Promise(function (resolve, reject) { - if (result) { - filename = result; - resolve() - } else { - reject('You need to write something!') - } - }) - }, - preConfirm: function () { - return new Promise(function (resolve) { - swal.resetDefaults(); - // limit, skip = whatever since is not considered in the server route - $.when(setSubscription(collection.name, collection.filters, collection.searchQuery, collection.flattened, 0, 0)).done(function (options) { - options['collection'] = collection.name; - options['filename'] = filename; - options['download'] = download; - let encoded = jwt.sign(options, 'secret', {expiresIn: 60}); - Router.go('/csv/' + encoded); + ]; + + swal.queue(steps).then(function () { + console.log('steps'); + swal.resetDefaults() + }) + }, + + 'click #sn-delete-entry': function (event, template) { + let _id = $(event.target).parent().attr("name"); + let collection = template.collection.get(); + + swal({ + title: 'Are you sure?', + text: "You won't be able to revert this!", + type: 'warning', + showCancelButton: true, + confirmButtonColor: '#008eff', + cancelButtonColor: '#e74c3c', + confirmButtonText: 'Yes, delete it!' + }).then(function () { + Meteor.call(collection.name + '.remove', _id, function (error, result) { + if (error) swal('Error', error.message, 'error'); + else if (_.isEqual(0, result)) swal('Warning', 'Participant not removed!', 'warning'); + else { + generateTable(template) + } }) - }) - } - } - ]; + }); + } - swal.queue(steps).then(function () { - console.log('steps'); - // TODO: exit dialog before downloading - }) - }, +}); - 'click #sn-delete-entry': function (event, template) { - let _id = $(event.target).attr("name"); - let collection = template.collection.get(); - let limit = template.limit.get(); - let skip = template.skip.get(); - - swal({ - title: 'Are you sure?', - text: "You won't be able to revert this!", - type: 'warning', - showCancelButton: true, - confirmButtonColor: '#008eff', - cancelButtonColor: '#e74c3c', - confirmButtonText: 'Yes, delete it!' - }).then(function () { - Meteor.call(collection.name + '.remove', _id, function (error, result) { - if (error) swal('Error', error.message, 'error'); - else if (_.isEqual(0, result)) swal('Warning', 'Object in ' + collection.name + ' not removed!', 'warning'); - else { - $.when(setSubscription(collection.name, collection.filters, collection.searchQuery, collection.flattened, limit, skip)).done(function (options) { - generateTable(template, options); - }) +Template.AdminListSection.helpers({ + count: function (selector) { + let collection = Template.instance().collection.get(); + let options = setSubscription(collection.filters, collection.searchQuery, collection.flattened); + + switch (selector) { + case 'results': + let query = collection.instance.find(options.query, options.query).count(); + return query + (query > 1 ? ' participants' : ' participant'); + break; + case 'filters': + return _.size(collection.filters) || '0'; + break; + case 'fields': + return _.size(collection.flattened) || '0'; + break; + default: + return '@' } - }) - }); - }, - - 'change #limit_field': function (event, template) { - let value = event.target.value; - - // update reactive variable - template.limit.set(value); + }, - // reset skip - template.skip.set(0) - }, - - 'click .pagination_item': function (event, template) { - let value = event.target.name; - let limit = template.limit.get(); + listIsEmpty: function () { + let collection = Template.instance().collection.get(); + $.when(setSubscription(collection.filters, collection.searchQuery, collection.flattened)).done(function (options) { + return _.isEqual(collection.instance.find(options.query, {fields: options.fields}).count(), 0) + }); + }, - template.skip.set((value - 1) * limit) - }, + filtersList: function () { + return Template.instance().collection.get().filters + }, -}); + query: function () { + return Template.instance().collection.get().searchQuery || 'Search first name and last name'; + }, -Template.AdminListSection.helpers({ - countText: function (selector) { - let collection = Template.instance().collection.get(); - let count = Template.instance().count.get(); - - switch (selector) { - case 'results': - return count + (count == 1 ? ' match' : ' matches'); - break; - case 'filters': - return _.size(collection.filters) || '0'; - break; - case 'fields': - return _.size(collection.flattened) || '0'; - break; - default: - return '@' - } - }, - - count: function (selector) { - let collection = Template.instance().collection.get(); - let count = Template.instance().count.get(); - - switch (selector) { - case 'results': - return count; - break; - case 'filters': - return _.size(collection.filters) || 0; - break; - case 'fields': - return _.size(collection.flattened) || 0; - break; - default: - return '@' + isCollection: function (collection) { + return _.isEqual(collection, Template.instance().collection.get().name) } - }, - - filtersList: function () { - return Template.instance().collection.get().filters - }, - - query: function () { - return Template.instance().collection.get().searchQuery || 'Search first and last name'; - }, - - isCollection: function (collection) { - return _.isEqual(collection, Template.instance().collection.get().name) - } }); @@ -461,660 +364,117 @@ Template.AdminListSection.helpers({ * @param {Object} selectName */ function createOptionChildren(values, selectName) { - let select = document.getElementById(selectName); - - // empty select input - $(select).empty(); - - // then append values - if (!_.isEmpty(values)) { - _.forEach(values, function (value, key) { - $(select).append($('