From abf6a6c1420443a25383aca0db1dd01fa2444c3a Mon Sep 17 00:00:00 2001 From: Juan Ferrer Toribio Date: Tue, 31 Jan 2017 14:13:06 +0100 Subject: [PATCH] Cargador modulos: modulo ng, validaciones, traducciones --- client/auth/index.js | 1 + client/auth/package.json | 10 + client/auth/src/auth.js | 4 + client/auth/src/config.js | 10 + client/auth/src/login/locale/en.json | 6 + client/auth/src/login/locale/es.json | 6 + client/auth/src/login/login.html | 19 + client/auth/src/login/login.js | 57 +++ client/auth/src/login/login.scss | 47 +++ client/auth/src/login/logo.svg | 119 ++++++ client/auth/src/module.js | 4 + client/client/index.js | 1 + client/client/package.json | 10 + client/client/routes.js | 75 ++++ .../src/addresses-data-create/index.html | 39 ++ .../client/src/addresses-data-create/index.js | 25 ++ .../client/src/addresses-data-edit/index.html | 40 ++ .../client/src/addresses-data-edit/index.js | 37 ++ client/client/src/addresses/index.html | 40 ++ client/client/src/addresses/index.js | 63 +++ client/client/src/basic-data/index.html | 32 ++ client/client/src/basic-data/index.js | 55 +++ client/client/src/card/card.html | 9 + client/client/src/card/card.js | 29 ++ client/client/src/card/style.css | 3 + client/client/src/change-password/index.html | 9 + client/client/src/change-password/index.js | 36 ++ client/client/src/client.js | 34 ++ client/client/src/confirm/index.html | 14 + client/client/src/confirm/index.js | 30 ++ client/client/src/confirm/style.css | 5 + client/client/src/create/index.html | 21 + client/client/src/create/index.js | 30 ++ client/client/src/descriptor/descriptor.html | 15 + client/client/src/descriptor/descriptor.js | 21 + client/client/src/descriptor/style.css | 3 + client/client/src/fiscal-data/index.html | 69 ++++ client/client/src/fiscal-data/index.js | 55 +++ client/client/src/index/index.html | 20 + client/client/src/index/index.js | 53 +++ client/client/src/index/item-client.html | 7 + client/client/src/index/item-client.js | 12 + client/client/src/index/style.css | 16 + client/client/src/locale/en.json | 1 + client/client/src/locale/es.json | 1 + client/client/src/module.js | 5 + client/client/src/new-note/index.html | 12 + client/client/src/new-note/index.js | 54 +++ client/client/src/notes/index.html | 17 + client/client/src/notes/index.js | 34 ++ client/client/src/notes/style.css | 3 + .../client/src/search-panel/search-panel.html | 26 ++ .../client/src/search-panel/search-panel.js | 10 + client/client/src/web-access/index.html | 14 + client/client/src/web-access/index.js | 65 ++++ client/core/index.js | 2 + client/core/package.json | 10 + client/core/src/.gitignore | 1 + client/core/src/autocomplete/index.js | 368 ++++++++++++++++++ client/core/src/autocomplete/index.mdl.html | 14 + client/core/src/autocomplete/index.mdl.js | 11 + client/core/src/autocomplete/style.scss | 25 ++ client/core/src/button/button.bt.html | 2 + client/core/src/button/button.bt.js | 24 ++ client/core/src/button/button.js | 18 + client/core/src/button/button.mdl.html | 3 + client/core/src/button/button.mdl.js | 21 + client/core/src/card/card.js | 21 + client/core/src/card/card.mdl.html | 1 + client/core/src/card/card.mdl.js | 16 + client/core/src/card/style.css | 3 + client/core/src/check/check.bt.html | 2 + client/core/src/check/check.bt.js | 1 + client/core/src/check/check.js | 28 ++ client/core/src/check/check.mdl.html | 4 + client/core/src/check/check.mdl.js | 21 + client/core/src/combo/combo.js | 28 ++ client/core/src/combo/combo.mdl.html | 5 + client/core/src/combo/combo.mdl.js | 14 + client/core/src/config.js | 21 + client/core/src/constants.js | 10 + client/core/src/copy.js | 5 + client/core/src/core.js | 64 +++ client/core/src/date-picker/date-picker.js | 27 ++ .../core/src/date-picker/date-picker.mdl.html | 4 + .../core/src/date-picker/date-picker.mdl.js | 14 + client/core/src/dialog/index.js | 75 ++++ client/core/src/dialog/style.css | 22 ++ client/core/src/equals.js | 5 + client/core/src/floatbutton/floatbutton.js | 19 + .../core/src/floatbutton/floatbutton.mdl.html | 3 + .../core/src/floatbutton/floatbutton.mdl.js | 20 + client/core/src/focus.js | 13 + client/core/src/icon-button/icon-button.js | 17 + .../core/src/icon-button/icon-button.mdl.html | 3 + .../core/src/icon-button/icon-button.mdl.js | 15 + client/core/src/icon/index.js | 19 + client/core/src/icon/index.mdl.html | 1 + client/core/src/icon/index.mdl.js | 12 + client/core/src/icon/style.css | 7 + client/core/src/inputAttrsNormalizer.js | 39 ++ client/core/src/interpolate.js | 202 ++++++++++ client/core/src/label/label.bt.html | 2 + client/core/src/label/label.bt.js | 1 + client/core/src/label/label.js | 18 + client/core/src/label/label.mdl.html | 1 + client/core/src/label/label.mdl.js | 20 + client/core/src/locale/en.json | 4 + client/core/src/locale/es.json | 4 + client/core/src/mdl-override.css | 41 ++ client/core/src/modified.js | 27 ++ client/core/src/module.js | 6 + client/core/src/moduleLoader.js | 48 +++ client/core/src/password/password.js | 27 ++ client/core/src/password/password.mdl.html | 4 + client/core/src/password/password.mdl.js | 17 + client/core/src/popover/index.js | 96 +++++ client/core/src/popover/style.css | 9 + client/core/src/radio/radio.bt.html | 2 + client/core/src/radio/radio.bt.js | 1 + client/core/src/radio/radio.js | 18 + client/core/src/radio/radio.mdl.html | 2 + client/core/src/radio/radio.mdl.js | 21 + client/core/src/resolveDefaultComponents.js | 39 ++ client/core/src/routesLoader.js | 27 ++ client/core/src/snackbar/snackbar.js | 28 ++ client/core/src/snackbar/snackbar.mdl.html | 4 + client/core/src/snackbar/snackbar.mdl.js | 15 + client/core/src/spinner/spinner.js | 41 ++ client/core/src/spinner/spinner.mdl.html | 5 + client/core/src/spinner/spinner.mdl.js | 9 + client/core/src/splitingRegister.js | 29 ++ client/core/src/submit/submit.js | 18 + client/core/src/submit/submit.mdl.html | 2 + client/core/src/submit/submit.mdl.js | 17 + client/core/src/subtitle/index.html | 2 + client/core/src/subtitle/index.js | 7 + client/core/src/switch/switch.js | 29 ++ client/core/src/switch/switch.mdl.html | 4 + client/core/src/switch/switch.mdl.js | 21 + client/core/src/textarea/textarea.js | 27 ++ client/core/src/textarea/textarea.mdl.html | 4 + client/core/src/textarea/textarea.mdl.js | 23 ++ client/core/src/textfield/textfield.bt.html | 2 + client/core/src/textfield/textfield.bt.js | 1 + client/core/src/textfield/textfield.js | 28 ++ client/core/src/textfield/textfield.mdl.html | 4 + client/core/src/textfield/textfield.mdl.js | 24 ++ client/core/src/title/index.html | 2 + client/core/src/title/index.js | 7 + client/core/src/util.js | 47 +++ client/core/src/validation.js | 83 ++++ client/salix/index.js | 1 + client/salix/package.json | 10 + client/salix/src/app.js | 11 + client/salix/src/bootstrap.js | 17 + client/salix/src/components.js | 7 + client/salix/src/components/app/app.html | 8 + client/salix/src/components/app/app.js | 58 +++ client/salix/src/components/app/style.css | 18 + .../src/components/left-menu/actions.html | 5 + .../salix/src/components/left-menu/actions.js | 12 + .../src/components/left-menu/left-menu.html | 5 + .../src/components/left-menu/left-menu.js | 13 + .../src/components/left-menu/menu-item.html | 7 + .../src/components/left-menu/menu-item.js | 12 + .../salix/src/components/left-menu/style.css | 4 + .../src/components/main-menu/main-menu.html | 15 + .../src/components/main-menu/main-menu.js | 24 ++ .../salix/src/components/main-menu/style.scss | 13 + .../src/components/searchbar/searchbar.html | 12 + .../src/components/searchbar/searchbar.js | 34 ++ .../salix/src/components/searchbar/style.css | 0 .../salix/src/components/topbar/topbar.html | 2 + client/salix/src/components/topbar/topbar.js | 8 + client/salix/src/config.js | 13 + client/salix/src/configroutes.js | 47 +++ client/salix/src/locale/en.json | 7 + client/salix/src/locale/es.json | 7 + client/salix/src/module.js | 6 + client/salix/src/package.json | 10 + client/salix/src/run.js | 14 + client/salix/src/styles/background.scss | 36 ++ client/salix/src/styles/border.scss | 45 +++ client/salix/src/styles/colors.scss | 7 + client/salix/src/styles/display.css | 52 +++ client/salix/src/styles/font-family.css | 21 + client/salix/src/styles/font-style.scss | 12 + .../salix/src/styles/fonts/Raleway-Bold.ttf | Bin 0 -> 179244 bytes .../salix/src/styles/fonts/Raleway-Italic.ttf | Bin 0 -> 145920 bytes .../src/styles/fonts/Raleway-Regular.ttf | Bin 0 -> 178520 bytes .../src/styles/fonts/Raleway-SemiBold.ttf | Bin 0 -> 180492 bytes .../salix/src/styles/fonts/Raleway-Thin.ttf | Bin 0 -> 177572 bytes client/salix/src/styles/index.js | 9 + client/salix/src/styles/layout.css | 110 ++++++ client/salix/src/styles/margin.scss | 89 +++++ client/salix/src/styles/misc.scss | 29 ++ client/salix/src/styles/padding.scss | 89 +++++ client/salix/src/styles/title.css | 30 ++ client/vendor/index.js | 1 + client/vendor/package.json | 10 + client/vendor/src/angular-paging.js | 5 + client/vendor/src/angular-translate.js | 6 + client/vendor/src/angular.js | 8 + client/vendor/src/loopback-validations.js | 5 + client/vendor/src/material-design-lite.js | 4 + client/vendor/src/oc-lazy-load.js | 7 + client/vendor/src/ui-router.js | 7 + client/vendor/src/util.js | 11 + client/vendor/src/vendor.js | 7 + db.json | 4 +- dev.cmd | 2 +- dev.sh | 2 +- forever.json | 4 +- gulpfile.js | 154 ++++++++ package.json | 59 +++ services/account/client/index.ejs | 14 - services/{account => auth}/.editorconfig | 0 services/{account => auth}/.eslintignore | 0 services/{account => auth}/.eslintrc | 0 services/{account => auth}/.gitignore | 0 services/{account => auth}/.yo-rc.json | 0 services/{account => auth}/Dockerfile | 0 services/auth/client/index.ejs | 19 + services/{account => auth}/package.json | 6 +- .../{account => auth}/server/application.json | 0 .../server/boot/createmodel.js | 0 .../{account => auth}/server/boot/root.js | 0 .../{account => auth}/server/boot/routes.js | 0 .../server/component-config.json | 0 services/{account => auth}/server/config.json | 0 .../{account => auth}/server/datasources.json | 0 .../server/middleware.development.json | 0 .../{account => auth}/server/middleware.json | 0 .../server/model-config.json | 0 services/{account => auth}/server/server.js | 0 services/client/common/models/Address.json | 42 +- services/client/common/models/Client.js | 22 +- services/client/common/models/Client.json | 30 +- .../common/models/ClientObservation.json | 22 +- services/client/package.json | 4 +- services/client/server/boot/authentication.js | 2 +- services/client/server/boot/root.js | 6 +- services/client/server/boot/validations.js | 52 +++ services/nginx/conf-dev.conf | 2 +- services/nginx/conf-prod.conf | 4 +- services/salix/client/index.ejs | 38 +- services/salix/server/boot/routes.js | 16 +- services/salix/server/server.js | 6 +- spliting/import.tpl.js | 1 + spliting/modules.json | 6 + spliting/require.tpl.js | 11 + webpack.config.js | 68 ++++ 253 files changed, 5078 insertions(+), 129 deletions(-) create mode 100644 client/auth/index.js create mode 100644 client/auth/package.json create mode 100644 client/auth/src/auth.js create mode 100644 client/auth/src/config.js create mode 100644 client/auth/src/login/locale/en.json create mode 100644 client/auth/src/login/locale/es.json create mode 100755 client/auth/src/login/login.html create mode 100644 client/auth/src/login/login.js create mode 100644 client/auth/src/login/login.scss create mode 100644 client/auth/src/login/logo.svg create mode 100644 client/auth/src/module.js create mode 100644 client/client/index.js create mode 100644 client/client/package.json create mode 100644 client/client/routes.js create mode 100644 client/client/src/addresses-data-create/index.html create mode 100644 client/client/src/addresses-data-create/index.js create mode 100644 client/client/src/addresses-data-edit/index.html create mode 100644 client/client/src/addresses-data-edit/index.js create mode 100644 client/client/src/addresses/index.html create mode 100644 client/client/src/addresses/index.js create mode 100644 client/client/src/basic-data/index.html create mode 100644 client/client/src/basic-data/index.js create mode 100644 client/client/src/card/card.html create mode 100644 client/client/src/card/card.js create mode 100644 client/client/src/card/style.css create mode 100644 client/client/src/change-password/index.html create mode 100644 client/client/src/change-password/index.js create mode 100644 client/client/src/client.js create mode 100644 client/client/src/confirm/index.html create mode 100644 client/client/src/confirm/index.js create mode 100644 client/client/src/confirm/style.css create mode 100644 client/client/src/create/index.html create mode 100644 client/client/src/create/index.js create mode 100644 client/client/src/descriptor/descriptor.html create mode 100644 client/client/src/descriptor/descriptor.js create mode 100644 client/client/src/descriptor/style.css create mode 100644 client/client/src/fiscal-data/index.html create mode 100644 client/client/src/fiscal-data/index.js create mode 100644 client/client/src/index/index.html create mode 100644 client/client/src/index/index.js create mode 100644 client/client/src/index/item-client.html create mode 100644 client/client/src/index/item-client.js create mode 100644 client/client/src/index/style.css create mode 100644 client/client/src/locale/en.json create mode 100644 client/client/src/locale/es.json create mode 100644 client/client/src/module.js create mode 100644 client/client/src/new-note/index.html create mode 100644 client/client/src/new-note/index.js create mode 100644 client/client/src/notes/index.html create mode 100644 client/client/src/notes/index.js create mode 100644 client/client/src/notes/style.css create mode 100644 client/client/src/search-panel/search-panel.html create mode 100644 client/client/src/search-panel/search-panel.js create mode 100644 client/client/src/web-access/index.html create mode 100644 client/client/src/web-access/index.js create mode 100644 client/core/index.js create mode 100644 client/core/package.json create mode 100644 client/core/src/.gitignore create mode 100644 client/core/src/autocomplete/index.js create mode 100644 client/core/src/autocomplete/index.mdl.html create mode 100644 client/core/src/autocomplete/index.mdl.js create mode 100644 client/core/src/autocomplete/style.scss create mode 100644 client/core/src/button/button.bt.html create mode 100644 client/core/src/button/button.bt.js create mode 100644 client/core/src/button/button.js create mode 100644 client/core/src/button/button.mdl.html create mode 100644 client/core/src/button/button.mdl.js create mode 100644 client/core/src/card/card.js create mode 100644 client/core/src/card/card.mdl.html create mode 100644 client/core/src/card/card.mdl.js create mode 100644 client/core/src/card/style.css create mode 100644 client/core/src/check/check.bt.html create mode 100644 client/core/src/check/check.bt.js create mode 100644 client/core/src/check/check.js create mode 100644 client/core/src/check/check.mdl.html create mode 100644 client/core/src/check/check.mdl.js create mode 100644 client/core/src/combo/combo.js create mode 100644 client/core/src/combo/combo.mdl.html create mode 100644 client/core/src/combo/combo.mdl.js create mode 100644 client/core/src/config.js create mode 100644 client/core/src/constants.js create mode 100644 client/core/src/copy.js create mode 100644 client/core/src/core.js create mode 100644 client/core/src/date-picker/date-picker.js create mode 100644 client/core/src/date-picker/date-picker.mdl.html create mode 100644 client/core/src/date-picker/date-picker.mdl.js create mode 100644 client/core/src/dialog/index.js create mode 100644 client/core/src/dialog/style.css create mode 100644 client/core/src/equals.js create mode 100644 client/core/src/floatbutton/floatbutton.js create mode 100644 client/core/src/floatbutton/floatbutton.mdl.html create mode 100644 client/core/src/floatbutton/floatbutton.mdl.js create mode 100644 client/core/src/focus.js create mode 100644 client/core/src/icon-button/icon-button.js create mode 100644 client/core/src/icon-button/icon-button.mdl.html create mode 100644 client/core/src/icon-button/icon-button.mdl.js create mode 100644 client/core/src/icon/index.js create mode 100644 client/core/src/icon/index.mdl.html create mode 100644 client/core/src/icon/index.mdl.js create mode 100644 client/core/src/icon/style.css create mode 100644 client/core/src/inputAttrsNormalizer.js create mode 100644 client/core/src/interpolate.js create mode 100644 client/core/src/label/label.bt.html create mode 100644 client/core/src/label/label.bt.js create mode 100644 client/core/src/label/label.js create mode 100644 client/core/src/label/label.mdl.html create mode 100644 client/core/src/label/label.mdl.js create mode 100644 client/core/src/locale/en.json create mode 100644 client/core/src/locale/es.json create mode 100644 client/core/src/mdl-override.css create mode 100644 client/core/src/modified.js create mode 100644 client/core/src/module.js create mode 100644 client/core/src/moduleLoader.js create mode 100644 client/core/src/password/password.js create mode 100644 client/core/src/password/password.mdl.html create mode 100644 client/core/src/password/password.mdl.js create mode 100644 client/core/src/popover/index.js create mode 100644 client/core/src/popover/style.css create mode 100644 client/core/src/radio/radio.bt.html create mode 100644 client/core/src/radio/radio.bt.js create mode 100644 client/core/src/radio/radio.js create mode 100644 client/core/src/radio/radio.mdl.html create mode 100644 client/core/src/radio/radio.mdl.js create mode 100644 client/core/src/resolveDefaultComponents.js create mode 100644 client/core/src/routesLoader.js create mode 100644 client/core/src/snackbar/snackbar.js create mode 100644 client/core/src/snackbar/snackbar.mdl.html create mode 100644 client/core/src/snackbar/snackbar.mdl.js create mode 100644 client/core/src/spinner/spinner.js create mode 100644 client/core/src/spinner/spinner.mdl.html create mode 100644 client/core/src/spinner/spinner.mdl.js create mode 100644 client/core/src/splitingRegister.js create mode 100644 client/core/src/submit/submit.js create mode 100644 client/core/src/submit/submit.mdl.html create mode 100644 client/core/src/submit/submit.mdl.js create mode 100644 client/core/src/subtitle/index.html create mode 100644 client/core/src/subtitle/index.js create mode 100644 client/core/src/switch/switch.js create mode 100644 client/core/src/switch/switch.mdl.html create mode 100644 client/core/src/switch/switch.mdl.js create mode 100644 client/core/src/textarea/textarea.js create mode 100644 client/core/src/textarea/textarea.mdl.html create mode 100644 client/core/src/textarea/textarea.mdl.js create mode 100644 client/core/src/textfield/textfield.bt.html create mode 100644 client/core/src/textfield/textfield.bt.js create mode 100644 client/core/src/textfield/textfield.js create mode 100644 client/core/src/textfield/textfield.mdl.html create mode 100644 client/core/src/textfield/textfield.mdl.js create mode 100644 client/core/src/title/index.html create mode 100644 client/core/src/title/index.js create mode 100644 client/core/src/util.js create mode 100644 client/core/src/validation.js create mode 100644 client/salix/index.js create mode 100644 client/salix/package.json create mode 100644 client/salix/src/app.js create mode 100644 client/salix/src/bootstrap.js create mode 100644 client/salix/src/components.js create mode 100644 client/salix/src/components/app/app.html create mode 100644 client/salix/src/components/app/app.js create mode 100644 client/salix/src/components/app/style.css create mode 100644 client/salix/src/components/left-menu/actions.html create mode 100644 client/salix/src/components/left-menu/actions.js create mode 100644 client/salix/src/components/left-menu/left-menu.html create mode 100644 client/salix/src/components/left-menu/left-menu.js create mode 100644 client/salix/src/components/left-menu/menu-item.html create mode 100644 client/salix/src/components/left-menu/menu-item.js create mode 100644 client/salix/src/components/left-menu/style.css create mode 100644 client/salix/src/components/main-menu/main-menu.html create mode 100644 client/salix/src/components/main-menu/main-menu.js create mode 100644 client/salix/src/components/main-menu/style.scss create mode 100644 client/salix/src/components/searchbar/searchbar.html create mode 100644 client/salix/src/components/searchbar/searchbar.js create mode 100644 client/salix/src/components/searchbar/style.css create mode 100644 client/salix/src/components/topbar/topbar.html create mode 100644 client/salix/src/components/topbar/topbar.js create mode 100644 client/salix/src/config.js create mode 100644 client/salix/src/configroutes.js create mode 100644 client/salix/src/locale/en.json create mode 100644 client/salix/src/locale/es.json create mode 100644 client/salix/src/module.js create mode 100644 client/salix/src/package.json create mode 100644 client/salix/src/run.js create mode 100644 client/salix/src/styles/background.scss create mode 100644 client/salix/src/styles/border.scss create mode 100644 client/salix/src/styles/colors.scss create mode 100644 client/salix/src/styles/display.css create mode 100644 client/salix/src/styles/font-family.css create mode 100644 client/salix/src/styles/font-style.scss create mode 100755 client/salix/src/styles/fonts/Raleway-Bold.ttf create mode 100755 client/salix/src/styles/fonts/Raleway-Italic.ttf create mode 100755 client/salix/src/styles/fonts/Raleway-Regular.ttf create mode 100755 client/salix/src/styles/fonts/Raleway-SemiBold.ttf create mode 100755 client/salix/src/styles/fonts/Raleway-Thin.ttf create mode 100644 client/salix/src/styles/index.js create mode 100644 client/salix/src/styles/layout.css create mode 100644 client/salix/src/styles/margin.scss create mode 100644 client/salix/src/styles/misc.scss create mode 100644 client/salix/src/styles/padding.scss create mode 100644 client/salix/src/styles/title.css create mode 100644 client/vendor/index.js create mode 100644 client/vendor/package.json create mode 100644 client/vendor/src/angular-paging.js create mode 100644 client/vendor/src/angular-translate.js create mode 100644 client/vendor/src/angular.js create mode 100644 client/vendor/src/loopback-validations.js create mode 100644 client/vendor/src/material-design-lite.js create mode 100644 client/vendor/src/oc-lazy-load.js create mode 100644 client/vendor/src/ui-router.js create mode 100644 client/vendor/src/util.js create mode 100644 client/vendor/src/vendor.js create mode 100644 gulpfile.js create mode 100644 package.json delete mode 100644 services/account/client/index.ejs rename services/{account => auth}/.editorconfig (100%) rename services/{account => auth}/.eslintignore (100%) rename services/{account => auth}/.eslintrc (100%) rename services/{account => auth}/.gitignore (100%) rename services/{account => auth}/.yo-rc.json (100%) rename services/{account => auth}/Dockerfile (100%) create mode 100644 services/auth/client/index.ejs rename services/{account => auth}/package.json (88%) rename services/{account => auth}/server/application.json (100%) rename services/{account => auth}/server/boot/createmodel.js (100%) rename services/{account => auth}/server/boot/root.js (100%) rename services/{account => auth}/server/boot/routes.js (100%) rename services/{account => auth}/server/component-config.json (100%) rename services/{account => auth}/server/config.json (100%) rename services/{account => auth}/server/datasources.json (100%) rename services/{account => auth}/server/middleware.development.json (100%) rename services/{account => auth}/server/middleware.json (100%) rename services/{account => auth}/server/model-config.json (100%) rename services/{account => auth}/server/server.js (100%) create mode 100644 services/client/server/boot/validations.js create mode 100644 spliting/import.tpl.js create mode 100644 spliting/modules.json create mode 100644 spliting/require.tpl.js create mode 100644 webpack.config.js diff --git a/client/auth/index.js b/client/auth/index.js new file mode 100644 index 000000000..57dd5f4ef --- /dev/null +++ b/client/auth/index.js @@ -0,0 +1 @@ +export * from './src/auth' diff --git a/client/auth/package.json b/client/auth/package.json new file mode 100644 index 000000000..a9e6aac38 --- /dev/null +++ b/client/auth/package.json @@ -0,0 +1,10 @@ +{ + "name": "@salix/auth", + "version": "0.0.0", + "description": "", + "main": "index.js", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + } +} diff --git a/client/auth/src/auth.js b/client/auth/src/auth.js new file mode 100644 index 000000000..b6ea0475f --- /dev/null +++ b/client/auth/src/auth.js @@ -0,0 +1,4 @@ +export * from './module'; +import './config'; + +export {component as Login} from './login/login' diff --git a/client/auth/src/config.js b/client/auth/src/config.js new file mode 100644 index 000000000..8d632f863 --- /dev/null +++ b/client/auth/src/config.js @@ -0,0 +1,10 @@ +import {module} from './module'; + +config.$inject = ['$translatePartialLoaderProvider', '$httpProvider']; +export function config($translatePartialLoaderProvider, $httpProvider) { + $translatePartialLoaderProvider.addPart('login'); + + $httpProvider.defaults.useXDomain = true; + delete $httpProvider.defaults.headers.common['X-Requested-With']; +} +module.config(config); diff --git a/client/auth/src/login/locale/en.json b/client/auth/src/login/locale/en.json new file mode 100644 index 000000000..13b9103d7 --- /dev/null +++ b/client/auth/src/login/locale/en.json @@ -0,0 +1,6 @@ +{ + "User": "User", + "Password": "Password", + "Do not close session": "Do not close session", + "Enter": "Enter" +} \ No newline at end of file diff --git a/client/auth/src/login/locale/es.json b/client/auth/src/login/locale/es.json new file mode 100644 index 000000000..85c5c654d --- /dev/null +++ b/client/auth/src/login/locale/es.json @@ -0,0 +1,6 @@ +{ + "User": "Usuario", + "Password": "Contraseña", + "Do not close session": "No cerrar sesión", + "Enter": "Entrar" +} \ No newline at end of file diff --git a/client/auth/src/login/login.html b/client/auth/src/login/login.html new file mode 100755 index 000000000..d148afb26 --- /dev/null +++ b/client/auth/src/login/login.html @@ -0,0 +1,19 @@ +
+
+
+ +
+ + + + +
+
+
+ +
diff --git a/client/auth/src/login/login.js b/client/auth/src/login/login.js new file mode 100644 index 000000000..f115bac85 --- /dev/null +++ b/client/auth/src/login/login.js @@ -0,0 +1,57 @@ +import {module} from '../module'; +import './login.scss'; + +export const component = { + template: require('./login.html'), + controller: controller +}; +module.component('vnLogin', component); + +controller.$inject = ['$http', '$element']; +function controller($http, $element) { + Object.assign(this, { + submit: function() { + let model = this.model; + + if (!(model && model.email && model.password)) { + this.showMessage('Please insert your email and password'); + return; + } + + this.loading = true; + model.appId = window.location.href; + $http.post('/account', this.model).then( + (json) => this.onLoginOk(json), + (json) => this.onLoginErr(json) + ); + }, + onLoginOk: function(json) { + this.loading = false; + let data = json.data; + window.location = `${data.location}?access_token=${data.location}`; + }, + onLoginErr: function(json) { + this.loading = false; + this.model.password = ''; + + let message; + + switch (json.status) { + case 401: + message = 'Invalid credentials'; + break; + case -1: + message = 'Can\'t contact with server'; + break; + default: + message = 'Something went wrong'; + } + + this.showMessage(message); + }, + showMessage: function(message) { + let snackbar = $element.find('vn-snackbar').controller('vnSnackbar'); + snackbar.show({message: message}); + } + }); +} diff --git a/client/auth/src/login/login.scss b/client/auth/src/login/login.scss new file mode 100644 index 000000000..2b856c012 --- /dev/null +++ b/client/auth/src/login/login.scss @@ -0,0 +1,47 @@ + +vn-login > div { + position: absolute; + height: 100%; + width: 100%; + margin: 0; + padding: 0; + color: #333; + font-size: 1.1em; + font-weight: normal; + background-color: #3c393b; + + .box-wrapper { + position: relative; + max-width: 22em; + margin: auto; + height: inherit; + } + .box { + box-sizing: border-box; + position: absolute; + top: 50%; + width: 100%; + margin-top: -13.5em; + padding: 3em; + background-color: white; + box-shadow: 0 0 1em 0 rgba(1,1,1,.6); + border-radius: .5em; + } + img { + width: 100%; + padding-bottom: 1em; + } + .footer { + margin-top: 1em; + text-align: center; + position: relative; + } + .spinner-wrapper { + position: absolute; + width: 0; + top: .3em; + right: 4em; + overflow: visible; + } +} + diff --git a/client/auth/src/login/logo.svg b/client/auth/src/login/logo.svg new file mode 100644 index 000000000..a6eae7841 --- /dev/null +++ b/client/auth/src/login/logo.svg @@ -0,0 +1,119 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/client/auth/src/module.js b/client/auth/src/module.js new file mode 100644 index 000000000..db08992b5 --- /dev/null +++ b/client/auth/src/module.js @@ -0,0 +1,4 @@ +import {ng} from 'vendor'; +import * as core from 'core'; + +export const module = ng.module('vnAuth', [core.NAME]); diff --git a/client/client/index.js b/client/client/index.js new file mode 100644 index 000000000..8c2e02b72 --- /dev/null +++ b/client/client/index.js @@ -0,0 +1 @@ +export * from './src/client'; \ No newline at end of file diff --git a/client/client/package.json b/client/client/package.json new file mode 100644 index 000000000..0e6b54f35 --- /dev/null +++ b/client/client/package.json @@ -0,0 +1,10 @@ +{ + "name": "@salix/client", + "version": "0.0.0", + "description": "", + "main": "index.js", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + } +} diff --git a/client/client/routes.js b/client/client/routes.js new file mode 100644 index 000000000..5e54a3104 --- /dev/null +++ b/client/client/routes.js @@ -0,0 +1,75 @@ +{ + "module": "client", + "routes": [ + { + "url": "/clients", + "state": "clients", + "component": "vn-client-index" + }, { + "url": "/clients/:id", + "state": "clientCard", + "component": "vn-client-card" + }, { + "url": "/basic-data", + "state": "clientCard.basicData", + "component": "vn-client-basic-data", + "params": { + "client": "card.client" + }, + "description": "Datos básicos", + "icon": "person" + }, { + "url": "/fiscal-data", + "state": "clientCard.fiscalData", + "component": "vn-client-fiscal-data", + "params": { + "client": "card.client" + }, + "description": "Datos facturación", + "icon": "assignment" + }, { + "url": "/addresses", + "state": "clientCard.addresses", + "component": "vn-client-addresses", + "params": { + "client": "card.client" + }, + "description": "Consignatarios", + "icon": "local_shipping" + }, { + "url": "/web-access", + "state": "clientCard.webAccess", + "component": "vn-client-web-access", + "params": { + "client": "card.client" + }, + "description": "Acceso web", + "icon": "language" + }, { + "url": "/notes", + "state": "clientCard.notes", + "component": "vn-client-notes", + "params": { + "client": "card.client" + }, + "description": "Notas", + "icon": "insert_drive_file" + }, { + "url": "/new-note", + "state": "clientCard.newNote", + "component": "vn-new-note" + },{ + "url": "/create", + "state": "create", + "component": "vn-client-create" + }, { + "url": "/address/create", + "state": "clientCard.addressDataCreate", + "component": "vn-client-addresses-data-create" + }, { + "url": "/address/:addressId", + "state": "clientCard.addressDataEdit", + "component": "vn-client-addresses-data-edit" + } + ] +} diff --git a/client/client/src/addresses-data-create/index.html b/client/client/src/addresses-data-create/index.html new file mode 100644 index 000000000..30fcf7e29 --- /dev/null +++ b/client/client/src/addresses-data-create/index.html @@ -0,0 +1,39 @@ +
+ + + Consignatario + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/client/client/src/addresses-data-create/index.js b/client/client/src/addresses-data-create/index.js new file mode 100644 index 000000000..c500a71c4 --- /dev/null +++ b/client/client/src/addresses-data-create/index.js @@ -0,0 +1,25 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientAddressesDataCreate'; +export const COMPONENT = { + template: template, + controllerAs: 'addressData', + controller: function($http, $state) + { + var self = this; + this.clientId = $state.params.id; + this.address = {}; + + this.submit = function(){ + this.address.client = self.clientId; + this.address.enabled = true; + $http.post('/client/api/Addresses', this.address).then( + json => $state.go('clientCard.addresses') + ); + }; + } +} + +COMPONENT.controller.$inject = ['$http', '$state']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/addresses-data-edit/index.html b/client/client/src/addresses-data-edit/index.html new file mode 100644 index 000000000..4777ff9b6 --- /dev/null +++ b/client/client/src/addresses-data-edit/index.html @@ -0,0 +1,40 @@ +
+ + + Consignatario + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/client/client/src/addresses-data-edit/index.js b/client/client/src/addresses-data-edit/index.js new file mode 100644 index 000000000..fb558a8ee --- /dev/null +++ b/client/client/src/addresses-data-edit/index.js @@ -0,0 +1,37 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientAddressesDataEdit'; +export const COMPONENT = { + template: template, + controllerAs: 'addressData', + controller: function($http, $stateParams, copyObject, equalsObject, $window) { + this.address = {}; + $http.get(`/client/api/Addresses/${$stateParams.addressId}`).then( + json => { + this.address = json.data; + this.copyAddress(); + } + ); + + this.submit = function() { + if (!equalsObject(this.address, this.addressOld)) { + $http.put('/client/api/Addresses', this.address).then( + json => { + this.address = json.data; + this.copyAddress(); + } + ); + } + $window.history.back(); + }; + + this.copyAddress = () => { + this.addressOld = {}; + copyObject(this.address, this.addressOld); + }; + } +}; + +COMPONENT.controller.$inject = ['$http', '$stateParams', 'copyObject', 'equalsObject', '$window']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/addresses/index.html b/client/client/src/addresses/index.html new file mode 100644 index 000000000..0f7d9a903 --- /dev/null +++ b/client/client/src/addresses/index.html @@ -0,0 +1,40 @@ + + + + + Consignatario + + + + + +
{{i.consignee}}
+
{{i.street}}
+
{{i.city}}, {{i.province}}
+
{{i.phone}}, {{i.mobile}}
+
+ +
+
+
+
+ + + + + + +
+ + +
diff --git a/client/client/src/addresses/index.js b/client/client/src/addresses/index.js new file mode 100644 index 000000000..e3ba09ccc --- /dev/null +++ b/client/client/src/addresses/index.js @@ -0,0 +1,63 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientAddresses'; +export const COMPONENT = { + template: template, + controllerAs: 'address', + bindings: { + client: '<' + }, + controller: function($http, $state) { + var self = this; + let numPerPage = 5; + let numRecords = 0; + + this.$onChanges = function(changes) { + if (this.client) { + self.client = this.client; + this.getAddresses(); + } + }; + this.getAddresses = () => { + var json = JSON.stringify({client: self.client.id}); + $http.get(`/client/api/Addresses/count?where=${json}`).then( + json => { + numRecords = json.data.count; + self.getNumPages(); + self.figureOutToDisplay(); + } + ); + }; + + this.getNumPages = () => { + var nPages = numRecords / numPerPage; + self.numPages = Math.ceil(nPages); + }; + + this.figureOutToDisplay = () => { + var begin = ((self.currentPage - 1) * numPerPage); + self.getAddress(begin); + }; + + this.getAddress = function(end) { + var json = JSON.stringify({where: {client: self.client.id}, limit: numPerPage, skip: end}); + $http.get(`/client/api/Addresses?filter=${json}`).then( + json => { + self.addresses = json.data; + self.filteredTodos = self.addresses; + } + ); + }; + + this.pageChanged = () => { + self.figureOutToDisplay(); + }; + this.newAddress = () => { + $state.go("clientCard.addressDataCreate", {id: self.client.id}); + }; + } +}; + +COMPONENT.controller.$inject = ['$http', '$state']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/basic-data/index.html b/client/client/src/basic-data/index.html new file mode 100644 index 000000000..fa4aba3fd --- /dev/null +++ b/client/client/src/basic-data/index.html @@ -0,0 +1,32 @@ +
+ + + Datos básicos + + + + + + + + + + + + + + + + + + + + + +
+ diff --git a/client/client/src/basic-data/index.js b/client/client/src/basic-data/index.js new file mode 100644 index 000000000..a66130f60 --- /dev/null +++ b/client/client/src/basic-data/index.js @@ -0,0 +1,55 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientBasicData'; +export const COMPONENT = { + template: template, + controllerAs: 'basicData', + bindings: { + client: '<' + }, + controller: function($http, copyObject, equalsObject, $transitions, $element, modified) { + var self = this; + var deregister = $transitions.onStart({ }, callback); + + this.$onChanges = function(changes) { + if (this.client) { + this.copyClient(); + } + }; + + this.$onDestroy = function() { + deregister(); + }; + + function callback(transition) { + if (!equalsObject(self.client, self.clientOld)) { + self.state = transition.to().name; + var dialog = $element[0].querySelector('dialog'); + dialog.showModal(); + return false; + } + } + + this.submit = function() { + if (!equalsObject(this.client, this.clientOld)) { + var newClient = modified(this.client, this.clientOld); + newClient.modify = "BasicData"; + $http.put(`/client/api/Clients/${this.clientOld.id}`, newClient).then( + json => { + copyObject(json.data, this.client); + this.copyClient(); + } + ); + } + }; + + this.copyClient = function() { + this.clientOld = {}; + copyObject(this.client, this.clientOld); + }; + } +}; + +COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$element', 'getDataModified']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/card/card.html b/client/client/src/card/card.html new file mode 100644 index 000000000..d327446c7 --- /dev/null +++ b/client/client/src/card/card.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/client/client/src/card/card.js b/client/client/src/card/card.js new file mode 100644 index 000000000..12d3fe933 --- /dev/null +++ b/client/client/src/card/card.js @@ -0,0 +1,29 @@ +import './style.css'; +import template from './card.html'; +import {module} from '../module'; + +const _NAME = 'clientClient'; +// export const NAME = module.getName(_NAME); +export const NAME = "vnClientCard"; +export const COMPONENT = { + template: template, + controllerAs: 'card', + controller: function($http, $stateParams) { + this.client = null; + $http.get(`/client/api/Clients/${$stateParams.id}?filter[include][account]`).then( + json => this.client = json.data + ); + + this.items = []; + routes.client.routes.forEach(i => { + if (i.description) + this.items.push({ + description: i.description, + icon: i.icon, + href: i.state + }); + }); + } +}; +COMPONENT.controller.$inject = ['$http', '$stateParams']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/card/style.css b/client/client/src/card/style.css new file mode 100644 index 000000000..f788e35c6 --- /dev/null +++ b/client/client/src/card/style.css @@ -0,0 +1,3 @@ +vn-descriptor{ + font-family: raleway-bold; +} \ No newline at end of file diff --git a/client/client/src/change-password/index.html b/client/client/src/change-password/index.html new file mode 100644 index 000000000..59a875979 --- /dev/null +++ b/client/client/src/change-password/index.html @@ -0,0 +1,9 @@ +
+ + + + + + + +
\ No newline at end of file diff --git a/client/client/src/change-password/index.js b/client/client/src/change-password/index.js new file mode 100644 index 000000000..9ccd19644 --- /dev/null +++ b/client/client/src/change-password/index.js @@ -0,0 +1,36 @@ +import {module} from '../module'; + +const component = { + template: require('./index.html'), + bindings: { + client: '<', + response: '&' + }, + controller: controller +}; +module.component('vnClientChangePassword', component); +export default component; + +controller.$inject = ['$http', 'vnAppLogger', 'vnDialog']; +function controller($http, logger, dialog) { + this.response = function() {}; + this.submit = () => { + try { + if(!this.newPassword) + throw new Error(`Passwords can't be empty`); + if(this.newPassword != this.repeatPassword) + throw new Error(`Passwords don't match`); + + let account = { + id: 1, + password: this.newPassword + }; + + $http.put('/client/api/Accounts', account).then( + () => dialog.hide()); + } + catch(e) { + logger.showError(e.message); + } + }; +} diff --git a/client/client/src/client.js b/client/client/src/client.js new file mode 100644 index 000000000..ecdde3d16 --- /dev/null +++ b/client/client/src/client.js @@ -0,0 +1,34 @@ +export * from './module'; + +export {NAME as CLIENT_CARD, + COMPONENT as CLIENT_CARD_COMPONENT} from './card/card'; +export {NAME as CLIENT_BASIC_DATA_INDEX, + COMPONENT as CLIENT_BASIC_DATA_INDEX_COMPONENT} from './basic-data/index'; +export {NAME as CLIENT_ADDRESSES, + COMPONENT as CLIENT_ADDRESSES_COMPONENT} from './addresses/index'; +export {NAME as CLIENTS, + COMPONENT as CLIENTS_COMPONENT} from './index/index'; +export {NAME as CLIENT_FISCAL_DATA_INDEX, + COMPONENT as CLIENT_FISCAL_DATA_INDEX_COMPONENT} from './fiscal-data/index'; +export {NAME as CLIENT_WEB_ACCESS, + COMPONENT as CLIENT_WEB_ACCESS_COMPONENT} from './web-access/index'; +export {NAME as CLIENT_DESCRIPTOR, + COMPONENT as CLIENT_DESCRIPTOR_COMPONENT} from './descriptor/descriptor'; +export {NAME as CLIENT_NOTES, + COMPONENT as CLIENT_NOTES_COMPONENT} from './notes/index'; +export {NAME as CLIENT_SEARCH_PANEL, + COMPONENT as CLIENT_SEARCH_PANEL_COMPONENT} from './search-panel/search-panel'; +export {NAME as CLIENT_ITEM, + COMPONENT as CLIENT_ITEM_COMPONENT} from './index/item-client'; +export {NAME as CLIENT_CREATE, + COMPONENT as CLIENT_CREATE_COMPONENT} from './create/index'; +export {NAME as CLIENT_ADDRESSES_DATA_CREATE_INDEX, + COMPONENT as CLIENT_ADDRESSES_DATA_CREATE_INDEX_COMPONENT} from './addresses-data-create/index'; +export {NAME as CLIENT_ADDRESSES_DATA_EDIT_INDEX, + COMPONENT as CLIENT_ADDRESSES_DATA_EDIT_INDEX_COMPONENT} from './addresses-data-edit/index'; +export {NAME as CLIENT_CONFIRM_INDEX, + COMPONENT as CLIENT_CONFIRM_INDEX_COMPONENT} from './confirm/index'; +export {NAME as NEW_NOTE_INDEX, + COMPONENT as NEW_NOTE_INDEX_COMPONENT} from './new-note/index'; + +import './change-password/index'; diff --git a/client/client/src/confirm/index.html b/client/client/src/confirm/index.html new file mode 100644 index 000000000..82a6b0f26 --- /dev/null +++ b/client/client/src/confirm/index.html @@ -0,0 +1,14 @@ + + +
+ ¿Seguro que quieres salir sin guardar? +
+
+ Los cambios que no hayas guardado se perderán +
+
+ + + + +
\ No newline at end of file diff --git a/client/client/src/confirm/index.js b/client/client/src/confirm/index.js new file mode 100644 index 000000000..d8278231c --- /dev/null +++ b/client/client/src/confirm/index.js @@ -0,0 +1,30 @@ +import template from './index.html'; +import {module} from '../module'; + +require('./style.css'); + +export const NAME = 'vnDialogConfirm'; +export const COMPONENT = { + template: template, + controllerAs: 'dialogConfirm', + bindings: { + state: '<', + object: '=', + objectOld: "=" + }, + controller: function($state, $element, copyObject) { + var dialog = $element.find('dialog')[0]; + + this.accept = function() { + copyObject(this.objectOld, this.object); + $state.go(this.state); + dialog.close(); + }; + + this.cancel = function() { + dialog.close(); + }; + } +}; +COMPONENT.controller.$inject = ['$state', '$element', 'copyObject']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/confirm/style.css b/client/client/src/confirm/style.css new file mode 100644 index 000000000..97fc32283 --- /dev/null +++ b/client/client/src/confirm/style.css @@ -0,0 +1,5 @@ + +.dialog-title{ + color:#424242; + font-family: raleway-bold; +} diff --git a/client/client/src/create/index.html b/client/client/src/create/index.html new file mode 100644 index 000000000..e31fcf7de --- /dev/null +++ b/client/client/src/create/index.html @@ -0,0 +1,21 @@ +
+
+ + + Crear Cliente + + + + + + + + + + + + + + +
+
diff --git a/client/client/src/create/index.js b/client/client/src/create/index.js new file mode 100644 index 000000000..8c5893962 --- /dev/null +++ b/client/client/src/create/index.js @@ -0,0 +1,30 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = "vnClientCreate"; +export const COMPONENT = { + template: template, + controllerAs: "create", + controller: function($http, $state, $window) { + this.submit = function() { + this.create('clientCard.basicData'); + }; + + this.create = state => { + this.model.active = true; + $http.post('/client/api/Clients', this.model).then( + json => this.navigate(json.data.id, state) + ); + }; + + this.navigate = (id, state) => { + if (state) + $state.go(state, {id: id}); + else + $window.history.back(); + }; + } + +}; +COMPONENT.controller.$inject = ['$http', '$state', '$window']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/descriptor/descriptor.html b/client/client/src/descriptor/descriptor.html new file mode 100644 index 000000000..05a869d34 --- /dev/null +++ b/client/client/src/descriptor/descriptor.html @@ -0,0 +1,15 @@ + + + + + person + + +
{{descriptor.client.id}}
+
{{descriptor.client.name}}
+
{{descriptor.client.phone}}
+ +
+
+
+
diff --git a/client/client/src/descriptor/descriptor.js b/client/client/src/descriptor/descriptor.js new file mode 100644 index 000000000..b21a08eeb --- /dev/null +++ b/client/client/src/descriptor/descriptor.js @@ -0,0 +1,21 @@ +import './style.css'; +import template from './descriptor.html'; +import {module} from '../module'; + +export const NAME = 'vnDescriptor'; +export const COMPONENT = { + template: template, + controllerAs: 'descriptor', + bindings: { + client: '<' + }, + controller: function($http, $scope, copyObject) { + var self = this; + $scope.$watch('descriptor.client.active', function(newValue, oldValue) { + if (oldValue !== undefined) + $http.put(`/client/api/Clients/${self.client.id}/activate`, {}); + }); + } +}; +COMPONENT.controller.$inject = ['$http', '$scope', 'copyObject']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/descriptor/style.css b/client/client/src/descriptor/style.css new file mode 100644 index 000000000..d5f633d8c --- /dev/null +++ b/client/client/src/descriptor/style.css @@ -0,0 +1,3 @@ +.descriptor-icon{ + font-size:60px; +} \ No newline at end of file diff --git a/client/client/src/fiscal-data/index.html b/client/client/src/fiscal-data/index.html new file mode 100644 index 000000000..d4de95dbd --- /dev/null +++ b/client/client/src/fiscal-data/index.html @@ -0,0 +1,69 @@ + +
+ + + Datos fiscales y de facturación + + + + + + + + + + + + + + + + + + + + Información de facturación + + + + + + + + + + + + + + + + + Documentación + + + + + + + + + + +
+ diff --git a/client/client/src/fiscal-data/index.js b/client/client/src/fiscal-data/index.js new file mode 100644 index 000000000..c0aa43a33 --- /dev/null +++ b/client/client/src/fiscal-data/index.js @@ -0,0 +1,55 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientFiscalData'; +export const COMPONENT = { + template: template, + controllerAs: 'fiscal', + bindings: { + client: '<' + }, + controller: function($http, copyObject, equalsObject, $transitions, $element, modified) { + var self = this; + var deregister = $transitions.onStart({ }, callback); + + this.submit = function() { + if (!equalsObject(this.client, this.clientOld)) { + var newClient = modified(this.client, this.clientOld); + newClient.modify = "FiscalData"; + $http.put(`/client/api/Clients/${this.clientOld.id}`, newClient).then( + json => { + this.client = json.data; + this.copyClient(); + } + ); + } + }; + + this.$onChanges = function(changes) { + if (this.client) { + this.copyClient(); + } + }; + + this.$onDestroy = function() { + deregister(); + }; + + function callback(transition) { + if (!equalsObject(self.client, self.clientOld)) { + self.state = transition.to().name; + var dialog = $element[0].querySelector('dialog'); + dialog.showModal(); + return false; + } + } + + this.copyClient = function() { + this.clientOld = {}; + copyObject(this.client, this.clientOld); + }; + } +}; +COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$element', 'getDataModified']; +module.component(NAME, COMPONENT); + diff --git a/client/client/src/index/index.html b/client/client/src/index/index.html new file mode 100644 index 000000000..48a9511e1 --- /dev/null +++ b/client/client/src/index/index.html @@ -0,0 +1,20 @@ +
+
+ + + + + + + + + +
+ + + +
diff --git a/client/client/src/index/index.js b/client/client/src/index/index.js new file mode 100644 index 000000000..5dea90cce --- /dev/null +++ b/client/client/src/index/index.js @@ -0,0 +1,53 @@ +import template from './index.html'; +import {module} from '../module'; +require('./style.css'); + +export const NAME = 'vnClientIndex'; +export const COMPONENT = { + template: template, + controllerAs: 'search', + controller: function($http) { + this.clients = []; + this.find = function() { + var where = null; + var filter = this.filter; + var queryStr = '/client/api/Clients'; + var search = filter.search; + if (search) + where = {name: {ilike: search}}; + + var params = filter.params; + if (params) { + where = {}; + let partials = { + alias: true, + name: true, + socialName: true, + city: true, + email: true + }; + for (let param in params) + if (params[param]) { + if (partials[param]) + where[param] = {ilike: params[param]}; + else + where[param] = params[param]; + } + filter.params = undefined; + } + + if (where) { + let json = JSON.stringify({where: where}); + queryStr = `${queryStr}?filter=${json}`; + } + + $http.get(queryStr).then( + json => this.clients = json.data + ); + }; + this.filter = {}; + this.find(); + } +}; +COMPONENT.controller.$inject = ['$http']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/index/item-client.html b/client/client/src/index/item-client.html new file mode 100644 index 000000000..c3d2b77ce --- /dev/null +++ b/client/client/src/index/item-client.html @@ -0,0 +1,7 @@ + +
{{itemClient.client.name}}
+
Id Cliente: {{itemClient.client.id}}
+
Teléfono: {{itemClient.client.phone}}
+
Población: {{itemClient.client.city}}
+
email: {{itemClient.client.email}}
+
\ No newline at end of file diff --git a/client/client/src/index/item-client.js b/client/client/src/index/item-client.js new file mode 100644 index 000000000..6e8227388 --- /dev/null +++ b/client/client/src/index/item-client.js @@ -0,0 +1,12 @@ +import template from './item-client.html'; +import {module} from '../module'; + +export const NAME = 'vnItemClient'; +export const COMPONENT = { + template: template, + controllerAs: 'itemClient', + bindings: { + client: '<' + } +}; +module.component(NAME, COMPONENT); diff --git a/client/client/src/index/style.css b/client/client/src/index/style.css new file mode 100644 index 000000000..ba7f75844 --- /dev/null +++ b/client/client/src/index/style.css @@ -0,0 +1,16 @@ +vn-item-client { + display: block; +} +vn-item-client a { + display: block; + text-decoration: none; + color: inherit; +} +vn-item-client a:hover { + color: white; + background-color: #424242; +} + +.vn-item-client-name{ + font-family: raleway-bold; +} diff --git a/client/client/src/locale/en.json b/client/client/src/locale/en.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/client/client/src/locale/en.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/client/client/src/locale/es.json b/client/client/src/locale/es.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/client/client/src/locale/es.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/client/client/src/module.js b/client/client/src/module.js new file mode 100644 index 000000000..85de3c756 --- /dev/null +++ b/client/client/src/module.js @@ -0,0 +1,5 @@ +import {ng} from 'vendor'; +import * as core from 'core'; + +export const NAME = 'client'; +export const module = ng.module(NAME, []); diff --git a/client/client/src/new-note/index.html b/client/client/src/new-note/index.html new file mode 100644 index 000000000..7f23706ca --- /dev/null +++ b/client/client/src/new-note/index.html @@ -0,0 +1,12 @@ +
+ + + Nueva nota + + + + + + +
+ \ No newline at end of file diff --git a/client/client/src/new-note/index.js b/client/client/src/new-note/index.js new file mode 100644 index 000000000..37c12fe55 --- /dev/null +++ b/client/client/src/new-note/index.js @@ -0,0 +1,54 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnNewNote'; +export const COMPONENT = { + template: template, + controllerAs: 'newNote', + controller: function($http, $state, copyObject, equalsObject, $transitions, $element) { + this.client = $state.params.id; + this.note = {text: null}; + var self = this; + + var deregister = $transitions.onStart({ }, callback); + copyNote(); + + this.submit = function() { + if (this.note) { + let observation = this.createNote(); + $http.post('/client/api/ClientObservations', observation).then( + json => { + this.note = json.data; + copyNote(); + $state.go('clientCard.notes'); + } + ); + } + }; + + this.$onDestroy = () => { + deregister(); + }; + + this.createNote = () => { + let observation = {client: this.client, text: this.note.text, salesPerson: 'user', modify: 'ClientObservation'}; + return observation; + }; + + function callback(transition) { + if (!equalsObject(self.note, self.noteOld)) { + self.state = transition.to().name; + var dialog = $element[0].querySelector('dialog'); + dialog.showModal(); + return false; + } + } + + function copyNote() { + self.noteOld = {}; + copyObject(self.note, self.noteOld); + } + } +}; +COMPONENT.controller.$inject = ['$http', '$state', 'copyObject', 'equalsObject', '$transitions', '$element']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/notes/index.html b/client/client/src/notes/index.html new file mode 100644 index 000000000..5d40d3bfe --- /dev/null +++ b/client/client/src/notes/index.html @@ -0,0 +1,17 @@ + + + Notas + + +
{{n.creationDate | date:'dd/MM/yyyy HH:mm'}}
+
{{n.salesPerson}}
+
{{n.text}}
+
+
+
+
+ + \ No newline at end of file diff --git a/client/client/src/notes/index.js b/client/client/src/notes/index.js new file mode 100644 index 000000000..f00cac5f7 --- /dev/null +++ b/client/client/src/notes/index.js @@ -0,0 +1,34 @@ +import './style.css'; +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientNotes'; +export const COMPONENT = { + template: template, + controllerAs: 'observation', + bindings: { + client: '<' + }, + controller: function($http, $state) { + this.$onChanges = function(changes) { + if (this.client) { + this.getObservation(this.client.id); + } + }; + + this.getObservation = function(clientId) { + let json = JSON.stringify({where: {client: this.client.id}, order: 'creationDate DESC'}); + $http.get(`/client/api/clientObservations?filter=${json}`).then( + json => { + this.observations = json.data; + } + ); + }; + + this.newObservation = () => { + $state.go("clientCard.newNote", {id: this.client.id}); + }; + } +}; +COMPONENT.controller.$inject = ['$http', '$state']; +module.component(NAME, COMPONENT); diff --git a/client/client/src/notes/style.css b/client/client/src/notes/style.css new file mode 100644 index 000000000..b5e17c7a7 --- /dev/null +++ b/client/client/src/notes/style.css @@ -0,0 +1,3 @@ +.notes-date{ + font-family: raleway-bold; +} \ No newline at end of file diff --git a/client/client/src/search-panel/search-panel.html b/client/client/src/search-panel/search-panel.html new file mode 100644 index 000000000..e7f5ca2bd --- /dev/null +++ b/client/client/src/search-panel/search-panel.html @@ -0,0 +1,26 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+ diff --git a/client/client/src/search-panel/search-panel.js b/client/client/src/search-panel/search-panel.js new file mode 100644 index 000000000..85cc53d9c --- /dev/null +++ b/client/client/src/search-panel/search-panel.js @@ -0,0 +1,10 @@ +import {module} from '../module'; + +export const NAME = 'vnClientSearchPanel'; +export const COMPONENT = { + template: require('./search-panel.html'), + controller: function($scope) { + this.onSubmit = function() {} + } +}; +module.component(NAME, COMPONENT); diff --git a/client/client/src/web-access/index.html b/client/client/src/web-access/index.html new file mode 100644 index 000000000..355e33246 --- /dev/null +++ b/client/client/src/web-access/index.html @@ -0,0 +1,14 @@ +
+ + + Web access + + + + + + + + +
+ diff --git a/client/client/src/web-access/index.js b/client/client/src/web-access/index.js new file mode 100644 index 000000000..bd7a4bf49 --- /dev/null +++ b/client/client/src/web-access/index.js @@ -0,0 +1,65 @@ +import template from './index.html'; +import {module} from '../module'; + +export const NAME = 'vnClientWebAccess'; +export const COMPONENT = { + template: template, + controllerAs: 'web', + bindings: { + client: '<' + }, + controller: function($http, copyObject, equalsObject, $transitions, $element, modified) { + var self = this; + var deregister = $transitions.onStart({ }, callback); + + this.submit = function() { + if (!equalsObject(this.account, this.accountOld)) { + var newAccount = modified(this.account, this.accountOld); + newAccount.modify = "WebAccess"; + if (this.account.id) { + $http.put(`/client/api/Accounts/${this.client.id}`, newAccount).then( + json => { + this.client.account = json.data; + self.copyAccount(); + } + ); + } else { + newAccount.id = this.client.id; + $http.post('/client/api/Accounts', newAccount).then( + json => { + this.client.account = json.data; + copyObject(this.client.account, this.accountOld); + } + ); + } + } + }; + + this.$onChanges = function(changes) { + if (this.client) { + this.copyAccount(); + } + }; + + this.$onDestroy = function() { + deregister(); + }; + + function callback(transition) { + if (!equalsObject(self.client.account, self.accountOld)) { + self.state = transition.to().name; + var dialog = $element[0].querySelector('dialog'); + dialog.showModal(); + return false; + } + } + + this.copyAccount = function() { + this.account = this.client.account; + this.accountOld = {}; + copyObject(this.client.account, this.accountOld); + }; + } +}; +COMPONENT.controller.$inject = ['$http', 'copyObject', 'equalsObject', '$transitions', '$element', 'getDataModified']; +module.component(NAME, COMPONENT); diff --git a/client/core/index.js b/client/core/index.js new file mode 100644 index 000000000..064800130 --- /dev/null +++ b/client/core/index.js @@ -0,0 +1,2 @@ +export * from './src/core' + diff --git a/client/core/package.json b/client/core/package.json new file mode 100644 index 000000000..626726422 --- /dev/null +++ b/client/core/package.json @@ -0,0 +1,10 @@ +{ + "name": "@salix/core", + "version": "0.0.0", + "description": "", + "main": "index.js", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + } +} diff --git a/client/core/src/.gitignore b/client/core/src/.gitignore new file mode 100644 index 000000000..b512c09d4 --- /dev/null +++ b/client/core/src/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/client/core/src/autocomplete/index.js b/client/core/src/autocomplete/index.js new file mode 100644 index 000000000..63392e4ee --- /dev/null +++ b/client/core/src/autocomplete/index.js @@ -0,0 +1,368 @@ +import {module} from '../module'; +import './index.mdl'; +import './style.scss'; + +export const component = { + transclude: true, + bindings: { + url: '@', + showField: '@', + valueField: '@', + model: '=' + }, + template: template, + controller: controller +}; +module.component('vnAutocomplete', component); + +template.$inject = ['$element', '$attrs', 'vnInputAttrsNormalizer', 'vnResolveDefaultComponent']; +function template($element, $attrs, normalizer, resolve) { + normalizer.normalize($attrs); + return resolve.getTemplate('autocomplete', $attrs); +} + +controller.$inject = ['$http', '$element', '$attrs', '$scope', '$parse', '$document', 'vnPopover']; +function controller($http, $element, $attrs, $scope, $parse, $document, popoverProvider) { + let locked = false; + + $scope.$watch($attrs.model, (newValue) => { + if(!locked) { + locked = true; + this.setValue(newValue); + locked = false; + } + }); + + componentHandler.upgradeElement($element[0].firstChild); + + function mdlUpdate() { + let mdlField = $element[0].firstChild.MaterialTextfield; + if (mdlField) + mdlField.updateClasses_(); + } + + Object.assign(this, { + init: function() { + this.input = $element[0].querySelector('input'); + this.item = null; + this.data = null; + this.popover = null; + this.popoverData = null; + this.timeoutId = null; + this.lastSearch = null; + this.lastRequest = null; + this.currentRequest = null; + this.moreData = false; + this.activeOption = -1; + this.maxRows = 10; + this.requestDelay = 350; + this.requestItem(); + }, + loadData: function(textFilter) { + textFilter = textFilter ? textFilter : ''; + + if(this.lastSearch === textFilter) { + this.popoverDataReady(); + return; + } + + this.lastSearch = textFilter; + + let lastRequest = this.lastRequest; + let requestWillSame = lastRequest !== null + && !this.moreData + && textFilter.substr(0, lastRequest.length) === lastRequest; + + if(requestWillSame) + this.localFilter(textFilter); + else + this.requestData(textFilter, false); + }, + getRequestFields: function() { + let fields = {}; + fields[this.valueField] = true; + fields[this.showField] = true; + return fields; + }, + requestData: function(textFilter, append) { + let where = {}; + let skip = 0; + + if(textFilter) + where[this.showField] = {ilike: textFilter}; + if(append && this.data) + skip = this.data.length; + + let filter = { + fields: this.getRequestFields(), + where: where, + order: `${this.showField} ASC`, + skip: skip, + limit: this.maxRows + }; + + this.lastRequest = textFilter ? textFilter : ''; + let json = JSON.stringify(filter); + + if(this.currentRequest) + this.currentRequest.resolve(); + + this.currentRequest = $http.get(`${this.url}?filter=${json}`); + this.currentRequest.then( + json => this.onRequest(json.data, append), + json => this.onRequest([]) + ); + }, + onRequest: function(data, append) { + this.currentRequest = null; + this.moreData = data.length >= this.maxRows; + + if(!append || !this.data) + this.data = data; + else + this.data = this.data.concat(data); + + this.setPopoverData(this.data); + }, + localFilter: function(textFilter) { + let regex = new RegExp(textFilter, 'i'); + let data = this.data.filter((item) => { + return regex.test(item[this.showField]); + }); + this.setPopoverData(data); + }, + setPopoverData: function(data) { + this.popoverData = data; + this.popoverDataReady(); + }, + popoverDataReady: function() { + if(this.hasFocus) + this.showPopover(); + }, + showPopover: function() { + if(!this.data) return; + + let fragment = $document[0].createDocumentFragment(); + let data = this.popoverData; + + for(let i = 0; i < data.length; i++) { + let li = $document[0].createElement('li'); + li.appendChild($document[0].createTextNode(data[i][this.showField])); + fragment.appendChild(li); + } + + if(this.moreData) { + let li = $document[0].createElement('li'); + li.appendChild($document[0].createTextNode('Load more')); + li.className = 'load-more'; + fragment.appendChild(li); + } + + if (!this.popover) { + let popover = $document[0].createElement('ul'); + popover.addEventListener('click', + (e) => this.onPopoverClick(e)); + popover.addEventListener('mousedown', + (e) => this.onPopoverMousedown(e)); + popover.className = 'vn-autocomplete'; + popover.appendChild(fragment); + popoverProvider.show(popover, this.input); + this.popover = popover; + } + else { + this.popover.innerHTML = ''; + this.popover.appendChild(fragment); + } + }, + hidePopover: function() { + if(!this.popover) return; + this.activeOption = -1; + popoverProvider.hide(); + this.popover = null; + }, + selectPopoverOption: function(index) { + if(!this.popover || index == -1) return; + if(index < this.popoverData.length) { + this.selectOptionByDataIndex(this.popoverData, index); + this.hidePopover(); + } + else + this.requestData(this.lastRequest, true); + }, + onPopoverClick: function(event) { + let childs = this.popover.childNodes; + for(let i = 0; i < childs.length; i++) + if(childs[i] === event.target) { + this.selectPopoverOption(i); + break; + } + }, + onPopoverMousedown: function(event) { + // Prevents input from loosing focus + event.preventDefault(); + }, + onClick: function(event) { + if(!this.popover) + this.showPopover(); + }, + onFocus: function() { + this.hasFocus = true; + this.input.select(); + + if(this.data) + this.showPopover(); + else + this.loadData(); + }, + onBlur: function() { + this.hasFocus = false; + this.restoreShowValue(); + this.hidePopover(); + }, + onKeydown: function(event) { + switch(event.keyCode) { + case 13: // Enter + this.selectPopoverOption(this.activeOption); + break; + case 27: // Escape + this.restoreShowValue(); + this.input.select(); + break; + case 38: // Arrow up + this.activateOption(this.activeOption-1); + break; + case 40: // Arrow down + this.activateOption(this.activeOption+1); + break; + default: + return; + } + + event.preventDefault(); + }, + onKeyup: function(event) { + if(!this.isKeycodePrintable(event.keyCode)) return; + if(this.timeoutId) clearTimeout(this.timeoutId); + this.timeoutId = setTimeout(() => this.onTimeout(), this.requestDelay); + }, + onTimeout: function() { + this.loadData(this.input.value); + this.timeoutId = null; + }, + isKeycodePrintable: function(keyCode) { + return keyCode == 32 // Spacebar + || keyCode == 8 // Backspace + || (keyCode > 47 && keyCode < 58) // Numbers + || (keyCode > 64 && keyCode < 91) // Letters + || (keyCode > 95 && keyCode < 112) // Numpad + || (keyCode > 185 && keyCode < 193) // ;=,-./` + || (keyCode > 218 && keyCode < 223); // [\]' + }, + restoreShowValue: function() { + this.putItem(this.item); + }, + requestItem: function() { + if(!this.model) return; + + let where = {}; + where[this.valueField] = this.model; + + let filter = { + fields: this.getRequestFields(), + where: where, + }; + + let json = JSON.stringify(filter); + + $http.get(`${this.url}?filter=${json}`).then( + json => this.onItemRequest(json.data), + json => this.onItemRequest(null) + ); + }, + onItemRequest: function(data) { + if(data && data.length > 0) + this.showItem(data[0]); + else + this.showItem(null); + }, + activateOption: function(index) { + + if(!this.popover) + this.showPopover(); + + let popover = this.popover; + let childs = popover.childNodes; + let len = this.popoverData.length; + + if(this.activeOption >= 0) + childs[this.activeOption].className = ''; + + if(index >= len) + index = 0; + else if(index < 0) + index = len - 1; + + if (index >= 0) { + let opt = childs[index]; + let top = popover.scrollTop; + let height = popover.clientHeight; + + if(opt.offsetTop + opt.offsetHeight > top + height) + top = opt.offsetTop + opt.offsetHeight - height; + else if(opt.offsetTop < top) + top = opt.offsetTop; + + opt.className = 'active'; + popover.scrollTop = top; + } + + this.activeOption = index; + }, + setValue: function(value) { + if(value) { + let data = this.data; + + if(data) + for(let i = 0; i < data.length; i++) + if(data[i][this.valueField] == value) { + this.putItem(data[i]); + return; + } + + this.requestItem(); + } + else + this.putItem(null); + }, + selectOptionByIndex: function(index) { + this.selectOptionByDataIndex(this.data, index); + }, + selectOptionByDataIndex: function(data, index) { + if(data && index >= 0 && index < data.length) + this.putItem(data[index]); + else + this.putItem(null); + }, + putItem: function(item) { + this.showItem(item); + let value = item ? item[this.valueField] : undefined; + + if(!locked) { + setTimeout (() => { + $scope.$apply(function () { + locked = true; + $parse($attrs.model).assign($scope, value); + locked = false; + }); + }); + } + }, + showItem: function(item) { + this.input.value = item ? item[this.showField] : ''; + this.item = item; + mdlUpdate(); + } + }); + + this.init(); +} diff --git a/client/core/src/autocomplete/index.mdl.html b/client/core/src/autocomplete/index.mdl.html new file mode 100644 index 000000000..bef534feb --- /dev/null +++ b/client/core/src/autocomplete/index.mdl.html @@ -0,0 +1,14 @@ +
+ + +
diff --git a/client/core/src/autocomplete/index.mdl.js b/client/core/src/autocomplete/index.mdl.js new file mode 100644 index 000000000..4c520c749 --- /dev/null +++ b/client/core/src/autocomplete/index.mdl.js @@ -0,0 +1,11 @@ +import {module} from '../module'; + +export function factory() { + return { + template: require('./index.mdl.html'), + default: { + className: 'mdl-textfield--floating-label' + } + } +} +module.factory('vnAutocompleteMdlFactory', factory); diff --git a/client/core/src/autocomplete/style.scss b/client/core/src/autocomplete/style.scss new file mode 100644 index 000000000..1ddff61ec --- /dev/null +++ b/client/core/src/autocomplete/style.scss @@ -0,0 +1,25 @@ +ul.vn-autocomplete { + list-style-type: none; + padding: 1em; + margin: 0; + padding: 0; + overflow: auto; + max-height: 300px; + + li { + display: block; + padding: .8em; + margin: 0; + cursor: pointer; + + &.active, + &:hover { + background-color: rgba(1,1,1,.1); + } + &.load-more { + color: #ffa410; + font-weight: bold; + padding: .4em .8em; + } + } +} \ No newline at end of file diff --git a/client/core/src/button/button.bt.html b/client/core/src/button/button.bt.html new file mode 100644 index 000000000..b72ceeba6 --- /dev/null +++ b/client/core/src/button/button.bt.html @@ -0,0 +1,2 @@ + + diff --git a/client/core/src/button/button.bt.js b/client/core/src/button/button.bt.js new file mode 100644 index 000000000..4994640e6 --- /dev/null +++ b/client/core/src/button/button.bt.js @@ -0,0 +1,24 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './button.bt.html'; + +const _NAME = 'button'; +const DEFAULT_CLASS = ''; +const DEFAULT_TEXT = 'Button'; + +export const NAME = util.getFactoryName(_NAME + constant.BOOTSTRAP_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + text: DEFAULT_TEXT, + className: DEFAULT_CLASS, + enabled: 'true', + typeName: 'button' + } + } +} + +_module.factory(NAME, factory); diff --git a/client/core/src/button/button.js b/client/core/src/button/button.js new file mode 100644 index 000000000..4e53f45b9 --- /dev/null +++ b/client/core/src/button/button.js @@ -0,0 +1,18 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'button'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + template: function(_, attr) { + return resolve.getTemplate(_NAME, attr); + } + }; +} + +_module.directive(NAME, directive); diff --git a/client/core/src/button/button.mdl.html b/client/core/src/button/button.mdl.html new file mode 100644 index 000000000..dd0f7acc6 --- /dev/null +++ b/client/core/src/button/button.mdl.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/client/core/src/button/button.mdl.js b/client/core/src/button/button.mdl.js new file mode 100644 index 000000000..0ba20eb48 --- /dev/null +++ b/client/core/src/button/button.mdl.js @@ -0,0 +1,21 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './button.mdl.html'; + +const _NAME = 'button'; +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + label: 'Submit', + className: 'mdl-button mdl-js-button mdl-button--raised mdl-button--colored', + enabled: 'true', + typeName: 'button' + } + } +} + +_module.factory(NAME, factory); diff --git a/client/core/src/card/card.js b/client/core/src/card/card.js new file mode 100644 index 000000000..01f3118be --- /dev/null +++ b/client/core/src/card/card.js @@ -0,0 +1,21 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; +require ('./style.css'); + +const _NAME = 'card'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + transclude: true, + template: function(_, attr) { + return resolve.getTemplate(_NAME, attr); + } + }; +} + +_module.directive(NAME, directive); + diff --git a/client/core/src/card/card.mdl.html b/client/core/src/card/card.mdl.html new file mode 100644 index 000000000..f9edc7feb --- /dev/null +++ b/client/core/src/card/card.mdl.html @@ -0,0 +1 @@ +
diff --git a/client/core/src/card/card.mdl.js b/client/core/src/card/card.mdl.js new file mode 100644 index 000000000..3467ecaca --- /dev/null +++ b/client/core/src/card/card.mdl.js @@ -0,0 +1,16 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './card.mdl.html'; + +const _NAME = 'card'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template + } +} + +_module.factory(NAME, factory); diff --git a/client/core/src/card/style.css b/client/core/src/card/style.css new file mode 100644 index 000000000..c2fe4e1ea --- /dev/null +++ b/client/core/src/card/style.css @@ -0,0 +1,3 @@ +vn-card { + display: block; +} \ No newline at end of file diff --git a/client/core/src/check/check.bt.html b/client/core/src/check/check.bt.html new file mode 100644 index 000000000..b72ceeba6 --- /dev/null +++ b/client/core/src/check/check.bt.html @@ -0,0 +1,2 @@ + + diff --git a/client/core/src/check/check.bt.js b/client/core/src/check/check.bt.js new file mode 100644 index 000000000..af05058f2 --- /dev/null +++ b/client/core/src/check/check.bt.js @@ -0,0 +1 @@ +// por definir diff --git a/client/core/src/check/check.js b/client/core/src/check/check.js new file mode 100644 index 000000000..adbe8280e --- /dev/null +++ b/client/core/src/check/check.js @@ -0,0 +1,28 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as normalizerFactory from '../inputAttrsNormalizer'; +import * as util from '../util'; + +const _NAME = 'check'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME, normalizerFactory.NAME]; +export function directive(resolve, normalizer) { + return { + restrict: 'E', + template: function(_, attrs) { + normalizer.normalize(attrs); + return resolve.getTemplate(_NAME, attrs); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialCheckbox; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + }; +} + +_module.directive(NAME, directive); diff --git a/client/core/src/check/check.mdl.html b/client/core/src/check/check.mdl.html new file mode 100644 index 000000000..bbb292699 --- /dev/null +++ b/client/core/src/check/check.mdl.html @@ -0,0 +1,4 @@ + diff --git a/client/core/src/check/check.mdl.js b/client/core/src/check/check.mdl.js new file mode 100644 index 000000000..1f65309b6 --- /dev/null +++ b/client/core/src/check/check.mdl.js @@ -0,0 +1,21 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './check.mdl.html'; + +const _NAME = 'check'; +const DEFAULT_CLASS = 'mdl-checkbox__input'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + enabled: 'true', + className: DEFAULT_CLASS + } + }; +} + +_module.factory(NAME, factory); diff --git a/client/core/src/combo/combo.js b/client/core/src/combo/combo.js new file mode 100644 index 000000000..c4aadebbe --- /dev/null +++ b/client/core/src/combo/combo.js @@ -0,0 +1,28 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as normalizerFactory from '../inputAttrsNormalizer'; +import * as util from '../util'; + +const _NAME = 'combo'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME, normalizerFactory.NAME]; +export function directive(resolve, normalizer) { + return { + restrict: 'E', + transclude: true, + template: function(_, attrs) { + normalizer.normalize(attrs); + return resolve.getTemplate(_NAME, attrs); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialTextfield; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + }; +} +_module.directive(NAME, directive); diff --git a/client/core/src/combo/combo.mdl.html b/client/core/src/combo/combo.mdl.html new file mode 100644 index 000000000..74f8c77ea --- /dev/null +++ b/client/core/src/combo/combo.mdl.html @@ -0,0 +1,5 @@ +
+ + +
diff --git a/client/core/src/combo/combo.mdl.js b/client/core/src/combo/combo.mdl.js new file mode 100644 index 000000000..86f7121d9 --- /dev/null +++ b/client/core/src/combo/combo.mdl.js @@ -0,0 +1,14 @@ +import {module} from '../module'; +import template from './combo.mdl.html'; + +export const NAME = 'vnComboMdlFactory'; +export function factory() { + return { + template: template, + default: { + label: 'Label', + enabled: 'enabled' + } + } +} +module.factory(NAME, factory); diff --git a/client/core/src/config.js b/client/core/src/config.js new file mode 100644 index 000000000..dd11ccbfc --- /dev/null +++ b/client/core/src/config.js @@ -0,0 +1,21 @@ +import {module} from './module'; + +config.$inject = ['$translateProvider', '$translatePartialLoaderProvider']; +export function config($translateProvider, $translatePartialLoaderProvider) { + $translatePartialLoaderProvider.addPart('core'); + + let conf = {urlTemplate: '/static/locale/{part}/{lang}.json'}; + let langs = ['en', 'es']; + let localLangs = { + 'en_US': 'en', + 'en_UK': 'en', + 'es_ES': 'es', + 'es_AR': 'es' + }; + $translateProvider + .useSanitizeValueStrategy('escape') + .useLoader('$translatePartialLoader', conf) + .registerAvailableLanguageKeys(langs, localLangs) + .determinePreferredLanguage(); +} +module.config(config); diff --git a/client/core/src/constants.js b/client/core/src/constants.js new file mode 100644 index 000000000..5cd04dedc --- /dev/null +++ b/client/core/src/constants.js @@ -0,0 +1,10 @@ + +// Proyect prefix name +export const PREFIX ='vn'; + +// CSS frameworks +export const MATERIAL_DESIGN_FRAMEWORK = 'Mdl'; +export const BOOTSTRAP_FRAMEWORK = 'Bt'; + +// Module dependencies +export const EMPTY_DEPENDECIES = []; diff --git a/client/core/src/copy.js b/client/core/src/copy.js new file mode 100644 index 000000000..7e8b4e1f4 --- /dev/null +++ b/client/core/src/copy.js @@ -0,0 +1,5 @@ +import {module} from './module'; + +export const NAME = 'copyObject'; + +module.value(NAME, angular.copy); diff --git a/client/core/src/core.js b/client/core/src/core.js new file mode 100644 index 000000000..2c215ac91 --- /dev/null +++ b/client/core/src/core.js @@ -0,0 +1,64 @@ +import './mdl-override.css'; + +export * from './module'; +export * from './util'; + +import './config'; +import './moduleLoader'; + +export {default as splitingRegister} from './splitingRegister'; + +export {NAME as RESOLVEDEFAULTCOMPONENT, ResolveDefaultComponent} from './resolveDefaultComponents'; +export {NAME as INTERPOLATE, Interpolate} from './interpolate'; +export {NAME as ROUTES_LOADER, RoutesLoader} from './routesLoader'; +export {NAME as COPY_OBJECT} from './copy'; +export {NAME as EQUALS_OBJECT} from './equals'; +export {NAME as GET_DATA_MODIFIED, factory as Modified} from './modified'; + +export {directive as Focus} from './focus'; +export {directive as Validation} from './validation'; + +export {NAME as BUTTON, directive as ButtonDirective} from './button/button'; +export {NAME as BUTTON_MDL, factory as buttonMdl} from './button/button.mdl'; +export {NAME as BUTTON_BT, factory as buttonBt} from './button/button.bt'; +export {NAME as CHECK, directive as CheckDirective} from './check/check'; +export {NAME as CHECK_MDL, factory as checknMdl} from './check/check.mdl'; +export {NAME as CHECK_BT, factory as checkBt} from './check/check.bt'; +export {NAME as RADIO, directive as RadioDirective} from './radio/radio'; +export {NAME as RADIO_MDL, factory as radionMdl} from './radio/radio.mdl'; +export {NAME as RADIO_BT, factory as radioBt} from './radio/radio.bt'; +export {NAME as TEXTAREA, directive as TextareaDirective} from './textarea/textarea'; +export {NAME as TEXTAREA_MDL, factory as textareaMdl} from './textarea/textarea.mdl'; +export {NAME as TEXTFIELD, directive as TextfieldDirective} from './textfield/textfield'; +export {NAME as TEXTFIELD_MDL, factory as textfieldMdl} from './textfield/textfield.mdl'; +export {NAME as TEXTFIELD_BT, factory as textfieldBt} from './textfield/textfield.bt'; +export {NAME as LABEL, directive as LabelDirective} from './label/label'; +export {NAME as LABEL_MDL, factory as labelMdl} from './label/label.mdl'; +export {NAME as LABEL_BT, factory as labelBt} from './label/label.bt'; +export {NAME as ICON_BUTTON, directive as IconButtonDirective} from './icon-button/icon-button'; +export {NAME as ICON_BUTTON_MDL, factory as iconButtonMdl} from './icon-button/icon-button.mdl'; +export {NAME as PASSWORD, directive as PasswordDirective} from './password/password'; +export {NAME as PASSWORD_MDL, factory as passwordMdl} from './password/password.mdl'; +export {NAME as SUBMIT, directive as SubmitDirective} from './submit/submit'; +export {NAME as SUBMIT_MDL, factory as submitMdl} from './submit/submit.mdl'; +export {NAME as SNACKBAR, directive as SnackbarDirective} from './snackbar/snackbar'; +export {NAME as SNACKBAR_MDL, factory as snackbarMdl} from './snackbar/snackbar.mdl'; +export {NAME as SPINNER, directive as SpinnerDirective} from './spinner/spinner'; +export {NAME as SPINNER_MDL, factory as spinnerMdl} from './spinner/spinner.mdl'; +export {NAME as COMBO, directive as ComboDirective} from './combo/combo'; +export {NAME as COMBO_MDL, factory as comboMdl} from './combo/combo.mdl'; +export {NAME as DATE_PICKER, directive as DatePickerDirective} from './date-picker/date-picker'; +export {NAME as DATE_PICKER_MDL, factory as datePickerMdl} from './date-picker/date-picker.mdl'; +export {NAME as CARD, directive as CardDirective} from './card/card'; +export {NAME as CARD_MDL, factory as cardMdl} from './card/card.mdl'; +export {NAME as SWITCH, directive as SwitchDirective} from './switch/switch'; +export {NAME as SWITCH_MDL, factory as switchdMdl} from './switch/switch.mdl'; +export {NAME as FLOATBUTTON, directive as FloatButtonDirective} from './floatbutton/floatbutton'; +export {NAME as FLOATBUTTON_MDL, factory as floatButtondMdl} from './floatbutton/floatbutton.mdl'; + +import './icon/index'; +import './autocomplete/index'; +import './popover/index'; +import './dialog/index'; +import './title/index'; +import './subtitle/index'; diff --git a/client/core/src/date-picker/date-picker.js b/client/core/src/date-picker/date-picker.js new file mode 100644 index 000000000..1e5c5a227 --- /dev/null +++ b/client/core/src/date-picker/date-picker.js @@ -0,0 +1,27 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as normalizerFactory from '../inputAttrsNormalizer'; +import * as util from '../util'; + +const _NAME = 'datePicker'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME, normalizerFactory.NAME]; +export function directive(resolve, normalizer) { + return { + restrict: 'E', + template: function(_, attrs) { + normalizer.normalize(attrs); + return resolve.getTemplate(_NAME, attrs); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialTextfield; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + }; +} +_module.directive(NAME, directive); diff --git a/client/core/src/date-picker/date-picker.mdl.html b/client/core/src/date-picker/date-picker.mdl.html new file mode 100644 index 000000000..292b43c09 --- /dev/null +++ b/client/core/src/date-picker/date-picker.mdl.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/client/core/src/date-picker/date-picker.mdl.js b/client/core/src/date-picker/date-picker.mdl.js new file mode 100644 index 000000000..6939367fa --- /dev/null +++ b/client/core/src/date-picker/date-picker.mdl.js @@ -0,0 +1,14 @@ +import {module} from '../module'; +import template from './date-picker.mdl.html'; + +export const NAME = 'vnDatePickerMdlFactory'; +export function factory() { + return { + template: template, + default: { + label: 'Label', + enabled: 'enabled' + } + } +} +module.factory(NAME, factory); diff --git a/client/core/src/dialog/index.js b/client/core/src/dialog/index.js new file mode 100644 index 000000000..e70e1ff83 --- /dev/null +++ b/client/core/src/dialog/index.js @@ -0,0 +1,75 @@ +import {module} from '../module'; +require('./style.css'); + +directive.$inject = ['vnDialog']; +export function directive(dialog) { + return { + restrict: 'A', + link: function($scope, $element, $attrs, $ctrl) { + $element.on('click', function(event) { + dialog.showComponent($attrs.vnDialog, $scope); + event.preventDefault(); + }); + } + } +} +module.directive('vnDialog', directive); + +factory.$inject = ['$document', '$compile']; +export function factory($document, $compile) { + return { + show: function(childElement) { + let background = $document[0].createElement('div'); + background.className = 'vn-background'; + background.addEventListener('mousedown', + this.onBackgroundMouseDown.bind(this)); + this.background = background; + + let dialog = $document[0].createElement('div'); + dialog.className = 'vn-dialog'; + dialog.addEventListener('mousedown', + this.onDialogMouseDown.bind(this)); + dialog.appendChild (childElement); + background.appendChild (dialog); + this.dialog = dialog; + + let style = this.dialog.style; + let screenMargin = 20; + + let width = dialog.offsetWidth; + let height = dialog.offsetHeight; + let innerWidth = window.innerWidth; + let innerHeight = window.innerHeight; + + if(width + screenMargin > innerWidth) { + width = innerWidth - dblMargin; + style.width = width +'px'; + } + if(height + screenMargin > innerHeight) { + height = innerHeight - dblMargin; + style.height = height +'px'; + } + + $document[0].body.appendChild (background); + }, + showComponent: function(childComponent, $scope) { + let childElement = $document[0].createElement(childComponent); + $compile(childElement)($scope); + this.show(childElement); + }, + hide: function() { + $document[0].body.removeChild (this.background); + this.background = null; + this.dialog = null; + this.lastEvent = null; + }, + onDialogMouseDown: function(event) { + this.lastEvent = event; + }, + onBackgroundMouseDown: function(event) { + if (event != this.lastEvent) + this.hide(); + } + }; +} +module.factory('vnDialog', factory); diff --git a/client/core/src/dialog/style.css b/client/core/src/dialog/style.css new file mode 100644 index 000000000..bd60f7e64 --- /dev/null +++ b/client/core/src/dialog/style.css @@ -0,0 +1,22 @@ +.vn-dialog { + position: relative; + box-shadow: 0 0 .4em rgba(1,1,1,.4); + background-color: white; + border-radius: .2em; + overflow: auto; + top: 50%; + left: 50%; + + width: 400px; + margin-top: -150px; + margin-left: -200px; +} +.vn-background { + z-index: 100; + position: fixed; + left: 0; + top: 0; + height: 100%; + width: 100%; + background-color: rgba(1,1,1,.4); +} \ No newline at end of file diff --git a/client/core/src/equals.js b/client/core/src/equals.js new file mode 100644 index 000000000..ee8f76cb4 --- /dev/null +++ b/client/core/src/equals.js @@ -0,0 +1,5 @@ +import {module} from './module'; + +export const NAME = 'equalsObject'; + +module.value(NAME, angular.equals); diff --git a/client/core/src/floatbutton/floatbutton.js b/client/core/src/floatbutton/floatbutton.js new file mode 100644 index 000000000..276ae4618 --- /dev/null +++ b/client/core/src/floatbutton/floatbutton.js @@ -0,0 +1,19 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'floatButton'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + template: function(_, attr) { + return resolve.getTemplate(_NAME, attr); + } + }; +} + +_module.directive(NAME, directive); + diff --git a/client/core/src/floatbutton/floatbutton.mdl.html b/client/core/src/floatbutton/floatbutton.mdl.html new file mode 100644 index 000000000..d9467b5ce --- /dev/null +++ b/client/core/src/floatbutton/floatbutton.mdl.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/client/core/src/floatbutton/floatbutton.mdl.js b/client/core/src/floatbutton/floatbutton.mdl.js new file mode 100644 index 000000000..3a7c5a3d3 --- /dev/null +++ b/client/core/src/floatbutton/floatbutton.mdl.js @@ -0,0 +1,20 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './floatbutton.mdl.html'; + +const _NAME = 'floatButton'; +const DEFAULT_CLASS = 'mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + className: DEFAULT_CLASS + } + }; +} + +_module.factory(NAME, factory); diff --git a/client/core/src/focus.js b/client/core/src/focus.js new file mode 100644 index 000000000..5dcbc0a86 --- /dev/null +++ b/client/core/src/focus.js @@ -0,0 +1,13 @@ +import {module} from './module'; + +export function directive() { + return { + restrict: 'A', + link: function($scope, $element, $attrs) { + var input = $element[0]; + input.focus(); + input.select(); + } + }; +} +module.directive('vnFocus', directive); diff --git a/client/core/src/icon-button/icon-button.js b/client/core/src/icon-button/icon-button.js new file mode 100644 index 000000000..4d52d39fd --- /dev/null +++ b/client/core/src/icon-button/icon-button.js @@ -0,0 +1,17 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'iconButton'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + template: function(_, attr) { + return resolve.getTemplate(_NAME, attr); + } + }; +} +_module.directive(NAME, directive); diff --git a/client/core/src/icon-button/icon-button.mdl.html b/client/core/src/icon-button/icon-button.mdl.html new file mode 100644 index 000000000..bee2a4aaf --- /dev/null +++ b/client/core/src/icon-button/icon-button.mdl.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/client/core/src/icon-button/icon-button.mdl.js b/client/core/src/icon-button/icon-button.mdl.js new file mode 100644 index 000000000..14c9fa2a3 --- /dev/null +++ b/client/core/src/icon-button/icon-button.mdl.js @@ -0,0 +1,15 @@ +import {module} from '../module'; +import template from './icon-button.mdl.html'; + +export const NAME = 'vnIconButtonMdlFactory'; +export function factory() { + return { + template: template, + default: { + enabled: 'enabled', + icon: '', + label: '' + } + }; +} +module.factory(NAME, factory); diff --git a/client/core/src/icon/index.js b/client/core/src/icon/index.js new file mode 100644 index 000000000..78d03912b --- /dev/null +++ b/client/core/src/icon/index.js @@ -0,0 +1,19 @@ +import {module} from '../module'; +export {factory as mdlFactory} from './index.mdl'; +import * as resolveFactory from '../resolveDefaultComponents'; +require('./style.css'); + +const _NAME = 'icon'; +export const NAME = 'vnIcon'; + +export function directive(resolver) { + return { + restrict: 'E', + template: function(_, attrs) { + return resolver.getTemplate(_NAME, attrs); + } + } +} +directive.$inject = [resolveFactory.NAME]; + +module.directive(NAME, directive); diff --git a/client/core/src/icon/index.mdl.html b/client/core/src/icon/index.mdl.html new file mode 100644 index 000000000..f4b1888dd --- /dev/null +++ b/client/core/src/icon/index.mdl.html @@ -0,0 +1 @@ +*[icon]* diff --git a/client/core/src/icon/index.mdl.js b/client/core/src/icon/index.mdl.js new file mode 100644 index 000000000..3084fdd12 --- /dev/null +++ b/client/core/src/icon/index.mdl.js @@ -0,0 +1,12 @@ +import {module} from '../module'; +import template from './index.mdl.html'; + +export const NAME = 'vnIconMdlFactory'; +export function factory() { + return { + template: template, + default: {} + } +} + +module.factory(NAME, factory); diff --git a/client/core/src/icon/style.css b/client/core/src/icon/style.css new file mode 100644 index 000000000..fc4dacc93 --- /dev/null +++ b/client/core/src/icon/style.css @@ -0,0 +1,7 @@ +vn-icon { + display: inline; + font-size: 18pt; +} +vn-icon > i { + font-size: inherit !important; +} \ No newline at end of file diff --git a/client/core/src/inputAttrsNormalizer.js b/client/core/src/inputAttrsNormalizer.js new file mode 100644 index 000000000..873b065b6 --- /dev/null +++ b/client/core/src/inputAttrsNormalizer.js @@ -0,0 +1,39 @@ +import {module} from './module'; + +export const NAME = 'vnInputAttrsNormalizer'; +export class InputAttrsNormalizer { + $get() { + return { + normalize: function(attrs) { + if(attrs.field) { + let split = attrs.field.split('.'); + let len = split.length; + + if(len == 0) + throw new Error (`Attribute 'field' can not be empty`); + if(len > 3) + throw new Error (`Attribute 'field' must have this syntax: [ctrl].[entity].[field]`); + + let i = len - 1; + let field = split[i--]; + let entity = i >= 0 ? split[i--] : 'model'; + let ctrl = i >= 0 ? split[i--] : '$ctrl'; + + if (attrs.model === undefined) + attrs.model = `${ctrl}.${entity}.${field}`; + if (attrs.rule === undefined && len >= 2) + attrs.rule = `${entity}.${field}`; + if (attrs.label === undefined && len >= 2) + attrs.label = `${entity}.${field}`; + if (attrs.name === undefined) + attrs.name = field; + } + + if (attrs.focus !== undefined) + attrs.focus = 'vn-focus'; + } + }; + } +} + +module.provider(NAME, () => new InputAttrsNormalizer()); diff --git a/client/core/src/interpolate.js b/client/core/src/interpolate.js new file mode 100644 index 000000000..bfaacd6fd --- /dev/null +++ b/client/core/src/interpolate.js @@ -0,0 +1,202 @@ +import {module} from './module'; +import {ng} from 'vendor'; +import * as util from './util'; + +export const NAME = util.getProviderName('interpolate'); + +function minErr() {} + +function stringify(value) { + if (value === null) { // null || undefined + return ''; + } + switch (typeof value) { + case 'string': + break; + case 'number': + value = String(value); + break; + default: + value = angular.toJson(value); + } + + return value; +} + +var $interpolateMinErr = ng.angular.$interpolateMinErr = ng.$$minErr('$interpolate'); + +$interpolateMinErr.throwNoconcat = function(text) { + throw $interpolateMinErr('noconcat', + 'Error while interpolating: {0}\nStrict Contextual Escaping disallows ' + + 'interpolations that concatenate multiple expressions when a trusted value is ' + + 'required. See http://docs.angularjs.org/api/ng.$sce', text); +}; + +$interpolateMinErr.interr = function(text, err) { + return $interpolateMinErr('interr', 'Can\'t interpolate: {0}\n{1}', text, err.toString()); +}; + +function $get($parse, $exceptionHandler, $sce) { + var startSymbolLength = this._startSymbol.length, + endSymbolLength = this._endSymbol.length, + escapedStartRegexp = new RegExp(this._startSymbol.replace(/./g, escape), 'g'), + escapedEndRegexp = new RegExp(this._endSymbol.replace(/./g, escape), 'g'), + self = this; + + function escape(ch) { + return '\\\\\\' + ch; + } + + function unescapeText(text) { + return text.replace(escapedStartRegexp, self._startSymbol) + .replace(escapedEndRegexp, self._endSymbol); + } + + // TODO: this is the same as the constantWatchDelegate in parse.js + function constantWatchDelegate(scope, listener, objectEquality, constantInterp) { + var unwatch = scope.$watch(function constantInterpolateWatch(scope) { + unwatch(); + return constantInterp(scope); + }, listener, objectEquality); + return unwatch; + } + + function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) { + // Provide a quick exit and simplified result function for text with no interpolation + if (!text.length || text.indexOf(self._startSymbol) === -1) { + var constantInterp; + if (!mustHaveExpression) { + var unescapedText = unescapeText(text); + constantInterp = valueFn(unescapedText); + constantInterp.exp = text; + constantInterp.expressions = []; + constantInterp.$$watchDelegate = constantWatchDelegate; + } + return constantInterp; + } + + allOrNothing = Boolean(allOrNothing); + var startIndex, + endIndex, + index = 0, + expressions = [], + parseFns = [], + textLength = text.length, + exp, + concat = [], + expressionPositions = []; + + while (index < textLength) { + if (((startIndex = text.indexOf(self._startSymbol, index)) !== -1) && + ((endIndex = text.indexOf(self._endSymbol, startIndex + startSymbolLength)) !== -1)) { + if (index !== startIndex) { + concat.push(unescapeText(text.substring(index, startIndex))); + } + exp = text.substring(startIndex + startSymbolLength, endIndex); + expressions.push(exp); + parseFns.push($parse(exp, parseStringifyInterceptor)); + index = endIndex + endSymbolLength; + expressionPositions.push(concat.length); + concat.push(''); + } else { + // we did not find an interpolation, so we have to add the remainder to the separators array + if (index !== textLength) { + concat.push(unescapeText(text.substring(index))); + } + break; + } + } + + if (trustedContext && concat.length > 1) { + $interpolateMinErr.throwNoconcat(text); + } + + if (!mustHaveExpression || expressions.length) { + var compute = function(values) { + for (var i = 0, ii = expressions.length; i < ii; i++) { + if (allOrNothing && isUndefined(values[i])) return; + concat[expressionPositions[i]] = values[i]; + } + return concat.join(''); + }; + + var getValue = function(value) { + return trustedContext ? + $sce.getTrusted(trustedContext, value) : + $sce.valueOf(value); + }; + + return angular.extend(function interpolationFn(context) { + var i = 0; + var ii = expressions.length; + var values = new Array(ii); + + try { + for (; i < ii; i++) { + values[i] = parseFns[i](context); + } + + return compute(values); + } catch (err) { + $exceptionHandler($interpolateMinErr.interr(text, err)); + } + }, { + // all of these properties are undocumented for now + exp: text, // just for compatibility with regular watchers created via $watch + expressions: expressions + }); + } + + function parseStringifyInterceptor(value) { + try { + value = getValue(value); + return allOrNothing && !isDefined(value) ? value : stringify(value); + } catch (err) { + $exceptionHandler($interpolateMinErr.interr(text, err)); + } + } + } + + $interpolate.startSymbol = function() { + return startSymbol; + }; + + $interpolate.endSymbol = function() { + return endSymbol; + }; + + return $interpolate; +} + +$get.$inject = ['$parse', '$exceptionHandler', '$sce']; + +export class Interpolate +{ + constructor() { + this._startSymbol = '*['; + this._endSymbol = ']*'; + } + + set startSymbol(value) { + if (value) { + this._startSymbol = value; + return this; + } else { + return this._startSymbol; + } + } + + set endSymbol(value) { + if (value) { + this._endSymbol = value; + return this; + } else { + return this._endSymbol; + } + } + +} + +Interpolate.prototype.$get = $get; +var interpolate = new Interpolate(); +module.provider(NAME, () => interpolate); diff --git a/client/core/src/label/label.bt.html b/client/core/src/label/label.bt.html new file mode 100644 index 000000000..b72ceeba6 --- /dev/null +++ b/client/core/src/label/label.bt.html @@ -0,0 +1,2 @@ + + diff --git a/client/core/src/label/label.bt.js b/client/core/src/label/label.bt.js new file mode 100644 index 000000000..af05058f2 --- /dev/null +++ b/client/core/src/label/label.bt.js @@ -0,0 +1 @@ +// por definir diff --git a/client/core/src/label/label.js b/client/core/src/label/label.js new file mode 100644 index 000000000..e82b9bcd3 --- /dev/null +++ b/client/core/src/label/label.js @@ -0,0 +1,18 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'label'; +export const NAME = util.getName(_NAME); + +directive.$inject =[resolveFactory.NAME]; +export function directive (resolve){ + return{ + restrict:'E', + template: function(_,attr){ + return resolve.getTemplate(_NAME, attr); + } + } +} + +_module.directive(NAME,directive); diff --git a/client/core/src/label/label.mdl.html b/client/core/src/label/label.mdl.html new file mode 100644 index 000000000..9f95f13b3 --- /dev/null +++ b/client/core/src/label/label.mdl.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/core/src/label/label.mdl.js b/client/core/src/label/label.mdl.js new file mode 100644 index 000000000..64216fe46 --- /dev/null +++ b/client/core/src/label/label.mdl.js @@ -0,0 +1,20 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './label.mdl.html'; + +const _NAME = 'label'; +const DEFAULT_TEXT = 'label'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + text: DEFAULT_TEXT + } + } +} + +_module.factory(NAME, factory); diff --git a/client/core/src/locale/en.json b/client/core/src/locale/en.json new file mode 100644 index 000000000..f2c3b62b9 --- /dev/null +++ b/client/core/src/locale/en.json @@ -0,0 +1,4 @@ +{ + "Accept": "Accept", + "Cancel": "Cancel" +} \ No newline at end of file diff --git a/client/core/src/locale/es.json b/client/core/src/locale/es.json new file mode 100644 index 000000000..cd2b7eea1 --- /dev/null +++ b/client/core/src/locale/es.json @@ -0,0 +1,4 @@ +{ + "Accept": "Aceptar", + "Cancel": "Cancelar" +} \ No newline at end of file diff --git a/client/core/src/mdl-override.css b/client/core/src/mdl-override.css new file mode 100644 index 000000000..c556fa556 --- /dev/null +++ b/client/core/src/mdl-override.css @@ -0,0 +1,41 @@ +.mdl-textfield { + width: 100%; + padding-bottom: 10px; +} +.mdl-textfield__label::after { + bottom: 10px; +} + +/* TODO: No utilizar !important */ +.mdl-button { + font-weight: bolder; + color: #ffa410; + +} +.mdl-button--colored { + color: white !important; +} +.mdl-button--colored, +.mdl-button--colored:focus, +.mdl-button--colored:active { + background-color: #ffa410 !important; +} +.mdl-button--colored:hover, +.mdl-button--raised:hover { + background-color: #ffa410 !important; +} +.mdl-button--fab{ + color: white !important; + background-color: #ff9400 !important; +} + +.mdl-dialog__actions--full-width>*{ + text-align: center; +} + +.mdl-dialog{ + width: 400px; + font-family: raleway-regular; + line-height:60px; + text-align: center; +} \ No newline at end of file diff --git a/client/core/src/modified.js b/client/core/src/modified.js new file mode 100644 index 000000000..aceaf9a88 --- /dev/null +++ b/client/core/src/modified.js @@ -0,0 +1,27 @@ +import {module} from './module'; +import * as equals from './equals'; + +export const NAME = 'getDataModified'; +export function factory(equalsObject) { + return function getData(object, objectOld) { + var newObject = {}; + for (var k in object) { + var val = object[k]; + var valOld = objectOld[k]; + + if (val instanceof Object && !equalsObject(val, valOld)) { + newObject[k] = getData(val, valOld); + } + else if (val instanceof Array && val.length !== valOld.length) { + newObject[k] = val; + } + else if (val !== valOld) { + newObject[k] = val; + } + } + + return newObject; + } +} +factory.$inject = ['equalsObject']; +module.factory(NAME, factory); diff --git a/client/core/src/module.js b/client/core/src/module.js new file mode 100644 index 000000000..83c25dd76 --- /dev/null +++ b/client/core/src/module.js @@ -0,0 +1,6 @@ +import * as vendors from 'vendor'; +import {getModuleName, getVendorDependencies} from './util'; + +const DEPENDENCIES = getVendorDependencies(vendors); +export const NAME = getModuleName('core'); +export const module = vendors.ng.module(NAME, DEPENDENCIES); diff --git a/client/core/src/moduleLoader.js b/client/core/src/moduleLoader.js new file mode 100644 index 000000000..1387baff5 --- /dev/null +++ b/client/core/src/moduleLoader.js @@ -0,0 +1,48 @@ +import {module} from './module'; +import splitingRegister from './splitingRegister'; + +factory.$inject = ['$translatePartialLoader', '$http', '$window', '$ocLazyLoad', '$q', '$translate']; +export function factory($translatePartialLoader, $http, $window, $ocLazyLoad, $q, $translate) { + class ModuleLoader { + constructor() { + this._loadedModules = {}; + } + load(moduleName) { + if(this._loadedModules[moduleName]) + return; + + this._loadedModules[moduleName] = true; + + let deps = splitingRegister.getDependencies(moduleName); + let modules = splitingRegister.modules; + let promises = []; + + for(let dep of deps) { + this._loadedModules[dep] = true; + promises.push(modules[dep]()); + promises.push(new Promise(resolve => { + $http.get(`/${dep}/validations`).then((json) => { + Object.assign($window.validations, json.data); + resolve(); + }); + })); + + $translatePartialLoader.addPart(dep); + // FIXME: https://github.com/angular-translate/angular-translate/pull/1674 + //promises.push($translate.refresh()); + setTimeout (() => $translate.refresh(), 500); + } + + let ocDeps = deps.map(item => { return { name: item } }); + + return new Promise (resolve => { + Promise.all(promises).then( + () => resolve($ocLazyLoad.load(ocDeps)) + ) + }); + } + } + + return new ModuleLoader(); +}; +module.factory('vnModuleLoader', factory); diff --git a/client/core/src/password/password.js b/client/core/src/password/password.js new file mode 100644 index 000000000..f056706b9 --- /dev/null +++ b/client/core/src/password/password.js @@ -0,0 +1,27 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as normalizerFactory from '../inputAttrsNormalizer'; +import * as util from '../util'; + +const _NAME = 'password'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME, normalizerFactory.NAME]; +export function directive(resolve, normalizer) { + return { + restrict: 'E', + template: function(_, attrs) { + normalizer.normalize(attrs); + return resolve.getTemplate(_NAME, attrs); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialTextfield; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + } +} +_module.directive(NAME,directive); diff --git a/client/core/src/password/password.mdl.html b/client/core/src/password/password.mdl.html new file mode 100644 index 000000000..063ab7d5c --- /dev/null +++ b/client/core/src/password/password.mdl.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/client/core/src/password/password.mdl.js b/client/core/src/password/password.mdl.js new file mode 100644 index 000000000..a4102ef60 --- /dev/null +++ b/client/core/src/password/password.mdl.js @@ -0,0 +1,17 @@ +import {module} from '../module'; +import template from './password.mdl.html'; + +export const NAME = 'vnPasswordMdlFactory'; + +export function factory() { + return { + template: template, + default: { + label: 'Password', + enabled: 'enabled', + className: 'mdl-textfield--floating-label' + } + } +} + +module.factory(NAME, factory); diff --git a/client/core/src/popover/index.js b/client/core/src/popover/index.js new file mode 100644 index 000000000..17bd9a077 --- /dev/null +++ b/client/core/src/popover/index.js @@ -0,0 +1,96 @@ +import {module} from '../module'; +require('./style.css'); + +directive.$inject = ['vnPopover']; +export function directive(popover) { + return { + restrict: 'A', + link: function($scope, $element, $attrs, $ctrl) { + $element.on('click', function(event) { + popover.showComponent($attrs.vnDialog, $scope, $element); + event.preventDefault(); + }); + } + } +} +module.directive('vnPopover', directive); + +factory.$inject = ['$document', '$compile']; +function factory($document, $compile) { + return { + show: function(childElement, parent) { + let popover = $document[0].createElement('div'); + popover.className = 'vn-popover'; + popover.addEventListener('mousedown', + this.onPopoverMouseDown.bind(this)); + popover.appendChild (childElement); + this.popover = popover; + + let style = popover.style; + + let spacing = 0; + let screenMargin = 20; + let dblMargin = screenMargin * 2; + + let width = popover.offsetWidth; + let height = popover.offsetHeight; + let innerWidth = window.innerWidth; + let innerHeight = window.innerHeight; + + if(width + dblMargin > innerWidth) { + width = innerWidth - dblMargin; + style.width = width +'px'; + } + if(height + dblMargin > innerHeight) { + height = innerHeight - dblMargin; + style.height = height +'px'; + } + + if(parent) { + let parentNode = parent; + let rect = parentNode.getBoundingClientRect(); + let left = rect.left; + let top = rect.top + spacing + parentNode.offsetHeight; + + if(left + width > innerWidth) + left -= (left + width) - innerWidth + margin; + if(top + height > innerHeight) + top -= height + parentNode.offsetHeight + spacing * 2; + + if(left < 0) + left = screenMargin; + if(top < 0) + top = screenMargin; + + style.top = (top) +'px'; + style.left = (left) +'px'; + style.minWidth = (rect.width) +'px'; + } + + $document[0].body.appendChild (popover); + this.docMouseDownHandler = this.onDocMouseDown.bind(this); + $document.on('mousedown', this.docMouseDownHandler); + }, + showComponent: function(childComponent, $scope, parent) { + let childElement = $document[0].createElement(childComponent); + $compile(childElement)($scope); + this.show(childElement, parent); + }, + hide: function() { + if(!this.popover) return; + $document.off('mousedown', this.docMouseDownHandler); + $document[0].body.removeChild (this.popover); + this.popover = null; + this.lastEvent = null; + this.docMouseDownHandler = null; + }, + onDocMouseDown: function(event) { + if (event != this.lastEvent) + this.hide(); + }, + onPopoverMouseDown: function(event) { + this.lastEvent = event; + } + }; +} +module.factory('vnPopover', factory); diff --git a/client/core/src/popover/style.css b/client/core/src/popover/style.css new file mode 100644 index 000000000..536359a2f --- /dev/null +++ b/client/core/src/popover/style.css @@ -0,0 +1,9 @@ +.vn-popover { + position: fixed; + box-shadow: 0 0 .4em rgba(1,1,1,.4); + background-color: white; + z-index: 100; + border-radius: .1em; + top: 0; + left: 0; +} \ No newline at end of file diff --git a/client/core/src/radio/radio.bt.html b/client/core/src/radio/radio.bt.html new file mode 100644 index 000000000..b72ceeba6 --- /dev/null +++ b/client/core/src/radio/radio.bt.html @@ -0,0 +1,2 @@ + + diff --git a/client/core/src/radio/radio.bt.js b/client/core/src/radio/radio.bt.js new file mode 100644 index 000000000..af05058f2 --- /dev/null +++ b/client/core/src/radio/radio.bt.js @@ -0,0 +1 @@ +// por definir diff --git a/client/core/src/radio/radio.js b/client/core/src/radio/radio.js new file mode 100644 index 000000000..43cd6bf27 --- /dev/null +++ b/client/core/src/radio/radio.js @@ -0,0 +1,18 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'radio'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return{ + restrict: 'E', + template: function(_, attrs) { + return resolve.getTemplate(_NAME, attrs); + } + } +} + +_module.directive(NAME, directive); diff --git a/client/core/src/radio/radio.mdl.html b/client/core/src/radio/radio.mdl.html new file mode 100644 index 000000000..ea61c7a90 --- /dev/null +++ b/client/core/src/radio/radio.mdl.html @@ -0,0 +1,2 @@ + +*[text]* diff --git a/client/core/src/radio/radio.mdl.js b/client/core/src/radio/radio.mdl.js new file mode 100644 index 000000000..4e97eab65 --- /dev/null +++ b/client/core/src/radio/radio.mdl.js @@ -0,0 +1,21 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './radio.mdl.html'; + +const _NAME = 'radio'; +const DEFAULT_CLASS = 'mdl-radio mdl-js-radio mdl-js-ripple-effect'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + enabled: 'true', + className: DEFAULT_CLASS + } + } +} + +_module.factory(NAME, factory); diff --git a/client/core/src/resolveDefaultComponents.js b/client/core/src/resolveDefaultComponents.js new file mode 100644 index 000000000..5fa37cd75 --- /dev/null +++ b/client/core/src/resolveDefaultComponents.js @@ -0,0 +1,39 @@ +import {module as _module} from './module'; +import * as util from './util'; +import constant from './constants'; +import Interpolate from './interpolate'; + +export const NAME = util.getProviderName('ResolveDefaultComponent'); + +function $get($injector, vnInterpolate) { + return { + getTemplate: function(name, attrs) { + this._frameworkName = 'Mdl'; + let _name = util.getFactoryName(name + this._frameworkName); + let defaultfactory = $injector.has(_name) ? $injector.get(_name) : undefined; + + if (!defaultfactory) { + throw new Error("factory is not defined"); + } + + let defaultValues = defaultfactory.default; + let template = defaultfactory.template; + let scope = Object.assign({}, defaultValues || {}, attrs || {}); + return template && vnInterpolate(template)(scope); + } + }; +} +$get.$inject = ['$injector', 'vnInterpolate']; + +export class ResolveDefaultComponent { + constructor() { + this._frameworkName = 'Mdl'; + } + set frameworkName(value) { + this._frameworkName = value; + } +} + +ResolveDefaultComponent.prototype.$get = $get; +var resolve = new ResolveDefaultComponent(); +_module.provider(NAME, () => resolve); diff --git a/client/core/src/routesLoader.js b/client/core/src/routesLoader.js new file mode 100644 index 000000000..25a0eec6f --- /dev/null +++ b/client/core/src/routesLoader.js @@ -0,0 +1,27 @@ + +import {module as _module} from './module'; +import * as util from './util'; + +export const NAME = util.getProviderName('RoutesLoader'); + +function $get($http) { + let script = document.currentScript || (() => { + let scripts = document.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + let routesCdn = script.getAttribute('routes-cdn'); + + return $http({ + method: 'GET', + url: routesCdn + }); +} + +$get.$inject = ["$http"]; + +export class RoutesLoader { constructor() {} } + +RoutesLoader.prototype.$get = $get; +var routes = new RoutesLoader(); +_module.provider(NAME, () => routes); diff --git a/client/core/src/snackbar/snackbar.js b/client/core/src/snackbar/snackbar.js new file mode 100644 index 000000000..1aa8549ce --- /dev/null +++ b/client/core/src/snackbar/snackbar.js @@ -0,0 +1,28 @@ +import {module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'snackbar'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + template: function(_, attrs) { + return resolve.getTemplate(_NAME, attrs); + }, + controller: controller + } +} +module.directive(NAME, directive); + +controller.$inject = ['$scope', '$element']; +function controller($scope, $element) { + let snackbar = $element[0].firstChild; + componentHandler.upgradeElement (snackbar); + + this.show = function(data) { + snackbar.MaterialSnackbar.showSnackbar(data); + } +} \ No newline at end of file diff --git a/client/core/src/snackbar/snackbar.mdl.html b/client/core/src/snackbar/snackbar.mdl.html new file mode 100644 index 000000000..7b78a7c52 --- /dev/null +++ b/client/core/src/snackbar/snackbar.mdl.html @@ -0,0 +1,4 @@ +
+
+ +
diff --git a/client/core/src/snackbar/snackbar.mdl.js b/client/core/src/snackbar/snackbar.mdl.js new file mode 100644 index 000000000..2811797b5 --- /dev/null +++ b/client/core/src/snackbar/snackbar.mdl.js @@ -0,0 +1,15 @@ +import {module} from '../module'; +import template from './snackbar.mdl.html'; + +export const NAME = 'vnSnackbarMdlFactory'; + +export function factory() { + return { + template: template, + default: { + message: 'Default message' + } + } +} + +module.factory(NAME, factory); diff --git a/client/core/src/spinner/spinner.js b/client/core/src/spinner/spinner.js new file mode 100644 index 000000000..4e60949c6 --- /dev/null +++ b/client/core/src/spinner/spinner.js @@ -0,0 +1,41 @@ +import {module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'spinner'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + scope: { + enable: '=' + }, + template: function(element, attrs) { + return resolve.getTemplate(_NAME, attrs); + }, + controller: controller + } +} +module.directive(NAME, directive); + +controller.$inject = ['$scope', '$element']; +function controller($scope, $element) { + let spinner = $element[0].firstChild; + componentHandler.upgradeElement (spinner); + + this.start = function() { + spinner.MaterialSpinner.start(); + } + this.stop = function() { + spinner.MaterialSpinner.stop(); + } + + $scope.$watch('enable', (newValue) => { + if (newValue) + this.start(); + else + this.stop(); + }); +} diff --git a/client/core/src/spinner/spinner.mdl.html b/client/core/src/spinner/spinner.mdl.html new file mode 100644 index 000000000..9209a293b --- /dev/null +++ b/client/core/src/spinner/spinner.mdl.html @@ -0,0 +1,5 @@ +
+
\ No newline at end of file diff --git a/client/core/src/spinner/spinner.mdl.js b/client/core/src/spinner/spinner.mdl.js new file mode 100644 index 000000000..79f53741a --- /dev/null +++ b/client/core/src/spinner/spinner.mdl.js @@ -0,0 +1,9 @@ +import {module} from '../module'; + +export const NAME = 'vnSpinnerMdlFactory'; +export function factory() { + return { + template: require('./spinner.mdl.html') + } +} +module.factory(NAME, factory); diff --git a/client/core/src/splitingRegister.js b/client/core/src/splitingRegister.js new file mode 100644 index 000000000..28daae062 --- /dev/null +++ b/client/core/src/splitingRegister.js @@ -0,0 +1,29 @@ + +class SplitingRegister { + constructor() { + this._graph = null; + this._modules = {}; + } + get modules() { + return this._modules; + } + getDependencies(dependency) { + var array = []; + array.push(dependency); + var first = this._graph[dependency]; + + while (first && first.length > 0) { + dependency = first.shift(); + array = array.concat(this.getDependencies(dependency)); + } + return array; + } + registerGraph(graph) { + this._graph = graph; + } + register(moduleName, loader) { + this._modules[moduleName] = loader; + } +} + +export default new SplitingRegister(); diff --git a/client/core/src/submit/submit.js b/client/core/src/submit/submit.js new file mode 100644 index 000000000..067f0fa83 --- /dev/null +++ b/client/core/src/submit/submit.js @@ -0,0 +1,18 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'submit'; +export const NAME = util.getName(_NAME); + +directive.$inject =[resolveFactory.NAME]; +export function directive (resolve){ + return{ + restrict:'E', + template: function(_,attr){ + return resolve.getTemplate(_NAME, attr); + } + } +} + +_module.directive(NAME,directive); diff --git a/client/core/src/submit/submit.mdl.html b/client/core/src/submit/submit.mdl.html new file mode 100644 index 000000000..d6fc98b52 --- /dev/null +++ b/client/core/src/submit/submit.mdl.html @@ -0,0 +1,2 @@ + + diff --git a/client/core/src/submit/submit.mdl.js b/client/core/src/submit/submit.mdl.js new file mode 100644 index 000000000..c739ec321 --- /dev/null +++ b/client/core/src/submit/submit.mdl.js @@ -0,0 +1,17 @@ +import {module} from '../module'; +import template from './submit.mdl.html'; + +export const NAME = 'vnSubmitMdlFactory'; + +export function factory() { + return { + template: template, + default: { + label: 'Submit', + className: 'mdl-button mdl-js-button mdl-button--raised mdl-button--colored', + enabled: 'true' + } + } +} + +module.factory(NAME, factory); diff --git a/client/core/src/subtitle/index.html b/client/core/src/subtitle/index.html new file mode 100644 index 000000000..ac00ac0c2 --- /dev/null +++ b/client/core/src/subtitle/index.html @@ -0,0 +1,2 @@ +
+
\ No newline at end of file diff --git a/client/core/src/subtitle/index.js b/client/core/src/subtitle/index.js new file mode 100644 index 000000000..b7f4bf897 --- /dev/null +++ b/client/core/src/subtitle/index.js @@ -0,0 +1,7 @@ +import {module} from '../module'; + +export const component = { + template: require('./index.html'), + transclude: true +}; +module.component('vnSubtitle', component); diff --git a/client/core/src/switch/switch.js b/client/core/src/switch/switch.js new file mode 100644 index 000000000..5f52f2d09 --- /dev/null +++ b/client/core/src/switch/switch.js @@ -0,0 +1,29 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as normalizerFactory from '../inputAttrsNormalizer'; +import * as util from '../util'; + +const _NAME = 'switch'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME, normalizerFactory.NAME]; +export function directive(resolve, normalizer) { + return { + restrict: 'E', + template: function(_, attrs) { + normalizer.normalize(attrs); + return resolve.getTemplate(_NAME, attrs); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialSwitch; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + }; +} + +_module.directive(NAME, directive); + diff --git a/client/core/src/switch/switch.mdl.html b/client/core/src/switch/switch.mdl.html new file mode 100644 index 000000000..815bff86a --- /dev/null +++ b/client/core/src/switch/switch.mdl.html @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/client/core/src/switch/switch.mdl.js b/client/core/src/switch/switch.mdl.js new file mode 100644 index 000000000..13cd5c5d5 --- /dev/null +++ b/client/core/src/switch/switch.mdl.js @@ -0,0 +1,21 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './switch.mdl.html'; + +const _NAME = 'switch'; +const DEFAULT_CLASS = 'mdl-switch__input'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + className: DEFAULT_CLASS, + label: "" + } + }; +} + +_module.factory(NAME, factory); diff --git a/client/core/src/textarea/textarea.js b/client/core/src/textarea/textarea.js new file mode 100644 index 000000000..04f45de3b --- /dev/null +++ b/client/core/src/textarea/textarea.js @@ -0,0 +1,27 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as util from '../util'; + +const _NAME = 'textarea'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME]; +export function directive(resolve) { + return { + restrict: 'E', + template: function(_, attr) { + return resolve.getTemplate(_NAME, attr); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialTextfield; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + }; +} + +_module.directive(NAME, directive); + diff --git a/client/core/src/textarea/textarea.mdl.html b/client/core/src/textarea/textarea.mdl.html new file mode 100644 index 000000000..2650efa0f --- /dev/null +++ b/client/core/src/textarea/textarea.mdl.html @@ -0,0 +1,4 @@ +
+ + +
\ No newline at end of file diff --git a/client/core/src/textarea/textarea.mdl.js b/client/core/src/textarea/textarea.mdl.js new file mode 100644 index 000000000..2cc5bf36a --- /dev/null +++ b/client/core/src/textarea/textarea.mdl.js @@ -0,0 +1,23 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './textarea.mdl.html'; + +const _NAME = 'textarea'; +const DEFAULT_LABEL = 'textarea'; +const DEFAULT_ROWS = 3; + + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + label: DEFAULT_LABEL, + rows: DEFAULT_ROWS + } + }; +} + +_module.factory(NAME, factory); diff --git a/client/core/src/textfield/textfield.bt.html b/client/core/src/textfield/textfield.bt.html new file mode 100644 index 000000000..b72ceeba6 --- /dev/null +++ b/client/core/src/textfield/textfield.bt.html @@ -0,0 +1,2 @@ + + diff --git a/client/core/src/textfield/textfield.bt.js b/client/core/src/textfield/textfield.bt.js new file mode 100644 index 000000000..af05058f2 --- /dev/null +++ b/client/core/src/textfield/textfield.bt.js @@ -0,0 +1 @@ +// por definir diff --git a/client/core/src/textfield/textfield.js b/client/core/src/textfield/textfield.js new file mode 100644 index 000000000..05f86ebd5 --- /dev/null +++ b/client/core/src/textfield/textfield.js @@ -0,0 +1,28 @@ +import {module as _module} from '../module'; +import * as resolveFactory from '../resolveDefaultComponents'; +import * as normalizerFactory from '../inputAttrsNormalizer'; +import * as util from '../util'; + +const _NAME = 'textfield'; +export const NAME = util.getName(_NAME); + +directive.$inject = [resolveFactory.NAME, normalizerFactory.NAME]; +export function directive(resolve, normalizer) { + return { + restrict: 'E', + template: function(_, attrs) { + normalizer.normalize(attrs); + return resolve.getTemplate(_NAME, attrs); + }, + link: function(scope, element, attrs) { + scope.$watch(attrs.model, () => { + let mdlField = element[0].firstChild.MaterialTextfield; + if (mdlField) + mdlField.updateClasses_(); + }); + componentHandler.upgradeElement(element[0].firstChild); + } + }; +} + +_module.directive(NAME, directive); diff --git a/client/core/src/textfield/textfield.mdl.html b/client/core/src/textfield/textfield.mdl.html new file mode 100644 index 000000000..2e194ad1a --- /dev/null +++ b/client/core/src/textfield/textfield.mdl.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/client/core/src/textfield/textfield.mdl.js b/client/core/src/textfield/textfield.mdl.js new file mode 100644 index 000000000..9990c1a14 --- /dev/null +++ b/client/core/src/textfield/textfield.mdl.js @@ -0,0 +1,24 @@ +import {module as _module} from '../module'; +import * as util from '../util'; +import * as constant from '../constants'; +import template from './textfield.mdl.html'; + +const _NAME = 'textfield'; +const DEFAULT_LABEL = 'text'; +const DEFAULT_CLASS = 'mdl-textfield--floating-label'; +const DEFAULT_TYPE = 'text'; + +export const NAME = util.getFactoryName(_NAME + constant.MATERIAL_DESIGN_FRAMEWORK); + +export function factory() { + return { + template: template, + default: { + label: DEFAULT_LABEL, + className: DEFAULT_CLASS, + type: DEFAULT_TYPE + } + }; +} + +_module.factory(NAME, factory); diff --git a/client/core/src/title/index.html b/client/core/src/title/index.html new file mode 100644 index 000000000..e8ab561ed --- /dev/null +++ b/client/core/src/title/index.html @@ -0,0 +1,2 @@ +

+

\ No newline at end of file diff --git a/client/core/src/title/index.js b/client/core/src/title/index.js new file mode 100644 index 000000000..2870112ab --- /dev/null +++ b/client/core/src/title/index.js @@ -0,0 +1,7 @@ +import {module} from '../module'; + +export const component = { + template: require('./index.html'), + transclude: true +}; +module.component('vnTitle', component); diff --git a/client/core/src/util.js b/client/core/src/util.js new file mode 100644 index 000000000..b0da3807c --- /dev/null +++ b/client/core/src/util.js @@ -0,0 +1,47 @@ +import * as constant from './constants'; + +const FACTORY = 'Factory'; +const SERVICE = 'Service'; + +export function getName(name) { + return constant.PREFIX + toUpperCamelCase(name); +} + +export function toUpperCamelCase(stringToConvert) { + return stringToConvert.substr(0, 1).toUpperCase() + stringToConvert.substr(1); +} + +export function getFactoryName(name) { + return getName(name) + FACTORY; +} + +export function getServiceName(name) { + return getName(name) + SERVICE; +} + +export function getModuleName(name) { + return constant.PREFIX + name; +} + +export function getProviderNameFromConfig(name) { + return getName(name) + 'Provider'; +} + +export function getProviderName(name) { + return getName(name); +} + +export function getTemplateName(componentName, frameworkName) { + return componentName + '.' + frameworkName + '.html'; +} + +export function getVendorDependencies(vendors) { + let dependencies = []; + Object.keys(vendors).forEach(vendor => { + let name = vendors[vendor].name; + if (name) { + dependencies.push(name); + } + }); + return dependencies; +} diff --git a/client/core/src/validation.js b/client/core/src/validation.js new file mode 100644 index 000000000..cc3eea55c --- /dev/null +++ b/client/core/src/validation.js @@ -0,0 +1,83 @@ +import {module} from './module'; + +directive.$inject = ['$interpolate', '$compile', 'validationRules', 'validatorjs'] +export function directive(interpolate, compile, validationRules, validatorjs) { + return { + restrict: 'A', + require: ['ngModel', '^^form'], + link: function (scope, element, attrs, ctrl) { + var validator = scope.$eval(attrs.validation, validationRules), + input = ctrl[0], + form = ctrl[1], + messages = [], + customValidator = {}, + parentMessage; + + scope.$on('destroy', function () { + customValidator = null; + }); + + function isFunction(key) { + return key && typeof validator[key] === 'function'; + } + function setError(key,message) { + var validator; + (validator=customValidator[key]) && validator.text(message); + } + function validate(key) { + + return function (value) { + var params = [value].concat((validator[key].args || [])), + _validator = validator[key], + isValid = false; + if (isFunction(key)) { + try { + _validator(value); + return true; + } + catch (error) { + setError(key,error.message) + return false; + } + + } else { + isValid = validatorjs[key].apply(validatorjs, params); + if (!isValid) { + setError(key,_validator.msg) + } + return isValid; + } + } + } + function createMessage(form, input, key) { + var template = "
"; + var span = interpolate(template)({ form: form, input: input, key: key }); + var element = angular.element(span); + return element; + } + function createMessages(form, input) { + var template = "
"; + return interpolate(template)({ form: form, input: input }); + } + + if (validator) { + Object.keys(validator).forEach(function (key) { + var element = createMessage(form.$name, input.$name, key); + input.$validators[key] = validate(key); + customValidator[key] = element; + messages.push(element); + }); + if (messages.length > 0) { + parentMessage = angular.element(createMessages(form.$name, input.$name)); + messages.forEach(function (item) { + parentMessage.append(item); + }); + messages = null; + element.after(compile(parentMessage)(scope)); + } + } + + } + } +} +module.directive('vnValidation', directive); \ No newline at end of file diff --git a/client/salix/index.js b/client/salix/index.js new file mode 100644 index 000000000..cb9a3f178 --- /dev/null +++ b/client/salix/index.js @@ -0,0 +1 @@ +export * from './src/app' diff --git a/client/salix/package.json b/client/salix/package.json new file mode 100644 index 000000000..97df134f1 --- /dev/null +++ b/client/salix/package.json @@ -0,0 +1,10 @@ +{ + "name": "@salix/salix", + "version": "0.0.0", + "description": "", + "main": "index.js", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + } +} diff --git a/client/salix/src/app.js b/client/salix/src/app.js new file mode 100644 index 000000000..13f3f09cd --- /dev/null +++ b/client/salix/src/app.js @@ -0,0 +1,11 @@ +import './module'; +import './spliting'; +import './configroutes'; +import './config'; +import './run'; +import './components'; +import './styles/index'; + +import {bootstrap} from './bootstrap'; + +bootstrap(); diff --git a/client/salix/src/bootstrap.js b/client/salix/src/bootstrap.js new file mode 100644 index 000000000..183515c91 --- /dev/null +++ b/client/salix/src/bootstrap.js @@ -0,0 +1,17 @@ +import {ng} from 'vendor'; +import {NAME as SALIX} from './module'; + +export const bootstrap = () => { + const selector = 'selector' + + let _script = document.currentScript || (() => { + let scripts = document.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + let _element = _script && document.querySelector(_script.getAttribute(selector)); + if (!_element) { + throw new Error("element is not defined"); + } + ng.bootstrap(_element, [SALIX]); +}; diff --git a/client/salix/src/components.js b/client/salix/src/components.js new file mode 100644 index 000000000..905f67603 --- /dev/null +++ b/client/salix/src/components.js @@ -0,0 +1,7 @@ +export {NAME as APP, COMPONENT as APP_COMPONENT} from './components/app/app'; +export {NAME as VN_MAINMENU, COMPONENT as VN_MAINMENU_COMPONENT} from './components/main-menu/main-menu'; +export {NAME as ACTIONS, COMPONENT as ACTIONS_COMPONENT} from './components/left-menu/actions'; +export {NAME as LEFT_MENU, COMPONENT as LEFTMENU_COMPONENT} from './components/left-menu/left-menu'; +export {NAME as MENU_ITEM, COMPONENT as MENU_ITEM_COMPONENT} from './components/left-menu/menu-item'; +export {NAME as TOPBAR, COMPONENT as TOPBAR_COMPONENT} from './components/topbar/topbar'; +export {NAME as SEARCHBAR, COMPONENT as SEARCHBAR_COMPONENT} from './components/searchbar/searchbar'; \ No newline at end of file diff --git a/client/salix/src/components/app/app.html b/client/salix/src/components/app/app.html new file mode 100644 index 000000000..45bc7bcef --- /dev/null +++ b/client/salix/src/components/app/app.html @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/client/salix/src/components/app/app.js b/client/salix/src/components/app/app.js new file mode 100644 index 000000000..b63ae7a75 --- /dev/null +++ b/client/salix/src/components/app/app.js @@ -0,0 +1,58 @@ +require('./style.css'); +import {module} from '../../module'; + +export const NAME = 'vnApp'; +export const COMPONENT = { + template: require('./app.html') +}; +module.component(NAME, COMPONENT); + +vnAppLogger.$inject = ['$document']; +function vnAppLogger($document) { + return { + showMessage: function (message) { + let snackbar = $document.find('vn-snackbar').controller('vnSnackbar'); + snackbar.show({message: message}); + }, + showError: function(message) { + this.showMessage(`Error: ${message}`); + } + } +} +module.provider('vnAppLogger', function() {this.$get = vnAppLogger;}); + +vnAppInterceptor.$inject = ['$q', '$rootScope', 'vnAppLogger']; +function vnAppInterceptor($q, $rootScope, logger) { + $rootScope.loading = false; + return { + request: function(config) { + $rootScope.loading = true; + return config; + }, + requestError: function(rejection) { + return $q.reject(rejection); + }, + response: function(response) { + switch (response.config.method) { + case 'PUT': + case 'POST': + logger.showMessage('Data saved!'); + } + $rootScope.loading = false; + return response; + }, + responseError: function(rejection) { + $rootScope.loading = false; + let message = rejection.data.error.message; + logger.showError(message); + return $q.reject(rejection); + } + }; +} +module.factory('vnAppInterceptor', vnAppInterceptor); + +interceptorConfig.$inject = ['$httpProvider']; +function interceptorConfig($httpProvider) { + $httpProvider.interceptors.push('vnAppInterceptor'); +} +module.config(interceptorConfig); diff --git a/client/salix/src/components/app/style.css b/client/salix/src/components/app/style.css new file mode 100644 index 000000000..bed52ea92 --- /dev/null +++ b/client/salix/src/components/app/style.css @@ -0,0 +1,18 @@ +body { + height: 100%; +} + +vn-app { + display: block; + height: 100%; +} + +vn-app vn-spinner { + display: block; + padding: 1em; +} + +.main-view > * { + height: 100%; + overflow: auto; +} \ No newline at end of file diff --git a/client/salix/src/components/left-menu/actions.html b/client/salix/src/components/left-menu/actions.html new file mode 100644 index 000000000..b794c7faa --- /dev/null +++ b/client/salix/src/components/left-menu/actions.html @@ -0,0 +1,5 @@ + + + diff --git a/client/salix/src/components/left-menu/actions.js b/client/salix/src/components/left-menu/actions.js new file mode 100644 index 000000000..a477eb0a3 --- /dev/null +++ b/client/salix/src/components/left-menu/actions.js @@ -0,0 +1,12 @@ +import template from './actions.html'; +import {module} from '../../module'; + +export const NAME = 'vnActions'; +export const COMPONENT = { + template: template, + controllerAs: "action", + bindings: { + items: '<' + } +}; +module.component(NAME, COMPONENT); diff --git a/client/salix/src/components/left-menu/left-menu.html b/client/salix/src/components/left-menu/left-menu.html new file mode 100644 index 000000000..13b34f564 --- /dev/null +++ b/client/salix/src/components/left-menu/left-menu.html @@ -0,0 +1,5 @@ + + + + + diff --git a/client/salix/src/components/left-menu/left-menu.js b/client/salix/src/components/left-menu/left-menu.js new file mode 100644 index 000000000..9c0232413 --- /dev/null +++ b/client/salix/src/components/left-menu/left-menu.js @@ -0,0 +1,13 @@ +require('./style.css'); +import template from './left-menu.html'; +import {module} from '../../module'; + +export const NAME = "vnLeftMenu"; +export const COMPONENT = { + template: template, + controllerAs: "menu", + bindings: { + items: '<' + } +}; +module.component(NAME, COMPONENT); diff --git a/client/salix/src/components/left-menu/menu-item.html b/client/salix/src/components/left-menu/menu-item.html new file mode 100644 index 000000000..5bffa626d --- /dev/null +++ b/client/salix/src/components/left-menu/menu-item.html @@ -0,0 +1,7 @@ +
  • + + keyboard_arrow_right + {{menu.item.icon}} + {{menu.item.description}} + +
  • \ No newline at end of file diff --git a/client/salix/src/components/left-menu/menu-item.js b/client/salix/src/components/left-menu/menu-item.js new file mode 100644 index 000000000..b85250bc7 --- /dev/null +++ b/client/salix/src/components/left-menu/menu-item.js @@ -0,0 +1,12 @@ +import template from './menu-item.html'; +import {module} from '../../module'; + +export const NAME = 'vnMenuItem'; +export const COMPONENT = { + template: template, + controllerAs: "menu", + bindings: { + item: '<' + } +}; +module.component(NAME, COMPONENT); diff --git a/client/salix/src/components/left-menu/style.css b/client/salix/src/components/left-menu/style.css new file mode 100644 index 000000000..31f3d8578 --- /dev/null +++ b/client/salix/src/components/left-menu/style.css @@ -0,0 +1,4 @@ +vn-menu-item a:hover { + color: white !important; + background-color: #424242; +} diff --git a/client/salix/src/components/main-menu/main-menu.html b/client/salix/src/components/main-menu/main-menu.html new file mode 100644 index 000000000..dff65a946 --- /dev/null +++ b/client/salix/src/components/main-menu/main-menu.html @@ -0,0 +1,15 @@ +
    + + + + + + + +
    \ No newline at end of file diff --git a/client/salix/src/components/main-menu/main-menu.js b/client/salix/src/components/main-menu/main-menu.js new file mode 100644 index 000000000..fbdda0972 --- /dev/null +++ b/client/salix/src/components/main-menu/main-menu.js @@ -0,0 +1,24 @@ +import './style.scss'; +import {module} from '../../module'; + +export const NAME = 'vnMainMenu'; +export const COMPONENT = { + template: require('./main-menu.html'), + controllerAs: "mainMenu", + controller: controller +}; +module.component(NAME, COMPONENT); + +controller.$inject = ['$translate']; +function controller($translate, $translatePartialLoader) { + this.onLogoutClick = function() { + let appName = 'salix'; + document.cookie = `${appName}-session=; expires=Thu, 01 Jan 1970 00:00:01 GMT;`; + window.location = `/account?api_key=${appName}`; + }; + this.onChangeLanguage = function() { + let lang = $translate.use() == 'en' ? 'es' : 'en'; + $translate.use(lang); + console.log (`Locale changed: ${lang}`); + }; +} \ No newline at end of file diff --git a/client/salix/src/components/main-menu/style.scss b/client/salix/src/components/main-menu/style.scss new file mode 100644 index 000000000..55dccc462 --- /dev/null +++ b/client/salix/src/components/main-menu/style.scss @@ -0,0 +1,13 @@ +vn-main-menu { + vn-icon { + padding: .1em; + border-radius: .1em; + vertical-align: middle; + font-size: 24px; + + &:hover { + cursor: pointer; + opacity: .85; + } + } +} \ No newline at end of file diff --git a/client/salix/src/components/searchbar/searchbar.html b/client/salix/src/components/searchbar/searchbar.html new file mode 100644 index 000000000..102ff6cce --- /dev/null +++ b/client/salix/src/components/searchbar/searchbar.html @@ -0,0 +1,12 @@ +
    + + + + + + +
    \ No newline at end of file diff --git a/client/salix/src/components/searchbar/searchbar.js b/client/salix/src/components/searchbar/searchbar.js new file mode 100644 index 000000000..9a013a5e7 --- /dev/null +++ b/client/salix/src/components/searchbar/searchbar.js @@ -0,0 +1,34 @@ +import {module} from '../../module'; +require('./style.css'); + +export const NAME = 'vnSearchbar' +export const COMPONENT = { + template: require('./searchbar.html'), + bindings: { + model: '<', + search: '&', + advanced: '=', + popover: '@' + }, + controller: controller +}; +module.component(NAME, COMPONENT); + +controller.$inject = ['$element', '$scope', '$document', '$compile', 'vnPopover']; +function controller($element, $scope, $document, $compile, popover) { + this.onClick = function(event) { + var child = $document[0].createElement(this.popover); + $compile(child)($scope); + popover.show(child, $element[0]); + + // XXX: ¿Existe una forma más adecuada de acceder al controlador de un componente? + var childCtrl = angular.element(child).isolateScope().$ctrl; + childCtrl.onSubmit = () => { + popover.hide(); + this.model.params = childCtrl.filter; + this.search(); + }; + + event.preventDefault(); + }; +} diff --git a/client/salix/src/components/searchbar/style.css b/client/salix/src/components/searchbar/style.css new file mode 100644 index 000000000..e69de29bb diff --git a/client/salix/src/components/topbar/topbar.html b/client/salix/src/components/topbar/topbar.html new file mode 100644 index 000000000..1db5913ae --- /dev/null +++ b/client/salix/src/components/topbar/topbar.html @@ -0,0 +1,2 @@ +
    +
    \ No newline at end of file diff --git a/client/salix/src/components/topbar/topbar.js b/client/salix/src/components/topbar/topbar.js new file mode 100644 index 000000000..72e676587 --- /dev/null +++ b/client/salix/src/components/topbar/topbar.js @@ -0,0 +1,8 @@ +import {module} from '../../module'; + +export const NAME = 'vnTopbar'; +export const COMPONENT = { + template: require('./topbar.html'), + transclude: true +}; +module.component(NAME, COMPONENT); diff --git a/client/salix/src/config.js b/client/salix/src/config.js new file mode 100644 index 000000000..f5fb50527 --- /dev/null +++ b/client/salix/src/config.js @@ -0,0 +1,13 @@ +import {module} from './module'; + +config.$inject = ['$translatePartialLoaderProvider']; +export function config($translatePartialLoaderProvider) { + $translatePartialLoaderProvider.addPart('salix'); +} +module.config(config); + +run.$inject = ['$window', '$rootScope']; +export function run($window, $rootScope) { + $window.validations = {}; +} +module.run(run); diff --git a/client/salix/src/configroutes.js b/client/salix/src/configroutes.js new file mode 100644 index 000000000..de7f5c7c6 --- /dev/null +++ b/client/salix/src/configroutes.js @@ -0,0 +1,47 @@ +import './spliting'; +import deps from 'spliting/modules.json'; +import {module} from './module'; +import {splitingRegister} from 'core'; + +function loader(moduleName) { + load.$inject = ['vnModuleLoader']; + function load(moduleLoader) { + return moduleLoader.load(moduleName); + } + return load; +} + +config.$inject = ['$stateProvider', '$urlRouterProvider']; +function config($stateProvider, $urlRouterProvider) { + splitingRegister.registerGraph(deps); + + function getParams(route) { + let params = '', + temporalParams = []; + + if (!route.params) { + return params; + } + + Object.keys(route.params).forEach(key => { + temporalParams.push(`${key} = "${route.params[key]}"`); + }); + return temporalParams.join(' '); + } + + for (let file in routes) { + let fileRoutes = routes[file].routes; + let moduleName = routes[file].module; + + fileRoutes.forEach(function(route) { + $stateProvider.state(route.state, { + url: route.url, + template: `<${route.component} ${getParams(route)}>`, + resolve: { + loader: loader(moduleName) + } + }); + }); + } +} +module.config(config); diff --git a/client/salix/src/locale/en.json b/client/salix/src/locale/en.json new file mode 100644 index 000000000..9cec3e704 --- /dev/null +++ b/client/salix/src/locale/en.json @@ -0,0 +1,7 @@ +{ + "Applications": "Applications", + "Notifications":"Notifications", + "Logout": "Logout", + "Change language": "Change language", + "Profile": "Profile" +} \ No newline at end of file diff --git a/client/salix/src/locale/es.json b/client/salix/src/locale/es.json new file mode 100644 index 000000000..3f4bf683c --- /dev/null +++ b/client/salix/src/locale/es.json @@ -0,0 +1,7 @@ +{ + "Applications": "Aplicaciones", + "Notifications":"Notificaciones", + "Logout": "Cerrar sesión", + "Change language": "Cambiar idioma", + "Profile": "Perfil" +} \ No newline at end of file diff --git a/client/salix/src/module.js b/client/salix/src/module.js new file mode 100644 index 000000000..99dbd0b5c --- /dev/null +++ b/client/salix/src/module.js @@ -0,0 +1,6 @@ +import * as vendors from 'vendor'; +import * as core from 'core'; +import {NAME as CORE} from 'core'; + +export const NAME = 'salix'; +export const module = vendors.ng.module(NAME, [CORE]); diff --git a/client/salix/src/package.json b/client/salix/src/package.json new file mode 100644 index 000000000..626726422 --- /dev/null +++ b/client/salix/src/package.json @@ -0,0 +1,10 @@ +{ + "name": "@salix/core", + "version": "0.0.0", + "description": "", + "main": "index.js", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + } +} diff --git a/client/salix/src/run.js b/client/salix/src/run.js new file mode 100644 index 000000000..909e8715e --- /dev/null +++ b/client/salix/src/run.js @@ -0,0 +1,14 @@ +import {module} from './module'; + +const HOOK_ABORTED_TRANSITION = 3; + +run.$inject = ['$rootScope', '$state']; +export function run ($rootScope, $state) { + $rootScope.$on('$viewContentLoaded', () => {}); + window.myAppErrorLog = []; + $state.defaultErrorHandler(function(error) { + if (error.type === HOOK_ABORTED_TRANSITION) + window.myAppErrorLog.push(error); + }); +} +module.run(run); diff --git a/client/salix/src/styles/background.scss b/client/salix/src/styles/background.scss new file mode 100644 index 000000000..478181070 --- /dev/null +++ b/client/salix/src/styles/background.scss @@ -0,0 +1,36 @@ +@import "colors"; + +$bg-main: $color-green; +$bg-minor: $color-orange; +$bg-content: $color-light-grey; +$bg-panel: $color-white; +$bg-dark-bar: $color-dark; +$bg-dark-menu: $color-dark-grey; + +html [bg-main], .bg-main { + background-color: $bg-main; +} +html [bg-minor], .bg-minor { + background-color: $bg-minor; +} +html [bg-content], .bg-content { + background-color: $bg-content; +} +html [bg-panel], .bg-panel { + background-color: $bg-panel; +} +html [bg-dark-bar], .bg-dark-bar { + background-color: $bg-dark-bar; +} +html [bg-dark-menu], .bg-dark-menu { + background-color: darken($bg-dark-menu, 35%); +} +/* Color para items seleccionados */ +.bg-dark-item{ + background-color: $bg-dark-bar; + color: $color-white; +} +/* Color para items inactivos */ +.bg-opacity-item{ + opacity: 0.6; +} diff --git a/client/salix/src/styles/border.scss b/client/salix/src/styles/border.scss new file mode 100644 index 000000000..3eb08176d --- /dev/null +++ b/client/salix/src/styles/border.scss @@ -0,0 +1,45 @@ +@import "colors"; + +$border-color: #AAA; +$border-thin: 1px; +$border-thick: 2px; + +html [border-none], .border-none { + border: 0; +} + +/* Solid border */ + +html [border-solid], .border-solid { + border: $border-thin solid $border-color; +} +html [border-solid-top], .border-solid-top { + border-top: $border-thin solid $border-color; +} +html [border-solid-left], .border-solid-left { + border-left: $border-thin solid $border-color; +} +html [border-solid-right], .border-solid-right { + border-right: $border-thin solid $border-color; +} +html [border-solid-bottom], .border-solid-bottom { + border-bottom: $border-thin solid $border-color; +} + +/* Dashed border */ + +html [border-dashed], .border-dashed { + border: $border-thin dashed $border-color; +} +html [border-dashed-top], .border-dashed-top { + border-top: $border-thin dashed $border-color; +} +html [border-dashed-left], .border-dashed-left { + border-left: $border-thin dashed $border-color; +} +html [border-dashed-right], .border-dashed-right { + border-right: $border-thin dashed $border-color; +} +html [border-dashed-bottom], .border-dashed-bottom { + border-bottom: $border-thin dashed $border-color; +} diff --git a/client/salix/src/styles/colors.scss b/client/salix/src/styles/colors.scss new file mode 100644 index 000000000..9638ac0c8 --- /dev/null +++ b/client/salix/src/styles/colors.scss @@ -0,0 +1,7 @@ + +$color-green: rgb(139,195,74); +$color-orange: rgb(255,171,64); +$color-white: white; +$color-dark: #3c393b; +$color-dark-grey: #424242; +$color-light-grey: #e6e6e6; \ No newline at end of file diff --git a/client/salix/src/styles/display.css b/client/salix/src/styles/display.css new file mode 100644 index 000000000..442c0e6db --- /dev/null +++ b/client/salix/src/styles/display.css @@ -0,0 +1,52 @@ +.display-block{ + display: block; +} + +/*angular-paging*/ +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.form-group { + margin-bottom: 15px; +} + +.pagination>li.active>a { + background: #4f94ce; + color: #fff; +} +ul.pagination li a:hover:not(.active) {background-color: #ddd;} +/* fin angular-paging*/ diff --git a/client/salix/src/styles/font-family.css b/client/salix/src/styles/font-family.css new file mode 100644 index 000000000..3fc6b8fcd --- /dev/null +++ b/client/salix/src/styles/font-family.css @@ -0,0 +1,21 @@ +@font-face { + font-family: raleway-italic; + src: url(./fonts/Raleway-Italic.ttf); +} +@font-face { + font-family: raleway-thin; + src: url(./fonts/Raleway-Thin.ttf); +} +@font-face { + font-family: raleway-regular; + src: url(./fonts/Raleway-Regular.ttf); +} +@font-face { + font-family: raleway-bold; + src: url(./fonts/Raleway-Bold.ttf); +} +@font-face { + font-family: raleway-semi-bold; + src: url(./fonts/Raleway-SemiBold.ttf); +} + diff --git a/client/salix/src/styles/font-style.scss b/client/salix/src/styles/font-style.scss new file mode 100644 index 000000000..fb4b055d3 --- /dev/null +++ b/client/salix/src/styles/font-style.scss @@ -0,0 +1,12 @@ +@import "colors"; +@import "font-family"; + +$font-color: $color-dark-grey; + +body { + color: $font-color; + font-family: raleway-regular; +} +html [uppercase], .uppercase { + text-transform: uppercase; +} \ No newline at end of file diff --git a/client/salix/src/styles/fonts/Raleway-Bold.ttf b/client/salix/src/styles/fonts/Raleway-Bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..38c099cc857f5c21ed7289d757f2f96ccd483552 GIT binary patch literal 179244 zcmb@v2Yg%A{Reu^y;_!K$=b5^maJ(@wq-jWif3%c*~8AXlQ;?434|n!Fam)X0%7kx zT4rT-Sq)HTp+F0iQXqs-I{0@`N=t!A?|ZH!#|fe3z0Y&FI(M9V#_#t#zkM!*5<=AY z5s~ta**)EJ=g+->a8HVGH`qO6`s~lCYc-*t?<3^JNcZfyZFhIwbP3@edy){oYx?YX z;{GX@$O)lWqyEtH^~0McUvkApLKNEx5x=_pLdvgYip%u?lVw=!X{+aO0 z-OTRbcL$N?Z;%LSCKurRrZT*TKc0TfJxRo<^&~fn>kIQG{eUFM*SK3M<9SLYguj_^ zxf#T{Pe+?&M5 zokHB)2r=*);vp~P>bRFkkbFj(X&rIXT4JJuBuVceaq>sfNN**LD z&D~BokqtB7ojc53PDI>^#7>*YEbeq-K^fzENPzy1)R7#Cqn`@Qy&2=Ta_3^)^NE#i zAtv0jW9-eS(@e#=y_j1wZ6;0pZK#X;+!EAh@1Y*ug=e1=13i-%xHY7n^N|w1n{b>K zefx=o{)L$FZitqX=_nIiiqsPZ|7tRin?VAcizK-q#`O}hQ7xIt=}4HqO#1mAluwc% zw}*JR6=V{(kTeSSZX-?9MuPNRGKt=d{;widVJ=sbe(n(mRQrzXx!@yYv9y$8b)D_+ogPcrZLILc4&ofD?w7V-Ef<++%nGjwT+MJ7IXr zAGzO?T<(vcWyd(47_KH9G)L-$Ylf?d2XKXXH8Y$EuweZ&I7}ffVJvsz+)XBPt+>x< zm5pUWNw7|f_XHTS=Zu~~R~TDdfD5BB20J!~W6K4{+-LNE3hE!HBrglJXJhL_nCItc zZxJa6{NKdg&H)-0n#hW{epz}gk~$Hel_;Bj7J z6StCH(NA%lNNl1c;M$M*wvi^$r?^K1KGj^Dv$zKL9?jPs$0u8FpfR?t1lneNjKPV~ z+y?Yvs@B20_0n-Bf~-ojl-G`s}-{3PJx zY|I}tEYLQi-6FjeabCpRF>Mv$d2Bfj%kRtueP9ibkG(k7iTGf6SpYoU0^ZJe;mxFx z{0qGFFQf+Yv5`JN>gipihGua78u8Hg!1LCECoUk3qD#OpSK{7EJo^K22)uBVRL~zm zzMTX4b~||GkH8Drv#B`0BhOdqHGs(|p8pv2&Mnlt3vg(}+8oBAClP)z@r!nnAa4gv z8^K$9(BCdHn>Ua!-%MHrSPl^n|1|hH_$~h~#sa?0KaOkk%Rh&A-ykm559SnP{cz1h z3;0X9x6nrthYB)tP406+?wW}VI0@1bBBRfcTKWd*qrV{u9POxU0M1NYJ&sGzUMr5P zaSRhZH;Z&&okm!nSf3_JNe91*$hiREY9t+O?%Y#=87uwJ5CI>q0rKM_&_pljU=Hd) zhH$fqNHmwo=_5qJ-v|we;f=MOhRmCZwkH!26_ZxT_YN+Bc`4;pE04;n79bqp@cKi{?zi^y}`M-#gt;g$8-c8y7 zr+)q)xqkyb{oLPh{1apQ1mzYSjOR051Ml%FjDzVJpOa~rpO617=@*sY{3}w%pN+cf zaXe16{NHfza=?(7{3z6}?c!oN{ zIA-FU^)(44<|VwhHTN&hmdip)GaZy2(Dm_4_-Ap&&a6bl--+^Bawd_GHsU2dGK3_my_jA~U!|YXFFBALXW>%ZAavyyxtF;QconbaFX!*# zpXB$8ETSsWQqd)%F?*TaXYaHxv@f@>x1Vdj%>GmRQ});Fzqfy3|BsV*>YQe$-RXAv zomI|8XNPl>bBA+}^A_jr&O4oVIq!A;)TMP9TuztU<#)wgb6iW@oLk~nxixOR+w8Wx z!|o~WA@_*ym47|=jp!Rmj%g%L%)yU2%po_Er^pNBFO;X{)I+Oj9qpwvg*p73{+WJG zzvd{%7v}H+=J4)Ob08wCs9Lm7l(8%9UVDdqfqj{Mo&8MvrS`|{PugFxe`5cK{VONu z)H+R0tJ5jWp+T6#NzOAdhue-jhuN-$g*m7(hl=qztPtiv*c@_)a-ZaWpL-a;&q2X@ zCHD*bz5)G${40I@^?09R4dIht?mOerVF6+C$MpmP4wKKl}JkAAj)iiyuGn@uLTSa`5JZHyphF z;B^PDK6vrL^A5alaMr=;2YU`C4ptwmIv6_`Iq3Z8#gCr<=*f?s_~@~Z#sFb*;7Kyt#&vLA zTsJp`>*0F2mD~wjA2*d-!*z0Nxpr9kAJLELC-hVL2l^)>;b8fL`w0IXHFgR) zkpC-|M?Ic!A*_6?dl4*M2{h0WXs8NOMwCPazkr%(h?eMxo*0Ocm`DXN6ASo*jo66; zYsy93uy7cE@RI;+)JhT}VOY{p5`%SGMXF&dC!r72Lf=gh8MK22XbF=@6YPT)(n``~ zGWbh7=^&k?i*%DIqz9TuADK$}$uu&Z%pfxb&NGM1CG*I9GC&5&0b{fQL+&Q`lKaVh3@cahCx9c-g*WG(#{*+*`rUyzgNzv1IpO}2y2{gwWO z?xp`E>&fZ#Ly{rSfhJavjr1RMHvN+RAK5^5(x(B_^FSjvQ6Kfw2kArfG5S;bFr@Ue z^grYk+6RgKF5OR`q2JJNVOO3)AEl4epMkC}2X$RRE``6~YH|&^lH5RU#0;+|x05@_ zZRAl<(}iS9fu2sK9?;b9G9=>6khue$gHC5(Mme)DBbmKmAX8(>1P6y!I!EUYWH{gO zPi4Ts^5vdo7MCkS1~a7H)A0bPr+ug`nxT=5b7*BW!$q7coSFSIG9v$i2ZB`I-nqOp zBk3G)Wq9A_ z#()!}869?J$=O*QJF6SA3=IwrS~4^|IOxfc83QAOgV78hadtX0BHu7Z zCT^cGkP&;@G7?W4<}sL|L(z;V;=#C_E5^jj+MMhO8?hxn0`{8`4|Oij@F5o-wmV0i zqv&9)O6;XKpu&EXLk7mS?jI=%c0G5;hDG4q;Z5{yJ z(>9#pmaWXt!61^m|^jN(11` zN@HY6vi9PG#7glpkF}M5K{q;opKSqEnpNe2F0#SdHcW&3q+=~X)rbxqdF|m)}x-z zvdlQ@Y5J(A#djyRckCOJBboZ}#0tfiiXFB^G7aHTkRGG2Q7q~28ygTB%fv9mc45kl ze2X|?Wa+`Wiea7Qr_lkv0};Y#U7+(HPQ=~EBdPx{bju*jSX7gz-r|}-A+Eu~7(2mR z>%&Djbm6KY>|$7AkSNS#eA3;Rv_8MUp>AL;Yh#%jtmi4;bH4}8QJpqZi#olLObSIG zgIgy6?CgSEEkbH)gpqKj4}k5DJU~bXPNw06vXkkN2jI=Z$qbwbcV@CWowzfL)nO;I zSsivVht**xb0ZIe?@h+pJe*PCY<}cHSSak?0M7FF23bAI?k!;TgtLXLo^ZB^)f3JZ zvp(BVZ3*j>oh)U2vXdd!Cp#Htb-Hk}jMZT$%UKuPg>kX7b;7vV*?PdZaU6jggsV&o9&F5?w&HXX13IggN#klW z#3)W#oh|uOR_8>a4tv1roP?Jrjkmg0xDwttIe*ID*p@$K)wiRaN%G@MueP{lZRX+o7Hs#wpGk?k|oRvRi70yQ8=JED+30FdU=j2aW z^>g#5tom-e*_?0hy!ef3rS2;v8-@wh?~Q8ND?BKSh%HVd(yC9 zyI;9qzF(3a6PKWty6urP`(qb8=@|3U^JhZYKYw71U(qqDP%2K%f-1kYgnie=MuSZa^DKiC${mP&`M;yl~06rglkyh zGhvZWr!#Z+u;(c66y7h~=i_uYyXLFtIl}!Tv#5kUe+xWqmvOc5XM6>ZU>(1RKcCO= z2l;PBI#HEqhiFX9i&u)rBs$3%lAELs=>^gUrC-ZbvIf~S**ztfm;79Am9LTCDSum@ zEuB@mv-GOc7fQcSs1@ys)rvTc5O^gq!bFfUt~g|FH=l2Q$THP(vQ=q4&w7{j7uHX0TWwd^eq&eL7u#R7f8^+Q zT;a$#m9PLuo%gzWU8lHSa1Xd|^KA6I?d|rS<9)`*``o?@eZTQL{Wti(2&4jU29?3y z;Dy0=f`=QG(Xl-*3!}P`_@3~)YjM2q4du5hm%v2FPr>8o2+eh+j(stwa43E zZ~v?#)p4NH);ZewVb@UC4c#T(Q@bDP{&LESDX;XL-SbWFOMRif15>9>-Pm8259WO}zhVB}1JZ$!f!_{J9n1{Axu9mj zjSF`yd~H$5q7xQ9u()(_|KcZ>_?BF=v}Eb~Lw5{U4DT5}yliyYlgp*c>z40Y{_hnx zulUo*@{wm(&R+TMsw-E0x_V^wBPYa8*mlCxC;WR&+nTf2JhA4VYolvdt-WLIp>>_> zZd@;2zhlGu8+$hXY*S#JH9>T=2JdBb>P&@X|<<~oOZ=&Z=G&9{nXPx+Bt9Mt7inySa-(zXV#v% z`z+~MtIx`vz5VR}+vVGJ`mW#Z`p-GObGDuH$+@0$H=TR_?)dJtyC2#8*?Ilv-Fn`~ z=g&F+ne#v2GkMRsdtMwZ9qk*varAE&R9>+Bf?F;uyKw7X#on5|>-N5Uk?*377ya>K z>&3$tKfA9^_&0Okx_x{1{cPXgFL7V8@{+qRdFRsdOPeoUb6M|YOD{X=vS%;*;_^9{ zKYsadu9$Yk*cI6;Yp*=(%0FIJan&hTeQ?#+S8uxd?Q1%(Iqlk-Ye%o+uRHC!pI>jd z{-o=FcZ21I^*6k9NaS8hLiN5viC zJG$;zf5$)WY`XKFJ3sxA_D8Kh+VP{m{y6dD3x9n0uFLPf>hAaMS#Zzm_eSsSy7%OJ zZ@Kr4`>gk^x$lwt-nqZ-{%h}l>nF0GEd0p>KY2SN$<$`nX7*+t%lv*UIW{=9acu9{ zV-Hv#IPXEngXcVCe5mK44G-P%&<78T9-j5^uOCS~TK4GBqo+N3?W5m5w(7B$f6Dzd z{L`Brw?4k{@oOJ{>xsw{^PYJ1iQhkIe6s7wYoGk&DeqHDpW6G>{-=KbbpO*^pT6Vi zLqD7Jvo$}v`)BX(m+hawf7||tp5dNxKeOzaA3gK-GudYwpB;Jj@@IeboZ-3t=kEQv z^ygE5{?hZ}=chma)boFMLG;3+7oL70_u_&V?|SjKFNI$^`=y&+`sn56mrs59-Iu?8 zW!@`izw*E<2Yw;`#q3{f`NbbzjlDYc)w5rH=e3g8s$X06+P>F*_Dk~1_Fta<%hz9@ z^!oPKzkXxW8-IS&`{o&Me()>(uX=uU^RE@ZKH=BTy`_As|E2!qlzZP2brd?uQgfu3yn1i0xLXX=LT1nz)-V)wI zzxW7$XvK%Y-3Pg2fgiXh-BqrV@>C+ikSI5zpmKRrpHjvVQnI+Llq)G|?JEq_YPCA7 z4!g}_t}q!5P)9ZD!e6<%#1^I=X;SZzdQ!qsn@o9dB&EV3#!c?NOP#x}i>-@qkFJYt zI^T85CGmAt+i`tL_KkHZ(8g4g+kw52*0 z7K=pOq*}YpB$4nUBPBfFtAqa7)5jc>=?W;Hgl@zvMLZ{3g{N>eLwzMvEol>;Aq@K6 zM}z6I=B89#G=eFWi%WE28sh_cqn+35l$=!WsrCBTh}ZLq}shDnv!H+qQcWWr>d!KW9XFn#F{VS zRZBUARHs+-_eqq_s`l#Cv_u8BVWT+i-zGCx7)1ASVqWQrPO3~yuXl=8j))_+>}0pU z{1%>G;PxnQm0+60koyWThhM-;UzLv502UU?Aw`OEh$KQ?Sc>U)Fk+)ip=(c}QxjD# zhsod-fyOXJk6WVG*}1|zJ#Jx=$wX~Uj4MntnJ^gX=Tcv7i?g9#A8Zb?$%T8C*37uR zrMV=Yo>sZVT-6a`vkP`Fsq5Pr$D~Zg@{r$PGic<(#2RKMj8&0sB{rL`$LKWa6vC|P z=G5EbPJ+mV2QkgRac>}2;Q^L=prqvN+I#VvbgY1Hw>W8SgHB zq&iQ6fcQ(?>xlX!NSa*RmoZ`CXzP_6Ck}`F4!c;yfvbr4Udwmxg5mTI=3np5P-r;w?GX+vd@kk;m4qB4O&1w3w}-XjBz zx&ji3r+|}`-+u&g5~;DSt~Mz_=}V+gi_tO9Xc@N|IwhQ`KC-edHQ3_Td7>3zkG-Zl z~@+hy6sEw#6Mf*Mz>L83Hj{6U}1Svkq=aX0pdT=nswx~kLfZ;hIC zfk}bJ`TmQXQzP9cRb9KZ^1g~1r#@g+(^pE=I~m$xj6CT#+^agn4cc z#?00tSUb;HyTFVYD`s!FbHAWAWGZNZHgNTsy1wzJ+d)5^Zv!vvE?gQvX)F}NjtG6%2-!`fdi`<%!_J4QI2J)4r?G> zzRFP-G@`AQE0@Qr7vDcKxp8E+DO|g1@E3RD`J>tG5<{1W=&m83~c7)uIwZ z*vRCSUfN>`om6?^whJ%Z#zx#o-k~SZ>A;>nZNUwSSSAVxTy)ou(;`|^wJv=ljlZ*F zhwv6bJbE7KP+Bc0sjqG0%xHAx#x|6(7|LLKmDya?9t^gz zvW?9of}eMgv7#Z>>6jQ|i1vbyh<0IW2&i+bfOJ4^$@uIvM59yd)oO-opWaoQR4aK; zEe4cIs_8q~H5ZixV%1trO~NPMvt!2&8dp>pl&2e=j*@H(>(39!$+%9$uA}LY7C6x` zEcfCG`h&n=YL+OkW}(kYQfaS@h)ay&BwJ=JkmLgAmj+t+qCk);d8te9S9+S`m8~H| zRn!#p*c9{1swPj5CTFB<=3v~QiADW#8jtq0)R_$~t4(VUml-Uo#E&aasp{A)@15?dY>YCHNeO5r7mw(qNaXDDqI;1`Ii`d7L_?RIcTqo z*g`9*=(oOc-LYjK0N!vU6nRbE#n0(p1xMhu1%4Wo!H9K)-2fq(S@%oq3P7FaMP{c3eNkHtt`wJvbCrP-%AL-yvY>1(GPZp5r3$bYW_pYtK_ zq=(d|6D}2S%NPpSoCs{LpniZ^7L z_S!U)LY0lbO3Y|-G3RqR; z)&OnPJM^Wc28Z4ki2`2E+)Azzw9Tkua=N90@?tGGs-~dbg9^Yom`=>YQuq#GA4?ca zu_*GmBV?V*>sLNO{Vh&D#yNwK2A~UHpc{0th0#T{eLAO`maJXShGhm+>-C;0(1nN5 z2krRbgu%fSBjf=NdvD0mR&ne9w2C1zc^sYV*RQ81@7tFhh4|!1H?)8!h4$oR_#s#e zMN`lQ5P@PgLT%400_cI~xy4vX%^Xw$D|^n^)$tw=rgeg0E*HsVMblhb(BJsHsxW24 zkR`OWQW%P{s4+Nmzo##74yIQ;h?b$z`Senw-shxu9y*j=K%KdZE;|3puQBcxvX5@V z-Y*7+csfEjnAxCgrhygJ40sHnW*o;sz|;*NjuzUGeUUcon?HYSK4b=IM(>9v_U;qc zrUJEMimneGqIVwn`pWY!x+sU<-RR~y!3GGErgVc=1D;KL!I&`~j^7C!6?J=_7eQ$k ziJC=FC$OhRy%hL5#hFk=Lbh_VM`Q5XjI#M< z;Z)k~@15jRS^Xwm(4}9u@lVy$Y$Zl#*s6CLN>xT%S(Bs6r8ZRc)i|qzPL;x7@l^b2 z6kEAC63T7hE!;w6lbt|*nzjeA4g!#<4l3uD&{DaYN=m0v8SSS~S|Ob@kWMKD_`ej^ zBU>&-X)7<~<*SfYRU#`{PD)GZQl@!L=_3+J;go_#YJb3++)_qS`4@pZnAwAA2PLal zE*qLTy>|*@Na0GK$7a!M%Sy>09V|N{Vnj?U6Rezqbz?9Jsu_g2z_Rtsu*vhJBYYbY zKV>{(8EK*9!!sdR^Gq$EclMmOx|x^j+)1y+qnC4zfn?t_S8cmH*r<}5Bksx$lX>dU zXCVZW}5TbLNS zXt6S0Qx~zQOg5#%H?5_z-mOweEitFYr0Y%un|s|uhDwJv*wCWy+BUzsYVOv~_O0`i zdUcIXSGW9vIfEB0O&tEV%y0CI%e`TDP!5cWf!6E6>7`Ht!s%cMvoO^`zkSS89d$h#?TDGU z7o5q-u9}4g&EkmGV^%!@p+YZxuqsqpg;ngxea&6Ry@E9sO#AG%5*f3{q0|a0ArTxp zf@`OfpIR9V2nv3ly$d$uM7^Gwl8nL}@dankUUso(jWQTZm}>fyW_zkXW~zw?6`R$q z(-(xN?p&Cpt0$kaqGeuZkG;}V8fu>#iqCHgD$JF($-(B3A-!rBTYU_ccLSCRXf>~;F-w+*Z@H-qi&CyL9G{x*sg&{^`f(8{MuSKJ+Xaz za(b7ANV7YMm z4GFtK?b7G}ajC49ev-YDhO=+)*ulN9Wz>gR7zvmZ{FKmwgTA0kT4D+NBu9+4f-cAWRE#5}U=_R69xgR^bJwX0 zYik$p>|JrOca>$hA=+1KbJq7qSIxed(k(OQ)-OA^zvryshB@6+YwP`O^Qsc_)4t)v zNcOVg%$e;e*yK>H;P;^;%r@tn`j}feZ-q{TCsljY=ov0*mzuk2Pxk52QQF2<9F1q+ zem9$y;c*Xalp>3bcWHd0z-re0A?AdzFnun){O8g*UKD(^h832_!F=!UBh# z!cFz*-ArK=tRJXpcwJC;1Ab*&IFvBUM%Ag+0}IlZ$W6AU!6te__NtlZE~#Ngses`h z3G?))J@OK`j#&r5FqjLB1wkdq6OKls7EDC64hBO#yj0&iN<&v?|4v=keXx*wKKm0o zEBkzQD@`tatI%=_S{Ac$qX~={DjMvcVw++j&bt`cd|j-uHJI~*%r*p7^G3X@AhC3~ z1ePjT9;0+N`<<+Xrar+Lm-ihgh(e>*Xc+Oi)VzmhNYHANYHshNeUFY_{;RhxgUx&^ zU6Ks}4eRLTdAPFn#?VIz)5FCeZtxO@3&vCh{KD#j2gHP^1KOh)qvx&BwRFqqCi-Hw z0WHPon};W%5%8sNxVJ#l%-;ac1fnhK2+aQ{%9Af8Uboql_qZ}wy7(BMDm_M^(H+yy zSeU3?d}d$&84D6Mi_Xmc!CKp2o#?N%*lPQ$64Pod;^vXFJG#$aF{yRs+3nqDEuTbJ z$L6&KD?8>!PzEa7;grd9ra{b83C;v50xDzvhY|Rd##eCxBNaxq3e}WBmjnvT1n%U~ zgEI*pGmod2MyqExxt)!(s(*a5KgqP0Yq=NDS2#MiE%;Zus-@Nvw!?PK!{uGT#Rv~q zbGp%PfqkOKN@sQ`LgON+Q{%2u=Kdr@Y-M4oSC|4mo7EJrh?|0LDJa`_M5^bNbvQUZ z0f_rRQt)gZ(E+$(-rJtuquM2S~7rz+vCaf(i2BrZBek~7Z7L1Tvd}z-hZaUY0_(86J2YWvaT4gb=3W7Kp(;l$Q z(Tc!HI=QKo=(I|ORDykr6^u%KY^X(kf)D{awR803>h?;;h?_xnsf0S7r~Kbn2-mWe;Bd$^iHC&pyjOb%+asSBJ9i zpwD*?0am%g8229ZSIYX6OGViDg5JOtS!YMsHiUpiqhY)egXe)_sYlCSHkP^K@RwKo z_^vCzJPcm(6_sVL&fc2M(j{~?!vlhw+&;7|Bc8MqO@rrr7b?i^(Tqa{4qtlhPae1; zo86Pmp~<`HylmpDuj#93&5qV)qBTKIGnX&?$M8V`U_}LvdHg^qh^rRaT8jA>^c2F{ zPA|!x!uhhN(enT}5y_85nb8PNL z=9j`T>xtIZAg@?^_?5M6p3H~493%U0K3pv@o}mw3o}J2M9xCI#Sngf&=kdNFd?6fJ z--4O?oxb59g~LxBOQ)XMu5gSH=2`>z?fu3N7@R*6HsQ4b^$z;o&*3f z$`c&jV@Oqk)X;)d0xxWOe#6C=(m1^;djj?6HJ7^FdDyedT-$!3wg2k(W{nvE-a5Jw z{#kSw=X%J;+??@74>@fETj#ExF*f2 z_OzQPHHKz{Do3_%K3%1DSNJQ%yk~{h-K;j4>diH6HF5;}yuQ{*g`(76Q*XD;ZQppp zZF&veB6VABv8rVz__~`)O5q%*_frfw zFcMeiy@p4^q)hrqqm%VVAIq{-*Vu?hS4krKCH+#xFU~_@-ix+zy~ie>tGbHfauY;#N*LW_{bSX znDYR@?(UN@6&gyBw1^U@OA@h!7wkXzW>^4d&1GZ{=wNbCtsFYBptkha^ zlqzKa7g8Thv~WzZ3Gtc)vidUYjeC+)`$8YEL)#Eam1XT$%MD6Ih&pvo_$&4ysM3 zo2}4wpt4FS6iZ$VEkPtI007|1n=~Lc2izf!fFs~>RT#AzOvp~{c}klYjh9GWcEn)> zY-;oPmC~wKAkIH!RXRP=?W0_FEpPHynSm{j2_WW0cEhcG84LVTI!0IF5GR(nk=amT;t)0gZL!L}zL44r+ca9eR%vo-PLI`FKypq-a`0(_?7Uc) zMyA!P5Gs~KxIyOgJk}d7mjVRcMO)RQ)_ah_Q-Q2{bs@MXn5qR<#(8(gLYko0F5SJ` zw!A5s_A05rWm355wDJ`gMgf`$jH8r<(gC>?9yY<`q_ohzp!JO#{m?L(&f^Lo2?~87ol8q^ zyL!s*-M_l{xi=4WUk{LV{@;h$U$d5*a$nIjT2?VFQifSDS3K~<^kRxo98%QS44E14 z5#m0uTy@M}nfGP-Ynygk%?ewY#xlj$+R43l_?I@POtP{}+1`>LH@{X`MRU^%E3zxZ zYDj#vpI;t&rs9j2N+q0F4D2wiTL?Z@Kt{F--b2Y!wyL|wpCSB@b*=SiJ>{|zYmr_g zQjkktHDGk3XLMtL=_OcW{My}Nf3Qo1-$1u&_YT|0CCcXJ2P! zQ#GhbF`P`L<8=+*#$JS}i*&399rvW=pkqEy$NBMVK*>BzXr6B^lClN41MKoUG(Py~ z_fWYoTBuT>@<>1z@`1{C*fw-l7e-g0a>a0>K0l^BH=his9%Io9qBn2RgM0rki~dO1 zEN`CDczR{G-`~BG@oc}pYvs#&U&6-Zaj}#~`j*wDmVsaQElbs*q$*EC$Y=~TBKsy} zG=&=33e1I}AL#}C=%h4LggBpfTs6vr%?9*xOPQmjwU~Is)Efq~$;^Gv^dLa+7(Gc) zfeLm0haNOe1OO{mT0UJYKTRnT0O_`tMdsaGZHt;}7fklKo98SQq-vlR9&pH6O|Lu^ z&%VwbTo9`b_bg8}tmqAGF-IUx8$u=~UQdlq5+p=~8^%l>$j7=fKQS$n5MB=?1hfIM z4yqp$5bQ2@%-w=~fO-L2i^tbl|ro>!V&y0??bEmi*041UCrimHgPp6FJ5g{7SM(r#o3 zf}i4t*@8ui02RRMu2pOEz5-;63Fu_W9tk7e+B~G+eX7zQi6ZJMrdQKwH2WN<*klPi zvG14VR{o3rhBM%M2+$YIP!%k2!^7nTlamP_K~=y)VeFcD7KDZ3fW-ku9i`E{>ua1* zBTqCYB#tt6k`Ky{r(VJ()V4F4s9G2e#_F1rQzAM?eP3kKs&HMf&*zSnngX`E{%YeE zc_=W)?Xg>}X0_7n3fqI}sLAc0i5m{3Mp-6RTD@^s{~+TvhTOmDHtrF4KM+~004c#5 zWZn}N>*V02FW{aG0a_S1^c%HW4-XV`Ip@*H>`aIirr_k6G~H&I7PeOV44s|3H*B!! z^+AP2VNyD(Jv6%N?z>mzh}EbRqwjj?(QVj^Vj-LJS~Oy79IenG1Aqe!<4RP#Dr6Gs z81rT_6>NJ*JZ{8TU=6bf5FDZGF(aALE;*@7ti?Jh6RHg-rIS7deOR6{kny%OtJX% zQ}nat?nAfSa_DY`bLMF&M^A$MRmvssW1t^Fo{x6}bi-Yz)99E~*BXr}xQ*b*2}qeM zXWwR-eADO?Pmi8dB0F*PsmD3R?HbMP+5cp}xlOIU4O+4ky-0Ev&Wv7QwWhtLGH?^B zV{U7~r3@rtx;%=mc&J${eRM<5JAfjX|w$4tH1Khit0AJRa!cNSf= zWLEa}C1^F2J4j1m4cJK{9oHZjz#Q*P59jcyB-Sk*W>KHKW+sGw?8F{0sZGrLuGQ;U z2vE@f-Tqqm5&|q~4JUQUr2Z{Uxk{V5T3T+`$+cxNwd87U$E!MzQt8qCX01Z=mDwj+ zqR<&i|Dr8ji;kw}c9Lg!DIobjatxWxH+{?5{GM-x+{6TCpexS6tYGX9$`%9#g})gX z;W=Rjg44F8I0H4NAj|-1W6bY?P!bq7P9z?-;1SD5nr&_38nH%JrYY6g)skyc+VXNO zw_|Oo_AjLdonnc|XZ}i~So@p&jF?xho_qo?(`w=*F~R5KVZ)&Fnb%eXsk90_l7~vm zQ+~R~XURN4sX|hU;3!TCrbb@2>OJ*JXI;P&tqdCV7L}w|>8h`^#6m&6zM@Rr z`$PP)2Fg6^jTUe?70Zwn~q_8dD4lmV=$TBt24H&HPr6qj{jAscVb#Y-P-Bsg>0+q{|UXbqaJT=rG5!x(fY-RceWl!}<&CZ$2K z6?xRaOEUL4{T6YFdU6N8ECVA_uK+_WgOscZ2J9l4I7y{4rdODX_XBoLBCZK?G6{Pm zW~tunJs+eVqVfn^PK;T~WX*jn?kZhMq|zx;C>If=s!2p*2{`um)Q5IbtUj1l)~7r^ zmrrf<1{5!{O{qOu>~iW$3Bybl5xUX4eISwY9-u9sQfKT&3(zwO2JY#XAxmN>#bCGtpVq z*c|OleHv|OjN)Ka0OtoH(J#RN0lU)x>Q%u!g5d;}NeXR%(3O}3RwoO2%V|joVk|U;74HU^glh@y*J#j=eq0M+j}!tWX7(fm(Fju z&)>CczH{7Elfos{iY5%Qg&SB+q0VxV)23ly1w-?u)oMxWcVWeb7~ zC(}`yW4~xOocl5T40PU#?@difcgAC!STw`MNyVL%lPEDqkUWJ8xww5q0%kAaz?K+z zmKQxJ9msDodjpY*K!6#9eLgS3gj9M)q5_vJ@UC%f&LHfgk@&z<$76MVpqai@ zu8p)!a|b(8m5O=xW|!Jop;8&G$`xysVx`5^I5iUPNczfFDQn%{s%np~za>zX{lXEB zm&@ek6}B?9LnbZxjWXe{>#s5xoL=QDr=>(wq1Nb2;R#>TZ}Z5N4M^Osu~+!QnrgGf z=k(!|l$t;~W(zN~S>(J#R-w>TsIXy5Y6QIS%|v=yVHa6K;Mf81Y9L`QW7%}Eu&wO) ziD!cUp6P`+`Zvzp$SvB2KXBV{?mxV}5F73zONCbFba&O&!f(&y65)YvmVPCXiY2Rv z6nl0!sc02^1fY!hC=fwrN<5if8DyJyI@%iRlhwh#%07op7tjat0p(J-KiCkC4JuEx z%a~A0P4M&!+V%ujF_`TwGxw~huV1le=Bx`>HZ-ifa8~EG!9?}I_O8yY^Qx=oo;vnbv>KP%1TaPXDxXhEs{?>@A&b zo99$j&Dq?>${t^Oelj|*J=i%Z=rHQs(F%Lqp|+a?<~Yla<&bGSn_kGhO#Jx1+CX}) z4(=c=C{+PnJ!*s5=d~j*3N#BrjwQlqRU)R6Rj`7wXKH@l1IV1qVlq7#prkq;s14S- zokqP{1yK2^zoc~HZl~kLJD`aLz8mkj*&KFh48fGE%H#9fYHaq-8Pn#KD$5Kdbu!M> zR-y}(Dpj6xSI9+Ys}Zm@M;w}Rt;?s=HOHs+u2z-Nxf~bKI$cv#3WXBw!z5xXh?qxreeeG5cm;bpIQI|V)A2{P zr$clUeWys8oFGv6l4>fE3GQzR1SgzapmXS7tMCG%870_FDFfbQk`b6djLuPj&f)k0 zonu2C=)ASLKHZQ;z^Nvg2n8q7I?EFLA+%oDx*%iciF2h0ddgMl)@ywkykXta?@ z!9KZMS*DiDR(b;$#T-;D-?~H!DS}nW zf*LGYS;CKCrp3%$=HD!2=Bh-h;vT8O7G605oh(BazUYFeOzJ1mWm~sz-MZbnZXLaJ z?HOm_KfujS&!uPZRahIa)0x)+nTdHHh7d&=5<+0Y4wl6{Qz|{gV-7^br7+&uPK1{H z4i+dv%%>sj4v|8ePwMSTc-xI}zbO)mw5XFZXS~@zbG9WA*Cw0(K+mmgj(Joi8iQ45 zwmQ{~a+6-!-QtQlbdvH)<1~!RO3$EMF|I1oo9?zl^Rq!es01{Me(MRGNhA_41*^hX z0TUsKZJ7BC-A+q|R$Z=?%SaWik_z0Yu)$Qwm4xz8NVUl;a>aa?{3e(Et@D*(k=7nG zhnl8$nvBi8d!^sfm9F|*^>8U zD4;MAhh7OVFjodH`SHtwFGI*x$$Okduz5rxglHs^$r5PC4p0&J1Kr7_EX-CGyO>yG zFfG>y5?ZahoH=5ccl^6y}$=wM!8OJSNLKaSKzY5NDOqW?qO~|;> zn3yW4c9$?k9qSHzV4#h$e~`5)#3I!ai4QJw&t>OPf7j;ZmYO+D&P^Rv^-Z)QnWQi6 zICsV2Y1Enhh&sKK7f$Nz7h?zVthw1=G2Aqge~=$jw&VMM*uZSxb>oJAz%avG`dkwr zX@#e0rGQZ_yy}pkgj#?XzL)I>X1mR(k1LvMJW{pHlW3jns?(hzRj4!? zRSCbnypH2sK7T?XLsw3^o9eN`Chn9g%6gG#Q6HoUfWHL8Tuj)?$4)tT{jpQ7RM-`X z$Q(#Pa5^AOQUCjCVuQu1D0f*jGwIvYr&F;MI{S3BUQ4rgfVX*}ZCnj)L(8lfWqXttIQ~OC49c>YM(Db zXFHM|K7U8jZcldjeH}^1<9TzW0bMjg3m7?83&`(MDC2~^3fxHcs~c~GivK~rJTSIl z)%x{MP0kl^DZqF0AO1}4cZBUl(?Wy#nSgyG5=`V3YED)HFFC$w0B=sOmLfDLn6M2* zULpsMWl|ZH?o=S`MMN9nQ<7nuz$$#_K#DK&N+m1V28d%es9DnW-+5Pb&JTJO`v7!0 z{LgXxI=|23#HSP3cN326byLEX#Kf2j=2S}Xwdw=O+7b?%%$X-*B8s_xe(&J z9e#X#Pj~f1tS|2W_M2&o@3|)X+4xRxdfv2Yc|w?>hHDdq0Ql>%aCXu=1=zv!bz~nO z)17u<`T!h!V6X{A_~th#@5peaQY1YeHPn9;2371_plf{f5V+Bhg%1m@AwXxw3N&J^ z37RY;Y_@op!R|7%h=dDHBGIm69?u=8f6BH9f`K1d0n-1u0?s^k;ykGY&0LOgc}OK` zA{zvXS?-6EBOc%o7eJ7OZ3+ceOgB4y~j-Y@BxFGXUQu z4y=9P@OC@m9p5$VypX^+uGFg>P=_>6Ji(YlB^7}F(d zM1TM9<7KNo0L+~S%*C(|u!*#hHwE0e(ydlrBnGD!1q8iB$~8e>qzNeGlHN8dFRc4X z1Tk(-N_Un~xkMu02-Bgs0f>_dh7|+`49``iR3?$g=Aw{EmLR80CYfeQH%@$8e$M}! zmj~0HcpMf>W4s~WP%kL>)m2VA%RN>q5F?7wn6jYZYmWr<5qkdbiV;0(0Sdh07fe?w zZL0e3ni8iha*#L2DTjujJ?VTEW}BtQWL2o4I~me8dr^04g6?EjX5T3;?+LsGtHMe{ zh`%wsbf-J4&=HT|Lf|6I<5HApuxjxJbF~P%qDuq?@n~2`rOaHN5HI^5a1a#4|2gR& zG(m7hM=nhF)2~SYKE9Dhuo(^nU&t(QFfPVS5jfQgJK=;d2OWX}Cj^;o<2ArEQB%Y$ z1yX#DNY(MS%~7~Cu|JME;8}2_uun&D6GN*{f&J6fKVaV+RUf@^&Z_**#yPi{ZJfg{ zVyxop`OCrAkjR(ANCR$IKu^rlpbY%67-e3yy_Vq(rKKU@8%VfgNYV9FQmT zdtDBz8NpIjX-E+&POEGpG67R)@j~(-+v3h_vGJJ9(Nn#{=(gF))mk~%tH5U=j4qo^ z14ks^tFXn7nm<*ll}e3@mW0DD6?mSeoRi{f)=cy}xcT%dK*T{B1c=0#fECSW{$OSw z!Fz)J?HuC3BBqgADukhzNJRJ_3OQJmmx)yNsh;l{ul2tTal!Wt3q&ETkG%yd)iAD> zhc%KLu>^SGLjuBbId)f~N>vIlqq!Znv)cxrihxu(4M88yVftYNlKq4=+s z?QO+}Yi_0g$v(*TvSKHM`;!wcrEg=$-i{ybcxVSUxxy=x&9YTx%QbP=VAp6HIW1jL z6}OlXy)L6-5k3PhW=3%v1${uMF?-mHKplASCJ-4`9#&i-p9MP+u~T5E=&|szY9cY+ z`Cse7Z{dvw0}-!~Kq4OhGzqhjCnUWbNlq?GJn2yeG_@VEpd+0p&5He(J*%pQ?pZ<8 zag6K%Nyo_P>F?Xe>T3*{c;C1cp5O75f=nz0_ONqHr9@x|$dgbBGf0lvW6E$=3?SqG zz>3|ig)bG!@?Wnh?g!QL5D^o1nkpd|i@QyE3zLb(o-ac$Dl#cu561<#I(x8-Eqnw~ zg>+>0t%4>Y9a-4lf@~&{NCbx?^TcR0EGL;l7HTK#aHS_e6mCAU%a!NM+rIs@xYhMY zzYxJ`hi_brBaPlAXbBr4y`SS!U?_Klb2t#Yr+6xf-F0{wm63Te(Vju`w zexIJ63hM%!@p;5H=m_q~N~AJ4T_xhh@GCa;DG-ztz7K^hxH1_F4a&4K_NBgp-*v*r z6U!h@SvD*SPfdi%{ot_+CXC6zSnT2D#UTOg*vLoT0wu69A+rU(FQx+G0USeY8x*oD z@?UU5vJuolWc{#x%}DhHu6swHFK9me<>T0;N}gd?O8jXL(s_^H7&f3C)fkZ3JL)MY zGYoae9A;@ml|ox`wmVt)7T5PQSMWcNk1da&-qDYa=qG$09fZ&Q8}0fFSSV$?;=wy* zV(I_G+4iE zUhoXNXB937F9FXusz@=U#Pr;=nc-Cez9S+0#Mvd?_(V&@;jqAg79~%j@V;5E zAa_$5n)Jx-fq}|8@<$)#mE>&rH0v)fCjW!epQLJXaSEQongUZqIvd3c(9d8RRH5)x zaP62)R=}sshI7#6#X?z|6;YgyK)c(8uy)#(rtCOfhy)!Gg|kXst3)fQeRvJqq_o^t zan-R?5OAg{Tu3Tmb~6&JX;cgVQilpDW`NcztH~uCIqFPNP?9QE<(gnZRVGj?t8!gr z+&8Yw-3PgET%9W$g&!bBPNxD`e!|j}X+48XJQ}Nd~KPETZq2m5+b3+aWTC=sP*BT-tzQg19^%(2FSX)Jl{a-Cy@OIECi zxP=0!+}@na;U2OmX8j&gd8`5gsdJ2OHS9oE7xzz3cQovBm;;tTi9WQI+&zs%^aW_j zcQ@W)u18<`r^Xx1z!7zXeT01;Hi_wJ3-J!c;iZD5JWG%x_L2SP&h0yUYX7O5_MQ6Z zzH{gHpT%Ep+J6)I$b21u+z3c<Y=_)5EH14L8&^WvrJm4?ZgOh%& zT@Ox|eT|y%-Oz${>%x^zC_jBXr29gYZ!6J!xOR!=0fSOb;sk=!#c1$(K}Tmbgp8r0 z)+2x^VVZFVk^-c^qC)*W&~*=1RjG5`_K$T-)l0@>lEPH$U#`)rhh$a*ezyxC^RPKw zrp;=O>K}v-+h08{%@{macW8>XbK+b^q)oZ$(o;z``1E!n{574xx!h{fPGpc*v6&;5 zNWBwTbD+=T9KNf1l)^kbQFoA7KSEo-85V?DaCbmgDx$g_6@@Z#NHA=06%#oPFZ@Rq zg%`P#%SomG6yJ;EE-Mtev-8~QD^|NtQv^#`DvR8L3h|oz2u4G=Zcy9gCg53| z*#dx63B>^+XNX(I7Bn$OZBq%IA>at8X>!q0a9Rd8J1aOY_71-5>eaUhUWTaaQF&W> z9^4uS=99O}&peR-pfjB2#0>vTe&!6=iJb5=N9bJjK#;kaOcpM=k-E-AeH)!{T+sv|9lxh3kP7-!!RGtY5qHp`x^&Q4Cqin(Utxv9GF+-&A`Y`p4n0iwvO&n?(;6jIP#Ii9Um ze@@7?msNjGI%fkl=u^-|8>mC)A==6nIiEW-&VG3dGCA=}T@Z@?ZeT&q;aqKCLD-8T zax7R0gpABcx8}~zOixW3etC;BG5$+k6h#=98(5cvLPu|4Y2;8LDqXrd2c?H{udR7_ zkO0zI8|>CrKuYXpN~a3`28+dZqKVmTrH83S9HwS*n8veooUYrmbNk}9`P|G@_Tc!z zT8rj*xksyh%zFdtcxep-bt8)_*SA!~YJXMJSF_TqbN4k`Z*7%ZY|V1=(u3$17&f(jTvodZOM8`UX0(A)jC+${kQ z00!<>r0by<*rt)bUIWZh!j4;v%yO=o*$^1D8BwHw_wickh3!pdnIsuGFfPeEcTP^A zd|=GQKX8E(medC<8 z;(qS&z-*DV z`OLFhlf-K=H5f_->>!jeyDSE$%VjiMh*jq6)62`#WTOR<3m|5dY3WkV-IGBsz-Smi z@Qv~S(@X{1gvbM=fqDY6`~s3eNC)uDn`YOLV?@aS^&|pxb5z{ZP4AUWNCq@~Gu76o zL1O6Yic%>>Ic%;ZB|z&3>yO88I1NB~M&R4Ugh2PyvAI|sc9-^Bw!3Sj0`?jDmyeIs zVtg4}Qlo_=0PI2Hp_xavi8xI%#3W7;H4~>cp)wgn2L%e)guAMo--I|gpg@V=B%P{c zI4Q4_)`Y5x;e4g2Zh_&f+Qjj;y5Q>*P&TuEd2{a{yoedn&Oq>kl z+he;?yGD}(#FZ#)V=<#4mWgFRP#5re5P^#tqfQF>R!87)RH|mh_QLGCxE}5n0^6a&iM|Bt2*VxzcEsl5<~U-^)XD-@c2X^m&DEOM zW5Q}WxUQLrEdJ^T8%_@1q}Z>oVxGttAQ}ZGEEM`v?MxH1plHT|8Ujj@Ad83-OWS5P zb6*SFrmBV$Kr~VhoMci&sFMB3eu_T^{4R$%VM&yD#m#l&RJA7jPTa%qSl4WMCD7`7 z8cr6P8ozXImC{@b5h#fQ>-xEtnJa&RW59`3h&~KzYleTDo%}l9ZKJf-Nxc&xZo*8D=`&#bD|!wbeWd)(bnpRv>6}*_+xnsWD8?5i87a9y$Umg#3`!dmxnxq*BDSQw;j)fq9P?MXpram`Dzz=&>@! zEjKT0n(baXJ3V>RQg>qR@bJjdpshQ8EO{WjYv`i`-MjOD?(P~2br5BU_NV+L8CahI(ti&QyseuKTX5tEI$y&4Xk;_Ui* z*UBQ*9r}8+NR^}4?x_O}$FJW}ji*qYfyg1@21cG#PaRPiI8sV#mFQ3wNsEkaB#Trz zq58ghW4fWgTI0;DL+pm@d*)(K#jQ;_q^-Gmoh6mt=8w|82+XrlXPD6_6bP_B3~j%3V_tajY_}(j)XzSu0Rf$KD>Z% zG_v}IHx?lB{1ZEmQ0{MDUz-kD!zkFno);DP)bAAIn$x87PjJ#M6$ z639{^SBK0Lnn0&P3u!PSV+9+KvQ#27wZO@sw2T$#7((FX?#%=fp@f#IG9y*xEzM31 zm*%ZRkQx`5C)tK~k&iMonM@O-Rrg{?V8?hW16HeC&vIw*DWbJ%Y5qjy#=z5^3Hpa& zOXBPVaa*-H!kZK4rik9E%@uhCkz0j^+y2AzzKQgIv=PM>ZYaT(^BhLiDZNhPoa{ta z$5f!q;hdA&OB!!ZfpfAQGBwMQDFyPJ0^MX7Z~y}H5+9WQ9$esH(9zyP_Uds zhq48rm#fR6L&4};JUVxg0aS>3 zb?va&W;sES=tjy;ngHu3-44tjdP7nR92BA!-b1;U!duYF#c1&Rz-G|egdmTh)7S~< zlQGfB5G-IsXytr3TxC@YufrJy9 z|I%g~E%$9G%SWayROU$wVkG3*5OtZ^NX66_YrUD&YvH{|a#5jTJA&=B?=3*&#w@WC zC#V!CrmP|GZ-bJh-nxY_$CCYLI8%E5%R$}DEo}T=y4y? zp*Tr8hh8!TS{zQ;BYFrXI5n_lx{3x`paj+sIPz@w;)$`oaoZ!0G-pR9Pt12c;)wKz z(qqoH&ZH|i5JkcJ_?ex3QOEa{$6s*8hxVQsBu?P|*snE%Jbw=YcA*}Y%sFf&NJXm@OG8w8Hz%)c|1=NW2^#ZYf1m10D{V^0GcQ{iu*Hg-VC1TAoKv!I=Fw z*iFh`UdY{6C&FDBhbADU`4|ERJYlSDIJMA)fo~N7RFMd%p8_CKf|r-Z#N;**ZQjdz z3W3nZY}#@J3#0Ffz{>}vZMn^2SFk5W()9n>vT;Qp!XLa*fh42+p#>H6V9^5iD^Ut^xO&AfK2-7GHC~ah0j&hYr3*Ce6qrNTafI#+m%)OCr82U!SRLw^ zz&XayD*;4%Z9rUZrrvp!*z7on=}_Ulzdh`JCtk(a(*{rKd>)O2#^ zY>>V&vbn=e-?ojclXlDo;b=rrXQV^9{b3Zib;1(!A>=a(#{F(H=&edA_fZ^nSr>(( z5YY9khk^$BC$jxB12YJ~#8cfC06oNXIiWs>D{**7P1=2oHBPCOVh=O+-;)!|!)7IR zdZG^b{?6I_3q{_2nqYR&HVBS=J$X{8GidH#FX!LqUA8!`Izvbna%rNGCOcxu2zg<; zmoQZx1L2TVPBRSvAR2DP(E|fPFI>hay`Gx{TCZ?Y9ea`!fxeTUg%tr`EILl*1a&jTZaHfp8Q> z&+y(M;bhuDo;6JltRXr?qoJdl`pA)%YS2fH!Dw1vFS!^9ff}qbd+{O>CJo6qNKbN! zUT41%iWUs5$T#5A#eIq(D}+vKg)S0AOvsBya3ZvM<3wolMnj2cG#Zb_-PBj2Y~D3@ ziJsV?x5PJA*61$5-oVFNaVE6Gz?P|@l7UqD8cHVt%2p^HLi5Iw1(~X&cX|#S*b2e= z+`7)h+cs?qpEI0YVZqx4|ml)z{F$DQJ{_S+@=$cDAQQA?eJ^M=K zC1$UEbz$~3_v-J(gI5}yC^4@5j`}A`)G0lI8^VMbIlA!X2Fo@|gLiW0Nj`=ea7r4f zaJ&6J)ulSYSqZGCKIEDm5Pu|wdZw~~g_o}=Vqac*W9^QJz!6{jv0~@vCM=Cgza~6w z>YM{xQI(Sk*`RiSjR>3;=qyq7vdKW?o<7t9cA`>}l$ok(p>vA~9yfyLWe}Y zcftfHz7a9LXvApf%|u3{qk(oWQHD1e!p5+Z2(kEmS*YA-*uX^o7+piwv2}Ja5h0lk zv@$8>gX(x18UlO~;3@e8^rK(e5qO&Hsv}Q3nTn_hZu$Z()c?CRP1L{UHIRoc@MJtC zwieB5tkh>jwMK)oq-ykKUxNn}!6~ZEf;d>MS^~&!kyRDsj5gsR26Fvi zZ?srd%fsGpPLWw9vj=8-@0b28@*EUVO|@W%gsn8q&Gk;1i*D=VJK%~ zq~cyM3)}6W%xSR$fL$mLr3gf66H*1PaA|pHjP>Z%q4FOK51(}9JUo1XNZFU$qxIRb z;3nr_6jXDoreg?tarL98>L@phs1D^@QYiwZh-S@|z!btF7uUNUFolM>zVQN&yfVw6>s4NT{&BlvyoZ z-%6LUbgl0y_X!K@{-rX955o{UATU7_()GE++75uAQw-InZN*tF>s1a6DrCKA7qVkR z13j74M0%ofC(0$i-cD3bXnnhKrF^Q5cj$Qe8kFu;i}Xu90c1~=?#dW?$BAaV@_S(^ zm9KtAT1)<+smfRWmnQ!-$n~xC@=D{y?dG=bGCXhUV$6F0!Q*60sD}j;2$L=&kg!JC zH%XRF7*Gvq>)>FUqS)(y(b9lvZNfVki_E7O1s%EXj_4C3*X3hqUuC>DU)%mp=UX#@v zft^l%eMXv<{zP=!320MlgW)_h2tK$pu(AM48o^-|$d&w5sr)HyXzI?E#QD@rXhM&P zrj!hKF{+peV9Db!y#G!{ypuzRiWWDwqpRKxgSxlJtd5QJ%=XT9MbW9v4a{Q3oNbM;iQ!ZYBXB4`?Y;iEU0BeUE6eQ+HY^Hds|U<;=q<2$X!>_2_29tQ0>{6igp32 zh3LVFoDB?nC6Tv6WAr3~n*)8IEJIbR5T%HHT}{%JiWqXkrs~zz|qRjXpMe!Q@-}+j^yGK z<7A>Qpw4D`YJ6#8sk%2Hk<}HA#&ybCmF2QAshcU^hmExklvCw9Q!0yTvOOzgQBpzH z142k#eOwBGcBv(Wi9{luNQ3#o34nWqD0|`!br@k=8VcP{SJsp>Hw*|^M!NnY>6()M z>}5+=FA*K8$KdrtZxtnro7(_#RY?~5o)q6-E>(3t1GjISOV#+)_|)V?wM3PZ2dr13 z$ST{I6tR_!2@d-qkJg2eHU9|e;!RSIbVKe4t~;|a0S6F(CX=!ZL?n_wW=S=f;SyrK zko6&>iEDb!8K7VpQO=DDQ5iT(l*;#Hx+!}Q3$(X6!HUfrGTRU%GG^iLx>Z+0F=E>S z$vaaYZ*UPlyLkNgB8#te4Pv~&1W3Po?aLSidR~jkXp^7|tb@0(5iO%t51>+fgiG{z z{`Eyk{H}JBeo07TJK}%_T#{xBh*ZtELRB=b<6j@h(a(%Ef2Q4{1GpOrM|PH$3}Ok| zA3!*%yC-<`%?cDAttUj5*M4(O?U9O)5N?Ej4qidsk3ll&UX`Tkn^o*e6Ly7xx)ij$ z1kM#?BkL4Ub|Jju4Lxe*dOsa^3$({?k{lvU$z4T14CU{`{BGlKtC^hewp3>eQ+5?Ck0jHCwl0TtNHD&%(=cfoBGOs~LGxD_DnZKq#WJ3=Ew%U!g*IFwi%5toXLIw*qk8$(01K0`xTq5P-iXU@#8ew(jP z=lq#7XY${^?>_SDTD3I-*I{l9#Li|!27swYX*~1@68oexAnN$R2>>%n`qu4<@>$zdIZ z!EqCDd?(c{H30_#4wvG$(j}!FL%yA#WDe-V1Dcxw9CtYJ9O}4N{u~82{=4v~i7Pv2 z@4X^0A2bmPZOC7J_+g>j!ASSEmnU1pkgbOhpTHR-!x1r(Yd?}dhxJe-kF@&}03(97 zL%_RTl-0qakhN=|t^<(SK+Y>(r3#7}`k9U-IFf@#BPJM7Sd$vi#W}0B$ig~uhMMH^ z)eFt@neHLK`Klv({_xQp4dyLYUugQsG`l(f&b<#GAL*fcY6e{#KF6g*d}weThb+-kpHz&+6eBoqt~=+)eAX)if+1osq& z4)iBQmT56q3iMI8?p+lvw7FoRd-qHKQnQyf5-M0ziQm5MQco_e1rgfO=#UU36b|9o zN-8LVY#`|zcPCN(1;RK{Zm3kQ*%!pc``z+|(<2*~Di=?__Ij)x)t*rw58N-*UI1;} z^d>C;cXE;B<~k+8=|Y|(I=Es(aRQZ9H5AvX)0(g#6ZXzlfAUIjXnvO%TvcQ735^wk z(P(f!sMjfaOz4BaQWTy~GR2>-w=*}?dV2X|E1$<@IV1lTWSQc9z=s0XZ3R^)daCkc zj%Sc9PDJ&%!>A$n49Wqx4URmPL>!i2UQK5w!xMY_k?eq*>hAWU=x3i!`8n^ycegFr_Wnc_k!9LcFBloD{v?!D=Wl#z5V0 ztq0u)+S2mA?(XWo?)LxWZQVs|b(U)(3+*b79yc!uslZh!5EaL1slncef=P?P0$x&T zddbthSWo1Th@3lr`YOAHvr^p#J@E7j){Xaz=lqi{!HC5q(S{N?ln%h6qXb|-qwe(L z1jQUqeu9vbRiSE#Z&>di|9(8@Gi5#GU-IAkbZHxTO?C(iZ32!CwojSJ;1SS+s3$p2 z_60S!EJ}@C#s26rV=k8&%rVTR+o=bU zkmCC>lNLA*@W5b=8qmy;SIrtg&m|+91?xb27Ni(0iDaUEcD1_N;xTl5#%)kBCF*fB zT{@w!+%7*?vW>sayB}Qx>9f3mIW^JU!&za0#zFRryg$0nX;$RR1C@donxrPT+rVdo zx?He;0Z8PIxc7}j4qUxG@~i9?=87zhvV+&QEggMv1%}(TYuA3t4r69ssV|pl#fnf~ z1p!IGOT_#zdzzmnCYV+{*+v$Xi$B0Y4=6jI`-h_kt{jZs7xW{2>kKT0Hf?2@j>TbU z)BMQd;@7Hnj2K!Kj69W#lZ;x>f1P79akJ9IL`z>-E8t-zrK4do$%$pyvKad{5{++M zy_MZ{^#bXh{78NR-fJKG^6C`ro$kLXsK2@(;uq)^YLHwYR-?9|gqOgd#*!DbNQGCQ zwFpp%eqY>f3W%RjX*Tw{-0?kcu++61P>JA+{fpMR|(vxiKj(4b6RzkOL z9h{9ei4#<##+T$9cMuT6&=Rc@c&zOz83E-t5ZS0?>z7GX$JpZwV*;%*IH0oQ3wdhAFU|v zJ*+5M%%!QtN)dFGA@qvtmlkQc7EKOC@-V-@d=2rmE}S)5!y9rAgis6=LP4BBAne2{ zLh2~2L&iAmX1UZE@sqWr&IvpkA}%7C$ZD?BziPS8hpLuJgYm6ytG!ypRKUj%9t-M~ zM=3G1LqO0vZ)iYZ1FZHb^YR-pA zpOlx_ZP*WkjqSr-_MJeB)Xz{G#;>MiW-BcY-BIQLG-7-xTxpMe@1VP9As z>fSmS(7cmwi~zor9K%_ROLyj+KCHb9mntlAU=%RY_*H0QgrZrM=A>&iatqn*1&^XkyUoPxa4>XB zpN&+}800_Ey)cZhp3Y-T5f|c+2F{rmA7iB{kjDKi1mB4TfJ}Z+yHZr6$RUl7DWVb* z(U)Rqmyiq9JktNddfwBRqZg5zm;SmjL$6*vPd!p;uFpWju6r6Yt~g4UdkRlA#Kj(U?3Zem#Dr9mK2(#LBP<1gK=oNbdoSQ8gq0J z`&49&ww9$5YcGCP=CCnW^jFGbQtM!c{$zQEP~RiLiNWVtn4uPN)aJ>d8Gk9V9k8KX86|uK(sgZG4;*|GjTP$BJ`}Pn0Z0prwyOOH=e!>#c-&NT9kR zMeUR^L|!ka4f7^#6l6%@8FZNv%1>~KsIUPmR)XB0@^eWmfpb~C5(E*hwGx%P{e5i+ zf7Fn*L5y)V*!Xx-_p)CYg2+^&lPg6a(DahJII3`_M7wo#p&_k82FsT1)XIqPytGIN zQg(z$KZXW62JrD9ato z=FdggH$=ml{F4LAXh=W2)Hkp^M1QWV+&nO=@9k{=dFoGS?|>8 zrF44f^wgH~vF)#$ylF8FyCwe$*_Rj!buTpC(K5Jcdur49-oBe=&|8wYl{$#B0)NU| z6mNVmFuvVjO)uUwHFbJ1y=m%Kl8dLOK{`mKtKH#nc&N)YJvlvjm#=#w8bvD|UuH5I zo#^&H(=piP0`Z`zn0P(!qCyoD@I)wH)XYGir$ux`riq%naBgh$wgCa6VA~3Jc-jmu zgUjKIf}R1L=5VH%RySc%U8tONJBUACP*<~4(sA5{+8GOj^MA3Ie$xm z7J2Cv@-v`<&uqQ3J^!Qs`Y(14T@5*jwdVPucOhwxHtM_$0|~Jwrod)k6nmnRPf=S6 zY;ivhKJ=)=Bo7?3;gI3*96U|48U;?DPDW?FsbCTW}#JvmQs92=kt9n$9 zqptxah}U1X1P@gGOYL>jV^{Up4Sf>tkzMdpyds*V7{SGk(^nZsGs2$axp*457JZc@ z5Ap^G{c6!HilS+LTg7^Ar$PQ_*?J1k^S1H@Es;1A@)|M9_QLl>@U`HmQJ}J}(5b4v zkPcrA2vEdgv;wQT3;6HCM><-20hPyixzkH;Xdru+xUc7>3Ql-O3h)k;6V|J#=nAeO zeopRS>K(j`bTSOO%2hXhCJ@M7*^F&KjXP z$$F8;Qq)eyS!F27rs}9%6v-cA%dnbtll;ywgEV>fm6Hmz~BT z8BpV+v*C$xcWNdza$qW)SvoPY=e@Htmj2wX^j-deE#1T0huTvM$H%r`>{qNfLwBlB zklhJS$m6s&hX*zfPV61>4)ok>35D90ykTFPy*bi5l^)wa9_kO%+4fxfG5ZET+k@2G z2MZ~ogT2yehTjaRD!M}JAsX&3a8s^?Dl8U3e9CGVG!7P9FBCnSkwnRiI9wH3Lv89N z=EDr{n!ngPG;n=ys&8y&c(JFgb9{Tx)Va)9YI{7|XY(aPV><`Ecky6OusgXw8tVvx zv%lFN$#kT0y}oE-FJ9PXRAT4d&5)PU*m-+l!@-WbfDgiThAmop8o51;Z~@`*XG$YWzrM2za%US+ZCv6acT1FCG`f z2g>^YeXq#&n^}I-L~WHYQz3@&P5b)2HOPMt82Zw+Rm6o#nH=3Q98h9KK488}&>$Yz zoqv@JB(X~=eV3*+4&_BabM;;7(K(dMc8S+baGhCBqrCn1oYs*VULJ= znciRAqdHH)7By|#lADe9#W@9YtqtPr*4VK%^jZ1-JYC$M?&%AuhC1%#{@Sd}=~!c> zx9w0VLv!)I()3@c;!}$EX1yy*=s&6K{4CkUZ4KcYe?3w|C*rx zZh-w8lU|!^1{#j5yckrTqN%*@Qk5s&Pr-j)#ZQ?F_z7kDE|;m$Tx-1>Im)gWVd}WX z3RP$<0Q}(H;`cI*^zTK9?;m?X-u*&*poXfsLEgEtvifv)r3SfI{sU=9dPB||K~)LT zH`p7X{7A(=j78-t1CJ%i$9P_)neuuCn-^!7;Gx=PL#E+!VYkX{ zUczBwqyAYtlb?Fw5$uXqD4&0B^=a&cumFF;{+wHYAwtE#0yKoM2jqj2XIHht@ZV3u z)+N?+k`QpPQH2uupNbX%sahv?2BzNjz^+ViFzzX?3ODQK?7rsC!C2`kAfJl(k|f^( z*>91M@dmC6$zeof&QRQ)^?{w@0b-q**62ty9}t5Rpy~_>LOdxzusz@p?FO#N@oBoNwM6o>^l?~Kx&$b3f?5nDp zd|g-r^;x%>oBaNIT(G5Fo>S738t-9&#*_0N0 z0MAB5TeKbpMo+D?MIbj&VDzm28GLn-mkSZ6P!QF}qeBC|;PH=!gHxfYa=uS0>RF5L zv;K zKeaa=$pwPg&tPY;vm;c#kCahaYaeOGwRY@vsN6q)mM!L=UFjcSTk~%sP6UG-33ZQ+ z$(KaMe)0Sw7Mq){$oz=CpoEWnvUql>-E2q5p9y4&=a$A;dq1jjAk}*_Sf2E#zfWH) z%XR2GMhv^X(&Ovgu^7U*qR3y=_LuFNMwCeXP_$jE`EIdu+MAE$I_V^4x)WXD&R}n- zw|w_Vqph`jmFrV$C!5L_sQ#|Lr)+@`0n+!^hM3->OpmrV)rNwqL|L@V63Xi@%rMU;oWVa_#NDCVNi?UV4Xbuzk?wuzQ=hae`n{ogPIB z#e9M1;i08s<4bpCKO#q!idVK(wjElv)$i%3bJsoxfTUL%mcFA&OAPdpgWWoJEsRzD zU%)R|p~HI+y(?WRM7-&0oyCP)!eWc7jDP6O*Kb0G;`hdoT3%jN4ae@a| zdm8+}5G^>G5rF3^0wMGbw-4)!ZYOuB-lDI;iTj1hl|NaFAoq<`YrnOgrlEX~kV4U~ zHA0MWodKvs3XM}+>k^HxX&EL(!l7VMyAT4Qwsujp++2;utu0zQuD&{XlSma7WrLWy zW74By8(SlxDz0wrrAn@DKY^YquJ*zO5Ybgh>6Tc+LZh|uwA>Th6K10wgejM1yl_wm#HR2>!wS_8_ael zb#~AoaSemqr=puKCxt-Zlz1u;8>Vv&zH_1Q!&`1yS|kFCWNPVbE_BtAo-gdo*87i7 z8+#I9umm|oAnR8*oxFFB-I9Mt?>^MsfL0iul1j zki;w56VBQZPxw0(C3buDe&`e){;_srrw>;%ED`)NbZ|e)SLol%B=il2aF}p0!Pi0R z1MU^3McczWu>vURa=HO(4P=;z1FOSccsX7d&{KFe8+K*cD@6?SS6;hk&jTw*|N0&I z=kI>?tMAT#`?1d-)+!N}zx&<%r(Td#s0ZxMe;shx|Mdb!gfS`GcwVD?L=ae{U-^ij z6e*-z(qzYpq?)5_M8;tymQ-U3hLWVgsa|H$V$k=!_U~^$dgS)!F1|N+!z;4mueg4b zMoX}?`on+zXW5>=>xmaW_`w&RfGvXbh2EdHh1j>LA+BNV7QKMqSGDNPid8Cf>3vd+ z1n8?L*unhJPk+w-=Da9>DCPSO&?!L+9UoLzk-Qp-#hR4goTZu|VB9;er2G~Gs7X>i zEe2DIr+T+mlL0yvrAWH4=2jTK6K#udo>&{dJ7?d4+t@mFbL^W zrj?3h@Xup7Q{4aM{{M`j0@BMOuwNO#2kd6J-TA}pE%{%OsG(Wiwd4)|Fm*G zAK>0UHHG>T_x_vcWK=#;&pKt`!Et|$^0^R^6z6e9KSCA zq2n|KeU27jl@V{CT&N_#>_oju9t%#ZmhZ+yc~%$o5>~6V$=U?$GQrH-Gugr{sUWGN zbdLYAa$cLDR?Vf)k)Ak}8!tYQvaUMqrS?poz+Trg{iU<~jg{-PDQZlc`YZ_%3#2>p z<;XHn?za%bSz|K=I97{BB4efP=MO|A=S`)P)rk*(RAW!q_3X-Rt@G>;i)U{wowSZ~ zeOJluwq5&${CVVTBH#f)ei^tTTrAWS%V=QOS&dS33(P&jiqO3P=vyob^0j2NC)U&M zrIJc1!Xo653I>gAgwk(FfFub&AOLWL>Bs`;!S3Ak;0;4YIbe*AZi$D+dL!ziZJYL- z7~OgC=+NNN2X-Xqhr>#K#Sj_WYMefGaW3lZSr`no2GhR&^p?TE^i2lIoCR3i)MgG?Ywo@Cl4K%wN<@q(=m)YVZ7 zO`g9uNx0@T(<7+?Re6Mrj7hrWVo^86i^ydE_4wAnq%GX)Pi)z8Voz=^(2{m+d*Ff4 z;N}9{^Ht~OPTkdc#%w#j?OgtiGzVxc=muj*!(WG_ZenwhfBfuanQn z@LqmDwu1YvTRNOOfNpMzWYp(H7-8cgwUjg-!#+SCYMK!OjpjMpyoApBWz6x;8V6wY zbj>+do{M^O1P7(zfHucoX`cN;;I=yXMAZ&Ej?Tz1Op=T$gDU{@RTtyTuz=L12X zso{jhjtVUU#7P_EVBr&xHfDy`Tm4B?_?3T%Hd(8_ zf{@#rOTNMiAfI@4?XM_YZD8xST8)?oDj^q*uxaP;EhgkIFG^-x`M1zD3}Lg`IKc)_ zE{Y4e;ybW>M{*tgeNM;Zc;9^gd@9iuLtw-2=ymq;qt;BtIF(1Ols$;-eouXBPo=wt zZ07G>Hyf;$nbOs`bpyn(xX)25t-J_t#|b3=>$zxt!U?;DYUG?01|h5=$!nW%OL@D7 zlO`iHEbuW96WVPkax%Q>XU5}nE6?!1%O|nK^sZb`ya6_${&N@!Jf4XkV|klhE|<^c zbGYK}D47TG%3@(7)(|ulx0e?Sul@oxYL#Wy5m9$X__JxH73b3dHo<`O#+(&*fJ)|| ztmWTQ6x$K0Ctj=uX#mjZIMI!2bpqOzK)EPA7Q~H#8-B(0;Q>Emw-z=$f67ok33M7A>((7|A z==qJ#a;UK*A=Hz=UBDDV2*F!ZC|@UvT}=RqoQfB!q$pZKc_Vr=)SV`Q)o(=B5M)5**xYy|U^Mv#qsjZz`EEq!1N33RQN|jC-Yb=A3azVVHsH zQ=7D2m6Ike1AQJQlYGnqz#6nMMG>``Q-+Ms9OPYv_flmXKc$uv$P!cMyUO?D?9ueo z$*x$mh6oE9t{Ng-yP!&@8lKX{xF%HkeeglesQb#gKUo zBLQ$o;9b~5*jmxI0No1W!G0?L=ES2sfW*5i2n(8rmMRhV><)yJ(p&D>of$p$!1kT5 zJv!8X;GS)Zv)>Ai?i?K2IT{F!?i?7}H4^ws5m&OzpIX_p@X+b0O=ln4y!rkcXH7jx zG-3Hi!li5Y^d#W1IFG?=6Q~_<^Kr*>QM@99#1+Kp7&E^*b=Fi2I^`h;e*>dln4E}p zO&_0+B^J)+a%UD2G~AuDpK`~CLL9QK{rNeJ+CS2+^evx2tMlzWC>O}~AKW%<B~mHk$0xFZy>daQ1; zq|q@O*HHrtT7JINr(3O@^$ALr$ANpK~wdu z{`Z$Rffq_0!_{*&Cs1&apBX>-;L_ep$A;PI;e)f$d{5V=gBZVV4_l;!G{v3}HmBQb zgx2ouLC~cOa*o=_4g^y*^Rn|lR1|+`E&XK9qkp4X@;X~8Sh-Ow)+|r33#8Dd z?T8@bHc-IojyMc$vG({hfF&R{fjwOP38T??*6ftdBhQ~z`=fjpp#Ww;0Y`LjV4>H#0ZvqX`WOx#f3Dsaog|>fXSwwnN+oU9 z;lbooYKrnAXcOqNCTs~3?YL!1wDl+RgS9K}ch?y!ESa}sGO;}l|P0+f4 zk~fBc6Atl4D0!*iLI7UYK|)APjV2m!5b~hhr`Dn%EHYUtQc9YVJ|SvTeKZZ~U(w$O z!wi5aQz)p>@ajKODt`oPoWv;!34#egq`Fk;^vmPm?M@pF!-MImZb*vX$D3NDjHyCX zi(>WLdKm(bVFjPs7(pPaNmgSUqX$G}0ao98m3P38aU*&Kwv#s0YT|BHU?Q0mBeJ>R z3PghAEDqqb-nI;FJ6vEIj(8(3x6ADX9Ex`-M5&3&ME5eDyU7mQWLFeuUSePYjFi18 z7GS0~@m^-8U^0??P3qLyGY+rU(c11)Qtouzy}Aco&3>;f(U~;fxOzWzHDfQi94+p) zR)-5?ZAUF$hjLjGT@ANM*Gb>X1;&}hT(espp>HYsx>Yh;%$Hi2&0@FOE=YE(#eTcq zt^|`)4NN@;Rb(Lu9XAj))MT@$@@mpC7z@SkvDoYv`4?I5-}pBj$)y(;(kUkG+Ocrm z;&od$Z0Xh&-cSgor;!V`>cKcJhrBqW=#2nW#BL zVkY{Xo8QWw{Qzm9FH(i!%2Q9VG%DfpRMrAHQyzmw4i8b45b40Q@%E{%VKc4Tt>5{zbo4N_333) z2I@7(Z$s1}jw;m=X(_jD2#9uc?l#KZ>CO&>LD10~_8d9oCe&;hQNm9SD=+64<*JCQ zOVY@2ZzdYX_XJX|6!r0DrLDVTC_d2XTC=W^qyqIcE5~u1Tv)7TnGTQqr_24rBR4#- zy?aO0{n%3fFnI>u%MnjB{)%xOKO*tJM=jpHT z4_uDU{QI`g=HJ~)Zb4$9gPn80F<`GOuPhe*%15MKx$Q$tGF5dgr}@G*!+iDD<~jCJVHH_IN46RO5{uT`rpF)jJKgGdX5D~9o*iU+^H>|uI;X1(9;YjVF*(}FQB1MO>8%od~&aMh>=1mrb?1r2!3 z))O#WN=1k_-97Ptr|E9Rgf}2kyUN#QBa*ePY#D|3FK3mv<8Lb1)pEHRevTCg8TO89 zU^IFI+#1}`qXZz#f68J2hGaIIU1rYZ3_?%~L0)uaQqtaqWwavztHGr=%~9UYWqkD> zy}=7Kg5D2`#*zS2#O~Yo+s^19q^Iw8n* zfSpk0q}38I>adcjLxRbqr6>uou46VR$mk3?ktwDqE7hhKdsmZIV--^6D&2=I<#O{6 zCA)E`R4!Jd`lblBmU$jq9YAft$=tENURi~MQy4h0HJDV33AQGVIl#O6*xcWOit}kF#YTL9HY@TRxNNZ&h)Z7L7cNEifbT&)ks0VgVnQpMXyN}=vXjabJ?eqm?rHMgC@2FM3QjsY-StI9MOR47q|;~ zoV&H}c3qLhO}qMsM6rvVfz=?fR_-&n1sjcmQ7gDZ0QrYmE}!EQKxkMeB(FzQT_Ix2 zR~O26fG!E8OrXGrzKW+ST#npS4Nu~Oo6K;L0;0Oq5GNK7ts8kRNMwPE@M@%$`%vNc;GJY#w|69RD)5=+Sw9PEnB-Qj*?4-6I zH#KJE5eo68pXkgj6dWgen4PbTi&t~%RLq2QV`EmGHD^*4P$#tu3!-=%#{+p`YF(6i}Z#*TjGJU1;eLvzfTe z%wDtC;p-yX0$>O2&?$9^Ls&u+(zn*34$;ooOZBKj6kvuVjkQJvG65J-EbZB2sSJWACM#4zUqPavfnoB5%{epd} z`jo6e1T$Ub!QpdP3YDyn3SI?x0d)QC4g? z32PZD%3=-%JZ&w_=7=TYD%ZBP>uvPg;$(H1jb<+2xt`h@vY%tp8wE(lsSOj1WlF>k zf)AnzExu^dU(|5=ej(nXE*iXp2Kl5)Npg;-iAW}e&a1{8trbs~z6a#77IO!sdfFVI zTQ|onF*>}Zws(RTBv2tVK~N|LYa%)up!HcmJ0kX4#V-1_Qoq7QF4S3p9iKE#LBAI6 z5;8B!i>pYpCgNd;lQZMW6ve6LJyLtyUR5qu-s;^eI~S`Uq1o3%brnkwoE)FJ@qw*{ z8jE5rodZaQ4~reNh2ZXIy7cO(5UQiJe`$M`D$KLQ2B(=)=N4QdCoP4HUVq`Ol2+VQ z^%1&u3ZDS3ffgu*z+Ptu^&5Bgx_XO?R7;I0Ym_yy?((HNU2CJu&f)6ewf5Tst}o(x zAj2XA~g8zB2U2cu3>__qREEuF*(3pTI?6L zUJ4)PB08-PZiK)>ux)*NL-ZBI(vji3Da2j@|1kp50Bw)KWaR|7}x6g8mJ$+PQ`9sE8G?Dd7Bf1Lt?kMa98 z$PQ%5ja=Ro$HpWnZsT;+#LN>|Nyp5i+A54z**MC{a1s|&6M8Llu#O^TeoTPoDL;Y~ znU0yqt3X<&VI?M!etEm%OZ5BG3r%;0E*|E-_QIJ>*=1w?`?4=SVAT>9odZ!PPg%gT z&W_)-+;ijdG%*+=`Zg`Eu=BkCQi4Yb!P$U2=K#D9!OJTZ)i%qpBcQRD6Ox+94XFYY7G&ZYaWAKAb7oB1!sr@Fnt z(H;H$J4S+@?&)~`i)Yi19^Uer6B83BUbE%!qv^9}o5mLpbf@=hN+dSzNp~Mu9B)EE zpSY)cC>{woVXG6#l8*4nC+qDaZ*AgvA;q&!WS`EAJ5K zLtX7f@fNIK`8$r}tnTEH%N1=^)d26IP;b~DUS5P-rUj5$Hk#Hu$ZFXe7^S_{(`N5WVhipYQ6LqQ0z>v2fKp-!}c)^Xu z!;L|W>=U!W)?$M_k|!ReH`sapP@XRZOp?Mbgz#j?C_pmD(1?Xd z^1W_DtD!{&`61+$I(Zp^r`4GuLDN@K?!ekt@_$ql;Plyx7e8AEoyDXf^!s`8+9&aV z_8hea;b#N{g0ukqkf`nqdJ?;bR`4}=g{n}F@ytwE8kK%uNJ*;$Ao^rNHkvzpXqZ42 zVEId`LTFYJs5EBI19)0wl{*uF%v;F@6e~czp|AqPmSIF|VWWx=Qu${nLR{-3M{?n4 z1aUE`Hxn6+j*>mWp&nslm`}#8tzfbwWvd&BnvKXyc#xQ-L?f{RGRw*<)(ct33Vm{; zDD`Ri1CR?F7-hIrKvE6t40lpBGzT3f^%#*D%&9x)?)93RAd;t&jzyQ0Azr3&EutU@9j0REcX?R8JXPE!;O09m6t3MK>TE@`yej#Ah zM6VDaNbw?$1oX%micL}(EYA#}x)FCV8k&f+p<-w0p-KVp%jQ=8Ss;9=-Y)<9C6He3 z9rF28*N|7_tYFwTHX}$$2zr7cg{UA&I))>F#h_k=1pXInE=WoQa*@)X^NU)u{uU5G z<-!e3WQ5#d#fL+1-cbFg?MONK>8e}$QI}Y zU{N6KN%>i-0^>7)MF9{lHCro@qY$)GC>(;<9`rj~@f9r&ANnAB(I-cgQdN`n5|V$p zwp+dlQdX00_NDLfzIBi`&N$l&re5%r!|}$x;x}w9qEd9B0`kX)NTv_1^_-E2quLy8 zE`&Yc*+Rt2gB`Sv?4C0JI{$Yo>|JF}^=h|}E1j`%L>iYi=W-*sk^%_)!4*Zgh4dVe zu)%OA5;lwjYN%u!qobqaqvJ#kAL;aYy11aN+iIs#zPJ&iJ^z<0vV9{a`%8aTm?O8_ zd%^#KzSw?*k^-n3!0kque9VuB|6r(B+Pcb16MfOhJV$*xSNF76 zba&yvaqIjiEC0z2bLeTsQNlDf&B!jt-A2soaDPeZkQ-mdwq-WUCm|u_cN9#8c23}o zb6#ktXw@E@t!ImWaOGH)A&xOUU&9QCuEsC01U$y84={gs8_LwF9N!3>D4ij=0GH76 zQ6W5rmcF5ae3ujFh9^ub$N?0D580*~%mAtTvj^qRR`UYLE{@5-NH{kDRY4TT(PXs% zkI2UX2n>h;Fpfx%2s^|dnKcitFr&P)YAm4x?6xM<|O1Y^A z7-?yDTZ`3#kOC(s05q)@U4jFx4zLsiJ*(nMkOv8I^;C`ZAn4iORWApPLtl%saR4lX zR)u^VxHlk#P;%7YhhGSMC5q$lRx>0#gK>PQYB{J-{cp<`1G5)0@kacO`fY-dt=$J& zZYux?)GJW3DOQDm9A_*hDtr_<^%<2LmE=6qwM5+$OS)^4X+%nu7y+smiMd`KSz{6H80Q`nN(sOS^_kzF8Xi>dzpl@%?!pZ^O?n6gsD>OwU(N%+3|a(jXSSXvBV3or|! ztH2qoYiYp^#pR)8$y%Y3MOeM5R42j;sZ1&ZlwquPu~;yJ$0D+ibxFFrv>Ru?v%Dqm`}5yH*C^&>@3o0 zI?rLn=7AcONO#hF$2QN+PETZq2m5+b3+aW*oohiprC69zcjxL(ovmv>pIKv38tybp z)mbg7FBZM2Ndp6`0ezvhG8BiGLWpP$MvAONdFhRoRh*gStCzWR#!o1(F_fsPlD^L- zagILNYy^XX3qn^a2TlmflnyIwHt-4H>j|iVJGj`K+yYHb?Jmg?r2nZc@`JD{(NCN= zLMAOldGTppu~+D11&c?wgE@8;*A{2JE<_~AuddOBiy{(5f10+jM*e$xWx8R?8w>H7 z#%XS$PpD?EYUDf)Et-aDR+<(|sWWm?)s-W!%w_-g%1oo|HOBqP#u;nM9Zhrot#;U% z@Pc3*04-mDr(mu1xG%PLqg?ya_ft*h4n-mT%4YUVAC3RCkYAjI;UVNILS zI~ZMK>^AWJ!D@n=BrhZ0z$ujAG*K-B$5~k|f;owJ#|z9!uv`nQNzahETEZpux5832 zT?@$6)w>N@e#A0-UO45Ad8Ax1r#o7gM+%RvNg{O!L#V|d^>J>uiy6NS(@0U2Kunfn zd^t7(@E7z+g4$8ep~R2RpHCeVm%5^07WTC{5y?+kQ(_?~*`O~(ysmOCEDyW9h5{~K zx1DuVEpFQ4T8>Z_uDFcwe$0p*8kpH|4*E+4c87>O$oqg11vPgPjxW@($4xZEAnrtp z(LLfBp;fk_La-KF7pps`nrqM8Ys|0Kri|2^CzB?nugg)k8=9>nw`SHNi;Tr2``53p ztRP;9Pbp{D{VAnKd}^Hi|I%k5pC&1q>qPd8>a{6O&Q6iTGRyl7^W+ls8+NH+0vgT! zjwkgxL=AuCb&uSKcaE^TsW32NEKv}!IVz5s{p4*EJeMzh4h=b#r+TU~tZ zNX~|T6(5lWO|@IyMvq|6^GDF!uDwS3GwH4MpP_~6&;+gcjN)q*&(LyY+r6nPu}hcU z`q+bzEvy53HD8A&@@nlU>*a_`gkfnhR213q<=}1So79RVjd9Qjq+|3{zNm$9l)YYe9NH3V6IKG_6(y2hrt8=D{C%K6; z{dX_p7oLYF{_A}gR#-0oXDb)(L&IDq?Ua6mY{@hD8eh(he@pBT53$kDcBi_iPKD{L zw;Im@>u>}U9(N+t+8Ro@J&B-$9ruWT>93N7HVLT+OK-;CXr*vh@#~49pkGx?D9Xn5 zw3Y>k(?q^J{Xcp8F8udq{tLW8QVI-DcgkPFm}62_+76C`JEeQ23%T3wxf_AmdpUlt ziOI0#aT-wiVYGp9#R$&^7o+G9>aezeR^M=<)r`y_apK;1a_5eT@pzZJjY+rOeDcm4 z?>uy1$BCUMHqVW3pV;2t+m(%HLxHxKI|jGS#avDfrYd#Ynq|=u4@eN+UxxIsr~(r< zWo5s-a@Rrsbe}8|Hy$hydQ*HcHr?a*_e{s4)4lDefQz=Yx7oTw9cf#epS`*8!x?(h z4F93s3u`=BqK4R?;Ge7@9pXE>YoZEp5*ODev^9vSE6e-WJZL=*Jxn`Vqa&fj>8|`HtA2l`XM@WBE_zKLojoNqsECzDdgS zY0PsV1F{#@>yF2m`F-!p|CEJ4b=z&{Zhs2zoWwilOWzqcj%JgiMmC@S>HFW$%+Eh{ z`?=e0`xNwGC%eo(r}RT6k`j74=v#dQxih@3M!Hb~EUwr9)@UO*T*V$CVOD7GhXmRW zNB4{dI0c;n%ps+c-A|R z^!Zc$ZeKtCOb*}>pz!o6yNIz_p+8|uK{UC&Mjh)QuSnxcXL06kfH7?_95WzuX}96M zs6}%+R2%xi;Y4R~5^#`{!=pd==8wl_W}bf=yL!XUmwvJ9h9};Qb!x}#@4ypMWM3o@ zOGP%w&?NE$phpCH{UUL?5!2>5L?(FrnJ*1L4>vNbOdQNC;HL38TOr{omI8b}d~)=Fx4&&VkTQq3oI$6>-xk=iZO*s*u-S?=in0gTqnH8p51q|TVf@H&D>5*T#LM&4_wDxewM<5aXIV=woXqw6pDrr6P^%-9kX@Z)N$=U?cdbOi**4$ANSoUeA3kqy z^S8A4`FU$;3A7<50tQ^{_hrll_2gPknr|;ge~cQ6v??}KjG~i<5@YK3*eiZ|RQ}fP z{PmvQi-gB2_8a;&9TK}u+(Ey|KF9V}YMwns&2yka^H_F$|z44cFKGl{+X{HeaS;prb9NYC^~TP#j@uq_Y_J0`6@ck{xga9`MEYE650 z(P<1~f9}D!`Y5j$1oANeC}0wD28)o?FGGQSaaA}X5M#x{@H8XeJD^{^juvpJns6WW zseJ!*DWg%tt|I~pp&AR=Fq2jk{%4yGHD_$o1KrcRxB9#@%dNhSmQ>a`>^(XZpY8Jx z^$w1A4$U7;CnnqC{`OFC(HFEkZKi-X7wVvfv9Uh0I+O0~4K>qUa_yt+BBYJ(5-!&@nhXl5i)(qaJ@(%o%W6+HsX^#Z_`h zg-?dN1T%O8+mE}1>y@?d60uTT!(gvFLW!=Bu2-;JajsF7s+@B?vZoQE3l-vUTJeDhR@kuftHSLn02^CT;dkN zPG818l-(kHq4$bg1ShBL7Gbh}i(vlr$ws#bzD&DCFmvq|vHG<+lYaWYb&Di}{V}>k zg311pOQap^(K^U45p#>Dc!{*yafvu=ZMZ~a;JJR2UEzDp?S=+-NSU0L*$vq1?0W7H zVLybh*NJ`HY-sOqnZP9ivmufYWw8r+)IFmjGt4Z=z%>w)ig z_}c5`sQfUhywEY$(`1FSlIixh1Dc%elTcJZ)V%1@ALV3H+RpPomP|GG&{1x z^N?daMqFPdw&hMY(FM}OVI0k!$l*CCdJL2gCnZOOn_AD2SF5E9sQSQco-xxE;gGmn zOTSq$D{4PRRGi{JvWGA1*~7k>|0oOO|LMYo^ViGD${$|1>H70{TFkpO?qz*3PgJa4acXrK1oiR_uHyiTy_VxSxTf?Cp?%Q6eSkAHE^^b(&a|6Ng!Rum~ z{+PF~eV@y}Z**2QI?U$N&8-%qJ35iuvd`ni{RwoiLK#|$#K#DS(qxk@jutb3Zx-oH zYcm*LO&kv=V;QYh!ol&fuvnDWUKQ)LL4GEFwK_3%(R|JgE)EDPCdB_A_VUPpaX1+> z;uR&kfB*gqANlOngZOpp)1SGzfA#MkI^4~Ak{8)qZ`=13{MvWhb^rK}-~RSzZoBO^ z=+hLET8Mc|5h*UE!KmIZ9nW14F;GIV22e$>!ew$f06~DQbQb;)P!eq|ioHp)pD_cF zKq$Uu*3>l9w4=YTCzDPk6XZP6Jc`pG=Z$`~diVw=F?NuM(Engg8m9l@J<sv$532x*omd)MH1UJVJpyzr9XH+j#;&KndXTzc9Qu;{=9|MG%|CNK z`ounWn%&dZ%~FT2`{56N@ZInJ;D>XBPf-gAhg&hflHyHySd~`IHy=b2}^vZ3g zel>PWbED> z-g|KCQb*cnLm;Aa+2(dFk8iX4)1kT4Ot&Ys`RMSn+p8iF45m^1_52ad@|TdPGS2}D`F3%x*K;n9gAYY%NY zarD>^PA_lzy~n?GM{@YN&osweuV#P!K7Y&I?3;^sw&#DujxT1fbGk3=3wM!CGI{N1 zY_I$soR0*>0HQwJykvorg^Yy6Gwhpwn4{Ytp zY#s39&r3t`_~2kXKEys(guSwTox@w=i7mq&9m87^@h!uhpX{BO?CqVHp!LnLcgo*@ zzPF3`!2s^bPP=NrhIa^e5{)9zV;YPw2#Dj(xe@sm>6jU@7s+qjk&dUKZ~-ggJ3fp+ ztr|-rOgrr5yjG-cJ!Q@%#-HSkbV%&wgAX2>+ctOTfyw+2+WLGMPhw_#>qKH_DCU_6 z^#l_WBiqKpGa+P)p8b=zyyZ_==6!Qb4!5mUwRLy*_PL$8X1B}MY-vs=dWRjYG@DuW zxcp=JuMq2Olh9kEt;MdO=992;;BOM;2p|^4X;u8&Rr2EWe=&3|(G-smUamGH#?mRV zeJ2i`U~U$D@KA0chf&LSe*No*Wts9Yxc}yDz$WGX6DRNDt{=jtG9Pofb|Az=#gNs91fuKi4TT>g6u&QJmG2K3I8A7z5~9k z>g@ZTD_gQ8FImfyEL+o(x2)k6JC=8x*iPc?3658sICij|gir`0qa;wuE@hMgg+d1} zg#vxyEp2&$(v~t>%4jL2DYQV@dnD5Lf6l#<F9P}u@1abE(Sy=%Md%@B7Z5UaV1t}<-!U?^yw~PX@=}69LFSy~s~ZN_Wu=0!a6wzky!txmgO{!@TP>q7ndBzrb5R&H zC*%>{|Db*R*)V7`S9;B5C1p*zU`A0@qjzz?)mNzx`X2jna`do|ztn(X)g?`pZXi7- zo55;#=;{gS>1=jZ6zP>YW#+zEEIFdYFVo~;H&``0leajecqw=l@Kzw^1Bn)Na%fBj zt5jdqOoiD+L65nrcrI9F^Hu3X{y%3o@vJN-NU@Siy{dMr5cp37Vi*^9>?Mf>OC|&9bH4UCm8Z6-D+WImr5Ka`2Vm z%%4Xsz|hD5bX5)jXp00uTL3`I*nt|@K^6dLUNVRp`ag3%lca}#FPueCm3Szzr+NLFsO(oM;OOTL1ku#854Hx znA|ozxNgm&?s@fdX)L+0(*FlE1VV43I$wDlKJuk#OG9$Bino2W0m@2Cisu=;7OYv_ zKyM-Du$d(E)P)iIWli8VuDT9FY`q1I^CNx2|8Q=>`j_Ly+W zK94GRDuvg_X0N`17yUiDG9GT9&1hsnBwU z=IAT`_Z)pJmmMRrMOTSzFd@0Ml5H{!QKh%AXei? zu)Po^>mlMKSvdG%m>Q;Mq>&HGbYKv(1elcR!QEnL%A^=>c!98RYFw%Y03q?SU!71$ zK>EhnF?9H=jiK0gxIlMy!TPFGoh@1%ThB*J4co`ttxg&pxtO=JifC3+95YI{(Ekwj zfy0I2Clq_u+)1Kla4d6#1mby=t|;iSd(vaS?1ZEl_BUprUnUG2sK}GKU19;mwuEd8 zoheQdJW^o6vJzLw9kN*rWXIq{U_s73C-zMyb6DQuORf^QI4`LmBO%bA1Xs*=m3D0i zR<-L`w9(O`Us$|(-t=z&!qGZQz+(cK9`G1-g(VtCeNRR8s%Wv>q0YEz2sBAZQ~fURo2!Chs`FDcAJz2LV)oB;0gmAxNK9R2o@6L>#x#BUPsM7mm`C|Ure z75HuC`b-Ln?tos9z&`SMknp7e_`uB$zje+M@v4N^{xSSV zJc{p>cYtsQ%6wRZbHv7;qYu`Jmq(9oMcNI*JHpNE;1{P&5{QP0cfR#4Dp3ahe5^3x z=#DyIXhwF5Xvn=_wc%?~L8v+^i+Rl}3uhF1SeYr@84tB>KlO_1`bXH;;A8prBd;>< zlfWsi6t1mFh1;FpQ(NOJ zhO3BqHEp$R6=lT{U&L+$0HYSX%&V2jqIotbCPyx1Q%G!)^uP!J0?JZ9rwnBQi!+&? zD6DYXGBd62%EIFL<@wf%`5t?@+omu*&HQsP%;=Q;|VkTwdmd?p27y==V;2U{v2ISuKJ<;lI+~<9Cf*+1lKtlly?yjqkW18a5;W+sRH^?tvM+H@R6jZ*1hQG z&7ol9=F*Grn;#6!8!f$vU3!LX)2jYer&&*4)laBk5E?U=h-=VN8UZ?PvZ=5N21`Ws zPvjv6vzv6SnWSGAWCOA9vW*Wv9J{_?e4Jfz<5^1YRm3&bkrl!XpRwVV(}4qA^MZ#=Z)Lg{n1iI*7$dI5LJKJeJs`OK!!7 zOZZm7eMmd=6sQH$gA(ZBokq`w?z!jEd+vGa8~eT?{yBDO>|!>-#$)HQ{MgahOH>z9 zE&4W)b~ljV4bim@z-d;@5hv3KiiKI)If5vFXcV!mlUUx2lOT*s%B4IWC<_KWfr_%i zf_xJm7;hWQXW?B&(z=Qka`n=r(AFRoZjX z%@z}!8J0VBL{Cvuc7)3mpb3(R83v6%fS-^m0OI1h$g(#;Y1;!vo zU81}^UM`AAPB`$hp`*iIyEs^XQfb86>8U7VmIId@KxrIhef2JH!H~HCg^cA=8F@M2 zo8}UfqlzRO0HhGyMS$a4#LQ7-5GDl~FA0x2dGtwG*ZJJETIx$Y#JPDT*-%6$tIs4F zlnO^Q$*7YR)vCoyn8{ONa#XwWRC=eS+Q(L{LR-#^PK~E$=3#58%Y+{nwJNX3Z)Vq+ z{Dr#t!93oSBjp35!+OxNTwa^fvdNLahk)F^)W$4jWT3rC z?v4>*TV5C5R1vXsIRj3VU+0;8_FG1BF)VB<}4U70t}#lLE$FY1tsk zP@`{Z!g|@=)ZN)0sxI|=-4uyA;a?jD(HfzVHBu}YuG1`aBzU|;PaZQhQu{On$zWT*X7EnG4k|Xf zJV%K+_qZ9XR6G`r`>$8AG8ID-7X2Iiz zlAHq3y|g*^5=sJK0y+KYT%@6Bmx!FGf47Qful)?9B4ZCd52(L2lYD>?)DuG%hdmecLZ(PkSe zI)n2Uc+?XUcC*2kWlQ>+D4XZW4Z*{)BVV=LZniq}%sH@(FuQ}E(&kd5HqVl?E^2k; znX=VNjoDe{Ds3q@D^yu(Q;EGW>@yeCED4Xsg#vSSI_69}NJFz&1&1tDKQ` zS7f#EiM#J+&MJ3ap$VEm3h1tUCBaw}reuKkj@P^AemX-Kdw3laFTzZq=p+DE? zE;r|wI}Jt`9bJa!^X%?CoyVRxue7A$55Xl3Mb5_l>cUW|LzB0lEYKaaT7umHV~M*! zt#y`#%@)5cJEy>xpYJQk$u01)24j&?t2GrFz2z0CzXL2H?Rh2rwTftI0+&tVvD8X~ zkZf>)o-;iKmi_;)0?lswOzkzU0*%Esi9j3g;wsSiW6ZbE3J$G+55y4GAk;F5ogiWn zL75*sB;N?q-aABk#Jrwi)>G-L@}y;8BS?xCb0#F@R^0VJX`yn-^n7r?CNuj{2DzEr zsB?u}y7pwHSnUNeLJo0L-*cVkr zOY(}HW14(JmerhV%F9ukI$FwF%gx34C_Cng@N>+Sgy*$#Znwy11@6H;VTNSK-M(9_ zI{F0h31H|H>)|;fQ$UPWHF#s<1i?L%wIf^`^Q8uf;swaC^OP`fbSl91(LRv2f@1#g z(1mxNck1Rnn@>G>2WyNy0JnLUg89QQT=;`V!zZQ{>1zd7vY_DvmEKmMdF;>ydthf?#DeV$Oh|h(yF#ibdl&WOHcY5lTB_#>(1L_Z zgvvzv#N6mq8FO7Auyw`>usw(J@_oA?m;cZc@)ja+-Y7|#5S1T^Rv zdm50OM9DyN=GfEF`aio8&@!Q*5jksc!8Z0x_xZ|}Om+3l@Z;OeSkhcp5iK#8N~5Ka z!WlHIZS2g(=-H#ujxA?4w45~>Wt&Tvca&9jEi0Ce%c;#kAASw`KxOkrUC`md4ifZ0 zHt%vO<`#^$^v5Zo{HKOKRVUE5FNT2+41Ku4PXIj!rd%{)q^Ja_6_SLWgG1$uFb**- zFeq~Q+~q7b;2YzEyB|W)AB@do4{o9PVZm6KWH$lZ2bwV#8U7rwS0WBvXXsdboU&~eFzCspyfHGjz}*zjO5a7^(bp_C-@eoXIdvR(nhc^sadjNOu;Z3tS& z1k$5Rnjn?3QgYzMK3i>^rZ0T2aw{ZO5?tBr_H~|I-*=j`*S@TxrbAa$YH>8^c4TB` zXXKgK#-jz9mF#z}#^u2pVC=08OMI0rHI}j>U7=OsYg*)6H+9;z+0ed$2iEuzu^;_t z5j;^R=@FFkoeO9GBO(fF&}V0=lpxfW^bFD(!5Akuj1ptSPvLm6v$Wooy}Kwn(%C&6 zweQYx)sET&O%7HVJKQk5sH~!QsFu#1O@RW8UUCoR#(evH8!>XYke1eTj9Nbt%7`<< zxM``8g(9pY_9wPt{p!`Rr|!7!RQBW8^4-@l>tR|oiNgt^Zh6>pdkDQC$NfnIBj6TT zRLSZYqZUv*xex?hD<~-N6u8|^sHJkcMm2>89o{u$<)9)P2qTys1^pq_2{GuXS>TU7 z!@3`tPJ zMpgqYr$6)7*b~*JSUE_{xf#s>WwpsUHV;<#+>~$y6FpAbcihuxAqhnGCZ8fJSlEJ~ zZ6r-Vp%1Ka&K&DILdKx=cLM9XnssC`vF;YKm_Sj)#b{Hd;EY1s3=kKsYJ!lM`DjG4 z6VFS_;I0R-r0xCwO=rF{f>kB|j%hs@0ep4TW}x+{B-OYGiPA<) zULB!jN2?>2u-Wx7t>n^+La_%k-{!&J@&zIRy>?t>?c4r6H^)9JBU8y&gwNR#+Gir-8U}2RC=%eSo|vXoug0u{qJb6O&qUkikHFL%u^W8Dyj>H zDu>D;A0k&Xs1*FKa(ata(nI%+Y_8!)X8(RM{b;e`hi6lHX(p^dd9_qtxL|{%9}Pkc zjk2QA#Y&Od8w>-uk#x@7!wf0}T~MFO*uI--&wS&^nGY>PnLcIdAIEZ3VGWM0|R}{tE5zeum_z1G$baXA?P85mvx`k&m;9vQ=C{FP9ibT96a^ zxDJ2MMAx$2_6=I6uS8!KEi+jvqdr5a*8u4(J>wruS!V+En1zUsEx7IR@S7E=;+xxQ+)+q~2^kfapy}i}5b{ko^VuLfI3eK%Q|T zW^$+5PXDb7b(kIPwJ>I}QW9PqAUN~jsv-VmY^BBEvDY)FDC9N@ZuU^Ka@Z|pc{4)O>LOtkeo@O#AF9|ET@Fk zoxqq`CvkJ$i8_vb%$5cM z`Y_h4YxR1XR|e;;w;niPUAi@|ySy;ug~3^*sG`Ln#d;s?F0HLvdGym26+zZnS#PVT zFLKnE<_G*}uL9WV@5fxE(F{M!$BbssOK2rvNJ|E~PGT9jK2U+;|7JLU2@73gF*mXj zyX4`#+f@YXs)mqWw#l~54rgwYjZJm@0~SNiJK$gT3aN`tkP|8>qPq@4Zw~@RfRrNI zvMqXo2arW2Jb)L0Qlx`VqRGn%F1noptEy-ROWn?QamTztipbnGAt%<CtBLS<%OpQ1@Qs~OxW1M`EqmrKsVHqV%xfrJ zQd$z&)-?UKt4)?Vi>b_MhxEMl}#hq}2Egwd%3FGA}qHtITY{&!oi z-M#njyU%7D;%Ked4WPMyV3iUIK+Vf#aqK5Z>1MWCO38sDH-Ofr+BZYewiinWcn)!N*1lPCh@Z4?R`I?0T-E2f z_RW3VzBw;PyO`TI--ue2A-5;R-_OZS&IpqmoH^;?b8BjeQA_4Vz-p>BbuHM4Cu0+b zGQ3sQ23uWKAv*}4lkCwJg0bA0anlD3uQr7POY%)V;dsmzdXWX)46gH(FN?Nj^!vXdpk^Acsv zo(HPBgsfN5?i6<;<%SkF(03F|!HWu=P->#(`Wo{3hh>yH8bITTU*-Z5{;stACO(U% zNLRQ}CLtn`1vIlVlH)(dnw!_x)4iap)93g4W%&qXm7gOYA)-v|bnkUwq@yEU=PIo7XX_2By?J%+!k|ZQ^oHz?=B&L1XD)9U=_>YiZf*;-IJCLz z*S0ToDIowc8T^^E0uWDw&sgiruL+iC`3nmzW%W)MmT#xsKYwAxqQOXH)1nH4!5px5 zEcQ0``V+Da8goa)7GTd_@-~&5gE3bGr3G{+X^k8+_CO{QV-I8k8aikdrz*pS79m+s zqN-esoM?zzY@9J?*k3!>&l~M6FYntrfBC6}>y3R?-lnpAYh|-{S^McP4AnPPEg7wE z80jf*t!wv{6$GN5;%KF<%eFf9JPJe8V;?ZFbio`o;2M-2GCEmN=y>%uwsJ{qEsaSR z-mJrJdXDuxM=ucpffVCl@j%QxbF-n?eWEFL?G<9rX-COv75oQ$3f&dr;VX%UKgNFm zcDh&zNneHgq)DMW|` zmi}_jz^_AzR!@E%$j)DqF|Ou3mYL)rD5bojV~R-*^f*KSC+9if!?ezHNsf}hLG^^S zL9jSqY(LyH)$1!?a!SYDC#@bEt7xyx7puw_4L3wLcl(*8=j7Op)~YDx0Kzs~(fY2TFU{C7?>8J)f4WI*f;&BdDuy%oQN$hCg>CTVk7BG+|Lug~L9kbJ_>4pIr>CHK&)TeUmCOJVZW7h9`5#_<8C)88H}&=-313WLSA zjFq}@w9`%7p9S+>wLW9zqLbAN+E!<~ou;gOw>cEtt~GlsCWk=-Z${Yz`Nh`k!bn$1 zV{f+7S>5CeEvmLqU(tSXKE|5?sLNh?W2nP^(MS75)QE=)%1ODyH-^%SwC@9UF?Zhw z$+5gia2)fPRK>7Epp758g6|N3e$ciLxf}F;w+a-?iA`QA!3A@ym{msP*be)dwZEoj zeXG|!pZ0yW0|#`yrC3%BCSSP7;CI`U{pEoIS?qyfsMyb*cMTbT znuQ^0_-LTNiTR090{%(9fW~oxchb}3E#T6)lez2^dfB$9S-MMm1Do^=O@SwCqFFdG z3ubuQb1ShjB?l78EhM%DXY4xrNPSgniT;4v=(ZMjnGUQCRoiQNs@Q_qpR5&*ykG_E zplIn5dfJCJ(sCL`Yy;vxVGE>C5X{N$wp z<(I{(=bl5m6GyTe9En+|5H?4(b}Q%!ICCD>NDCIQkYullwCxGOe+aY-Y{|)#AJ`IG zw1{57s=Vhj-dGdOwd8x<1-ASOOGUolMJgK!o{l3a5{ZHCMz9v18YJC~#6ob`*;kRe z-SN9uP5rXewRQ%oC-QCwyPsl%iEnvEvE^Ah8VR3Vyl%5@qra*F+a5c%Jq|jewa9hn z)8J1M(sL^Zhv9qx_qp^ON{@tD_8uZAANS&)pxH|lQp^l3Np27_gnVgY52_f(S5~wJ zcVF;XUNz+u6-3qX+k5D*2sS~fD|ieH>QzHcu@`$ ze@Po#*t26jf-*bUb0~us+C472x6o_U!RuHC_U)i7wY5&Hf7Df64CMw{al>+(FB?XU zE9A9mb?nw#L(Av8T#d`BV-MV{))u#J>JpDs2ZPl&?NAi-fBVdbW3St5mxLor>+E9h z___B^2T!jJRMtOA21`_!L$;qP%ph9K zr*+R<9cQL1U+g$|kb>33a+oJ}OY9<69Q!k>ibT;9(B+k7VgyHFTa39t#sWa=pgJrM z6P^{1I0@=Lo6A!v8L;c;B+h$Tyak@r6|lnqUj*zQHW;9=yiN$jgY{hwmq|tmc{)RG zI>sLbSyw>P>ej)|BgB+&UH%QWW$a+=s)>V&OLtk1KEd8W#JYdQEVDJB8HHdU9PQ$Q z5k8EFx?{d`vlP6{ItZxazD$IZDHsVhCi!Ogbnv>J_5yQhekrt6v%qdi_P8m`W?cBfi#3TYrwtWhjoMFSS*+z_+hP zHKojPmWi6!+3d`tF9zDm^a^;83>9VN=V`nJMInSarM`_X;c-f}f;;NK@JZVzO)qeY zijCwQNE$+zRAf~HSdk_bcLUUWh*=K)Y44MuU3ZARM;mVAt2SnWcr{v@cmb^1XbX%M ztb|FHfMTD@1TsUD0r#quGNh;>M*ILcSlCRQ#=k(i zoQ?E}D}ZNC+`+n=PTI{f;UbE_=O7B6n}hhV=3H~JQ-|1~z%psxNkmKOcFqz5*zlb5 zKzK!y^J}9JC3O&i`XBM3-8U4}^o2H0?ub;D*F1<3+KRgELEezuLObNMrS|A`nT`VS zbT}M-2fRO2LTXQl=kZc|pm-#7F zOO)?=-h#A8Oy#eLQ#et}fxk)y(G;(j18CA1W>v8#ko4bK5ymV@k^cl-;20bjvK#C} zvFdViF-NZpB;r^cm~qN5yFX*6ePMKz^e+yLBG($a3z);uprR5MKD+GZYddi$Tf**spBp8YW=T38@msM0R zYjimp`m1mLZgD8r>dw1T3KdzgqSgNf8=W7ql@&r|1n@CDY+VHpTPK#z^XBEkB9|D&?~a9PWp7zURcp^#wkhEwE8H8h7S{GwrufF{*|RRhHn*HPG+%a#Rob?qv}#qW zKj{%GI=Yw2M!W;X3ZJW&##abhfaF$9*e!}1c#uJAQLz`hEYhpQ%7gDsME6qHo!NzE zcI3=1F66h0{M;V9xFpsRpK=MFKSbiY)n1MpcsEKw=0$ zfhFT7l$G@&R0)N%=CCW7A9BY{@N-yOLoA}t4X3hj=ft`$yW+Ad_Fs0%WtZ&Vzijd1 zW&2kyUAnR+=f<>hjgYM?D&bc9X%~M$?End7qt6jHr$;K>Do}*|^3!X zv^!E6cv-sxY%(H^B$PWY`N?gU9ew|@n{T=NeK5grbDj~qB6dCemTY93sg?WUi^ae3 zv}rv|7t{M`*h?%I|YQ|A^p9DVyBGalS>4yFRFh7U20czN`w~}@Sk$GR z2$Qwn+*xe-xd5L$o|ZL{*uQ_rmY-GMFt6?`@u5!&8&=fTt(;dR_Q%}wYeFq(D&AfZ zwek$LrzGx5T6a;`mL zt_P3HQO=FQ0{s*5N>I#FAsTHev}3PN5>(Q_k)*1Gw{UF&5KqkTS+`9t2Zhhm<-+a= zN}?)xeUkLw0X+fKC+&EGo+OBxM=WJs5w|k-0<)_e!H$ajaG*46 zi~Ad6EBCFf3a&p(X)0~0I!rT)?+V{D=e}@Yj^oxEzHD0L+6J_?R!TzexzF2qWMM z6{J~3%YYGZYO&8J$#rG*3R)i?A+-wUy#8u;n^jV)7~XNp896$arMM(r;U3bvnslc8 zI%~K!tRdYBZ*#dNQ(G9WgKkCJGaVh2!)p>v&&DWt6ywn@?32-TG=##IC#EX_s!Qm4${iJ{ zT}dw%p+;C*l%vE9bA>(3IC6DHN&ucTu7z`gHvmRRuc2ai3jvn$+-?t`63Hxk79Wum z@4&invgUTFbnYKqEk`yjTm2m(~g1OKjm4{g5_R=RUpRuy)&l8r~L_8kkuv76cA;O1L@Gxe*UR zrL)+}T~=)#yLIgBSoJyVZ{OEsmbrE_$I5T*dYBkLAQq+U$?@}UC7p5|c6$o(5v)^mjSy=%e3)@XaEs;av{+#0A}yQ*eYUe>y{;NsfCQ0Qd0 zzb;tWI8s$s>~}k;-H1jKGN%V!z}jjtkg#nbjFlk~*^B2CF=v$Kxr8KOmoErpk(>`j z9(<(t7(8n7d&7$g?Sur7#gY)4*aWD`H;Y|`(_{Zmpl*sw389+BtByufU^uiXP;7BC zdQ~St+aIbUP9T`tdir<83~B`;LYss2k!y$EFsdg zi$(3qK@(fVm%v&0iPKeZx?y1u34)3P`AjMeW7K;p{a&6AM#e0&gZ`lfueR1KZPYn5 zjubk_P>?MneONyb;RI{y}JCbgOZ z_(q2Wlo|*8gw2`~Nby~veBscHyl}-X%7z_ZU)%(7G zPUv9x>~G!j-`DJIJhy4@H9xyq%zO<0j>g`86#rPxQBLEmpHh8mnRvTJ2bQK|w-3 zn3NZgB?LHdUFd<22KT=|vi}#X_vm}9J@!BNTBI?Lbp8yC(j;uUD-SA#Afb|V6ciIA z5=s;mG>a%{0mo!PNo~=B6A;?u<26vi60iv9i4R2LnXWt+r?sS)Q0xnl$Dmq8vS{pi zacy_^T5%z(DqE?1LMo{E=jN`i=3>vnqc5ctS+2VSrRNq6EInj!0-7e z;rnmN90y|qQsodk>%vE#yW)EHzI}x--i^KU+uw?rkJCuZh#vvhlqpf{1g*yWM-wIF zj2L-FzNeMti=YM&E2=W=UW-nRsk(oMCesz^tDh1LH7E66kA}W_@!;7#*rmwjJ~vVB z3^+$8Mh|}gv+S8$aPrMfJ7+I%A@~?a7lzo-RR_=7-@N~*)Ql9tPYq1BBoSd=+ zr&?NTXhJ0m(WtDlKaE|7t(`9lIj7 z8Q);6Lw|T9YDQW*GtnGci@YAF4g)@c>hP?duy_&ymIbNK>}U}v#KIJHf&ySj$U(&2 zCwNEJ6Lu7mo^YlH5hc^e6hoq`#k?mIl2tGsso@?~z#!S~`LMy*VPD@ES=-`uH7!4> z5QdTP)L*3cyKJhwg__!`*kj_~*H%W#x(93PhZdGjSxF}cx}2nw^R6rrY0 z0XAS(%P}@!yem1%>{0Z1{az0T%M&bns-93%Nwol4deN1;3-{{kTymV30#8%sUfb!b zq9Y4@Oj)~WVfn(wxnW%zd&(CLqBP`$=&y-hBe0ThNBG2oU?;WLNb!R;?EfBn~ExI@i@qoS*afW7+3#uUX$&k@1_@!`j8It^Hb- zxumsaaVFXXYKvkn+B1jHApql7s^jv>#G4h~muHrGnlgFY464_6l_sAs77UQSioG zGa)e~^dL^0$~wtfi7T=Z#?1RQ5@Pr7HCKBpTFXsmmlhXzGxy$`kzucHE&k!R!sS}^ zKN9rt9bR_qsJWysQEn0`@{K?eBO#gREchGJHSfO|KZ&xlDhE8z#97H zWI4F3+6X|;rjptNEh71DlUsyi%G4^9?y6l!x6P(4wT%e=Sb!zD#3z%?7!J*d`2nrr z001qkv)pl>PU4AmI=_Qt#z2#a`M`b)R4?MxCm3Sp87b|qDJl$imA>^&W?1j`mpV4E z5pzXbS$SI}TwhJbHh4WA-=)N<6CZFrN+4m&u&4B3-42+28it(83k;qa!ON?McWgPy;O zGFlOFW3vQoIk0>QaOW%%mMpEyC?G%sEM5#|YM@U3*;j~jo%h7j%c$m-kx*QO95v`~F(x3T$sZ2N{npsu~gq3fbM48lkc=Pey zlTrzqFKg)X=7Sj@h#`i7O`-;SXWu>HYiptw+H95hkKJx1z zO9e#t3%6bDW;d<3==1wlIsS1*J-@9Ol3;mN+8)Xo8FkE@?p% zkiX4L5G8=4J|FlCtVzBqUsYL&v&d%E>oSVf#VN>db_(*VNE(8CR&BopJoxfvuocA% zMx)W;E-w>fTNU}m0js|&YubKhAicL17Q1FqT)zwdj$T=YI4X66i^>sCC6bk&Q510H z`5cbMUe-9TOApKf64`g+jbbtSyG;06G{S%SgqlpL)Yvtv zMRIkHO7qD=Gaqw@ulgr`Q&Q=XXoU3UnrODq%a=$vQ}mEpN%~w=OecvMFt3tI^a<8b zEH0>S^LyK^4Vpro-3y0K3vv$h_8xfpY3pEfRkS!at+XptkZ)e6$@C%$OjBd;yjR8W z^8Wtizn&L$)-5U}eiyUrTGUyA`gGih>Viv<>I(UeB+`|a7c4Xo*pY{5yu24gVb1+E zccBuq$TR1yStgL@8bU$DZfNBFuY`mU=lP*%0;Td3HHC$mLd1|d5rB*_M7wGNe>gQQ zvXiSoZl;E)(g|r@LLejSK9Dce*;rw$YQ8i`TKc971~hh;C%2%&ov(cO*V^t-p4Vl| z*qRw=UZ5^pw5hIU)1va$P^%sRrS;Cz{MC^*jozNuSXf!4!x~_M)$h|Nbp`30TEUjs zpqB&Sfkp@VpX;=uz%&SGqb3(P-vrWM!750BAsuX{jA4#R@PW_b4mWD}F(|QTPo;uMQmJa8!dTK)GIk7Nd+#B-Q9JMfskL zdWT#n@;PcnC`@QMD!5%F*1nX7@N=IBYtcMo9`K1wE&5Q$Ahk?gzGXK(B&^aGx7!-D zj$CW;0nA9vfd|a_>$F<0U9=v3i>9E$f>wc&Yy60!7@P~~ERRWBNe6DL1W`o-Q;uwM z6bmzq3x1*eXN%G-J?0hkru+h0QK?M63`6i#C1)d$L#wRiJS*47)Fe0}$$kNsu<8II zZlCnER~OgT?!o}Xo`pfT}TFJZu)P$8NtoX@he1X3jH(!Bqn{aX{& zc>kgOV!&49undTqzxYM6_|HDOMJhN^d<-I@_;z9AU3w)Jumtfd#0-D}GJ@ieI8(r8 z2LS{iBgjZhk`uqcHpnlmiDq)8X;Pb};Ayhj^ogiAu>9{<`YXC+(rp=x66rqhaZ_V= z(`ypBey~1DVK-y{L~%J6?%)(VS6Ce-C!N@8z)yrc=B@A#q!5)5#1Q!=&E_P&V~av~ z3vJ}Y8*?7QM=~u#Fv3qLS*sFYDF?(FK+Daupcn}HqqDe}R4T#<)zE(Fie|!vHDrNc z)UXSe=3*XiKhi=;?mul{DWOQTch1c(OEQ_yxctQ4{*<4%Xa5D zbZkp1kU5qvD$V6S8D=>DbXa}eC1aY@S=dv;FLPpt4Hq=~h;>J~fDB@db`ckI9J3_0QVE~nH;<{MXR#gHZ+HyG{^fh80piHG5e_Of0iTnj+@+so#u zw#S}<<;ab(!_bRNNIW1-s?TVxPu_P=F6GjG@1T9WB`( zWCFbho~%-W51_?V7)b}u2!buEjo`IhDGp%<36J5AK#JbV^~;%2w14N|HP^(2%m3>q zm&W4%T=mUwt}?JkVn0AEg9um^7LNh3Arw59b`J;w1lf`V-O++4Ksy|5NE@9(CAQ{H zEvZ+H|e^~X$YZ105APZ7giLVW0T6e4ZxcD|X1|>B6mCQ-jh`3i)aCIXJnkq};J&VAJ@dqkG%- zf${NysWFFtEO8ng-8L{bF2B}4IfQ&B9i2OdCr%p}9~&BQ_%{!ak55LYMv}MqyN+FB zGn*a#!_&i4JBNoHos$zYj=q6y!wy&f!1(a4f!&E?>*V+l6*5`Ia$c5XQOe~!XR~Z@ z$VoWp+Xi0I)H^GOr>4gyCmf;5Kp-$W&oMJIGO%N2a`PC9;NMwY87Xm8j63Qa6;qBN z{&w-dr#h;`j*522_`uABqhiD{xO-~cQL)R><)|2RRIGNm66LL+OyP2WQrIr+MgXTV ztW%qX8NmVOdQd3AF$i}%)%bOQaZOx>Ak1=r7!2S|dbbzvb_)|w+nVBkcjKO4*d{-Z zBJDAR`5G3+g=w5m;cP${fmP>P+x4&*u^oW@ff!?OWi#?8D`lxq}kkDTDG*>oMkF61)k%kiyJ zj`UOOd7@f2@Y1H1!U5tTd(%E-b@>))#=2Sn25JF1__|K>?57#sTMo_yQ zI8LH%#^hG;qh+e`ZiJ7b3e?jf)Zw=RZAQ6D=Upl1r{cUCN;dRPJN{DN&+t4ekb?uG zg+?f)Q-St$AVd?L4f4OM@z-@+`&J}tI=3GjDCIQ1pfNCmG-)&r^N}5aL4cj7VnS>>jlp!qb6889HX_%uJ8Mw>_@bBxzw2CcRo?@=EO z;^^RK+t32zcv6XLnz=Nt$M6QtIGVlG9@OWfcqWbSP5l1nwF$LnqE+eJ34Bc@q&Aku z1LT?} zqJ-3L)P6%qZx_-bIz?lZ-X$73gIPz^lv;fgo=LPxn%fTCrM{PXAd%v@TpsEh2U6U@ zDHY8CqRrGJ^p*5Bm7elSd@GfAkmpFFh3EmjLuIFQX(Y~;h|;1yljuEB33^YW_*Ca% z+@ZSBSfzH6<{afgWZ+TrE` zoH4|7;Jj7PPS3y&KrJBdHuO@mAi>JPu0#h*4LzhBM&KuA$T%zzu-JeR*#S}&p+Zh9 zi*CS)Uf}Pr2*Yw*3WT~G1G5qpAm%QJMLmp#x)zIaJsM#i;hf z`-PtimkTco2ZRfR^Mq@JTZHeiG~p0S2b^#TBDlRPd_(w_a4u5{&kJu0-w}QwybtyJ z4BDTQNDtG3dUFZaf8DJB4oDAv}#P-ihJ- zDi)#BFj>APoFSYp{7kq`I8)dooF$wsye7OM+=H;RnJi2A3(ICX!V4@{I4Z=L4hjQ$ z;W=gy;=SOK#`v7?ANn3K7f8`3bZ@R9H_D`r0CXC=^)Eo0@Z z0>%ba@OM_tf-nOPvk3f7*RncR55I!*SR-p<^I0>CvKH3L+E_d5V4bW>I4t~wEkG>L zg=`VrmiMwgwwNtpOIbf##+I`cY^Crwwo157_z7Fh*08l~9b3;fz|89;s1^>eO>9tj zQFw_Bv0*mCM%iXIhMnS8HqN#ol+`5L&Q4)dY?{p=y7^AFi=E1L3-_|q*w@(U>vt);j9t#Y z#jarAW>>PS*wySB_8oRD`!2hVUC(Y{-(xqjo7nf+&FmKT1NKAqBlcr;d*5dx-s-J@Vy&;dbE;;V$8B;Q`^N*lRy1oFm*X zd|mjV@Q`qy@C)`=_B{I=dx8C(9cKSvFS3`|KiR+7%j^~QD*HEkjlIs^5I$sYvbWgV z>>c(ldyl=(J`m0qu4NyxkJ!iT6ZR=P!j7^Si(@iFK$n9W^wNv|=WF0%t?FH5VRW@(>}@0FVAA(JbbR7NAu&cs;Vi zZly?ch)&TZxta1}w?X1eSBQc#gPN+$ZiA4~SnE&xKv%A@Mx%eDNFN1>!fw3&o4X zixC0hQt>kJa`9W@74XAwB`jR87OxS%BVH?hSG*2-1viM_6K@o6f@Q(Y;w|D2#2=>h zt?21d?U)z~1X=>}v0b@sU~p=3B76Jr)Y#|whd3wRnE+=$<(JgGn=P|Q=Y3@q*PS{(oxy6X=-@quyTMOR4tRENN%fY zKssvM2FIobcWfIOA3jw(ID4*X8=9OM7^E_329u}C_Q3%ZSUJQGYW}x!V0;GmrzQtx zaGwsU4!H!watS)55)AW$rX!i0W;l7O>X6GdEFF~{QclDCpzWG1nRaycT+@|IKr@;= z&Flj5vTZ;ry*A}Mb2Q~byI?jQ?dI9@v;~_6rqVX!kFtAaY_h zT8&BV+AWuVOgd`1lf@Cc7m8zBvBtA2NGV-y2W4Q1(a-IL;4gJ;)|)9DkI3()Sb6_kAg!WKN`9DEp-E zC!`LT7}!2JJu@}Aee|lIMhB*LY#Rq! zlr@=prR*ZsMd~B7EZK}m`i6;{!2l1-ztd^d4%B|QLQg%rt84oa*?14GA)g6iV)p$`#E4yRPE7`+yF4f(M_tayFv+V9UuVjzSxl}Jsyr-T_oMkVb z^Gf#QoJ)0o;yv|L;w-y=&MVnytd#1hS0vt3??{|wubA^n_KrE1yg`E1QojbPrG5=o zOZ^(GZcU#~j*eiP^fXj2jgnA{eBIinZpU!iG(0}JiwF}xQ4b~079`I$C(bl|IFlEO ziR39NocMYwdA2NhHk~|Mo;;gLoGDlF5un^99aiyCqTIy~>QzHySR<#$rq#QWXEYh4 zlG0p|&S;U5&S;I{XUYy~S`YIBx;^p6Sn_Of@@z7Bwjz19BXOo&BNc78bXX&$yIUd` z!xPin2L^{#!`t{V^R(fq$>|+@iJ!`(rG55dZ0B&|LOVTnYT`U=8te5$@@kmG4~eVH ziLr^~M?CGZi4kHSrnFerljqC0LGp^1AaTV@khsVi zoE)E=*oLfU2BvnWjgL)n`V$PaaC(DdeOkwksYx1~!9Xh?X2I&}ka}QbY^2Bo-pY-&g+aW^U4kQ#O4kEXMT6H4+$YJ9>Ax>?5$sXS69 zPepn7nbj_>)Uxa!y(K4azNjfL_h!*U9XZ{AMt%mlEj1pB!{u>i5+9mAtT> z^vYuVNk4@WO7Eh-ia|7O7jEjL9!jaUM!G}a=3qR}NtCYXK^C1P3zODPsn1Zl8fmQY zau3ms3>sj(94%CiCG_SFdXTn&u9xBur@G;Qw7P}^(&`!xNK`l+kmzbSAW`9PKw4eH zfi~$onL399?ecZvJBeor2PB>)TrF)G!qw918?KgC->@_c1L0~p|LR1#iS*=js^xTo zaymgdouHgfFeK$4l-7fAP~sZGK{?%^T(6*9zMx#Mpj@w@T(6*<6Oz9R$?1gTdWGb4 zLUO%Aa=k)wy+Vm}<$8tWdWGbAh2(mL<@$u>{KInoVLAV>oPSu(KP=}Tmh%tG`G@8F z!*c#%IsdSne^|~xEaxAV^N+~+N96n?a{duH|A?G_M9x1V=O2;tkI4B)C*bs&QH5I=WyE9Y1gMco?e^Q}jPi2j zkCgW-pHsf0Jff;p)#V({Ijrhat$vP!cW`A=(B4}Ml=tt|9< zS@&fIlAxZ z4(Da$P2`=QcYEH?^6txfAny&s2YQ2kqkgk~r~YRBeZ~v)&*=|C?WoUiuHgd1lZFor zM~oWdYU2gQOO5v%Uo=&k)|(EQzGr&W^p?5Re0qK`KWM(v{8RI*`I$Jc%iofJsU`i_(&dACo0uX|*h|th9_1LKtt z-g?4uf#5CzZre|YEYR2yAhG*6l6pwSP%i^&Dq*JA0581(IH`n^{ut=!UBE&K|9pl$ z2UPM+_6d+i1!5==mZ%1fm<B$ zsNYZ$?IWabJ4g8l(<3}@Kd?JO?k)vl2b2!diiY^}h-dkpur~e@)5qUohvNSb)8j9T z%J_?-7RS8!VNoA{Ni@V?5sf&v#{VwX#zBkVq312orF>|96~y1f^;yuo)FQp#LsF4} z^j>H6@XMASe;;YRjyN+3&W*o^6h1%-Z;NXDX2;(VbK-9xrT3A_dr0LyF@WbQ;%|xD@Vhtuns{yeU6cl% zV<3UK7h21oK-zKy{*?L=-SAvq!(WLCd}D||gPQzRoFBhIToC`cIDoXq;!h);kHqcq ze~HsL9>ja+;r>M^ryAPg?+E7jYpC5oC`xgL+fBuSlu;o2bLhsKZsL!|iB?x5blD-hudYsLL-=mzPkNpNdmxw`r7g zZ~R@<=`iZ_6zcQ>+Uf&Ph-~yg0qWEce+FaW4Ivu;i!jam>R;%|-1xuo^bI_H98aFc zlUIe)&>r`r5A>*0I-b0UC$HeiTk_p^aaa20IXrn0PyT^-UjseLjlYd2Z{nN3;K|?d zuAdl5RKzi zVHhc#7Jpf|4yoTCe;MCC%fEe{e@kU~1t~p)9A7|=&*1K>ppMj!1xUXVDIw4R`UCxf zvG%S!^54RHFQBd8#5j8qqY`C7`@DmSIXxNPk|7d1i?J6gBt&qvIbK9nYf-&!RTBqc;CQSzwohXI|8FEm~te zu5ZEl-6;9J@kcRQa*(1O`96mc^Dm5;yV)o4!|W)2W9U@{e$(-*#IF{!0sV>*^KX>v zAZqcdn2%r7M6}~Kgj&|dzmHaU98};FNGOkh&TCN4mr%xEpiI9&ec$J_;okUb$n*Ee z?<1u3BYbxc-n<1=;O_YK__hq+*0b{X&skmk4V35^_G$bdDAhA4)f1R~3e*#{1nJ(6 zx<7-uzlyrQg1R3@K6jw*&tPV}f@liVqtBuKkE8zYqW&KVb?8^0Gh zx{+fY%JfI%`cJgQD=6CosQ=S4z4-uje;H-H9rgSO<-HN(E0IFtYkUbgtpa^w#Hd+| z{KwJOr{MQq^u;HT&K?n(k;k)0|3#!vl<0M|?W;)pZ9Wsxk7&>LF?O!R-&;`fyW>9> zUcmV$koO)D!VGi@C43mId^hUy2_(Om?HC_dqL=T*?+X~`nA4CE7hsk(#P32mp2e8D z4|#ro{Qimjo(2VY2mSdQ4a6MNtVav7iX{}flp?-SR>e<$vVKY>~P zl6U|#={ukR*P`82kfmh{|Bd54Xt_@yCq4q1YfLDHq*sNq&BGY%6AE#K=pQ&kygQ5s zhEjfvYw2l}UsDwIE8%G#`lA>ppvLIar_f*0tZhUaM$w*9?OsINy@qys8})5K?e9fT zf&Ssn>pYeB`QH!m_g;KY`Bov{T3k0E4F-DmPky%&cS*`_MCvA_W=5|0$lVgZ8YAab z8ZmhHZqODJ(#gk6rIiWv47B+z%NS1V!*bGz9TLi9rz$O#JvXCTcwKz6FnnQG=4(Xkxy2$6G#)MorXsL`Ct6N>sd! zq9VvC3(L)NEiAhni~0KdSNHUrnK$!}efu7+l77FQqr1Agy1Kf$x~6Ad6*W($531A} z%@bnXNKI$bA61Om$@Ie8^ulcDosMKpr8lO~8`J2CsYpN-y)l8_7>ATek9^ALT0pOS zh!Nb0_IIW&%&7b$b{(|MhPKb(oY2$=J&n-N=HK#Lx#r6skLS^;&UxkO_vq2@;PWhZLw4Bva3-kEFKKL}Yn zm0mra(#R|&8Y!`i5?>$*TcO`9cSR@3oG=+4ihiszeI?&{KT4efXWrxfD0VG)TrWem zI;ox5m(Yiu3EQwIp(A?{IwEBq*^SVVO&mS2;yf%kc@wRp_oCX&dzo0pT)CM#6e@p6 zJb`#JUv3r-jA87<1+@|j08aQl8GC(*1Bm;Q-j@1yfs-Am^V`(91$Ar%-ZtQE1Kz!m zxK8Y_=*%btf|UM--YuYCw4G==x!M%!uP`}BWbR+)Y7j3AR8fm3Fzn_K-Eca5ZKXee z&r9LjVx&N3hHER-vA_=|9!J{o zoUwz{iJVWOk58fRrLRweVb)s;H z2avX}e%arT>;0KM268?C-br75lcQ*Gxt8|GNRXLjPGZ&*h&_?R&R8nFna2m|G2Tt| zjK|etb6joaf!KIA7zIY=R>1(jxL#zA>rBdy=Gf1aUB@U{#|T*`y27N`S%?{kRKfEF z8bhe04>-<2wuL);AbG9mKe1S5(AN1twxi;ekZUqf+t7<*)mz9`v|TLuuFS~R8WGL6TIzuQWx;&1Ix`=w%$koD0WI@U1JL1o zyAQ0c7EaiZx z0YX|Q`rYbW(d$!ySO>%mC};#~mT74Rc+mwJ6T5O7bZ~bpmF;QuzEIkZn&(hQ19gn2 z_Bt@ErsOiHT}2(Q0yUmqkl7bJ1`5lLK3hefjb}bwfF)JWoLEcg*;q8IuxM5xL-kl7 z3*o{fdawsQ*cYtRu}$j4(qN98NeyDzG*ZhrQ;Vz%q*v!b!&+J)+?IAW#wZnwHcIJI z@YDsAeu8`)g?{FxALx{_9nJG1KS%`7!gKMtk0)9wlCV(7Y*^RM-2bp=wk9oF&;{Rwrwk6b=XTW8V_ zk5K0$)OkN+W1#7!<%|t0b1RXCIwRqAV3!rp2hgyd8miQ(^!+`oD8&}9q8D2u?QLjz zfAVE5vlys4HG*DiM|(Qcax5+8%C6Y)@RM>fpDd>xH_(o^4W|YnJtA8@4Bu;jlXaD> z&DR6}93yxgb;)YD5z5_~V=^sR4-Q#1?}5G95Bfa#(!i{1Et!?nxD4KW2E7ZY zb!xzuX+f>?pmiDTTnL>@11qTtiLZm^rHrUnP|=kr(moLGiL{Nu8?hbh;p>nSk(-6| z$>zxMn}(P3S=q}t=}bR}ZXKu}rry8P>oxRx4ZU7NkBc=W^70P7J`Y+%!ujF{y)SEn zE_yuld_vE^h7}^KGiGz>m zs+Q5pT5#1s!CY`HB4-KXTdbi2_0`~;=pO-Jut%U-YJbuw;053^{0BQ2Q^zB_<^2@2i=dL%SH4WI9YnwOyUH7I%k zieAOnaSxdAcmeYOdH_omDeH>t41%fyfjSiK9>F*~4(ul)>!%?nQp+%|FGNcZr(O5M zpG~R%b8^;G=R)eKrH;kaQ48KR%ov@)+Z%Zv#0ud`B;gv$K0w-Lr;DLEy>o5p}Q>w&cVk^Z|8i>@8G>cJ&^ZG=iGUqkuz&?PvQ z8V-8?o$Q(I2<%E=S5faOFx44OyS^PknXrG?LbZ6{tR|6pu@3Aj;cz`1UPCRjfUcp2 zIY8E+F)XCagtG!VzA*U24~H#Hjd;|I%xIU@${^%P zS|pV44K@8S{VlTi25nl*%dJCb@x^F5Y27aj@0U|fG_LS|scHS4tVG26YKUO`0xcr8 zhx7#aP5CaS-e~zHQXcKrRsR#dy-yD;L*`ac>%ZXJE7UxJ(qrJr95^B??sc?dC48Sj z$$Df?=zI<8moSHQqGer;UX+n5y!e9BA5d~VkfIszqW<+5XjKp1|LAlq?5lVdG)K?Y z^YuJElb@WYfnlQxi~-(|)#LO>`c=K0@wXqkaU%=*pZck=$-I*waxq4a)=%kG@Z>4I zOfS-(>ju3<*K%CUw{G6hFL7R@Uq@nAAUjWiqk-#cT|+J&RelX2&X#^f-#;AEC>%%& zy54YrkB7tqBP$bFmnb+=n@RXeT+rJq^)vcqJwgAS-h+DPuuRb7(Z7ih_AfpKg^WCd zr5Xw7SOOfY*OS3JpBieBqj^Y1t^QCi)eFg+&&ZpL%uJ*F%cRcN6B&u0$w<_n8u$hz zZz4Lk!oju|seTT*ACK)E<3MvOXFNS8IPg--ai;!Q|4V-$NA6ydGzrwsKZ;TRI6cwa z2XyG^`UO1;jxA?AjwUX}a;!km&*JGcfja8-Bk5J>8G4GIimj0qSn*{7D_W)B#d z9I$mO9*}`~cC4~0-^hZMP&hC{wA02Iu=ojZ;B%hTW`dp1GPfJS1y%v}pJ}M<6H}}( zHliTb3>HX*=Gw0UBe6rq;%y6p9Sh9;SbOCPUj;kaSOxRS)#9%f9(=O|R(Df*y0{Ss z*1L6hYAXkN-UQtX4i)F!jw#sVr6LOX|BT5a$W_i`TD4@qn!BvgR4>;D90+?(uS{i zioOf0a1{QW8M){+-hru6=?qFw%T*#w7w;L8U7~kGS4FA9uY|Vb`8E0qU*#;0b8T8! zUsJDW`;%cA>(c>$#8)P{_)ZpMIf}ouPLDMy;@1&RX%%{OjPZ!g#CIVcG5n-aABR9U zFYpYcKqw568v$OrQDH9oEa5PoztOSODa;c!=p^x%iWU7F9xuFsaG(|ri~`3he1cW@ zZdL+C`|XM=#9RDTc3b3Lyl5Qr@F8Db{<^IX3NPt&=Of}7Ur9lF-OjDi;yh1{1#IvJ z;Uut2U50)lSfh_+rwGB#$M`I!I+)6x@lvkD9()XM?I;;h)Sts&9?}r@FVCE%)l-aI z$n%6MX;;*a0k8Os=OQz+@W;(%yv*WyCLDh+&<`v1PneqPh>08xXl(T?_ykgMvj z-n6S=CKGvVVDy!=riI48g}C)Q;q}ISRT?+HPCN@G{p-}Kw6>)8b$REqw0c{58oKTI zmQG`3=__VUTUiRe9PC(oD|ycVNQTF=3@T4_7vP@;+@RLK3P_3YN003neZTSgg>6{HhC;%bhQF zEqGqhZ{aP)Ugeti7R1WsD&vzuL#)MmuG5XIfW-bc`343HKX>3s)LRD1u8$XE{Z7>j zB!VNs&2&7#&qfE0ak)`F;8tMPyCXU5=cxt%3)t8bh~xCt>{u8Z)hiB9cn)lOo|x$M z?0Ty}s0`Nf5o%Vs>)>XlUyH}hKGXsMyv^il;X3k>5Xw$&C`Qq2}`6r_? zm&76CFSqUxc<@%sXo|KYKh9(=O-~7XllLY~aP7*E3tEF`2B8LUC0KbbLQ^)1pM>@- zcQZq}Rh=mn?9Q}!@iNJXmi4nlv{^C1jM7jeHAd|X@kj{{+rBhf^f;4`?#dn5NAzQx zi=LXJua;{)Dd8o1!mR5j1&}j%OT&aHJvJrR(Rspi<>yL|`>^p!iMDo}U1;|c6|;`X zKNsPjSVHU9;%jQ1i;~jP+3!nmJ}fz-Z&x>0Hxy3`@4%KRKzE~F$B|ejlx0B^r6zjq zkn0cKRqiumiJo!6U9)G_?2F8#uM-K8)M!02@>=$@ajOShD+-+%2gXZ^U(ecGF>418 zve+?8jU*e{7JT_<0#{>zcOf-2WHez;`_q-OXYsX0pEble9_^24InhrhPL|YgZivFz zYrCsj-=J^P*Ww|6f_DN&(bmUPAkh`zsuR6yElGii)015ae%)rE@WBK74qoAZ@Pzg? zc`8xt2xVvOXV`^LI^4VmktgVzz&u-z#9F?|#B(|S(duhGB)uT^Koxp^0q@8WoaVK& z7WaAg@|ph0+n3BEL(4n@N*H?s+=5bnxSm+gV*(a{+^ zX?xw>=RUJCzT4(v9ga574d?M3@FjLxKFu@Hzq4w7iu3LKE9=er4s_X_Q2!X|k8plg z|25}s^ikw~kiq;aPllcc{}}TY%k%n8Fg=l*sxZgAw^8lxp<^WVKAO2VTF6R)l@4n! z^3@HVY7)&8Yu;{E;>n<&WAmHE!VDFWe>c0)d)V$$CV;9py;qNaAfk&+9g)%&wz5Z8 ze?Hj{DUdfN3I%*4!AwKzRtIlHOmI)pU1{Emcmq$vNA{j4ZNU@KU_Z74%X2Qqc26tr z)&N1xpPO|-b#NzNi6SI*gUyc~bI)o?4zNOk1IX}HHI^+Uvm^<6-WBJVZMqmdC~^+hoT*d~XbKza_FI_N*5RwRma=b}z?H07gtf!xXg}lihNm+# z(o&JVxX~8GbvTrXjtgY4m^mPdEB#u=5-qBsjg9;Q+ds{6NH1SFHQt88@EaDwa+CGr zhx$=Q0K9elEe{>mM`L-w7|!UAree=kk}sJN!lRksWc@UF|x|#h$@CM>H&Q27dz$8+ciZ#(`W~e`CA^63dEJ(gJ&!YvaSHiOfP{uw~Js z*1|QgycZtDW4&Jb9(Hy;!}@O>u;j;KEWFf54iFrRUg67osIHVdr&${Ul`A-^lKIX; z4s#6k4WUoTtSVwH4q-QrtHSdTvRRL{dM7e4l56_5`2H=1hu~cyco_+6_!-#|`=lvB zdOD3NBa_w=u-ZUmR9e6{5gdNw#bP~}Rz3qW6RWE)|IN6Iq=-)w-7uHYTkRl7!9U6~ zBkU=xDj8LitS>c$$a%FJUn<-oE4OFXefe*9b|}qwmX>AH-~a+24xZ8vuzRfxl*M!5 zDi99=`o;GB+Td)~><*&1bKDXP%UC-wJc_MNe=!5tz}H#}%mogzl4na_C2PoyyRaUx zWm)CcMc;BtmZKjRn4KH5jTb)aji@{nnBLEwUpOaiUMgJ5K@@&wWLH13&PG?sTLD{e zG_7qX7KJ^Rq6c!!>7fRo9+?ZI1+|g6fLS4bi-2YqAvWPye4b*v ztL9OyqjjFrq{si99z++LscrZaNTf7tm%WsD3n3hWt9HYFGtF!q1ERN5R9XpKw_=ADt0vT;ms;5{S<&!-D%Twq;e zR*uF>FZxZK=C8AmzF@`fs4IL9SCZj)$X|*lAyw&`GJm>0Q z41CjJ@DXN>0%TxCstm{*mwaap&Nf8`_>NZ7scK${6d8c(e1Yd8weCrvz$MoOq}i3@ zQqj!C%Ru4zI3Hcj&&y{CIqb%gp3PpD&)`Dvq}b(^=Nwo8Ma;_S^@Tke&o}cj-V=Jn z_(|fq#oy7lD_Hl<<@xA3M!UgSeCc8!gPml?!&nS_HcUQE5PFHTOBH{QhWk+7EDL7C zYAK0znDH}NOnA6t??BLx#mJT|XRv*VR&hv0?khVRW;kHxK+%Np5@t3uZ%msuMdpn- zT-x1+*Mw=pHV)C;yQbKLR?Fz?@e@A6Dp}T%B|q26 zMRzs_a>3<>FXiB_2s*&EJGs!`Wpqge~SK`L38A z3pWb*iE{PGhG|wM=BuVr{^e6ph~DN)o!cFdtES59vRpM+DxKXyQ=EUm&H0t8t2Dfo zri$l9Q#1QNOSWE1Yg@}G#qNpf=(m^4N0qKFAFkptg*I4nou7_{|I`V-`D617dFHSj zjL)<1tdU+{%SuK5pAX;68+jzgfcuds3I>f9A@1GO!wp zu|3Ma(kL(IMDE!`JkPyHTVCvftsE<(@>3OJG%_F_60>(Ckbx!nzhaJe)jS2JR1sd# zmM#OPm&VeT$f~%|{(#V{>fTllIa=@LFS$We)o`i7x#2h~g|7Rtwynf$#P>Ru?g`QZY z)v)2x>@Irtk36pbVrp$IZ&MX|4~`wU?ip&Z-@bAbvzvqG`tBXCO4Y+2qQ|J};QjV3Qil>J1jn@ZxZi-zfA=+a$rMX9^HJgK{{8Tw=?DIkWH#~*6 z*)&OUbDe|AK8O1Ua!XfsnNsh0uF2bP+0QXc#gR%Eu{q!?e7qZO>!so5C9T)8SFh5780 zLfnhjlzx}4_sW4ey}o3s;b^;Lx=YEoOR)Ji5}r%mXy?fLztNiLxtwph7wR)ddGTj? zSEpEL_N6aikI8KLlCJHiY|WMr6C+B#306&O<)0na*s|8D2yM@N7{WYPZ;~J3_z`Hq zo==X+O?;Irti@o6cvZt3u`2Oru;+AR4f(m+e6DOrYg4{Sm5*Y4YELBdHDAEu4dz>t zIZaJT_s@i$DeAes$vF8YRq=su%#3#b1D#fiFGEMZ(t(fZN&W@?QI7Kct|xgG{j}`I zDkZRw;X~TjAUl1feAEYpPq*6PbkD9c_x77JdAyd+t0g5^Z_Z~Aaq!f~;fSBp=c71G z_MLgxKQm)z=jOY28o!iU^WiN$FKUORVaYd7l%o~tp2biC=*6;GjrJ>@(N;$P%PN|l z@7h{~ZiSZ*GA)m>Gauh;1N$=U(~3{9E7^&Q-)g4o3-|4`wDQq3X%Dk2&%lZe(a~Yc zxH^l)5W+d@K1?b0%Jq3>b&NMP9!jSwj;FGBU#HoyG)|Q+1KIU$$Q3|#-S(bu(~Q=4 zq~}Sh{=Iw^*9CpKzE7XcZ1|KuOdqQc)>`7B!t?kEvguBdH{LlcHQ?81rnIt`VJ-fPIA7jCNgZ3r9!$eh?zHebA`Wxqs7mVCqUM6s{R2WRb3w*3aMU;boU{OwbT%Dp zdWn>}nzaKWIgh2+n?E(#-tzbz(rW$BC`jW9vb;FCzKlZV+0kUaUi8{~o2w7KE?zG+!Rze}R&%}My%V`V%Nyo(^Zwvn=k@e%@NV>W z@^12O_IB}Z^`7zic+YvSc!zsqy*IqU-VA=ndo%f+;5GWnJJE0DZ|a@lxAWV1L;VhZ z2k#ueli$fZ*WcXV+&jdg|0e%7Z<0UKf54j#|62R^!aoW9&C%oTn_O8AZvv0oz|FR* zooWx4JHqEqaCvjMyoG_6Ll?NcGvCqQRrTR}`n&U0{l4m3Y7g~obJb7nsrvCX{Jqrx zwGX|wpW0syRK3)eneqp!|Dw14TOFhhrVqYHuN|VkuYRBo<#!l)C#l2L57iOsNP6*T zdhb|zZO2UMu9>UwVp}dZ32!r3-GZy`nG}1m6)ljT3Zh)~p+$XypR`DRyAu0leu}FB z!Eb+c08(^dUBm<1S#aQJE__?h3Dz zIrag6cHA9)g;8g09uRR zoyPHWc&p&C<=LU8T@FgmX90CRzY*&9{C;Zm zu-yNa_%ro$^$Yb&^(zB$Imh3qE6~utRlieLscTK@wUoM^csal8(aQ?>|3QOaqyC_- z2Ie{g^+%(}Z$XdWrfyev@VnC-?@%K-k3^H-g&rTN{-ka(>9?qRINw8x|&1?%B{y4Mn=PA`am=l%6|> zz%bol_Z`97xL(ri41aUj>( zR7ve2)Y&-?qor^&PCZhj(B|epUWWE5 zReug)gxTLV%n}lI;4C(c+?`0=UlP%5-!Lfyu?l*kL(k#vyVz9+l6N}uyaef!Zrn-9 zK^(tnELZuv=BNjZa3_DXCx(VFeCJMLHBMMHji39`EhDN1XkQIYF2 zvLg29kRccSRPA@}MZenv~VJIp0RefQscaS-fz6e{Nuej*wn}SHPV-J5jjtBUCICk*+bL{4~=GfhDV>oaKxQ@aWKLJjhMz4mP8K}C0QFyRdgbQ8a zLyrt64lumvV7So@esqT;EO?O9GYy9wm%FR>XT(NyG zT-nF8s5P3VEBx-IcJ=-Z&kk2ddjDt6$9Rp@c(}Kot0krHi}NJ>wCfWMW$o!`gr@3%IbZEyNIH+S392fgSm86SuEJ;5kA YV!F;a4nJTv>C^XJ37m5PAd3uU)@=V&@C@efvp5@=#t8T7SkaJAZ5RBtq=0 zzHe^Yxp{lnd#88^(HjWS6m6b3eJAc0qW-sVR&3t3Z_``fksTt$^9i9BZriePVuPgq zonN5-5%=Jtub zJNc_L|ApuHP3$`+wr~7YvT+lk_pBvEt=f6Y>AOm-?u!V0XdA#dZRcqlcbsfwe<8n0Jrhn`3#%Ld?jdsV1__Z?ayhQA)8IY)@$^UZ>qLrDk8=m``wH<) z-yk*Q3*1#nd7e@k;cp`(IYR6!*-Pwi=f2ZUXSIJR6Jg-*BY(9Mat(XNDY@rxva?>{ z*X7Aqx!UA!_?wdl*+E_-cHtiG(|pp*u4xNt6wd9Wot@E-F5&l?q+j^`E-4kx?~_h; z7M@)|LfmyH9UT{(+U{Hlr>p-eu=7?*9tcII{z|t;<~hkkoRu zM9uf(*{@ON9h}c6pgW8SyPkUdl2mXziCr>?GrOMQpbaFDb>Gb`Pri%aZsFc?)Tu%{ zui)KNFvh#^+l$}qoIVDU|E5QhpK>^7j$X0?_-_Y(<^%sLxGt1`jSK;nM&Zn^k9Ay1 zCb(+S#s7({;XfoB_%YHcT(jS)gIkq+k<%t$=X6}6p{bkRKsU>r-l+@DqNrX0%^LSV4{Sl(%jO1i$ z2XB6far+|q7o78P{xh|ZU394cqgfcce7rODC?Tcf(PWbRfk^my;0e~|LSm+u6Dz%f zsM2jyp6uq#= zkOdg4BKC}YMl9stXumW05my7AdWw|s1*D9=gX>Bh`N_8dhlG!jCVDcdBR3_Ep#CGc z?xiP#u0Kyc%@qLePDrHFl5fz{Ngp?od~@2NMcWQCk1Ho7I8<~oDZ!xBXTWK)pHpk>?W zGBQG!CjSCFRk4F!n*1ENT1!5MR{aBx4%~|p7wyD2;F{}5zD^U#KX4T!pKrwbXOIRQ z1AHlI;T|Iw(|;%b!G)6l#Jy&|3%cM8$gM`=;p%X(^DGB_Klu@BQ=s#~e|EvRJQNdkJYUrcMFX*FW9lsgy`GAuKj8{Hsq|lM%R-$2a$?1qi;zM5-B){an z;J??BN9nVWpK;K^Go(ZUStGd+ho6`wloazyjPoCH{}Eh2g+oP@QrTn~`Z`%ie+YW{ zIjP4u^rdyLpgXhmCDV6;UQ7Nvt;4ePL`6paGd;j$Ka=y>G99uOeN$0A#_Z(eKQQ)r zpa(_+65L-1c~Fn*1&~LbI1i@fn{dvSXG~^*zrfGT783YBoBrwY)hyh;a@-gQu3t?dWHRIV8Puc!1ojSJpC*EkbaSZ?>WHt+Z_1RHn*+Yw!*f~ zw#~NRcD3yh+vBzuZ131UvVCUf?0S2#y~J)8;A<4%+hyMm_`WkEe2X0`Q}Ag4pE(2H z1_3@;oPcj5DG*>>lH5zm0jKbnxIbB*fOVWKBqZ_E#Pf+;6Bix*GQq6!7|J%N|J#Rhp)>&`M-&V0_Z-w6qyyYU~&F|pa^p@() zyWjl!n^(TRU3oUfd!IP& ziQmF+<#+O@@w@ml_`Up@{5kyjS>?aNUyM4go4hl5#b3ytu|J_q>RP;mduOsM*!y45 zQ)w^xAG(D+PWRGHbTj!eH1Tg~DLskorLWKt`b~O0RZ)&!K`$nM2bcVYUIf|yZ(2l8 zAwNM6i=pp5zuyPKO=g7R&i*BR0(VK~sHqwn`4RO#V zbS*W}F}jrALU)3yWsnO-q9S^5rkzxiAgO?*zJLspVKNW4$yVsK9b_jt6Ee98_SrYc z*U8nG*?fNUUlJeeIX`(5bFYsuQ~NWi zB7Y;b=QRxLIY$u z4bd>PRTUYhHDo2NCaY6SEZoG^Bl-y0ePhTQ&`U`T9zD&-btLZ!RPxM{Lk`huxo`OfM&qn~g_NI(<) zjI+?sIV(NNmC*!e=LqNIDCgpM&cjJKFQ?!Fm|q6zVfrBb0ey(%kustnZeqa9#stgx zU$DKuVUO06&*>4)Mw6U_lf$08 z2YT*a$l_mPPW1`-nC_-~=;?G9J%gS`UMFvmmnbYkNW=r=pR}94N=NB(I!-lINw0+E z{SVqj|3KfOE9vcY5xtR0=%rkQHqb{g3p+|-Jdp%R5*e2#a3O&Vo9&PJA&&X?|8G7< z_ZSD-!F^lFso<^$!C4Q1tDXg4y$YUsU*M`T@D;cUJk<}b8l*$usyo0@;3tg8TY@CG z5aY6u8o>SkO>c!SLrwn)&fde-K@xmKKc+9xMy`^Ja5Y>5R}WdS7Bl2Wz?VD8m$Z(n zrFry2t_l*wL_UOc(LgqwDR2Oz059b^}1wJc6T_BdHO+B0Ui55@Br4#j1QSB%DM zt#SX@+D-NYOGo3JXW~%>-dexjwa)5r#K~Bkbh)}8fB^1V+Zm42P~5(DQ#j6r>>KRy zr$*uu?}`WfG_R{?eNSB0GwO)*p0PzMM;$JQ^}wh-J~Dz^u`#PX-oUOJ#>VW2#L^QR z;(pvp{j$fa*z+n@@~M$gJD@o*VUOpHjIPBUJA0PLuIkxU{aWkVv9U30oCe3nTyZio zx^ZkQ9Opy!9(!EknE+(cu94BW)YTc6xjNC0u{d2Dj!Qx=z-8ZXNV=}m&Ym!cts(^M z-?(IL&-yqYaNuE={eb-d8aPxX^`MgrN7s&6Cl-y3y2c!1_IPaZD4tna*HZ0=lZFuonvtg`?UzaH24*c7oeI#0VQ@|U_HQ&=Xb5OA6RRT=L2cscwuO0$><@;hVC(U zT(i-&Hyqc7h8B(vEf#ND9k{O-?(0H_NI}=q(L)6VU2!_m87~Mjngu0y9#XS^H25b@ zjTi~uGctOJ5i*d~c>v?fnhiKycrASmYGBXVD_{lobPPS|1N?osn>$pq3?SURdKXaK z6(?;EP)Y^9(T8Aya6L;#;{~oxdrw>i;>&Y^;5zMV(fkjza8>7%&dvjC59wsV_+>$> z6KFD^Z~9<3UKBb++1Us@v$H95h-c^G&>;ysn?r}B>}&}glCiTjbV$z5C80wKb}kJa zQnGV-2v`vD9+#~JhF$iGI2~sU5{?J59vU+bPZb{qvmSag4^I;x+Cn6*3H}HDD?|Tm zfXj~lv9kmHV`nG&$IdSFkDcA`R z1y@WogyVIg3R6osUVp5jpy2f=9>tgtqsLxh?_-<~Tn-#K(C6xdq#1>ZfMkU@sHe2Z z0F*XBL>c3SC?V zPPPToXiDP&v(&iMo5F*u1t@CHJc=tIE$sGQS08JXjb2Oonb4UOhRKrA3VRDwE`y#E zZ=%x4A&`0SYXFZj+FcyH=@hrtl^Q9)8;-Z8TNALK8mhI-1en_8^zgPpP*gB1_Qngl zMn|krnf8{kibECD00wQ(dAi6tlJhi{^ECZ#c70Rd=m^Cdg4qSqFQpso48nq~5;OG8X z?hl|kYS72)P-ZX`kK#1M@YVwa+k2r`)0i3#F%pgs0kQK!4-nFgi}|>q>|#Oa0V>=X z!G&;VAuH2^M~he)cCnb1VHZnS8FsNWbQp5416Rv%MTM*7p~FxCc9Y6+GH0KtV}O1*0D0|Vm&LvE;g_->|&z; zS0}DE32?Ei%>rEPYKs6DyE;jLi(PFM;9^%N3vjWkZ30~EYCCY;lo`Ms!moH69-Jax zw&QXqLpm!KkKxy;P@}kHWlj?>S((#?GVB2>vkNabXKLLo{1V=7?n@x7?0 zS*&uOc*zQ!DPFPyXQ6CMroOKTzl8eE7B5-xbHqzl{9L@*BG$KGykrH=6E9hT^HH`n zQ{M%`FQL8*#Y#yIaD*_&3= zVWvZe;w6h<8PY4qen=2_!SrY6AtLYm0UW zgd3{P$F%$N_bc~H_aBldQKF#p2QmDyYo2r;a??u}!pOgL^bo(H`;eFY`k`V!p_168 z>tX4l2xc^6vAjM>v&5$`$t3E)BQ$wYT=G?@-|oZG4KmW*&0sygKSZ@jBchpZ#1-(z zBIdaECBH=UkVWu&@m~uf7tg`7|2s|z4`xUx^K*Eg-{Ex0e~G^_%dCK3C`8+narPYN zdxiH?_xS+5p8e*7^g7|b2wfFfP40xxPY=J|Q=E#M&u!-(;ojjLd=q?&H}h}sUr0tJ z*GayRZjc_7>1C(Lo|fzJ-)ZvS$p57{L-C~2rMyUahw|;b(!7)N9?Scys#vvD^;5M{ zJ*2)t{Tq!zvsm*j&Hv=rp>R`SQoBj}nognHrn_GElwPUt)34U= z)<3UL7@UUF4YwLzGJH~0T+~*yx#*Fie;6B$8;n;Pe_{N)DbG}ET5USr^gYvSrhgWf z6^|63SA19T%f&C7d2_4zE9M_qjFwH7hpZv%ff8%Uxg~!q9Vk6m`U_jN?dxTdGJDx= z_JDnx{T@ew<5b5}@N=(sKIaO#u5kU)z0my=Pt-H&+2^^}^M=>y-RQmB`-Sf;-!J{u z{`396FRv)yU;bfWN8oFLc;GKVQ*d7J>fjrpNN8{9j?hb?kHf}rU-+Exli`0>EU4I1 z@vVwqRTftERlZ-fy6S`KJ8RC1bkr8s{<7}d^(&(#(Sr@E8}>D>ZCcTEUeohUA2;98 za${?LYoN8W^~Tl@+H`I8ZR^@DZu@n6Jf?}A68n3{f{ufo;m+lq7k4?k9_kKuuk601 zr>*CYy@B3!y&v@{`(k~E`YZdN9~c^Vd2rR>8$&CH-W@(^_|18v^DdpAH{UzIbN<5% zY8R|t@WROMk=sXJTv)j9(naz`-(U3E;_ZuHSrS=Vuyp&<{mZyzYnDB>yma~U5I=*)Ng7K%v|GK(#b;s%( zSHH1FvZiUx&aVxbMomYzp^d5?S^eHZI^8S z(e|S|ns)rxDb`a?KIOYRTX$Y|YVg!+PW}9}<){7rbpPpxcP-fU-@6BP-?00!-EW<- z=ZvrKS+wWOJ%{#o?>)S)VBfZVSM7Ud-~XIhbY}F-t!G|w=ACE0c9!O>;j^y#iv25J zIs5dpUq5H?oP+0#lzF8r3yBuKCF|zrN<9Z=8Ou?b=^m`}uWk*PVRb6W14A zzwi2=U;o7obvLZO;m#XAzH#uzYi|7gO$%?@chkX}{(7_X=504Wb&KYfmBN2#-}2xs zzr5vxTUXus=WlNL=6AnU^sW1EliYUbcI)jsZh!0Bhrd(zov(eDe)p8`zIMmvJ6^nV z<@XkT?~3nzc9-X_1$SM0*FW!WzI*T8Puyd^=gfN!-}BphrT6yU``!Cg_g#G7JNFOX z|J?WMzQ6JN49ZzklMQCmwsU;K}t*{_01P zAJzV7{6|;+=<%mUp1SL)*PbqY`plp1Q zHlc`b2-!u{Plpu>MV=y0tJN0D6vaUr(Yt&Oxr-wC==_%bgTBPCE*zr&YI>D>?r75= z{(vaNn#Ap>|2Hrx{s@^mYyBpnesfO!@>KmUxy$2|(}vnTo$k-KcF}J)e4BG0ef^F* zUjO0?)O`?g`We7p0AF24tWAqx2pxnwiC1v^MwTD|)g#-;yt?B;M~Fls9hXz7)Gr+_ zEG*O&>d+hZSD2?L2~vk#_>afGQM3$UO#e-Po}c(?9c|A~Jl#mo(j;P)pBx^hM+Opq z=ALUywk1ApLtjhivcx@v7vbTrg=bR_59Ls-ABZDGl;^lXV1ZnK2NESO*_cO_L@rgz zHzI3;jsrg55Rpn{;|eO1`DMcfgTZJpijZlwI+da{NPW?W2%X%K1s~TM816ebJB++f zJO1(%Fae02+eQv^zXLd?L$VFsF*U&K1BQ0#sG=x%2#QmW_6AWmw@nMw@gkL=XKWPn zNqsD$rbNnU1wE4z=>@Wx2_|2YCK-7y$*}r!$>w9$S{CVWy6G+3$etgF1UeMgjf}=T zKp610Bacb}nN+?-fM_b+T4QcjPIkfE#l~W0wMwC|n2YoU`6`>*mIhrl1@xNwXe6I^ zIlXnY(TJ?bV9f2v7Y4u5FEy5V4Xywm;7mE4YV(#9d8~yYr%IhCEwW)Onz`NN2*yHB zma(xAJ7xyUfns(b{?Bn_IZlLI3&Q3`tg&MDj9xJP(O9g2l7jp^g#`3R^-_gF9Lj0% zer+m*H%x&lcf7TvF;=fFEXbD}&yZ`>X}nDx@@T{)2Q%jgi;GXK847f-&cRV|>C&S1 zcE&J`+)nBPZe+wF&}o58D&Zv}scJK%D%RVWs_CNC+maN`UY(*@9qEg8i^Ky7pi<=V zG9+a}O3WbX3JO%9gaTcGPFtwTSLILkNj-%Yz?Bgkxt+SAsHtd~p;4dHtFqPj!w|M} z`)CRG8}Oc-)Cj%uaYCqKDNclrOL+;8-}59AB(BOOa+wrGd95tXn5h=q({1b%>dhUo zd=ib-=4-g)886U$N~%vCFAP_1zwYeyR_F9-|F{;T)CFmBP>?3YLVq-ncj6coX2uA0 zb+Na9hc`r6=kfbfBhwOV6vu@~!KZ9coAzo+3KV@DCLN?BkMQozGz1A@3I|yABmFt(jaXXiX;Pt773Iia{IH z=cC_Dby8%+Y$81G8)9SXCzBH0$W*7)3(-*@71d`%FM|v*sW|#Kn=M>p5%uW7mi^IC zprz^6gL1pEq~89AKd^4tD@-;S;{HstQc{{+h?u>WMavJ%2(1d5#ClCah4L|*t*KLw zS}d#%d#hI~yzV7w&Jd-!5z+1bSWkKc@~B)Pm2bw3PDT{6%`>t`u}Pt@m6)8xPKe5k zgr6!VYwII5#v+3Zf->r4Vlq-wUsvnRC8^KFbd^(!fhrHjr?*To~|L3rwcS{y;g0~nA}dO z!YB&ES)l5i2FDfC+D`M>b;zu+A`bxa#7KFGMaD_xP=k<6Q1D7Blk>983TPx~NKk=X zo}q%$60_OmDDjp0%vQ6ts7R|d zA#wEcn8hT;s1v1J%}J4Fwple3Co(nZbvw#REJlO2Kow92(jr8Y%aPPs!MU9IT#>7d zkJQ+>NKG482i=)V12j@pT3lREVARM1G~eR48mz^|I-NP6{VWOOP=s4upvl)3aMCin zSyQOV*WuD;Hv`up?hJZ5=%S1?3RF=6q9BsxQp!@hc%;ujpsqod0g@ROP+~O;petn( zB;b|FQ>t=Sc*)!lo-+$nJSc@=CjT5V9~|%sw8ffLpcp#H1RT#v_>D08Qnsm#rffl2 z+AgQDC|K?cxk7eZ5wgMzI=cdrNbdj+iwyakoKZ|Z=W=)$LTiC!2Tz4dugk?Bq`kJV zt-#=p*us_mjwRv5Gjyml8nCEM_M#+`5rZYQ{^F4DZw=gYW`Avoy|pf&DVQIr8fkX4 zTEmTHM!!v)_?Y%uLycv@mc$njg*x;DnHo5kLY}q8nv^s5!!(rX2Q2zBn?djM*!*Sw z5{tgnP+DPE$c^c4$fooHpv$A_PRK8z2D8tiX{+%D9ML{c;uC5zg`7n`*Q@0p8UuE{ z*Zz#3bL;Kp#_A;obxXOYEo83OJIYP=>SsUG*~?9i;FB2m%H$W^t=tRX*6LUVNKqr< zIW|S$n1rB}Ly#3@4KuH*$S@_g5`#{qM5>^V8BbDBZ(VI0sMctbSHR!{Asa*@j+#Kk z-sV;9j@E787+twt+pcs~)LVOZFR8TF^oL8@+nP+Z=DtPCWRWG?8V9c3H*Z;w(^X~D zbZkDSrFwa%x4=>DviVyBM!@KR2PuGT(V1biO~P0<1xC3cXqp?we?=D5m)4A(H88xU zph02tRTvvrcY92MR&Q}6QmL;fYVPTi`a73~qo<8Gb=BFeZj-WdXjRzLRa2@e_F779 zRdy_*;Y2(NGn*i3jx|uq5uaD5l>nWX+Hh=Y!*gqZSD;iPp=+d=`Bc$isl;h7HWp|k zL1|FOOc*wgVO%yBUVn?3K;lowfm}AbIkNGX7@mY)2HzZbFi>7(0OWL#5rYJoxwCgb zA@{hfW?iAYLQzp9bRcSqn&dA27=73q>{{*IS@X@~>BV`5_IAUvBQGDbBcPQoSj4cR zCN1Jj7s#%njI|}g*d@ZiJtx%9?CD@~gu4;k(81=Wl@%5398HrLO_Ufz~~ ziB?EBbFnw1QlS6IkFh-JDabGjX%%!tO+E;jb=(3i!4GQG9M=z8z@&@y9-?76vjf*K zQ*eRX=W0Bs%KV_pvqmM>VqnW0)Mx2U97Ba$91Fcemt~q zN!T12s=4iK?zzC=`o`6_@9u1C*?3`p)uJZH(TAAmV!Am1-8`jT(@>^esN$@4nF^k< z-AjJlxHM{wtUP<*Coi|H>vkK1vA{*EIJcu|LAd{{(VB+f;6$CLEo@E0 zkO?`0kyuqm7BN>Bw1DW@f(6EN<4_HLZn(%$R%);p+5HX(Q&W(Nf=WIkGzbw2GW3r# zVuKf@=EhlYQU=(*g|R4v-34zI$W0D|g$M>$3N8heNYZfWwDvMvX^BPa&^fezMLXcL(!2C&Q_ICiApfI{y_0bDHvKs>PK~##Zf~UfX>S@bI+*w*Jz$B?>Jy(ZT4T7| z2KZE@Jm$q1@`$)ibyPyq!cQssCuIr?>?YCo$NYZ>=@Xj7rBT|iPCU{?&(kEDm^+d* zCq8UL?TjJ_C}PIiO-w^e$5FdEQ@dQOJ?&wf2n?Nleu<=hRA)jr#h zqVjEmB~U=>Vl~Xe34;oaUI3DizqMt0Rq;i=|4hJA+t3;;QGAAmnu@EaSha>QKijT#LG-@m6IE4l3GEJE{ z5UMEyL8p1wrVkChVyeR}Jy!hUDV{e`iZJ}jFp8ku9G*Hhf{O$Mr`ReR$BiO0{dzi< zQ;d|Ro?HkTVs(O6I)Onh(uyz$-abZAj9%G6Q!cvuro$krnvH1~MA@>9zZxVZhjbZ? z^}&&%!Ws>jYjh)UBUi}aJ(o%);~-{u&lL*gI8iG7%3=H41<}E1V!+JB#A>y=Kn-sq`-5Zu%55FgQ2>vV4D2T(vJ2(}KxkQ8$VMhxj8F{H3{4LUj=of%`D@{` zOSilqGUb1--;S9YSBg%%bn6QRk6m$ch=U6ZmK!KipAQ!!rqOWvfG+t#0uuuQXuSlQ z2DBh(8pK@;j0zO+9aD=;uqnL0C^J>txM-B}E`5aRBRuADSCrLigDR)4&}B196p2^Q z>bbs-M$hiOMd67w{Xkb#k)M}ub{gDV)6pm3jChb6I_h*amSZ6qPiY1+9Kv=b!5 zu>lnef60{aGUh4NoQ&kb<1`odXw*KB(_U&d73m7qK}}G^p=PQi#*}O(XVX-4CYtCo zbGvggOxHMzUxyM4{0g67CKV+MV#7)W>^rZAlS#QjwTk2NU}^{fND174GG_cjNv^?E z0+VBCt2OWmR>@&P;q7RBU8KfP?$+wG2A^AlNS~g$$}$cICO>8D9~K3x?)3A}1r|n+OlDuV*(IokRGX1Ugp|SIj=+VEHA2sZuC~ zM>8X0TnFh7HHpiyW=xZKwzmiLoA|OR@i5~Y*eF;(txUnRUK-{gJ{?^I2!Qm4h5BFIH4ys}c!BAGt<&}#L5pWnfF z(E~4a+9_eJf}Q+cD)-PzW@>D*ZLvJP)!>z?`q79)y~-Umnn%#(sB z&9Nb+#N&23Q&Xe>4KRP@T;3^H)FFpp3$?87aCYvzW@PDU=60nm)a>rqwY32K=UcRcvx+Cm;vC-vj*0bMXt>o(aA5;qi^t^P{EpEB16OTB&U)SWsWP zs@rD@wtA}8RO`N?e4w#@c*GZ58gARQqQ0}vQBzSdG+yQDtS$*wEUZd=2&xol0Jf7K znOc`Tlp+GrQmlY;TP|1ZP(fS62vlxK(Z;4JzQEMP)EW!37Zev9XZf+1F;LzRjZ}w2 z4h6ltlCleGA0M&$7kTX2e9c?{y4!P-n?jIE4nkF}&c5awb|mT~MMA}5hShUGf= zH$fhU`<8p^{QJ%nuyNM%Jh6b$%0rB;J3k43>`TCECGbrX{U zaydPY-o0%%Xj=>YRC_$Vdwy_uc#u{cqi>WHCL77t3eB-Coo z)XHYm$k<_u1H#yKNn3;t)U@qtt4lmm2d(vwe;j@N$PtF`QvCB4;M60Y34I_z>^x7& zNmWF;NljItT$Owy!kS1Cn#>L|8BE3^Omb3xg@WC{@(|FToOvgNp6FdtG<|ZVrPo3) zxAa)5l$E=CdK0^Qdv{mTHyw%H4sPB){P~Xlj&+ao-g3(=3?ioMpH0m`VbxBV{~@VB z!bvxYAR+BXl2ZKI+<9LXM(GNX*KNl=HeG^lTU=mygr5<0x(!0Y`D!}S_|$n zHa^$)aL*pa(tlwz$g>paCo3&Dxp?4xS3BoA`i9Ui>}m9hP`8mRj^)82 zgt-%vvj&IaM(~rKg@Mo>iylj1(6MH%F;nU;ezHd#A{!jmsSYFAMk+yeh*Dyd8d*jh zbE@$!sWUUj5GEH4TH3L+woKbv9_gua6wK?Lrww$iXFX7b8VZcQ;ZyqPmc$JUFIrs- z5B2Y{=gRAVQO9!efMdWxC_KR&Ctw0QB>~6?ivwxYaw*YKodmXkX-cabrZ+gfF>$16 zzu?P}ld@O|W>G?LjBpoZpU0JTxhap(8>)CbC4-w^lG2 z$MHK54n)M2lWfVV(HgU`r#!O8rav5uX{8dqE?=#XOH5J|o3o0j)lXBB43wWwQGo(j zGkR6%gaBb4amLEv7m%~OAC@eb(^*UzGo2MZ>a3BKsoWygWl>Af#lf1`n$G88Z3sSx)c9Ca<0IJJnBh*T zTp~$TD$S~tRTyXP1EI2v=YSTZ>axd5<%opO(0{lmGW}=10aSE3a|W=AGJXJhK5}=M zXXf}}!b~4k%@d~ftS(_zpL_`!ER5R=NO7!4fjLWG7TQYFET20$?zuia9TvJbWhM;y zfxLQ_f$3u2GXx(HXP5GuStckXtBhk&t+Y^)O3F$t#Vm&fIdd+li@9b*TAM8qfOUeZ z=AJ#W?#(uF1c(0tI~H96nKhlm1?eSnxDe^haJUfX&6O*Q2ZJT~wXQ&;*Q{=CZ^?H= z7b_eQmA15DQ9U&#{@T8&-w)1Y@`URHK4geVq)+@#p#$P3eDoS}u{hNS3k5MwO?4Pmo!T3J_Gva^$l*^JCHI zs?X_@V1n^iRLx2wbEjo|rS+$1mh6L$Hs7Xha(d8VERr zW{^YY%N>7%Znz@_iQvI!z@%i^2SRjBs1swtaR2jTmhnHAkq4i{=fJGUiWSGCEM^L2v zR5-*h2E-mfISUw-x3%-puncaJu4eTi23plRTb20Gef}z#-idF}ZAV|HhZBeBg2X(r58NNo2PMO-9BEEd#Sw#C z6i3Wsj1>>AgY~rK?4IkJ6VIOon2#Rf<{xe5x{p4df_Ed}omyK)3<$0L zEXhVHc()m>^eq-%+mr>d$d;2pXSE|k#1xiiz7lO@<;Tp_RFTk>7;4IDZI>8mO8g_c z!BmVX3sJ01NLPk;)+Tfl+B~LkEi7O`of(B|8kzqPxpQ4s^Jxy9vBx|(0}=sPl`wmV zO$k5%m~t_b8{Et0H`r%Q%}hoqBFM-JmZ#!KS-pM+)>a~$D%do1$CUnplG#{7GO*Pu zDN2Jg3NtFX6e+i|JWfIslFd1~P?hI#*=<&=N+`_FD_4~>@?ojAV)#NB;MpACSt#IS za~myLG(4;E!jTI2Sbqr5rJndmI2M5POr_DWNl_+`uE;A9Cri5J3#SOuAQD zzJo6vO;5R5slR1B=IB24s`)KQs_WW$Rjl*$r zxhihmqb_Xt*syL@f(pxSGT&Coh9Db;&9vUl~G^E;!xY}7174Zq45fLM@?zv;A-K_ zv=HzoITiS`Lz=@sRX`R*Sh9^M3=2astD4YFFp@gWM^oc`I-JcnP(wc7XgW{^92YuZ&CF!B?!Er1O1=vKO6+v>D5cPreB=8j& zj3o;q^FmA(lnEV9Web{%r4pB;IA{(cV-RycWD88q7@T=@=x>;a`^zy%h>5);n~qIK zldv;7Y9?ojGg>TNf%23h*FXXxA(3sFB!8tqUJ96n7$|GZ%SuX-WiWTau~=ETpAloU zzNRV^^f#9`XS0oJ%An4~Hq+3R$Cz=qhq5v4SJzIc5@c z_5m)jD&$_bwW6c~8I=}=B`rzW>|!!=ZI&_KD$X`G9BY(QX=}eY_CSN{L@E{Y46N`P zVnSpxq?MCyc$M{pyS=1JCINF`O0;nEW16(G;R=P9Wyt<-B3R;6{8JcG$( z*IBx?E1i4r*JE`|@CqDx{y6%TOTj|MZZLpUSB#E?O4xiaCAV3!Hi1h^AY4X@<^F6E z%#Ab6+yOn@1ji)0Z^4If9E7$KnFi@GVRLvn)>%|C>Vo`ch9wjuo32WwEGLt%#H5P} z64nXqNX!N$dqDI$Hu++QZ51i75tHX0OWDDw0g zHuQz`F%`c{uVYTl^m0oEU~!BT9)wi3HEaqB zJTNIrNVXisyS!E@7%f;Kl@;imNup1a2j|E=$3crs>x~FjLm3>Gur14E z%+G^~f*28J(*uDT;cj)BKaZR3#+9v$&xAa;eDGeR8@~8 z;n0R#(}}3ZS_qY#A)PC;}P6--+~h$bKm{9TZur98MU2q&(tw;(e=M?`N(* znqK(e^!ntkD9ic~7a2sU!Dymla8yh;^!l(ki2K>Ftqdm7{LnzDXWl@WopmxiQ0hPW znZZC0m>ONoMtYic)u2!8F=1K9iooV5Gmajq?P4260}2*)-O!;a^5SY$+V2F3Meg^saf>0U68DP+B75 z2YOz_Pn4}Ds-v828kX?M0vU%aC59@wh$>`9CiBuc-NLLl0f;YztcpN_?i5F!wI2?Q&JE z9;!%uLA#yNUbnTiJ1)^Kifd0mO8ztR1Cve;K+4MhK*vhxLrXU1-$ zO|huG)Wow@Uo1Tq3z*M=;Lhk@CI?}02!^Aj+*f9^R9mYpey1Gx@W^t4%}iR$O)eke zAijvH9*Zec2~Sv*ME_B-p-vRpSF^WD@c@@KT2JO;1@8()} zN42eTC^hX8sqth`qZa!&!_T0mU`k;H9^2u9Y0>lwJgf#{K|ei6r_`#m>1}vLtF<_o z(2it?6ALwYS8BPPK%T|d(^5~1-)OHNC_j0@rk^xWyR$WHDX{uXucat7xVXDok@$eh zL^ADhSu5Q|AXAY}p*P%UszmTZ2+*asQ^-J<*(5`+!*Zk&J@N=GcDdk1O0Nk7LfLj1 zlO+4010-t>H9J@Lk9`|dTW+oP7_0s96xG_>BOdvy&kKZW@i+Y)vJBol?qvRYTon-~ zi~cizQz7Nq43)W?*s4|*PC*8)ER{tsN5Go7_e@5K#8GB+nw*j%Ns-p#)CsGzndLP* z=IA%ryv;fn{`hj3TF5+Od_F4{Cn3jo5r~KM#5(nWI@f_U2k;iNT<&(7Jr<9=SY8a^ ziv-|B-_~64x22q2SI*gm3&aIp*cs(my?{rIQL5OBg|Yd1DwWegmV?AxM3WgT3WeZ+ z_YLL2Z6)zz{jLywVEw??urfViUV?NEi+a+H?VEi>9u~c4PtVmK!JYQ}+?}Dxe#6fsZZ*Ll73``g4$nWSwQId2Y#42+9jZ1N{4M@af20JrWt$tz8;ANVp3)+f z%IvJPH;lD8g1!c4pg7RzD0Z6lc`CD~*3-DGu@v^ur^zqr+wdg?8T{trDexoHEe*dA zt7FNjfImos(yVA5TkoC$Urc*r3*l3+|MY^9K=F8I-_oHzchsx*#Fo|UX!7a%B1?w4 zx;!mGlc!_3bbhTpSRe6u3l)YEk0sPyX>PBv*xRdI&O)W3)L$Cz3KZ%tl3H?&{6s?qRja;a40#o$*(R z?Ea$@>E`4Jrg|y(QxL@#J3HqfX7@68E#PtYG9da^R-QmFN5s{EC)7(yRzSlXfP}-$ zK32@^p7i!d>1d)5XrV&R6l}o$4>X)h^N#~P+@)=8NB1%%)Q%d=(3iP2z?$QEG5e}e z!gh~J*P!^Bn!codeoH%jzo8+44}4I3eSvT{1BLojZ0 z5=+-8fwvv$f5_uXWmmbD{i60C0%*0rP`om)XZ|nfwI8>&ee6qIO@(-)&`->YWUxOG zx5J$@l&IncJO)|5ZoGc1#9eeD(PYq|oe;hv#_rm?+JPi$#*V+Y-oxT!R1 z@pV;~Miy_aXFvPTpJ)OUjqv_swIWtSq@WN?d=Uy5rAXR0Bc)TxHhd6;Gz&@8&jiM2 zbpv68RNCCuB$4JjYJIiC^$uloTeG@iV56io(&H-%8EH}CZw8OfR_il*Tj!UvpAGAW zL$K%sYzUrjCtDSg<@aX34p0|!zhxH4mzJ2Y%uM2xI$5^F3)pG*Rw6{o6qL?~HDSz}apr6FG4RZ=aTAhwbPjnWMrJT?dcFQEqOok3;0#k53 z&p{;)=5?MEJpLwloYVNd7V^u9^$l3n>b46ovg8ekAg~3G1%azsn5k3Z^*9}qU{3nU zX9N?IAi)Ja2dMce$L}$~4T)~yG*0&m5CdN96ecdS&q8Pl)-teTnX}C4uusA}xx{`Z zczLLwxdgGFIf#z|=rUo|-Vi*$OfLipG7baCTVTsL#l#cA7_H)mi;Da68)rKbMkMsGU1w_I1^c+Lq-&Y}qEG_-x@F@HWVS&84nB|YK zY^vE8$WI6M?t&P zxRI93OB{;NyC(6$0(>HGOX3AupSU6MZ5m3v2Hr^GAAG%x?Yc3g=E>AQRx@+j3jB?l z5&wJZo4psl+nad*#-4NE?8Ue1jPJdd_-o>$x8DZ0twfD?16Bo-U&u(yBqoaT3$-!% zMMXFcXsh}keQ{>y2hfX$oPCJxBCo28K{1BFJ!B^%l8EEO3nr>WEu4nEbNtA+j) zvh@NYjuEfI_7XfAmTb)Klt!aeV$(rvEuqB5`mA-qO`JwQ%Q+V8>a1>_lwz5j_61JC zfaKs4@)T>wXYH$Y8bVp#MOI5}nMO`4Y`I2G8-C_J6MM+^S(WfIL?*EfHH;lOpGrCu z2`f+OcCw`r23>(h>Cf|{?YwM4n^nhW!IPL%r{_RA$7%_vP$4RfS$nJmk;AmRC@WhW zNz{y6ebmA1RwTR?bKQwf4Ogf>`V9S%=IDD-Zed&W=s~amO}>NrO2G#?^$A=cIMkU3 ziPZ-lovcqs|2uJonm(yYgy?Q{qP3bn)=-n^Z9r8?0X{)TX;^MU)?6R{VJ_uOLdcA5 zQ^FR?A$v2EqDwOn(~Fr}`g{u9!d(8_Y2YW@V)?S6Sb4TjY1YQF{YqKw`BQO=T~nJB z6LpWOr?;v^o@`|-gfAqgHuRclF!J*9GX-Oa~2L+Zu``6q1Pd4Ha$4PvQ3Vd z@!jzTd?DM8Z@hkgC|-+Q@L7w%sXcD07FJb-0a|BGt`CJo42+4itir{N_Ch>7?r1)ERrBabCv0?uNNDbFF5 z{8JDSLu?5X%hDpB(Z@F10Uiw0FasW3(RAM@SN*>d>Zvr>EIz5BZBe1Adq=m?yVYJA ztqv4A6@!i8#cdwFyDrbwydV_YJyzFMyY=XoC)KvM7@U>XZ#E5App%HNTETrslK-MF zqmORvq;Ynv(1g4dPD5oh?BuWxFV$H))E|sAw#Nu3%sOkZl9nZ&NaX4Mx~CUm{F*8! z7fA{G!+SlHR9AYU-Y9df2z!OPsarX9@LAZ0ZHDMe?RF@~8sHQXu$e>}4aW0rH7G6u3e_rgB|4*aX}%`EtlAx@Wqu=(n|>#7QzLm^9Q?v4c6*%U zDIPqPdrQKn`N{@IIM(MdUJ!XkAu?AABPr(cWH@JPX@Papg=6Kp<#I`orLZB{IfZKA znz319!&F9_hU;T98nZl3jM=^pX?$V~$2AGLK-u^nAb&n?`Q=wbA44ZA@Bst4JO|?{ z5#wxHJ}J&B)0mv&JprHT*J6>`-pCyVZ1;>&NWBGN=Ze;|ap>uewKX-?4@3v1jt5Io zIzhoV-P3zwqjU8X-|q>I)TSxE;9M?gAuo!frf+F(YLrZ6lxcVW@9;`Pbn4jrC%hsW z&?hz^HqpdB!Esoe{!T+mO8q7!rCP~fj+<|M8l@U*L&XoL9Gh(_(o8V>YuWT~g`yHPs7j)70A3+R|L#Sl>8(aPt2H#!1aDPHc2SsTs%#4o{!(SqXfr0Xmjn z0Ug^#M#%=UJ+`&fWGqC4L_<|{K9wrlqxC$(Cu~uyQc9JZ^C`Bjkg25j$PLrC%;i)w zq)Dx1QHvUPY^+T#knp$FQytO4-j<2k6=B5%~N0qgTyOX0s zJ>K5tuqv;}T~$)vU4x_wOL=jy0ZQ8GtgoqTbTrKm+kHxfR_SUE6z3PaiV90BUHbOg zvXE6%tF`%zh35QHbzYv{Syk$7_-9^`vTL-owm*RHHGGLN7!$I{`^YM?h3tv#qKMNu ztQG^*gO;kfMO2p8)!f9x*TeQSKw41V<^rn5#)N7a`-oFH7BFBMg0Q1RQZt05c5*pg zqtHOBW4ZVE_&`5)Qrt4WWy88yev`PYeBR&aov82(Kxly`yyutE3&4#5{MxhuJsk+|GM z_QrJBYm0|YkYM}w3J*R^lAe8)fjuO$)ULqd9(>qC3+ozLyqDoR=9*ptBg5vKtQce$ zN{z(~HPzKkHBD8O*el#$YBd_L^?XrwUUAksip>6UMiUcJ*boW3E}D=Ui^OTBD~$Ap z>eE_0ts!%1O;5Sa;%po$uU}GBS=bSS!sQ&iaXz>NJt znLh*H%pmut+MRb;LVuk=n!^zd29wB2c;IQuDTz3QIh_S z9kRKEJs>jQv7>A^1Zt_0jbkf_W+!s9BssI<4l<8?eB9C_1izu2V&hUZLMgH}Q)kCB z&ebwAuVcI`3|eNs7R`*>3@zpkzapo+q60Ke==vAC9Hj7(q`V& zNcRa!o)uGr--PXL!aRoj&XgwTAq%Nm98WkkB*##sIbMQRHW(`#; zg-u#>W)y0X`|!1hEEUlpzL@5)xhoJxIQ>5I41_l4cr|yJ)!DCuVLg4lY?$W_^)BpN z*o|)jOm~+2CvyxqOXUA6gMBZox#$014)`y$Kp5E~AKz z!6S|IO15>|E=WIw6j@{-wZIZlbp)SlpKE%y<<7hD`t^yE=<>wf?3D=lkUmI9K|vKl zZ7!Ci0!f1C2yAA$9L{wf>WZiQ0+-8;|5=ott=f!cf7Ob8k13P-5TROIsMP3jIt}^~ zy)sZ}uPiI}I_)~GMW+mYD0R3?bw>7iL5?ePu}fW%4vkWB9;c@5+|Q6TS`ss-b}*MS zPrq6aY(DH>z`pW=m^v0GMC912g{_^wq`pPhswvkEaJ{8&OO$iA8QqqF0gKz%X6)!- z-e7Zb2lpp#C30UU$eP%yrF~IenP;Nd#TBcP2$f4HK3Rs3dn)C5!d}cAzg`VC5M-Pm za|dwRTBxFkba(_`&l+34U}9uqpueZ9xv{3o?=7(u>EQsLPvMF&G;84)o!oj?)GbghqE<=I+-z9aYOnVdIXl+04qmaN%M}}M^bh!?fu;VIjRSsn z>yn8rwVhiAe8$RwNU4)^jD}r}ex$H2uZ(mT=)yxh_h@l-$e}DP=m@yF>z#UMxTs;t zxV{fTTmanjvmsEFn>(&p2 zBZ1Mx?fH6{&!j8!n{KMBftNb$h?X0t%mS8@qsOgPDzFW9J}0AW8*I5;xdz)~D|1AT zMif0*Ynml`>M|PQSZ@o0BmHu$aqjnWg$@ilm=dXXA#{AAKXBoK;laM1j`o(O`lZpO zQ)doSXYP~s!mPoN*#e3ureA(KXUOpcmCf)hX+<1SLgTQnk{Ym&%eIF-3e2l>A}hk! zr6LVt^oZs}REuqekF@nvggNtHboipMnsjm*{-B?Rmlhl^SttoJuB*3f_OpFUNbPn1NMv z0Sg~6p^Q8MVI{Fi8`17*IiJ7m$R0c{PQFdcxp$C@i|>}24H9JEX(7=eo3J5{gd^wR zO$hjP%zGikY0KH3JSgt*m1wQ(lbU*@k_*eK4RZE*7UA2xdSUsE;0V$KV-fj#4IDNF zkkO`E^|&mLwonbyWwaUvZItMx<7)2S#FuJ!zOq;?RY(&5Y*eTq7R^#sfsw0K7wTm+ zU$1IJ4EZm~x5*cP*2#7?0Z2$Fr;-w;AK(PTS0E{W4*H4d&;)~5SX?N=>m*LC&w~76 zz#A1lj)_l2vJYb-PKYa+3p)%0Qeh?&)t{#tmuP4cr!G|KEs|!5PCl-#YvQomgbY)P zdm9xR8K3w_Ag&#QsI`l^~8hdKfD@w6T2rrfmPxU0yfaUV#dVIlac7 z=ILxcgUze6c@1_CJ*miBstwrLzij;kvn45JYaW6eC5L^=*8*!;=DxU`08>&*N-Wrk z37gqbkGN)yrGlrv7C5Q7(!2J*Suq%~)+{|W*0(ahR~-w77RJ2zLSq^9l1tfMSku-E z`7{!4-!)d-)mY>Y`@2^~+*o>%Z?@|UC2$lnv>>L-4{(3OJE~z#3yW`P`eBO|me!7oSKGHr}Zo!d`9c3rz}`7Bm0_|NqeT9`KQ#)w%fhe$!_( zBTetU_a@C~G}36)wUV|s@7n9K>n-4pZES-v!5C~>8VQgXZW;-~ zNP>ZoLK-&#ZW2n2cXXfge&38{)Yr*>e_qKe&CK_n^R`o-^BhWus^##kw_V=+Lh{@z z(wh`$Q?5{Keh;DMwn;5w z>)cepeAQ_c^+L8(C*tfm_8VOo|EhGL>M0$+XQnvmR1dievzb`Qk5<8V58b`Wd^T6s zsIs@>iL&Czf?+{ph!g_3z_89>5Eo4|h2qhvs4ZR%*^2pup=BAHp4Z2wj%1tno*hT8 ziLwW^FJ6-;?)0={wa))gXhf&otgh=E@r1#|?yrR=T#>XhUiLUE#e~70PZgHWz z4B6nw8K{Nqt}%8DHupF8Txe1tbg$L6F>*DL5KVI%41MBvfzkin!fwjHoPioS>=lpG~!8mr$e0!#MCKD!~gQ~E9 zWd0cWc$R@bi3Ex?(us5`xp7QyMyG6ZoDha@@1uGiz@@v^ zkQeT352sT;uf+@qI4lP2|JA4TIF-XV+L-{RY{cmv8<0jxZ3?PN1W7}5{DUuh$CsSJ z#V6n~5jTj~eFVO8%Dp%#0_Nc7MN-iMxhFcvXcTmsT1|?lTVvEaTH{x9gq}f5v+{yHX20c$XqIwU!#cc8RhE`c0-dvt0sRiz`w)*4;nn2ZT>$ck;Cs0J35>qoO^*>%Pk`%? zx_qOfVP|hYf4+0W`SVbLa{aw%;BX$!{p9LXCMeHBfJWX0L9%K4dg7*=PLORnyZ)bwh|F(zSh$Ht15T{2)W(z=>aqm{8U}qCK_@kM zzTvEa4ouW2(IlOQaJt6=CklrpVzfY<>i;0sZ`FqItFFbg9nx#yslC? z{m|kfzTXm_JT;a%F`H@B><-_EI#`|#re|_agVkrTTGCNepYuEJR(M2&+IvI4->V)( z?a@CGagbx%0W1S-Ur z>qYYfIA$-%Z@x$rC)2OqH^h9onu1?{3F8n<@bM$4Vhw1;O9%bR_JEz&h zoyYL4^KG0Junm@^$b*@#)8)R0riv2_DK0xD5n{XqrBhY8haxJ6!B z)e)5k3WK${9AE%~MiL&7TBB4yvgMV?jBUK|Oxu%)tCYYcHWCfL*X6VVwXKY)V!&)m z{SG%M-yCrA_S^*G!ywM?eeQ=}gAOS>_N(%_QA{`#Nrzs|FoZr~>wvR|9$51wpCT>6N-ic76w9ZM`=j z%h=6=p?^)(hLtihghj##)lchj^YJkdxr{0{A$-|;E{x2Ntm@Y8>_10peR|DY_~6!4 zMf~}dmBQ5@51b|&iv9f6FUzU0fs^HavB2EopTPt63Jrd56|mxAXDBWc-ym)$d_x%y zwj6FJ^9U21cJOX_bsAxq4O5vdry-l0b z1U}|h#KVdr)=?2PoOia3)m+Mjn?MPsXu>=X!BB{T9RcjE2snt3QPN(CWx`vB5)y{a zBebjcwj+3z>Xo~`=uCUa;WV4k4;Ha}S{;c*QX#R?piM!YH<@%=CDIz%_ELZb20gxr z-p{I5ixJyVBx_d3{Moh3O?%A#`eQ}ct#gh1V#$?WzGd7Iv$w7fy?S|m{Q4JkzT29v z-*i%(31!625B2WESbY3sBfxGsuRGU>*Hz3g zb7pWLog%|ghm-H4q7Dj``sBa@<4ji@U3DG+3R~1&{V`s>URYn{ueNgL3PgEu{!qak zB3$^a3z)Nvi13HWh~Ao@ccun38c-Q_du!r^F)8j0Rm~YgRO+dD-~4@=c%`|~N>hwo z{p;vN1|2l{orqkH1t|48S@?G3B%%=n&+tGMf@mrc^|y2`V#I?Mei~`=az0g0*U=cy zj4(rzB?m2h9$Y{ykSF~&LIzesfJu!&fd~8B(rVRPI&tqDadtiNv%Z-GW0qJg)`NX5 zEaq1xQV0zAn#U@RS$$;kNTGG_nVKa!7CCrGRA^0_$W+m5a>pEIe;K^?{}>vbkBN#A zU&@&W=9z8^NJtR?FtHLpB2+54aZx1`qEdmNAxvaIB&ahEcOkk6@< zW93{k-;9J@cAW27RTisHqDS6v%l0KPJAp94H?C1^DQNJ#WvAI)rOZ>`{Pw`h-HDdK z&y>&ZpKduP-WaC|Us{}PPd3L_8>^eAelWtcFGUcOUKQ>Tj}})c5__$S!L}KTd~FK) z=yq6SzE;#i0jDS!zz|nfXVO?F;s)OlNMyQehAJ7hSuUlbRx>_YY?WH^sMm!+OhH=! zrx_&Ko5U`vqOWsZCbdceWRbLbzpNw1E&=n>}ripeVLc~!pw!4gCoQU za0-uF;k?vnlt|z4AVRq$@q#qQO4H@(M9k+#Dxs(=_OXMQ_zID#7_V`OT$N$Qe}ApI zd5D011gNr`sp`PL}S0(u3lqQT#l3s*nkQDE>GKe#Q3ers z`&uA`p19UCq(Z@@YZL#ih%If_0GMZ+69Am{)PNl#U!WYPLB|sT$nq=?O1-ya(v;J<@ zWYYrijn7e@(Qn*V3r#7X2Q9RPwL~ISD8$q{kE{Uh2o1xCy~76((|$c7712o zBa;i(P|D^E2MQBjXEtIRPXrVB5pUSy$j6)`-iXDKi#gv>4OkLEdpT@N1}sHCq9>CX zXFOn6>tY^HCNMJO4B6u4Aww=a;cfx+2|LIyDKSfW%ecdZWsxf%1{{MBags=HmQWpd+Gixoz?y9DrN_ zkazGn;k;Ag+AW}}S9U(7A{Mx?JbmD8gRE8lol?nD3tiiX|Nczd%7k!`TIQgHMNJH? z#Mb5PcUTeT;8j5&kf>@1(+6@C05VL9e+!M8vxbOeBoc5c=k9(#Ri zHas<|Q7>rX)rk$ymbJ>U8yu;6sPidN_hMf$Vws(Ami?Xo$=zM@b|p#6!i)f}DKETT zq*2J*EfaKEzOX4W(SKJ<2X(d5tXF2LGpSn2K?rT9R9fDp$KCdp2C#%TOc?ZeKNJXL zO8Ld2dq=-FbbD(on|XM^^L-jPZSPn>5o;dG?c@Mg7qy{0S}BOP4>-XTbP_(z9_Ib) zV9A0?_S0sLlSVai`_t|Mw3Jor;3~z z8ZvaxJn5nrGuP*$jT`Qp1gEgSa`Z}V`i#kwyMOqu^nn|l3G>aJwk=T&WsbHI7;i9h zq?HigJv#lw)OByTFcz#I$c$e;RG1lUy|gtSoGy);W47_DonQ?Zg4U62a4hMFO&*rd zAkhT5=nOh7yr6xlXVgKc4Y*&|yxRZ`5?-%=;mF86$#*_}^w8RYC2BV?e!6jbv&lDz z+S_(9nG}P|h!Rws&LG+kgf%Iy)eMa6j@!GoBkVVJ#O--7`#%!@nBN>&fwbC01hxoV zhGL-IQ4?8-2^wP7{PeKmal;co zKhOTOW-7t>v<#OGLo16TwX0_!T@WJvDn^k+&oacW>_eg+NF%1lN|Y(3%M^hZsh<~m zloQgCof|TMI1i(uh)zngmP(~YQ`KTVnLtS0o{V9Lyk$A%UZf#Ph{i6!M;?K6&t zX(uo0d^Ia5?ZRmrxYH$hzYKZPh$NqEAG0CF z3z-c{@VFY_QfHVMA;a0>*tavqfwy z2ME2b;F?frngsW)mRy;rN1GlR4~5DxmrC)Ucg8kbVY8ahyA8HpCW~I5b6cVmMEk{wB;dCVXf}cM~vT z@UAFnE1nxR0!c=kA_jwSPOUV7+76lc*;yvc9-2LLV2SDr!Nm5$HBVqew{YeNNh zrsmhltA!R*WV(dK6pYM_jyOAcy~gZASKx7wNGru*|G0TbV+*BiS}Y0LJM2H8O}_wN zY`YyyUMau#uvZAul2Ty{o9(oRIqUSs29dEU*csCD;M-Ug10Blf{BYV-iv~)x6n=uG z@ImYVY~|R2W;|jn58L~uoW`{NEc-FWG$tHuuap#`RsqXHi`}e6x2i`^1 z9-N1S2`F@kgs@)SR?CP9relU>r2IlJ*TGk-S`%%ls$n!-+<;}jZTZ%b(UHTo)M_KL z*vOp@O)EXIWZ1#jqN($*w+7ZSshOgueDnpsywZx4CxhcFxyhAuQa5|%!tvVlx-aN0 z&84O;tzC9 zGF;KGOh+osV0|?^xtd96Wf}Ydl40^P$)FM@)_gM-XXlI{U}0D>KIc9 z;62kSXDg!K02%=$dhaQ;qt{B@3`rXlgC%it)6Q(G6%8;q7kt6cwCMV6SAH_?V54& zSjpBW190n{DsbILH8lluGJZa73WrE=^FahYfmEf|WZXqYLg6R1dG!2<7v~I7!&t%% zj;67&ziCZt0s)We&-EXiNWWBkoA2rc_RMx+19;dDiWc-m4<;yV!2M`TRXi|JjEtw9 zsi@l%8u2Avv4qENnOmA1%Dpmh^{e8016Pl*9pVZh^1*X(ux}m0fu*=jRz|CCB#xa$h=eWMTTsass_$_|Q*4WSCtfpuYc9=`cBZ&~6 z==4z*B}WwDR=_?u-3uqer5PIyhnO(c9Gx4RlRDR#hfxg>)Imgem|H?<`&%S3_qUP2AY3c6`wo#C=V%O6CPDC>^H zozS3V6`kneP>^cwz`I6CcqG21_;v3P)%;_1^X)QS3Q^k!JUb| zT4)(gn;y+(1m$DsYfKyFBz+f!8zGn|95NUTMuQPH4sw#fsK&!}^n#~zHd?nb7VLb^ z$lhH$f5LboF+Z`|`Ge{t`%ok=-XI@xWNB^I;SFMDdmrrV}acYUjNlpJIQ62Y&oHc5~;~ zA>+5!pF(}pG=Cm?Y`|8;^8lsUcwCb|ZjuU;hHx`UkJ9K6o&l^Z&T&JUWVQb5j<4&O zFIXGb*Bwv4D|O^@rt@6x@*6(^nU>g-?Dg1vB-8fKSmMuE-t-K;E6WC+!E}zl)G;rA zi2XzFO0g&Ll&jgxzxYW=^6mAoSd*Cu9%&nk;bDaeyBVgCCWp(E8&PrRC*%$L4z*@C^M7B^}#6xq97BsThWLr#ZuiwOAjuB_S6F~DngG? zZl#|q@wc<>QdnQIo*IwMH_|$XwNxATX6K5o($N<-+lQRa$-9Qe58deSO^&8?5v3pW+AwHzSMeW|VNiuyV;sWf@5YIf2((}#DCm6SWgk`y;)l5#5=F9V$G*agt^RT9x4|WCQY+9NL}qd|NK?`ot3q< zmFK4ZOPZEWlNsTy+ny$Q0~D$`hs8K>lAw}P0{F-$iLQH+l>1*lc#7=s9_YBmPm$J4 zYo6Tky7wHhq_;=X&73wULf&Byv1dbx& zuhevxug@YyUnR6B7?>;NxIGb0!20lH5ql&L9zm9k94@$8tx`0*FZZu`U-iUfcy7{S zGW)7YM=c$!CcT>5X714CS_d;>P!l+lW%u}a@%W488_ZQ$EHvg?_E_1UEjZJ)U`Hb= z5T)>2qh)`vS&FKSCmWMD%tR?{C>&h>A^U+iLaY1(NMFKBQH{mpV=DH8&NpB~b}5GiG?adcQk%0l`UW0s+>zQy>3Z!xR!tG{CW z0<*op`NXT6?}w>sZ5e)TOwpa1@Q zny-GM`Tn@{jmC|!up0jqdED|ix&!Dwm|jayjP<`(ej4)+emuPvSXIQQoVX zW$zzp&M&o+W1T-igSGHQXR3x|UH_BA6s>~+gpwbG@qsjl11KZS)oS^s=mzWTF-MeO z;sgXnk2uNPlShLTV*hZg(L;;CgJ03TAjgNLR`rkT6$>2q{U2dP9<|oSEmz@@JCs(DhETAIl@9uC;t5Iapeg3Kt+bSy zIrEF#YV1`fPS~fXU$~>*h(G1jHDrAqJnPFP68;GiQQm~u-6`6L;X@FCYQ!XjGIUGq z?wDgr&PEBR{N%iyW0l2cZk6@o+V~XQ@0*1f`BpVz-Pr}S7uTTthU_dIR)nXdbYLrfulM*csX=q!Jq%_dCZ!(Ao zU@g976XsKTc8<@iUO=5bpV@7Nu=92gvc2Ji94*O&APQ~S7`O~+6nw2DWYnO6PDX^x z5drA}1SJ!mN1G`nWzY{a0U=&BI@D=3ld=dNamv=PzLlQB(Rz0iPF$M5FUgumeD394}Tk`VPYm2E8bmA%Y4B3zhN$ z)trkc6`)V2sCjpR=(LnmaM%%{_3FH|74?0~MX?drqYNHAi@r4!=GlE<)FT0h^8Wez z$nE{%yra9ep8J}`UNGrR?uf06S6BQTR^0k1@bTZnc&*eis$K1R?HDUYjT7tw*+Xaz zPYVaJbHd6~Bi=4vo{BBD;N@vtmvU z(_+R+i3aPmi$D@cli(+K2%m*F0rVlRe|-HY-;KkN3;h$d8j&sSuqFN7Ey}BQ@DJiwc0QZnM9^XzJe!`J|NOjl zUQ}I8DBf{Bbc#v}MockQ!9y#B5?`S5=`I*bsPPiG3j=G#VehUKqLtXXQlz7Ny8?^X zNyou9>t#YBTjsYbcIh*y5<>4&lL5#RYRb%S4*+hYB8%?*ns98sUwPN|jU=5S`u6#? z>cdOpwVTe~zw+>{m!tmh!t9i*PPgo@E}m(WW?m5Z+jaZdYQPs9KUC^GOLLDN*E9mP z5aIP679HXc6gR@cV5sfo+h*{dMNtHAZ!IA3<@4CAMgu$r?iJ8Fpg0RoDn;*Z+cL_Z zlgxkP4uj?WtQEhp!-yrFxlujC`}$CkDh$jOx^gqCsO_Wc1>J7CD}hz1KRgP79+;nE zM^=CI3o8%5Jc1*o^EWK;way(5lW41}6GU1izVzx_Ra#X} zt*UGF^h_!c|5rS-TLpv%Nq6iB@ubk%@VmHM#b>T2XpdrqY(jA_UhSf_3)5P#!;S^C z2ImZx3>6{pqn_3cmNeB*;c_$&8I&%S3r$XNi{QG&3EbCYRUYwIaR2_v=20tD=neh& zHba-j@*8~QF2WAkH41=vXdoh4Xmr(YI|$I)NClAF4uTm`=J=(}qu_;%KfA*y8hp;s z3y$t6mtIsUQN}};RCn7~Qk1z*m%uYGP?kDdjbVl2|%+WE++i7a>QG&9$S2huvjII=;KeWNh5l zDI<$u%R;-+IpN%9u`wgzSA+mOn@{z7HrBXZrLxBZ?6=_7wBg>^o;&c_&#XR+*Dec> zz$dvK=_K4_v{+Foj8LnHN@47ca}-sk@?De=OPqe_QALs5XGbUEoj04+s9# zqM~RBVq=Zl5@|(sfi2Im!<~O#OrGid)G!R#4Q;SQ#5DYGC5!=fx`G&AGs58y;Z`G1 zx)e&WQ&?I+BMrEH$o3O%0yerA*hc!d1o?x=)WSyo9Y_nHvba4Km3vTYB+sJX+u3k; zc;=njjwqrJOnWl-G$)(6dnc#IhGyocRI0GEjj*#xf@HJ-U7Un0j zHF7tcY4goME`~dwW>I(AeB-e>xJ8&57-HXGb2tZf!-A@@+X2v9MrEd99G#KSX=yzN z+eZg%-aS%fuOaNlW_94oqrzVL7wuvCSC{LS_A;HRsGPo;!gnbd)dczr=~vk1-2cKa z7?TJI<(Hgk>#b?C%^s7mPg0RHMUm;Kq@sUmm+@k+q$2t=^V9m%zKL4NvWV6@Hd7$2 z(O4>tDSy7GYS3x@Og4G}ZFjnFi)DDs)E;Bh}w#Y&fh>QE#Y?d1bZ5Hg8BnG z?zNM9#aS8Amg|Y!OCHKT_(1Lfe0_8Fp@(u0;(s2>Jwywe{5Zn8dWHF?CHGcZ9u^1( zrX;Qc`3Cm39ei!@(+v_=(7=)3H)lQ!zcVg7zkP_+es>dVpa)WgquB$m4!}||?LEAz zY?n!uib3IuG%P(iR7gkhYHa)iW*Yy8%qWFKkmPwv9bz(F*VEfZ6QZ6Ew%IW~)7Fsy zW)K^}H^nWX>c`#oOTq5PRnhsCon#^Ztq)~8AP(%Wf8n|&e&A3~9$Z!6@Rj9(KIMP> zcgSPm@+he2*SV8GHliXvzmq&fQG8)1fh13n=7(&j>)J+g{#myyP?|2x2Y6!OfNVD( zbY*j&c&GUQR}=b=N+p7bwQ^`4heG#H$$v=2fPc7?3{uhG{Q;To%g(gzlC9`KsqD74;tsO?qIB<0?I0V! ze#I~EB-*AObopr<>YN#pAnbmLi9*^H6w{@fO*;1xmh`sKyACT8?02+l=r`Psz}Bzu zy8*8OJ%Jzu18xvJ4Cz$}N})WSoOSB0w&QHEIwGu{9pn)oy5*L;cacU|zbFog6WBeY z)L#^Zget;Nk)5glIzpkM+H6c1l@?*!iz6o`0(qFvor`4vcd7Ri@t~IX&2eAN#Lrg z!0kqW^lY}r-N?eDARZYOz`>o`?|+-?~AW z0MnrtJeTsCtVeum{}-$nHSRZOT~VV%W>tx)2~0y z1xz1#(Tcwmu|Py->dF(HJd_PVKFGEH@4!UNu~|fDb0im`3wDxg01XlFCu06wAQvOK zkif2QBNvh8K*&0ms$2V{4vx*oC+9;GN6XokA)+luYbVV1)#Sv&2R!Atb1cKZ{#Lk= zb1$|U7gw_Jh~E=BzUq(7yu%Vm*`q~}GTI}A=)a!*B6}Bd;Q`b?f1_>a8@t4n71%O0 z15gyO;v2Bnc6-$_vVRhF)NZc=tOc(c-p6O{`Y?RV8T@Gvhk~g@un;P6-6CBrCm=ZF(hH zZ(D7Zw#)CUk5x(p0FH!wO+P3vV7v_R$o&rIFfrC_S6Q%=QNw;_k6_OZhn%=$1V{h@ zuJ}eEO(-G>jLyigM!|saMZ843IK=e&dAY`nPcq~ow}K$GxVMM zG!kuTE!sSiZ{ho7dg1zNw3YXy7jLMd8zuZ3s!XNvQS8BqDlhQnk|o)VJoU^Gn3f18 zAPYvvtlOnhM#HYGI}5rCMBCBUdpo*|tq4qZ4mRU=_ZYTJf_W`tC*3xM<@N$--(UqR z)mP+5B@LRJ=RF2EQno|^SFcq{xooPLZuTpFYiapbF}6Z8_L_<(H{~1lo|>&_i{4DB z5wk1^lkJ9_Y1)0Vd|s_45%U&&1pvD|S`XU4@+<;nohV6t*1OYsR`P3VSa& zr7VTSo8Se$VWqvK1F)DZEIDGN(a3dz2EZAVIP5q{g5M{RBqZa$qQ3}&1SA#u2og{! z(aVkOC00kyoBYdOa>)z`dy6IQBgIFs&&vWjT?nVz$I+}pQ%oilL=XbTet>Xwii@D~ z2dR-1OfV3w7$QD;99CGBi;L9?0G~$}j~-k_)3t@_LOvS_xn1UA90_Gs9;8vB7GE1} z*1*s!mBVooNtilnPN3I+TEuIk-4c#(phnI&ditKp<#YPnqpSJlibt#H+#pg2(*bIFae_uS*j?GWx4EpfI;lk{TuNytHcIb3);#egb zQftlH=tNHLp;n4m&#bJS#;Lsc2KeUIz!qXlHg9c&` zRL>(v5BUbBfL*UO5uKLlRR6Y>qGP+SW=eAHwNcOTwpV+dJtDQbg73OT^UL$=i0~?*=E__QyVRgbz$xLI+x%f7omN z!U?~VTC457fV=kq<*eu)Kn1M2>-8XOMS)W;2XR%1h@o;h=pGP+{+j^rR>&+a@S65G zUA|3uuFjs<0g_->Z{Ax1aH_$6ItkP(s+HR*DS!iKL4ja6Tp++skkJuTH$oO(%M&%* zN64uL!65tr&P7jn*YL>W*Bdew{LnEmmQpO-{*bZr(H8r?A)jkx))NV+Itq$s;t#tK zJ+}IvwSjIaA{>NgQ4Ped&ochZOZDke*=lq*t5LS_x(AJ&Pq)N{A-~ts_Q!(a)w^1- zs>`U*VB$9*p9B8Tif~rAr+uf60+_|1sMC|nrv$MEApf8|6*Uj@@_UWp@(>`Tf&h}H zOT$br=(Kv>WxlCQupZSnp&PThq+VNF9j_zzr95$L_3YZ&*>-(pd?f|b)m2kElt56} zp(faabpZ6OFphf48mlT8Med$g?M0a*{r^D!DgD72wcC&0io?;MJ%5nh^E?3dQo#Uw zAfIPrY8;mN5u1f|-qLyEzW}_)3{!oD3R<@a6K$}$Q9OsUS;|X_cr&?v8NsNf_<%%Y zX%Q@>HnT?U1}<)s%7m>l-@9qxcs8N_9f~ZTjU24}?A{#1r)LjiA^|<-555s=aao{_ z0lg>dw|TO8>ytmT`N;|)w*H*L0IBILZV6X7U*WkjIE}Pcm{t~sb%uI0jrNrS2r$8Q z#ncE~;V48^4=5g0Kzgf?&7i_Vi9t}0OpxMWE(efpE7zK8j)Q`}R4nB2fTS;-8$#-v z=ncc5Kb9b0a9=e^IlP7cH7Q_~Q+3Fe#rH0a7X{t!v8*qdawWrVon7h6G$Iq@j`Tz< zjLw~kztLSi#TVKiZV^4%$c2V<7B^B6F@xEr4XHpJSj&WR5zmmp9}F3DJFF^f`}M!a zmm}<#P)3PNt<{2i2}=V?z-~h=R8MqTCTaTqsS@ zIaI!EGdkIDW+vm2oX@2AM_uR7_8v7x_h-PxPqTR_82QWY=rCfkgLzOvfogt*Vp2gX zMw$hc&Y6X~x61%?JB`nknT*NfJF>&@g880ONqgU3e@gfWTfkyPCx`CZhVB$1old~) z_ZIc!;G))nID6A}`iSl;x|6dSPbg&6kD!RJa4?q3u`$iaus&y|Q{c^XOHZypCq9QY zO(=e|5EI_dSGB=8g2NL`cN#*}5)Wkq)oc1!;-J*M64){o60^jjVXDCe9>vyl^&rJxo{yj|8C@QZ=W9Ofi%12h8 zGD1h8ZWRfXf|=r~pzoq^j+c=f^tOZDmuxOHkzWBm^!{2CoRS-*5+vOh1_kMj7x!Nh zHzA$LbQ3NK_qOlmw_u$K`Wg)EHq+|-J{(nO8_+u~(fQBtFp@!ffT`pg5kTEb2)1Z7 zI<0ge0@>TU59uy!HbyIjTs9pIJC|Hby?c-*WBYp$c4xiEN0H#LRjFQDtx3u$!CrwG zpO!CdnHF}Brx>+`OrE62jbzsBq(f()JzR|?r)^HxiTuPueJlZR>&y=4Qs)VSGwkpU zdF-YkyWbLuptRi=4!R@$$XGfxW>6PHfkN1f{r4ZJs$0bARie0YC`Iw;|9ilvqi_>*=mR{`>YPrfPrUK%T$jb!PLB2OOna zdq(%=X?eMXPnxa-_dtZ0?T zim2i-(@vsq3jw|Qz&~A{lyFEYYD_s)gjd)~H-oE_L%^h(S2<*dCHj8im&wf+-QBoR zcICo&Et~OgiXCk*${fsgLr9I=Pc<|gtJv1llWrY|F? z4F*S$9u)BI-PG=ABv^ph0(Iz`g01E z5yzv^tQ^sY!g+($Z5q{Sa#44f;(e!}hYvvyR^-=l!@)4viR+oXSijd6wMXTcAD3)9 z9~PrGf$`4q?Qk_}iB25K;=47{JQVSbW!#mt7hlWltP7?0*+Y{t;HCqaLsPM`CpQtw zPkFMkgu zpJWbjxH-Y$Ou`==tDd@NDmv*57RG87#5`kD&OqVIv}!FQoqvj62jXm(IqRm-=UD3; zEm^xYJl?vI;+}SEuu3a7G~wucF!YXa!@&*>n-K)<_u(b2j0(Rb3F<&B2A#+Tb)y74 zVw+zml*+Dt{D{wUzrU*_$?>O*B3Dv)^Y6K)q!%HP#WiL2dPb`ox}xI9Ytj{gyRJoF z>j=v3UuWzVGg6`5)kFx&Bu=Sg?Zbi=U8eX@~ms(0M^@no?V_neYFXMDl$GJNSs_^CJhLpH_LSfpcnNlp!!Gq6w5Fl}(-8EY!;U2NP=ZqtWqmmU z>N@z~q&;b~ z&@-Ziwu8~4=huCpB*2`v*Pjyaz}aR-1`|D5+gYGA6yjqzw_(VOAj&3evXm-Mvb9jq zW_IulOH5Bi7_{4wVo^v$I*A0`vQFZyilez*yKwTs)qfnCeOq&OVRmxvmMfFa^myoS z?bKwDU0FD?z}V%9Y&}A zz_1GSI`l*eh~nfV{-Rv0b-Y*zEVr{h&$vIrl(P@rfA6F_dijA@Ots!L<6U?wK4tx{ z*S{frAD?2yr0bUdSW+5fRz4|yncoC;?2%PsEm~m+b*~^Df#PwM2!|1`Q>!$DujVsfM8~(j zs5h~q(mgRVJ-*afl6X=3?+hvoqm8gNir>96cKOLL&yj_~i5X}2RCwxvS+ z>rXwIpgB-!ho#p{dmNdtEgj-tJ6E_Z%id=RW!*%yZVBb^z2HSYGv|ty?Gb#fbOPNU zcVCvW(XT7gixd*w0|Io|07nI4k92cz6+=3JgJAJB4th|L&b2>?Hmc3gHmS(3)g)24x{T!%Fk`+edpiF ztR>uH+5A45k#E$d1C>^oe|6c@AzM1kzdl!M%Reu-Ja(FiF#pP4D8Hc!PXkDe?9)g(_BD8QssRFY<{n752Zs!Al`lG4%02NjpG9W z=TSa_2X@moRDjQUh=eK?cI5~nM9l=G*KvH%M&qO{uSNNNEXsspK3b2}Q91$eF|5A` zi*(EHH;f{Ve1$EmmW^37sMy>U>GK)%d#awey)kjZVxM|~G3$`Zpz?+ptCwzf`f8P| zB`VruC2#%&LRC?ugke0kUwpPUUAlDjWvJpYgO8Uv-3m2gLKBmdws7A4c5f+e&o5tJ zj7;W1%tuB; zo0)=`8k}4Yo9ac^Bogni*7J$sly$5*9SqhpE?=n?w#I^P?FDDU@x|Fg9+NNK%vVQ8 zya{`NnpIlSK&UcbikkKIa4Gi1+ipXQ<{Rr-b~AgnZ`^R%IROS74v>X)M+>7u76FAZ z+l?F74MvDNl4@Thz0P_$BC9L-kB5xEEwJ zP_hD6!**1Rgu%eyyVH~DaHg3S^`FKctW3847U7!+=1|owuoVO#Wv@g7I4D2_Or0~` zX#nxp7&S&ZA+|vLd4nlrWD_pOoTG3g;dIP73s(Kng)t z`M0kno%T6L@s|_$W-p1)yzuhn7t&u$E&BW4ym|aVOiXv#ah`P^w zhMr5;0s zF&pX*NkHHG2Zti#dk03M9Ow#J7uv!Lcx3;^GE-~8Jp}l&2$KZ7iMYY3J0uEPwMrc@ zVmJs?TJ=S^q?o_cJJ=WQ zirU$Bts$#u3Aw!d&~=sanTL*i!e0jYaN(|r+wLFzcqUU$Jiet9WTfZa#cm8=jof-QCR>Atepu5p$VBHib4(0Rm{^yt|B&eiXbnLjk zp4lP5mo+M(zzR~&Y=X<8D2#hOT_S7lM#-@#r-R3AesAJZC^dJ}?8%W(DHt1zTH;ej zbBz_X!TZC*qNO#x{{$(AYk%k{2{N&Rvk^w zmQb2N?7BZvXvF^mCc;0IVlgH^_ytd&8b@dv^NAP?{Xn_#135M|2?A6OQveGpC}7X& zfC&Uzn-eB=|A93L+l_bAmO{bO{}X=_(m(xgmvlsLR-Pj&dA^>ve=qN_ef^ok2bY%? z7pA9bqlJ7f3(S=p`n-ePAq6ueeM$(v%FzC&lV|oL-mv^)jpUAPTEx(@Nm{<%0t?FsPQ)Q+1&*& z^1Fj^OQNC_*A|B6b%<>yssW=_m3A&fyrXH44SX2>v9v2adrY4T6_$tps!n9q1S8UF}-bwU8-fK>B_dZuGi{YUCoBb_a36Hq%^}8XF8ceROb~73==pjwt0j=P5AlnF~)qsgNU>eel zX~zb;bMI5G&&%zg_9}2HHu}NU>S2D$(2AB)|B~6veVs7vhOZV6RJ}OT->$I7M}xfm zTirZ5y%a0p=arLpSHL}%GjyI*9M%WNS97+K&0;22f0HX>A0hfM;wh)z+@t=nrHswI z1QyKRx|3&#V<{DaJXzhlo9L5pV4__U6&c7&uYZ;XdvNb_mOdxJDx3S9r7pU1-?Oyd zS$`+{E7VWS2q%Pv_H3~LFZx(m)ToxgwQDkB&X9}g2A;rC%eox9h@Z$J7nN%%Pa>I1 zCDFRimyJuOJr#xEUf`|*zZs;=Q}+*Jyx7s z&a`R7{TY4SRXZ|@hAW|wOf+l>mje#(2n?^8>BN-T0OsP=u>du7afjWONI8&;GG+oD zd3@%4B4kwROl6NVXwzymCgNE55xQ5u6LAa$62;d`MF@U;7Ake`qFLt_CT;-SokWC! z!gAz0==aLUw*NIMg1952SL%Cl2^n~c2HLzV{;X}n{C*>Z2gDpuMi6& zwVa^3PVQ~Mm0>68zDDRBC?n7t5NQev*TdjI{9xxTM)tLi?VzZgzB)lK7=l@|fHjZ0ABFQ2~G64wyUdc=mOqKHB+Um-I<^Cw9-AaTJ6u+dL`t#@U z1$GZgQ1dvKsC^#zv9JHDj#WEfs>+%5=Z_j=U&wXtfm&K@mHjrX^WEo9jrrq4XQ$)= zh`%qr{|HzoKa5J7f!SN4*;^*QoDqe-_tq=?t$$PzJM>oAPX7e-&tWz__+AeCnUvlO zsE_+djb?R8(z~GLZq#!lGyT0Y7ppfsN~Kq$`sK0gvH6OD%E}f>C@Z@y$4jq(LQWs# zC0P0gE?@Z2>y9tBQq?J5R<_VBE1Tr?R;VNEekTvDD;d?3U6W)Ks*_5}s8kMt-w2Dy zrE;4k+n^@fT&FQ8S^6L^DjS~)?L)TA;rkBA6=l3=ZaeAL{}Tv^W!9@ILj+49I=7uS zi4m1Y-~fNvTvaCZ7wbl?rITC@_Y`4jjg*s>O@B5M*tUD;Du?Nk$oy0X5}ck9YFEk22I zl?#E6S-rZlonHlTWUsDl=T}LeCDoPf{3`k^gjjZd0X{~mD;v-*5yHYs=k~mm^X403 zd+q*@(CDJ9T`Jnspswr$)s;;w$yH^%woELCCa7wUs>-CQy|qA;SM52Zsy)<{;RIg) zzwEo%)3cPJ1%IRhoo5S1b-CqYRDTsPXOQfY4zv|3*2&)W`E zHEXl&Xe^pGJL5@kIT5W|_u?OL3=yt!pdbO(9F`81CBT`r!Hd?A)T zP!EllGntYjIqHutCTqBn0@d-^oKCG)>vW?YV7qkMN^Z7M3#x|zE@3zWo@I05N3hO- zZFi$Fl?P!OI@%OTl*Xgz39v|V7bOo-y1S?s_eOR>@G)O+^GiI=JT}MU^peY_RzIF7 zD-Oe_O3Wu-G<46hsPNgm1&!J`r;aBKCU$@Asi$h4_ZWs$)C9Y(b6{jq4DTRDW)Pz7 z5N06B(c=toIUY3X_MX7W&x^oeJV-G?Mf6n%j0fV2i5DARe9I#Hqt;VTwK`)YD>1~7 ztZ|an%XEl_p!63#H?@N1;#P^ZTHZ3Gq+5%}g8q27D$XD==k=aPaY%yKaO)3KD&-~W z^=M+=g&rP|_#VTHT=(c+6jS?bMvr4ep*GDW6BR{%p55{y68uGlcf0gXhgzc*Av!7K zYy5P6mVFraB^*Dh=TiV{?PnS>fOZ!^q{%KIaYw_uIEO?tRhLs04Kc=YY8&bUVJ60H zq=A$nRftz0Q0=vX{O6r!ibcUP^ZA{oOJbYZVa`OJ>374z0!t9p%mD;UNf8VdR+ik~ zvI~&GjCM03Jb|BctwHTXUwV1s2R6 zZbr@Fa>zSc$e81zBT*4Q-}#r!c&xdWYCL$$bS(yABV~5^T!r#DHng;S3OzL(sQ}6+ ziJkopcnEC?1?cn2C_oA!?hgfs!X&487<7ATjsoP>isb#!HrT}6$@jdR>Xf^By=nR8 zk-A}V>cqu`d5Q|m72K_A?fOu}T%DYc9z5gDPDU%W^nvqloT_DWqcwI=`v2$w3= ze8!Uvn2*jzXGUWx-P-urnKls*nAU$R`jExpmJ3G#<{?QJ)wl@-h+Ga#>2BjuCQzux zj#eVz!5(F!y;7q3Mhi*o0ZFa_AGM3={NK67s<(V-HF=;OzHl})6u$D(r3wFdIc1Ea zkZK{4T_}4_ov2Th58n#&YbueLI^@bU!p-UC!R2~u#2dF4yxG8rJJ*WOU9cIBjaQF1 zLqw_50^U^(ylVlmkz>e0yjb{L+ffeqk=sc^JWQ8HTx|lztOSJF0eDsuDHVf&+7AKk zfvEK3a)0Ruhd^=;1KFz`s05)17!;);Aoe~!W#GMM+Sx0YPaGeuGU4t!FTeQ8i*LN) z_@xt<=4Y$NMvp~8J@q2GNL_`1-%IWnWBFg}^6`n<0Wo5fK(+SyrbFwPJ6PeMTIb0^ zV_|$Wo(@)K-Xdkmzxq792R2j4`n%B1U?jZ(yUnCVIqbF=Hg}%+@96k3&Su!__-X)h zH{i$o%Zp&&d$xZb2)TPL^YD>wocz|w)XTA)Mna-uCG#7x zd+hP^k1U-{$nP&r%xWT|HCG{GpPS?hv7AT%-R(S;n~)Y_b(;M`CF%DT2quiRlt}m` z2zM=$kRaSxOL9en!pm1eLzqO~;|o0RVV@p68Jb8}(!oFqm=u7_5;bV8q*tr;cj0X5 z;k@~Vr{e;Mq|2yQ(1Ky$Bz@PaZv?VSt3KqVbEWro{bSem?lbM^!~_#2CMPBvRQ`jU zN~t(_CJ;eBWmT?aJ*u{pM0{+2EA+L4^#vVy^Y3RLKO?t>kZUJkyS$pcQ~aFx|KY&2 zQJt7&Sg+7fIS{^pzUUD&-9r{u1&%kQCQs6L1y6JkS;Kd-bIAwirb>nTl9@tDe9I4hP!d1-(azs~{k`w~I^E^p$Cq!3 z3qppn>D`JS7_dm+q8#FKd$Zd}mz1em-VYa6- z1z(HC_X7+igS$B=B-&BC4Y46^DRmu7$j@sinNhmk-3+ zwTvmE$t_%8%gto$#RJ!88wV>M4ZGLasV`h!t2->=!u*&s9k4jU@!_&2l?i+Dli{h8 zlUa*vbbKmI6`f7?X7&!8NZZv-;Y^`XQr*y=St@QWhMFoD3vAUT0SQTN6-jxZl>KDujOvY-yn-e#d*7nC*93Ji|qF@FKRth zw1+HJGVMgsp4O@IW*d=a-I?j0*rQ$}c2bB12EC+=2cGp*C$K}v1qr-C8hd`J|A&zLB z7f6VNaF@j5r;i~OgOU+&KzZBvhf@9rvZF5C05-{;Bqvw68JTg;IY4A^_z42pkI3F; z|8IGRX1~`3S}UVLqZSejz5@z5cN@9oEhu*#`C5${})@1i24C-*QYV|3lV9 z#Gue)HFa5JhyaMNAHaCutV3N2LA(j4tHlkeRX?)bixK(TcoHY784Rt2omnES`KxIgdBbn-2L3;tQWX__> z(dQC>P)S@{S)QMrZsjuZXv`YLF@=tX6nN!@uxd?xBMu9&#s<=?hs@}K#xzoL4=4?a zJ^zv+>ux(Owt}ho=2J!QJ%_G;p%b9$>|DW>KlFmBxeMXE?Yha))w0u;noJReRBGv# z@tDr0^@p0{-h%lNjUhWSq*EPLoo}QYt4p4^-)=CtBgN48nN~QP9FJru?CFZQt$Kqy zJ{qqbZv+(urRa7gat1Btq>YYEJB| zpMAn~2Gz6DQ_uM5_5Qsek7%k;3~yDGkM%ksQSP5g@CIg{hwZzo zC(4$-XB4Bx@4r@`-VngmlYZJJKGAAjeX!acU{Id+(|9oOVMlo8sfI4njySS70NZNN z{Yy(roJbl}azHADh!VQ0-Hl~Vk*6zI@H#<9@S}lD4*_k`^it3|JhJC&K`k*_Nhc_* z;*LfrMLD=JcF6_}PIjy(ZZnwJE}v(pMdBOU>8|`^%6NEdl22>xTjanR{TO{VR&ffb zg$8jjV4ymsvcJ&=ntu{m0X98>v1l4gT^uzvERZpR4Q)fJKIm(;QIGU;FnjF%cS|tq z*soo`udR*~KB@h+M= zozw)fv`WY(ti_` zcM(J{VubmPcn}{2VukUhA%u=qtJIGnc&!5W2ny>^A#@oh8f^-uI?THX#78u0FLg$d zx~=pDAtcB&$4(=i`XG7tyY~}tCd}Os#5N5DFxF3lKj>%syOk#aSZj&zid;P%5PvUn z^#n9OD*Q-z6}yDd?$L{Z>Ul=doa0Am#DVw4*N^fjPC0wRIq)Od2>Z-O)ZJCJhGrsX~<+uIv)o={1}3*FqY9H^#GJw;RAa*b;tCwofPF>(#ry-XwfI=^wJ>N$8oW z6zsBuG{oJJ#-Y*Y@EN)eU!m*p?f4FC7kGX08_u--ZkKUrtXe`eAs!6|TrGDCopYQ< zXDmW{gN@dBDw`~(I;Rwo62pppg}qOW4pXZ zT6pqXkOQJ9&1@SCaG>1<;q+o^anK)-nk4VI7NKu>4erGIu!oQE`@7RV?5$Sui5+^9 zA-9FC{BJnTbb`0-LZS=_4)_zq=fDxS7Mt8?4~<~zRZ$V0SZbesNnm#MD+kcfq;~gr z@9z9(r-Rb~;2rU&_#7W)N?aquXlbQZ;==&TKmv&(hP;BzW^vji@=9x!K2lKy!n$5n zquNM*0C3it=-A?k)VzOkG2sXg%~;3d+3Q{!oIUu}11bMpl0Ud~p~{r+$)C#1ykh1H z@+kgi@rFD`(uQ+Xz(|G!)XV9q>kWoMl3^5-27z6P{FOy+bYjIgtW_3OD5CA<(qGNS zzq{1=yXDj~OAv1j_+D0GraZX&cov^F<}k-Z|qSKI|Hl}ZQqa;Hh5K-6CvHvMtu+0NBJG8w;w zLj-nFi2V?s?iGA(w@!^nci&M0%gy6-67rwe8nNxIRH9u)rjfFZF=V`g*6?jhC(_x; ztbb_E6v)q2jz$~xiP-O|OrC_lESfvDxy2WrIhrpWKX>opSJYPuc054{p~9bXNkjBh z96FnyYPO*LxHId-)9_GGz(+&Oo5)(OEFWjuna?J0syx5M>KH z4au_0kmTU_Zln5&w6k{|*F~xCqe9lyUvN!DDbFR(x)!y^aEUnJaZq8Qkk1#2hN5V> zh=v9AmIG)8_Na8Knd;upeEr;(Tp)lt#P`|7LouzNK5NoNA$O4)vwdP zF146?jo~$F>uvgDkFGtzatGO+rJA?&v5%Gfqa}7-=TU%J24*%WfP;i=<{jtNyvw{Y z91y$di7^}yyDI5_Ar9TY(wYJ?>hf#~8kG)Cjz&R@lWO?%bd>e)g3X;cFjD;v8-1r1 z9J`MGrMsFxyUKOrPIk}wx3DDs8s~fByn@2nO&*HvjQrOzYVz$k#jo3AJt0gV5r$}4=h>{p}h5>}LjSJKll z!Fo?%cCrDkYWv&Jqyb~Vh8F2&-mFQML_?{rI;nvaESUmO z0ztqPh>Z{$#SSK0@-l1~q|Aw=96sX~9zq_O-;Go1AF}f$_vop6TABHh2aNIx0H_EJ$>kA%(76ynC`6y7#4vfqyk8j z`1)i$YK~2xC?#t6K6T=kP+ILv&g9)xVx62RxK9R(%|QCZLM~8h`qL*DvhQ{l(3Ph# z<9G4zv(Vsq@PmIHH8Yz=#%si+kpZ(v?54euZAUG+X=MMAsK5`KCFwv|lM?T@$Gs!PFj$h*dR0E@#nYC>H?fPnTX#spQSygK z*&zIy9YjqMTz~!y9AL+&Yr(&YpQB6?ILOWlH?9A{-fG*|csS z7sE|!B>LjU=v50AyWO(jU#d*Ci%a3Z^p;|FkS_Ur zpsldSDE{eLe*!p`R|(_jQ(&>7ijZY9M60X-F9(=JC3J5TK~hZRoy5|iR^8RzTs#h} zz6q9oRgFMHm|i8kl3t{GY}?nM6RRcaP9-g~ZmLtROBG2JW#jN$QoEzCI!W4$RJ;O% z909Fp1VGETw&vsiuevh<%&NE+|IC+t-}mjyzL110gg}50Lc*>fh*oQ>0Rl!tLPHR& z)mq!yK3iLB7p<*YtIxi!R;@m(b!ltWy41C;iaYKLiUQ(7zW?vc-1{xr0GIdP|K9I@ z_ujd)oH=vm%*>gYb2>iLoL80;oe~q35Sde+TQ@6iVSGp3l$CQU#iCMHV{KVXd+xEV z+2z@INKMWz(^+3wJiT|-?1V3EVGOIcoR%=FHlwPps_VGsvN`p+i8z;`RR%w)#ZJuHjuYZ(X&P%O+yWi1!j{BD(F~=hv5o;^U!Rd07pB

    899@R!VZF*}o$_E2^1X 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 literal 0 HcmV?d00001 diff --git a/client/salix/src/styles/fonts/Raleway-Regular.ttf b/client/salix/src/styles/fonts/Raleway-Regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..e570a2d5c39b2841b5753350a3822bd2b685e771 GIT binary patch literal 178520 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 literal 0 HcmV?d00001 diff --git a/client/salix/src/styles/fonts/Raleway-SemiBold.ttf b/client/salix/src/styles/fonts/Raleway-SemiBold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ed0a8b9941ad1a112f04fe2743cac9e995a4e02e GIT binary patch literal 180492 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 literal 0 HcmV?d00001 diff --git a/client/salix/src/styles/fonts/Raleway-Thin.ttf b/client/salix/src/styles/fonts/Raleway-Thin.ttf new file mode 100755 index 0000000000000000000000000000000000000000..a497b98a8687956bd370a992654c35e05de56e32 GIT binary patch literal 177572 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 V0tVjjkV%iOTl(m_lbyZve*xa5fhzz2 literal 0 HcmV?d00001 diff --git a/client/salix/src/styles/index.js b/client/salix/src/styles/index.js new file mode 100644 index 000000000..e7dfd0622 --- /dev/null +++ b/client/salix/src/styles/index.js @@ -0,0 +1,9 @@ +import './title.css'; +import './layout.css'; +import './display.css'; +import './margin.scss'; +import './padding.scss'; +import './background.scss'; +import './border.scss'; +import './font-style.scss'; +import './misc.scss'; diff --git a/client/salix/src/styles/layout.css b/client/salix/src/styles/layout.css new file mode 100644 index 000000000..1d35fd5c8 --- /dev/null +++ b/client/salix/src/styles/layout.css @@ -0,0 +1,110 @@ + +html, body { + height: 100%; + margin: 0px; + padding: 0px; +} + +html [full-height], .full-height { + height: 100%; +} +html [self-scroll], .self-scroll { + overflow: auto; +} + +/* Horizontal & vertical */ + +html [vn-horizontal], vn-horizontal, .vn-horizontal, +html [vn-vertical], vn-vertical, .vn-vertical { + display: flex; +} +html [vn-horizontal], vn-horizontal, .vn-horizontal { + flex-direction: row; +} +vn-horizontal[reverse] { + flex-direction: row-reverse; +} +html [vn-vertical], vn-vertical, .vn-vertical { + flex-direction: column; +} +vn-vertical[reverse] { + flex-direction: column-reverse; +} +html [wrap] { + flex-wrap: wrap; +} +html [wrap-reverse] { + flex-wrap: wrap-reverse; +} +html [scrollable] { + min-height: 1px; + flex: 1; + flex-basis: 0.000000001px; +} + +/* Horizontal & vertical childs */ + +html [vn-auto], +html [vn-none], +html [vn-one], +html [vn-two], +html [vn-three], +html [vn-four], +html [vn-five], +html [vn-six], +html [vn-seven], +html [vn-eight], +html [vn-nine], +html [vn-ten], +html [vn-eleven], +html [vn-twelve]{ + flex-basis: 0.000000001px; +} +html [vn-auto], vn-auto, .vn-auto { + flex: 1; + flex-basis: auto; +} +html [vn-empty], vn-empty, .vn-empty { + display: block; +} +html [vn-none], vn-none, .vn-none { + flex: 1; + flex: none; +} +html [vn-one], vn-one, .vn-one { + flex: 1; +} +html [vn-two], vn-two, .vn-two { + flex: 2; +} +html [vn-three], vn-three, .vn-three { + flex: 3; +} +html [vn-four], vn-four, .vn-four { + flex: 4; +} +html [vn-five], vn-five, .vn-five { + flex: 5; +} +html [vn-six], vn-six, .vn-six { + flex: 6; +} +html [vn-seven], vn-seven, .vn-seven { + flex: 7; +} +html [vn-eight], vn-eight, .vn-eight { + flex: 8; +} +html [vn-nine], vn-nine, .vn-nine { + flex: 9; +} +html [vn-ten], vn-ten, .vn-ten { + flex: 10; +} +html [vn-eleven], vn-eleven, .vn-eleven { + flex: 11; +} +html [vn-twelve], vn-twelve, .vn-twelve { + flex: 12; +} + diff --git a/client/salix/src/styles/margin.scss b/client/salix/src/styles/margin.scss new file mode 100644 index 000000000..ea0baf291 --- /dev/null +++ b/client/salix/src/styles/margin.scss @@ -0,0 +1,89 @@ + +$margin-none: 0; +$margin-small: 8px; +$margin-medium: 16px; +$margin-large: 32px; + +/* None */ + +html [margin-none], .margin-none { + margin: $margin-none; +} + +/* Small */ + +html [margin-small], .margin-small { + margin: $margin-small; +} +html [margin-small-top], .margin-small-top { + margin-top: $margin-small; +} +html [margin-small-left], .margin-small-left { + margin-left: $margin-small; +} +html [margin-small-right], .margin-small-right { + margin-right: $margin-small; +} +html [margin-small-bottom], .margin-small-bottom { + margin-bottom: $margin-small; +} +html [margin-small-v], .margin-small-v { + margin-top: $margin-small; + margin-bottom: $margin-small; +} +html [margin-small-h], .margin-small-h { + margin-left: $margin-small; + margin-right: $margin-small; +} + +/* Medium */ + +html [margin-medium], .margin-medium { + margin: $margin-medium; +} +html [margin-medium-top], .margin-medium-top { + margin-top: $margin-medium; +} +html [margin-medium-left], .margin-medium-left { + margin-left: $margin-medium; +} +html [margin-medium-right], .margin-medium-right { + margin-right: $margin-medium; +} +html [margin-medium-bottom], .margin-medium-bottom { + margin-bottom: $margin-medium; +} +html [margin-medium-v], .margin-medium-v { + margin-top: $margin-medium; + margin-bottom: $margin-medium; +} +html [margin-medium-h], .margin-medium-h { + margin-left: $margin-medium; + margin-right: $margin-medium; +} + +/* Large */ + +html [margin-large], .margin-large { + margin: $margin-large; +} +html [margin-large-top], .margin-large-top { + margin-top: $margin-large; +} +html [margin-large-left], .margin-large-left { + margin-left: $margin-large; +} +html [margin-large-right], .margin-large-right { + margin-right: $margin-large; +} +html [margin-large-bottom], .margin-large-bottom { + margin-bottom: $margin-large; +} +html [margin-large-v], .margin-large-v { + margin-top: $margin-large; + margin-bottom: $margin-large; +} +html [margin-large-h], .margin-large-h { + margin-left: $margin-large; + margin-right: $margin-large; +} diff --git a/client/salix/src/styles/misc.scss b/client/salix/src/styles/misc.scss new file mode 100644 index 000000000..6b8523aab --- /dev/null +++ b/client/salix/src/styles/misc.scss @@ -0,0 +1,29 @@ +@import "padding"; +@import "margin"; + +.form { + height: 100%; + box-sizing: border-box; + padding: $pad-large; + max-width: 1000px; +} +form vn-horizontal > * { + padding: 0 .4em; +} +form vn-horizontal > *:first-child { + padding-left: 0; +} +form vn-horizontal > *:last-child { + padding-right: 0; +} + +html [fixed-bottom-right] { + position: fixed; + bottom: 2em; + right: 2em; +} + +vn-button-bar { + display: block; + margin-top: $margin-small; +} \ No newline at end of file diff --git a/client/salix/src/styles/padding.scss b/client/salix/src/styles/padding.scss new file mode 100644 index 000000000..cfa9bc170 --- /dev/null +++ b/client/salix/src/styles/padding.scss @@ -0,0 +1,89 @@ + +$pad-none: 0; +$pad-small: 8px; +$pad-medium: 16px; +$pad-large: 32px; + +/* None */ + +html [pad-none], .pad-none { + padding: $pad-none; +} + +/* Small */ + +html [pad-small], .pad-small { + padding: $pad-small; +} +html [pad-small-left], .pad-small-left { + padding-left: $pad-small; +} +html [pad-small-right], .pad-small-right { + padding-right: $pad-small; +} +html [pad-small-top], .pad-small-top { + padding-top: $pad-small; +} +html [pad-small-bottom], .pad-small-bottom { + padding-bottom: $pad-small; +} +html [pad-small-v], .pad-small-v { + padding-top: $pad-small; + padding-bottom: $pad-small; +} +html [pad-small-h], .pad-small-h { + padding-left: $pad-small; + padding-right: $pad-small; +} + +/* Medium */ + +html [pad-medium], .pad-medium { + padding: $pad-medium; +} +html [pad-medium-left], .pad-medium-left { + padding-left: $pad-medium; +} +html [pad-medium-right], .pad-medium-right { + padding-right: $pad-medium; +} +html [pad-medium-top], .pad-medium-top { + padding-top: $pad-medium; +} +html [pad-medium-bottom], .pad-medium-bottom { + padding-bottom: $pad-medium; +} +html [pad-medium-v], .pad-medium-v { + padding-top: $pad-medium; + padding-bottom: $pad-medium; +} +html [pad-medium-h], .pad-medium-h { + padding-left: $pad-medium; + padding-right: $pad-medium; +} + +/* Large */ + +html [pad-large], .pad-large { + padding: $pad-large; +} +html [pad-large-left], .pad-large-left { + padding-left: $pad-large; +} +html [pad-large-right], .pad-large-right { + padding-right: $pad-large; +} +html [pad-large-top], .pad-large-top { + padding-top: $pad-large; +} +html [pad-large-bottom], .pad-large-bottom { + padding-bottom: $pad-large; +} +html [pad-large-v], .pad-large-v { + padding-top: $pad-large; + padding-bottom: $pad-large; +} +html [pad-large-h], .pad-large-h { + padding-left: $pad-large; + padding-right: $pad-large; +} diff --git a/client/salix/src/styles/title.css b/client/salix/src/styles/title.css new file mode 100644 index 000000000..2297903b0 --- /dev/null +++ b/client/salix/src/styles/title.css @@ -0,0 +1,30 @@ + +h1 { + font-size: 32pt; + font-family: raleway-semi-bold; +} +h2 { + font-size: 28pt; + font-family: raleway-semi-bold; +} +h3 { + font-size: 24pt; + font-family: raleway-semi-bold; +} +h4 { + font-size: 20pt; + font-family: raleway-semi-bold; +} +h5 { + font-size: 16pt; + font-family: raleway-semi-bold; +} +h6 { + font-size: 12pt; + font-family: raleway-semi-bold; +} + +h1, h2, h3, h4, h5, h6 { + padding: 0; + margin: .4em 0; +} \ No newline at end of file diff --git a/client/vendor/index.js b/client/vendor/index.js new file mode 100644 index 000000000..a3d037373 --- /dev/null +++ b/client/vendor/index.js @@ -0,0 +1 @@ +export * from './src/vendor'; \ No newline at end of file diff --git a/client/vendor/package.json b/client/vendor/package.json new file mode 100644 index 000000000..8e69a7669 --- /dev/null +++ b/client/vendor/package.json @@ -0,0 +1,10 @@ +{ + "name": "@salix/vendor", + "version": "0.0.0", + "description": "", + "main": "index.js", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + } +} diff --git a/client/vendor/src/angular-paging.js b/client/vendor/src/angular-paging.js new file mode 100644 index 000000000..a0d004036 --- /dev/null +++ b/client/vendor/src/angular-paging.js @@ -0,0 +1,5 @@ +import 'angular-paging'; + +export const ngPaging = { + name: 'bw.paging' +}; diff --git a/client/vendor/src/angular-translate.js b/client/vendor/src/angular-translate.js new file mode 100644 index 000000000..cb5655375 --- /dev/null +++ b/client/vendor/src/angular-translate.js @@ -0,0 +1,6 @@ +import 'angular-translate'; +import 'angular-translate-loader-partial'; + +export const ngTranslate = { + name: 'pascalprecht.translate' +}; diff --git a/client/vendor/src/angular.js b/client/vendor/src/angular.js new file mode 100644 index 000000000..b5d6cad20 --- /dev/null +++ b/client/vendor/src/angular.js @@ -0,0 +1,8 @@ +import * as angular from 'angular'; + +export const ng = { + module: angular.module, + bootstrap: angular.bootstrap, + $$minErr :angular.$$minErr, + angular: angular +} diff --git a/client/vendor/src/loopback-validations.js b/client/vendor/src/loopback-validations.js new file mode 100644 index 000000000..c2d003a14 --- /dev/null +++ b/client/vendor/src/loopback-validations.js @@ -0,0 +1,5 @@ +import {Validatable} from 'loopback-datasource-juggler/lib/validations'; + +export const loopbackValidations = { + Validatable: Validatable +}; diff --git a/client/vendor/src/material-design-lite.js b/client/vendor/src/material-design-lite.js new file mode 100644 index 000000000..43034d151 --- /dev/null +++ b/client/vendor/src/material-design-lite.js @@ -0,0 +1,4 @@ +import * as mdl from 'material-design-lite'; +import 'material-design-lite/dist/material.orange-deep_orange.min.css'; + +export const materialdesignlite = mdl; \ No newline at end of file diff --git a/client/vendor/src/oc-lazy-load.js b/client/vendor/src/oc-lazy-load.js new file mode 100644 index 000000000..4e755b606 --- /dev/null +++ b/client/vendor/src/oc-lazy-load.js @@ -0,0 +1,7 @@ +import 'oclazyload'; +import {getComponentName} from './util'; + +export const oclazyload = { + name: 'oc.lazyLoad', + oclazyload: getComponentName('$ocLazyLoad',true) +} diff --git a/client/vendor/src/ui-router.js b/client/vendor/src/ui-router.js new file mode 100644 index 000000000..4f74b4400 --- /dev/null +++ b/client/vendor/src/ui-router.js @@ -0,0 +1,7 @@ +import 'angular-ui-router'; +import {getComponentName} from './util'; + +export const uirouter = { + name: 'ui.router', + state: getComponentName('$state',true) +} diff --git a/client/vendor/src/util.js b/client/vendor/src/util.js new file mode 100644 index 000000000..494f1f6e0 --- /dev/null +++ b/client/vendor/src/util.js @@ -0,0 +1,11 @@ +export function getComponentName(name, isProvider) { + if (isProvider) { + return { + name: name, + provider: name + "Provider" + }; + } + return { + name: name + }; +} diff --git a/client/vendor/src/vendor.js b/client/vendor/src/vendor.js new file mode 100644 index 000000000..dea3cc1fb --- /dev/null +++ b/client/vendor/src/vendor.js @@ -0,0 +1,7 @@ +export * from './angular'; +export * from './oc-lazy-load'; +export * from './ui-router'; +export * from './angular-translate'; +export * from './material-design-lite'; +export * from './angular-paging'; +export * from './loopback-validations'; \ No newline at end of file diff --git a/db.json b/db.json index eb57fcee3..2a3a9f3b5 100644 --- a/db.json +++ b/db.json @@ -20,8 +20,8 @@ "NUf7o684TmteojFX9KmPOpaDLthjP5Def4wuy83Yjv31i43HHiWgV3FyBp6pX8Ue": "{\"id\":\"NUf7o684TmteojFX9KmPOpaDLthjP5Def4wuy83Yjv31i43HHiWgV3FyBp6pX8Ue\",\"ttl\":1209600,\"created\":\"2016-11-21T11:06:11.113Z\",\"userId\":1}" }, "Client": { - "12": "{\"name\":\"Verdnatura\",\"id\":12,\"fi\":\"B97367486\",\"salesPerson\":\"1\",\"telefono\":\"963242100\",\"socialName\":\"Verdnatura Levante SL\",\"active\":true,\"user\":\"verdnatura\",\"fax\":\"963242100\",\"phone\":\"963242101d\",\"email\":\"informatica@verdnatura.es\",\"surcharge\":true,\"cyc\":56,\"credit\":1000,\"iban\":\"456\",\"street\":\"Avenida Espioca, 100\",\"city\":\"Silla\",\"postcode\":\"46013\",\"mobile\":\"654654654\",\"dueDay\":10,\"gestdoc\":23452343,\"province\":\"2\",\"country\":\"1\",\"modify\":\"BasicData\",\"navigate\":true,\"payMethod\":\"1\"}", - "14": "{\"name\":\"Cliente 1\",\"id\":14,\"street\":\"Aaaaaaaaaa\",\"fi\":\"1234567890A\",\"socialName\":\"Cliente 1\",\"fax\":\"963242100\",\"dischargeDate\":\"01/01/2017\",\"telefono\":\"963242100\",\"salesPerson\":\"2\",\"email\":\"informatica@verdnatura.es\",\"city\":\"asdf\",\"postcode\":\"asdf\",\"phone\":\"asdf\",\"mobile\":\"asdf\",\"credit\":2345,\"cyc\":8547,\"iban\":\"asdf\",\"dueDay\":345,\"gestdoc\":2435,\"surcharge\":true,\"navigate\":true}", + "12": "{\"name\":\"Verdnatura\",\"id\":12,\"fi\":\"B97367486\",\"salesPerson\":\"1\",\"telefono\":\"963242100\",\"socialName\":\"Verdnatura Levante SL\",\"active\":true,\"user\":\"verdnatura\",\"fax\":\"963242100\",\"phone\":\"963242101d\",\"email\":\"informatica@verdnatura.es\",\"surcharge\":true,\"cyc\":321,\"credit\":1000,\"iban\":\"456\",\"street\":\"Avenida Espioca, 100\",\"city\":\"Silla\",\"postcode\":\"12345678\",\"mobile\":\"654654654\",\"dueDay\":321,\"gestdoc\":23452343,\"province\":\"2\",\"country\":\"1\",\"modify\":\"BasicData\",\"navigate\":true,\"payMethod\":\"1\"}", + "14": "{\"name\":\"Cliente 1\",\"id\":14,\"street\":\"Aaaaaaaaaa\",\"fi\":\"1234567890A\",\"socialName\":\"Cliente 1\",\"fax\":\"963242100\",\"dischargeDate\":\"01/01/2017\",\"telefono\":\"963242100\",\"salesPerson\":\"2\",\"email\":\"informatica@verdnatura.es\",\"city\":\"asdf\",\"postcode\":\"asdf\",\"phone\":\"asdf\",\"mobile\":\"asdf\",\"credit\":2345,\"cyc\":56,\"iban\":\"asdf\",\"dueDay\":345,\"gestdoc\":2435,\"surcharge\":true,\"navigate\":true}", "15": "{\"name\":\"afsdf\",\"fi\":\"12341234rasf\",\"socialName\":\"asdfasd\",\"dueDay\":5,\"id\":15,\"payMethod\":\"2\",\"salesPerson\":\"1\",\"modify\":\"BasicData\",\"iban\":\"sdfgsdfgsdfg\"}", "16": "{\"name\":\"floristeria laasdfas\",\"fi\":\"2345234523d\",\"socialName\":\"23452345assdfgsdfgt\",\"active\":true,\"dueDay\":5,\"id\":16,\"modify\":\"FiscalData\",\"email\":\"asdfopi jso@aosijf.com\",\"phone\":\"654654654\",\"mobile\":\"654456456\",\"fax\":\"456456456\",\"street\":\"asdfasdf\"}", "17": "{\"name\":\"ccccdddddd\",\"fi\":\"asasdadsa\",\"socialName\":\"asdadasda\",\"active\":true,\"dueDay\":5,\"id\":17,\"modify\":\"Active\"}" diff --git a/dev.cmd b/dev.cmd index e22ab2965..eff109181 100644 --- a/dev.cmd +++ b/dev.cmd @@ -15,7 +15,7 @@ goto caseUsage if not exist "%nginxPrefix%\temp" (mkdir "%nginxPrefix%\temp") start /I nginx -c "%nginxConf%" -p "%nginxPrefix%" call forever --minUptime 1000 --spinSleepTime 1000 start forever.json - gulp --gulpfile @salix\gulpfile.js + gulp --gulpfile gulpfile.js goto caseExit :caseStop diff --git a/dev.sh b/dev.sh index d86447b31..c7c611f90 100755 --- a/dev.sh +++ b/dev.sh @@ -14,7 +14,7 @@ case "$1" in echo "################################ Starting services" "$nginxBin" -c "$nginxConf" -p "$nginxPrefix" forever --minUptime 1000 --spinSleepTime 1000 start forever.json - gulp --gulpfile @salix/gulpfile.js + gulp --gulpfile gulpfile.js ;; stop) echo "################################ Stoping services" diff --git a/forever.json b/forever.json index 3ea5b259e..c1e82fa35 100644 --- a/forever.json +++ b/forever.json @@ -7,11 +7,11 @@ "sourceDir": "./services/salix/server", "workingDir": "." }, { - "uid": "account", + "uid": "auth", "append": true, "watch": true, "script": "server.js", - "sourceDir": "./services/account/server", + "sourceDir": "./services/auth/server", "workingDir": "." }, { "uid": "client", diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 000000000..441e7f7e4 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,154 @@ +var path = require('path'); +var gulp = require('gulp'); +var gutil = require('gulp-util'); +var wrap = require('gulp-wrap'); +var concat = require('gulp-concat'); +var extend = require('gulp-extend'); +var babel = require('gulp-babel'); +var fs = require('fs'); +var merge = require('merge-stream'); +var del = require('del'); +var webpack = require('webpack'); +var WebpackDevServer = require('webpack-dev-server'); + +// Configuration + +var srcDir = './client' +var buildDir = './services/nginx/static'; +var langs = ['es', 'en']; + +var modules = require('./spliting/modules.json'); +var webpackConfig = require('./webpack.config.js'); + +// Clean + +gulp.task('clean', function() { + return del(`${buildDir}/*`, {force: true}); +}); + +// Spliting + +var splitingFiles = './spliting/*'; + +gulp.task('spliting', function() { + var importTpl = fs.readFileSync('./spliting/import.tpl.js', 'utf8'); + var requireTpl = fs.readFileSync('./spliting/require.tpl.js', 'utf8'); + + for(var modName in modules) { + var deps = modules[modName]; + var splitFile = `${srcDir}/${modName}/src/spliting.js`; + + try { + fs.unlinkSync(splitFile); + } + catch(e) {} + + fs.appendFileSync(splitFile, importTpl); + + var i = deps.length; + while(i--) + fs.appendFileSync(splitFile, + requireTpl.replace(/\$module/g, deps[i])); + } +}); + +// Webpack + +gulp.task('webpack', ['spliting'], function(callback) { + var configCopy = Object.create(webpackConfig); + var compiler = webpack(configCopy); + + compiler.run(function(err, stats) { + if (err) throw new gutil.PluginError('webpack', err); + gutil.log('[webpack]', stats.toString({colors: true})); + callback(); + }); +}); + +gulp.task('webpack-dev-server', ['spliting'], function(callback) { + var configCopy = Object.create(webpackConfig); + + for (var entry in configCopy.entry) + configCopy.entry[entry] + .unshift('webpack-dev-server/client?http://0.0.0.0:8081/'); + + var compiler = webpack(configCopy); + var devServer = new WebpackDevServer(compiler, { + publicPath: '/', + contentBase: buildDir, + quiet: false, + noInfo: false, + // hot: true, + stats: { + assets: true, + colors: true, + version: false, + hash: false, + timings: true, + chunks: false, + chunkModules: false + } + }) + .listen(8081, '0.0.0.0', function(err) { + if (err) throw new gutil.PluginError('webpack-dev-server', err); + gutil.log('[webpack-dev-server]', 'Listening'); + }); +}); + +// Locale + +var localeFiles = `./${srcDir}/**/locale/*.json`; + +gulp.task('locales', function() { + var streams = []; + + for(var mod in modules) + for(var lang of langs) { + var localeFiles = `./client/${mod}/**/locale/${lang}.json`; + streams.push(gulp.src(localeFiles) + .pipe(extend(`${lang}.json`)) + .pipe(gulp.dest(`${buildDir}/locale/${mod}`))); + } + + return merge(streams); +}); + +// Routes + +var routeFiles = `./${srcDir}/**/routes.js`; + +gulp.task('routes', function() { + var fileTpl = '\n"<%=dirname%>": <%=contents%>'; + var globalTpl = 'var routes = {<%=contents%>\n}'; + var regex = new RegExp('^(.*)/routes\.js$'); + + function cb(file) { + var relative = file.relative.replace(/\\/g, '/'); + var dirname = relative.match(regex)[1]; + return {dirname: dirname}; + } + + return gulp.src(routeFiles) + .pipe(wrap(fileTpl, cb)) + .pipe(concat('routes.js', {newLine: ','})) + .pipe(wrap(globalTpl)) + .pipe(gulp.dest(buildDir)); +}); + +// Watch + +gulp.task('watch', function() { + gulp.watch(splitingFiles, ['spliting']); + gulp.watch(routeFiles, ['routes']); + gulp.watch(localeFiles, ['locales']); +}); + +// Default + +gulp.task('build', ['clean'], function() { + return gulp.start('routes', 'locales', 'webpack'); +}); + +gulp.task('default', ['clean'], function() { + return gulp.start('watch', 'routes', 'locales', 'webpack-dev-server'); +}); diff --git a/package.json b/package.json new file mode 100644 index 000000000..341dd9311 --- /dev/null +++ b/package.json @@ -0,0 +1,59 @@ +{ + "name": "salix-app", + "version": "1.0.0", + "author": "Verdnatura Levante SL", + "description": "Salix application", + "license": "ISC", + "repository": { + "type": "git", + "url": "http://git.verdnatura.es:/salix" + }, + "dependencies": { + "angular": "^1.5.8", + "angular-paging": "^2.2.2", + "angular-translate": "^2.13.1", + "angular-translate-loader-partial": "^2.13.1", + "angular-ui-router": "^1.0.0-beta.3", + "express": "^4.14.0", + "material-design-lite": "^1.3.0", + "oclazyload": "^0.6.3" + }, + "devDependencies": { + "babel-core": "*", + "babel-loader": "*", + "babel-preset-es2015": "*", + "cors": "^2.8.1", + "css-loader": "^0.25.0", + "del": "^2.2.2", + "eslint": "^3.7.1", + "eslint-config-angular": "^0.5.0", + "eslint-config-google": "^0.6.0", + "eslint-plugin-angular": "^1.4.1", + "file-loader": "^0.9.0", + "gulp": "^3.9.1", + "gulp-babel": "^6.1.2", + "gulp-concat": "^2.6.0", + "gulp-extend": "^0.2.0", + "gulp-insert": "^0.5.0", + "gulp-util": "^3.0.7", + "gulp-wrap": "^0.13.0", + "html-loader": "^0.4.4", + "json-loader": "^0.5.4", + "merge-stream": "^1.0.1", + "node-sass": "^3.11.0", + "pre-commit": "^1.1.3", + "raw-loader": "*", + "sass-loader": "^4.0.2", + "style-loader": "^0.13.1", + "webpack": "^2.2.0", + "webpack-dev-server": "^2.2.0" + }, + "scripts": { + "build": "webpack --progress --colors", + "dev": "webpack-dev-server --progress --colors", + "lint": "eslint ./ --cache --ignore-pattern .gitignore" + }, + "pre-commit": [ + "lint" + ] +} diff --git a/services/account/client/index.ejs b/services/account/client/index.ejs deleted file mode 100644 index f13ef75ca..000000000 --- a/services/account/client/index.ejs +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Salix - - - - - - diff --git a/services/account/.editorconfig b/services/auth/.editorconfig similarity index 100% rename from services/account/.editorconfig rename to services/auth/.editorconfig diff --git a/services/account/.eslintignore b/services/auth/.eslintignore similarity index 100% rename from services/account/.eslintignore rename to services/auth/.eslintignore diff --git a/services/account/.eslintrc b/services/auth/.eslintrc similarity index 100% rename from services/account/.eslintrc rename to services/auth/.eslintrc diff --git a/services/account/.gitignore b/services/auth/.gitignore similarity index 100% rename from services/account/.gitignore rename to services/auth/.gitignore diff --git a/services/account/.yo-rc.json b/services/auth/.yo-rc.json similarity index 100% rename from services/account/.yo-rc.json rename to services/auth/.yo-rc.json diff --git a/services/account/Dockerfile b/services/auth/Dockerfile similarity index 100% rename from services/account/Dockerfile rename to services/auth/Dockerfile diff --git a/services/auth/client/index.ejs b/services/auth/client/index.ejs new file mode 100644 index 000000000..3e3cd7205 --- /dev/null +++ b/services/auth/client/index.ejs @@ -0,0 +1,19 @@ + + + + + Salix + + + + + + + + diff --git a/services/account/package.json b/services/auth/package.json similarity index 88% rename from services/account/package.json rename to services/auth/package.json index f8361d598..5389e29d3 100644 --- a/services/account/package.json +++ b/services/auth/package.json @@ -1,5 +1,5 @@ { - "name": "app", + "name": "login", "version": "1.0.0", "main": "server/server.js", "scripts": { @@ -24,8 +24,8 @@ "nsp": "^2.1.0" }, "repository": { - "type": "", - "url": "" + "type": "git", + "url": "http://git.verdnatura.es:/salix" }, "license": "UNLICENSED", "description": "app" diff --git a/services/account/server/application.json b/services/auth/server/application.json similarity index 100% rename from services/account/server/application.json rename to services/auth/server/application.json diff --git a/services/account/server/boot/createmodel.js b/services/auth/server/boot/createmodel.js similarity index 100% rename from services/account/server/boot/createmodel.js rename to services/auth/server/boot/createmodel.js diff --git a/services/account/server/boot/root.js b/services/auth/server/boot/root.js similarity index 100% rename from services/account/server/boot/root.js rename to services/auth/server/boot/root.js diff --git a/services/account/server/boot/routes.js b/services/auth/server/boot/routes.js similarity index 100% rename from services/account/server/boot/routes.js rename to services/auth/server/boot/routes.js diff --git a/services/account/server/component-config.json b/services/auth/server/component-config.json similarity index 100% rename from services/account/server/component-config.json rename to services/auth/server/component-config.json diff --git a/services/account/server/config.json b/services/auth/server/config.json similarity index 100% rename from services/account/server/config.json rename to services/auth/server/config.json diff --git a/services/account/server/datasources.json b/services/auth/server/datasources.json similarity index 100% rename from services/account/server/datasources.json rename to services/auth/server/datasources.json diff --git a/services/account/server/middleware.development.json b/services/auth/server/middleware.development.json similarity index 100% rename from services/account/server/middleware.development.json rename to services/auth/server/middleware.development.json diff --git a/services/account/server/middleware.json b/services/auth/server/middleware.json similarity index 100% rename from services/account/server/middleware.json rename to services/auth/server/middleware.json diff --git a/services/account/server/model-config.json b/services/auth/server/model-config.json similarity index 100% rename from services/account/server/model-config.json rename to services/auth/server/model-config.json diff --git a/services/account/server/server.js b/services/auth/server/server.js similarity index 100% rename from services/account/server/server.js rename to services/auth/server/server.js diff --git a/services/client/common/models/Address.json b/services/client/common/models/Address.json index 7bd9d2ddb..d12989e15 100644 --- a/services/client/common/models/Address.json +++ b/services/client/common/models/Address.json @@ -34,28 +34,28 @@ }, "default": { "type": "boolean" + } + }, + "relations": { + "agency": { + "type": "belongsTo", + "model": "Agency", + "foreignKey": "id" }, - "relations": { - "agency": { - "type": "belongsTo", - "model": "Agency", - "foreignKey": "agencyId" - }, - "country":{ - "type": "belongsTo", - "model": "Country", - "foreignKey": "countryId" - }, - "province":{ - "type": "belongsTo", - "model": "Province", - "foreignKey": "provinceId" - }, - "client": { - "type": "belongsTo", - "model":"Client", - "foreignKey": "clientId" - } + "country":{ + "type": "belongsTo", + "model": "Country", + "foreignKey": "id" + }, + "province":{ + "type": "belongsTo", + "model": "Province", + "foreignKey": "id" + }, + "client": { + "type": "belongsTo", + "model":"Client", + "foreignKey": "id" } } } diff --git a/services/client/common/models/Client.js b/services/client/common/models/Client.js index 593e5f31e..32c9375fa 100644 --- a/services/client/common/models/Client.js +++ b/services/client/common/models/Client.js @@ -1,16 +1,19 @@ module.exports = function(Client) { //validations - Client.validatesUniquenessOf('name', {message: 'el nombre debe ser unico'}); - Client.validatesUniquenessOf('fi', {message: 'el nif/cif debe ser unico'}); + Client.validatesUniquenessOf('name', {message: 'El nombre debe ser unico'}); + Client.validatesUniquenessOf('fi', {message: 'El nif/cif debe ser unico'}); + Client.validatesPresenceOf('socialName', {message: 'Debe especificarse la razón social'}); + Client.validatesFormatOf('postcode', {with: /^\d+$/, message: 'El código postal solo debe contener números'}); + Client.validatesLengthOf('postcode', {min: 3, max: 10}); - Client.validate('payMethod',hasCC,{message: 'Introduzca el iban del cliente'}); + Client.validate('payMethod', hasCC, {message: 'Introduzca el iban del cliente'}); function hasCC(err) { if (this.payMethod == 2 && !this.iban) err(); }; - Client.validate('payMethod',hasSalesMan,{message: 'No se puede cambiar la forma de pago si no hay comercial asignado'}); + Client.validate('payMethod', hasSalesMan, {message: 'No se puede cambiar la forma de pago si no hay comercial asignado'}); function hasSalesMan(err) { - if (this.payMethod && !this.salesPerson) err(); + if(this.payMethod && !this.salesPerson) err(); }; Client.remoteMethod('activate', @@ -27,7 +30,7 @@ module.exports = function(Client) { Client.activate = function(cb){ var id = 12; Client.findById(id, function(err, client) { - if (!err) { + if(!err) { Client.update({id: client.id}, {active: !client.active}); cb(null, !client.active); } @@ -35,13 +38,14 @@ module.exports = function(Client) { }; // Hooks - Client.observe('before save', function (ctx, next) { - if (ctx.instance) { + Client.observe('before save', function(ctx, next) { + if(ctx.instance) { if (!ctx.instance.dueDay){ ctx.instance.dueDay = 5; } next(); - } else { + } + else { Client.findById(ctx.where.id, function(err, item) { if (!err) { diff --git a/services/client/common/models/Client.json b/services/client/common/models/Client.json index 004e0daf3..7021b82a6 100644 --- a/services/client/common/models/Client.json +++ b/services/client/common/models/Client.json @@ -6,7 +6,11 @@ "id": { "type": "Number", "id": true, - "description": "Identifier" + "description": "Identifier", + "validation": { + "unique": true, + "exportable": false + } }, "name": { "type": "string", @@ -78,30 +82,6 @@ "invoiceByEmail": { "type": "boolean", "description": "Send invoices by email" - }, - "relations": { - "type": { - "salesPerson": { - "type": "belongsTo", - "model": "SalesPerson", - "foreignKey": "salePersonId" - }, - "paymentMethod": { - "type": "belongsTo", - "model": "PaymentMethod", - "foreingKey": "payId" - }, - "country": { - "type": "belongsTo", - "model": "Country", - "foreignKey": "countryId" - }, - "province": { - "type": "belongsTo", - "model": "Province", - "foreignKey": "provinceId" - } - } } }, "validations": [], diff --git a/services/client/common/models/ClientObservation.json b/services/client/common/models/ClientObservation.json index 119759855..09d9cbc32 100644 --- a/services/client/common/models/ClientObservation.json +++ b/services/client/common/models/ClientObservation.json @@ -16,18 +16,18 @@ "creationDate": { "type": "date", "description": "Creation Date" + } + }, + "relations": { + "salesPerson": { + "type": "belongsTo", + "model": "SalesPerson", + "foreignKey": "id" }, - "relations": { - "salesPerson": { - "type": "belongsTo", - "model": "SalesPerson", - "foreignKey": "salePersonId" - }, - "client": { - "model": "Client", - "type": "belongsTo", - "foreignKey": "id" - } + "client": { + "model": "Client", + "type": "belongsTo", + "foreignKey": "id" } } } diff --git a/services/client/package.json b/services/client/package.json index eaa4ab7a3..8374922a7 100644 --- a/services/client/package.json +++ b/services/client/package.json @@ -1,5 +1,5 @@ { - "name": "customer", + "name": "client", "version": "1.0.0", "main": "server/server.js", "scripts": { @@ -28,5 +28,5 @@ "url": "" }, "license": "UNLICENSED", - "description": "customer" + "description": "client" } diff --git a/services/client/server/boot/authentication.js b/services/client/server/boot/authentication.js index 3ca9ee315..7fd9c5509 100644 --- a/services/client/server/boot/authentication.js +++ b/services/client/server/boot/authentication.js @@ -2,5 +2,5 @@ module.exports = function enableAuthentication(server) { // enable authentication - // server.enableAuth(); + // server.enableAuth(); }; diff --git a/services/client/server/boot/root.js b/services/client/server/boot/root.js index 0aa2d58fd..35ea9d574 100644 --- a/services/client/server/boot/root.js +++ b/services/client/server/boot/root.js @@ -3,10 +3,6 @@ module.exports = function(server) { // Install a `/` route that returns server status var router = server.loopback.Router(); - - router.get('/', server.loopback.status()); + router.get('/status', server.loopback.status()); server.use(router); - }; - - diff --git a/services/client/server/boot/validations.js b/services/client/server/boot/validations.js new file mode 100644 index 000000000..96ed6f7db --- /dev/null +++ b/services/client/server/boot/validations.js @@ -0,0 +1,52 @@ +module.exports = function (app) { + function toJson(object) { + let json = {}; + + for(let prop in object) { + let value = object[prop]; + + switch(typeof value) { + case 'object': + if(value instanceof RegExp) + json[prop] = value.toString(); + break; + case 'function': + json[prop] = value.toString(); + break; + default: + json[prop] = value; + } + } + + return json; + } + + app.get('/validations', function (req, res) { + let json = {}; + let models = app.models; + + for(let modelName in models) { + let model = models[modelName]; + + let validations = model.validations; + let jsonValidations = {}; + + for(let fieldName in validations) { + let jsonField = []; + + for(let validation of validations[fieldName]) + jsonField.push(toJson(validation)); + + jsonValidations[fieldName] = jsonField; + } + + json[modelName] = { + properties: model.definition.rawProperties, + validations: jsonValidations + }; + } + + res.set('Content-Type', 'application/json'); + res.send(JSON.stringify(json)); + }) +}; diff --git a/services/nginx/conf-dev.conf b/services/nginx/conf-dev.conf index cf200d04a..e31d2290a 100644 --- a/services/nginx/conf-dev.conf +++ b/services/nginx/conf-dev.conf @@ -29,7 +29,7 @@ http { proxy_pass http://127.0.0.1:8081/$1$is_args$args; } - location ~ ^/account(?:/(.*))?$ { + location ~ ^/auth(?:/(.*))?$ { proxy_pass http://127.0.0.1:3000/$1$is_args$args; } diff --git a/services/nginx/conf-prod.conf b/services/nginx/conf-prod.conf index 5e41d526e..e0c9529b1 100644 --- a/services/nginx/conf-prod.conf +++ b/services/nginx/conf-prod.conf @@ -24,7 +24,7 @@ http { autoindex on; } - location ~ ^/account(?:/(.*))?$ { + location ~ ^/auth(?:/(.*))?$ { proxy_pass http://192.168.99.100:3000/$1$is_args$args; } @@ -32,7 +32,7 @@ http { proxy_pass http://192.168.99.100:3001/$1$is_args$args; } - location ~ ^/customer(?:/(.*))?$ { + location ~ ^/client(?:/(.*))?$ { proxy_pass http://192.168.99.100:3002/$1$is_args$args; } } diff --git a/services/salix/client/index.ejs b/services/salix/client/index.ejs index fe868ad63..ce66446cc 100644 --- a/services/salix/client/index.ejs +++ b/services/salix/client/index.ejs @@ -1,21 +1,25 @@ - - - Salix - - - - - - - + + + Salix + + + + + + + + + diff --git a/services/salix/server/boot/routes.js b/services/salix/server/boot/routes.js index 9146f6e1a..4c80c7e72 100644 --- a/services/salix/server/boot/routes.js +++ b/services/salix/server/boot/routes.js @@ -1,13 +1,13 @@ module.exports = function (app) { - var api_key = app.get('api key'); - var url_account = app.get('url account'); + var apiKey = app.get('api key'); + var authUrl = app.get('url auth'); app.get('/', function (req, res) { if (req.cookies['salix-session']) { res.render('index.ejs'); } else { - res.redirect(url_account + "/?api_key=" + api_key); + res.redirect(`${authUrl}/?api_key=${apiKey}`); } }); @@ -18,24 +18,22 @@ module.exports = function (app) { res.redirect('/salix'); } else { - res.redirect(url_account); + res.redirect(authUrl); } }); - app.get('/config.js', (req, res) => { + app.get('/routes.js', (req, res) => { if (true || req.cookies['salix-session']) { // TODO: construir js dinamico de las rutas //res.set('Content-Type', 'application/javascript'); - //res.send('var routes = {}'); var options = { - //root: '../nginx/static/' root: 'services/nginx/static/' }; - res.sendFile('salix.routes.js', options); + res.sendFile('routes.js', options); } else { res.status(401); - res.send("No autorizado"); + res.send('No autorizado'); } }); }; diff --git a/services/salix/server/server.js b/services/salix/server/server.js index 09427a041..2fb59d86e 100644 --- a/services/salix/server/server.js +++ b/services/salix/server/server.js @@ -7,9 +7,9 @@ var cookieParser = require('cookie-parser'); var app = module.exports = loopback(); - -app.set('api key','salix') // TODO: ver donde se almacena -app.set('url account', '/account'); +// TODO: ver donde se almacena +app.set('api key','salix') +app.set('url auth', '/auth'); app.set('view engine', 'ejs'); app.set('views',path.join(__dirname,'../client')); diff --git a/spliting/import.tpl.js b/spliting/import.tpl.js new file mode 100644 index 000000000..86ad3e68b --- /dev/null +++ b/spliting/import.tpl.js @@ -0,0 +1 @@ +import * as core from 'core'; diff --git a/spliting/modules.json b/spliting/modules.json new file mode 100644 index 000000000..be5adbca5 --- /dev/null +++ b/spliting/modules.json @@ -0,0 +1,6 @@ +{ + "salix": ["client"], + "auth": [], + "core": [], + "client": [] +} diff --git a/spliting/require.tpl.js b/spliting/require.tpl.js new file mode 100644 index 000000000..019cac3f0 --- /dev/null +++ b/spliting/require.tpl.js @@ -0,0 +1,11 @@ + +export const $module = () => { + return new Promise(resolve => { + require.ensure([], () => { + require('$module'); + resolve('$module'); + }, '$module'); + }); +}; + +core.splitingRegister.register('$module', $module); diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 000000000..ca63c1bbb --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,68 @@ + +var webpack = require('webpack'); +var path = require('path'); + +var devMode = process.env.NODE_ENV !== 'production'; + +var config = { + entry: { + 'bundle.salix': ['salix'], + 'bundle.auth': ['auth'], + 'bundle.vendor': ['vendor'] + }, + output: { + path: path.join (__dirname, './services/nginx/static'), + filename: '[name].js', + publicPath: '/static/', + chunkFilename: 'chunk.[name].[chunkhash].js' + }, + module: { + loaders: [ + { + test: /\.js$/, + loader: 'babel-loader', + exclude: /node_modules/, + query: { + presets: ['es2015'] + } + },{ + test: /\.html$/, + loader: 'html-loader' + },{ + test: /\.css$/, + loader: 'style-loader!css-loader' + },{ + test: /\.scss$/, + loader: 'style-loader!css-loader!sass-loader' + },{ + test: /\.(svg|png|ttf)$/, + loader: 'file-loader' + } + ] + }, + resolve: { + modules: [ + path.join(__dirname, 'client'), + __dirname, + 'node_modules', + '/usr/lib/node_modules' + ] + }, + plugins: [ + new webpack.optimize.CommonsChunkPlugin({ + names: ['bundle.vendor', 'bundle.manifest'] + }) + ], + devtool: 'source-map' +}; + +if(!devMode) { + config.plugins.push ( + new webpack.optimize.UglifyJsPlugin({ + minimize: true, + compress: { warnings: false } + }) + ); +} + +module.exports = config;