From bc87a036f5cd89fb74f45815b6c9eefd1a763b39 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Thu, 3 Nov 2016 17:22:25 +0000 Subject: [PATCH 01/27] #878 fix login component documentation and demo --- BROWSER-SUPPORT.md | 3 +- ng2-components/README.md | 2 +- ng2-components/ng2-alfresco-login/README.md | 69 ++++++++++--------- .../ng2-alfresco-login/demo/index.html | 11 ++- .../ng2-alfresco-login/demo/src/main.ts | 49 +++++++++---- .../demo/systemjs.config.js | 2 +- scripts/npm-clean.sh | 6 ++ 7 files changed, 91 insertions(+), 51 deletions(-) diff --git a/BROWSER-SUPPORT.md b/BROWSER-SUPPORT.md index 81fc161283..1b5bd199a3 100644 --- a/BROWSER-SUPPORT.md +++ b/BROWSER-SUPPORT.md @@ -39,13 +39,12 @@ ADF (demo shell) imports by default the following set of recommended polyfills: - - + diff --git a/ng2-components/README.md b/ng2-components/README.md index b31c28df84..4d8702dd16 100644 --- a/ng2-components/README.md +++ b/ng2-components/README.md @@ -76,7 +76,7 @@ npm run build:w ``` -3. Move inside the demo folder and link the component to the local node_modules folder. +3. From another terminal move inside the demo sub folder and link the component to the local node_modules folder. ```sh cd demo diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 38dfda9135..86a1667861 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -47,21 +47,14 @@ Components included: ## Dependencies -Add the following dependency to your index.html: - -```html - -``` - -The following component needs to be added to your systemjs.config: +The following component needs to be added to your systemjs.config.js : - ng2-translate - ng2-alfresco-core - ng2-alfresco-login -Please refer to the following example to have an idea of how your systemjs.config should look like : - -https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-login/demo/systemjs.config.js +Please refer to the following example to have an idea of how your systemjs.config should look this [systemjs.config.js](demo/systemjs +.config.js) . ## Style The style of this component is based on material design, so if you want to visualize it correctly you have to add the material @@ -80,6 +73,11 @@ Also make sure you include these dependencies in your .html page: ``` +## Browser support + +If you need to have a large cross-browser compatibility make sure you include the polyfill necessary for Angular 2, more info at this +[page](/BROWSER-SUPPORT.md) . + ## Basic usage ```html @@ -91,31 +89,28 @@ Example of an App that use Alfresco login component : **main.ts** ```ts -import { Component } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { AlfrescoLoginComponent } from 'ng2-alfresco-login'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService -} from 'ng2-alfresco-core'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { LoginModule } from 'ng2-alfresco-login'; @Component({ selector: 'my-app', - template: ' - - ', - directives: [AlfrescoLoginComponent] + template: ` + + ` }) export class AppComponent { constructor(public auth: AlfrescoAuthenticationService, - alfrescoSettingsService: AlfrescoSettingsService) { - alfrescoSettingsService.host = 'http://myalfrescoip'; + private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080/'; + settingsService.bpmHost = 'http://localhost:9999/'; } mySuccessMethod($event) { @@ -125,15 +120,23 @@ export class AppComponent { myErrorMethod($event) { console.log('Error Login EventEmitt called with: ' + $event.value); } - } -bootstrap(AppComponent, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + LoginModule + ], + declarations: [ AppComponent ], + bootstrap: [ AppComponent ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` + #### Events | Name | Description | diff --git a/ng2-components/ng2-alfresco-login/demo/index.html b/ng2-components/ng2-alfresco-login/demo/index.html index 574e0f1ca0..d9f50e1dc4 100644 --- a/ng2-components/ng2-alfresco-login/demo/index.html +++ b/ng2-components/ng2-alfresco-login/demo/index.html @@ -11,9 +11,18 @@ - + + + + + + + + + + diff --git a/ng2-components/ng2-alfresco-login/demo/src/main.ts b/ng2-components/ng2-alfresco-login/demo/src/main.ts index 7f61445730..8c2604d456 100644 --- a/ng2-components/ng2-alfresco-login/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-login/demo/src/main.ts @@ -25,8 +25,9 @@ import { LoginModule } from 'ng2-alfresco-login'; @Component({ selector: 'my-app', template: ` -
-

+
+ ECM Host:
+ BPM Host:

+

+ +

{{ status }}
- ` + ` }) export class AppComponent { - public ecmHost: string = 'http://devproducts-platform.alfresco.me'; + public ecmHost: string = 'http://devproducts-platform.alfresco.me/alfresco'; + + public bpmHost: string = 'http://devproducts-platform.alfresco.me/activiti'; public ticket: string; @@ -59,15 +70,22 @@ export class AppComponent { public providers: string = 'ECM'; + public disableCsrf: boolean = false; + constructor(public auth: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { settingsService.ecmHost = this.ecmHost; + settingsService.bpmHost = this.bpmHost; } - public updateHost(): void { + public updateEcmHost(): void { this.settingsService.ecmHost = this.ecmHost; } + public updateBpmHost(): void { + this.settingsService.bpmHost = this.bpmHost; + } + mySuccessMethod($event) { console.log('Success Login EventEmitt called with: ' + $event.value); this.status = $event.value; @@ -83,8 +101,8 @@ export class AppComponent { this.providers = 'ALL'; } else if (checked) { this.providers = 'ECM'; - } else { - this.providers = undefined; + } else if (!checked && this.providers === 'ALL') { + this.providers = 'BPM'; } } @@ -93,10 +111,14 @@ export class AppComponent { this.providers = 'ALL'; } else if (checked) { this.providers = 'BPM'; - } else { - this.providers = undefined; + } else if (!checked && this.providers === 'ALL') { + this.providers = 'ECM'; } } + + toggleCSRF() { + this.disableCsrf = !this.disableCsrf; + } } @NgModule({ @@ -105,9 +127,10 @@ export class AppComponent { CoreModule.forRoot(), LoginModule ], - declarations: [ AppComponent ], - bootstrap: [ AppComponent ] + declarations: [AppComponent], + bootstrap: [AppComponent] }) -export class AppModule { } +export class AppModule { +} platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-alfresco-login/demo/systemjs.config.js b/ng2-components/ng2-alfresco-login/demo/systemjs.config.js index d63ad584b3..17ce0975de 100644 --- a/ng2-components/ng2-alfresco-login/demo/systemjs.config.js +++ b/ng2-components/ng2-alfresco-login/demo/systemjs.config.js @@ -38,7 +38,7 @@ defaultExtension: 'js' }, 'ng2-translate': { defaultExtension: 'js' }, - 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'} + 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}, 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-login': { main: './index.js', defaultExtension: 'js'} } diff --git a/scripts/npm-clean.sh b/scripts/npm-clean.sh index 49adc15d9e..9128d0b187 100755 --- a/scripts/npm-clean.sh +++ b/scripts/npm-clean.sh @@ -22,6 +22,12 @@ do echo "====== clean component: ${PACKAGE} =====" cd "$DIR/../ng2-components/${PACKAGE}" npm run clean + + if [ -d "$DIR/../ng2-components/${PACKAGE}/demo" ]; then + echo "====== clean component demo: ${PACKAGE} =====" + cd "$DIR/../ng2-components/${PACKAGE}/demo" + npm run clean + fi done cd "$DIR/../demo-shell-ng2" From e58a5e721aa02a85c4e230525c929a476a7a6082 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Thu, 3 Nov 2016 18:13:01 +0000 Subject: [PATCH 02/27] #878 fix analytics component documentation and demo --- .../ng2-activiti-analytics/README.md | 220 +++++++++++++----- ng2-components/ng2-alfresco-login/README.md | 50 ++-- 2 files changed, 188 insertions(+), 82 deletions(-) diff --git a/ng2-components/ng2-activiti-analytics/README.md b/ng2-components/ng2-activiti-analytics/README.md index ad7db61552..133858421e 100644 --- a/ng2-components/ng2-activiti-analytics/README.md +++ b/ng2-components/ng2-activiti-analytics/README.md @@ -1,4 +1,35 @@ # Activiti Analytics Component for Angular 2 +

+ + travis
+    Status + + + travis
+    Status + + + Coverage Status + + + npm downloads + + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version + +

## Prerequisites @@ -8,97 +39,168 @@ necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng ## Install ```sh -npm install --save ng2-activiti-analytics -``` - -#### Ng2-Charts - -```sh -npm install ng2-charts chart.js --save +npm install ng2-activiti-analytics ng2-charts chart.js moment md-date-time-picker material-design-icons material-design-lite --save ``` Also make sure you include these dependencies in your `index.html` file: ```html - -``` -#### Moment + + -```sh -npm install moment --save -``` + + -Also make sure you include these dependencies in your `index.html` file: + + -```html - -``` - - -#### Material Design Date picker - -```sh -npm install md-date-time-picker --save -``` - -Also make sure you include these dependencies in your `index.html` file: - -```html - -``` - -#### Material Design Lite - -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: - -```sh -npm install --save material-design-icons material-design-lite -``` - -Also make sure you include these dependencies in your `index.html` file: - -```html + ``` +*If you need to have a large cross-browser compatibility make sure you include the polyfill necessary to Angular 2. More info at this +[page](/BROWSER-SUPPORT.md) .* + +## Dependencies + +The following component needs to be added to your systemjs.config.js : + +- ng2-charts +- ng2-translate +- alfresco-js-api +- ng2-alfresco-core +- ng2-activiti-diagrams +- ng2-activiti-analytics + +Please refer to the following example to have an idea of how your systemjs.config should look [systemjs.config.js](demo/systemjs +.config.js) . + ## Basic usage example Activiti Analytics List + The component shows the list of all the available reports + ```html ``` +Example of an App that use Activiti Analytics List component : + +**main.ts** +```ts + +@Component({ + selector: 'activiti-analytics-demo', + template: ` +
+
+
+ +
+
+
` +}) + +export class AnalyticsDemoComponent { + +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + AnalyticsModule + ], + declarations: [ AnalyticsDemoComponent ], + bootstrap: [ AnalyticsDemoComponent ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); + + +``` + #### Events -**onSuccess**: The event is emitted when the report list are loaded
-**onError**: The event is emitted when an error occur during the loading
-**reportClick**: The event is emitted when the report in the list is selected
+ +| Name | Description | +| --- | --- | +|`onSuccess`| The event is emitted when the report list are loaded | +|`onError`| The event is emitted when an error occur during the loading | +|`reportClick`| The event is emitted when the report in the list is selected | #### Options + No options. ## Basic usage example Activiti Analytics + The component shows the charts related to the reportId passed as input + ```html ``` +Example of an App that use Activiti Analytics component : + +**main.ts** +```ts + +@Component({ + selector: 'activiti-analytics-demo', + template: ` +
+
+
+ +
+
+
` +}) + +export class AnalyticsDemoComponent { + +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + AnalyticsModule + ], + declarations: [ AnalyticsDemoComponent ], + bootstrap: [ AnalyticsDemoComponent ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); + + +``` + #### Events -**onSuccess**: The event is emitted when the report parameters are loaded
-**onError**: The event is emitted when an error occur during the loading
+ +| Name | Description | +| --- | --- | +|`onSuccess` | The event is emitted when the report parameters are loaded | +|`onError` | The event is emitted when an error occur during the loading | #### Options -**appId**: The application id
-**reportId**: The report id
-**debug**: Flag to enable or disable the Form values in the console log
+ +| Name | Description | +| --- | --- | +|`appId` | The application id | +|`reportId` | The report id | +|`debug` | Flag to enable or disable the Form values in the console log | ## Build from sources Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build @@ -110,7 +212,7 @@ npm run build $ npm run build:w ``` -### Running unit tests +## Running unit tests ```sh npm test @@ -130,3 +232,17 @@ before performing unit testing. ```sh npm run coverage ``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 86a1667861..dc98a2f6c4 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -31,19 +31,30 @@

-### Node -To correctly use this component check that on your machine is running Node version 5.0.0 or higher. +## Prerequisites + +Before you start using this development framework, make sure you have installed all required software and done all the +necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install ```sh -npm install --save ng2-alfresco-login +npm install ng2-alfresco-login material-design-icons material-design-lite --save ``` -Components included: +Also make sure you include these dependencies in your .html page: -* Alfresco Login Component -* Alfresco Authentication Service +```html + + + + + + +``` + +*If you need to have a large cross-browser compatibility make sure you include the polyfill necessary to Angular 2. More info at this +[page](/BROWSER-SUPPORT.md) .* ## Dependencies @@ -56,28 +67,6 @@ The following component needs to be added to your systemjs.config.js : Please refer to the following example to have an idea of how your systemjs.config should look this [systemjs.config.js](demo/systemjs .config.js) . -## Style -The style of this component is based on material design, so if you want to visualize it correctly you have to add the material -design dependency to your project: - -```sh -npm install --save material-design-icons material-design-lite -``` - -Also make sure you include these dependencies in your .html page: - -```html - - - - -``` - -## Browser support - -If you need to have a large cross-browser compatibility make sure you include the polyfill necessary for Angular 2, more info at this -[page](/BROWSER-SUPPORT.md) . - ## Basic usage ```html @@ -141,8 +130,8 @@ platformBrowserDynamic().bootstrapModule(AppModule); | Name | Description | | --- | --- | -| onSuccess | The event is emitted when the login is done | -| onError | The event is emitted when the login fails | +| `onSuccess` | The event is emitted when the login is done | +| `onError` | The event is emitted when the login fails | Attribute | Description | --- | --- | @@ -182,6 +171,7 @@ Alternatively you can bind to your component properties and provide values dynam ``` #### Customize Validation rules + If needed it is possible customize the validation rules of the login form. You can add/modify the default rules of the login form. From 7cbee40b4adc16f856ab82fa3ff37ef149b7bbea Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Mon, 7 Nov 2016 16:39:34 +0000 Subject: [PATCH 03/27] #878 fix documentation diagrams,login,analytics,core and package.json dependencies --- demo-shell-ng2/app/img/admin.jpeg | Bin 56093 -> 0 bytes demo-shell-ng2/app/img/anonymous.gif | Bin 1765 -> 0 bytes demo-shell-ng2/app/img/background.jpg | Bin 353664 -> 0 bytes demo-shell-ng2/app/img/blank.gif | Bin 43 -> 0 bytes demo-shell-ng2/app/img/checklist.svg | 782 ------------------ demo-shell-ng2/app/img/completed.svg | 20 - demo-shell-ng2/app/img/createvisit.jpg | Bin 8085 -> 0 bytes demo-shell-ng2/app/img/users.png | Bin 114237 -> 0 bytes demo-shell-ng2/app/img/visit.jpg | Bin 147031 -> 0 bytes demo-shell-ng2/app/img/visitor.jpg | Bin 41832 -> 0 bytes .../app/services/notification.service.ts | 31 - .../ng2-activiti-analytics/.npmignore | 1 - .../ng2-activiti-analytics/README.md | 115 ++- .../ng2-activiti-analytics/demo/index.html | 37 +- .../ng2-activiti-analytics/demo/package.json | 31 +- .../ng2-activiti-analytics/demo/src/main.ts | 66 +- .../ng2-activiti-analytics/package.json | 51 +- .../ng2-activiti-diagrams/.npmignore | 1 - .../ng2-activiti-diagrams/README.md | 190 ++++- .../ng2-activiti-diagrams/demo/index.html | 24 +- .../ng2-activiti-diagrams/demo/package.json | 24 +- .../ng2-activiti-diagrams/demo/src/main.ts | 55 +- .../ng2-activiti-diagrams/package.json | 46 +- ng2-components/ng2-activiti-form/.npmignore | 1 - .../ng2-activiti-processlist/.npmignore | 15 + .../ng2-activiti-tasklist/.npmignore | 1 - ng2-components/ng2-alfresco-core/.npmignore | 1 - ng2-components/ng2-alfresco-core/package.json | 13 +- .../ng2-alfresco-datatable/.npmignore | 1 - .../ng2-alfresco-documentlist/.npmignore | 1 - ng2-components/ng2-alfresco-login/.npmignore | 1 - ng2-components/ng2-alfresco-login/README.md | 79 +- .../ng2-alfresco-login/demo/index.html | 1 + .../ng2-alfresco-login/demo/package.json | 23 - .../ng2-alfresco-login/demo/src/main.ts | 4 +- .../ng2-alfresco-login/package.json | 20 +- ng2-components/ng2-alfresco-search/.npmignore | 1 - ng2-components/ng2-alfresco-tag/.npmignore | 15 + ng2-components/ng2-alfresco-upload/.npmignore | 1 - .../ng2-alfresco-userinfo/.npmignore | 15 + ng2-components/ng2-alfresco-viewer/.npmignore | 1 - .../ng2-alfresco-webscript/.npmignore | 15 + 42 files changed, 550 insertions(+), 1133 deletions(-) delete mode 100644 demo-shell-ng2/app/img/admin.jpeg delete mode 100644 demo-shell-ng2/app/img/anonymous.gif delete mode 100644 demo-shell-ng2/app/img/background.jpg delete mode 100644 demo-shell-ng2/app/img/blank.gif delete mode 100644 demo-shell-ng2/app/img/checklist.svg delete mode 100644 demo-shell-ng2/app/img/completed.svg delete mode 100644 demo-shell-ng2/app/img/createvisit.jpg delete mode 100644 demo-shell-ng2/app/img/users.png delete mode 100644 demo-shell-ng2/app/img/visit.jpg delete mode 100644 demo-shell-ng2/app/img/visitor.jpg delete mode 100644 demo-shell-ng2/app/services/notification.service.ts create mode 100644 ng2-components/ng2-activiti-processlist/.npmignore create mode 100644 ng2-components/ng2-alfresco-tag/.npmignore create mode 100644 ng2-components/ng2-alfresco-userinfo/.npmignore create mode 100644 ng2-components/ng2-alfresco-webscript/.npmignore diff --git a/demo-shell-ng2/app/img/admin.jpeg b/demo-shell-ng2/app/img/admin.jpeg deleted file mode 100644 index 0efd7dbd02906933b18ec4199d6e84683f0cd2ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56093 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%0D&SOA&oQ%`e1e{{ZCGl{@lu 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
fE33OdTtjWeZpac167iq~`VH!`*ZqQ(DK-WD*{L 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 diff --git a/demo-shell-ng2/app/img/anonymous.gif b/demo-shell-ng2/app/img/anonymous.gif deleted file mode 100644 index e1b58fa57dfcdfd452ec498c98b930aa905d21d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmb8pizCyC0|4;vcMq|L=guW!Vi%c59pzQG$YVmt(9<&qUk|0_<~^#dpPrfJR`3LkEhFNwuD*UseB%E9NpnxZIwFun4Gh4>giwRA zc0?x^01y1ne**w~537AIAf!0BrjESujDjDc-khY>t=wMO?<%F(;}2yFR74Dt%}a)P zREJt`!8kwqm|RZoeK}|r3IHK##rgzkWXR z#*`{VI@~f{tInV0ukwK$G*WXf9#@J?Z!6r2$!xjap@7u(QUCMI;#?2#}9bcnDw%MSwt8tuX$>-NEJGdr(T*AtL&uqN~#WT z-g_QP^LsP+c=+}i&ztKwm?_}Wl%Vf);6;vy(fFPKq-Krf{zpQvQICg(?Ug@>Nx&U+ zjC*f3!1kFY4zS~t!;(qN5%NIU3H4v3)8o8SJ&}xYli-Iq9S6HVS;BT^QM6I<7xiew zs43F&{rZ7&()90DAGOE2XC;|(F#99fIapv)+E_ML>o!h2H=U!U*6L3=``J^Qqoo7W zf@~)ZW~T7YOjSR6)Sl9&+Nd*+aNRrksZvj^#`9rO9o8rC1d|21)u|F3inL-f#Wi}R<~|kmHN&5; z3B)yYe%YIv8;IuZpFayGV;%0-^uB2NgFe{gg7ft_xj^TT_Y{uR${^)A3ysIpSs39& z9ijG;m}vnKkiUg2%P?vsYQCJO@$_OV@CO0Hu)t)o;|R^??X%tO1-F=8j*)@eCsBO8 zi%eVFsxw-!Lvd0lwD|S>cPa5}M3u<4Tb}T$Ox;$^a_lM*m{i5Pu{oB{h2Ay`Po(Dx zD#N-MNvdBGX_`Lud8}5idh^1LixlXK&^sCJ@PI-IJn*VhrM|k_W5)x{ zzhbeqUP%h#MU{Oa-7EuT&#~1EiAPO=nPq4Rbk@D@* z6M~fh0C=qA2Fx`k=Mt6^izaq#br)QLk3CvAW9%+&^6yXaFr(JLRl%+P{?WF8(;BaX zE{t!)7R`6~pLq*@-8wtlZL#g$h)*e9)U%B{XxYCXGPN_V;k|Z!l;3$33aB3vZ~j!f z8jhOM^$Qdom4h>-B7!MgsLVCNNk__$82?`QspL*0zwl&CWb!J(Q;GX2gTXNKJLh7b zN8^5=;xVjOqw+n`ziQf<^ritlK&M(Z8LjoT%+`GX4nZhrFaHSbxJOg`KARNhh?nMx zGP`u#0?`@`N33T&?%+eSu$L?L=-+paXBat?0s^Lq(6>66KiD9fJaJdGPrldmp)ES9 zq5Q@w&+dWzairp+mQ9lhlYn@l$-pFQ%6Vm;W0F$S`6)^oDnz!UA}W)wZD#Nf-02yE zSxiRiSbJrnHZpS2^QFqWDWYiJ2_&D4GxJTob6game4Rnp4-a8oK0|uY-oP;ACYJg= zfzq$)JUSkdEEQ-FsXFl0O1;D@^(Svq!Dtb~|zD{Xe%&8EA}t;;Z>bJpL9WgQD_~sHG5(h>mr{Irog}T$u=eqGe-Q&yn=bw z7r-~(&JD^vmmxkz!hBa8Ik(`jlhvudkmrW!#)Y{1Gd3YvBL>qqDmh!%F}{e44g(m3 zaqT=bY?~3aCoJ(;oj;Ql3NL$?!}~e$!?~b?QkCYp)qa#vtFm`QZozZZrH&eTD*&+g E7ZAQxl>h($ diff --git a/demo-shell-ng2/app/img/background.jpg b/demo-shell-ng2/app/img/background.jpg deleted file mode 100644 index 792f58a231318f836f6c8a26df6cd435bb5c29ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353664 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%0A` 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
  • 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 CM`k7s1OYiY6w#7F71_bU-^t*SR>3)Q@ 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

    !$x`;TA)T zd7IG@t1NPr()KFIhEh>EzDt6-^t;%^g)9xJ>hiP>?_^FDTRq{aJg4+ufUVPTlKz6z z@&#qoX-SwilC}n|{0!9lJEYeqzRcpp+NhE2gq%~BVZlCD_G^_ym6XzNm)#v6%L+S0 z+8Kcg>cSTC?j=OXxW>R62_-w`+x}0)uFg7%v~t^$uG{cX-g|7!iv;Me;ETQn=aP=i z6xFx#(c>jeBa{0@J6Li`?#u7COu~CyI>rVi*fvZ*6UPLr&a5ZkF10TloufziGzcR5u3txYB{h(@zW$8v=9zyy!mBU2c66k$#FittLWqP z=v)_m+%R_CntUnO&Pi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demo-shell-ng2/app/img/completed.svg b/demo-shell-ng2/app/img/completed.svg deleted file mode 100644 index 84f75fa8a2..0000000000 --- a/demo-shell-ng2/app/img/completed.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - diff --git a/demo-shell-ng2/app/img/createvisit.jpg b/demo-shell-ng2/app/img/createvisit.jpg deleted file mode 100644 index 7505e347e45fc48c61b38817256f2d0d8dbbc5ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8085 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

    YF(6xDp5ieS}~2nfCKdSiuuB=%sUc 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ΜKTq8-{bG2BNFkoPniGy9mC{0Cww$CuP% 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�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 UbHpqxU*steG^MizN_@}%*=dw(qW}N^ diff --git a/demo-shell-ng2/app/img/visitor.jpg b/demo-shell-ng2/app/img/visitor.jpg deleted file mode 100644 index 813426332c72bcd1d6c4dd9a6ce98c866751e327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41832 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 - - notifications = this.notificationsdSource.asObservable(); - - sendNotification(message: string) { - this.notificationsdSource.next(message); - } -} diff --git a/ng2-components/ng2-activiti-analytics/.npmignore b/ng2-components/ng2-activiti-analytics/.npmignore index 16ba3e61e5..c5ca623298 100644 --- a/ng2-components/ng2-activiti-analytics/.npmignore +++ b/ng2-components/ng2-activiti-analytics/.npmignore @@ -1,7 +1,6 @@ npm-debug.log .idea -assets/ coverage/ node_modules typings/ diff --git a/ng2-components/ng2-activiti-analytics/README.md b/ng2-components/ng2-activiti-analytics/README.md index 133858421e..15a5437144 100644 --- a/ng2-components/ng2-activiti-analytics/README.md +++ b/ng2-components/ng2-activiti-analytics/README.md @@ -38,46 +38,69 @@ necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng ## Install -```sh -npm install ng2-activiti-analytics ng2-charts chart.js moment md-date-time-picker material-design-icons material-design-lite --save -``` +Follow the 3 steps below: -Also make sure you include these dependencies in your `index.html` file: +1. Npm -```html + ```sh + npm install ng2-activiti-analytics --save + ``` - - +2. Html - - + Include these dependencies in your index.html page: - - + ```html - - - - + + + -``` + + -*If you need to have a large cross-browser compatibility make sure you include the polyfill necessary to Angular 2. More info at this -[page](/BROWSER-SUPPORT.md) .* + + + + -## Dependencies + + + + -The following component needs to be added to your systemjs.config.js : + + + -- ng2-charts -- ng2-translate -- alfresco-js-api -- ng2-alfresco-core -- ng2-activiti-diagrams -- ng2-activiti-analytics + + + + -Please refer to the following example to have an idea of how your systemjs.config should look [systemjs.config.js](demo/systemjs -.config.js) . + + + + + + + + + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-charts + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-activiti-diagrams + - ng2-activiti-analytics + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage example Activiti Analytics List @@ -92,6 +115,12 @@ Example of an App that use Activiti Analytics List component : **main.ts** ```ts +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { AnalyticsModule } from 'ng2-activiti-analytics'; + @Component({ selector: 'activiti-analytics-demo', template: ` @@ -106,6 +135,17 @@ Example of an App that use Activiti Analytics List component : export class AnalyticsDemoComponent { + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = 'http://localhost:9999'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); + } } @NgModule({ @@ -149,13 +189,19 @@ Example of an App that use Activiti Analytics component : **main.ts** ```ts +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { AnalyticsModule } from 'ng2-activiti-analytics'; + @Component({ selector: 'activiti-analytics-demo', template: `

    ` @@ -163,6 +209,17 @@ Example of an App that use Activiti Analytics component : export class AnalyticsDemoComponent { + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = 'http://localhost:9999'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); + } } @NgModule({ diff --git a/ng2-components/ng2-activiti-analytics/demo/index.html b/ng2-components/ng2-activiti-analytics/demo/index.html index 8d5e80fe31..5251a3000a 100644 --- a/ng2-components/ng2-activiti-analytics/demo/index.html +++ b/ng2-components/ng2-activiti-analytics/demo/index.html @@ -6,35 +6,48 @@ Alfresco Angular 2 Activiti Analytics - Demo + + + + + + + + + + + + - - - + + + + + + + + + + + + - - - - - - - - - + diff --git a/ng2-components/ng2-activiti-analytics/demo/package.json b/ng2-components/ng2-activiti-analytics/demo/package.json index 2b61ee35e2..4315d9da58 100644 --- a/ng2-components/ng2-activiti-analytics/demo/package.json +++ b/ng2-components/ng2-activiti-analytics/demo/package.json @@ -30,34 +30,7 @@ "activiti-diagrams" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - "md-date-time-picker": "^2.2.0", - "raphael": "^2.2.6", - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "ng2-translate": "2.5.0", - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", - "ng2-activiti-diagrams": "^0.3.0", - "ng2-activiti-analytics": "^0.3.0", - "chart.js": "^2.1.4", - "moment": "2.15.1", - "md-date-time-picker": "^2.2.0", - "ng2-charts": "1.1.0" + "ng2-activiti-analytics": "^0.3.0" }, "devDependencies": { "@types/core-js": "^0.9.32", @@ -68,4 +41,4 @@ "typescript": "^2.0.3", "wsrv": "^0.1.5" } -} \ No newline at end of file +} diff --git a/ng2-components/ng2-activiti-analytics/demo/src/main.ts b/ng2-components/ng2-activiti-analytics/demo/src/main.ts index 9afbee493b..f07b5f2668 100644 --- a/ng2-components/ng2-activiti-analytics/demo/src/main.ts +++ b/ng2-components/ng2-activiti-analytics/demo/src/main.ts @@ -15,16 +15,25 @@ * limitations under the License. */ -import { NgModule, Component } from '@angular/core'; +import { NgModule, Component, OnInit } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { CoreModule } from 'ng2-alfresco-core'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; import { AnalyticsModule } from 'ng2-activiti-analytics'; @Component({ selector: 'activiti-analytics-demo', template: ` +
    +
    +
    +

    +
    + Authentication failed to ip {{ host }} with user: admin, admin, you can still try to add a valid ticket to perform + operations. +
    +
    +

    @@ -39,14 +48,56 @@ import { AnalyticsModule } from 'ng2-activiti-analytics';
    ` }) -export class AnalyticsDemoComponent { +export class AnalyticsDemoComponent implements OnInit { appId: number; + report: any; + authenticated: boolean; + + host: string = 'http://localhost:9999'; + + ticket: string; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = this.host; + settingsService.setProviders('BPM'); + + if (this.authService.getTicketBpm()) { + this.ticket = this.authService.getTicketBpm(); + } + } + onReportClick(event: any) { this.report = event; } + + public updateTicket(): void { + localStorage.setItem('ticket-BPM', this.ticket); + } + + public updateHost(): void { + this.settingsService.bpmHost = this.host; + this.login(); + } + + public ngOnInit(): void { + this.login(); + } + + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + this.ticket = this.authService.getTicketBpm(); + this.authenticated = true; + }, + error => { + console.log(error); + this.authenticated = false; + }); + } } @NgModule({ @@ -55,9 +106,10 @@ export class AnalyticsDemoComponent { CoreModule.forRoot(), AnalyticsModule ], - declarations: [ AnalyticsDemoComponent ], - bootstrap: [ AnalyticsDemoComponent ] + declarations: [AnalyticsDemoComponent], + bootstrap: [AnalyticsDemoComponent] }) -export class AppModule { } +export class AppModule { +} platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-activiti-analytics/package.json b/ng2-components/ng2-activiti-analytics/package.json index 211d73bf08..9164585443 100644 --- a/ng2-components/ng2-activiti-analytics/package.json +++ b/ng2-components/ng2-activiti-analytics/package.json @@ -41,51 +41,36 @@ "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "alfresco-js-api": "^0.3.0", - "moment": "2.15.1", "chart.js": "^2.1.4", - "core-js": "^2.4.1", "md-date-time-picker": "^2.2.0", - "ng2-alfresco-core": "0.3.2", - "ng2-activiti-diagrams": "0.3.3", "ng2-charts": "1.1.0", - "ng2-translate": "2.5.0", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23" + "moment": "2.15.1", + + "ng2-alfresco-core": "0.3.2", + "ng2-activiti-diagrams": "0.3.3" }, "devDependencies": { "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", - "cpx": "^1.3.1", - "jasmine-ajax": "^3.2.0", + "cpx": "1.3.1", "jasmine-core": "2.4.1", - "karma": "~0.13.22", - "karma-chrome-launcher": "~1.0.1", - "karma-coverage": "^1.0.0", - "karma-jasmine": "~1.0.2", + "karma": "0.13.22", + "karma-chrome-launcher": "1.0.1", + "karma-coverage": "1.0.0", + "karma-jasmine": "1.0.2", "karma-jasmine-ajax": "^0.1.13", - "karma-jasmine-html-reporter": "^0.2.0", - "karma-mocha-reporter": "^2.0.3", - "license-check": "^1.0.4", - "remap-istanbul": "^0.6.3", + "karma-mocha-reporter": "2.0.3", + "karma-jasmine-html-reporter": "0.2.0", + "license-check": "1.1.5", + "remap-istanbul": "0.6.3", "rimraf": "2.5.2", - "traceur": "^0.0.91", - "tslint": "^3.8.1", + "traceur": "0.0.91", + "tslint": "3.15.1", "typescript": "^2.0.3", - "wsrv": "^0.1.5" + "wsrv": "^0.1.5", + "xo": "0.14.0", + "yargs": "4.7.0" }, "keywords": [ "tag", diff --git a/ng2-components/ng2-activiti-diagrams/.npmignore b/ng2-components/ng2-activiti-diagrams/.npmignore index 16ba3e61e5..c5ca623298 100644 --- a/ng2-components/ng2-activiti-diagrams/.npmignore +++ b/ng2-components/ng2-activiti-diagrams/.npmignore @@ -1,7 +1,6 @@ npm-debug.log .idea -assets/ coverage/ node_modules typings/ diff --git a/ng2-components/ng2-activiti-diagrams/README.md b/ng2-components/ng2-activiti-diagrams/README.md index 051beeca29..651aa9b0f9 100644 --- a/ng2-components/ng2-activiti-diagrams/README.md +++ b/ng2-components/ng2-activiti-diagrams/README.md @@ -1,4 +1,35 @@ # Activiti Diagrams Component for Angular 2 +

    + + travis
+    Status + + + travis
+    Status + + + Coverage Status + + + npm downloads + + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version + +

    ## Prerequisites @@ -7,71 +38,136 @@ necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng ## Install -```sh -npm install --save ng2-activiti-diagrams -``` +Follow the 3 steps below: +1. Npm -### Dependencies + ```sh + npm install ng2-activiti-diagrams --save + ``` -Add the following dependency to your index.html: +2. Html -```html - -``` + Include these dependencies in your index.html page: -The following component needs to be added to your `systemjs.config.js` file: + ```html -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) - -#### raphael - -```sh -npm install raphael --save -``` - -Also make sure you include these dependencies in your `index.html` file: - -```html + -``` + + -#### Material Design Lite + + + + -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + -```sh -npm install --save material-design-icons material-design-lite -``` + + + + -Also make sure you include these dependencies in your `index.html` file: + + + -```html - - - - -``` + + + + + + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-translat + - ng2-alfresco-core + - ng2-activiti-diagrams + - alfresco-js-api + - raphael + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage example Activiti Diagrams -The component shows the diagram of the input process. + +This component shows the diagram of a process. + ```html ``` -#### Events -**onSuccess**: The event is emitted when the diagrams element are loaded +Usage example of this component : -**onError**: The event is emitted when the an error occur during the loading +**main.ts** +```ts + +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { DiagramsModule } from 'ng2-activiti-diagrams'; + +@Component({ + selector: 'activiti-diagrams-demo', + template: `` +}) + +export class DiagramDemoComponent { + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = 'http://localhost:9999'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + DiagramsModule + ], + declarations: [ DiagramDemoComponent ], + bootstrap: [ DiagramDemoComponent ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); + +``` + +#### Events + +| Name | Description | +| --- | --- | +| `onSuccess` | The event is emitted when the diagrams element are loaded | +| `onError` | The event is emitted when the an error occur during the loading | #### Options -**metricPercentages** The array that contains the percentage of the time for each element + +| Name | Description | +| --- | --- | +| `metricPercentage` | The array that contains the percentage of the time for each element | ## Build from sources Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build @@ -83,7 +179,7 @@ npm run build $ npm run build:w ``` -### Running unit tests +## Running unit tests ```sh npm test @@ -103,3 +199,17 @@ before performing unit testing. ```sh npm run coverage ``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-activiti-diagrams/demo/index.html b/ng2-components/ng2-activiti-diagrams/demo/index.html index 96d17103f3..5947d24cd0 100644 --- a/ng2-components/ng2-activiti-diagrams/demo/index.html +++ b/ng2-components/ng2-activiti-diagrams/demo/index.html @@ -6,23 +6,35 @@ Alfresco Angular 2 Activiti Diagrams - Demo + + + + + - - + + + + + + + + + + + + + - - - - - +2. Html -``` + Include these dependencies in your index.html page: -*If you need to have a large cross-browser compatibility make sure you include the polyfill necessary to Angular 2. More info at this -[page](/BROWSER-SUPPORT.md) .* + ```html -## Dependencies + + + + -The following component needs to be added to your systemjs.config.js : + + + -- ng2-translate -- ng2-alfresco-core -- ng2-alfresco-login + + + + -Please refer to the following example to have an idea of how your systemjs.config should look this [systemjs.config.js](demo/systemjs -.config.js) . + + + + + + + + + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-translate + - ng2-alfresco-core + - ng2-alfresco-login + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage +This component allow to authenticate to Alfresco One and Alfresco Activiti. + + ```html ``` -Example of an App that use Alfresco login component : +Usage example of this component : **main.ts** ```ts @@ -133,17 +156,17 @@ platformBrowserDynamic().bootstrapModule(AppModule); | `onSuccess` | The event is emitted when the login is done | | `onError` | The event is emitted when the login fails | -Attribute | Description | ---- | --- | -`onSuccess` | The event is emitted when the login is done | -`onError` | The event is emitted when the login fails | +| Name | Description | +| --- | --- | +| `onSuccess` | The event is emitted when the login is done | +| `onError` | The event is emitted when the login fails | #### Options -Attribute | Options | Default | Description | Mandatory ---- | --- | --- | --- | --- -`providers` | *string* | ECM | Possible valid value are ECM, BPM or ALL. The default behaviour of this component will logged in only in the ECM . If you want log in in both system the correct value to use is ALL | -`disableCsrf` | *boolean* | false | To prevent the CSRF Token from been submitted. Only for Activiti call | +| Name | Options | Default | Description | Mandatory +| --- | --- | --- | --- | --- +| `providers` | *string* | ECM | Possible valid value are ECM, BPM or ALL. The default behaviour of this component will logged in only in the ECM . If you want log in in both system the correct value to use is ALL | +| `disableCsrf` | *boolean* | false | To prevent the CSRF Token from been submitted. Only for Activiti call | ## Custom logo and background diff --git a/ng2-components/ng2-alfresco-login/demo/index.html b/ng2-components/ng2-alfresco-login/demo/index.html index d9f50e1dc4..3d4bce6e84 100644 --- a/ng2-components/ng2-alfresco-login/demo/index.html +++ b/ng2-components/ng2-alfresco-login/demo/index.html @@ -24,6 +24,7 @@ + diff --git a/ng2-components/ng2-alfresco-login/demo/package.json b/ng2-components/ng2-alfresco-login/demo/package.json index 091fdfc9cd..644004358d 100644 --- a/ng2-components/ng2-alfresco-login/demo/package.json +++ b/ng2-components/ng2-alfresco-login/demo/package.json @@ -45,29 +45,6 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - "md-date-time-picker": "^2.2.0", - "moment": "2.15.1", - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "ng2-translate": "2.5.0", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", "ng2-alfresco-login": "^0.3.2" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-login/demo/src/main.ts b/ng2-components/ng2-alfresco-login/demo/src/main.ts index 8c2604d456..c070ab3bee 100644 --- a/ng2-components/ng2-alfresco-login/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-login/demo/src/main.ts @@ -29,6 +29,7 @@ import { LoginModule } from 'ng2-alfresco-login'; ECM Host:
    BPM Host:
    +

    + + travis
+    Status + + + travis
+    Status + + + Coverage Status + + + npm downloads + + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version + +

    ## Prerequisites -Before you start using this development framework, make sure you have installed all required software and done all the +Before you start using this development framework, make sure you have installed all required software and done all the necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-activiti-form -``` +Follow the 3 steps below: -### Dependencies +1. Npm -Add the following dependency to your index.html: + ```sh + npm install ng2-activiti-form --save + ``` -```html - -``` +2. Html -You must separately install the following libraries for your application: - -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) + Include these dependencies in your index.html page: -```sh -npm install --save ng2-translate ng2-alfresco-core -``` + ```html -#### Material Design Lite + + -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + + -```sh -npm install --save material-design-icons material-design-lite -``` + + + + -Also make sure you include these dependencies in your `index.html` file: + + + -```html - - - - -``` -#### Dialogs Polyfill + + + + -To make the dialog working with all the browser you have to add the dialog polyfill to you project: + + + + -```sh -npm install --save dialog-polyfill -``` + + + + + ``` -Also make sure you include these dependencies in your `index.html` file: +3. SystemJs -```html - - - - -``` + Add the following components to your systemjs.config.js file: + + - ng2-translate + - ng2-alfresco-core + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage examples +The component shows a Form from Activiti + +```html + +``` + +Example of an App that use Activiti Analytics List component : + +**main.ts** +```ts + +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { ActivitiFormModule } from 'ng2-activiti-form'; + +@Component({ + selector: 'activiti-app-demo', + template: `` +}) + +export class FormDemoComponent { + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = 'http://localhost:9999'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + ActivitiFormModule.forRoot() + ], + declarations: [FormDemoComponent], + bootstrap: [FormDemoComponent] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); + + +``` + ### Display form instance by task id ```html @@ -138,42 +221,38 @@ The recommended set of properties can be found in the following table: | Name | Type | Default | Description | | --- | --- | --- | --- | -| taskId | string | | Task id to fetch corresponding form and values. | -| formId | string | | The id of the form definition to load and display with custom values. | -| formName | string | | Name of hte form definition to load and display with custom values. | -| data | `FormValues` | | Custom form values map to be used with the rendered form. | -| showTitle | boolean | true | Toggle rendering of the form title. | -| showCompleteButton | boolean | true | Toggle rendering of the `Complete` outcome button. | -| showSaveButton | boolean | true | Toggle rendering of the `Save` outcome button. | -| showDebugButton | boolean | false | Toggle debug options. | -| readOnly | boolean | false | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. | -| showRefreshButton | boolean | true | Toggle rendering of the `Refresh` button. | -| saveMetadata | boolean | false | Store the value of the form as metadata. | -| path | string | | Path of the folder where to store the metadata. | -| nameNode (optional) | string | true | Name to assign to the new node where the metadata are stored. | +| `taskId` | string | | Task id to fetch corresponding form and values. | +| `formId` | string | | The id of the form definition to load and display with custom values. | +| `formName` | string | | Name of hte form definition to load and display with custom values. | +| `data` | FormValues | | Custom form values map to be used with the rendered form. | +| `showTitle` | boolean | true | Toggle rendering of the form title. | +| `showCompleteButton` | boolean | true | Toggle rendering of the `Complete` outcome button. | +| `showSaveButton` | boolean | true | Toggle rendering of the `Save` outcome button. | +| `showDebugButton` | boolean | false | Toggle debug options. | +| `readOnly` | boolean | false | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. | +| `showRefreshButton` | boolean | true | Toggle rendering of the `Refresh` button. | +| `saveMetadata` | boolean | false | Store the value of the form as metadata. | +| `path` | string | | Path of the folder where to store the metadata. | +| `nameNode` (optional) | string | true | Name to assign to the new node where the metadata are stored. | - - * {path} string - path of the folder where the to store the metadata - * - * {nameNode} string (optional) - name of the node stored, if not defined the node will be sotred with an uuid as name #### Advanced properties The following properties are for complex customisation purposes: | Name | Type | Default | Description | | --- | --- | --- | --- | -| form | `FormModel` | | Underlying form model instance. | -| debugMode | boolean | false | Toggle debug mode, allows displaying additional data for development and debugging purposes. | +| `form` | FormModel | | Underlying form model instance. | +| `debugMode` | boolean | false | Toggle debug mode, allows displaying additional data for development and debugging purposes. | ### Events | Name | Description | | --- | --- | -| formLoaded | Invoked when form is loaded or reloaded. | -| formSaved | Invoked when form is submitted with `Save` or custom outcomes. | -| formCompleted | Invoked when form is submitted with `Complete` outcome. | -| executeOutcome | Invoked when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` | -| onError | Invoked at any error | +| `formLoaded` | Invoked when form is loaded or reloaded. | +| `formSaved` | Invoked when form is submitted with `Save` or custom outcomes. | +| `formCompleted` | Invoked when form is submitted with `Complete` outcome. | +| `executeOutcome` | Invoked when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` | +| `onError` | Invoked at any error | All `form*` events receive an instance of the `FormModel` as event argument for ease of development: @@ -242,46 +321,11 @@ There are two additional functions that can be of a great value when controlling **Please note that if `event.preventDefault()` is not called then default outcome behaviour will also be executed after your custom code.** -## Supported form widgets - -Form renderer provides support for all basic widgets: - -- [x] Tabs -- [x] Text -- [x] Multiline Text -- [x] Number -- [x] Checkbox -- [x] Date -- Dropdown - * [x] Manual - * [x] REST service -- [x] Typeahead -- [x] Amount -- Radio buttons - * [x] Manual - * [x] REST service -- [x] People -- [x] Group of People -- [x] Dynamic Table -- [x] Hyperlink -- Header - * [x] Plain header - * [x] Collapsible header -- [x] Attach file ** -- [x] Display value -- [x] Display text - -** Files may be uploaded from a user's device if the file source selected is -'Local file' or 'All sources' and 'link to files' is not selected. Alternatively -you can link to files in a configured Alfresco repository by selecting this source -explicitly from the list and making sure that 'link to files' is selected. Copying -files from Alfresco into Activiti via the control (no linking) is not currently -supported, nor is allowing the user to choose between more than one source. - ## Build from sources Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build @@ -293,7 +337,7 @@ npm run build $ npm run build:w ``` -### Running unit tests +## Running unit tests ```sh npm test @@ -313,3 +357,17 @@ before performing unit testing. ```sh npm run coverage ``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-activiti-form/demo/.gitignore b/ng2-components/ng2-activiti-form/demo/.gitignore new file mode 100644 index 0000000000..25beca4c27 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/.gitignore @@ -0,0 +1,6 @@ +node_modules +.idea +coverage +dist +typings +!systemjs.config.js diff --git a/ng2-components/ng2-activiti-form/demo/.npmignore b/ng2-components/ng2-activiti-form/demo/.npmignore new file mode 100644 index 0000000000..c51c008259 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/.npmignore @@ -0,0 +1,3 @@ +node_modules +dist +typings \ No newline at end of file diff --git a/ng2-components/ng2-activiti-form/demo/README.md b/ng2-components/ng2-activiti-form/demo/README.md new file mode 100644 index 0000000000..3ff7a9b658 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/README.md @@ -0,0 +1,13 @@ +# Activiti Form demo + +Install: + +``` +npm install +``` + +Run the project: + +``` +npm start +``` \ No newline at end of file diff --git a/ng2-components/ng2-activiti-form/demo/index.html b/ng2-components/ng2-activiti-form/demo/index.html new file mode 100644 index 0000000000..e56ebeef76 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/index.html @@ -0,0 +1,55 @@ + + + + + + Alfresco Angular 2 Activiti Form - Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ng2-components/ng2-activiti-form/demo/package.json b/ng2-components/ng2-activiti-form/demo/package.json new file mode 100644 index 0000000000..9d754883ab --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/package.json @@ -0,0 +1,44 @@ +{ + "name": "ng2-activiti-form-demo", + "description": "Alfresco Activiti Form Component - Demo", + "version": "0.1.0", + "author": "Alfresco Software, Ltd.", + "main": "index.js", + "scripts": { + "clean": "npm install rimraf && rimraf dist node_modules typings dist", + "postinstall": "npm run build", + "start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ", + "server": "wsrv -o -s -l", + "build": "npm run tslint && rimraf dist && tsc", + "build:w": "npm run tslint && rimraf dist && tsc -w", + "tsc": "tsc", + "tsc:w": "tsc -w", + "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts" + }, + "license": "Apache-2.0", + "contributors": [ + { + "name": "Mario Romano", + "email": "mario.romano@alfresco.com" + } + ], + "keywords": [ + "ng2", + "angular", + "angular2", + "activiti", + "activiti-form" + ], + "dependencies": { + "ng2-activiti-form": "^0.3.0" + }, + "devDependencies": { + "@types/core-js": "^0.9.32", + "@types/jasmine": "^2.2.33", + "concurrently": "^2.2.0", + "rimraf": "2.5.2", + "tslint": "^3.8.1", + "typescript": "^2.0.3", + "wsrv": "^0.1.5" + } +} diff --git a/ng2-components/ng2-activiti-form/demo/src/main.ts b/ng2-components/ng2-activiti-form/demo/src/main.ts new file mode 100644 index 0000000000..ea35ad17b1 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/src/main.ts @@ -0,0 +1,100 @@ +/*! + * @license + * Copyright 2016 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { NgModule, Component, OnInit } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { ActivitiFormModule } from 'ng2-activiti-form'; + +@Component({ + selector: 'alfresco-app-demo', + template: ` +
    +
    +
    +

    +
    + Authentication failed to ip {{ host }} with user: admin, admin, you can still try to add a valid ticket to perform + operations. +
    +
    + +
    + + ` +}) + +export class FormDemoComponent implements OnInit { + + taskId: number; + + authenticated: boolean; + + host: string = 'http://localhost:9999'; + + ticket: string; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = this.host; + settingsService.setProviders('BPM'); + + if (this.authService.getTicketBpm()) { + this.ticket = this.authService.getTicketBpm(); + } + } + + public updateTicket(): void { + localStorage.setItem('ticket-BPM', this.ticket); + } + + public updateHost(): void { + this.settingsService.bpmHost = this.host; + this.login(); + } + + public ngOnInit(): void { + this.login(); + } + + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + this.ticket = this.authService.getTicketBpm(); + this.authenticated = true; + }, + error => { + console.log(error); + this.authenticated = false; + }); + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + ActivitiFormModule.forRoot() + ], + declarations: [FormDemoComponent], + bootstrap: [FormDemoComponent] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-activiti-form/demo/systemjs.config.js b/ng2-components/ng2-activiti-form/demo/systemjs.config.js new file mode 100644 index 0000000000..3860ed6679 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/systemjs.config.js @@ -0,0 +1,48 @@ +/** + * System configuration for Angular 2 samples + * Adjust as necessary for your application needs. + */ +(function (global) { + System.config({ + paths: { + // paths serve as alias + 'npm:': 'node_modules/' + }, + // map tells the System loader where to look for things + map: { + // our app is within the app folder + app: 'dist', + // angular bundles + '@angular/core': 'npm:@angular/core/bundles/core.umd.js', + '@angular/common': 'npm:@angular/common/bundles/common.umd.js', + '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', + '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', + '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', + '@angular/http': 'npm:@angular/http/bundles/http.umd.js', + '@angular/router': 'npm:@angular/router/bundles/router.umd.js', + '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', + // other libraries + 'rxjs': 'npm:rxjs', + 'moment': 'npm:moment/min/moment.min.js', + 'ng2-translate': 'npm:ng2-translate', + 'alfresco-js-api': 'npm:alfresco-js-api/dist', + 'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist', + 'ng2-activiti-form': 'npm:ng2-activiti-form/dist' + }, + // packages tells the System loader how to load when no filename and/or no extension + packages: { + app: { + main: './main.js', + defaultExtension: 'js' + }, + rxjs: { + defaultExtension: 'js' + }, + 'ng2-translate': { defaultExtension: 'js' }, + 'ng2-charts': { main: 'ng2-charts.js', defaultExtension: 'js'}, + 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}, + 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, + 'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'} + } + }); +})(this); diff --git a/ng2-components/ng2-activiti-form/demo/tsconfig.json b/ng2-components/ng2-activiti-form/demo/tsconfig.json new file mode 100644 index 0000000000..7be35bfec8 --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "sourceMap": true, + "removeComments": true, + "declaration": true, + "noLib": false, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "noImplicitAny": false, + "noImplicitReturns": false, + "noImplicitUseStrict": false, + "noFallthroughCasesInSwitch": true, + "outDir": "dist", + "types": ["core-js", "jasmine", "node"] + }, + "exclude": [ + "demo", + "node_modules", + "dist" + ] +} diff --git a/ng2-components/ng2-activiti-form/demo/tslint.json b/ng2-components/ng2-activiti-form/demo/tslint.json new file mode 100644 index 0000000000..8c9703b9de --- /dev/null +++ b/ng2-components/ng2-activiti-form/demo/tslint.json @@ -0,0 +1,124 @@ +{ + "rules": { + "align": [ + true, + "parameters", + "arguments", + "statements" + ], + "ban": false, + "class-name": true, + "comment-format": [ + true, + "check-space", + "check-lowercase" + ], + "curly": true, + "eofline": true, + "forin": true, + "indent": [ + true, + "spaces" + ], + "interface-name": false, + "jsdoc-format": true, + "label-position": true, + "label-undefined": true, + "max-line-length": [ + true, + 180 + ], + "member-ordering": [ + true, + "public-before-private", + "static-before-instance", + "variables-before-functions" + ], + "no-any": false, + "no-arg": true, + "no-bitwise": true, + "no-conditional-assignment": true, + "no-consecutive-blank-lines": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-constructor-vars": false, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-inferrable-types": false, + "no-internal-module": true, + "no-require-imports": true, + "no-shadowed-variable": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unreachable": true, + "no-unused-expression": true, + "no-unused-variable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "no-var-requires": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "quotemark": [ + true, + "single", + "avoid-escape" + ], + "radix": true, + "semicolon": true, + "switch-default": true, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef": false, + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "use-strict": false, + "variable-name": [ + true, + "check-format", + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [ + true, + "check-branch", + "check-operator", + "check-separator", + "check-type", + "check-module", + "check-decl" + ] + } +} diff --git a/ng2-components/ng2-activiti-form/package.json b/ng2-components/ng2-activiti-form/package.json index f2df68ed03..75c9924e5b 100644 --- a/ng2-components/ng2-activiti-form/package.json +++ b/ng2-components/ng2-activiti-form/package.json @@ -45,27 +45,8 @@ "activiti" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "ng2-translate": "2.5.0", "moment": "2.15.1", "md-date-time-picker": "^2.2.0", - - "alfresco-js-api": "^0.3.0", "ng2-alfresco-core": "0.3.2" }, "devDependencies": { diff --git a/ng2-components/ng2-activiti-processlist/demo/index.html b/ng2-components/ng2-activiti-processlist/demo/index.html index 1fe571c84c..3394cbf243 100644 --- a/ng2-components/ng2-activiti-processlist/demo/index.html +++ b/ng2-components/ng2-activiti-processlist/demo/index.html @@ -24,9 +24,9 @@ - +
    -
    + diff --git a/ng2-components/ng2-activiti-processlist/demo/src/main.ts b/ng2-components/ng2-activiti-processlist/demo/src/main.ts index f6f5f52a6c..930fc783c1 100644 --- a/ng2-components/ng2-activiti-processlist/demo/src/main.ts +++ b/ng2-components/ng2-activiti-processlist/demo/src/main.ts @@ -24,7 +24,7 @@ import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: `


    diff --git a/ng2-components/ng2-activiti-tasklist/demo/index.html b/ng2-components/ng2-activiti-tasklist/demo/index.html index 19590ff9e8..3a6d1f47f0 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/index.html +++ b/ng2-components/ng2-activiti-tasklist/demo/index.html @@ -26,7 +26,7 @@ - + diff --git a/ng2-components/ng2-activiti-tasklist/demo/src/main.ts b/ng2-components/ng2-activiti-tasklist/demo/src/main.ts index 78f34a7513..f01cbd302a 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/src/main.ts +++ b/ng2-components/ng2-activiti-tasklist/demo/src/main.ts @@ -26,7 +26,7 @@ import { ActivitiTaskListModule } from 'ng2-activiti-tasklist'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @Component({ - selector: 'activiti-tasklist-demo', + selector: 'alfresco-app-demo', template: `


    diff --git a/ng2-components/ng2-alfresco-datatable/demo/index.html b/ng2-components/ng2-alfresco-datatable/demo/index.html index c32a86e1e9..c9a7a00b04 100644 --- a/ng2-components/ng2-alfresco-datatable/demo/index.html +++ b/ng2-components/ng2-alfresco-datatable/demo/index.html @@ -26,7 +26,7 @@ - + diff --git a/ng2-components/ng2-alfresco-datatable/demo/src/main.ts b/ng2-components/ng2-alfresco-datatable/demo/src/main.ts index 98cd125fbe..8b9daed126 100644 --- a/ng2-components/ng2-alfresco-datatable/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-datatable/demo/src/main.ts @@ -30,7 +30,7 @@ import { } from 'ng2-alfresco-datatable'; @Component({ - selector: 'alfresco-datatable-demo', + selector: 'alfresco-app-demo', template: `
    diff --git a/ng2-components/ng2-alfresco-documentlist/demo/index.html b/ng2-components/ng2-alfresco-documentlist/demo/index.html index 8d2c80e4b8..46982ae396 100644 --- a/ng2-components/ng2-alfresco-documentlist/demo/index.html +++ b/ng2-components/ng2-alfresco-documentlist/demo/index.html @@ -31,7 +31,7 @@ - + diff --git a/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts b/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts index cd7259ee9f..5e9cc10c94 100644 --- a/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts @@ -32,7 +32,7 @@ import { import { DocumentActionsService } from 'ng2-alfresco-documentlist'; @Component({ - selector: 'alfresco-documentlist-demo', + selector: 'alfresco-app-demo', template: `

    diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 7532894b79..21fd802154 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -69,11 +69,12 @@ Follow the 3 steps below: + - - - - + + + + ``` 3. SystemJs diff --git a/ng2-components/ng2-alfresco-login/demo/index.html b/ng2-components/ng2-alfresco-login/demo/index.html index 3d4bce6e84..919ff26850 100644 --- a/ng2-components/ng2-alfresco-login/demo/index.html +++ b/ng2-components/ng2-alfresco-login/demo/index.html @@ -37,7 +37,7 @@ - + diff --git a/ng2-components/ng2-alfresco-login/demo/src/main.ts b/ng2-components/ng2-alfresco-login/demo/src/main.ts index c070ab3bee..1e270cb86b 100644 --- a/ng2-components/ng2-alfresco-login/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-login/demo/src/main.ts @@ -23,7 +23,7 @@ import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } fr import { LoginModule } from 'ng2-alfresco-login'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: `
    ECM Host:
    diff --git a/ng2-components/ng2-alfresco-search/demo/index.html b/ng2-components/ng2-alfresco-search/demo/index.html index f6b743299f..a4180c26a3 100644 --- a/ng2-components/ng2-alfresco-search/demo/index.html +++ b/ng2-components/ng2-alfresco-search/demo/index.html @@ -26,7 +26,7 @@
    - +
    diff --git a/ng2-components/ng2-alfresco-search/demo/src/main.ts b/ng2-components/ng2-alfresco-search/demo/src/main.ts index 631bc6d216..2259a85d8a 100644 --- a/ng2-components/ng2-alfresco-search/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-search/demo/src/main.ts @@ -30,7 +30,7 @@ import { @Component({ - selector: 'alfresco-search-demo', + selector: 'alfresco-app-demo', template: `


    diff --git a/ng2-components/ng2-alfresco-tag/demo/index.html b/ng2-components/ng2-alfresco-tag/demo/index.html index 309e792adc..0d4cf98d82 100644 --- a/ng2-components/ng2-alfresco-tag/demo/index.html +++ b/ng2-components/ng2-alfresco-tag/demo/index.html @@ -30,7 +30,7 @@ - + diff --git a/ng2-components/ng2-alfresco-tag/demo/src/main.ts b/ng2-components/ng2-alfresco-tag/demo/src/main.ts index 8af97cc33a..519b1f1271 100644 --- a/ng2-components/ng2-alfresco-tag/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-tag/demo/src/main.ts @@ -23,7 +23,7 @@ import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } fr import { TagModule } from 'ng2-alfresco-tag'; @Component({ - selector: 'alfresco-tag-demo', + selector: 'alfresco-app-demo', template: `

    diff --git a/ng2-components/ng2-alfresco-upload/demo/index.html b/ng2-components/ng2-alfresco-upload/demo/index.html index 0de5abaeda..9637c2b781 100644 --- a/ng2-components/ng2-alfresco-upload/demo/index.html +++ b/ng2-components/ng2-alfresco-upload/demo/index.html @@ -28,7 +28,7 @@ - + diff --git a/ng2-components/ng2-alfresco-upload/demo/src/main.ts b/ng2-components/ng2-alfresco-upload/demo/src/main.ts index 0169851cd1..d03a393d23 100644 --- a/ng2-components/ng2-alfresco-upload/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-upload/demo/src/main.ts @@ -23,7 +23,7 @@ import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } fr import { UploadModule } from 'ng2-alfresco-upload'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: `


    diff --git a/ng2-components/ng2-alfresco-userinfo/demo/index.html b/ng2-components/ng2-alfresco-userinfo/demo/index.html index 21b9bde5ee..6d0b272ba6 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/index.html +++ b/ng2-components/ng2-alfresco-userinfo/demo/index.html @@ -26,7 +26,7 @@ - + diff --git a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts index cb56b38c7b..171af79d8d 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts @@ -24,7 +24,7 @@ import { CoreModule } from 'ng2-alfresco-core'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @Component({ - selector: 'alfresco-userinfo-demo', + selector: 'alfresco-app-demo', template: `

    START DEMO USERINFO

    diff --git a/ng2-components/ng2-alfresco-viewer/demo/index.html b/ng2-components/ng2-alfresco-viewer/demo/index.html index 6c6cb39409..322b3edc35 100644 --- a/ng2-components/ng2-alfresco-viewer/demo/index.html +++ b/ng2-components/ng2-alfresco-viewer/demo/index.html @@ -29,7 +29,7 @@ - + diff --git a/ng2-components/ng2-alfresco-viewer/demo/src/main.ts b/ng2-components/ng2-alfresco-viewer/demo/src/main.ts index ec2ea9b2b6..378184d205 100644 --- a/ng2-components/ng2-alfresco-viewer/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-viewer/demo/src/main.ts @@ -22,7 +22,7 @@ import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } fr import { ViewerModule } from 'ng2-alfresco-viewer'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: `

    diff --git a/ng2-components/ng2-alfresco-webscript/demo/index.html b/ng2-components/ng2-alfresco-webscript/demo/index.html index ec2facc018..90435737db 100644 --- a/ng2-components/ng2-alfresco-webscript/demo/index.html +++ b/ng2-components/ng2-alfresco-webscript/demo/index.html @@ -33,7 +33,7 @@ - + diff --git a/ng2-components/ng2-alfresco-webscript/demo/src/main.ts b/ng2-components/ng2-alfresco-webscript/demo/src/main.ts index 186a6ac43c..66b3a8d1f7 100644 --- a/ng2-components/ng2-alfresco-webscript/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-webscript/demo/src/main.ts @@ -24,7 +24,7 @@ import { DataTableModule } from 'ng2-alfresco-datatable'; import { WebScriptModule } from 'ng2-alfresco-webscript'; @Component({ - selector: 'alfresco-webscript-demo', + selector: 'alfresco-app-demo', template: `

    From de97a8a9f36556a0a6524cae61e4c4b2dd87f624 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Mon, 7 Nov 2016 17:42:06 +0000 Subject: [PATCH 05/27] #878 core fix documentation --- ng2-components/ng2-activiti-form/README.md | 2 +- ng2-components/ng2-alfresco-core/README.md | 64 +++++++++++++++++---- ng2-components/ng2-alfresco-login/README.md | 2 +- 3 files changed, 56 insertions(+), 12 deletions(-) diff --git a/ng2-components/ng2-activiti-form/README.md b/ng2-components/ng2-activiti-form/README.md index 6fb4a5fa34..9507d66584 100644 --- a/ng2-components/ng2-activiti-form/README.md +++ b/ng2-components/ng2-activiti-form/README.md @@ -1,4 +1,4 @@ -# Alfresco Login Component for Angular 2 +# Activiti Form Component for Angular 2

    travis
diff --git a/ng2-components/ng2-alfresco-core/README.md b/ng2-components/ng2-alfresco-core/README.md
index a828f4c977..de14e82d01 100644
--- a/ng2-components/ng2-alfresco-core/README.md
+++ b/ng2-components/ng2-alfresco-core/README.md
@@ -1,5 +1,4 @@
-# Alfresco Angular 2 Components core
-
+# Alfresco Login Component for Angular 2
 <p>
   <a title= travis
@@ -15,11 +14,23 @@
   <a href= npm downloads + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version +

    -Core library for other ng2-alfresco components. -This should be added as a dependency for any project using the components. - ## Prerequisites Before you start using this development framework, make sure you have installed all required software and done all the @@ -198,10 +209,43 @@ npm install npm run build ``` -### Additional scripts +## Build from sources -- `npm run build:w` builds the files and keep watching for changes -- `npm test` runs unit tests -- `npm run test-browser` runs unit tests in browser. This task rebuilds all the code, runs tslint, license checks and other quality check tools +Alternatively you can build component from sources with the following commands: + + +```sh +npm install +npm run build +``` + +### Build the files and keep watching for changes + +```sh +$ npm run build:w +``` + +## Running unit tests + +```sh +npm test +``` + +### Running unit tests in browser + +```sh +npm test-browser +``` + +This task rebuilds all the code, runs tslint, license checks and other quality check tools before performing unit testing. -- `npm run coverage` runs code coverage report + +### Code coverage + +```sh +npm run coverage +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 21fd802154..57924643d3 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -1,4 +1,4 @@ -# Alfresco Login Component for Angular 2 +# Alfresco Core Component for Angular 2

    travis

From d80947db3588d9a84221fbfa6e2af9e7e27f1269 Mon Sep 17 00:00:00 2001
From: Mario Romano <dnamario@hotmail.com>
Date: Tue, 8 Nov 2016 15:27:18 +0000
Subject: [PATCH 06/27] #878 process list documentation and demo

---
 .../ng2-activiti-processlist/README.md        | 289 ++++++++++++++----
 .../ng2-activiti-processlist/demo/index.html  |  77 +++--
 .../demo/package.json                         |  31 +-
 .../ng2-activiti-processlist/demo/src/main.ts | 281 ++++++++++++-----
 .../demo/systemjs.config.js                   |   8 +-
 .../ng2-activiti-processlist/package.json     |  19 +-
 .../activiti-processlist.component.ts         |  15 +-
 .../src/models/filter.model.ts                |  78 -----
 .../src/services/activiti-process.service.ts  |  17 +-
 .../ng2-activiti-tasklist/README.md           |   4 +-
 10 files changed, 508 insertions(+), 311 deletions(-)

diff --git a/ng2-components/ng2-activiti-processlist/README.md b/ng2-components/ng2-activiti-processlist/README.md
index 85227b0a49..281362281f 100644
--- a/ng2-components/ng2-activiti-processlist/README.md
+++ b/ng2-components/ng2-activiti-processlist/README.md
@@ -1,4 +1,35 @@
-# Activiti Task List Component for Angular 2
+# Activiti Process List Component for Angular 2
+<p>
+  <a title= + travis
+    Status + + + travis
+    Status + + + Coverage Status + + + npm downloads + + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version + +

    Displays lists of process instances both active and completed, using any defined process filter, and render details of any chosen instance. @@ -10,49 +41,68 @@ necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2 ## Install -```sh -npm install --save ng2-activiti-processlist -``` +Follow the 3 steps below: -### Dependencies +1. Npm -Add the following dependency to your index.html: + ```sh + npm install ng2-activiti-processlist --save + ``` -```html - -``` +2. Html -You must separately install the following libraries for your application: + Include these dependencies in your index.html page: -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) -- [ng2-alfresco-datatable](https://www.npmjs.com/package/ng2-alfresco-datatable) -- [ng2-activiti-tasklist](https://www.npmjs.com/package/ng2-activiti-tasklist) + ```html + + -```sh -npm install --save ng2-translate ng2-alfresco-core ng2-alfresco-datatable ng2-activiti-tasklist -``` + + + + -#### Material Design Lite + + + + -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + -```sh -npm install --save material-design-icons material-design-lite -``` + + + + -Also make sure you include these dependencies in your `index.html` file: + + + + -```html - - - - -``` + + + + -## Usage + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-translate + - ng2-alfresco-core + - ng2-activiti-form + - ng2-activiti-tasklist + - ng2-alfresco-datatable + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . + +## Basic usage ### Activiti Process Instance List @@ -62,33 +112,101 @@ This component renders a list containing all the process instances matched by th ``` +**main.ts** +```ts + +import { NgModule, Component, OnInit } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { UserProcessInstanceFilterRepresentationModel } from 'ng2-activiti-tasklist'; +import { CoreModule } from 'ng2-alfresco-core'; +import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; +import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; + +@Component({ + selector: 'alfresco-app-demo', + template: `` +}) +class MyDemoApp implements OnInit { + + dataProcesses: ObjectDataTableAdapter; + + processInstanceFilterRepresentation: UserProcessInstanceFilterRepresentationModel; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = 'http://localhost:9999'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); + + this.dataProcesses = new ObjectDataTableAdapter([], + [ + {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, + {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} + ] + ); + this.dataProcesses.setSorting(new DataSorting('started', 'desc')); + + this.processInstanceFilterRepresentation = new UserProcessInstanceFilterRepresentationModel({ + appId: '3003', + filter: { + processDefinitionKey: null, + name: null, + state: 'running', + sort: 'created-desc' + } + }); + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + ActivitiProcessListModule + ], + declarations: [MyDemoApp], + bootstrap: [MyDemoApp] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); + + +``` + #### Options -**filter**: { FilterModel } (required) FilterModel object that -is passed to the process instance list API to filter the returned list. +| Name | Description | +| --- | --- | +|`filter`| { UserProcessInstanceFilterRepresentationModel } (required) UserProcessInstanceFilterRepresentationModel object that is passed to the process instance list API to filter the returned list. | Example: ```json { - "id": 4, - "name": "Running Processes", - "recent": false, - "icon": "glyphicon-align-left", - "filter": { - "appDefinitionId": "1", - "sort": "created-desc", - "name": "", - "state": "open", - "page": "0", - "size": "25" - }, - "appId": 1001 + appId: '3003', + filter:{ + processDefinitionKey: null, + name:null, + state:'running', + sort: 'created-desc' + } } ``` -**schemaColumn**: {any} List of columns to display in the process instances datatable +| Name | Description | +| --- | --- | +|`schemaColumn`| {any} List of columns to display in the process instances datatable | Example: @@ -122,17 +240,20 @@ process instances are displayed in the list. #### Options -- **`appId`**: Display filters available to the current user for the application with the specified ID -- **`appName`**: Display filters available to the current user for the application with the specified name +| Name | Description | +| --- | --- | +| `appId` | Display filters available to the current user for the application with the specified ID | +| `appName` | Display filters available to the current user for the application with the specified name | If both `appId` and `appName` are specified then `appName` will take precedence and `appId` will be ignored. #### Events -- **`onSuccess`**: Emitted when the list of filters hase been successfully loaded from the server -- **`onError`**: Emitted when an error occurred fetching the list of process instance filters, or fetching the -list of deployed applications when an app name was specified. -- **`filterClick`**: Emitted when the user selects a filter from the list +| Name | Description | +| --- | --- | +| `onSuccess` | Emitted when the list of filters hase been successfully loaded from the server | +| `onError` | Emitted when an error occurs | +| `ilterClick` | Emitted when the user selects a filter from the list | ### Start Process Button component @@ -145,7 +266,10 @@ to specify some basic details needed to start a new process instance. #### Options -- **`appId`**: Limit the list of processes which can be started to those contained in the specified app + +| Name | Description | +| --- | --- | +| `appId` | Limit the list of processes which can be started to those contained in the specified app | #### Events @@ -161,12 +285,18 @@ This component displays detailed information on a specified process instance #### Options -- **`processInstanceId`** (required): The numeric ID of the process instance to display + +| Name | Description | +| --- | --- | +| `processInstanceId` | (required): The numeric ID of the process instance to display | #### Events -- **`processCancelledEmitter`**: Emitted when the current process is cancelled by the user from within the component -- **`taskFormCompletedEmitter`**: Emitted when the form associated with an active task is completed from within the component + +| Name | Description | +| --- | --- | +| `processCancelledEmitter` | Emitted when the current process is cancelled by the user from within the component | +| `taskFormCompletedEmitter` | Emitted when the form associated with an active task is completed from within the component | ### Process Instance Details Header component @@ -178,11 +308,17 @@ This is a sub-component of the process details component, which renders some gen #### Options -- **`processInstance`** (required): Full details of the process instance to display information about + +| Name | Description | +| --- | --- | +| `processInstance` | (required): Full details of the process instance to display information about | #### Events -- **`processCancelled`**: Emitted when the Cancel Process button shown by the component is clicked + +| Name | Description | +| --- | --- | +| `processCancelled` | Emitted when the Cancel Process button shown by the component is clicked | ### Process Instance Tasks component @@ -194,12 +330,17 @@ Lists both the active and completed tasks associated with a particular process i #### Options -- **`processInstanceId`** (required): The numeric ID of the process instance to display tasks for -- **`showRefreshButton`** (default: `true`): Whether to show a refresh button next to the list of tasks to allow this to be updated from the server + +| Name | Description | +| --- | --- | +| `processInstanceId` | (required): The numeric ID of the process instance to display tasks for | +| `showRefreshButton` | (default: `true`): Whether to show a refresh button next to the list of tasks to allow this to be updated from the server | #### Events -- **`taskFormCompletedEmitter`**: Emitted when the form associated with an active task is completed from within the component +| Name | Description | +| --- | --- | +| `taskFormCompletedEmitter` | Emitted when the form associated with an active task is completed from within the component | ### Process Instance Comments component @@ -211,7 +352,10 @@ Displays comments associated with a particular process instances and allows the #### Options -- **`processInstanceId`** (required): The numeric ID of the process instance to display comments for + +| Name | Description | +| --- | --- | +| `processInstanceId` | (required): The numeric ID of the process instance to display comments for | #### Events @@ -221,6 +365,7 @@ No events are emitted by this component Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build @@ -232,7 +377,7 @@ npm run build $ npm run build:w ``` -### Running unit tests +## Running unit tests ```sh npm test @@ -251,4 +396,18 @@ before performing unit testing. ```sh npm run coverage -``` \ No newline at end of file +``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-activiti-processlist/demo/index.html b/ng2-components/ng2-activiti-processlist/demo/index.html index 3394cbf243..64d933f40c 100644 --- a/ng2-components/ng2-activiti-processlist/demo/index.html +++ b/ng2-components/ng2-activiti-processlist/demo/index.html @@ -1,34 +1,55 @@ - - - - ng2-activiti-processlist Angular 2 - + + + + + Alfresco Angular 2 Activiti Analytics - Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - - - - - - - - - - - - -
    -
    - + + - - diff --git a/ng2-components/ng2-activiti-processlist/demo/package.json b/ng2-components/ng2-activiti-processlist/demo/package.json index 029062ca9d..bdced43f72 100644 --- a/ng2-components/ng2-activiti-processlist/demo/package.json +++ b/ng2-components/ng2-activiti-processlist/demo/package.json @@ -6,11 +6,11 @@ "main": "index.js", "scripts": { "clean": "npm install rimraf && rimraf dist node_modules typings dist", - "postinstall": "npm run typings && npm run build", + "postinstall": "npm run build", "start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ", "server": "wsrv -o -s -l", - "build": "npm run tslint && rimraf dist && npm run tsc", - "build:w": "npm run tslint && rimraf dist && npm run tsc:w", + "build": "npm run tslint && rimraf dist && tsc", + "build:w": "npm run tslint && rimraf dist && tsc -w", "tsc": "tsc", "tsc:w": "tsc -w", "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts" @@ -23,30 +23,7 @@ "demo" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "0.3.2", - "ng2-alfresco-datatable": "0.3.2", - "ng2-activiti-processlist": "^0.3.0", - "ng2-activiti-tasklist": "0.3.3" + "ng2-activiti-processlist": "^0.3.0" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-activiti-processlist/demo/src/main.ts b/ng2-components/ng2-activiti-processlist/demo/src/main.ts index 930fc783c1..252ab72fcf 100644 --- a/ng2-components/ng2-activiti-processlist/demo/src/main.ts +++ b/ng2-components/ng2-activiti-processlist/demo/src/main.ts @@ -12,94 +12,221 @@ * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { NgModule, Component, OnInit } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { CoreModule } from 'ng2-alfresco-core'; -import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; -import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; - -@Component({ - selector: 'alfresco-app-demo', - template: `
    -
    -
    -

    -
    - Authentication failed to ip {{ bpmHost }} with user: admin, admin, you can still try to add a valid token to perform - operations. -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    ` -}) -class MyDemoApp implements OnInit { - - authenticated: boolean; - bpmHost: string = 'http://127.0.0.1:9999'; - token: string; - - constructor( - private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService - ) { - console.log('constructor'); - - settingsService.setProviders('BPM'); - settingsService.bpmHost = this.bpmHost; - - if (this.authService.getTicketBpm()) { - this.token = this.authService.getTicketBpm(); - } - } - - ngOnInit() { - this.login(); - } - - public updateToken(): void { - localStorage.setItem('token', this.token); - } - - public updateHost(): void { - this.settingsService.bpmHost = this.bpmHost; - this.login(); - } - - login() { - this.authService.login('admin', 'admin').subscribe( - token => { - console.log(token); - this.token = token; - this.authenticated = true; - }, - error => { + * limitations under the License. + */ + +import { Input, NgModule, Component, OnInit, ViewChild } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { AppDefinitionRepresentationModel, ActivitiTaskListModule } from 'ng2-activiti-tasklist'; +import { CoreModule } from 'ng2-alfresco-core'; +import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; +import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; + +@Component({ + selector: 'alfresco-app-demo', + template: ` +
    +
    +
    +

    +
    + Authentication failed to ip {{ host }} with user: admin, admin, you can still try to add a valid ticket to perform + operations. +
    +
    + +
    + +
    + + + + +
    + +
    + + + +
    +
    + +
    +
    + + + +
    +
    +
    +
    +
    + Process Filters + + +
    +
    + Process List + +
    +
    + Process Details + +
    +
    +
    +
    +
    + +
    +
    +` +}) +class MyDemoApp implements OnInit { + + authenticated: boolean; + + host: string = 'http://localhost:9999'; + + ticket: string; + + @ViewChild('tabmain') + tabMain: any; + + @ViewChild('tabheader') + tabHeader: any; + + @ViewChild('activitiprocessfilter') + activitiprocessfilter: any; + + @ViewChild('activitiprocesslist') + activitiprocesslist: any; + + @ViewChild('activitiprocessdetails') + activitiprocessdetails: any; + + @Input() + appId: number; + + processFilter: any; + + currentProcessInstanceId: string; + + dataProcesses: ObjectDataTableAdapter; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = this.host; + settingsService.setProviders('BPM'); + + if (this.authService.getTicketBpm()) { + this.ticket = this.authService.getTicketBpm(); + } + + this.dataProcesses = new ObjectDataTableAdapter( + [], + [ + {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, + {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} + ] + ); + this.dataProcesses.setSorting(new DataSorting('started', 'desc')); + } + + public updateTicket(): void { + localStorage.setItem('ticket-BPM', this.ticket); + } + + public updateHost(): void { + this.settingsService.bpmHost = this.host; + this.login(); + } + + public ngOnInit(): void { + this.login(); + } + + login() { + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + this.ticket = this.authService.getTicketBpm(); + this.authenticated = true; + }, + error => { console.log(error); this.authenticated = false; }); } + + onAppClick(app: AppDefinitionRepresentationModel) { + this.appId = app.id; + + this.processFilter = null; + this.currentProcessInstanceId = null; + + this.changeTab('apps', 'processes'); + } + + onProcessFilterClick(event: any) { + this.processFilter = event; + } + + onSuccessProcessFilterList(event: any) { + this.processFilter = this.activitiprocessfilter.getCurrentFilter(); + } + + onSuccessProcessList(event: any) { + this.currentProcessInstanceId = this.activitiprocesslist.getCurrentProcessId(); + } + + onProcessRowClick(processInstanceId) { + this.currentProcessInstanceId = processInstanceId; + } + + processCancelled(data: any) { + this.currentProcessInstanceId = null; + this.activitiprocesslist.reload(); + } + + changeTab(origin: string, destination: string) { + this.tabMain.nativeElement.children[origin].classList.remove('is-active'); + this.tabMain.nativeElement.children[destination].classList.add('is-active'); + + this.tabHeader.nativeElement.children[`${origin}-header`].classList.remove('is-active'); + this.tabHeader.nativeElement.children[`${destination}-header`].classList.add('is-active'); + } + } @NgModule({ imports: [ BrowserModule, CoreModule.forRoot(), - ActivitiProcessListModule + ActivitiProcessListModule, + ActivitiTaskListModule.forRoot() ], - declarations: [ MyDemoApp ], - bootstrap: [ MyDemoApp ] + declarations: [MyDemoApp], + bootstrap: [MyDemoApp] }) -export class AppModule { } +export class AppModule { +} platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js b/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js index 55fb299154..f1fe243137 100644 --- a/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js +++ b/ng2-components/ng2-activiti-processlist/demo/systemjs.config.js @@ -27,7 +27,9 @@ 'alfresco-js-api': 'npm:alfresco-js-api/dist', 'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist', 'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable/dist', - 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist' + 'ng2-activiti-form': 'npm:ng2-activiti-form/dist', + 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist', + 'ng2-activiti-processlist': 'npm:ng2-activiti-processlist/dist' }, // packages tells the System loader how to load when no filename and/or no extension packages: { @@ -42,7 +44,9 @@ 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}, 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-datatable': { main: './index.js', defaultExtension: 'js'}, - 'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'} + 'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'}, + 'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'}, + 'ng2-activiti-processlist': { main: './index.js', defaultExtension: 'js'} } }); })(this); diff --git a/ng2-components/ng2-activiti-processlist/package.json b/ng2-components/ng2-activiti-processlist/package.json index f5d01b1880..a1b22dd415 100644 --- a/ng2-components/ng2-activiti-processlist/package.json +++ b/ng2-components/ng2-activiti-processlist/package.json @@ -44,26 +44,9 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "alfresco-js-api": "^0.3.0", - "core-js": "^2.4.1", "ng2-activiti-tasklist": "0.3.3", "ng2-alfresco-core": "0.3.2", - "ng2-alfresco-datatable": "0.3.2", - "ng2-translate": "2.5.0", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23" + "ng2-alfresco-datatable": "0.3.2" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts index f56e0e2a99..23d9ebf270 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts @@ -15,17 +15,18 @@ * limitations under the License. */ -import {Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; +import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ObjectDataTableAdapter, DataRowEvent, DataTableAdapter, ObjectDataRow } from 'ng2-alfresco-datatable'; +import { TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist'; import { ActivitiProcessService } from '../services/activiti-process.service'; -import { UserProcessInstanceFilterRepresentationModel, TaskQueryRequestRepresentationModel } from '../models/filter.model'; +import { UserProcessInstanceFilterRepresentationModel } from '../models/filter.model'; @Component({ moduleId: module.id, selector: 'activiti-process-instance-list', styles: [ - ` + ` :host h1 { font-size:22px } @@ -60,7 +61,7 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { {type: 'text', key: 'startedBy.email', title: 'Started By', sortable: true} ]; - constructor (private processService: ActivitiProcessService, private translate: AlfrescoTranslationService) { + constructor(private processService: ActivitiProcessService, private translate: AlfrescoTranslationService) { if (translate !== null) { translate.addTranslationFolder('node_modules/ng2-activiti-processlist/src'); } @@ -193,11 +194,13 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { } private convertProcessInstanceToTaskQuery(processFilter: UserProcessInstanceFilterRepresentationModel) { - let requestNode = {appDefinitionId: processFilter.appId, + let requestNode = { + appDefinitionId: processFilter.appId, processDefinitionKey: processFilter.filter.processDefinitionKey, text: processFilter.filter.name, state: processFilter.filter.state, - sort: processFilter.filter.sort}; + sort: processFilter.filter.sort + }; return new TaskQueryRequestRepresentationModel(requestNode); } } diff --git a/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts b/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts index e54579410b..e7fbb1649c 100644 --- a/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts +++ b/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts @@ -15,37 +15,6 @@ * limitations under the License. */ -/** - * - * This object represent the app definition. - * - * - * @returns {AppDefinitionRepresentationModel} . - */ -export class AppDefinitionRepresentationModel { - defaultAppId: string; - deploymentId: string; - name: string; - description: string; - theme: string; - icon: string; - id: number; - modelId: number; - tenantId: number; - - constructor(obj?: any) { - this.defaultAppId = obj && obj.defaultAppId || null; - this.deploymentId = obj && obj.deploymentId || false; - this.name = obj && obj.name || null; - this.description = obj && obj.description || null; - this.theme = obj && obj.theme || null; - this.icon = obj && obj.icon || null; - this.id = obj && obj.id; - this.modelId = obj && obj.modelId; - this.tenantId = obj && obj.tenantId; - } -} - /** * * This object represent the filter. @@ -108,50 +77,3 @@ export class ProcessInstanceFilterRepresentation extends FilterParamRepresentati super(obj); } } - -export class UserTaskFilterRepresentationModel extends FilterRepresentationModel { - public filter: TaskFilterRepresentationModel; - constructor(obj?: any) { - super(obj); - this.filter = new TaskFilterRepresentationModel(obj.filter); - } -} - -export class TaskFilterRepresentationModel extends FilterParamRepresentationModel { - assignment: string; - dueAfter: Date; - dueBefore: Date; - - constructor(obj?: any) { - super(obj); - this.assignment = obj && obj.assignment || null; - this.dueAfter = obj && obj.dueAfter || null; - this.dueBefore = obj && obj.dueBefore || null; - } -} - -export class TaskQueryRequestRepresentationModel { - appDefinitionId: string; - processInstanceId: string; - processDefinitionId: string; - processDefinitionKey: string; - text: string; - assignment: string; - state: string; - sort: string; - page: number; - size: number; - - constructor(obj?: any) { - this.appDefinitionId = obj && obj.appDefinitionId || null; - this.processInstanceId = obj && obj.processInstanceId || null; - this.processDefinitionId = obj && obj.processDefinitionId || null; - this.processDefinitionKey = obj && obj.processDefinitionKey || null; - this.text = obj && obj.text || null; - this.assignment = obj && obj.assignment || null; - this.state = obj && obj.state || null; - this.sort = obj && obj.sort || null; - this.page = obj && obj.page || 0; - this.size = obj && obj.size || 25; - } -} diff --git a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts index 57cc765830..0e36d7ff95 100644 --- a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts +++ b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts @@ -15,13 +15,14 @@ * limitations under the License. */ -import {AlfrescoAuthenticationService} from 'ng2-alfresco-core'; -import {ProcessInstance} from '../models/process-instance'; -import {TaskQueryRequestRepresentationModel, UserProcessInstanceFilterRepresentationModel} from '../models/filter.model'; -import {User} from '../models/user.model'; -import {Comment} from '../models/comment.model'; -import {Injectable} from '@angular/core'; -import {Observable} from 'rxjs/Observable'; +import { AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { ProcessInstance } from '../models/process-instance'; +import { TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist'; +import { UserProcessInstanceFilterRepresentationModel } from '../models/filter.model'; +import { User } from '../models/user.model'; +import { Comment } from '../models/comment.model'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch'; @@ -203,7 +204,7 @@ export class ActivitiProcessService { */ addProcessInstanceComment(id: string, message: string): Observable { return Observable.fromPromise( - this.authService.getAlfrescoApi().activiti.commentsApi.addProcessInstanceComment({message: message}, id) + this.authService.getAlfrescoApi().activiti.commentsApi.addProcessInstanceComment({message: message}, id) ) .map(res => res) .map((response: Comment) => { diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md index b37d316aaf..1146513e41 100644 --- a/ng2-components/ng2-activiti-tasklist/README.md +++ b/ng2-components/ng2-activiti-tasklist/README.md @@ -70,7 +70,7 @@ Also make sure you include these dependencies in your `index.html` file: ## Basic usage example Activiti Task List The component shows the list of all the tasks filter by the -FilterParamModel passed in input. +FilterParamRepresentationModel passed in input. ```html ``` @@ -82,7 +82,7 @@ clicked
    #### Options -**taskFilter**: { FilterParamModel } required) FilterParamModel object that +**taskFilter**: { FilterParamRepresentationModel } required) FilterParamRepresentationModel object that is passed to the task list API to filter the task list. Example: ```json From 74dc82c445b07722420643f8ca081f60be8bdad9 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Tue, 8 Nov 2016 18:37:53 +0000 Subject: [PATCH 07/27] reduce complexity of the code --- .../activiti/activiti-demo.component.ts | 3 +- .../ng2-activiti-processlist/demo/index.html | 2 +- .../assets/activiti-process.service.mock.ts | 8 +- .../components/activiti-comments.component.ts | 2 +- .../components/activiti-filters.component.ts | 2 +- ...tiviti-process-instance-tasks.component.ts | 2 +- .../activiti-processlist.component.ts | 7 +- .../src/models/comment.model.ts | 38 --- .../src/models/filter.model.ts | 79 ------ .../src/models/task-details.model.ts | 92 ------- .../src/services/activiti-process.service.ts | 53 ++-- .../ng2-activiti-tasklist/demo/index.html | 29 ++- .../ng2-activiti-tasklist/demo/package.json | 23 -- .../ng2-activiti-tasklist/demo/src/main.ts | 236 +++++++++++++----- ng2-components/ng2-activiti-tasklist/index.ts | 2 +- .../ng2-activiti-tasklist/package.json | 19 +- .../activiti-tasklist.component.spec.ts | 10 +- .../components/activiti-tasklist.component.ts | 12 +- .../src/models/filter.model.ts | 35 +-- .../src/models/index.ts} | 26 +- .../activiti-tasklist.service.spec.ts | 6 +- .../src/services/activiti-tasklist.service.ts | 48 ++-- 22 files changed, 287 insertions(+), 447 deletions(-) delete mode 100644 ng2-components/ng2-activiti-processlist/src/models/comment.model.ts delete mode 100644 ng2-components/ng2-activiti-processlist/src/models/filter.model.ts delete mode 100644 ng2-components/ng2-activiti-processlist/src/models/task-details.model.ts rename ng2-components/{ng2-activiti-processlist/src/models/user.model.ts => ng2-activiti-tasklist/src/models/index.ts} (61%) diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts index 19fcc8b356..012fb544a9 100644 --- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts +++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts @@ -19,7 +19,6 @@ import { Component, AfterViewChecked, ViewChild, Input } from '@angular/core'; import { AppDefinitionRepresentationModel, FilterRepresentationModel, - UserTaskFilterRepresentationModel, ActivitiApps, ActivitiTaskList } from 'ng2-activiti-tasklist'; @@ -153,7 +152,7 @@ export class ActivitiDemoComponent implements AfterViewChecked { this.activititasklist.reload(); } - onSuccessTaskList(event: UserTaskFilterRepresentationModel) { + onSuccessTaskList(event: FilterRepresentationModel) { this.currentTaskId = this.activititasklist.getCurrentTaskId(); } diff --git a/ng2-components/ng2-activiti-processlist/demo/index.html b/ng2-components/ng2-activiti-processlist/demo/index.html index 64d933f40c..fe525218aa 100644 --- a/ng2-components/ng2-activiti-processlist/demo/index.html +++ b/ng2-components/ng2-activiti-processlist/demo/index.html @@ -3,7 +3,7 @@ - Alfresco Angular 2 Activiti Analytics - Demo + Alfresco Angular 2 Activiti Process - Demo diff --git a/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts b/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts index e8890a20c7..9519380532 100644 --- a/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts +++ b/ng2-components/ng2-activiti-processlist/src/assets/activiti-process.service.mock.ts @@ -15,11 +15,11 @@ * limitations under the License. */ -import { UserProcessInstanceFilterRepresentationModel } from '../models/filter.model'; +import { FilterRepresentationModel } from 'ng2-activiti-tasklist'; export var fakeFilters = { size: 0, total: 0, start: 0, - data: [new UserProcessInstanceFilterRepresentationModel({ + data: [new FilterRepresentationModel({ 'name': 'Running', 'appId': '22', 'recent': true, @@ -30,14 +30,14 @@ export var fakeFilters = { export var fakeEmptyFilters = { size: 0, total: 0, start: 0, - data: [ ] + data: [] }; export var fakeApi = { activiti: { userFiltersApi: { getUserProcessInstanceFilters: (filterOpts) => Promise.resolve({}), - createUserProcessInstanceFilter: (filter: UserProcessInstanceFilterRepresentationModel) => Promise.resolve(filter) + createUserProcessInstanceFilter: (filter: FilterRepresentationModel) => Promise.resolve(filter) } } }; diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-comments.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-comments.component.ts index b9294d69ef..29683e609a 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-comments.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-comments.component.ts @@ -18,7 +18,7 @@ import { Component, Input, OnInit, ViewChild, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ActivitiProcessService } from './../services/activiti-process.service'; -import { Comment } from '../models/comment.model'; +import { Comment } from 'ng2-activiti-tasklist'; import { Observer } from 'rxjs/Observer'; import { Observable } from 'rxjs/Observable'; diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts index 4b8dd6f8ae..05a0a77504 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-filters.component.ts @@ -18,7 +18,7 @@ import { Component, Output, EventEmitter, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ActivitiProcessService } from './../services/activiti-process.service'; -import { FilterRepresentationModel } from '../models/filter.model'; +import { FilterRepresentationModel } from 'ng2-activiti-tasklist'; import { Observable, Observer } from 'rxjs/Rx'; declare let componentHandler: any; diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts index ab088157b0..90e9d21fe5 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-process-instance-tasks.component.ts @@ -18,7 +18,7 @@ import { Component, Input, OnInit, ViewChild, Output, EventEmitter } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ActivitiProcessService } from './../services/activiti-process.service'; -import { TaskDetailsModel } from '../models/task-details.model'; +import { TaskDetailsModel } from 'ng2-activiti-tasklist'; import { Observable, Observer } from 'rxjs/Rx'; import { DatePipe } from '@angular/common'; diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts index 23d9ebf270..2146a0a345 100644 --- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts +++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts @@ -18,9 +18,8 @@ import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core'; import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ObjectDataTableAdapter, DataRowEvent, DataTableAdapter, ObjectDataRow } from 'ng2-alfresco-datatable'; -import { TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist'; +import { TaskQueryRequestRepresentationModel, FilterRepresentationModel } from 'ng2-activiti-tasklist'; import { ActivitiProcessService } from '../services/activiti-process.service'; -import { UserProcessInstanceFilterRepresentationModel } from '../models/filter.model'; @Component({ moduleId: module.id, @@ -37,7 +36,7 @@ import { UserProcessInstanceFilterRepresentationModel } from '../models/filter.m export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { @Input() - filter: UserProcessInstanceFilterRepresentationModel; + filter: FilterRepresentationModel; @Input() data: DataTableAdapter; @@ -193,7 +192,7 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges { return tasks; } - private convertProcessInstanceToTaskQuery(processFilter: UserProcessInstanceFilterRepresentationModel) { + private convertProcessInstanceToTaskQuery(processFilter: FilterRepresentationModel) { let requestNode = { appDefinitionId: processFilter.appId, processDefinitionKey: processFilter.filter.processDefinitionKey, diff --git a/ng2-components/ng2-activiti-processlist/src/models/comment.model.ts b/ng2-components/ng2-activiti-processlist/src/models/comment.model.ts deleted file mode 100644 index d275e7ca1e..0000000000 --- a/ng2-components/ng2-activiti-processlist/src/models/comment.model.ts +++ /dev/null @@ -1,38 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - * Comment submitted against a process - * - * @returns {Comment} . - */ -import { User } from './user.model'; - -export class Comment { - id: number; - message: string; - created: string; - createdBy: User; - - constructor(id: number, message: string, created: string, createdBy: User) { - this.id = id; - this.message = message; - this.created = created; - this.createdBy = createdBy; - } -} diff --git a/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts b/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts deleted file mode 100644 index e7fbb1649c..0000000000 --- a/ng2-components/ng2-activiti-processlist/src/models/filter.model.ts +++ /dev/null @@ -1,79 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - * This object represent the filter. - * - * - * @returns {FilterRepresentationModel} . - */ -export class FilterRepresentationModel { - id: number; - appId: string; - name: string; - recent: boolean; - icon: string; - filter: FilterParamRepresentationModel; - index: number; - - constructor(obj?: any) { - this.appId = obj && obj.appId || null; - this.name = obj && obj.name || null; - this.recent = obj && obj.recent || false; - this.icon = obj && obj.icon || null; - this.filter = new FilterParamRepresentationModel(obj.filter); - this.index = obj && obj.index; - } -} - -/** - * - * This object represent the parameters of a filter. - * - * - * @returns {FilterParamRepresentationModel} . - */ -export class FilterParamRepresentationModel { - processDefinitionId: string; - processDefinitionKey: string; - name: string; - state: string; - sort: string; - - constructor(obj?: any) { - this.processDefinitionId = obj && obj.processDefinitionId || null; - this.processDefinitionKey = obj && obj.processDefinitionKey || null; - this.name = obj && obj.name || null; - this.state = obj && obj.state || null; - this.sort = obj && obj.sort || null; - } -} - -export class UserProcessInstanceFilterRepresentationModel extends FilterRepresentationModel { - public filter: ProcessInstanceFilterRepresentation; - constructor(obj?: any) { - super(obj); - this.filter = new ProcessInstanceFilterRepresentation(obj.filter); - } -} - -export class ProcessInstanceFilterRepresentation extends FilterParamRepresentationModel { - constructor(obj?: any) { - super(obj); - } -} diff --git a/ng2-components/ng2-activiti-processlist/src/models/task-details.model.ts b/ng2-components/ng2-activiti-processlist/src/models/task-details.model.ts deleted file mode 100644 index 0b13c30c15..0000000000 --- a/ng2-components/ng2-activiti-processlist/src/models/task-details.model.ts +++ /dev/null @@ -1,92 +0,0 @@ -/*! - * @license - * Copyright 2016 Alfresco Software, Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - * This object represent the details of a task. - * - * - * @returns {TaskDetailsModel} . - */ -import { User } from './user.model'; - -export class TaskDetailsModel { - id: string; - name: string; - assignee: User; - priority: number; - adhocTaskCanBeReassigned: number; - category: string; - created: string; - description: string; - dueDate: string; - duration: string; - endDate: string; - executionId: string; - formKey: string; - initiatorCanCompleteTask: boolean = false; - managerOfCandidateGroup: boolean = false; - memberOfCandidateGroup: boolean = false; - memberOfCandidateUsers: boolean = false; - involvedPeople: User []; - parentTaskId: string; - parentTaskName: string; - processDefinitionCategory: string; - processDefinitionDeploymentId: string; - processDefinitionDescription: string; - processDefinitionId: string; - processDefinitionKey: string; - processDefinitionName: string; - processDefinitionVersion: number = 0; - processInstanceId: string; - processInstanceName: string; - processInstanceStartUserId: string; - taskDefinitionKey: string; - - constructor(obj: any) { - this.id = obj.id; - this.name = obj.name; - this.priority = obj.priority; - this.assignee = new User(obj.assignee.id, obj.assignee.email, obj.assignee.firstName, obj.assignee.lastName); - this.adhocTaskCanBeReassigned = obj.adhocTaskCanBeReassigned; - this.created = obj.created; - this.description = obj.description; - this.dueDate = obj.dueDate; - this.duration = obj.duration; - this.endDate = obj.endDate; - this.executionId = obj.executionId; - this.formKey = obj.formKey; - this.initiatorCanCompleteTask = obj.initiatorCanCompleteTask; - this.managerOfCandidateGroup = obj.managerOfCandidateGroup; - this.memberOfCandidateGroup = obj.memberOfCandidateGroup; - this.memberOfCandidateUsers = obj.memberOfCandidateUsers; - this.involvedPeople = obj.involvedPeople; - this.parentTaskId = obj.parentTaskId; - this.parentTaskName = obj.parentTaskName; - this.processDefinitionCategory = obj.processDefinitionCategory; - this.processDefinitionDeploymentId = obj.processDefinitionDeploymentId; - this.processDefinitionDescription = obj.processDefinitionDescription; - this.processDefinitionId = obj.processDefinitionId; - this.processDefinitionKey = obj.processDefinitionKey; - this.processDefinitionName = obj.processDefinitionName; - this.processDefinitionVersion = obj.processDefinitionVersion; - this.processInstanceId = obj.processInstanceId; - this.processInstanceName = obj.processInstanceName; - this.processInstanceStartUserId = obj.processInstanceStartUserId; - this.taskDefinitionKey = obj.taskDefinitionKey; - } -} diff --git a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts index 0e36d7ff95..7446afd5f8 100644 --- a/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts +++ b/ng2-components/ng2-activiti-processlist/src/services/activiti-process.service.ts @@ -17,10 +17,7 @@ import { AlfrescoAuthenticationService } from 'ng2-alfresco-core'; import { ProcessInstance } from '../models/process-instance'; -import { TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist'; -import { UserProcessInstanceFilterRepresentationModel } from '../models/filter.model'; -import { User } from '../models/user.model'; -import { Comment } from '../models/comment.model'; +import { User, Comment, FilterRepresentationModel, TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; @@ -62,9 +59,9 @@ export class ActivitiProcessService { } : {}; return Observable.fromPromise(this.callApiGetUserProcessInstanceFilters(filterOpts)) .map((response: any) => { - let filters: UserProcessInstanceFilterRepresentationModel[] = []; - response.data.forEach((filter: UserProcessInstanceFilterRepresentationModel) => { - let filterModel = new UserProcessInstanceFilterRepresentationModel(filter); + let filters: FilterRepresentationModel[] = []; + response.data.forEach((filter: FilterRepresentationModel) => { + let filterModel = new FilterRepresentationModel(filter); filters.push(filterModel); }); if (response && response.data && response.data.length === 0) { @@ -78,10 +75,10 @@ export class ActivitiProcessService { /** * Create and return the default filters * @param appId - * @returns {UserProcessInstanceFilterRepresentationModel[]} + * @returns {FilterRepresentationModel[]} */ - private createDefaultFilters(appId: string): UserProcessInstanceFilterRepresentationModel[] { - let filters: UserProcessInstanceFilterRepresentationModel[] = []; + private createDefaultFilters(appId: string): FilterRepresentationModel[] { + let filters: FilterRepresentationModel[] = []; let involvedTasksFilter = this.getRunningFilterInstance(appId); this.addFilter(involvedTasksFilter); @@ -101,10 +98,10 @@ export class ActivitiProcessService { /** * Return a static Running filter instance * @param appId - * @returns {UserProcessInstanceFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - private getRunningFilterInstance(appId: string): UserProcessInstanceFilterRepresentationModel { - return new UserProcessInstanceFilterRepresentationModel({ + private getRunningFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'Running', 'appId': appId, 'recent': true, @@ -116,10 +113,10 @@ export class ActivitiProcessService { /** * Return a static Completed filter instance * @param appId - * @returns {UserProcessInstanceFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - private getCompletedFilterInstance(appId: string): UserProcessInstanceFilterRepresentationModel { - return new UserProcessInstanceFilterRepresentationModel({ + private getCompletedFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'Completed', 'appId': appId, 'recent': false, @@ -131,10 +128,10 @@ export class ActivitiProcessService { /** * Return a static All filter instance * @param appId - * @returns {UserProcessInstanceFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - private getAllFilterInstance(appId: string): UserProcessInstanceFilterRepresentationModel { - return new UserProcessInstanceFilterRepresentationModel({ + private getAllFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'All', 'appId': appId, 'recent': true, @@ -145,13 +142,13 @@ export class ActivitiProcessService { /** * Add a filter - * @param filter - UserProcessInstanceFilterRepresentationModel - * @returns {UserProcessInstanceFilterRepresentationModel} + * @param filter - FilterRepresentationModel + * @returns {FilterRepresentationModel} */ - addFilter(filter: UserProcessInstanceFilterRepresentationModel): Observable { + addFilter(filter: FilterRepresentationModel): Observable { return Observable.fromPromise(this.callApiAddFilter(filter)) .map(res => res) - .map((response: UserProcessInstanceFilterRepresentationModel) => { + .map((response: FilterRepresentationModel) => { return response; }).catch(this.handleError); } @@ -188,8 +185,12 @@ export class ActivitiProcessService { .map((response: any) => { let comments: Comment[] = []; response.data.forEach((comment) => { - let user = new User( - comment.createdBy.id, comment.createdBy.email, comment.createdBy.firstName, comment.createdBy.lastName); + let user = new User({ + id: comment.createdBy.id, + email: comment.createdBy.email, + firstName: comment.createdBy.firstName, + lastName: comment.createdBy.lastName + }); comments.push(new Comment(comment.id, comment.message, comment.created, user)); }); return comments; @@ -252,7 +253,7 @@ export class ActivitiProcessService { return this.authService.getAlfrescoApi().activiti.userFiltersApi.getUserProcessInstanceFilters(filterOpts); } - private callApiAddFilter(filter: UserProcessInstanceFilterRepresentationModel) { + private callApiAddFilter(filter: FilterRepresentationModel) { return this.authService.getAlfrescoApi().activiti.userFiltersApi.createUserProcessInstanceFilter(filter); } diff --git a/ng2-components/ng2-activiti-tasklist/demo/index.html b/ng2-components/ng2-activiti-tasklist/demo/index.html index 3a6d1f47f0..eff28149d9 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/index.html +++ b/ng2-components/ng2-activiti-tasklist/demo/index.html @@ -2,18 +2,38 @@ - Angular 2 TaskList - Demo + + Alfresco Angular 2 Activiti Tasks - Demo + + + + + + + + - - + + + + + + + + + + + + + @@ -24,6 +44,9 @@ + + + diff --git a/ng2-components/ng2-activiti-tasklist/demo/package.json b/ng2-components/ng2-activiti-tasklist/demo/package.json index 33953f8e14..6c9f03aab6 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/package.json +++ b/ng2-components/ng2-activiti-tasklist/demo/package.json @@ -16,29 +16,6 @@ }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "ng2-translate": "2.5.0", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-datatable": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", "ng2-activiti-tasklist": "0.3.3" }, "devDependencies": { diff --git a/ng2-components/ng2-activiti-tasklist/demo/src/main.ts b/ng2-components/ng2-activiti-tasklist/demo/src/main.ts index f01cbd302a..8a72ded2bb 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/src/main.ts +++ b/ng2-components/ng2-activiti-tasklist/demo/src/main.ts @@ -15,79 +15,159 @@ * limitations under the License. */ -import { NgModule, Component, OnInit, ViewChild } from '@angular/core'; +import { Input, NgModule, Component, OnInit, ViewChild } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - +import { AppDefinitionRepresentationModel, ActivitiTaskListModule } from 'ng2-activiti-tasklist'; import { CoreModule } from 'ng2-alfresco-core'; -import { DataTableModule } from 'ng2-alfresco-datatable'; -import { ActivitiTaskListModule } from 'ng2-activiti-tasklist'; - +import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; @Component({ selector: 'alfresco-app-demo', - template: `
    -
    -
    -

    -
    - Authentication failed to ip {{ bpmHost }} with user: admin, admin, you can still try to add a valid token to perform - operations. -
    -
    -
    - Task Filters - - Tasks - - Task Details - -
    `, - styles: [ - ':host > .container {padding: 10px}', - '.p-10 { padding: 10px; }' - ] + template: ` +
    +
    +
    +

    +
    + Authentication failed to ip {{ host }} with user: admin, admin, you can still try to add a valid ticket to perform + operations. +
    +
    + +
    + +
    + + + + +
    + +
    + + + +
    +
    + +
    +
    + + + +
    +
    +
    +
    +
    + Process Filters + + +
    +
    + Process List + +
    +
    + Process Details + +
    +
    +
    +
    +
    + +
    +
    +` }) -class ActivitiTaskListDemo implements OnInit { - - @ViewChild('activititasklist') - activititasklist: any; - - @ViewChild('activitidetails') - activitidetails: any; - - bpmHost: string = 'http://127.0.0.1:9999'; - - token: string; +class MyDemoApp implements OnInit { authenticated: boolean; - schemaColumn: any [] = []; + host: string = 'http://localhost:9999'; - currentTaskId: string; + ticket: string; - taskFilter: any; + @ViewChild('tabmain') + tabMain: any; - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - this.settingsService.setProviders('BPM'); + @ViewChild('tabheader') + tabHeader: any; + + @ViewChild('activitiprocessfilter') + activitiprocessfilter: any; + + @ViewChild('activitiprocesslist') + activitiprocesslist: any; + + @ViewChild('activitiprocessdetails') + activitiprocessdetails: any; + + @Input() + appId: number; + + processFilter: any; + + currentProcessInstanceId: string; + + dataProcesses: ObjectDataTableAdapter; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = this.host; + settingsService.setProviders('BPM'); + + if (this.authService.getTicketBpm()) { + this.ticket = this.authService.getTicketBpm(); + } + + this.dataProcesses = new ObjectDataTableAdapter( + [], + [ + {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, + {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} + ] + ); + this.dataProcesses.setSorting(new DataSorting('started', 'desc')); } - ngOnInit() { - this.login(); + public updateTicket(): void { + localStorage.setItem('ticket-BPM', this.ticket); + } - this.schemaColumn = [ - {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true} - ]; + public updateHost(): void { + this.settingsService.bpmHost = this.host; + this.login(); + } + + public ngOnInit(): void { + this.login(); } login() { this.authService.login('admin', 'admin').subscribe( - token => { - console.log(token); - this.token = token; + ticket => { + console.log(ticket); + this.ticket = this.authService.getTicketBpm(); this.authenticated = true; }, error => { @@ -96,27 +176,57 @@ class ActivitiTaskListDemo implements OnInit { }); } - onFilterClick(event: any) { - this.taskFilter = event; - this.activititasklist.load(this.taskFilter); + onAppClick(app: AppDefinitionRepresentationModel) { + this.appId = app.id; + + this.processFilter = null; + this.currentProcessInstanceId = null; + + this.changeTab('apps', 'processes'); } - onRowClick(taskId) { - this.currentTaskId = taskId; - this.activitidetails.loadDetails(this.currentTaskId); + onProcessFilterClick(event: any) { + this.processFilter = event; } + + onSuccessProcessFilterList(event: any) { + this.processFilter = this.activitiprocessfilter.getCurrentFilter(); + } + + onSuccessProcessList(event: any) { + this.currentProcessInstanceId = this.activitiprocesslist.getCurrentProcessId(); + } + + onProcessRowClick(processInstanceId) { + this.currentProcessInstanceId = processInstanceId; + } + + processCancelled(data: any) { + this.currentProcessInstanceId = null; + this.activitiprocesslist.reload(); + } + + changeTab(origin: string, destination: string) { + this.tabMain.nativeElement.children[origin].classList.remove('is-active'); + this.tabMain.nativeElement.children[destination].classList.add('is-active'); + + this.tabHeader.nativeElement.children[`${origin}-header`].classList.remove('is-active'); + this.tabHeader.nativeElement.children[`${destination}-header`].classList.add('is-active'); + } + } @NgModule({ imports: [ BrowserModule, CoreModule.forRoot(), - DataTableModule, - ActivitiTaskListModule + ActivitiProcessListModule, + ActivitiTaskListModule.forRoot() ], - declarations: [ ActivitiTaskListDemo ], - bootstrap: [ ActivitiTaskListDemo ] + declarations: [MyDemoApp], + bootstrap: [MyDemoApp] }) -export class AppModule { } +export class AppModule { +} platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-activiti-tasklist/index.ts b/ng2-components/ng2-activiti-tasklist/index.ts index 3e4263e937..a7f9116871 100644 --- a/ng2-components/ng2-activiti-tasklist/index.ts +++ b/ng2-components/ng2-activiti-tasklist/index.ts @@ -38,7 +38,7 @@ import { export * from './src/components/index'; export * from './src/services/activiti-tasklist.service'; -export * from './src/models/filter.model'; +export * from './src/models/index'; export const ACTIVITI_TASKLIST_DIRECTIVES: any[] = [ NoTaskDetailsTemplateComponent, diff --git a/ng2-components/ng2-activiti-tasklist/package.json b/ng2-components/ng2-activiti-tasklist/package.json index 87fbf34d15..40cbb2746f 100644 --- a/ng2-components/ng2-activiti-tasklist/package.json +++ b/ng2-components/ng2-activiti-tasklist/package.json @@ -48,26 +48,9 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "alfresco-js-api": "^0.3.0", - "core-js": "^2.4.1", "ng2-activiti-form": "0.3.3", "ng2-alfresco-core": "0.3.2", - "ng2-alfresco-datatable": "0.3.2", - "ng2-translate": "2.5.0", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23" + "ng2-alfresco-datatable": "0.3.2" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts index 93d967de73..bb7bfed213 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts @@ -18,7 +18,7 @@ import { SimpleChange } from '@angular/core'; import { ActivitiTaskList } from './activiti-tasklist.component'; import { ActivitiTaskListService } from '../services/activiti-tasklist.service'; -import { UserTaskFilterRepresentationModel } from '../models/filter.model'; +import { FilterRepresentationModel } from '../models/filter.model'; import { Observable } from 'rxjs/Rx'; import { ObjectDataRow, DataRowEvent, ObjectDataTableAdapter } from 'ng2-alfresco-datatable'; @@ -98,7 +98,7 @@ describe('ActivitiTaskList', () => { it('should return the filtered task list when the taskFilter is passed', (done) => { spyOn(taskList.activiti, 'getTotalTasks').and.returnValue(Observable.fromPromise(fakeGlobalTotalTasksPromise)); spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise)); - taskList.taskFilter = new UserTaskFilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); + taskList.taskFilter = new FilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); taskList.onSuccess.subscribe( (res) => { expect(res).toBeDefined(); @@ -120,7 +120,7 @@ describe('ActivitiTaskList', () => { it('should throw an exception when the response is wrong', (done) => { spyOn(taskList.activiti, 'getTotalTasks').and.returnValue(Observable.fromPromise(fakeErrorTaskPromise)); - taskList.taskFilter = new UserTaskFilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); + taskList.taskFilter = new FilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); taskList.onError.subscribe( (err) => { expect(err).toBeDefined(); @@ -133,7 +133,7 @@ describe('ActivitiTaskList', () => { it('should reload tasks when reload() is called', (done) => { spyOn(taskList.activiti, 'getTotalTasks').and.returnValue(Observable.fromPromise(fakeGlobalTotalTasksPromise)); spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise)); - taskList.taskFilter = new UserTaskFilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); + taskList.taskFilter = new FilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); taskList.ngOnInit(); taskList.onSuccess.subscribe( (res) => { expect(res).toBeDefined(); @@ -164,7 +164,7 @@ describe('ActivitiTaskList', () => { it('should reload task list by filter on binding changes', () => { spyOn(taskList, 'load').and.stub(); - const taskFilter = new UserTaskFilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); + const taskFilter = new FilterRepresentationModel({filter: { state: 'open', assignment: 'fake-assignee'}}); let change = new SimpleChange(null, taskFilter); taskList.ngOnChanges({ 'taskFilter': change }); diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts index b67cec102b..2b0c2d8c4b 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts @@ -19,7 +19,7 @@ import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChange import { AlfrescoTranslationService } from 'ng2-alfresco-core'; import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow } from 'ng2-alfresco-datatable'; import { ActivitiTaskListService } from './../services/activiti-tasklist.service'; -import { UserTaskFilterRepresentationModel, TaskQueryRequestRepresentationModel } from '../models/filter.model'; +import { FilterRepresentationModel, TaskQueryRequestRepresentationModel } from '../models/filter.model'; declare let componentHandler: any; @@ -32,7 +32,7 @@ declare let componentHandler: any; export class ActivitiTaskList implements OnInit, OnChanges { @Input() - taskFilter: UserTaskFilterRepresentationModel; + taskFilter: FilterRepresentationModel; @Input() data: DataTableAdapter; @@ -191,13 +191,15 @@ export class ActivitiTaskList implements OnInit, OnChanges { return tasks; } - private convertTaskUserToTaskQuery(userTask: UserTaskFilterRepresentationModel) { - let requestNode = {appDefinitionId: userTask.appId, + private convertTaskUserToTaskQuery(userTask: FilterRepresentationModel) { + let requestNode = { + appDefinitionId: userTask.appId, processDefinitionId: userTask.filter.processDefinitionId, text: userTask.filter.name, assignment: userTask.filter.assignment, state: userTask.filter.state, - sort: userTask.filter.sort}; + sort: userTask.filter.sort + }; return new TaskQueryRequestRepresentationModel(requestNode); } } diff --git a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts index e54579410b..72fd681bcd 100644 --- a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts +++ b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts @@ -85,6 +85,9 @@ export class FilterParamRepresentationModel { name: string; state: string; sort: string; + assignment: string; + dueAfter: Date; + dueBefore: Date; constructor(obj?: any) { this.processDefinitionId = obj && obj.processDefinitionId || null; @@ -92,38 +95,6 @@ export class FilterParamRepresentationModel { this.name = obj && obj.name || null; this.state = obj && obj.state || null; this.sort = obj && obj.sort || null; - } -} - -export class UserProcessInstanceFilterRepresentationModel extends FilterRepresentationModel { - public filter: ProcessInstanceFilterRepresentation; - constructor(obj?: any) { - super(obj); - this.filter = new ProcessInstanceFilterRepresentation(obj.filter); - } -} - -export class ProcessInstanceFilterRepresentation extends FilterParamRepresentationModel { - constructor(obj?: any) { - super(obj); - } -} - -export class UserTaskFilterRepresentationModel extends FilterRepresentationModel { - public filter: TaskFilterRepresentationModel; - constructor(obj?: any) { - super(obj); - this.filter = new TaskFilterRepresentationModel(obj.filter); - } -} - -export class TaskFilterRepresentationModel extends FilterParamRepresentationModel { - assignment: string; - dueAfter: Date; - dueBefore: Date; - - constructor(obj?: any) { - super(obj); this.assignment = obj && obj.assignment || null; this.dueAfter = obj && obj.dueAfter || null; this.dueBefore = obj && obj.dueBefore || null; diff --git a/ng2-components/ng2-activiti-processlist/src/models/user.model.ts b/ng2-components/ng2-activiti-tasklist/src/models/index.ts similarity index 61% rename from ng2-components/ng2-activiti-processlist/src/models/user.model.ts rename to ng2-components/ng2-activiti-tasklist/src/models/index.ts index 6d21ad4e0b..2d3fb08a48 100644 --- a/ng2-components/ng2-activiti-processlist/src/models/user.model.ts +++ b/ng2-components/ng2-activiti-tasklist/src/models/index.ts @@ -15,24 +15,8 @@ * limitations under the License. */ -/** - * - * This object represent the user. - * - * - * @returns {User} . - */ - -export class User { - id: number; - email: string; - firstName: string; - lastName: string; - - constructor(id: number, email: string, firstName: string, lastName: string) { - this.id = id; - this.email = email; - this.firstName = firstName; - this.lastName = lastName; - } -} +export * from './comment.model'; +export * from './filter.model'; +export * from './icon.model'; +export * from './user.model'; +export * from './task-details.model'; diff --git a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts index fe51682459..b25120ce93 100644 --- a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts +++ b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.spec.ts @@ -23,7 +23,7 @@ import { } from 'ng2-alfresco-core'; import { ActivitiTaskListService } from './activiti-tasklist.service'; import { TaskDetailsModel } from '../models/task-details.model'; -import { UserTaskFilterRepresentationModel, AppDefinitionRepresentationModel } from '../models/filter.model'; +import { FilterRepresentationModel, AppDefinitionRepresentationModel } from '../models/filter.model'; import { Comment } from '../models/comment.model'; declare let AlfrescoApi: any; @@ -415,13 +415,13 @@ describe('ActivitiTaskListService', () => { }); it('should add a filter ', (done) => { - let filterFake = new UserTaskFilterRepresentationModel({ + let filterFake = new FilterRepresentationModel({ name: 'FakeNameFilter', assignment: 'fake-assignement' }); service.addFilter(filterFake).subscribe( - (res: UserTaskFilterRepresentationModel) => { + (res: FilterRepresentationModel) => { expect(res).toBeDefined(); expect(res.id).not.toEqual(''); expect(res.name).toEqual('FakeNameFilter'); diff --git a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts index a87b5ac354..05411845f8 100644 --- a/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts +++ b/ng2-components/ng2-activiti-tasklist/src/services/activiti-tasklist.service.ts @@ -18,7 +18,7 @@ import {Injectable} from '@angular/core'; import {AlfrescoAuthenticationService} from 'ng2-alfresco-core'; import {Observable} from 'rxjs/Rx'; -import {UserTaskFilterRepresentationModel} from '../models/filter.model'; +import {FilterRepresentationModel} from '../models/filter.model'; import {TaskQueryRequestRepresentationModel} from '../models/filter.model'; import {Comment} from '../models/comment.model'; import {User} from '../models/user.model'; @@ -52,9 +52,9 @@ export class ActivitiTaskListService { getTaskListFilters(appId?: string): Observable { return Observable.fromPromise(this.callApiTaskFilters(appId)) .map((response: any) => { - let filters: UserTaskFilterRepresentationModel[] = []; - response.data.forEach((filter: UserTaskFilterRepresentationModel) => { - let filterModel = new UserTaskFilterRepresentationModel(filter); + let filters: FilterRepresentationModel[] = []; + response.data.forEach((filter: FilterRepresentationModel) => { + let filterModel = new FilterRepresentationModel(filter); filters.push(filterModel); }); if (response && response.data && response.data.length === 0) { @@ -127,10 +127,10 @@ export class ActivitiTaskListService { /** * Create and return the default filters * @param appId - * @returns {UserTaskFilterRepresentationModel[]} + * @returns {FilterRepresentationModel[]} */ - createDefaultFilter(appId: string): UserTaskFilterRepresentationModel[] { - let filters: UserTaskFilterRepresentationModel[] = []; + createDefaultFilter(appId: string): FilterRepresentationModel[] { + let filters: FilterRepresentationModel[] = []; let involvedTasksFilter = this.getInvolvedTasksFilterInstance(appId); this.addFilter(involvedTasksFilter); @@ -166,13 +166,13 @@ export class ActivitiTaskListService { /** * Add a filter - * @param filter - UserTaskFilterRepresentationModel - * @returns {UserTaskFilterRepresentationModel} + * @param filter - FilterRepresentationModel + * @returns {FilterRepresentationModel} */ - addFilter(filter: UserTaskFilterRepresentationModel): Observable { + addFilter(filter: FilterRepresentationModel): Observable { return Observable.fromPromise(this.callApiAddFilter(filter)) .map(res => res) - .map((response: UserTaskFilterRepresentationModel) => { + .map((response: FilterRepresentationModel) => { return response; }).catch(this.handleError); } @@ -256,7 +256,7 @@ export class ActivitiTaskListService { return this.authService.getAlfrescoApi().activiti.taskApi.addSubtask(task.parentTaskId, task); } - private callApiAddFilter(filter: UserTaskFilterRepresentationModel) { + private callApiAddFilter(filter: FilterRepresentationModel) { return this.authService.getAlfrescoApi().activiti.userFiltersApi.createUserTaskFilter(filter); } @@ -280,10 +280,10 @@ export class ActivitiTaskListService { /** * Return a static Involved filter instance * @param appId - * @returns {UserTaskFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - getInvolvedTasksFilterInstance(appId: string): UserTaskFilterRepresentationModel { - return new UserTaskFilterRepresentationModel({ + getInvolvedTasksFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'Involved Tasks', 'appId': appId, 'recent': false, @@ -295,10 +295,10 @@ export class ActivitiTaskListService { /** * Return a static My task filter instance * @param appId - * @returns {UserTaskFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - getMyTasksFilterInstance(appId: string): UserTaskFilterRepresentationModel { - return new UserTaskFilterRepresentationModel({ + getMyTasksFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'My Tasks', 'appId': appId, 'recent': false, @@ -310,10 +310,10 @@ export class ActivitiTaskListService { /** * Return a static Queued filter instance * @param appId - * @returns {UserTaskFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - getQueuedTasksFilterInstance(appId: string): UserTaskFilterRepresentationModel { - return new UserTaskFilterRepresentationModel({ + getQueuedTasksFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'Queued Tasks', 'appId': appId, 'recent': false, @@ -325,10 +325,10 @@ export class ActivitiTaskListService { /** * Return a static Completed filter instance * @param appId - * @returns {UserTaskFilterRepresentationModel} + * @returns {FilterRepresentationModel} */ - getCompletedTasksFilterInstance(appId: string): UserTaskFilterRepresentationModel { - return new UserTaskFilterRepresentationModel({ + getCompletedTasksFilterInstance(appId: string): FilterRepresentationModel { + return new FilterRepresentationModel({ 'name': 'Completed Tasks', 'appId': appId, 'recent': true, From ffbec87a6f5ad829d621ce580d948fd4a455b7d3 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Tue, 8 Nov 2016 18:56:49 +0000 Subject: [PATCH 08/27] #878 tasklist demo --- .../ng2-activiti-tasklist/demo/package.json | 2 +- .../ng2-activiti-tasklist/demo/src/main.ts | 127 +++++++++--------- .../demo/systemjs.config.js | 7 +- 3 files changed, 73 insertions(+), 63 deletions(-) diff --git a/ng2-components/ng2-activiti-tasklist/demo/package.json b/ng2-components/ng2-activiti-tasklist/demo/package.json index 6c9f03aab6..19042996f8 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/package.json +++ b/ng2-components/ng2-activiti-tasklist/demo/package.json @@ -16,7 +16,7 @@ }, "license": "Apache-2.0", "dependencies": { - "ng2-activiti-tasklist": "0.3.3" + "ng2-activiti-tasklist": "^0.3.3" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-activiti-tasklist/demo/src/main.ts b/ng2-components/ng2-activiti-tasklist/demo/src/main.ts index 8a72ded2bb..0653dd4c1e 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/src/main.ts +++ b/ng2-components/ng2-activiti-tasklist/demo/src/main.ts @@ -18,9 +18,14 @@ import { Input, NgModule, Component, OnInit, ViewChild } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { AppDefinitionRepresentationModel, ActivitiTaskListModule } from 'ng2-activiti-tasklist'; +import { + ActivitiTaskListModule, + AppDefinitionRepresentationModel, + FilterRepresentationModel, + ActivitiApps, + ActivitiTaskList +} from 'ng2-activiti-tasklist'; import { CoreModule } from 'ng2-alfresco-core'; -import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; @@ -45,7 +50,7 @@ import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; @@ -59,38 +64,33 @@ import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable';
    - + -
    +
    -
    -
    -
    - Process Filters - - -
    -
    - Process List - -
    -
    - Process Details - -
    +
    +
    + Task Filters + + +
    +
    + Task List + +
    +
    + Task Details +
    @@ -108,29 +108,36 @@ class MyDemoApp implements OnInit { ticket: string; + @ViewChild('activitiapps') + activitiapps: ActivitiApps; + @ViewChild('tabmain') tabMain: any; @ViewChild('tabheader') tabHeader: any; - @ViewChild('activitiprocessfilter') - activitiprocessfilter: any; + @ViewChild('activitifilter') + activitifilter: any; - @ViewChild('activitiprocesslist') - activitiprocesslist: any; + @ViewChild('activitidetails') + activitidetails: any; - @ViewChild('activitiprocessdetails') - activitiprocessdetails: any; + @ViewChild('activititasklist') + activititasklist: ActivitiTaskList; @Input() appId: number; - processFilter: any; + layoutType: string; - currentProcessInstanceId: string; + currentTaskId: string; - dataProcesses: ObjectDataTableAdapter; + taskSchemaColumns: any [] = []; + + taskFilter: any; + + dataTasks: ObjectDataTableAdapter; constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { settingsService.bpmHost = this.host; @@ -140,14 +147,14 @@ class MyDemoApp implements OnInit { this.ticket = this.authService.getTicketBpm(); } - this.dataProcesses = new ObjectDataTableAdapter( + this.dataTasks = new ObjectDataTableAdapter( [], [ {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} ] ); - this.dataProcesses.setSorting(new DataSorting('started', 'desc')); + this.dataTasks.setSorting(new DataSorting('started', 'desc')); } public updateTicket(): void { @@ -179,31 +186,32 @@ class MyDemoApp implements OnInit { onAppClick(app: AppDefinitionRepresentationModel) { this.appId = app.id; - this.processFilter = null; - this.currentProcessInstanceId = null; - - this.changeTab('apps', 'processes'); + this.changeTab('apps', 'tasks'); } - onProcessFilterClick(event: any) { - this.processFilter = event; + onTaskFilterClick(event: FilterRepresentationModel) { + this.taskFilter = event; } - onSuccessProcessFilterList(event: any) { - this.processFilter = this.activitiprocessfilter.getCurrentFilter(); + onSuccessTaskFilterList(event: any) { + this.taskFilter = this.activitifilter.getCurrentFilter(); } - onSuccessProcessList(event: any) { - this.currentProcessInstanceId = this.activitiprocesslist.getCurrentProcessId(); + onStartTaskSuccess(event: any) { + this.activititasklist.reload(); } - onProcessRowClick(processInstanceId) { - this.currentProcessInstanceId = processInstanceId; + onSuccessTaskList(event: FilterRepresentationModel) { + this.currentTaskId = this.activititasklist.getCurrentTaskId(); } - processCancelled(data: any) { - this.currentProcessInstanceId = null; - this.activitiprocesslist.reload(); + onTaskRowClick(taskId) { + this.currentTaskId = taskId; + } + + onFormCompleted(form) { + this.activititasklist.load(this.taskFilter); + this.currentTaskId = null; } changeTab(origin: string, destination: string) { @@ -220,7 +228,6 @@ class MyDemoApp implements OnInit { imports: [ BrowserModule, CoreModule.forRoot(), - ActivitiProcessListModule, ActivitiTaskListModule.forRoot() ], declarations: [MyDemoApp], diff --git a/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js b/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js index 4c66d6b975..eae9e94ae9 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js +++ b/ng2-components/ng2-activiti-tasklist/demo/systemjs.config.js @@ -26,7 +26,9 @@ 'ng2-translate': 'npm:ng2-translate', 'alfresco-js-api': 'npm:alfresco-js-api/dist', 'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist', - 'ng2-activiti-form': 'npm:ng2-activiti-form/dist' + 'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable/dist', + 'ng2-activiti-form': 'npm:ng2-activiti-form/dist', + 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist' }, // packages tells the System loader how to load when no filename and/or no extension packages: { @@ -41,7 +43,8 @@ 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}, 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-datatable': { main: './index.js', defaultExtension: 'js'}, - 'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'} + 'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'}, + 'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'} } }); })(this); From 76f17b2e74b90f7c65f711f8f1a3d33d97082918 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Tue, 8 Nov 2016 23:48:00 +0000 Subject: [PATCH 09/27] #878 fix documentation --- .../ng2-activiti-analytics/README.md | 1 + .../ng2-activiti-diagrams/README.md | 2 +- ng2-components/ng2-activiti-form/README.md | 3 + .../ng2-activiti-processlist/README.md | 19 +- .../ng2-activiti-tasklist/README.md | 293 +++++++++++++----- ng2-components/ng2-alfresco-login/README.md | 1 + 6 files changed, 232 insertions(+), 87 deletions(-) diff --git a/ng2-components/ng2-activiti-analytics/README.md b/ng2-components/ng2-activiti-analytics/README.md index 80d53964c1..d01dc3394f 100644 --- a/ng2-components/ng2-activiti-analytics/README.md +++ b/ng2-components/ng2-activiti-analytics/README.md @@ -93,6 +93,7 @@ Follow the 3 steps below: Add the following components to your systemjs.config.js file: + - moment - ng2-charts - ng2-translate - alfresco-js-api diff --git a/ng2-components/ng2-activiti-diagrams/README.md b/ng2-components/ng2-activiti-diagrams/README.md index 0b1ba2aff1..686783f682 100644 --- a/ng2-components/ng2-activiti-diagrams/README.md +++ b/ng2-components/ng2-activiti-diagrams/README.md @@ -89,8 +89,8 @@ Follow the 3 steps below: - ng2-translat - ng2-alfresco-core - - ng2-activiti-diagrams - alfresco-js-api + - ng2-activiti-diagrams - raphael Please refer to the following example file: [systemjs.config.js](demo/systemjs diff --git a/ng2-components/ng2-activiti-form/README.md b/ng2-components/ng2-activiti-form/README.md index 9507d66584..f4f717c3b9 100644 --- a/ng2-components/ng2-activiti-form/README.md +++ b/ng2-components/ng2-activiti-form/README.md @@ -89,8 +89,11 @@ Follow the 3 steps below: Add the following components to your systemjs.config.js file: + - moment - ng2-translate - ng2-alfresco-core + - alfresco-js-api + - ng2-activiti-form Please refer to the following example file: [systemjs.config.js](demo/systemjs .config.js) . diff --git a/ng2-components/ng2-activiti-processlist/README.md b/ng2-components/ng2-activiti-processlist/README.md index 281362281f..66c4030fb8 100644 --- a/ng2-components/ng2-activiti-processlist/README.md +++ b/ng2-components/ng2-activiti-processlist/README.md @@ -94,10 +94,12 @@ Follow the 3 steps below: Add the following components to your systemjs.config.js file: - ng2-translate + - alfresco-js-api - ng2-alfresco-core - ng2-activiti-form - - ng2-activiti-tasklist - ng2-alfresco-datatable + - ng2-activiti-tasklist + - ng2-activiti-processlist Please refer to the following example file: [systemjs.config.js](demo/systemjs .config.js) . @@ -115,10 +117,10 @@ This component renders a list containing all the process instances matched by th **main.ts** ```ts -import { NgModule, Component, OnInit } from '@angular/core'; +import { NgModule, Component } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { UserProcessInstanceFilterRepresentationModel } from 'ng2-activiti-tasklist'; +import { FilterRepresentationModel } from 'ng2-activiti-tasklist'; import { CoreModule } from 'ng2-alfresco-core'; import { ActivitiProcessListModule } from 'ng2-activiti-processlist'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @@ -126,14 +128,14 @@ import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; @Component({ selector: 'alfresco-app-demo', - template: `` }) -class MyDemoApp implements OnInit { +class MyDemoApp { dataProcesses: ObjectDataTableAdapter; - processInstanceFilterRepresentation: UserProcessInstanceFilterRepresentationModel; + filterRepresentationModel: FilterRepresentationModel; constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { settingsService.bpmHost = 'http://localhost:9999'; @@ -146,15 +148,14 @@ class MyDemoApp implements OnInit { console.log(error); }); - this.dataProcesses = new ObjectDataTableAdapter([], - [ + this.dataProcesses = new ObjectDataTableAdapter([], [ {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} ] ); this.dataProcesses.setSorting(new DataSorting('started', 'desc')); - this.processInstanceFilterRepresentation = new UserProcessInstanceFilterRepresentationModel({ + this.filterRepresentationModel = new FilterRepresentationModel({ appId: '3003', filter: { processDefinitionKey: null, diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md index 1146513e41..ff5dfb65c8 100644 --- a/ng2-components/ng2-activiti-tasklist/README.md +++ b/ng2-components/ng2-activiti-tasklist/README.md @@ -1,105 +1,222 @@ # Activiti Task List Component for Angular 2 +

    + + travis
+    Status + + + travis
+    Status + + + Coverage Status + + + npm downloads + + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version + +

    + +Displays lists of process instances both active and completed, using any defined process filter, and +render details of any chosen instance. + ## Prerequisites Before you start using this development framework, make sure you have installed all required software and done all the -necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). +necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-activiti-tasklist -``` +Follow the 3 steps below: -### Dependencies +1. Npm -Add the following dependency to your index.html: + ```sh + npm install ng2-activiti-tasklist --save + ``` -```html - -``` +2. Html -You must separately install the following libraries for your application: + Include these dependencies in your index.html page: -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) -- [ng2-alfresco-datatable](https://www.npmjs.com/package/ng2-alfresco-datatable) + ```html + + -```sh -npm install --save ng2-translate ng2-alfresco-core ng2-alfresco-datatable -``` + + + + -#### Material Design Lite + + + + -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + -```sh -npm install --save material-design-icons material-design-lite -``` + + + + -Also make sure you include these dependencies in your `index.html` file: + + + + -```html - - - - -``` -#### Dialogs Polyfill + + + + -To make the dialog working with all the browser you have to add the dialog polyfill to you project: + ``` -```sh -npm install --save dialog-polyfill -``` +3. SystemJs -Also make sure you include these dependencies in your `index.html` file: + Add the following components to your systemjs.config.js file: -```html - - - - -``` + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-activiti-form + - ng2-alfresco-datatable + - ng2-activiti-tasklist + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage example Activiti Task List -The component shows the list of all the tasks filter by the -FilterParamRepresentationModel passed in input. + +The component shows the list of all the tasks filter by the FilterParamRepresentationModel passed in input. + ```html ``` +**main.ts** +```ts + +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { FilterRepresentationModel, ActivitiTaskListModule } from 'ng2-activiti-tasklist'; +import { CoreModule } from 'ng2-alfresco-core'; +import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable'; + +@Component({ + selector: 'alfresco-app-demo', + template: `` +}) +class MyDemoApp { + + dataTasks: ObjectDataTableAdapter; + + filterRepresentationModel: FilterRepresentationModel; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.bpmHost = 'http://localhost:9999'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); + + this.dataTasks = new ObjectDataTableAdapter([], [ + {type: 'text', key: 'name', title: 'Name', cssClass: 'full-width name-column', sortable: true}, + {type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true} + ] + ); + this.dataTasks.setSorting(new DataSorting('started', 'desc')); + + this.filterRepresentationModel = new FilterRepresentationModel({ + appId: '3003', + filter: { + processDefinitionKey: null, + assignment: 'involved', + name: null, + state: 'running', + sort: 'created-desc' + } + }); + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + ActivitiTaskListModule.forRoot() + ], + declarations: [MyDemoApp], + bootstrap: [MyDemoApp] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); + + +``` + #### Events -**onSuccess**: The event is emitted when the task list is loaded -**rowClick**: The event is emitted when the task in the list is -clicked
    + +| Name | Description | +| --- | --- | +| `onSuccess` | The event is emitted when the task list is loaded | +| `rowClick` | The event is emitted when the task in the list is clicked | #### Options -**taskFilter**: { FilterParamRepresentationModel } required) FilterParamRepresentationModel object that -is passed to the task list API to filter the task list. +| Name | Description | +| --- | --- | +| `taskFilter` | { FilterParamRepresentationModel } required) FilterParamRepresentationModel object that is passed to the task list API to filter the task list. | + Example: + ```json { - "appDefinitionId": "1", - "processDefinitionId": "1533", - "sort": "created-desc", - "text": "", - "state": "open", - "assignment": "involved", - "page": "0", - "size": "25" + appId: '3003', + filter:{ + processDefinitionKey: null, + name:null, + assignment: 'involved', + state:'running', + sort: 'created-desc' + } } ``` -**schemaColumn**: { any[] } optional) JSON object that represent -the number and the type of the columns that you want show + +| Name | Description | +| --- | --- | +| `schemaColumn` | { any[] } optional) JSON object that represent the number and the type of the columns that you want show | + Example: + ```json [ {type: 'text', key: 'id', title: 'Id'}, @@ -110,31 +227,34 @@ Example: ``` ## Basic usage example Activiti Task Details + The component shows the details of the task id passed in input + ```html ``` #### Events + | Name | Description | | --- | --- | -| **formLoaded** | Invoked when form is loaded or reloaded. | -| **formSaved** | Invoked when form is submitted with `Save` or custom outcomes. | -| **formCompleted** | Invoked when form is submitted with `Complete` outcome. | -| **executeOutcome** | Invoked when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` | -| **onError** | Invoked at any error | +| `formLoaded` | Invoked when form is loaded or reloaded. | +| `formSaved` | Invoked when form is submitted with `Save` or custom outcomes. | +| `formCompleted` | Invoked when form is submitted with `Complete` outcome. | +| `executeOutcome` | Invoked when any outcome is executed, default behaviour can be prevented via `event.preventDefault()` | +| `onError` | Invoked at any error | #### Options | Name | Type | Required | Description | | --- | --- | --- | --- | -| **taskId** | {string} | required | The id of the task details that we are asking for. | -| **showNextTask** | {boolean} | optional | Automatically render the next one, when the task is completed. | -| **showFormTitle** | {boolean} | optional | Toggle rendering of the form title. | -| **readOnlyForm** | {boolean} | optional | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. | -| **showFormRefreshButton** | {boolean} | optional | Toggle rendering of the `Refresh` button. | -| **showFormSaveButton** | {boolean} | optional | Toggle rendering of the `Save` outcome button. | -| **showFormCompleteButton** | {boolean} | optional | Toggle rendering of the Form `Complete` outcome button | +| `taskId` | {string} | required | The id of the task details that we are asking for. | +| `showNextTask` | {boolean} | optional | Automatically render the next one, when the task is completed. | +| `showFormTitle` | {boolean} | optional | Toggle rendering of the form title. | +| `readOnlyForm` | {boolean} | optional | Toggle readonly state of the form. Enforces all form widgets render readonly if enabled. | +| `showFormRefreshButton` | {boolean} | optional | Toggle rendering of the `Refresh` button. | +| `showFormSaveButton` | {boolean} | optional | Toggle rendering of the `Save` outcome button. | +| `showFormCompleteButton` | {boolean} | optional | Toggle rendering of the Form `Complete` outcome button | ### Custom 'empty Activiti Task Details' template @@ -157,6 +277,7 @@ This can be changed by adding the following custom html template: ``` ## Basic usage example Activiti Filter + The component shows all the available filters. ```html @@ -164,16 +285,20 @@ The component shows all the available filters. ``` #### Events -**filterClick**: The event is emitted when the filter in the list is - clicked + +| Name | Description | +| --- | --- | +| `filterClick` | The event is emitted when the filter in the list is clicked | #### Options + No options ## Build from sources Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build @@ -185,7 +310,7 @@ npm run build $ npm run build:w ``` -### Running unit tests +## Running unit tests ```sh npm test @@ -205,3 +330,17 @@ before performing unit testing. ```sh npm run coverage ``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 57924643d3..31247ea484 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -83,6 +83,7 @@ Follow the 3 steps below: - ng2-translate - ng2-alfresco-core + - alfresco-js-api - ng2-alfresco-login Please refer to the following example file: [systemjs.config.js](demo/systemjs From e778940f94cf6d26f2b1be96738413e2c4f75895 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 00:11:26 +0000 Subject: [PATCH 10/27] #878 doc and demo datatable --- .../ng2-alfresco-datatable/README.md | 165 ++++++++++++------ .../ng2-alfresco-datatable/demo/package.json | 25 +-- .../ng2-alfresco-datatable/package.json | 18 -- 3 files changed, 109 insertions(+), 99 deletions(-) diff --git a/ng2-components/ng2-alfresco-datatable/README.md b/ng2-components/ng2-alfresco-datatable/README.md index d533f275cc..07b851cb97 100644 --- a/ng2-components/ng2-alfresco-datatable/README.md +++ b/ng2-components/ng2-alfresco-datatable/README.md @@ -34,43 +34,62 @@ ## Prerequisites -Before you start using this development framework, make sure you have installed all required software and done all the +Before you start using this development framework, make sure you have installed all required software and done all the necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-alfresco-datatable -``` +Follow the 3 steps below: -### Dependencies +1. Npm -You must separately install the following libraries for your application: - -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) + ```sh + npm install ng2-alfresco-datatable --save + ``` -```sh -npm install --save ng2-translate ng2-alfresco-core -``` +2. Html -#### Material Design Lite + Include these dependencies in your index.html page: -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: + ```html -```sh -npm install --save material-design-icons material-design-lite -``` + + + + -Also make sure you include these dependencies in your `index.html` file: + + + -```html - - - - -``` + + + + + + + + + + + + + + + + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-alfresco-datatable + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage example @@ -78,52 +97,69 @@ Also make sure you include these dependencies in your `index.html` file: **my.component.ts** ```ts + +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule } from 'ng2-alfresco-core'; +import { DataTableModule } from 'ng2-alfresco-datatable'; +import { ObjectDataTableAdapter } from 'ng2-alfresco-datatable'; import { Component } from '@angular/core'; -import { - CONTEXT_MENU_DIRECTIVES, - CONTEXT_MENU_PROVIDERS -} from 'ng2-alfresco-core'; -import { - ALFRESCO_DATATABLE_DIRECTIVES, - ObjectDataTableAdapter -} from 'ng2-alfresco-datatable'; +import { CONTEXT_MENU_DIRECTIVES, CONTEXT_MENU_PROVIDERS } from 'ng2-alfresco-core'; +import { ALFRESCO_DATATABLE_DIRECTIVES, ObjectDataTableAdapter } from 'ng2-alfresco-datatable'; @Component({ - selector: 'my-view', + selector: 'alfresco-app-demo', template: ` `, directives: [ALFRESCO_DATATABLE_DIRECTIVES, CONTEXT_MENU_DIRECTIVES], providers: [CONTEXT_MENU_PROVIDERS] }) -export class MyView { +export class DataTableDemo { data: ObjectDataTableAdapter; constructor() { this.data = new ObjectDataTableAdapter( // data [ - { id: 1, name: 'Name 1' }, - { id: 2, name: 'Name 2' } + {id: 1, name: 'Name 1'}, + {id: 2, name: 'Name 2'} ], // schema [ - { - type: 'text', - key: 'id', - title: 'Id', - sortable: true + { + type: 'text', + key: 'id', + title: 'Id', + sortable: true }, - { - type: 'text', - key: 'name', - title: 'Name', - cssClass: 'full-width', - sortable: true + { + type: 'text', + key: 'name', + title: 'Name', + cssClass: 'full-width', + sortable: true } ] ); } } + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + DataTableModule + ], + declarations: [DataTableDemo], + bootstrap: [DataTableDemo] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); + + ``` ![DataTable demo](docs/assets/datatable-demo.png) @@ -132,10 +168,10 @@ export class MyView { | Name | Type | Default | Description | --- | --- | --- | --- | -| data | DataTableAdapter | instance of **ObjectDataTableAdapter** | data source | -| multiselect | boolean | false | Toggles multiple row selection, renders checkboxes at the beginning of each row | -| actions | boolean | false | Toggles data actions column | -| fallbackThubnail | string | | Fallback image for row ehre thubnail is missing| +| `data` | DataTableAdapter | instance of **ObjectDataTableAdapter** | data source | +| `multiselect` | boolean | false | Toggles multiple row selection, renders checkboxes at the beginning of each row | +| `actions` | boolean | false | Toggles data actions column | +| `fallbackThubnail` | string | | Fallback image for row ehre thubnail is missing| ### Events @@ -366,6 +402,7 @@ let data = new ObjectDataTableAdapter( ``` ## Generate schema + Is possible to auto generate your schema if you have only the data row ```ts @@ -397,11 +434,11 @@ let schema = ObjectDataTableAdapter.generateSchema(data); ``` - ## Build from sources Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build @@ -412,8 +449,8 @@ npm run build ```sh $ npm run build:w ``` - -### Running unit tests + +## Running unit tests ```sh npm test @@ -425,11 +462,25 @@ npm test npm test-browser ``` -This task rebuilds all the code, runs tslint, license checks and other quality check tools -before performing unit testing. +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. ### Code coverage ```sh npm run coverage ``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-datatable/demo/package.json b/ng2-components/ng2-alfresco-datatable/demo/package.json index 8f52bb1a96..1a603b8b5b 100644 --- a/ng2-components/ng2-alfresco-datatable/demo/package.json +++ b/ng2-components/ng2-alfresco-datatable/demo/package.json @@ -22,30 +22,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "license-check": "1.1.5", - - "ng2-translate": "2.5.0", - "ng2-alfresco-core": "0.3.2", - "ng2-alfresco-datatable": "0.3.2", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1" + "ng2-alfresco-datatable": "0.3.2" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-alfresco-datatable/package.json b/ng2-components/ng2-alfresco-datatable/package.json index 178f79c6d9..813381304f 100644 --- a/ng2-components/ng2-alfresco-datatable/package.json +++ b/ng2-components/ng2-alfresco-datatable/package.json @@ -44,24 +44,6 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "alfresco-js-api": "^0.3.0", - "ng2-translate": "2.5.0", "ng2-alfresco-core": "0.3.2" }, "devDependencies": { From cf0b0c59742e81e6fff724e31eab0c6a8cfb156f Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 00:48:44 +0000 Subject: [PATCH 11/27] #878 doc and demo documentlist --- .../ng2-activiti-analytics/README.md | 2 +- ng2-components/ng2-activiti-form/README.md | 4 +- .../ng2-activiti-processlist/README.md | 2 + .../ng2-activiti-tasklist/README.md | 2 + .../ng2-alfresco-datatable/README.md | 1 + .../ng2-alfresco-documentlist/README.md | 197 +++++++++++++----- .../demo/package.json | 25 +-- .../demo/src/main.ts | 13 +- .../ng2-alfresco-documentlist/package.json | 20 +- 9 files changed, 162 insertions(+), 104 deletions(-) diff --git a/ng2-components/ng2-activiti-analytics/README.md b/ng2-components/ng2-activiti-analytics/README.md index d01dc3394f..136f8cad99 100644 --- a/ng2-components/ng2-activiti-analytics/README.md +++ b/ng2-components/ng2-activiti-analytics/README.md @@ -112,7 +112,7 @@ The component shows the list of all the available reports ``` -Example of an App that use Activiti Analytics List component : +Usage example of this component : **main.ts** ```ts diff --git a/ng2-components/ng2-activiti-form/README.md b/ng2-components/ng2-activiti-form/README.md index f4f717c3b9..164722c525 100644 --- a/ng2-components/ng2-activiti-form/README.md +++ b/ng2-components/ng2-activiti-form/README.md @@ -103,10 +103,10 @@ Follow the 3 steps below: The component shows a Form from Activiti ```html - + ``` -Example of an App that use Activiti Analytics List component : +Usage example of this component : **main.ts** ```ts diff --git a/ng2-components/ng2-activiti-processlist/README.md b/ng2-components/ng2-activiti-processlist/README.md index 66c4030fb8..6ff436c351 100644 --- a/ng2-components/ng2-activiti-processlist/README.md +++ b/ng2-components/ng2-activiti-processlist/README.md @@ -114,6 +114,8 @@ This component renders a list containing all the process instances matched by th ``` +Usage example of this component : + **main.ts** ```ts diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md index ff5dfb65c8..5a860a5885 100644 --- a/ng2-components/ng2-activiti-tasklist/README.md +++ b/ng2-components/ng2-activiti-tasklist/README.md @@ -112,6 +112,8 @@ The component shows the list of all the tasks filter by the FilterParamRepresent ``` +Usage example of this component : + **main.ts** ```ts diff --git a/ng2-components/ng2-alfresco-datatable/README.md b/ng2-components/ng2-alfresco-datatable/README.md index 07b851cb97..401b24edb6 100644 --- a/ng2-components/ng2-alfresco-datatable/README.md +++ b/ng2-components/ng2-alfresco-datatable/README.md @@ -93,6 +93,7 @@ Follow the 3 steps below: ## Basic usage example +Usage example of this component : **my.component.ts** diff --git a/ng2-components/ng2-alfresco-documentlist/README.md b/ng2-components/ng2-alfresco-documentlist/README.md index 5d0880d7c9..7b72db8845 100644 --- a/ng2-components/ng2-alfresco-documentlist/README.md +++ b/ng2-components/ng2-alfresco-documentlist/README.md @@ -34,49 +34,63 @@ ## Prerequisites -Before you start using this development framework, make sure you have installed all required software and done all the -necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). +Before you start using this development framework, make sure you have installed all required software and done all the +necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-alfresco-documentlist -``` +Follow the 3 steps below: -### Dependencies +1. Npm -Add the following dependency to your index.html: + ```sh + npm install ng2-alfresco-documentlist --save + ``` -```html - -``` +2. Html -The following component needs to be added to your `systemjs.config.js` file: + Include these dependencies in your index.html page: -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) -- [ng2-alfresco-datatable](https://www.npmjs.com/package/ng2-alfresco-datatable) + ```html -You can get more details in the -[example implementation](https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-documentlist/demo/systemjs.config.js). + + + + -#### Material Design Lite + + + -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + + -```sh -npm install --save material-design-icons material-design-lite -``` + + + + -Also make sure you include these dependencies in your `index.html` file: + + + + -```html - - - - -``` + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-alfresco-datatable + - ng2-alfresco-documentlist + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage @@ -91,28 +105,88 @@ Also make sure you include these dependencies in your `index.html` file: ``` +Usage example of this component : + +**main.ts** +```ts + +import { NgModule, Component, ViewChild } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule } from 'ng2-alfresco-core'; +import { DataTableModule } from 'ng2-alfresco-datatable'; +import { DocumentListModule, DocumentList } from 'ng2-alfresco-documentlist'; +import { AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; + +@Component({ + selector: 'alfresco-app-demo', + template: ` + ` +}) +class DocumentListDemo { + + @ViewChild(DocumentList) + documentList: DocumentList; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + this.documentList.reload(); + }, + error => { + console.log(error); + }); + } +} + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + DataTableModule, + DocumentListModule.forRoot() + ], + declarations: [DocumentListDemo], + bootstrap: [DocumentListDemo] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); + + +``` + ### Properties | Name | Type | Default | Description | | --- | --- | --- | --- | -| navigate | boolean | true | Toggles navigation to folder content or file preview | -| navigationMode | string (click\|dblclick) | dblclick | User interaction for folder navigation or file preview | -| thumbnails | boolean | false | Show document thumbnails rather than icons | -| fallbackThubnail | string | | Fallback image for row ehre thubnail is missing| -| multiselect | boolean | false | Toggles multiselect mode | -| contentActions | boolean | false | Toggles content actions for each row | -| contextMenuActions | boolean | false | Toggles context menus for each row | -| rowFilter | `RowFilter` | | Custom row filter, [see more](#custom-row-filter). -| imageResolver | `ImageResolver` | | Custom image resolver, [see more](#custom-image-resolver). +| `navigate` | boolean | true | Toggles navigation to folder content or file preview | +| `navigationMode` | string (click\|dblclick) | dblclick | User interaction for folder navigation or file preview | +| `thumbnails` | boolean | false | Show document thumbnails rather than icons | +| `fallbackThubnail` | string | | Fallback image for row ehre thubnail is missing| +| `multiselect` | boolean | false | Toggles multiselect mode | +| `contentActions` | boolean | false | Toggles content actions for each row | +| `contextMenuActions` | boolean | false | Toggles context menus for each row | +| `rowFilter` | `RowFilter` | | Custom row filter, [see more](#custom-row-filter). +| `imageResolver` | `ImageResolver` | | Custom image resolver, [see more](#custom-image-resolver). ### Events | Name | Description | | --- | --- | -| nodeClick | Emitted when user clicks the node | -| nodeDblClick | Emitted when user double-clicks the node | -| folderChange | Emitted upon display folder changed | -| preview | Emitted when document preview is requested either with single or double click | +| `nodeClick` | Emitted when user clicks the node | +| `nodeDblClick` | Emitted when user double-clicks the node | +| `folderChange` | Emitted upon display folder changed | +| `preview` | Emitted when document preview is requested either with single or double click | _For a complete example source code please refer to @@ -204,13 +278,13 @@ HTML attributes: | Name | Type | Default | Description | --- | --- | --- | --- | -| title | string | | Column title | -| sr-title | string | | Screen reader title, used only when `title` is empty | -| key | string | | Column source key, example: `createdByUser.displayName` | -| sortable | boolean | false | Toggle sorting ability via column header clicks | -| class | string | | CSS class list, example: `full-width ellipsis-cell` | -| type | string | text | Column type, text\|date\|number | -| format | string | | Value format pattern | +| `title` | string | | Column title | +| `sr-title` | string | | Screen reader title, used only when `title` is empty | +| `key` | string | | Column source key, example: `createdByUser.displayName` | +| `sortable` | boolean | false | Toggle sorting ability via column header clicks | +| `class`| string | | CSS class list, example: `full-width ellipsis-cell` | +| `type` | string | text | Column type, text\|date\|number | +| `format` | string | | Value format pattern | For `date` column type the [DatePipe](https://angular.io/docs/ts/latest/api/common/DatePipe-class.html) formatting is used. For a full list of available `format` values please refer to [DatePipe](https://angular.io/docs/ts/latest/api/common/DatePipe-class.html) documentation. @@ -660,7 +734,8 @@ by means of custom application service. ## Build from sources -You can build component from sources with the following commands: +Alternatively you can build component from sources with the following commands: + ```sh npm install @@ -672,8 +747,8 @@ npm run build ```sh $ npm run build:w ``` - -### Running unit tests + +## Running unit tests ```sh npm test @@ -685,11 +760,25 @@ npm test npm test-browser ``` -This task rebuilds all the code, runs tslint, license checks and other quality check tools -before performing unit testing. +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. ### Code coverage ```sh npm run coverage ``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-documentlist/demo/package.json b/ng2-components/ng2-alfresco-documentlist/demo/package.json index f2f4226a1e..cf9426d88f 100644 --- a/ng2-components/ng2-alfresco-documentlist/demo/package.json +++ b/ng2-components/ng2-alfresco-documentlist/demo/package.json @@ -17,30 +17,7 @@ }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.1.3", - "ng2-translate": "2.5.0", - "intl": "1.2.4", - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", - "ng2-alfresco-documentlist": "^0.3.0", - "ng2-alfresco-datatable": "^0.3.0" + "ng2-alfresco-documentlist": "^0.3.0" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts b/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts index 5e9cc10c94..a094e8b144 100644 --- a/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-documentlist/demo/src/main.ts @@ -15,13 +15,12 @@ * limitations under the License. */ - -import { NgModule, Component, OnInit } from '@angular/core'; +import { NgModule, Component, OnInit, ViewChild } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { CoreModule } from 'ng2-alfresco-core'; import { DataTableModule } from 'ng2-alfresco-datatable'; -import { DocumentListModule } from 'ng2-alfresco-documentlist'; +import { DocumentListModule, DocumentList } from 'ng2-alfresco-documentlist'; import { AlfrescoSettingsService, @@ -142,11 +141,16 @@ import { DocumentActionsService } from 'ng2-alfresco-documentlist'; class DocumentListDemo implements OnInit { currentPath: string = '/'; + authenticated: boolean = false; - ecmHost: string = 'http://devproducts-platform.alfresco.me'; + + ecmHost: string = 'http://localhost:8080'; ticket: string; + @ViewChild(DocumentList) + documentList: DocumentList; + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService, translation: AlfrescoTranslationService, private documentActions: DocumentActionsService) { @@ -194,6 +198,7 @@ class DocumentListDemo implements OnInit { console.log(ticket); this.ticket = this.authService.getTicketEcm(); this.authenticated = true; + this.documentList.reload(); }, error => { console.log(error); diff --git a/ng2-components/ng2-alfresco-documentlist/package.json b/ng2-components/ng2-alfresco-documentlist/package.json index 93290cb4c4..eb198783bc 100644 --- a/ng2-components/ng2-alfresco-documentlist/package.json +++ b/ng2-components/ng2-alfresco-documentlist/package.json @@ -52,26 +52,8 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "@types/node": "^6.0.42", - "alfresco-js-api": "^0.3.1", - "core-js": "^2.4.1", "ng2-alfresco-core": "0.3.2", - "ng2-alfresco-datatable": "0.3.2", - "ng2-translate": "2.5.0", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23" + "ng2-alfresco-datatable": "0.3.2" }, "devDependencies": { "@types/core-js": "^0.9.32", From 7579253a50868fcc7a5bbdb6f13e39f8e5bcac5c Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 01:58:02 +0000 Subject: [PATCH 12/27] #878 demo and doc search component --- ng2-components/ng2-alfresco-login/README.md | 2 +- ng2-components/ng2-alfresco-search/README.md | 442 +++++++----------- .../ng2-alfresco-search/demo/package.json | 22 - .../ng2-alfresco-search/demo/src/main.ts | 3 +- .../ng2-alfresco-search/package.json | 18 - 5 files changed, 171 insertions(+), 316 deletions(-) diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 31247ea484..08b32efd9d 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -1,4 +1,5 @@ # Alfresco Core Component for Angular 2 +

    travis
@@ -93,7 +94,6 @@ Follow the 3 steps below:
 
 This component allow to authenticate to Alfresco One and Alfresco Activiti.
 
-
 ```html
 <alfresco-login [providers]=" ``` diff --git a/ng2-components/ng2-alfresco-search/README.md b/ng2-components/ng2-alfresco-search/README.md index f451cd7ced..006dd6f30d 100644 --- a/ng2-components/ng2-alfresco-search/README.md +++ b/ng2-components/ng2-alfresco-search/README.md @@ -32,59 +32,63 @@

    -### Node -To correctly use this component check that on your machine is running Node version 5.0.0 or higher. +## Prerequisites + +Before you start using this development framework, make sure you have installed all required software and done all the +necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-alfresco-core ng2-alfresco-search -``` +Follow the 3 steps below: -Components included: +1. Npm -- [Search control](#search-control) -- [Search results](#search-results) + ```sh + npm install ng2-alfresco-search --save + ``` -### Search control +2. Html -This component displays a search box on the page, which the user can use to enter a search query. It is decoupled from -the related [search results](#search-results) component which performs a query and displays results. + Include these dependencies in your index.html page: -#### Dependencies + ```html -Add the following dependency to your index.html: + + + + -```html - -``` + + + -The following component needs to be added to your systemjs.config: + + + + -- ng2-translate -- ng2-alfresco-core -- ng2-alfresco-search + + + + -Please refer to the following example to have an idea of how your systemjs.config should look like : + + + + + ``` -https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-search/demo/systemjs.config.js +3. SystemJs -#### Style -The style of this component is based on material design, so if you want to visualize it correctly you have to add the material -design dependency to your project: + Add the following components to your systemjs.config.js file: -```sh -npm install --save material-design-icons material-design-lite -``` + - ng2-translate + - ng2-alfresco-core + - alfresco-js-api + - ng2-alfresco-search -Also make sure you include these dependencies in your .html page: - -```html - - - - -``` + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . #### Basic usage @@ -102,132 +106,70 @@ but instead the component could emit an event to be consumed upstream, or it cou results component embedded inside the same component. ```ts -import { Component, OnInit } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService, - AlfrescoTranslationService -} from 'ng2-alfresco-core'; -import { - ALFRESCO_SEARCH_DIRECTIVES -} from 'ng2-alfresco-search'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule } from 'ng2-alfresco-core'; +import { SearchModule } from 'ng2-alfresco-search'; +import { AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; @Component({ - selector: 'alfresco-search-demo', - template: ` - - -
    - Authentication failed to ip {{ host }} -
    - `, - directives: [ALFRESCO_SEARCH_DIRECTIVES] + selector: 'alfresco-app-demo', + template: `` }) -class SearchDemo implements OnInit { +class SearchDemo { - public searchTerm: string = 'test'; + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; - authenticated: boolean; - - host: string = 'http://myalfrescoip'; - - constructor( - private authService: AlfrescoAuthenticationService, - settings: AlfrescoSettingsService, - translation: AlfrescoTranslationService) { - - settings.host = this.host; - translation.addTranslationFolder(); + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } - - onSearchChange(event) { - console.log('Search term changed', event); - this.searchTerm = event.value; - } - - onSearchSubmit(event) { - console.log('Search submitted', event); - } - - ngOnInit() { - this.login(); - } - - login() { - this.authService.login('admin', 'admin').subscribe(token => { - this.authenticated = true; - }); - } - } -bootstrap(SearchDemo, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + SearchModule + ], + declarations: [SearchDemo], + bootstrap: [SearchDemo] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); ``` #### Events -**searchChange**: Emitted when the search term is changed. The search term is provided in the 'value' property of the returned object. If the term is at less than three characters in length then the term is truncated to an empty string.
    -**searchSubmit**: Emitted when the search form is submitted. The search term is provided in the 'value' property of the returned object.
    -**fileSelect**: Emitted when a file item from the list of find-as-you-type results is selected
    -**expand**: Emitted when the expanded state of the control changes based on focus events and the content of the input control +| Name | Description | +| --- | --- | +| `searchChange` | Emitted when the search term is changed. The search term is provided in the 'value' property of the returned object. If the term is at less than three characters in length then the term is truncated to an empty string. | +| `searchSubmit` | Emitted when the search form is submitted. The search term is provided in the 'value' property of the returned object. | +| `fileSelect` | Emitted when a file item from the list of find-as-you-type results is selected | +| `expand` | Emitted when the expanded state of the control changes based on focus events and the content of the input control | #### Options -**searchTerm**: {string} (optional) default "". Search term to pre-populate the field with
    -**inputType**: {string} (optional) default "text". Type of the input field to render, e.g. "search" or "text" (default)
    -**expandable** {boolean} (optional) default true. Whether to use an expanding search control, if false then a regular input is used.
    -**autocomplete** {boolean} (optional) default true. Whether the browser should offer field auto-completion for the input field to the user.
    -**liveSearchEnabled** {boolean} (optional) default true. Whether find-as-you-type suggestions should be offered for matching content items. Set to false to disable.
    -**liveSearchRoot** {boolean} (optional) default "-root-". NodeRef or node name where the search should start.
    -**liveSearchResultType** {boolean} (optional) default (none). Node type to filter live search results by, e.g. 'cm:content'.
    -**liveSearchMaxResults** {boolean} (optional) default 5. Maximum number of results to show in the live search.
    -**liveSearchResultSort** {boolean} (optional) default (none). Criteria to sort live search results by, must be one of "name" , "modifiedAt" or "createdAt" +| Name | Type | Optional | Default | Description | +| --- | --- | --- | --- | --- | +| `searchTerm` | {string} | (optional) | "" | Search term to pre-populate the field with | +| `inputType` | {string} | (optional) | "text" | Type of the input field to render, e.g. "search" or "text" (default) | +| `expandable` | {boolean} | (optional) | true | Whether to use an expanding search control, if false then a regular input is used. | +| `autocomplet` | {boolean} | (optional) | true | Whether the browser should offer field auto-completion for the input field to the user. | +| `liveSearchEnabled` | {boolean} | (optional) | true | Whether find-as-you-type suggestions should be offered for matching content items. Set to false to disable. | +| `liveSearchRoot` | {boolean} | (optional) | "-root-" | NodeRef or node name where the search should start. | +| `liveSearchResultType` | {boolean} | (optional) | (none) | Node type to filter live search results by, e.g. 'cm:content'. | +| `liveSearchMaxResults` | {boolean} | (optional) | 5 | Maximum number of results to show in the live search. | +| `iveSearchResultSort` | {boolean} | (optional) | (none) | Criteria to sort live search results by, must be one of "name" , "modifiedAt" or "createdAt" | -### Search results - -This component displays the results of a search to the user. - -#### Dependencies - -Add the following dependency to your index.html: - -```html - -``` - -The following component needs to be added to your systemjs.config: - -- ng2-translate -- ng2-alfresco-core -- ng2-alfresco-search - -Please refer to the following example to have an idea of how your systemjs.config should look like : - -https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-search/demo/systemjs.config.js - -#### Style -The style of this component is based on material design, so if you want to visualize it correctly you have to add the material -design dependency to your project: - -```sh -npm install --save material-design-icons material-design-lite -``` - -Also make sure you include these dependencies in your .html page: - -```html - - - - -``` - -#### Basic usage +#### Basic usage Search results ```html @@ -238,157 +180,111 @@ search term. If no router is present on the page of if the router does not provi results page will be shown. ```ts -import { Component, OnInit } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; - -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService, - AlfrescoTranslationService -} from 'ng2-alfresco-core'; - -import { - ALFRESCO_SEARCH_DIRECTIVES -} from 'ng2-alfresco-search'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule } from 'ng2-alfresco-core'; +import { SearchModule } from 'ng2-alfresco-search'; +import { AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; @Component({ - selector: 'alfresco-search-demo', - template: ` - -
    - Authentication failed to ip {{ host }} -
    - `, - directives: [ALFRESCO_SEARCH_DIRECTIVES] -}) -class SearchDemo implements OnInit { - - public searchTerm: string = 'test'; - - authenticated: boolean; - - host: string = 'http://192.168.99.101:8080'; - - constructor( - private authService: AlfrescoAuthenticationService, - settings: AlfrescoSettingsService, - translation: AlfrescoTranslationService) { - - settings.host = this.host; - translation.addTranslationFolder(); - } - - ngOnInit() { - this.login(); - } - - login() { - this.authService.login('admin', 'admin').subscribe(token => { - this.authenticated = true; - }); - } - -} - -bootstrap(SearchDemo, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); -``` - -Example of an component that displays search results, taking the search term from a `@Input` property provided by the container. - -When the input is updated by the application, the search control will run a new search and display the results. - -```ts -import { Component } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS -} from 'ng2-alfresco-core'; -import { - ALFRESCO_SEARCH_DIRECTIVES -} from 'ng2-alfresco-search'; - -@Component({ - selector: 'alfresco-search-demo', - template: ` - - `, - directives: [ALFRESCO_SEARCH_DIRECTIVES] + selector: 'alfresco-app-demo', + template: `` }) class SearchDemo { - @Input() - searchTerm: string = ''; - constructor() { + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } } -bootstrap(SearchDemo, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + SearchModule + ], + declarations: [SearchDemo], + bootstrap: [SearchDemo] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); ``` #### Events -**preview**: Emitted when a file result is clicked/selected
    -**resultsLoad**: Emitted when search results have fully loaded +| Name | Description | +| --- | --- | +| `preview` | Emitted when a file result is clicked/selected | +| `resultsLoad` | Emitted when search results have fully loaded | #### Options -**searchTerm**: {string} (optional) default "". Search term to use when executing the search. Updating this value will -run a new search and update the results.
    -**rootNodeId** {boolean} (optional) default "-root-". NodeRef or node name where the search should start.
    -**resultType** {boolean} (optional) default (none). Node type to filter search results by, e.g. 'cm:content'.
    -**maxResults** {boolean} (optional) default 20. Maximum number of results to show in the search.
    -**resultSort** {boolean} (optional) default (none). Criteria to sort search results by, must be one of "name" , "modifiedAt" or "createdAt" +| Name | Type | Optional | Default | Description | +| --- | --- | --- | --- | --- | +| `searchTerm` | {string} | (optional) | "" | Search term to use when executing the search. Updating this value will run a new search and update the results | +| `rootNodeId` | {boolean} | (optional) | "-root-" | NodeRef or node name where the search should start. | +| `resultType` | {boolean} | (optional) | (none) | Node type to filter search results by, e.g. 'cm:content'. | +| `maxResults` | {boolean} | (optional) | 20 | Maximum number of results to show in the search. | +| `resultSort` | {boolean} | (optional) | (none) | Criteria to sort search results by, must be one of "name" , "modifiedAt" or "createdAt" | -## Build from sources +### Build from sources -Alternatively you can build the component from source with the following commands: + Alternatively you can build component from sources with the following commands: -```sh -npm install -npm run build -``` -##Build the files and keep watching for changes + ```sh + npm install + npm run build + ``` - ```sh - $ npm run build:w - ``` - -## Running unit tests + ### Build the files and keep watching for changes -```sh -npm test -``` + ```sh + $ npm run build:w + ``` -## Running unit tests in browser + ## Running unit tests -```sh -npm test-browser -``` + ```sh + npm test + ``` -This task rebuilds all the code, runs tslint, license checks and other quality check tools -before performing unit testing. + ### Running unit tests in browser -## Code coverage + ```sh + npm test-browser + ``` -```sh -npm run coverage -``` + This task rebuilds all the code, runs tslint, license checks and other quality check tools + before performing unit testing. -## Demo + ### Code coverage -The `demo` folder contains a complete app with both components running on a single page and linked together: + ```sh + npm run coverage + ``` -```sh -cd demo -npm install -npm start -``` + ## Demo + + If you want have a demo of how the component works, please check the demo folder : + + ```sh + cd demo + npm install + npm start + ``` + + ## License + + [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-search/demo/package.json b/ng2-components/ng2-alfresco-search/demo/package.json index 4dc4b84fcf..e4d0107f2f 100644 --- a/ng2-components/ng2-alfresco-search/demo/package.json +++ b/ng2-components/ng2-alfresco-search/demo/package.json @@ -45,28 +45,6 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "ng2-translate": "2.5.0", - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", "ng2-alfresco-search": "^0.3.0" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-search/demo/src/main.ts b/ng2-components/ng2-alfresco-search/demo/src/main.ts index 2259a85d8a..df8ea13e5f 100644 --- a/ng2-components/ng2-alfresco-search/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-search/demo/src/main.ts @@ -28,7 +28,6 @@ import { AlfrescoTranslationService } from 'ng2-alfresco-core'; - @Component({ selector: 'alfresco-app-demo', template: `
    @@ -54,7 +53,7 @@ class SearchDemo implements OnInit { public searchTerm: string = 'test'; - public ecmHost: string = 'http://devproducts-platform.alfresco.me'; + public ecmHost: string = 'http://localhost:8080'; ticket: string; diff --git a/ng2-components/ng2-alfresco-search/package.json b/ng2-components/ng2-alfresco-search/package.json index 894ceab888..2896724c2c 100644 --- a/ng2-components/ng2-alfresco-search/package.json +++ b/ng2-components/ng2-alfresco-search/package.json @@ -52,24 +52,6 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "ng2-translate": "2.5.0", - "alfresco-js-api": "^0.3.0", "ng2-alfresco-core": "0.3.2" }, "devDependencies": { From 5e0f592380892c69968f2a47629b0eb55d13bf6f Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 02:25:06 +0000 Subject: [PATCH 13/27] #878 doc and demo tag component --- .../ng2-alfresco-search/demo/index.html | 14 +- ng2-components/ng2-alfresco-tag/README.md | 323 ++++++++---------- .../ng2-alfresco-tag/demo/index.html | 13 +- .../ng2-alfresco-tag/demo/package.json | 33 +- ng2-components/ng2-alfresco-tag/package.json | 19 +- .../ng2-alfresco-upload/demo/index.html | 15 +- .../ng2-alfresco-userinfo/demo/index.html | 16 +- .../ng2-alfresco-viewer/demo/index.html | 16 +- .../ng2-alfresco-webscript/demo/index.html | 16 +- 9 files changed, 217 insertions(+), 248 deletions(-) diff --git a/ng2-components/ng2-alfresco-search/demo/index.html b/ng2-components/ng2-alfresco-search/demo/index.html index a4180c26a3..d7fe291524 100644 --- a/ng2-components/ng2-alfresco-search/demo/index.html +++ b/ng2-components/ng2-alfresco-search/demo/index.html @@ -10,9 +10,21 @@ - + + + + + + + + + + + + + diff --git a/ng2-components/ng2-alfresco-tag/README.md b/ng2-components/ng2-alfresco-tag/README.md index a7519e00ea..944a1721a6 100644 --- a/ng2-components/ng2-alfresco-tag/README.md +++ b/ng2-components/ng2-alfresco-tag/README.md @@ -31,52 +31,64 @@

    -### Node -To correctly use this component check that on your machine is running Node version 5.0.0 or higher. +## Prerequisites + +Before you start using this development framework, make sure you have installed all required software and done all the +necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-alfresco-tag -``` +Follow the 3 steps below: -Components included: +1. Npm -* Alfresco Tag Component + ```sh + npm install ng2-alfresco-tag --save + ``` -#### Dependencies +2. Html -Add the following dependency to your index.html: + Include these dependencies in your index.html page: -```html - -``` + ```html -The following component needs to be added to your systemjs.config: + + + + -- ng2-translate -- ng2-alfresco-core + + + -Please refer to the following example to have an idea of how your systemjs.config should look like : + + + + -https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-tag/demo/systemjs.config.js + + + + -#### Style -The style of this component is based on material design, so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + + -```sh -npm install --save material-design-icons material-design-lite -``` + ``` -Also make sure you include these dependencies in your .html page: +3. SystemJs -```html - - - - -``` + Add the following components to your systemjs.config.js file: + + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-alfresco-tag + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . #### Basic usage @@ -93,70 +105,45 @@ In this component are present three different tags : ``` ```ts -import { Component, OnInit, Input } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService -} from 'ng2-alfresco-core'; -import { TAGCOMPONENT, TAGSERVICES } from 'ng2-alfresco-tag'; +import { NgModule, Component, Input } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { TagModule } from 'ng2-alfresco-tag'; @Component({ - selector: 'alfresco-tag-demo', - template: ` -
    - -
    - `, - directives: [TAGCOMPONENT], - providers: [TAGSERVICES] + selector: 'alfresco-app-demo', + template: ` + ` }) -class TagDemo implements OnInit { +class TagDemo { - @Input() - nodeId: string = '74cd8a96-8a21-47e5-9b3b-a1b3e296787d'; + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; - authenticated: boolean; - - ecmHost: string = 'http://127.0.0.1:8080'; - - ticket: string; - - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - settingsService.ecmHost = this.ecmHost; - settingsService.setProviders('ECM'); - } - - ngOnInit() { - this.login(); - } - - login() { this.authService.login('admin', 'admin').subscribe( ticket => { - this.authenticated = true; + console.log(ticket); }, error => { - this.authenticated = false; + console.log(error); }); } - - public updateHost(): void { - this.settingsService.ecmHost = this.ecmHost; - this.login(); - } - - logData(data) { - console.log(data); - } } -bootstrap(TagDemo, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + TagModule + ], + declarations: [ TagDemo ], + bootstrap: [ TagDemo ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` ### Options @@ -174,71 +161,45 @@ Attribute | Options | Default | Description | Mandatory ``` ```ts -import { Component, OnInit, Input } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService -} from 'ng2-alfresco-core'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { TAGCOMPONENT, TAGSERVICES } from 'ng2-alfresco-tag'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { TagModule } from 'ng2-alfresco-tag'; @Component({ - selector: 'alfresco-tag-demo', - template: ` -
    - -
    - `, - directives: [TAGCOMPONENT], - providers: [TAGSERVICES] + selector: 'alfresco-app-demo', + template: ` + ` }) -class TagDemo implements OnInit { +class TagDemo { - @Input() - nodeId: string = '74cd8a96-8a21-47e5-9b3b-a1b3e296787d'; + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; - authenticated: boolean; - - ecmHost: string = 'http://127.0.0.1:8080'; - - ticket: string; - - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - settingsService.ecmHost = this.ecmHost; - settingsService.setProviders('ECM'); - } - - ngOnInit() { - this.login(); - } - - login() { this.authService.login('admin', 'admin').subscribe( ticket => { - this.authenticated = true; + console.log(ticket); }, error => { - this.authenticated = false; + console.log(error); }); } - - public updateHost(): void { - this.settingsService.ecmHost = this.ecmHost; - this.login(); - } - - logData(data) { - console.log(data); - } } -bootstrap(TagDemo, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + TagModule + ], + declarations: [ TagDemo ], + bootstrap: [ TagDemo ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` ### Options @@ -256,102 +217,81 @@ Attribute | Options | Default | Description | Mandatory ``` ```ts -import { Component, OnInit, Input } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService -} from 'ng2-alfresco-core'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { TAGCOMPONENT, TAGSERVICES } from 'ng2-alfresco-tag'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { TagModule } from 'ng2-alfresco-tag'; @Component({ - selector: 'alfresco-tag-demo', - template: ` -
    - -
    - `, - directives: [TAGCOMPONENT], - providers: [TAGSERVICES] + selector: 'alfresco-app-demo', + template: `` }) -class TagDemo implements OnInit { +class TagDemo { - authenticated: boolean; + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; - ecmHost: string = 'http://127.0.0.1:8080'; - - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - settingsService.ecmHost = this.ecmHost; - settingsService.setProviders('ECM'); - } - - ngOnInit() { - this.login(); - } - - login() { this.authService.login('admin', 'admin').subscribe( ticket => { - this.authenticated = true; + console.log(ticket); }, error => { - this.authenticated = false; + console.log(error); }); } - - public updateHost(): void { - this.settingsService.ecmHost = this.ecmHost; - this.login(); - } - - logData(data) { - console.log(data); - } } -bootstrap(TagDemo, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + TagModule + ], + declarations: [ TagDemo ], + bootstrap: [ TagDemo ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` ![Custom columns](docs/assets/tag2.png) ## Build from sources + Alternatively you can build component from sources with the following commands: - - + + ```sh npm install npm run build ``` -##Build the files and keep watching for changes +### Build the files and keep watching for changes ```sh -npm run build:w +$ npm run build:w ``` - + ## Running unit tests ```sh npm test ``` -## Running unit tests in browser +### Running unit tests in browser ```sh npm test-browser ``` -This task rebuilds all the code, runs tslint, license checks and other quality check tools -before performing unit testing. +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. -## Code coverage +### Code coverage ```sh npm run coverage @@ -367,3 +307,6 @@ npm install npm start ``` +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-tag/demo/index.html b/ng2-components/ng2-alfresco-tag/demo/index.html index 0d4cf98d82..c32e19e790 100644 --- a/ng2-components/ng2-alfresco-tag/demo/index.html +++ b/ng2-components/ng2-alfresco-tag/demo/index.html @@ -11,10 +11,21 @@ - + + + + + + + + + + + + diff --git a/ng2-components/ng2-alfresco-tag/demo/package.json b/ng2-components/ng2-alfresco-tag/demo/package.json index b0d28b7a37..505bbcbd37 100644 --- a/ng2-components/ng2-alfresco-tag/demo/package.json +++ b/ng2-components/ng2-alfresco-tag/demo/package.json @@ -7,38 +7,15 @@ "scripts": { "clean": "npm install rimraf && rimraf dist node_modules typings dist", "postinstall": "npm run build", - "start": "concurrently \"npm run build:w\" \"npm run server\" ", + "start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ", "server": "wsrv -o -s -l", - "build": "npm run tslint && rimraf dist && tsc", - "build:w": "npm run tslint && rimraf dist && tsc -w", - "tslint": "npm run tslint-src && npm run tslint-root", - "tslint-src": "tslint -c tslint.json 'src/{,**/}**.ts'", - "tslint-root": "tslint -c tslint.json *.ts" + "build": "npm run tslint && rimraf dist && npm run tsc", + "tsc": "tsc", + "tsc:w": "tsc -w", + "tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts" }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "ng2-translate": "2.5.0", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", "ng2-alfresco-tag": "0.3.2" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-tag/package.json b/ng2-components/ng2-alfresco-tag/package.json index 2ce0aa24be..0ebc54cebf 100644 --- a/ng2-components/ng2-alfresco-tag/package.json +++ b/ng2-components/ng2-alfresco-tag/package.json @@ -31,24 +31,7 @@ "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "alfresco-js-api": "^0.3.0", - "core-js": "^2.4.1", - "ng2-alfresco-core": "0.3.2", - "ng2-translate": "2.5.0", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23" + "ng2-alfresco-core": "0.3.2" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-alfresco-upload/demo/index.html b/ng2-components/ng2-alfresco-upload/demo/index.html index 9637c2b781..d788c42269 100644 --- a/ng2-components/ng2-alfresco-upload/demo/index.html +++ b/ng2-components/ng2-alfresco-upload/demo/index.html @@ -8,14 +8,25 @@ - + - + + + + + + + + + + + + diff --git a/ng2-components/ng2-alfresco-userinfo/demo/index.html b/ng2-components/ng2-alfresco-userinfo/demo/index.html index 6d0b272ba6..837414bba8 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/index.html +++ b/ng2-components/ng2-alfresco-userinfo/demo/index.html @@ -8,12 +8,22 @@ - - - + + + + + + + + + + + + + diff --git a/ng2-components/ng2-alfresco-viewer/demo/index.html b/ng2-components/ng2-alfresco-viewer/demo/index.html index 322b3edc35..86aea902df 100644 --- a/ng2-components/ng2-alfresco-viewer/demo/index.html +++ b/ng2-components/ng2-alfresco-viewer/demo/index.html @@ -10,14 +10,28 @@ - + + + + + + + + + + + + + + + diff --git a/ng2-components/ng2-alfresco-webscript/demo/index.html b/ng2-components/ng2-alfresco-webscript/demo/index.html index 90435737db..e274c4debe 100644 --- a/ng2-components/ng2-alfresco-webscript/demo/index.html +++ b/ng2-components/ng2-alfresco-webscript/demo/index.html @@ -11,17 +11,25 @@ - + + + + + + + + + + + + - - - -``` + + + + -The following component needs to be added to your systemjs.config: + + + -- ng2-translate -- ng2-alfresco-core -- ng2-alfresco-upload + + + + -Please refer to the following example to have an idea of how your systemjs.config should look like : + + + + -https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-upload/demo/systemjs.config.js + + + + -#### Style -The style of this component is based on material design, so if you want to visualize it correctly you have to add the material -design dependency to your project: + ``` -```sh -npm install --save material-design-icons material-design-lite -``` +3. SystemJs -Also make sure you include these dependencies in your .html page: + Add the following components to your systemjs.config.js file: + + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-alfresco-upload + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . -```html - - - - -``` #### Basic usage @@ -101,41 +110,53 @@ Also make sure you include these dependencies in your .html page: Example of an App that declares upload button component : ```ts -import { Component, OnInit } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService -} from 'ng2-alfresco-core'; -import { ALFRESCO_ULPOAD_COMPONENTS, UploadService } from 'ng2-alfresco-upload'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { UploadModule } from 'ng2-alfresco-upload'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: ` + (onSuccess)="onSuccess($event)"> - `, - directives: [ALFRESCO_ULPOAD_COMPONENTS] + ` }) export class MyDemoApp { - constructor(alfrescoSettingsService: AlfrescoSettingsService) { - alfrescoSettingsService.host = 'http://myalfrescoip'; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } - public customMethod(event: Object): void { + public onSuccess(event: Object): void { console.log('File uploaded'); } } -bootstrap(MyDemoApp, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS, - UploadService -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + UploadModule.forRoot() + ], + declarations: [ MyDemoApp ], + bootstrap: [ MyDemoApp ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` #### Events @@ -169,40 +190,52 @@ This component, provide a drag and drop are to upload files to alfresco. Example of an App that declares upload drag and drop component : ```ts -import { Component, OnInit } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService -} from 'ng2-alfresco-core'; -import { ALFRESCO_ULPOAD_COMPONENTS, UploadService } from 'ng2-alfresco-upload'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { UploadModule } from 'ng2-alfresco-upload'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: `
    DRAG HERE
    - `, - directives: [ALFRESCO_ULPOAD_COMPONENTS] + ` }) export class MyDemoApp { - constructor(alfrescoSettingsService: AlfrescoSettingsService) { - alfrescoSettingsService.host = 'http://myalfrescoip'; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } - public customMethod(event: Object): void { + public onSuccess(event: Object): void { console.log('File uploaded'); } } -bootstrap(MyDemoApp, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS, - UploadService -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + UploadModule.forRoot() + ], + declarations: [ MyDemoApp ], + bootstrap: [ MyDemoApp ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` @@ -232,6 +265,7 @@ with upload button or drag & drop area components. This component should ``` ## Build from sources + Alternatively you can build component from sources with the following commands: @@ -240,28 +274,28 @@ npm install npm run build ``` -##Build the files and keep watching for changes +### Build the files and keep watching for changes ```sh -npm run build:w +$ npm run build:w ``` - + ## Running unit tests ```sh npm test ``` -## Running unit tests in browser +### Running unit tests in browser ```sh npm test-browser ``` -This task rebuilds all the code, runs tslint, license checks and other quality check tools -before performing unit testing. +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. -## Code coverage +### Code coverage ```sh npm run coverage @@ -276,3 +310,7 @@ cd demo npm install npm start ``` + +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-upload/demo/package.json b/ng2-components/ng2-alfresco-upload/demo/package.json index 4c4fcd6494..d45d34350d 100644 --- a/ng2-components/ng2-alfresco-upload/demo/package.json +++ b/ng2-components/ng2-alfresco-upload/demo/package.json @@ -45,28 +45,6 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0" - "@types/node": "^6.0.42", , - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "ng2-translate": "2.5.0", - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", "ng2-alfresco-upload": "^0.3.0" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-upload/demo/src/main.ts b/ng2-components/ng2-alfresco-upload/demo/src/main.ts index d03a393d23..51ea3cf502 100644 --- a/ng2-components/ng2-alfresco-upload/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-upload/demo/src/main.ts @@ -69,7 +69,6 @@ import { UploadModule } from 'ng2-alfresco-upload';

    -

    travis
@@ -31,47 +32,72 @@
   </a>
 </p>
 
-### Node
-To correctly use this component check that on your machine is running Node version 5.0.0 or higher.
+## Prerequisites
+
+Before you start using this development framework, make sure you have installed all required software and done all the
+necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md).
 
 ## Install
 
-```sh
-npm install --save ng2-alfresco-viewer
-```
+Follow the 3 steps below:
 
-#### Dependencies
+1. Npm
 
-Add the following dependency to your index.html:
+    ```sh
+    npm install ng2-alfresco-viewer --save
+    ```
 
-```html
-<script src="node_modules/pdfjs-dist/build/pdf.js"></script>
-<script src="node_modules/pdfjs-dist/build/pdf.worker.js"></script>
-<script src="node_modules/pdfjs-dist/web/pdf_viewer.js"></script>
-<script src="node_modules/alfresco-js-api/dist/alfresco-js-api.js"></script>
-```
+2. Html
 
-The following component needs to be added to your systemjs.config: 
+    Include these dependencies in your index.html page:
 
-- ng2-translate
-- ng2-alfresco-core
+    ```html
 
-#### Style
-The style of this component is based on material design, so if you want to visualize it correctly you have to add the material
-design dependency to your project:
+    <!-- Google Material Design Lite -->
+    <link rel="stylesheet" href="node_modules/material-design-lite/material.min.css">
+    <script src="node_modules/material-design-lite/material.min.js"></script>
+    <link rel="stylesheet" href="node_modules/material-design-icons/iconfont/material-icons.css">
 
-```sh
-npm install --save material-design-icons material-design-lite
-```
+    <!-- Polyfill(s) for Safari (pre-10.x) -->
+    <script src="node_modules/intl/dist/Intl.min.js"></script>
+    <script src="node_modules/intl/locale-data/jsonp/en.js"></script>
 
-Also make sure you include these dependencies in your .html page:
+    <!-- Polyfill(s) for older browsers -->
+    <script src="node_modules/core-js/client/shim.min.js"></script>
+    <script src="//cdnjs.cloudflare.com/ajax/libs/dom4/1.8.3/dom4.js"></script>
+    <script src="node_modules/element.scrollintoviewifneeded-polyfill/index.js"></script>
 
-```html
-<!-- Google Material Design Lite -->
-<link rel="stylesheet" href="node_modules/material-design-lite/material.min.css">
-<script src="node_modules/material-design-lite/material.min.js"></script>
-<link rel="stylesheet" href="node_modules/material-design-icons/iconfont/material-icons.css">
-```
+    <!-- Polyfill(s) for dialogs -->
+    <script src="node_modules/dialog-polyfill/dialog-polyfill.js"></script>
+    <link rel="stylesheet" type="text/css" href="node_modules/dialog-polyfill/dialog-polyfill.css" />
+    <style>._dialog_overlay { position: static !important; } </style>
+
+    <!-- Modules  -->
+    <script src="node_modules/zone.js/dist/zone.js"></script>
+    <script src="node_modules/reflect-metadata/Reflect.js"></script>
+    <script src="node_modules/systemjs/dist/system.src.js"></script>
+
+    <!-- Polyfill(s) for pdf support -->
+    <script src="node_modules/pdfjs-dist/web/compatibility.js"></script>
+
+    <script src="node_modules/pdfjs-dist/build/pdf.js"></script>
+    <script src="node_modules/pdfjs-dist/build/pdf.worker.js"></script>
+    <script src="node_modules/pdfjs-dist/web/pdf_viewer.js"></script>
+
+
+    ```
+
+3. SystemJs
+
+    Add the following components to your systemjs.config.js file:
+
+    - ng2-translate
+    - alfresco-js-api
+    - ng2-alfresco-core
+    - ng2-alfresco-viewer
+
+    Please refer to the following example file: [systemjs.config.js](demo/systemjs
+    .config.js) .
 
 #### Basic usage with node id
 
@@ -82,28 +108,46 @@ Also make sure you include these dependencies in your .html page:
 Example of an App that declares the file viewer component :
 
 ```ts
-import { Component } from + selector: 'alfresco-app-demo', + template: `

    - `, - directives: [VIEWERCOMPONENT] + ` }) class MyDemoApp { - fileNodeId: any; - - constructor() { - this.fileNodeId = '09469a81-1ed9-4caa-a5df-8362fc3d096f'; + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } } -bootstrap(MyDemoApp, [ - VIEWERCOMPONENT -]); + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + ViewerModule.forRoot() + ], + declarations: [ MyDemoApp ], + bootstrap: [ MyDemoApp ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); + ``` #### Basic usage with urlFile @@ -115,25 +159,45 @@ bootstrap(MyDemoApp, [ Example of an App that declares the file viewer component : ```ts -import { Component } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { VIEWERCOMPONENT } from 'ng2-alfresco-viewer'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { ViewerModule } from 'ng2-alfresco-viewer'; @Component({ - selector: 'my-app', - template: ` + selector: 'alfresco-app-demo', + template: `
    -
    `, - directives: [VIEWERCOMPONENT] +
    ` }) class MyDemoApp { - constructor() { - console.log('constructor'); + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } } -bootstrap(MyDemoApp, [ - VIEWERCOMPONENT -]); + +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + ViewerModule.forRoot() + ], + declarations: [ MyDemoApp ], + bootstrap: [ MyDemoApp ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` #### Options @@ -157,26 +221,28 @@ Text | pdf ## Build from sources + Alternatively you can build component from sources with the following commands: + ```sh npm install npm run build ``` -##Build the files and keep watching for changes +### Build the files and keep watching for changes + +```sh +$ npm run build:w +``` - ```sh - $ npm run build:w - ``` - ## Running unit tests ```sh npm test ``` -## Running unit tests in browser +### Running unit tests in browser ```sh npm test-browser @@ -185,7 +251,7 @@ npm test-browser This task rebuilds all the code, runs tslint, license checks and other quality check tools before performing unit testing. -## Code coverage +### Code coverage ```sh npm run coverage @@ -201,25 +267,7 @@ npm install npm start ``` +## License -## History +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) -For detailed changelog, check [Releases](https://github.com/alfresco/ng2-alfresco-viewer/releases). - -## Contributors - -[Contributors](https://github.com/alfresco/ng2-alfresco-viewer/graphs/contributors) - - -[npm-image]: https://badge.fury.io/js/ng2-alfresco-viewer.svg -[npm-url]: https://npmjs.org/package/ng2-alfresco-viewer -[travis-image]: https://travis-ci.org/alfresco/ng2-alfresco-viewer.svg?branch=master -[travis-url]: https://travis-ci.org/alfresco/ng2-alfresco-viewer -[daviddm-image]: https://david-dm.org/alfresco/ng2-alfresco-viewer.svg?theme=shields.io -[daviddm-url]: https://david-dm.org/alfresco/ng2-alfresco-viewer -[coveralls-image]: https://coveralls.io/repos/alfresco/ng2-alfresco-viewer/badge.svg -[coveralls-url]: https://coveralls.io/r/alfresco/ng2-alfresco-viewer -[style-url]: https://github.com/mgechev/angular2-style-guide -[style-image]: https://mgechev.github.io/angular2-style-guide/images/badge.svg -[alfrescocomponent-image]: https://img.shields.io/badge/Alfresco%20component-approved-green.svg -[alfrescocomponent-url]: https://www.alfresco.com diff --git a/ng2-components/ng2-alfresco-viewer/demo/package.json b/ng2-components/ng2-alfresco-viewer/demo/package.json index 23d7a464e6..ff16381bf9 100644 --- a/ng2-components/ng2-alfresco-viewer/demo/package.json +++ b/ng2-components/ng2-alfresco-viewer/demo/package.json @@ -17,29 +17,6 @@ }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "pdfjs-dist": "1.5.258", - - "ng2-translate": "2.5.0", - "ng2-alfresco-core": "^0.3.0", - "alfresco-js-api": "^0.3.0", "ng2-alfresco-viewer": "0.3.2" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-viewer/demo/src/main.ts b/ng2-components/ng2-alfresco-viewer/demo/src/main.ts index 378184d205..26796f0ac3 100644 --- a/ng2-components/ng2-alfresco-viewer/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-viewer/demo/src/main.ts @@ -33,16 +33,21 @@ import { ViewerModule } from 'ng2-alfresco-viewer'; operations.

    -
    - -
    -
    -
    ` + + File node id: +
    + +
    +
    +
    ` }) class MyDemoApp { + + fileNodeId: string; + authenticated: boolean; ecmHost: string = 'http://127.0.0.1:8080'; diff --git a/ng2-components/ng2-alfresco-viewer/package.json b/ng2-components/ng2-alfresco-viewer/package.json index 7e320d2ea2..361a9228e4 100644 --- a/ng2-components/ng2-alfresco-viewer/package.json +++ b/ng2-components/ng2-alfresco-viewer/package.json @@ -46,23 +46,6 @@ "alfresco" ], "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - "ng2-translate": "2.5.0", - "alfresco-js-api": "^0.3.0", "ng2-alfresco-core": "0.3.2", "pdfjs-dist": "1.5.404" }, From 3aa64626de353ea67a1f0ef800c6ae4515f02533 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 03:32:24 +0000 Subject: [PATCH 16/27] #878 doc and demo webscript component --- ng2-components/ng2-alfresco-tag/README.md | 1 + .../ng2-alfresco-webscript/README.md | 170 +++++++++++------- .../ng2-alfresco-webscript/demo/package.json | 22 --- .../demo/systemjs.config.js | 21 +-- .../ng2-alfresco-webscript/package.json | 18 -- 5 files changed, 107 insertions(+), 125 deletions(-) diff --git a/ng2-components/ng2-alfresco-tag/README.md b/ng2-components/ng2-alfresco-tag/README.md index 944a1721a6..36e75ba3d2 100644 --- a/ng2-components/ng2-alfresco-tag/README.md +++ b/ng2-components/ng2-alfresco-tag/README.md @@ -1,4 +1,5 @@ # Alfresco Tag Component for Angular 2 +

    travis
diff --git a/ng2-components/ng2-alfresco-webscript/README.md b/ng2-components/ng2-alfresco-webscript/README.md
index 8f2ec302d5..ce54ee7040 100644
--- a/ng2-components/ng2-alfresco-webscript/README.md
+++ b/ng2-components/ng2-alfresco-webscript/README.md
@@ -1,4 +1,5 @@
 # Alfresco Webscript Component for Angular 2
+
 <p>
   <a title= travis
@@ -14,56 +15,81 @@
   <a href= npm downloads + + license + + + alfresco component + + + angular 2 + + + typescript + + + node version +

    -### Node -To correctly use this component check that on your machine is running Node version 5.0.0 or higher. +## Prerequisites + +Before you start using this development framework, make sure you have installed all required software and done all the +necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). ## Install -```sh -npm install --save ng2-alfresco-webscript -``` +Follow the 3 steps below: -Components included: +1. Npm -* Alfresco Webscript Component + ```sh + npm install ng2-alfresco-webscript --save + ``` -#### Dependencies +2. Html -Add the following dependency to your index.html: + Include these dependencies in your index.html page: -```html - -``` + ```html -The following component needs to be added to your systemjs.config: + + + + -- ng2-translate -- ng2-alfresco-core -- ng2-alfresco-datatable + + + -Please refer to the following example to have an idea of how your systemjs.config should look like : + + + + -https://github.com/Alfresco/alfresco-ng2-components/blob/master/ng2-components/ng2-alfresco-webscript/demo/systemjs.config.js + + + + -#### Style -The style of this component is based on material design, so if you want to visualize it correctly you have to add the material -design dependency to your project: + + + + -```sh -npm install --save material-design-icons material-design-lite -``` + ``` -Also make sure you include these dependencies in your .html page: +3. SystemJs -```html - - - - -``` + Add the following components to your systemjs.config.js file: + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-alfresco-datatable + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . #### Basic usage @@ -83,47 +109,57 @@ Example of an App that use Alfresco webscript component : main.ts ```ts -import { Component } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; - -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService -} from 'ng2-alfresco-core'; - -import { WEBSCRIPTCOMPONENT } from 'ng2-alfresco-webscript'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; +import { DataTableModule } from 'ng2-alfresco-datatable'; +import { WebScriptModule } from 'ng2-alfresco-webscript'; @Component({ - selector: 'my-app', - template: ` - - `, - directives: [WEBSCRIPTCOMPONENT] + + ` }) -export class AppComponent { +class WebscriptDemo { scriptPath: string = 'sample/folder/Company%20Home'; contextRoot: string = 'alfresco'; servicePath: string = 'service'; - - constructor(public auth: AlfrescoAuthenticationService, - alfrescoSettingsService: AlfrescoSettingsService) { - alfrescoSettingsService.host = 'http://myalfrescoip'; + + constructor(private authService: AlfrescoAuthenticationService, private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = 'http://localhost:8080'; + + this.authService.login('admin', 'admin').subscribe( + ticket => { + console.log(ticket); + }, + error => { + console.log(error); + }); } } -bootstrap(AppComponent, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot(), + DataTableModule, + WebScriptModule + ], + declarations: [ WebscriptDemo ], + bootstrap: [ WebscriptDemo ] +}) +export class AppModule { } + +platformBrowserDynamic().bootstrapModule(AppModule); ``` @@ -246,36 +282,37 @@ You can get the plain data from the webscript through the **onSuccess** event pa ## Build from sources + Alternatively you can build component from sources with the following commands: - - + + ```sh npm install npm run build ``` -##Build the files and keep watching for changes +### Build the files and keep watching for changes ```sh -npm run build:w +$ npm run build:w ``` - + ## Running unit tests ```sh npm test ``` -## Running unit tests in browser +### Running unit tests in browser ```sh npm test-browser ``` -This task rebuilds all the code, runs tslint, license checks and other quality check tools -before performing unit testing. +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. -## Code coverage +### Code coverage ```sh npm run coverage @@ -291,3 +328,6 @@ npm install npm start ``` +## License + +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-webscript/demo/package.json b/ng2-components/ng2-alfresco-webscript/demo/package.json index a5c73402f0..130984ef07 100644 --- a/ng2-components/ng2-alfresco-webscript/demo/package.json +++ b/ng2-components/ng2-alfresco-webscript/demo/package.json @@ -17,28 +17,6 @@ }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "ng2-translate": "2.5.0", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", - "ng2-alfresco-datatable": "^0.3.0", "ng2-alfresco-webscript": "^0.3.0" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-webscript/demo/systemjs.config.js b/ng2-components/ng2-alfresco-webscript/demo/systemjs.config.js index a25396af08..17de8a5ef3 100644 --- a/ng2-components/ng2-alfresco-webscript/demo/systemjs.config.js +++ b/ng2-components/ng2-alfresco-webscript/demo/systemjs.config.js @@ -26,17 +26,8 @@ 'ng2-translate': 'npm:ng2-translate', 'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist', 'ng2-alfresco-datatable': 'npm:ng2-alfresco-datatable/dist', - 'ng2-alfresco-documentlist': 'npm:ng2-alfresco-documentlist/dist', - 'ng2-alfresco-login': 'npm:ng2-alfresco-login/dist', - 'ng2-alfresco-search': 'npm:ng2-alfresco-search/dist', - 'ng2-alfresco-upload': 'npm:ng2-alfresco-upload/dist', - 'ng2-activiti-form': 'npm:ng2-activiti-form/dist', - 'ng2-alfresco-viewer': 'npm:ng2-alfresco-viewer/dist', 'ng2-alfresco-webscript': 'npm:ng2-alfresco-webscript/dist', - 'ng2-alfresco-tag': 'npm:ng2-alfresco-tag/dist', - 'ng2-activiti-tasklist': 'npm:ng2-activiti-tasklist/dist', - 'alfresco-js-api': 'npm:alfresco-js-api/dist', - 'ng2-activiti-processlist': 'npm:ng2-activiti-processlist/dist' + 'alfresco-js-api': 'npm:alfresco-js-api/dist' }, // packages tells the System loader how to load when no filename and/or no extension packages: { @@ -48,19 +39,9 @@ defaultExtension: 'js' }, 'ng2-translate': { defaultExtension: 'js' }, - 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-datatable': { main: './index.js', defaultExtension: 'js'}, - 'ng2-alfresco-documentlist': { main: './index.js', defaultExtension: 'js'}, - 'ng2-alfresco-login': { main: './index.js', defaultExtension: 'js'}, - 'ng2-alfresco-search': { main: './index.js', defaultExtension: 'js'}, - 'ng2-alfresco-upload': { main: './index.js', defaultExtension: 'js'}, - 'ng2-alfresco-viewer': { main: './index.js', defaultExtension: 'js'}, - 'ng2-activiti-form': { main: './index.js', defaultExtension: 'js'}, - 'ng2-activiti-processlist': { main: './index.js', defaultExtension: 'js'}, - 'ng2-activiti-tasklist': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-webscript': { main: './index.js', defaultExtension: 'js'}, - 'ng2-alfresco-tag': { main: './index.js', defaultExtension: 'js'}, 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'} } }); diff --git a/ng2-components/ng2-alfresco-webscript/package.json b/ng2-components/ng2-alfresco-webscript/package.json index 1da32f23ae..afbecf27c4 100644 --- a/ng2-components/ng2-alfresco-webscript/package.json +++ b/ng2-components/ng2-alfresco-webscript/package.json @@ -31,24 +31,6 @@ "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "alfresco-js-api": "^0.3.0", - "ng2-translate": "2.5.0", "ng2-alfresco-core": "0.3.2", "ng2-alfresco-datatable": "0.3.2" }, From 177c9694af2e0041030481cae8d7158fc82c0159 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 12:27:44 +0000 Subject: [PATCH 17/27] #878 doc,demo and code improvements userinfo component --- .../ng2-activiti-analytics/README.md | 10 ++ .../ng2-activiti-diagrams/README.md | 10 ++ ng2-components/ng2-activiti-form/README.md | 10 ++ .../ng2-activiti-processlist/README.md | 10 ++ .../ng2-activiti-tasklist/README.md | 10 ++ ng2-components/ng2-alfresco-core/README.md | 10 ++ .../AlfrescoAuthentication.service.ts | 2 +- .../ng2-alfresco-datatable/README.md | 10 ++ .../ng2-alfresco-documentlist/README.md | 10 ++ ng2-components/ng2-alfresco-login/README.md | 10 ++ ng2-components/ng2-alfresco-search/README.md | 10 ++ ng2-components/ng2-alfresco-tag/README.md | 10 ++ ng2-components/ng2-alfresco-upload/README.md | 10 ++ .../ng2-alfresco-userinfo/README.md | 159 ++++++++++++------ .../ng2-alfresco-userinfo/demo/package.json | 22 --- .../ng2-alfresco-userinfo/demo/src/main.ts | 4 +- .../demo/systemjs.config.js | 1 - .../ng2-alfresco-userinfo/package.json | 18 -- .../src/components/user-info.component.ts | 31 +++- ng2-components/ng2-alfresco-viewer/README.md | 10 ++ .../ng2-alfresco-webscript/README.md | 10 ++ 21 files changed, 269 insertions(+), 108 deletions(-) diff --git a/ng2-components/ng2-activiti-analytics/README.md b/ng2-components/ng2-activiti-analytics/README.md index 136f8cad99..166bf6e17c 100644 --- a/ng2-components/ng2-activiti-analytics/README.md +++ b/ng2-components/ng2-activiti-analytics/README.md @@ -302,6 +302,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-activiti-diagrams/README.md b/ng2-components/ng2-activiti-diagrams/README.md index 686783f682..5192d5647a 100644 --- a/ng2-components/ng2-activiti-diagrams/README.md +++ b/ng2-components/ng2-activiti-diagrams/README.md @@ -211,6 +211,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-activiti-form/README.md b/ng2-components/ng2-activiti-form/README.md index 164722c525..f8c02b3ac8 100644 --- a/ng2-components/ng2-activiti-form/README.md +++ b/ng2-components/ng2-activiti-form/README.md @@ -371,6 +371,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-activiti-processlist/README.md b/ng2-components/ng2-activiti-processlist/README.md index 6ff436c351..be0d6f1308 100644 --- a/ng2-components/ng2-activiti-processlist/README.md +++ b/ng2-components/ng2-activiti-processlist/README.md @@ -411,6 +411,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md index 5a860a5885..e8db244743 100644 --- a/ng2-components/ng2-activiti-tasklist/README.md +++ b/ng2-components/ng2-activiti-tasklist/README.md @@ -343,6 +343,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-core/README.md b/ng2-components/ng2-alfresco-core/README.md index de14e82d01..616e997f0b 100644 --- a/ng2-components/ng2-alfresco-core/README.md +++ b/ng2-components/ng2-alfresco-core/README.md @@ -246,6 +246,16 @@ before performing unit testing. npm run coverage ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts b/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts index 90064f06ef..9d25072986 100644 --- a/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts +++ b/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts @@ -105,10 +105,10 @@ export class AlfrescoAuthenticationService { * @returns {Observable|Observable} */ public logout() { + this.removeTicket(); return Observable.fromPromise(this.callApiLogout()) .map(res => res) .do(response => { - this.removeTicket(); return response; }) .catch(this.handleError); diff --git a/ng2-components/ng2-alfresco-datatable/README.md b/ng2-components/ng2-alfresco-datatable/README.md index 401b24edb6..60f33a654d 100644 --- a/ng2-components/ng2-alfresco-datatable/README.md +++ b/ng2-components/ng2-alfresco-datatable/README.md @@ -482,6 +482,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-documentlist/README.md b/ng2-components/ng2-alfresco-documentlist/README.md index 7b72db8845..738bd97733 100644 --- a/ng2-components/ng2-alfresco-documentlist/README.md +++ b/ng2-components/ng2-alfresco-documentlist/README.md @@ -779,6 +779,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-login/README.md b/ng2-components/ng2-alfresco-login/README.md index 08b32efd9d..1735cbcfc2 100644 --- a/ng2-components/ng2-alfresco-login/README.md +++ b/ng2-components/ng2-alfresco-login/README.md @@ -312,6 +312,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-search/README.md b/ng2-components/ng2-alfresco-search/README.md index 006dd6f30d..4092139241 100644 --- a/ng2-components/ng2-alfresco-search/README.md +++ b/ng2-components/ng2-alfresco-search/README.md @@ -285,6 +285,16 @@ platformBrowserDynamic().bootstrapModule(AppModule); npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-tag/README.md b/ng2-components/ng2-alfresco-tag/README.md index 36e75ba3d2..2e989d0983 100644 --- a/ng2-components/ng2-alfresco-tag/README.md +++ b/ng2-components/ng2-alfresco-tag/README.md @@ -308,6 +308,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-upload/README.md b/ng2-components/ng2-alfresco-upload/README.md index 6ba7121d26..a5f3ea9cef 100644 --- a/ng2-components/ng2-alfresco-upload/README.md +++ b/ng2-components/ng2-alfresco-upload/README.md @@ -311,6 +311,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-userinfo/README.md b/ng2-components/ng2-alfresco-userinfo/README.md index 21b95c61ac..373bbd8ab7 100644 --- a/ng2-components/ng2-alfresco-userinfo/README.md +++ b/ng2-components/ng2-alfresco-userinfo/README.md @@ -1,4 +1,5 @@ # Alfresco User Info Component for Angular 2 +

    travis
@@ -11,8 +12,8 @@
   <a href= Coverage Status - - npm downloads + + npm downloads license @@ -31,78 +32,130 @@

    -### Node -To correctly use this component check that on your machine is running Node version 5.0.0 or higher. - - ## Prerequisites Before you start using this development framework, make sure you have installed all required software and done all the -necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). +necessary configuration [prerequisites](https://github.com/Alfresco/alfresco-ng2-components/blob/master/PREREQUISITES.md). -## Installation +## Install -```bash -npm install ng2-alfresco-userinfo --save -``` -## Dependencies +Follow the 3 steps below: -Add the following dependency to your index.html: -```html - -``` - -You must separately install the following libraries for your application: - -- [ng2-translate](https://github.com/ocombe/ng2-translate) -- [ng2-alfresco-core](https://www.npmjs.com/package/ng2-alfresco-core) +1. Npm -```sh -npm install --save ng2-translate ng2-alfresco-core -``` - -#### Material Design Lite + ```sh + npm install ng2-alfresco-userinfo --save + ``` -The style of this component is based on [material design](https://getmdl.io/), so if you want to visualize it correctly you have to add the material -design dependency to your project: +2. Html -```sh -npm install --save material-design-icons material-design-lite -``` + Include these dependencies in your index.html page: -Also make sure you include these dependencies in your `index.html` file: + ```html -```html - - - - -``` - -## Example + + + + + + + + + + + + + + + + + + + + + + + + + ``` + +3. SystemJs + + Add the following components to your systemjs.config.js file: + + - ng2-translate + - alfresco-js-api + - ng2-alfresco-core + - ng2-alfresco-userinfo + + Please refer to the following example file: [systemjs.config.js](demo/systemjs + .config.js) . ## Basic usage ```html - - + ``` ### Properties | Name | Type | Default | Description | | --- | --- | --- | --- | -| ecmBackgroundImage | string | | Custom path for the background banner image for ECM users | -| bpmBackgroundImage | string | | Custom path for the background banner image for BPM users | -| menuOpenType | string | bottom-right | Custom choice for opening menu bottom right or bottom left | -| fallBackThumbnailImage | string | image at ng2-alfresco-userinfo/src/img/anonymous.gif | Fallback image for profile when thubnail is missing| +| `ecmBackgroundImage` | string | ng2-alfresco-userinfo/src/img/orangeBanner.gif | Custom path for the background banner image for ECM users | +| `bpmBackgroundImage` | string | ng2-alfresco-userinfo/src/img/blueBanner.gif | Custom path for the background banner image for BPM users | +| `menuOpenType` | string | right | Custom choice for opening menu bottom : `right` or `left` | +| `fallBackThumbnailImage` | string | ng2-alfresco-userinfo/src/img/anonymous.gif | Fallback image for profile when thubnail is missing| This will show a round icon with user and on click some user information are showed. If user is logged in with ECM and BPM the ECM image will be showed. +## Build from sources + +Alternatively you can build component from sources with the following commands: + + +```sh +npm install +npm run build +``` + +### Build the files and keep watching for changes + +```sh +$ npm run build:w +``` + +## Running unit tests + +```sh +npm test +``` + +### Running unit tests in browser + +```sh +npm test-browser +``` + +This task rebuilds all the code, runs tslint, license checks and other quality check tools +before performing unit testing. + +### Code coverage + +```sh +npm run coverage +``` + +## Demo + +If you want have a demo of how the component works, please check the demo folder : + +```sh +cd demo +npm install +npm start +``` + ## NPM scripts | Command | Description | @@ -113,10 +166,6 @@ If user is logged in with ECM and BPM the ECM image will be showed. | npm run test-browser | Run unit tests in the browser | npm run coverage | Run unit tests and display code coverage report | -## History +## License -For detailed changelog, check [Releases](https://github.com/alfresco/ng2-alfresco-userinfo/releases). - -## Contributors - -[Contributors](https://github.com/alfresco/ng2-alfresco-userinfo/graphs/contributors) \ No newline at end of file +[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) \ No newline at end of file diff --git a/ng2-components/ng2-alfresco-userinfo/demo/package.json b/ng2-components/ng2-alfresco-userinfo/demo/package.json index 89001b7434..5cb3aff079 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/package.json +++ b/ng2-components/ng2-alfresco-userinfo/demo/package.json @@ -16,28 +16,6 @@ }, "license": "Apache-2.0", "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "material-design-icons": "2.2.3", - "material-design-lite": "1.2.1", - "ng2-translate": "2.5.0", - - "alfresco-js-api": "^0.3.0", - "ng2-alfresco-core": "^0.3.0", "ng2-alfresco-userinfo": "0.3.2" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts index 171af79d8d..d7981d6240 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts @@ -24,7 +24,7 @@ import { CoreModule } from 'ng2-alfresco-core'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @Component({ - selector: 'alfresco-app-demo', + selector: 'alfresco-app-demo', template: `

    START DEMO USERINFO

    @@ -43,7 +43,7 @@ import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfr

    - +

    diff --git a/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js b/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js index 8ccc6d9aea..772783f002 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js +++ b/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js @@ -38,7 +38,6 @@ defaultExtension: 'js' }, 'ng2-translate': { defaultExtension: 'js' }, - 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-userinfo': { main: './index.js', defaultExtension: 'js'}, 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'} diff --git a/ng2-components/ng2-alfresco-userinfo/package.json b/ng2-components/ng2-alfresco-userinfo/package.json index 302a0b705b..5ad2f74f4c 100644 --- a/ng2-components/ng2-alfresco-userinfo/package.json +++ b/ng2-components/ng2-alfresco-userinfo/package.json @@ -31,24 +31,6 @@ "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { - "@angular/common": "2.0.0", - "@angular/compiler": "2.0.0", - "@angular/core": "2.0.0", - "@angular/forms": "2.0.0", - "@angular/http": "2.0.0", - "@angular/platform-browser": "2.0.0", - "@angular/platform-browser-dynamic": "2.0.0", - "@angular/router": "3.0.0", - "@angular/upgrade": "2.0.0", - "@types/node": "^6.0.42", - "core-js": "^2.4.1", - "reflect-metadata": "^0.1.3", - "rxjs": "5.0.0-beta.12", - "systemjs": "0.19.27", - "zone.js": "^0.6.23", - - "alfresco-js-api": "^0.3.0", - "ng2-translate": "2.5.0", "ng2-alfresco-core": "0.3.2" }, "devDependencies": { diff --git a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts index 422c23987a..e1fcf12546 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts +++ b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.ts @@ -15,12 +15,14 @@ * limitations under the License. */ -import { Component, OnInit, Input } from '@angular/core'; +import { Component, OnInit, Input, AfterViewChecked } from '@angular/core'; import { EcmUserModel } from './../models/ecm-user.model'; import { BpmUserModel } from './../models/bpm-user.model'; import { EcmUserService } from './../services/ecm-user.service'; import { BpmUserService } from './../services/bpm-user.service'; -import { AlfrescoSettingsService, AlfrescoTranslationService } from 'ng2-alfresco-core'; +import { AlfrescoTranslationService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; + +declare let componentHandler: any; @Component({ selector: 'ng2-alfresco-userinfo', @@ -28,8 +30,7 @@ import { AlfrescoSettingsService, AlfrescoTranslationService } from 'ng2-alfresc styleUrls: ['./user-info.component.css'], templateUrl: './user-info.component.html' }) - -export class UserInfoComponent implements OnInit { +export class UserInfoComponent implements AfterViewChecked, OnInit { @Input() ecmBackgroundImage: string; @@ -53,16 +54,27 @@ export class UserInfoComponent implements OnInit { constructor(private ecmUserService: EcmUserService, private bpmUserService: BpmUserService, - public setting: AlfrescoSettingsService, + private authService: AlfrescoAuthenticationService, private translate: AlfrescoTranslationService) { if (translate) { translate.addTranslationFolder('node_modules/ng2-alfresco-userinfo/src'); } } + ngAfterViewChecked() { + // workaround for MDL issues with dynamic components + if (componentHandler) { + componentHandler.upgradeAllRegistered(); + } + } + ngOnInit() { - if (this.setting.getProviders() === 'ECM' || - this.setting.getProviders() === 'ALL') { + this.getEcmUserInfo(); + this.getBpmUserInfo(); + } + + getEcmUserInfo(): void { + if (this.authService.isEcmLoggedIn()) { this.ecmUserService.getCurrentUserInfo() .subscribe((res) => { this.ecmUser = res; @@ -70,9 +82,10 @@ export class UserInfoComponent implements OnInit { } ); } + } - if (this.setting.getProviders() === 'BPM' || - this.setting.getProviders() === 'ALL') { + getBpmUserInfo(): void { + if (this.authService.isBpmLoggedIn()) { this.bpmUserService.getCurrentUserInfo() .subscribe((res) => { this.bpmUser = res; diff --git a/ng2-components/ng2-alfresco-viewer/README.md b/ng2-components/ng2-alfresco-viewer/README.md index 36ef77c70f..e7e46063c9 100644 --- a/ng2-components/ng2-alfresco-viewer/README.md +++ b/ng2-components/ng2-alfresco-viewer/README.md @@ -267,6 +267,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) diff --git a/ng2-components/ng2-alfresco-webscript/README.md b/ng2-components/ng2-alfresco-webscript/README.md index ce54ee7040..4f86f12016 100644 --- a/ng2-components/ng2-alfresco-webscript/README.md +++ b/ng2-components/ng2-alfresco-webscript/README.md @@ -328,6 +328,16 @@ npm install npm start ``` +## NPM scripts + +| Command | Description | +| --- | --- | +| npm run build | Build component | +| npm run build:w | Build component and keep watching the changes | +| npm run test | Run unit tests in the console | +| npm run test-browser | Run unit tests in the browser +| npm run coverage | Run unit tests and display code coverage report | + ## License [Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE) From 4869691175cfda9e6ec57036972aa20021d0f758 Mon Sep 17 00:00:00 2001 From: Vito Albano Date: Wed, 9 Nov 2016 12:37:24 +0000 Subject: [PATCH 18/27] Applied changes for isLoggedIn managing --- .../components/user-info.component.spec.ts | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts index 15e1bd0877..c262e7d945 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts +++ b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts @@ -22,7 +22,7 @@ import { BpmUserModel } from '../models/bpm-user.model'; import { TranslationMock } from '../assets/translation.service.mock'; import { CoreModule, - AlfrescoSettingsService, + AlfrescoAuthenticationService, AlfrescoContentService, AlfrescoTranslationService } from 'ng2-alfresco-core'; @@ -73,16 +73,19 @@ describe('User info component', () => { let userInfoComp: UserInfoComponent; let fixture: ComponentFixture; let element: HTMLElement; - let stubSetting: AlfrescoSettingsService; + let stubAuthService: AlfrescoAuthenticationService; let stubContent: AlfrescoContentService; + let componentHandler; beforeEach(async(() => { + componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']); + window['componentHandler'] = componentHandler; TestBed.configureTestingModule({ imports: [CoreModule], declarations: [UserInfoComponent], providers: [EcmUserService, BpmUserService, - AlfrescoSettingsService, + AlfrescoAuthenticationService, {provide: AlfrescoTranslationService, useClass: TranslationMock} ] }).compileComponents().then(() => { @@ -135,9 +138,9 @@ describe('User info component', () => { describe('when user is logged on ecm', () => { beforeEach(() => { - stubSetting = fixture.debugElement.injector.get(AlfrescoSettingsService); + stubAuthService = fixture.debugElement.injector.get(AlfrescoAuthenticationService); stubContent = fixture.debugElement.injector.get(AlfrescoContentService); - spyOn(stubSetting, 'getProviders').and.returnValue('ECM'); + spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true); }); beforeEach(() => { @@ -244,8 +247,8 @@ describe('User info component', () => { let fakeBpmUserForTest; beforeEach(() => { - stubSetting = fixture.debugElement.injector.get(AlfrescoSettingsService); - spyOn(stubSetting, 'getProviders').and.returnValue('BPM'); + stubAuthService = fixture.debugElement.injector.get(AlfrescoAuthenticationService); + spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true); jasmine.Ajax.install(); fakeBpmUserForTest = fakeBpmUser; }); @@ -324,9 +327,10 @@ describe('User info component', () => { describe('when user is logged on bpm and ecm', () => { beforeEach(async(() => { - stubSetting = fixture.debugElement.injector.get(AlfrescoSettingsService); + stubAuthService = fixture.debugElement.injector.get(AlfrescoAuthenticationService); stubContent = fixture.debugElement.injector.get(AlfrescoContentService); - spyOn(stubSetting, 'getProviders').and.returnValue('ALL'); + spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true); + spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true); spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif'); userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', ''); jasmine.Ajax.install(); From 5f5dcce892e82852f21df1d80fc52ebe63291f98 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 12:58:05 +0000 Subject: [PATCH 19/27] #878 demo userinfo component --- .../ng2-alfresco-userinfo/demo/package.json | 3 +- .../ng2-alfresco-userinfo/demo/src/main.ts | 216 ++++++++++-------- .../demo/systemjs.config.js | 6 +- 3 files changed, 125 insertions(+), 100 deletions(-) diff --git a/ng2-components/ng2-alfresco-userinfo/demo/package.json b/ng2-components/ng2-alfresco-userinfo/demo/package.json index 5cb3aff079..7776b1fe0d 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/package.json +++ b/ng2-components/ng2-alfresco-userinfo/demo/package.json @@ -16,7 +16,8 @@ }, "license": "Apache-2.0", "dependencies": { - "ng2-alfresco-userinfo": "0.3.2" + "ng2-alfresco-userinfo": "0.3.2", + "ng2-alfresco-login": "^0.3.2" }, "devDependencies": { "@types/core-js": "^0.9.32", diff --git a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts index d7981d6240..68224a8190 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts @@ -20,45 +20,54 @@ import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { UserInfoComponentModule } from 'ng2-alfresco-userinfo'; import { CoreModule } from 'ng2-alfresco-core'; - +import { LoginModule } from 'ng2-alfresco-login'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @Component({ selector: 'alfresco-app-demo', - template: `

    START DEMO USERINFO

    -
    -

    - -

    -

    - -

    + template: ` +
    + ECM Host:
    + BPM Host:
    +
    + +

    + +

    +

    + +

    +

    + +

    +

    + +

    +
    + {{ status }} +
    + + +
    +
    -
    - -
    -

    -
    -

    - Username - -

    -

    - Password - -

    - -
    - {{loginErrorMessage}} - `, + + + + `, styles: [ ':host > .container {padding: 10px}', '.p-10 { padding: 10px; }' @@ -66,80 +75,93 @@ import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfr }) class UserInfoDemo implements OnInit { - public userToLogin: string = 'admin'; - public password: string = 'admin'; - public loginErrorMessage: string; - public providers: string = 'BPM'; - private authenticated: boolean; - private token: any; + public ecmHost: string = 'http://localhost:8080'; + + public bpmHost: string = 'http://localhost:9999'; + + public userToLogin: string = 'admin'; + + public password: string = 'admin'; + + public loginErrorMessage: string; + + public providers: string = 'BPM'; + + private authenticated: boolean; - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - } + private token: any; - ngOnInit() { + public disableCsrf: boolean = false; + + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = this.ecmHost; + settingsService.bpmHost = this.bpmHost; + } + + ngOnInit() { + this.settingsService.setProviders(this.providers); + } + + logout() { + this.authService.logout(); + } + + login(user, password) { this.settingsService.setProviders(this.providers); - } - - attemptLogin() { - this.loginErrorMessage = ''; - this.login(this.userToLogin, this.password); - } - - logout() { - this.authService.logout(); - } - - login(user, password) { - this.settingsService.setProviders(this.providers); - this.authService.login(user, password).subscribe( - token => { - console.log(token); - this.token = token; - this.authenticated = true; - }, - error => { - console.log(error); - this.authenticated = false; - this.loginErrorMessage = error; - }); - } - - isLoggedIn(): boolean { - return this.authService.isLoggedIn(); - } - - toggleECM(checked) { - if (checked && this.providers === 'BPM') { - this.providers = 'ALL'; - } else if (checked) { - this.providers = 'ECM'; - } else { - this.providers = undefined; - } - } - - toggleBPM(checked) { - if (checked && this.providers === 'ECM') { - this.providers = 'ALL'; - } else if (checked) { - this.providers = 'BPM'; - } else { - this.providers = undefined; - } - } + this.authService.login(user, password).subscribe( + token => { + console.log(token); + this.token = token; + this.authenticated = true; + }, + error => { + console.log(error); + this.authenticated = false; + this.loginErrorMessage = error; + }); + } + isLoggedIn(): boolean { + return this.authService.isLoggedIn(); + } + + toggleECM(checked) { + if (checked && this.providers === 'BPM') { + this.providers = 'ALL'; + } else if (checked) { + this.providers = 'ECM'; + } else { + this.providers = undefined; + } + } + + toggleBPM(checked) { + if (checked && this.providers === 'ECM') { + this.providers = 'ALL'; + } else if (checked) { + this.providers = 'BPM'; + } else { + this.providers = undefined; + } + } + + toggleCSRF() { + this.disableCsrf = !this.disableCsrf; + } } @NgModule({ imports: [ BrowserModule, CoreModule.forRoot(), - UserInfoComponentModule.forRoot() + UserInfoComponentModule.forRoot(), + LoginModule ], - declarations: [ UserInfoDemo ], - bootstrap: [ UserInfoDemo ] + declarations: [UserInfoDemo], + bootstrap: [UserInfoDemo] }) -export class AppModule { } +export class AppModule { +} platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js b/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js index 772783f002..485f49580e 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js +++ b/ng2-components/ng2-alfresco-userinfo/demo/systemjs.config.js @@ -26,7 +26,8 @@ 'ng2-translate': 'npm:ng2-translate', 'alfresco-js-api': 'npm:alfresco-js-api/dist', 'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist', - 'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist' + 'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist', + 'ng2-alfresco-login': 'npm:ng2-alfresco-login/dist' }, // packages tells the System loader how to load when no filename and/or no extension packages: { @@ -40,7 +41,8 @@ 'ng2-translate': { defaultExtension: 'js' }, 'ng2-alfresco-core': { main: './index.js', defaultExtension: 'js'}, 'ng2-alfresco-userinfo': { main: './index.js', defaultExtension: 'js'}, - 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'} + 'alfresco-js-api': { main: './alfresco-js-api.js', defaultExtension: 'js'}, + 'ng2-alfresco-login': { main: './index.js', defaultExtension: 'js'} } }); })(this); From edc1699f49bb2278e04bcf97e4a53f7dd40fb872 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 12:58:33 +0000 Subject: [PATCH 20/27] #878 change hosts login demo --- ng2-components/ng2-alfresco-login/demo/src/main.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ng2-components/ng2-alfresco-login/demo/src/main.ts b/ng2-components/ng2-alfresco-login/demo/src/main.ts index 1e270cb86b..2839039911 100644 --- a/ng2-components/ng2-alfresco-login/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-login/demo/src/main.ts @@ -61,9 +61,9 @@ import { LoginModule } from 'ng2-alfresco-login'; }) export class AppComponent { - public ecmHost: string = 'http://devproducts-platform.alfresco.me/alfresco'; + public ecmHost: string = 'http://localhost:8080'; - public bpmHost: string = 'http://devproducts-platform.alfresco.me/activiti'; + public bpmHost: string = 'http://localhost:9999' public ticket: string; From 1dafba7a7246c0456a95806c031561690c8d7616 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 14:00:46 +0000 Subject: [PATCH 21/27] #878 fix user info demo --- .../AlfrescoAuthentication.service.ts | 8 + .../ng2-alfresco-userinfo/demo/src/main.ts | 237 +++++++++--------- .../src/components/user-info.component.html | 2 +- .../src/components/user-info.component.ts | 16 ++ 4 files changed, 143 insertions(+), 120 deletions(-) diff --git a/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts b/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts index 9d25072986..c91adc4258 100644 --- a/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts +++ b/ng2-components/ng2-alfresco-core/src/services/AlfrescoAuthentication.service.ts @@ -21,6 +21,8 @@ import { AlfrescoSettingsService } from './AlfrescoSettings.service'; import { AlfrescoApiService } from './AlfrescoApi.service'; import * as alfrescoApi from 'alfresco-js-api'; import { AlfrescoApi } from 'alfresco-js-api'; +import { Subject } from 'rxjs/Subject'; + /** * The AlfrescoAuthenticationService provide the login service and store the ticket in the localStorage */ @@ -29,6 +31,10 @@ export class AlfrescoAuthenticationService { alfrescoApi: AlfrescoApi; + public loginSubject: Subject = new Subject(); + + public logoutSubject: Subject = new Subject(); + /** * Constructor * @param settingsService @@ -84,6 +90,7 @@ export class AlfrescoAuthenticationService { return Observable.fromPromise(this.callApiLogin(username, password)) .map((response: any) => { this.saveTickets(); + this.loginSubject.next(response); return {type: this.settingsService.getProviders(), ticket: response}; }) .catch(this.handleError); @@ -109,6 +116,7 @@ export class AlfrescoAuthenticationService { return Observable.fromPromise(this.callApiLogout()) .map(res => res) .do(response => { + this.logoutSubject.next(response); return response; }) .catch(this.handleError); diff --git a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts index 68224a8190..a0eee66354 100644 --- a/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts +++ b/ng2-components/ng2-alfresco-userinfo/demo/src/main.ts @@ -20,54 +20,53 @@ import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { UserInfoComponentModule } from 'ng2-alfresco-userinfo'; import { CoreModule } from 'ng2-alfresco-core'; -import { LoginModule } from 'ng2-alfresco-login'; +import { LoginModule } from 'ng2-alfresco-login'; import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @Component({ selector: 'alfresco-app-demo', - template: ` -
    - ECM Host:
    - BPM Host:
    -
    - -

    - -

    -

    - -

    -

    - -

    -

    - -

    -
    - {{ status }} -
    - - -
    - + template: ` +
    + ECM Host:
    + BPM Host:
    +
    + +

    + +

    +

    + +

    +

    + +

    +

    + +

    +
    + {{ status }} +
    + + +
    +
    - - - - `, + + + `, styles: [ ':host > .container {padding: 10px}', '.p-10 { padding: 10px; }' @@ -75,93 +74,93 @@ import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfr }) class UserInfoDemo implements OnInit { - public ecmHost: string = 'http://localhost:8080'; - - public bpmHost: string = 'http://localhost:9999'; - - public userToLogin: string = 'admin'; - - public password: string = 'admin'; - - public loginErrorMessage: string; - - public providers: string = 'BPM'; - - private authenticated: boolean; + public ecmHost: string = 'http://localhost:8080'; - private token: any; + public bpmHost: string = 'http://localhost:9999'; - public disableCsrf: boolean = false; - - constructor(private authService: AlfrescoAuthenticationService, - private settingsService: AlfrescoSettingsService) { - settingsService.ecmHost = this.ecmHost; - settingsService.bpmHost = this.bpmHost; - } - - ngOnInit() { - this.settingsService.setProviders(this.providers); - } - - logout() { - this.authService.logout(); - } - - login(user, password) { + public userToLogin: string = 'admin'; + + public password: string = 'admin'; + + public loginErrorMessage: string; + + public providers: string = 'BPM'; + + private authenticated: boolean; + + private token: any; + + public disableCsrf: boolean = false; + + constructor(private authService: AlfrescoAuthenticationService, + private settingsService: AlfrescoSettingsService) { + settingsService.ecmHost = this.ecmHost; + settingsService.bpmHost = this.bpmHost; + } + + ngOnInit() { this.settingsService.setProviders(this.providers); - this.authService.login(user, password).subscribe( - token => { - console.log(token); - this.token = token; - this.authenticated = true; - }, - error => { - console.log(error); - this.authenticated = false; - this.loginErrorMessage = error; - }); - } + } - isLoggedIn(): boolean { - return this.authService.isLoggedIn(); - } - - toggleECM(checked) { - if (checked && this.providers === 'BPM') { - this.providers = 'ALL'; - } else if (checked) { - this.providers = 'ECM'; - } else { - this.providers = undefined; - } - } - - toggleBPM(checked) { - if (checked && this.providers === 'ECM') { - this.providers = 'ALL'; - } else if (checked) { - this.providers = 'BPM'; - } else { - this.providers = undefined; - } - } - - toggleCSRF() { - this.disableCsrf = !this.disableCsrf; - } + logout() { + this.authService.logout(); + } + + login(user, password) { + this.settingsService.setProviders(this.providers); + this.authService.login(user, password).subscribe( + token => { + console.log(token); + this.token = token; + this.authenticated = true; + }, + error => { + console.log(error); + this.authenticated = false; + this.loginErrorMessage = error; + }); + } + + isLoggedIn(): boolean { + return this.authService.isLoggedIn(); + } + + toggleECM(checked) { + if (checked && this.providers === 'BPM') { + this.providers = 'ALL'; + } else if (checked) { + this.providers = 'ECM'; + } else { + this.providers = undefined; + } + } + + toggleBPM(checked) { + if (checked && this.providers === 'ECM') { + this.providers = 'ALL'; + } else if (checked) { + this.providers = 'BPM'; + } else { + this.providers = undefined; + } + } + + toggleCSRF() { + this.disableCsrf = !this.disableCsrf; + } } @NgModule({ imports: [ BrowserModule, CoreModule.forRoot(), - UserInfoComponentModule.forRoot(), - LoginModule + UserInfoComponentModule.forRoot(), + LoginModule ], - declarations: [UserInfoDemo], - bootstrap: [UserInfoDemo] + declarations: [UserInfoDemo], + bootstrap: [UserInfoDemo] }) -export class AppModule { -} +export class AppModule { +} platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.html b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.html index 394c9aac6f..753230730e 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.html +++ b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.html @@ -1,4 +1,4 @@ -
    +
    { + this.getUserInfo(); + }); } ngAfterViewChecked() { @@ -69,10 +77,18 @@ export class UserInfoComponent implements AfterViewChecked, OnInit { } ngOnInit() { + this.getUserInfo(); + } + + getUserInfo() { this.getEcmUserInfo(); this.getBpmUserInfo(); } + isLoggedIn() { + return this.authService.isLoggedIn(); + } + getEcmUserInfo(): void { if (this.authService.isEcmLoggedIn()) { this.ecmUserService.getCurrentUserInfo() From c1353bdcca49003225bc9258c8d9b388bfcf7c09 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 14:21:24 +0000 Subject: [PATCH 22/27] #878 code documentation --- ng2-components/ng2-alfresco-core/README.md | 55 +++++++++++++--------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/ng2-components/ng2-alfresco-core/README.md b/ng2-components/ng2-alfresco-core/README.md index 616e997f0b..9420f87679 100644 --- a/ng2-components/ng2-alfresco-core/README.md +++ b/ng2-components/ng2-alfresco-core/README.md @@ -66,8 +66,6 @@ npm install --save ng2-alfresco-core Provides access to initialized **AlfrescoJSApi** instance. ```ts -import { OnInit } from '@angular/core'; -import { AlfrescoApiService } from 'ng2-alfresco-core'; export class MyComponent implements OnInit { @@ -136,38 +134,44 @@ export class MyComponent implements OnInit { The authentication service is used inside the [login component](../ng2-alfresco-login) and is possible to find there an example of how to use it. ```ts -import { Component } from '@angular/core'; -import { bootstrap } from '@angular/platform-browser-dynamic'; -import { HTTP_PROVIDERS } from '@angular/http'; - -import { - ALFRESCO_CORE_PROVIDERS, - AlfrescoSettingsService, - AlfrescoAuthenticationService -} from 'ng2-alfresco-core'; +import { NgModule, Component } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { CoreModule, AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; @Component({ - selector: 'my-app', + selector: 'alfresco-app-demo', template: `
    Authentication failed to ip {{ ecmHost }} with user: admin, admin
    - Authentication successfull to ip {{ ecmHost }} with user: admin, admin, your token is {{ token }} +
    ECM
    + Authentication successfull to ip {{ ecmHost }} with user: admin, admin
    + your token is {{ tokenEcm }}
    +
    BPM
    + Authentication successfull to ip {{ bpmHost }} with user: admin, admin
    + your token is {{ tokenBpm }}
    ` }) class MyDemoApp { authenticated: boolean = false; - ecmHost: string = 'http://127.0.0.1:8080'; + public ecmHost: string = 'http://localhost:8080'; - token: string; + public bpmHost: string = 'http://localhost:9999'; + + tokenBpm: string; + + tokenEcm: string; constructor(public alfrescoAuthenticationService: AlfrescoAuthenticationService, private alfrescoSettingsService: AlfrescoSettingsService) { alfrescoSettingsService.ecmHost = this.ecmHost; - alfrescoSettingsService.setProviders('ECM'); + alfrescoSettingsService.bpmHost = this.bpmHost; + + alfrescoSettingsService.setProviders('ALL'); } ngOnInit() { @@ -177,7 +181,8 @@ class MyDemoApp { login() { this.alfrescoAuthenticationService.login('admin', 'admin').subscribe( token => { - this.token = token.ticket; + this.tokenBpm = this.alfrescoAuthenticationService.getTicketBpm(); + this.tokenEcm = this.alfrescoAuthenticationService.getTicketEcm(); this.authenticated = true; }, error => { @@ -186,11 +191,19 @@ class MyDemoApp { }); } } -bootstrap(MyDemoApp, [ - HTTP_PROVIDERS, - ALFRESCO_CORE_PROVIDERS -]); +@NgModule({ + imports: [ + BrowserModule, + CoreModule.forRoot() + ], + declarations: [MyDemoApp], + bootstrap: [MyDemoApp] +}) +export class AppModule { +} + +platformBrowserDynamic().bootstrapModule(AppModule); ``` #### Renditions Service From db7380ca3cfe312ff84de7edd065fa2db9f7e7e5 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 14:36:16 +0000 Subject: [PATCH 23/27] update search component --- demo-shell-ng2/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo-shell-ng2/package.json b/demo-shell-ng2/package.json index 74ba38c520..1a8aaf5904 100644 --- a/demo-shell-ng2/package.json +++ b/demo-shell-ng2/package.json @@ -87,7 +87,7 @@ "ng2-alfresco-datatable": "0.3.2", "ng2-alfresco-documentlist": "0.3.2", "ng2-alfresco-login": "0.3.2", - "ng2-alfresco-search": "0.3.2", + "ng2-alfresco-search": "0.3.3", "ng2-alfresco-upload": "0.3.2", "ng2-alfresco-viewer": "0.3.2", "ng2-activiti-form": "0.3.3", From fe5fe582ba9df41a5e90f595b7837faf0ec8e183 Mon Sep 17 00:00:00 2001 From: Vito Albano Date: Wed, 9 Nov 2016 16:39:02 +0000 Subject: [PATCH 24/27] Added spy on isLoggedIn for new check on user info --- .../components/user-info.component.spec.ts | 53 +++++++++---------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts index c262e7d945..f5ea5b1c37 100644 --- a/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts +++ b/ng2-components/ng2-alfresco-userinfo/src/components/user-info.component.spec.ts @@ -141,6 +141,7 @@ describe('User info component', () => { stubAuthService = fixture.debugElement.injector.get(AlfrescoAuthenticationService); stubContent = fixture.debugElement.injector.get(AlfrescoContentService); spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true); + spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true); }); beforeEach(() => { @@ -153,7 +154,8 @@ describe('User info component', () => { describe('and has image', () => { - beforeEach(() => { + beforeEach(async(() => { + spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif'); fixture.detectChanges(); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -169,41 +171,33 @@ describe('User info component', () => { } } }); - }); + fixture.whenStable().then(() => { + fixture.detectChanges(); + }); + })); it('should show ecm only last name when user first name is null ', async(() => { - spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif'); - fixture.whenStable().then(() => { - userInfoComp.ecmUser.firstName = null; - fixture.detectChanges(); - expect(element.querySelector('#userinfo_container')).toBeDefined(); - expect(element.querySelector('#ecm-username')).toBeDefined(); - expect(element.querySelector('#ecm-username').textContent).not.toContain('fake-ecm-first-name'); - }); + userInfoComp.ecmUser.firstName = null; + fixture.detectChanges(); + expect(element.querySelector('#userinfo_container')).toBeDefined(); + expect(element.querySelector('#ecm-username')).toBeDefined(); + expect(element.querySelector('#ecm-username').textContent).not.toContain('fake-ecm-first-name'); })); it('should get the ecm current user image from the service', async(() => { - spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif'); - fixture.whenStable().then(() => { - fixture.detectChanges(); - expect(element.querySelector('#userinfo_container')).toBeDefined(); - expect(element.querySelector('#logged-user-img')).toBeDefined(); - expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/ecmImg.gif'); - }); + expect(element.querySelector('#userinfo_container')).toBeDefined(); + expect(element.querySelector('#logged-user-img')).toBeDefined(); + expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/ecmImg.gif'); })); it('should get the ecm user informations from the service', async(() => { - spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif'); - fixture.whenStable().then(() => { - fixture.detectChanges(); - expect(element.querySelector('#userinfo_container')).toBeDefined(); - expect(element.querySelector('#ecm_username')).toBeDefined(); - expect(element.querySelector('#ecm_title')).toBeDefined(); - expect(element.querySelector('#ecm-user-detail-image')).toBeDefined(); - expect(element.querySelector('#ecm-user-detail-image').getAttribute('src')).toEqual('src/assets/ecmImg.gif'); - expect(element.querySelector('#ecm-full-name').textContent).toContain('fake-ecm-first-name fake-ecm-last-name'); - expect(element.querySelector('#ecm-job-title').textContent).toContain('USER_PROFILE.LABELS.ECM.JOB_TITLE'); - }); + expect(element.querySelector('#userinfo_container')).toBeDefined(); + expect(element.querySelector('#ecm_username')).toBeDefined(); + expect(element.querySelector('#ecm_title')).toBeDefined(); + expect(element.querySelector('#ecm-user-detail-image')).toBeDefined(); + expect(element.querySelector('#ecm-user-detail-image').getAttribute('src')).toEqual('src/assets/ecmImg.gif'); + expect(element.querySelector('#ecm-full-name').textContent).toContain('fake-ecm-first-name fake-ecm-last-name'); + expect(element.querySelector('#ecm-job-title').textContent).toContain('USER_PROFILE.LABELS.ECM.JOB_TITLE'); })); }); @@ -211,6 +205,7 @@ describe('User info component', () => { beforeEach(async(() => { userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', ''); + spyOn(stubContent, 'getContentUrl').and.returnValue('wrongImage.gif'); fixture.detectChanges(); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -249,6 +244,7 @@ describe('User info component', () => { beforeEach(() => { stubAuthService = fixture.debugElement.injector.get(AlfrescoAuthenticationService); spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true); + spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true); jasmine.Ajax.install(); fakeBpmUserForTest = fakeBpmUser; }); @@ -331,6 +327,7 @@ describe('User info component', () => { stubContent = fixture.debugElement.injector.get(AlfrescoContentService); spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true); spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true); + spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true); spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif'); userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', ''); jasmine.Ajax.install(); From 7189c61157cb9ad74286a47b2ae9be6a1134118e Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 17:35:24 +0000 Subject: [PATCH 25/27] #878 remove empty file --- .../src/components/activiti-comments.component.spec.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ng2-components/ng2-activiti-tasklist/src/components/activiti-comments.component.spec.ts diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-comments.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-comments.component.spec.ts deleted file mode 100644 index e69de29bb2..0000000000 From 9dc399042589d8907bcb26407355a0e65aa38d80 Mon Sep 17 00:00:00 2001 From: Mario Romano Date: Wed, 9 Nov 2016 21:55:31 +0000 Subject: [PATCH 26/27] #878 review pr --- demo-shell-ng2/i18n/en.json | 2 +- .../ng2-activiti-analytics/demo/package.json | 30 +++++++ .../ng2-activiti-analytics/package.json | 27 ++++++- .../ng2-activiti-diagrams/demo/index.html | 2 +- .../ng2-activiti-diagrams/demo/package.json | 25 ++++++ .../ng2-activiti-diagrams/package.json | 31 +++++-- .../ng2-activiti-form/demo/package.json | 26 ++++++ ng2-components/ng2-activiti-form/package.json | 23 ++++++ .../demo/package.json | 28 +++++++ .../ng2-activiti-processlist/package.json | 25 ++++++ .../ng2-activiti-tasklist/demo/package.json | 27 +++++++ .../ng2-activiti-tasklist/package.json | 26 ++++++ ng2-components/ng2-alfresco-core/README.md | 3 +- ng2-components/ng2-alfresco-core/package.json | 7 +- .../ng2-alfresco-datatable/demo/package.json | 23 ++++++ .../ng2-alfresco-datatable/package.json | 22 +++++ .../demo/package.json | 24 ++++++ .../ng2-alfresco-documentlist/package.json | 22 +++++ .../ng2-alfresco-login/demo/package.json | 24 ++++++ .../ng2-alfresco-login/demo/src/main.ts | 2 +- .../ng2-alfresco-login/package.json | 22 +++++ .../ng2-alfresco-search/demo/package.json | 24 ++++++ .../ng2-alfresco-search/package.json | 24 ++++++ .../ng2-alfresco-tag/demo/package.json | 23 ++++++ ng2-components/ng2-alfresco-tag/package.json | 22 +++++ .../ng2-alfresco-upload/demo/package.json | 23 ++++++ .../ng2-alfresco-upload/package.json | 22 +++++ .../ng2-alfresco-userinfo/demo/package.json | 26 +++++- .../ng2-alfresco-userinfo/package.json | 26 +++++- .../ng2-alfresco-viewer/demo/package.json | 27 ++++++- .../ng2-alfresco-viewer/package.json | 22 +++++ .../ng2-alfresco-webscript/demo/package.json | 24 ++++++ .../ng2-alfresco-webscript/package.json | 22 +++++ scripts/npm-link-all-components-demo.sh | 80 +++++++++++++++++++ scripts/npm-link-demo-shell.sh | 1 + 35 files changed, 767 insertions(+), 20 deletions(-) create mode 100755 scripts/npm-link-all-components-demo.sh diff --git a/demo-shell-ng2/i18n/en.json b/demo-shell-ng2/i18n/en.json index 1a35a1e670..1993786440 100644 --- a/demo-shell-ng2/i18n/en.json +++ b/demo-shell-ng2/i18n/en.json @@ -57,7 +57,7 @@ "LOGIN-SUCCESS": "Login successful" }, "BUTTON": { - "LOGIN": "MARIO" + "LOGIN": "Login" }, "ACTION": { "HELP": "NEED HELP?", diff --git a/ng2-components/ng2-activiti-analytics/demo/package.json b/ng2-components/ng2-activiti-analytics/demo/package.json index 4315d9da58..f831c48cc3 100644 --- a/ng2-components/ng2-activiti-analytics/demo/package.json +++ b/ng2-components/ng2-activiti-analytics/demo/package.json @@ -30,9 +30,39 @@ "activiti-diagrams" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "chart.js": "^2.1.4", + "md-date-time-picker": "^2.2.0", + "ng2-charts": "1.1.0", + "moment": "2.15.1", + "raphael": "^2.2.6", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-alfresco-core": "0.3.2", + "ng2-activiti-diagrams": "0.3.3", "ng2-activiti-analytics": "^0.3.0" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-analytics/package.json b/ng2-components/ng2-activiti-analytics/package.json index 9164585443..86e2311b07 100644 --- a/ng2-components/ng2-activiti-analytics/package.json +++ b/ng2-components/ng2-activiti-analytics/package.json @@ -41,15 +41,38 @@ "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + "chart.js": "^2.1.4", "md-date-time-picker": "^2.2.0", "ng2-charts": "1.1.0", "moment": "2.15.1", + "raphael": "^2.2.6", + "alfresco-js-api": "^0.3.0", + "ng2-translate": "2.5.0", "ng2-alfresco-core": "0.3.2", "ng2-activiti-diagrams": "0.3.3" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", @@ -68,9 +91,7 @@ "traceur": "0.0.91", "tslint": "3.15.1", "typescript": "^2.0.3", - "wsrv": "^0.1.5", - "xo": "0.14.0", - "yargs": "4.7.0" + "wsrv": "^0.1.5" }, "keywords": [ "tag", diff --git a/ng2-components/ng2-activiti-diagrams/demo/index.html b/ng2-components/ng2-activiti-diagrams/demo/index.html index e4c28bdaf4..78a50121bb 100644 --- a/ng2-components/ng2-activiti-diagrams/demo/index.html +++ b/ng2-components/ng2-activiti-diagrams/demo/index.html @@ -43,7 +43,7 @@ - + diff --git a/ng2-components/ng2-activiti-diagrams/demo/package.json b/ng2-components/ng2-activiti-diagrams/demo/package.json index e522dd8235..5e1be08ef3 100644 --- a/ng2-components/ng2-activiti-diagrams/demo/package.json +++ b/ng2-components/ng2-activiti-diagrams/demo/package.json @@ -30,9 +30,34 @@ "activiti-diagrams" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "raphael": "^2.2.6", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-alfresco-core": "0.3.2", "ng2-activiti-diagrams": "^0.3.0" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-diagrams/package.json b/ng2-components/ng2-activiti-diagrams/package.json index 52777c0f8f..8b9e33c7d4 100644 --- a/ng2-components/ng2-activiti-diagrams/package.json +++ b/ng2-components/ng2-activiti-diagrams/package.json @@ -37,10 +37,33 @@ "url": "https://github.com/Alfresco/alfresco-ng2-components/issues" }, "dependencies": { - "ng2-alfresco-core": "0.3.2", - "raphael": "^2.2.6" + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "raphael": "^2.2.6", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-alfresco-core": "0.3.2" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", @@ -59,9 +82,7 @@ "traceur": "0.0.91", "tslint": "3.15.1", "typescript": "^2.0.3", - "wsrv": "^0.1.5", - "xo": "0.14.0", - "yargs": "4.7.0" + "wsrv": "^0.1.5" }, "keywords": [ "tag", diff --git a/ng2-components/ng2-activiti-form/demo/package.json b/ng2-components/ng2-activiti-form/demo/package.json index 9d754883ab..f89a397641 100644 --- a/ng2-components/ng2-activiti-form/demo/package.json +++ b/ng2-components/ng2-activiti-form/demo/package.json @@ -30,9 +30,35 @@ "activiti-form" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "moment": "2.15.1", + "md-date-time-picker": "^2.2.0", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-alfresco-core": "0.3.2", "ng2-activiti-form": "^0.3.0" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-form/package.json b/ng2-components/ng2-activiti-form/package.json index 75c9924e5b..c1abfd65dd 100644 --- a/ng2-components/ng2-activiti-form/package.json +++ b/ng2-components/ng2-activiti-form/package.json @@ -45,11 +45,34 @@ "activiti" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + "moment": "2.15.1", "md-date-time-picker": "^2.2.0", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", "ng2-alfresco-core": "0.3.2" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-processlist/demo/package.json b/ng2-components/ng2-activiti-processlist/demo/package.json index bdced43f72..70773dc2d1 100644 --- a/ng2-components/ng2-activiti-processlist/demo/package.json +++ b/ng2-components/ng2-activiti-processlist/demo/package.json @@ -23,9 +23,37 @@ "demo" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "moment": "2.15.1", + "md-date-time-picker": "^2.2.0", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-activiti-tasklist": "0.3.3", + "ng2-alfresco-core": "0.3.2", + "ng2-alfresco-datatable": "0.3.2", "ng2-activiti-processlist": "^0.3.0" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-processlist/package.json b/ng2-components/ng2-activiti-processlist/package.json index a1b22dd415..3264887bec 100644 --- a/ng2-components/ng2-activiti-processlist/package.json +++ b/ng2-components/ng2-activiti-processlist/package.json @@ -44,11 +44,36 @@ "alfresco" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "moment": "2.15.1", + "md-date-time-picker": "^2.2.0", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", "ng2-activiti-tasklist": "0.3.3", "ng2-alfresco-core": "0.3.2", "ng2-alfresco-datatable": "0.3.2" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-tasklist/demo/package.json b/ng2-components/ng2-activiti-tasklist/demo/package.json index 19042996f8..594c00a386 100644 --- a/ng2-components/ng2-activiti-tasklist/demo/package.json +++ b/ng2-components/ng2-activiti-tasklist/demo/package.json @@ -16,9 +16,36 @@ }, "license": "Apache-2.0", "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "moment": "2.15.1", + "md-date-time-picker": "^2.2.0", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-alfresco-core": "0.3.2", + "ng2-alfresco-datatable": "0.3.2", "ng2-activiti-tasklist": "^0.3.3" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-activiti-tasklist/package.json b/ng2-components/ng2-activiti-tasklist/package.json index 40cbb2746f..75a5600697 100644 --- a/ng2-components/ng2-activiti-tasklist/package.json +++ b/ng2-components/ng2-activiti-tasklist/package.json @@ -48,11 +48,37 @@ "alfresco" ], "dependencies": { + "@angular/common": "2.0.0", + "@angular/compiler": "2.0.0", + "@angular/core": "2.0.0", + "@angular/forms": "2.0.0", + "@angular/http": "2.0.0", + "@angular/platform-browser": "2.0.0", + "@angular/platform-browser-dynamic": "2.0.0", + "core-js": "^2.4.1", + "reflect-metadata": "^0.1.3", + "rxjs": "5.0.0-beta.12", + "systemjs": "0.19.27", + "zone.js": "^0.6.23", + + "intl": "1.2.4", + "dialog-polyfill": "^0.4.3", + "element.scrollintoviewifneeded-polyfill": "^1.0.1", + "material-design-icons": "2.2.3", + "material-design-lite": "1.2.1", + + "moment": "2.15.1", + "md-date-time-picker": "^2.2.0", + + "ng2-translate": "2.5.0", + "alfresco-js-api": "^0.3.0", + "ng2-activiti-tasklist": "0.3.3", "ng2-activiti-form": "0.3.3", "ng2-alfresco-core": "0.3.2", "ng2-alfresco-datatable": "0.3.2" }, "devDependencies": { + "@types/node": "^6.0.42", "@types/core-js": "^0.9.32", "@types/jasmine": "^2.2.33", "concurrently": "^2.2.0", diff --git a/ng2-components/ng2-alfresco-core/README.md b/ng2-components/ng2-alfresco-core/README.md index 9420f87679..459deca8b3 100644 --- a/ng2-components/ng2-alfresco-core/README.md +++ b/ng2-components/ng2-alfresco-core/README.md @@ -1,4 +1,5 @@ -# Alfresco Login Component for Angular 2 +# Alfresco Angular 2 Components core +

    travis
diff --git a/ng2-components/ng2-alfresco-core/package.json b/ng2-components/ng2-alfresco-core/package.json
index e80c742e2a..bd054a68e1 100644
--- a/ng2-components/ng2-alfresco-core/package.json
+++ b/ng2-components/ng2-alfresco-core/package.json
@@ -53,6 +53,8 @@
     "alfresco"
   ],
   "dependencies": {
+    "@angular/router": "3.0.0",
+    "@angular/upgrade": "2.0.0",
     "@angular/common": "2.0.0",
     "@angular/compiler": "2.0.0",
     "@angular/core": "2.0.0",
@@ -60,9 +62,6 @@
     "@angular/http": "2.0.0",
     "@angular/platform-browser": "2.0.0",
     "@angular/platform-browser-dynamic": "2.0.0",
-    "@angular/router": "3.0.0",
-    "@angular/upgrade": "2.0.0",
-    "@types/node": "^6.0.42",
     "core-js": "^2.4.1",
     "reflect-metadata": "^0.1.3",
     "rxjs": "5.0.0-beta.12",
@@ -79,6 +78,7 @@
     "material-design-lite": "1.2.1"
   },
   "devDependencies": {
+    "@types/node": "^6.0.42",
     "@types/core-js": "^0.9.32",
     "@types/jasmine": "^2.2.33",
     "cpx": "1.3.1",
@@ -93,7 +93,6 @@
     "karma-mocha-reporter": "2.0.3",
     "license-check": "1.1.5",
     "remap-istanbul": "0.6.3",
-    "rimraf": "2.5.2",
     "traceur": "0.0.91",
     "tslint": "3.15.1",
     "typescript": "^2.0.3",
diff --git a/ng2-components/ng2-alfresco-datatable/demo/package.json b/ng2-components/ng2-alfresco-datatable/demo/package.json
index 1a603b8b5b..f378ca4bc4 100644
--- a/ng2-components/ng2-alfresco-datatable/demo/package.json
+++ b/ng2-components/ng2-alfresco-datatable/demo/package.json
@@ -22,9 +22,32 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
+    "@angular/common": "2.0.0",
+    "@angular/compiler": "2.0.0",
+    "@angular/core": "2.0.0",
+    "@angular/forms": "2.0.0",
+    "@angular/http": "2.0.0",
+    "@angular/platform-browser": "2.0.0",
+    "@angular/platform-browser-dynamic": "2.0.0",
+    "core-js": "^2.4.1",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "5.0.0-beta.12",
+    "systemjs": "0.19.27",
+    "zone.js": "^0.6.23",
+
+    "intl": "1.2.4",
+    "dialog-polyfill": "^0.4.3",
+    "element.scrollintoviewifneeded-polyfill": "^1.0.1",
+    "material-design-icons": "2.2.3",
+    "material-design-lite": "1.2.1",
+
+    "ng2-translate": "2.5.0",
+    "alfresco-js-api": "^0.3.0",
+    "ng2-alfresco-core": "0.3.2",
     "ng2-alfresco-datatable": "0.3.2"
   },
   "devDependencies": {
+    "@types/node": "^6.0.42",
     "@types/core-js": "^0.9.32",
     "@types/jasmine": "^2.2.33",
     "concurrently": "^2.2.0",
diff --git a/ng2-components/ng2-alfresco-datatable/package.json b/ng2-components/ng2-alfresco-datatable/package.json
index 813381304f..8966f4749f 100644
--- a/ng2-components/ng2-alfresco-datatable/package.json
+++ b/ng2-components/ng2-alfresco-datatable/package.json
@@ -44,9 +44,31 @@
     "alfresco"
   ],
   "dependencies": {
+    "@angular/common": "2.0.0",
+    "@angular/compiler": "2.0.0",
+    "@angular/core": "2.0.0",
+    "@angular/forms": "2.0.0",
+    "@angular/http": "2.0.0",
+    "@angular/platform-browser": "2.0.0",
+    "@angular/platform-browser-dynamic": "2.0.0",
+    "core-js": "^2.4.1",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "5.0.0-beta.12",
+    "systemjs": "0.19.27",
+    "zone.js": "^0.6.23",
+
+    "intl": "1.2.4",
+    "dialog-polyfill": "^0.4.3",
+    "element.scrollintoviewifneeded-polyfill": "^1.0.1",
+    "material-design-icons": "2.2.3",
+    "material-design-lite": "1.2.1",
+
+    "ng2-translate": "2.5.0",
+    "alfresco-js-api": "^0.3.0",
     "ng2-alfresco-core": "0.3.2"
   },
   "devDependencies": {
+    "@types/node": "^6.0.42",
     "@types/core-js": "^0.9.32",
     "@types/jasmine": "^2.2.33",
     "concurrently": "^2.2.0",
diff --git a/ng2-components/ng2-alfresco-documentlist/demo/package.json b/ng2-components/ng2-alfresco-documentlist/demo/package.json
index cf9426d88f..41a540314d 100644
--- a/ng2-components/ng2-alfresco-documentlist/demo/package.json
+++ b/ng2-components/ng2-alfresco-documentlist/demo/package.json
@@ -17,9 +17,33 @@
   },
   "license": "Apache-2.0",
   "dependencies": {
+    "@angular/common": "2.0.0",
+    "@angular/compiler": "2.0.0",
+    "@angular/core": "2.0.0",
+    "@angular/forms": "2.0.0",
+    "@angular/http": "2.0.0",
+    "@angular/platform-browser": "2.0.0",
+    "@angular/platform-browser-dynamic": "2.0.0",
+    "core-js": "^2.4.1",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "5.0.0-beta.12",
+    "systemjs": "0.19.27",
+    "zone.js": "^0.6.23",
+
+    "intl": "1.2.4",
+    "dialog-polyfill": "^0.4.3",
+    "element.scrollintoviewifneeded-polyfill": "^1.0.1",
+    "material-design-icons": "2.2.3",
+    "material-design-lite": "1.2.1",
+
+    "ng2-translate": "2.5.0",
+    "alfresco-js-api": "^0.3.0",
+    "ng2-alfresco-core": "0.3.2",
+    "ng2-alfresco-datatable": "0.3.2",
     "ng2-alfresco-documentlist": "^0.3.0"
   },
   "devDependencies": {
+    "@types/node": "^6.0.42",
     "@types/core-js": "^0.9.32",
     "@types/jasmine": "^2.2.33",
     "concurrently": "^2.2.0",
diff --git a/ng2-components/ng2-alfresco-documentlist/package.json b/ng2-components/ng2-alfresco-documentlist/package.json
index eb198783bc..0de3b16bfb 100644
--- a/ng2-components/ng2-alfresco-documentlist/package.json
+++ b/ng2-components/ng2-alfresco-documentlist/package.json
@@ -52,10 +52,32 @@
     "alfresco"
   ],
   "dependencies": {
+    "@angular/common": "2.0.0",
+    "@angular/compiler": "2.0.0",
+    "@angular/core": "2.0.0",
+    "@angular/forms": "2.0.0",
+    "@angular/http": "2.0.0",
+    "@angular/platform-browser": "2.0.0",
+    "@angular/platform-browser-dynamic": "2.0.0",
+    "core-js": "^2.4.1",
+    "reflect-metadata": "^0.1.3",
+    "rxjs": "5.0.0-beta.12",
+    "systemjs": "0.19.27",
+    "zone.js": "^0.6.23",
+
+    "intl": "1.2.4",
+    "dialog-polyfill": "^0.4.3",
+    "element.scrollintoviewifneeded-polyfill": "^1.0.1",
+    "material-design-icons": "2.2.3",
+    "material-design-lite": "1.2.1",
+
+    "ng2-translate": "2.5.0",
+    "alfresco-js-api": "^0.3.0",
     "ng2-alfresco-core": "0.3.2",
     "ng2-alfresco-datatable": "0.3.2"
   },
   "devDependencies": {
+    "@types/node": "^6.0.42",
     "@types/core-js": "^0.9.32",
     "@types/jasmine": "^2.2.33",
     "concurrently": "^2.2.0",
diff --git a/ng2-components/ng2-alfresco-login/demo/package.json b/ng2-components/ng2-alfresco-login/demo/package.json
index 644004358d..7703bd22bf 100644
--- a/ng2-components/ng2-alfresco-login/demo/package.json
+++ b/ng2-components/ng2-alfresco-login/demo/package.json
@@ -45,9 +45,33 @@
         "alfresco"
     ],
     "dependencies": {
+      "@angular/common": "2.0.0",
+      "@angular/compiler": "2.0.0",
+      "@angular/core": "2.0.0",
+      "@angular/forms": "2.0.0",
+      "@angular/http": "2.0.0",
+      "@angular/platform-browser": "2.0.0",
+      "@angular/platform-browser-dynamic": "2.0.0",
+      "core-js": "^2.4.1",
+      "reflect-metadata": "^0.1.3",
+      "rxjs": "5.0.0-beta.12",
+      "systemjs": "0.19.27",
+      "zone.js": "^0.6.23",
+
+      "intl": "1.2.4",
+      "dialog-polyfill": "^0.4.3",
+      "element.scrollintoviewifneeded-polyfill": "^1.0.1",
+      "material-design-icons": "2.2.3",
+      "material-design-lite": "1.2.1",
+
+      "ng2-translate": "2.5.0",
+      "alfresco-js-api": "^0.3.0",
+      "ng2-alfresco-core": "0.3.2",
+      "ng2-alfresco-datatable": "0.3.2",
       "ng2-alfresco-login": "^0.3.2"
     },
     "devDependencies": {
+      "@types/node": "^6.0.42",
       "@types/core-js": "^0.9.32",
       "@types/jasmine": "^2.2.33",
       "concurrently": "^2.2.0",
diff --git a/ng2-components/ng2-alfresco-login/demo/src/main.ts b/ng2-components/ng2-alfresco-login/demo/src/main.ts
index 2839039911..32efb23b7f 100644
--- a/ng2-components/ng2-alfresco-login/demo/src/main.ts
+++ b/ng2-components/ng2-alfresco-login/demo/src/main.ts
@@ -63,7 +63,7 @@ export class AppComponent {
 
     public ecmHost: string = Date: Wed, 9 Nov 2016 22:22:11 +0000 Subject: [PATCH 27/27] #878 review pr --- ng2-components/ng2-activiti-tasklist/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/ng2-components/ng2-activiti-tasklist/package.json b/ng2-components/ng2-activiti-tasklist/package.json index 75a5600697..86e0e43ece 100644 --- a/ng2-components/ng2-activiti-tasklist/package.json +++ b/ng2-components/ng2-activiti-tasklist/package.json @@ -72,7 +72,6 @@ "ng2-translate": "2.5.0", "alfresco-js-api": "^0.3.0", - "ng2-activiti-tasklist": "0.3.3", "ng2-activiti-form": "0.3.3", "ng2-alfresco-core": "0.3.2", "ng2-alfresco-datatable": "0.3.2"

    v(wXHZr!ggMC_9@qp4c~oEeMd(i_v{Rc#%*E19 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 z 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

  • 1T0TSFaaQ64Ua_ExglAI;{{>ABfhjdg6&iWG**?bSGO4zLPOj>N&mPw37(|r^JjkKXm>rY;k9V;lW3O_88 zFywUmY~Z;cOwUL1udT{z6MX`k)<5luhN{g(JWtoy6jv`Kq^%sZ#Pajre((4CSy93? zeb%gs_9eqoFw|deSHCdc1~$In=iqx80~NE=v%Ms)|g+K`A5$`oF@m z<6oRwTQ4O-uU?_-tyP!D=@|KlU!96e);^uqR$+XVmJ2DdYjyiXTib^%&W_|eKI$uX z)g{cGjRQ}xI5|0Ju-Kcl)WY>>W})wZ;u=j4qP%A@XQ;g_>+{x{?YZn6;> zhd{1NFasrEWYISxk?8=Rp9t3fvgJD@rU&DD@*>IPv-s$F?v%N!j?RCO8VSFTk07Mx zKZmE(Pg#KLF#08#+P@<5Pf3o_6}%Jku@|)C?!~|I`GjY&{T(1jqNFa+zH}U}NaU{E zr|e_@cSeB#&iUT+!wENI2hukieQ8Ye3j^3UbxZ#{^LUMXU$mE5?)y%=Mn~_z>}W&b zH!K9Ju~9EJIPT7+r}~og@mg^sX92Wa5Yi@{%MdIeWf0fJGb^zPQblJhC`a_2WV(Ts z4Iap@e#oSufXPzzA6NAGb8_+@WZ+1^*W-zoLL7TH@4HsousVe9B41k};;zfiLK1x& zGv-Z8{+2P-Gi3N(h4FRgJ1v1~JvD>3#H~ah4zn&u%^$&QU({__$bqG#ZYlrKbynHS z`Gg9VNt_U1EK2)r&+WeUG&K%pX;E)b=(%C(O1*i+r@id;u)daScjB9zjscZXInec9 z<~7jh9q%h&J?CG$UCYV}X1{*UWLhs&3j)e?~(Z2TPsG(odqO zF2>EwE>|FM!iNHgZh?lp>X3qeEITgpCBXjJes0ce%cFmZWjJTpEkhPE{Cc9x0jTG8 zwOi>@5Hy(KN#f)B>mPB~Dr$mVNA#!mlpi9lo+WrR%SqdCSmt&y;-?ZaJZo96`#;(w zc5qztqe?bSc0ud$V{>p{o^2mL;TmH#gXAJ-G~*=n=eIxpz@KK zI-mbRmmlxn2Zr=ztA1Wy)9e2d1LgdEIo>R}?mJA?V#{c9$1Sn6_mD{0kl!p5j+^?n z7Lymg`lI8vOTsMZfJ9e}1z!+DC(7uHL)P-IB z|6Ho#wsMnjmSQYmDZ@6b8f``S64k`eL3;N44?nK;t!8H$<7n~B^mnlAYX^z2Ag!9G zcz+GW2Fg8$f9J(a=)3=Z?%oLecsD&-GEXZ?=Or03P`=pnPesP_%EGnB+fgXZ* zt612x=zexfIO~;C<#df~i86_wF^)-3tbN38`CSukkm7-b)Sp*RbhvOWwJOPXMicTB z`5a{tuPUtelszA5<*Jq+9|J7V+dx^`=H>=z#Y{iksY1lcBX@>|fIpm>P2p2z0@Uk=)i1R~Y~0c?2UdJPwI; z**ZyOg^#M9FxhC&Y-aqe>EKmqLL@tGdvDzW zMpqS5HT$l3|BA|(3Z83xrw5jZfDE3DhM(t`khF-YHXhUVf6W9prjHnm zHQ5mou3~%~j{(6Ux8u|j50v65v|q=KlEQOb{q%<}P@ld)VFoj;5{7dD10>L}0-#JF z{xPaop}3Crm3!CY#b%P0pcn z#Vs!q4}_Spn~7Gw@~OK&aE4zh@@q;SFJoA@g;P>(Ksnh@1OPUidjROr=FOYbiC7iG zzliBP2-qZLD6lgo+9?PpkYL@2Ed1a?FeA8Xu$W8|7PO<-ct6&77ClcmxAgrM$fx3h z284VFV-B&Rd*z(hs|7pG20ec^uM!ezt$p=OsdKBA`4x<4GmO9W}z;zVUU<(b^ z2q9nTGsX-d`T5!jT9QV3^*HJ`rM?)yA=s<27jQw#d_L#K=^P&v;|RaRoeBK3m)hV} zQxhCIsBqOWcdQ11@%jw6Xl(+qVyoRVa$X(1TTThO9q?oeLU}P8pql~XYGt60 z?Y58%tf9qat1yINI}9pkB#aBDvdn?B)E-Y^uUWKb#7$YVm(gPTZyk0=`h<6M|LETW zpzdIg!##2LrjFjoi{`P1-}c8>hpbE@msZ_hw><0lH?Cy*L8#_20LP_i*GK(Tbp5>( zXu2{I^)_%A3yU@UiJ>r;3G@kl8x0$XHoy8Hmq~ zcbRB{cgksx4e}4nK~QIaZdX9_o23Tc-wwrQSMx)@wzlKk7q>T&kdN_XRnDFusp3eM z*cC7nPolV9=no8QfQ5g3d#5n_a?pMD1iNH? z66#u>Q>(*0#Hx{16kqiYy6-o=e3*DATeU3lig)a0W$A$`nM<)F<2%;6;2lzSX#ApL zJDD#ZdSR`KkBEO?Cg})8o?cgt{WduoNO3kTO5NUnuFUFxqe4qyX0(~3Kww-@?(k}w z<v*>PszA$cx>E=e{(j-tnDKcd1pg%Q$*oX973JLmF?6fGF~1WgaPMZ-HARf6 zC1UBum205rBu4_S7Cm!6VFx5*3JVvI=aMHWiQ56G6h{D%Ho4T0mg6v#*{>5gGbs*2 zl2{E1$MPE#PKE@=0!aJj3e&zV+?FCcZ%XG6LTeQtl_3EKy=9IFL$Ob(xQ?6AH(5s{w0k{ zc&GanMp+)B3tC)2$A#a643z3J{^srGa<{u9&bqhv@lZMI*3M2{#0_$JFmpvK6?}Ws z1YLqv+*poeI)dzP>diI#=5xF^a?tXlgbe4!$}T$T6J)%gY&FXvdCycei?YF6GqU9E zX{aSskhqEGmkZLpS(SLuuLW}!x5D7;Gx$;hJ=bEB+3o~MN#8~KKAF{5eK(zK(Q9C7 z>a8Z6GU@MhL*X2F;z0JBR+(%{m6qKI20jb$cV_q2vciPLT`xa;pCOxB>oK9aX1T%K z+RldSvuaE{8YtQMj;8244=m_33HTq(W9=_`-yAy$}f99jwH&(WHoeF>rs%ZLCopxx6E;)dr5jl&8oam^YL9J2!) zE5Cj2+X_gbh>G~0e#id7Ho8$wY2`VnNLB~D?iAW5j`*-?qC z9wci6cJFBU78{!#B=XLkL{j_kl(EE>kuI*J5Lv4(*=Ad}{}Ox$z(yRzfBD|z%_f{% zl2b6#4o=TCfnKbqOW9Rm#_%+E!h2j;jNk+`=0Q+@-(kZY(jEF zDem9mRPPX>@)%JUV%24w9CKToK+&xw@|;id4{0b# zlHhg4-8Eb-9Mu695Pem96~5ZIE|QJj=oaE*ydJnn5^$&}yt+OCKs`?6BqSUhwKLtH$ z57rWYcQ$bC!hFr7cRD}u5O#|T@CH93IAXOYa*6ke_m*%wf}6nh(wCw)BQAW(Zm?T% z>Sa*gLmPy^l9KuGEUr4hTFe~4H2HEJxC=+|b`kWq*dAn)V2x8*_x|HqVyJC;KwfABW_^1LGw@v2HHW9!@%kF$h@ z0g=3s{)cJw*e31;H2BRyv%D(>A?qsPBCxn$*Y^ix$M_qeI7h(jQ*SLunY{S(e=MDK zRMYSK|9w-^u>rye*%&2_bcl=r8{Lv3C7q(8l*|#MWTRU~2nfPZ36%yJppq&v(jlM- zhzLmeefjzQ&KdiIogMz*KKJXsuj_d|9$S1n>0d%s?_qy1JTTB=daB3vD_-4w?A=&% z7o8PNLiu?lqtysLmqALvWGGYJR+H@m!%{R|@pI*Spd#)|w^TKf#hK~+*CK>(|AfIs zw*=$vaps{fp|TVD__1hqxe{yh+0%Oxjqb+#*Ma>6Ii_Fs{gg??H5ax2 zKI$JSK634D$Z#`4q50A>zcyUWY2PqcHgh(QL^C+#Z@^f(=?6_o%-ksD+tw9%fLob= zDU`kI14E%1L5z#FbhiMAU&j5Vj*;~@xsEcOt>fN+TqpjW4^hbXSq=tQqkY>1z@8k) zhaG6|5nllp0#zI^D*lOKp)bU}^Pzi^n5x0;$?8Bx>zS(^*oU^t<>i51icUoBWR$UZ z!YyPdyE=XS?R+d}E_p}QmW+dP;M<05_naXzpHY}>EbP25YF6M&`OftLN!|r1PSXrp zgc#j7L={?_aBby%V3ut=m)(~Bo^^N?D2HoA2yg|*GZ+*da_iZrs5te-qfrHx$)2J~ zsxpYN>5+7mn^e)^Fea5;KYras7=_=G zCGY7MEY#RoK|oEM_9vdAPPQil-+qLvzxGltX%}^^tbTp*KL>wSGX(new2#9^S>w4! z*(J-A#7t*=2^DoqqqR<`reC(uyOc4ZsW5B7o}R4P>1cpWVgJz;|4=*AB@wKrsn*o~ zUu|0MZIFT~B!jKjjKR+mr}((;Vbg_e@Hk=CSe2h`ORxM%&+9;>vw&J@Rj2EAvNOQy>^p7{C6d)aR~H{2d{7nL$Fxha*3d5U*Egi!owp!D2i@deZSqhqgz9Y z!{YA#;ER&dO<|@ z)hB;SwNBzkVK`N3?*Wi+V-2rH(M!O*WVpUqd*H3MF`_~Rf5kFIm(gZB5F#`=oGO z<@^a`CAJw{MdvD)H@;#T|j|EQ*!rG>oPJyR=gz2q#5m{?$_ zF%A!w=77Djw8-~hQ!-YP-IB_W# zdQemm$5}6AFRo|df~?egS*}i|h$m~g!QWUNdYsQ2d5N~l z;!Uf`iNUuLXuMt}XQ#yJcT7U%c2(>X3x8;s6ogCa40dJ&LP2f(B8Rn`pkE= zaKYEVxTFV;kJFni{esDg$^F}0WKLRE3o+$nqYMokboEYfLunC8P)aZu-WfVm+*i4lIIWa^q1pxxb zKGItwa`oED-ad%(iAJF%S6fb;>8WW0F4>f)L)Bd zO#YNNp8IM_{sLby@s6*OPIWynzPnA=IMXh_k7f9Qe(Af@-_YY2orcKSl8X?$IpHH% zlod}e6R$^QkB<;%aZ+#?1K%t9(> z8egNjGaHKZpYv`OMjOcYI1?)pjZdqtR6MkSejBIDQl1RJjB>u0tuhoW4IcAMJ9{u$ zUz*lfvdkP3HYExdFcDhd{3u;Hzpp_hsl)@8Hhf*AVkO2nIYCL2HNRLeC_{F84Cnc}j^me`N7+t`Oy=p?Gl5WCA(rbK)Lv7~o z+W9U%UusyvyhcXaGHs@OR_lH%*&!+NOYm&yt;=u35OG|)%{ z^cc|n_0nAZ?*_s4Q~)zw34~aI)nX*Jr3@TFo}s7#{~kA7_^S3qv_F%pfLDGB6RY{4 zH0@=_b@XK#3civs7D>(&=}W%$7+Zzo;1{q;eEZHNS3gubtn{H5r#06c0+G&6(C^_^ zhVPokw|Jp0c;pZyNyK+=SXDH$^evECm#Wv=A{u`u^Wj_(S3*%tN-y~@2by#w^cy?< zpd&clJrw)2LfBCZmSFOyR}wQbv5@pJ%Qb7o`xCScAqF(Q^WZ5n!yWONT1joXz1)!h zXh#?V=2PzG$nGP|X{6Z_@cH;#N+qhj|)ATW7ODY`{|~v2bdmNZfGo5p8avKO1DjL zNZY(D&e+|XHu|7aKNm?l|1KUne$BUCW_YqFQ zKiP~_Nf38Oy7dE(%V^!ars+KTXKM-6Vp^3q&9Ndz7b?)qFznMZ*s>AkZr_SIv)fAQ zR$Rdj{#W)keb}L8pXQBy#D&7G;rij%y;{bUM_XY#{J>e^#&F8FXXn5(?7=~qvnXd# zaZS8bjPq3iT>ktXv5jStLFxl`TOs`dK=~FNof}S-?K>%_M-v-Yk zINs-Vj7nD|@&hBX&|vE+>`N%Wp#LDv#K73yT$S+)<5}D~Z$C&7eUX+FO^GM+hxQ~G zhMdSb-KU`<8I@6@#q00_1{G_k(N8z)*H0B{vho>4mKQNt2nnE}nUM|!z9!SpuctZl z4^8mbO>gy0i5<$lqu!q~!q40m+IYNd!kD~}3PxV7Yhw#+vzQUs7b_5Ps1HuixCC0H z+8C~Nr#gieYEZJ2*@6cBimdGG(}@Uv_4cAAJyMGOAZzGgMeqh<>jJ$K)*@HV$Z@0A zp!`zUYXw_LHW_4ASQ3pF1nCv9ul%ksMd_RA9pcj=JX>2#5qqcL28nq*$I_32AG_%+LDXdbp~58q8Un$Mo?VAEyVYN8l7lf^D1H039oA!onJ`z zA8}A`!8)<{SW75-2R!u#-!NK8_Y@o3=Qa?2!!H?i3n_Y8Ft1Z|J6t!Q;z)mtaF+@D zJxE~b;=lqqfK7n&qe5o>e6uLqaxwdsorOoyR|~wln#e|}&C)gF zJC8%0`3rl442l0(>p0ZA&KcAJiHyJ1CGI3}t6~ zXsXOt+7PY^z9&JrD}gZ*vcWU#nFgcR2gilfop@K6XaQt0TaVt92UQOvN`8e7erU!} zV-?R@A%aF!=#o2TSlKgC~+rCWGuSoJnHNj0%wsxPBwqt!<_X%M=+ zN$#EPe_NCROfk@Dn0>7W@p5Y=uIJi(cI_)_w>rV9s}MhvlWZP_jf}m<-SWb$`_AxZ+CF62pr_7ldumqZkhwH!XP}~(K zz91ij*dyGb$#>fRo)h~DT`gn3rF&xdKKMseahHNRH}B2LSnF|8@YPv7EslqN{*Bm(f+s#>LoEYekyi7jf9|Wfk>74m?g-O} zJE+D|X0HBScxw6^tx)Vu$w@9a6sDO5*N45*m+5Q)^6mg3%Yu%8Dvo2B&Le4q_Qinr zIHoA3j#nlindT!GHg(Zb!1Bb6)`CR>CtR^T$N9-oV@kuYQ<}O^3c1fWjFcVWg%)iq zNyXeKxLE@7^_pTM_XY===@{l~C9{grh)7|TCk2GPf_GJk41;}2q3FkWk7*MtnBf$= z0$u~DU~I(VZVwFV>4$pLd?^>Q;!KE?nuHIkjPrGrf79o7lubm}l?vwlxJSh?7GiGY zu?v>dgQbhcf;|mXn7D^c5KW(UY}+r|=!hw+se6UL5T{$H{)V*KX$|+2k)?Sp^lkl- zxWAl=90TQe#~2}O*wo4?aA-o67KKxEQiE6K9lMur8f+qkI6v;LgHyK(WKZ8I0hYe^*xUl~CI zb=>;0J?ApO2ZGJqIiyU}8At9U4jMU!V71Yb zJ&g62#bfF2vWLugl%A0BcO3|?Q&tM$&q0M!)2kQiVR zjJn;CI^BWu0-6MYxhB(j<1LQzPqIdh0od8Uha3H7Ffi&&>3CbZMgW-C%?8-_N){b?R zZA)z|nC~<`A(=Pvk_qt|$jd686spo@ZYfmSFd) zXv~}2sZL99Y}QehF}qgoag@~C0uVbrFA*K-trj7VoqtAc8haLg-Z2$T&lvoZf*QPK z5l^@zr7YoJ3~N@c=#3?Rk$T#odI6A-Hrq?W;E!3v4)yO`9(p}}XE)XkRSHzP-kPg7Ge8<)}!~}7ue#tly-@)=UG@0+s!IuQAmIW>@ zBz|T_LTkB}WsX;$YD9_WcF+~OeX7ga+%CQ^yM>owTC15e)cfo;O7mVNJES`a!}<5z zRYDH6^9xM&-E!&ITx6Z+##3zXHewCB|}gx|HEiAc{SVHpG2j*4IKu zz#tVQn*hraPYnIQ}};Iywnr4-z(6rMXF9P6OjBgd_et~ty{Jz#ladvB z8go-xw5v{0U(%&5?_y9ilM3a-D0!yf>$kMq$nNjyucHcXe9idt-5+1)wZXaYO{>|` z0*WnE_uOcB0XOmC`o06XcL*IWEK?+!m%cs5MCvFD<%sqg*gKWi1WENX>Gmf`w$_~`3z4TZxrT7%`7pFK&pqdR)A|Y% z4Vxx#mq2YPlkEz-zIwsebkW9Fhlov8y80< zxJKw+8CGK`w4-n*xbZ^^%4SAdn#+#qmy%~w!wQAg*v7tAqp z>L?T3^P9TXAc?Kj402kQZ=y;29IQ63aQAW%#|3-)G6lG@UY+*F(nn)1%v+wL{{r(q zXmtxkw^CzX&Fz6~U2s>$KXx<+jF7?=ov3cS!qlk&**!|oPN<}k?Ub#feiu}tH~NI`gvFi-MM`L>df;x5s#bLRhj*zo0AI|!_kwhVCGgmgh?F=S z2Ta(~q8Naq!R1_vqBe|501=(=d!l7ag*ZLNgm#uN-c#;t#$%YVe=%JEo%j@(f=-Xf zwh_E-1yA2mRsBg@f{S7!C5`!N2!-tq!JL~4F1dw&uq@kSp%0gNLr7zN+z@*tc6GXK zJuOQ^(qX-2!#0rAT-gVI&p3u*Wp!9#PJ2WwIONq7DZb)`j>fgdx5a$p1T(7K&mT#=pqadJm3Vd@Nha&d4HeHqJ|MtTWk_ zFMc=hU#R)gY*W2#YlY1r)Oh=;b7PjCp749>D}&Cv^Sw~%7gc*bN9(s>D+a3e&w3PRKP3r;wsLb|al zhr(rln&~pNVJ76mya@NEb%_zjtvfo}-^{QiIYG%K6K#;YNh$078y|o1ayzG5H0AA? zGk=o*{hCUm-;$DdM|;RLBX?jx8yL6L(UnHYAxUPVfw4OSo^gjWniNXKkaNy>M0t-Z z&p7abWVRUrpkG`EX3oVj$uU66YZds+nWt8|94Fv~TUU(A92CWqhlAA82&f%+?)W!3 zr=_atG_`TO6kC^p6HZ>nfqX!aU@iC3p{FNI4r$}QiQaf(K-yJ7+%+N2Jq?%cf_0UdjH2nI5EOxSjt+#nnk(zcxraJ%l^?V{1!4?=InqgPO{u zg}qGn=ca2FP7?%Kz^!bKP>~)+S+9mO6d&>${8(i{=jr}Bzq;7By;zl zg2V#BhP|y`QiH9B9jQ9>w}*+1`9Qo{uP<~@__t&*zir^$vE-%n)$!s=rl-xKhS0Tb z)e|`r8f^oeN%iA!Wh>{m=YG$(pRXT{Pk+e#l$8JTb?#nSeV%cp9T4Js^+CSH!)R~QH*F-QDCVCVORDl=675il ziG2}MJ=W$UR1tz7;6tCqvIFryfJ1FRz->RzZDqjIWh@PxG!Q84wH>y~EB~sx(?3t( zr5ShSW8Vx>8wLdkIQ{iSAs~3P87Wixka`6;dx@3+Cl>OQa{3)1;8uoL?!5&FvB%PXasp%E)t+3hmkG)pL0G9D~%Qtw1ss)BAQ!wUp37s|2C zgU}a!0_jifW!(+$8%+daclL!>Rd+vnm`L`IoPU$qiTx}po`ng#cITsE2)%&RO-+Mv z7^RNQ=T%Rvo9J2tkK>?%_;;!09#QRYLwh1qENW=P=bv~+!AbM?t+@#b>znwTpDU36 zXcx-=xNvZp?Z&bRc6v&^=0|FjFD0hL)o^&hjB=;$G^Eu@&#%iCs3p-!`;b#6m!9bx zerYbj!rvgYqV7dP)(*M3^w_tOy|?sO0gO#s3bYkp@o;x#1kJ^`(%_m3yO=@==GIDlqe$+n_NK?1Xy0D}ig91+}d7965A z?S9)1fjFl_9a>FQ;vuFZA-a2&v1cPOnQQPZ@$C6X_zy+R(eM$TN#syI(K#8Mkww>H z60d3sQ;H&eb{!deP2}V zoA1Tp8;zB)zYXngqejXt8PljPGdfQ@I`CCgRy`+~_}q8P?>3|ftbQB0ejG>J zoa&PJE?|CIKgc)Z2j`q>Ik!8Tv2MAv(*#+A&oe#kQT)@UOrfxnSKXczMp^J(k;z{Z z&MiK70>MJFL1W|8xb8Nbw5->SwvEpcQOm4cqK0sZN{;7eeJn(-xl@+%fZk9!A3vBx zuIwvoi2v@w43~i1tvLMa6VL~iE0nSiM*Ip`)!Q$7)ge}kHVz_xf+`2qg?CnH>H8ZP z-Y|hap!>q-_Fi0|ELj#JPVt78!^l9pO4jU??m^R+GH*hVb(T1P{jhQxflSfT+HkR< zg}a&m1}P(|~a0W_Q z2l#TX!1f~sSjb9KDTxqjhG9FfIAq`EQf1#Z5x9|&e!q4SE*1X>lW{ zBo=G3i1&R&`~9YS4x0w_9h<*FKOfm6Fjohu{6`dDs>X9QWwLTtRhvCiDc{lZBaAEF zFQE2W#_Pp5d_c_DgZ!?gy8k2VwH*YVBpXi#jm^?g0uQ(d+;6(>jeOlhFN>7zEMoR% zc5l3FRJJ+1vxAt3M_YplsdOwfMKA0e5EtD^%8lKKC$cCj<5WX5!oq>{-=l9s-zY_% z7av}}`9xhphbw#pL?saht9WAbFp{8;cQ1ZFUk92Bhuk-u;#3{$(@OS4$gexRypJ20 zbKL8KzvKS_68zb+x*W~%RQ$R|eyJE^+QJ{M>=_tx<~3-}@kaf{_;y}Z+?h!aLZF8+ zt5TzD5-%?~rE*>CB8pQ-uQ0{2eDzgl520J%E<3W3p6HaT!Hvp~)#@VVib(0)Pnzu_ zO;<>;gPRc*>cR{f)J2LznBr9mIOr&W(~f1lXveop#`OKDOfSJ3hI}&J=Hz*acjiYA zGsbE5$4OU(S3I38Is6&OTisY`$lFY3;P>=Ki-d7#!M=)sba?n7R1}o}m&2g2R<2xd zhnzJcBNfBAo`H(WYmdt7GT3sA`VEwAJtBdBH&C)&FJ%J!+sP7<>)uO*$aT{^k`Cwy z$QQVo0BK%EYU&Up*2*9VkaXjLB3-x}05BncmdGMc2z>*@=&G$3p&wlo=8obfcq6R$ zUM&8g>KV%oc@FL?O20P@JA%~naM*20)(E{pwHS-CTR!TJr503Xy-GV2Pw!{BlNnD% zrn(saPG4ZMKx9~rhIRYlpy49f`KbXHDEiTOr%Vda^h<=;i1R_XRRS1}8EzIIZ=tJ- zM&WEUb_x#OAQQ`650*9kTp-r18W;S)m)`#Fc``BAGH+QPLkcA*%Bn+6hi zo%3O5$qMO5(AOu7JqVeEd&tBDQhD+U${?YHoc_`zB>u7T578ql{W``M`Zofv6m*6f zenH;1mL;-fo1k@vDwtKz;T$8L$(k+&U`4E|iB}^$lI_QOJCO=T%HqweXZ(haR>LmJ z8gJAB!jY8a@Ht~&F3|EMhLfj?u~17vGbeATa58?yI1jp(q_O#u+dTjQRjM_2-0=9# zW%((I9M1A)d55%5EjMKnN!68W3xrZj@^UDYsVQOv0Zzp;XnUu?Puw!!POmS)9t)%w5UiY$FG% zKP!Gn5I<@H*r@*rsbgE*j4*dV``Vx(;2|S{xjqkYl)$jNST&h{TMDiN7X@(Cdn=?Zp9ubNP8&V#UJ;mkR6E$Peve}ZRuhayG+Cxd;|3!m{h~x5&T6AkwqCum1RB)s{y6Lk_cYO zr)KqO=Gi4F5F3RV*u+c8c+W)>WA&bWo{Xk$V)U62js!gaA48-au zkk6UCp%#fn;VKi_EeO{^kU=KcZOY=Wd!B1z1A_1vCX2R3&v@VRlB56NDXQL&9wbCu z|H^jGzq-Z&f!_4=wU@=lwVC04K0Ji5IC%Aa7w_VI0(o zNEch<^r~E#^V+|YT@jcbQriKTYYR^ZW##fTnlGN%Dvvs%THE+6+;#-My|ueCx3t+q zG>;S>zu>;dSbKlkg?*W|Yb~BMu=V~t@Mk@E1egtfpv_Xj{)Hc@#@0li%STpBoZ)49 z;1>biC@!gDljCU47X++#ZWp5L8@*e&FCa_xz*(4QTOqKvDQaA3>uU~F6o!$C0(PuS z^8Yri_NZL99nh}hKf!sfDM9r}_6=yCn_%)kPL8AZmZSG?0O~Az)GO`&S{pnuD3%8> zR72IF?94+>+{V8n1e`e@P}mmEcZbAxo+qBKv@~8m%iBflow`nlg4za-aQ?x8&2jg4 zR0uB`+PhAr`Cdr71)69a$;#d4%UQX&gW4)SP*St$vL9Ym?Er=@;^OEEe|Ro7Te}t? z19FxDVLzn%@)t^fDk=$Fz7C@{S;6}#8>J{~6PdFmpqkE*QG+bxuq}&yaEz_tiJ+cn#oFxwZ zYATeSaH|b3EpfNNu20Nf0s{~}C@DE-j|&Iq*H__Nlao+9tyqhYGq6lbGjCNn47?+q zDMnA2onLTEfLk7D;c5)#E%XJCzd_A6J+94)R>$Ypcn*=WMYaL)Za6QU;^8_kQ47>n z-gxs9I%_iwgUdLQhnbr@{W@iJn4l4}=hR#>`cFNu)ns=dY^tJI=p>QiZI`Lm0779u z0z?6SKDMQ#AjX!Tqjwfb+iNt^07HCV>ppeLkc3luWCEUhmTU5JW7m9Po1VSisL4sn z>RpQRQ^Qw|%tgfHIAkUZ_z^9|;{FgsG-gTKJN#FRn<(cmGx0p{@|mSm{B=p3HWO1s zq(r=7@8*@an)dxW;!kLC>p5c;4Z&8<*?P|Z+YOOAWGbNe-Exu#no+WG0y0vdP{7ok z>-LkHVWFdR4e$`6mk8Gfnnx(lhXhNFDPbqTmIt__rh!Gsw5}=;sMaGBlz}X$a=Fny zx0+?H;sh8J#gy|Z&N^}V*;9>C&C4#JqPCnp`Na9bM_t5>TnXv3n2ao)?c-BuDVqu9 z>@0Qg0_*)w!{TxK=%6#`7rE7YW!vknw)ffU4#?@BReO`n+BvI!08}V?KefR(S(#C? zf6v7sp@`d+$A^DlCUUM`pBox7rhISov@;&-Db(%Ll}P%!;y&IJ`AoaZ#5?xU&sUqnBZ1oO zI*d#R{8YH7!(>DzDyUp%r61w0Qhx;o2O*{H{&1E4JtuMip)&?UM6J&^D;EnO^vaf% z#5%)Xch5`4f9)0fBV^bCFMA1$u$(2L@b3>#^J``p#~wCw(IC28At?HGTD&$%olZT& zs&^s%Q=dZt3MG4v33}4tRxPsoKC%PFQhkPJ$qGgz0`T&fnNL$MG2}fvB^Bk8f|Tnl z5s`S=-pMh8q*>PHKr*Mmyb_E}+nP}K*bH*#;_X)m!GPe4ClXR0u06i}EJ?INq#Iu{ zUMHpijZg}}jSe=_32QWgZe3qVtccEQUwc9jUL$A@N)S>gM4(*RA`JjqfvW(}A#SfVOv9xhlDvBhkS=a*nhsRmm$*7@I$J*Z=vsf)GPt(=Y;UQ|=vlA>GUEOW>WYcyv;tKoo<3L;*5)u@XQW^1!HpXipey?u+;wqE}WMc_ZRr=J%#i|AIr zFPz6)FYc`^F#Mv7M;!@@n|oUu zXXuJnOVXJhT{gU$R23HQ!Qw9@aTZR{Asp>G)N+U9GP(jN;* z&Uau-)&puIj2v9|cVXf&9A;croLJPSb%3|2^p4R%bOJj5c$ujrEEcdS&nON&`qs+% zye^6#R$J=g8cpZoT>Y`-kFX}8wUqD&XbAg%vJ7WHzH%@T7URE9l3YlPz1qf0r`+)9 zy@^^%lWpBeMyY;t(!(F4 z5_J4v>-p-KkDN2vQWJr>$pJ;VBed0!7kav?4M%3D{1hoCuFQ$lXcW!ocJBTuH%|uT zFoKKxbaKY+=03w@Rq?%sxF(?OUuLFcQ!|SXc?IVxQ;o_*4lU2=h37A_0~f#0!A&CY27h~*F?YzV2%M5(SL_S zxI$5P_QYH5a*n>sbbEQ;+!rNfPGE-7iJWI zmumj6m;sCz>X7F%0fiMYMF6>j)&>Dt0eKIHIjzJ6hKp!2RSzo0rV$XcxMYZ61oZL^6Bxs3;KOL0`-V!$v*3(3o7OH+@^kHZYygf`NRwVJ=aCc z^Qw;$g}gfGzMatre#9|p(fwYh$7${I-*a5_0qhaCwlR1!F@@%X9zIi_yImw+sS;p5 z1S8#@b^U}8y|Q|I#G~ESOJ_)*a0Qd+&F0%g~CZV3Rb+OPCMY@m3~+9~$JP?d%Z zr=m&&v?+T~V&Xk7o8O=`qeb~PcL7UW%&5#txvVu$J-oDZBX1{`+MQ52(ei8P#dm*pT1EJc8*KvNb+xGMlrV z|LpmV)&_uw_h~>Hpk{^DFUwnBu>N{E`ukh5o4LyT+9y*~=hdH2@J_?SEA8%g*4hOs zVjeX1wt2kcVnobvXRg0!(FdtJLop%niGHm@UYyq3Ue>8e675^vKmFg%>~wekVIn! zg}WHd#o^CN&dwZGp={VVgM9~;Da}6(%K9crUAm;_Y`(vL9(%%+>y1u?oxkS%ZjT=@ z_6zv3KS*QyLPq!Vj3Al)BCy*aKA$E}#32Y2FP&y}6I!-~A7D8VBgz;3o zjDP*mEqvgo%`H;pjDg@t^2aRmQ(tueX^n?Af4UM^j)aO^9hPDLo(p7lFvu9#k!W^A zSyV2PxaM&erxf94W$~Br_wx^GZ~lq5xL)v3?_ENLVZ5y3y7sc`D?u+_ z*5@cTfW(kirAAXH59|fhy3o%GgI%cB`jjmhBcOuQ9+eUXuSrY(F4H{Zy$PgR{+$Yd zat=_-`QPjR1;DLbf!+aUG6f+bxlUACCw4u^)+6AM#7K!s!oEzdSM#0>0Kh6W1{Y^a z67Bl}fbYix+ca>&a{sWp<*@oq`9N?>gW|V!b^cvbX5qo&SGol1@@WiyZ&}Ih;0axT zL~YqUkK{X_9CTH7um@GIl0vRCtqTl3{o}1eC&72tIS6g;yLI5@5Nva&%b}L3EUbD( zIU^L-v6-A}CJR10>0$PMvBi8qO|7yi_@diIgZOpHcdtv>$Oxk3d_0|0s4L&`=8@_* zfk}tOMS>67rzO1O$_SXy8PiGUPjt~gjVTOyr4y(B+D`pGuwsWK(z<-s(>_AC$~=t4 z7lfj=9u7R)I9Q;6nG8`9F+K@KUtT79&3N4kN5tg^bzVC%EIm9}=zSb~-F6%5u4qPnr@E#He_w_$T1_jybpZl>zR{R#l~D{VVh5oOuh5Yh|xJq+tumS#JZ8IWud$?#r|P0J}9i%3_38;rcc? z2bgE4vKL7gy%w`u;CGqAm9J)w1GOTg5< zTf?M#!Sc$(5}=Wx{M&m=Wr*Vz4s5q_(2`8>%B%hSmHFAM&`~E@12baoRyM()5|6`64dvI|Qwh1r+#SvdXoGb@hTVBw2UhP6YST?@dmR4r=GJ9SN4UxFcAletq$X zTx9U*)-oHk`dM&m90gF6t;U|cW_f(6#Ctoq&-lBnqM}=4_q^6u|CXOmme4jPi0hLl znT$z)Vm~k4N!bdq_&jsPr11Ka^@=H3Xjfx%*^KD+dXb%cPHVfIhLZEzq7`pbi_QVY z?9GP(uQNl4)23yyNH7B>SkqQ&_VmC;)GJf0aJ*{!b(*ANThvyc^kvDa7x39BjiF0L z!z~&W)>0oTnazjz7su3$Zc41c%IGA5kU7<>QQI(TqsE)#@0__iYV0argD zdGVQ+*AkO7N*Vo@K$5WOr|Zn7W{TNAG+`fArh~YX)1gw1hmtsuaps1@>Yo3KK^i2j zFe6L6DLurDePT8>#r~>RYe>`Exyl9-w|eTmyLYL?>h{aN0ix-cIz}Pu9pBZf4W4&V zdiknNS;18z}y1Z|7E8ZUe{1yqaIqg4nVb2YE8F*JtFi*?k zt6_(*FcHqmAD?~yWY!Se5cT)ml%bUNw=ZXk!jPKCyQi^i z15R_NCk1=&Yiw?9_pr@rH@v=nAe>sLa(g?DcBG~zfD+5d<7j8pNk=_4wEy&lbt7u4 zO7!)jBUhuv{27b>Xy+*tWxDj5nf(HAR5dqFw`HR)-3!Q2xLUz(FHCd{R;u!XYThZb zDn)r3km9FOkeEjX2ZHW*)%2lOr`C5hbeRpAF`X#R)qUjmsBg&hS@O$JV>1CZb420H zbVqCBlB4?{m&m{8^oW%!KX>Fuxaq8#`oSzeI@P=uC_o82Xl>~h_^EEtg*DRRwV(sF zz|z!B%LyaREFc6GZ2ZNnBd1V#x!;UV!UAt^VIgGV>TexUpECBhWb9Qe0$8xj z$`Ax9+gLh087Vsozx7E&1bJ&5paB7Qd#cWeOdD~?vjkYQBVq*elAFpGga5%<&>-oM zWxx1sji6aB$oZV$cKnBK;QEHgPdRmksOmQ@yd zQP#-sv32vJc3g6Cw%%}AM{Kgv_Pwq~(&(?OWuNui9AWLw-_OXkLrfrB-N?-wj^%uf zal~wD+j=ItNJT8|yI}W*Ss#?ms#WVXNU>>@S-TkKZItOjlnxN)<2eEaw(bZ z6Z*a{W42kDA*~rX{r-h5HXAHfh_~8+#d@QX^h)?VzQN0d&?KeJ^tgr+vcW|=yr9nz z?2+#nQnj4L5&uU$xTK8v`uPlYmWRpxcMDHB;mQo8jmItD1=wnKb~zha5c$HN5vd}-i-b3WJ31Nz*B*7&JXS6akm$kmW?H#Y?L?< zA^t*;bLc-YAQopM`7CGRAIMVrmV@ZwpYJg)dE-YWNUaJ~m~ZpGST5i|ce4s${C8^y zPMc_g3mBmPngAi~C=h@|7?H2!`iCW#269lK7H!bai4j2j2@vr8Rfa%AEU_uvi2~i3 z`$bDCyoLL(bB!y)PMHT&;5-M~bt zD~}Ez@m2lY9CdeEcD#H_cS)_tGG_MgxsGAxpFFiWe@=5J@2JepY)TDx882Z*T%&>8YKop=uHh$81AVLhwi&Qi_%{6f^ z4)li=4`uUl%BG1-L_EEeYv+g|BNLkS(nzehA3D;%((bV^i^dzSM|Z z>u_a<(99z#?9>|5?q{l#a$*=I)}c>HE%GA#g;tboeVOfZrvHxUetB)(f~<)OcJma2(Bqu7omi+QIOf{Z-Vnk|;Ce9oK^G4-KJms*ty>O7;ifcKl1WvcN@3 zujnB1`N(|7TP1-BhUy@K@GbuqasRJ(Db8%@n(gkt=bCvg6P-GT-(I$~MJ)st;MAY> zS=~7%nVRpEk;#~XxzUZec)9ZmqY-Kh!S31L#9mQ{}ok%U*@$PXC8<;0#z&^1iHIk zsW9z(HL-6=tta<b zK{}+AZl&R&yOwTQ8YM*U;mD2i5l;%9U!m_Fv+~d;(6{LCYZ_`~@QQ+} zVBL*WJzBz7qgAJJlsTWT#@8KL)8D&D`5x%t5nC)>D@LFkFy^2$IIs&Rf2TQnZZ^P` ze}~fyh8)g^TKgUA;G4_@5?x$rH>y5&Kp^G$p5@7dg@!%9vtf8 z5%J!K?28WsCLE0dAF?ZLcbS@&l4DPi6fHxHv00Xbu7Qfmf}EO*ZLXZ^T|Qoeu3e#b z9ju8`D9+JO{#V2tPnNt*Y;w(KkPBH1>cup&O-eYn37lj?*XUWl2xwjew_g?$8mSD=Q*fjQqM zdjiZ-b`ul%&&`1FPKTqY@dhXbkm`RA@CzJX2Qj5!5c7CiTCrOBv!o`xncrPg+vgStHXMbkRz?v>IG@<}x?0R&C-LC- z5v>}{=giwmU)PpdUk_rhad^u~zmgJ^Ec!eN4o2UNhd+T0E(8ixFq9^t|Fj|of21;= z9P<06o5^U^XUwZIw?|wM)|Ez&yBgM8YnK7EbzzqWKEVI0>8k*OR=ujwH|TDG*}E?8 zRc{&xMvb_6sh9mYb=NzpyK+y$50(b5Spj^B*eFjZpIy>hXVJ{P^0ziAu>E_hYd)hr zwCsINX}(@rQy6)?@Ma4Bc5ey-c~)G$d7KX(W~sE{M^%~ z7IJ*6v3sIaux&_^g54Hh+i&(_KP=pS?ikYpHCFqLv8sG@1+)UMoV`q?RsXdYqIJ7zj2GOzTm-ug| zwa={?2XmccPr31J-?{+1*Mi_1xu}OStAgj;h&s^WQ0gdD1CmMkO=$;>#DmHIk}8y? z$o!HEN?6;AqNu_2)&#qEDuLVWT(?N)PaHWP(tPuV)T`{7+VPn+0(rB1m;9e!>`EBHgk!hYU5NxM?eT}4O zUhqX@#{$Dio~ij<-R1c5OKbb$G9i6}F8zX}i1%<5fVoof4v9sXu76gB7io=aYozfX zsqgW$*3PBzbg7f_2jgfLNcq3X1S9Fy)uFu=TaL?heVWr$*tBLu4I$rMg3II$V&Z1BleVU^-Ddjg&Z8DG6>9li^ttQI zngC+19IfP{6=^43!aGYqnuT$zj_;jrvoRNr!Z=%&2D`H=4 zwoI>Cz`_otp3b9W_o%+bQF>`tn&unIF)xe?6~tqor+j55K4W~liB}0vPl3*bs65WC zPu*PAi|PKnNyCQAjw>FGdm2kUIhXroXlNSAe)~03s6CTyT+uHHXEK5#_+A*xi`Nms z6=xsOe=b;CQZx5n9vVa{DUFb*XlVWzvqhf3Cc41XwQJ-L`B~Cn1O@uS|273U2dcm^ z0W`#*u>cX61K`j5IH=}dI!4U6cgb#A;)g-WvCL#Z7OxNL1KCB|O=`4y_2~2|0Y}k? zda#*o2Ikpy>lwZ@fgGq9iZ?0$aD;$Pmmw^G^xs9$E;p*N-&R_!n}3b7ZGTx?Vo0E= z3yQCmLSEBMQ1-sDzA`8OKp;M?HYz)9>F+H7O|84_XrFe&TrBUVmy1~ctShK!q-KkyKFmPQMJ*Z8AwTP^sOKYc5}_h_ zLdTGd`H0u#tm%ucEfesjib)UZ!SS`LUCAY@v^`9P*Lq;Vbvx-ZRvxL90u50e%vbn( z?%O)5(`-XtN_S7p2DOO7tVCi2DoQ+K=r$#Zb2jRR%t)R&Vy-B8iI_e>OJzA0Xk8I$ zWyv-g^Vlnxt;~3Us^(eWA?GDhGW+&r6Wf^4f61eM;fWdbBz1 zM%KS^9Zf6Y4!Us>GDP;?hFpSQntI8p_aX7Y^CK>p% zOWEB?09^{p6V=KO?TiK<4Dsf`^an7e`j_S4HsC@>ngHY!dBgbp?*T_tbsoT4Kuv&( zzCQzW2CcUvGZkIDUx5}PO}>%?^#KNnJcUtoFXJ3&+|c(1;%~YJzlPf&`v-?F66T;f z@1%7HI1(wuIH`p+iAh9Bk$Cfah(a9L$+g74UDa<8cmYq>Li{WNWTV#3fk^AGgtMQA z(47|Dd>NS!Jsk`}>p5#*A~ag`@0X8by4zcXQyd1D30wVUOrc-=zik1NRxgwBOWF;a_>Vg zFh9z1LGZQ*b>SPPv(29lHEJcaQkzSCgS?KtzZUGqWLBOlaN=-(x`XC>6|5F>tg2Lf5X%R=d-CaXZF*hi<* z+w=4-6fr-9*f9Hh>t1ltqwhr0H5wlSevKOZU;=jXIl$#kj4wPi!iSqioUmDQ^HB7D z6&2G&nxqkr^Kdiqd{N3{5%VoBs|jadDStE(E;B(COSWlc*W@UcJ@#6)h&U;w6OVW7 z%2!DG%N@~sx_Q^~e4mw}O}q$pIwuE3!HCX*ra%taHn#% z<>iY*=%~gK8i^fwK`1*;K8%Qc-j^tIhfYILsCH;)1eRcRX0~~uwyRW6{GfzG^NZ$U zxOhgX-?n%FDwclej5e;*63e)Me78FDDlpdOqA18>Qj(*TxZ>=DIt?;HECz0EA`NF1 zjW5^pqnoplzlNJzIT|gB64R(vkt`(%A8KF(G#2NOCpjhpRRZ^)q#UWonn%sctBI{0 z@jp}Iw7&3LRU$m65rcgDaqp!)O!c^)nqkn04OUWqeeI7NtX}1oSzh-diR}FT=fIZc z_$11!is&dtU)y7Bg;EpErr|Np z6AGUABl2qIsyg8)X)ijyf&0NFx4aT1sx4dyZi%v(V`O4i9Bx@Lxuux!?Hw_3vNVUY z|LfqVD4UtIo6k`0*%eecsaKg(yyYkN_f{l?7V{qq1?);CA?N>x z@gHdZfJW+Y62!>arPtpEF__^+DPW2M@c^JY!pNR5X(5zOw-$jDg}Vx0~`3zfwPM;3gq!@`RP79D1@b5Ka`j&Hcjj_BQNeYXymlp3%0mD8Bc6^vE1Dj zOJ#j2a!Jl*tlnVGD*e!1)rnTqW9pBk(7bJxzdu8Smb<;bRN+q~>uY0~@x2p@$d`VX zB9wYxNPN@H4la=R1hv@n!rL?-aKkpyMO<&`;xSiqtoCIY`qKTVG_`Hk2)+=Tz42V` zHFsDa#rSCNm%q2Z;v7w7Zc_KwGT()lM}%i=U^(_1p$T$`P12Q$(Xw=gaL@UWuimsn zp+%y9Zz)XO@hFNu!%y<2%Kkd~pn`DbdZeUsyfDy4V59l5`S`kCw0))jSr87hK@>Xl z+0^vyNEThCf3xa6HN3eR^Gh6Tke`1f5Jm6G4pbZnvb7U?K@s&rj{gu!?yy=Vn1An% zVC8;$LO>@`$=(*8#;gbz=rrr641pg?CJ28EF*}C2if{Ls4(;0Hd52wZ$NG5-2z_(C7^;`sw;y~c$y_}% z|4UlMYe1GKmF3Zc+xmh{I?Vra5^THUDAF`eyzgZ?;wTU9F7mqBsRK}l1Jz()2uPrW z9%2xd^Y2%#wMZ;a1C|+_xP2|S6##*dBi4nh{FcqrZ4&tYjQA_gb;TfVLXr_5)VQyb z0N4c8&I>rIgXokV$%iPsiiEUgc zRg-;u{qs;!W&ilzYl?+iIwwhUDSUmEhR%THFbZq|1FvPOR!9&O7UI$V)9UoxeCt7IoH&uUEy{Gf7ftdFSwYcUtXt(7}A&h_*;@rs-49#9g$AM zOjl>jJ@(L5k|5=0y^%ZTcqKV+A8r}hLm6uWLzgn%@A}In;g2N+5D}%<2c6yTN!L08 zvF*=d*9rf#st)o>Cd`^`k(gPruTq z;Nmc<{Hz9wz^*vJ0r7{7Sh-qFY{J1_96a*{c!40*`c41^Ek*amjXuMN&OJn(N-Wgk z8GwFnG8~10ngg6(GOU+=UjR6PkQ08Zm4b+j|7@5%gqrDHp0K)|6V>%a_D6O?gnTeV zYpvGMS^C8w%n}00n=J%pMIOeZ%OKoekL7AMA5^F*Kib+}J6`wk&$7>u@LRULHUd?< z`p$;!QwKV1A=3T>a#eKa(Eb~*SmucG&Ptx4<~TTP`UvF5v8$^X1T@p6uFi zQTFydO$1p=NU5&pCC*!6_;AybM(>9#tg3rO%V3UQB~$qsuaiV+T}INKe=SG5^AtH+ zpJ7%E(yQpe+&W1^;E73LHxVW7>|9<6b1Bs_JQaDiQ+B;xIdP1hd^Dz}@UE1tx1ER= z9_L>kic=04lyZ%k>s&-mjT56rj+XRz$&2%cLfcwh*Af1TMSw;ka#(5nO49#8Sjm3X zmt?*UBR41_JwTOv&L0t=G9Ww9I(!`QYye7;mpYrGDf0@PRiYKRJ5*QtV&+zqbgJ`>P`jzcg?Luf%+eC17+;=rPRP$_#!^!(8^gq*t3` zzSSay6<+pOxw~{}Cpc5~o2MZB?hHzv(Qr`VbA*9OFPvh>L;dfqaC!JwI5%;&u&Tqp z!Aj;R72D${@okGO^`S=;$#gGiM{2zsE)kUjYzro>w<;%P_~uemHHj~ z#28TU0PBZ>Lj0z^>iIe;=~bq6hqo;eU!h2N0)>-ipy;Iq9G7&tJz_^pj@=7lfCH(#+nNEDaCU6j{uS$7Z<<7PW9Sf;KOZR zAj{HgtgJ>)(<%yYAG+bI?JMwBAvSUR0^Zv}8xfK^Z*ikqA#(M7DfXJ(#pylG#~z*Y z<{sat5=EF^y1;b0dI_W3gBh-=7lhO|{8!RjO-FU;f1grD8#yNhcr*Ua=6n3x@E75n z$-R3lZck$9mmD#$Rq=Ae;M(pOw)9NQsn%GmnCBzxxA;3T^q=hQVvPr>-^9MARnQS+ ziPVrEv+72K^670#vp(s_VWjo)CqWkAus5@xjLa&Fv~YC0CHH(b>8pP}L5NH*5s_A| z3LPGuI2ECZCDNnX&{}`twrFiMN;z@zLC|jLD@AXSRgbiWv~^3CU2=XrB)c>D-V%}eq6P=-#VBF zlpVqqQXdl#w%m=V{VoPd5pj4MA*_<+FStx^oBn`Tb?gKxb_=Xo zP|=E%ue|_O-S?)bMYOD%ywKMiKlR;81|f|r4F@JOU73~sM;3~hi3Y}v3?NtZUi zO07&WGvRWyThieGW1;Bb1uMftBM{$l-#xuK=(1T zx~j|?fB#+2ZA?Shnir%(f~m=t*f!9i@qeIGWzpb?n3|*S9GS+`wGfX*>I_=o+Iiqs1CoKF#0JI5K)U0q1QJVHBv^eTibKAMCx2++e{d%OB^X&2GQl=qm zMrtTV0&lx6p8XD4dxBS9_0=Uwj9~ikJ2WWC zX-}NE4QcdFXdgyD9VGRs{}o*!9M7U+NkkJr#^X#gZ0zBW|4qDs@~y^K>!<;X?w{)E z!S&?1He#_KI5TDH=Wt#j50WIT@ZbONIC$MqQi>LTFhilPe25NfRXl*76ZYe7x0B7C zQmY)9#2rWsc81IT;JTO2sKoh-5utV<^7#&HDCL^Gfv1K0)XYinozN~ORz&3Yh?RO2 zS@IFw8Y!O-f1dFTnxO`mj}$hkGX>&6+rF~9mCb?Fj_enKrm2EOh6yB=19)&0^`};( z=~1e37pv>u1@v8(X0X_}3OL#XV%CwHe5Hcu^^x0=f#7W-(wP}t;V#4O_vUXfF0`#y}+XIC0=3(`C-~t-WYbt+Q_E--!9n&uLPA0 z5=}E9Q3g(@JORF#X7UlPIfUTId>b*hyj-|?tn*3G^>8Zf#^c_=6z!VF`&ZuwlhZRV zz_3Eu&<8dr-&5^N(=iot@$Zzo_8%>X^Uigxn;P4eQHAaB`aq^IT!B~*YUBK? zlffd2!e#VVzA;fuTRP&<&OZefCD!wgiHcQ5*vW(;&pm>NWw@|%hk;yaK|YZ#9f)9z zQies>zN@*M+>FH~6CP8U8xae4EUXWo$mD;T+aPMAlG4GDWR^#Kmjwc-Lh;+Bhu<#J0O^j~z1+W@V zivLlEmyt~jmD*zIQN2n@#*GRGJa>1saQ}y7AbqZd>lIKj@^)!#s`P*gfr@3mKNU^z zNdG4ipuW;ToC9MFj$$vUuVi3)Hv$%P3M{dl>5~d2+F!x_D{=2@;Dc$NL@ib|k0`qI zNp93@vJpJT%?N`kxax2sp z%Ehxg%|$5s1&nWl2q~$LACu!I4u7g!*ei9F6Dsu{QxRcf%=;VDy_YJhFyWvNcNxj~ zobds}QnNSsQK478@?Hs2^%?cvbpXvQM_RE|r=pop`z5udsjx`QM0CfSz1~Et*Z$;f z6~)#trJ`y1Pd`lVyWKmIavV>nVyk~FV)1o2yrU!GFy`I{v#{b_i6oK8Y1AWYOReE* zvZF`ONOIH;1x$>6scJOw{V;b>(IMZK6b$C&8_X?BKZ(~u;CJ2mG>3x*H{$rl&ccjb zX%4OS$61DXCJ&VA#C{mM-}4pxBQKe1+z@$m_B%x0{;9_+UqZJy36%L93kjF>-N*0p zRXnVe!mFi_kc>o@5id5GcR$U4aE$*B!DIfP&^7tMh|~is(Prd|0!)}2u`3{WjezGy zL387d2?y$#Y;aUWLmJ>~r~g5?S_(0!@Hu&e?OjUkwNkIzHDjQS;i!q-svZGO;M^!2 zafy425Ss=+s~kl$z>L=4RdjP4!6GLC^e@RGVG=_NquO(>Uh3xh(7xP68wO zA##lS_K>wg=W(L<<}S8?Mvb*`=RC>I3olFC<(~Mo&vNsKGv}yxu-4(zEO*b}2jO8# zljR-EH3#^D>E&2wh!+d3d+ zMF4MeZQjl1&}?VdRgvKf&vFXuUUE=R?gQ3J5MkaBpAxtN`@>N3)M2+7^MU>#Lgt!Y zIgS*KpqOUf%zxSghzAmJd$T=6ehBk@j%960$szCfg=dhZY&kG*SJ0T-`B;_a4LBg2 zIC?0Dn0eJqREp`71xuR9F&jKJ^San;^19?qR-I779isYIfKKHB_)ObV4lasy(1DytX*m1gbWM-2(Up-G7q7@BQ_i;mvRQ{O{4(;_2tbiCmphT91s$ zo!?hi6Rw95mt_aviZ(*z_%QyH&6|0r3#XCSGC16-On+PoJw~ZHXR?3dL+AN2-7`sd z#g>0QZQ-h>*Y0iF(N&NH^=-LcE9hRCaT$r!gwsY1L7SafLx6M1C3>o;@OB!1i+b`AY?ea*$DJQe zYqz7nXS01%ESGIfNsl$ng)6N-O=Q~0rkzlovZl{Z9??r>$y_%b9gRBC#YGTxvA6Eb zA9!7VwnL=H2jg_Ud}KoPe3vpqC57V$JRf&AFVDj^mkzJ8DPIgb!530G^5oEd-OX(G z_6?#s5hot#ne~ICQnYtNxLFIbwlbj}fI8F%tW=Hp-7}}K{N?V}`GhkK=Rg_te+7yD zsH;YW<_Hc=?H*ir8(GkqXNJ}wBc~8-+C{__9BDdGRP6js1i{lZRe(J_ybbnECXkUp z8ZRM0rV;}S0*(+xNYl-aEKk@&P9DnE^Q7DijGn_k-J4r33Y3|)j1TFYpdH;OmM$E` zxQV98stZMEz_1H{8{Al+GQOf7sY%eVuZ20Z?0s!~TwJ3;MKsH8ckBT-JkR3kJ&yl{ znkno9k`i6ph~m8#@5)|TKBGp*A&@Xg9|y-*MCi6FX=1&+D#wa zj*Ek+$WMmoiQDrUu8Drd>7SZ8qGjCV&R209d8W4H_}0W-vCom_aoP8T@Xkkxx+<=b z1!KFG95xUHs!w3)D0nqKBN>a7dTjI%y){I#D5nU0t%EraFJKhHUeJpPEsbKwM=8hF zmbE`t69*pS^A3%T2fwx@e=mK3mScCM$M@MX6iuksy5m$QOhPsx$dU`WThhZvHpEAa z8$-?e+!AW3n9MeLO>!H4c~>wXxy359#8FT{)6URvA_Fc3XD`_XyKcG_b-~#t>QAVyLy5||Pci5ESo0P2 zegz!xJpZh`Y@b3|%&pah@SxjEf{2P?IKTJ54M;ngj=TO@FXRy=HouBPL6-}I@JEc( zEYRv7nTP5FuXPw7D_b~T(#`N_VXtH1OgX>8j~O520q*;}b2-T$tGMu-Rr`HKNaBle z^qr=dx6705j?(A`g*lRV?sjzN*anMW=Vf=k61v>(Trtt!=46P-mUDGz=Rlpf1)&kp zZ}GDwOyJrd$H? zz*}wm=J(C-l6Jygzn}t6#tk)7uI?MiRw9_MU=1Ze0ys+hO~h22{*`1p6gc*J01!c0 z3Vf-|{Fwp++Rfj9Y69EW{E?HORJ^Wv#hc;Hk8;W|Tnq%bJQSFUQ?j8zTx3ruz$mno zPH!O73^gnBQsnuQSA{H$>&>jG&+U$xDrvX$;U>gifMSVcN}(%msR7F`DBqvi^3#(( zc}Zza1GvD8(#os2%~)o6m(>JJGQNX1HDbGuOrnc?l+fw(9!#7agL&7N)SWEHyoDDB zN+E2uQF}pTQ(=}Fo#^pYJl#ORDWCP&_s?R-^@kl_6Pnly7n)oq7#k#`gB9))UH-i# zuU!XkFO0fQl#AQ}-;#TqmALO@u0+Dc9fQ#0tg5}HtbM_vhXbGKr(W>CUp(MRZ;NPK z{Gw@vi1oTUhDFt=d4>6MV!CHM3_%o9q<#5X}CuaEzST)BKRpxHkY|H{V>NF=-z? zwXgh(sUttT{DIc4Iygn z)vh_+2z=E33&{W-H+du-7s46;W?IB)`UU2C8>`AZA6-!~o-!MiCS$qtBegqC`keSc zs<2sVu4+XGR;nnAj_-bcSXN|gX9^#Z6u-A z{OBNz1bV9rw~3SY`9~skLVIPjdiC9pz=tG0V-XS5E<-f;B9nUnc!_5t(@OoW+l%_s z7c;Z`WgL-su*Yt#rh(WrzDV#n^Dp?yp_q=PpPh6RF>}*$I$CIPgz5}paGV#VvVQ!d ztEYTiU>Jou%!8saVMm|xCq|rA2P%f(V%apIi=C2mjE^hxJifQL%Kfhv%W?PJl z&b_+2+o7is)HNp<-Y|8#b6v|3utqTJbLFluFB4^coz1bLapHd_x1JSWj!BAC&po@! zjSIRMfd$BB9L+l+qp{xy@@RK{Uk3;*y$!zGDRuqX)*aKp3p2m?npD1Sf@hzNU2dQ* zOlj%IPk@3v)(CC#sMRBAH6G>55CWl45pqtvXLsBNs+g;ZiSRxWvM|-eZCR*92z8|E zN@li_8QI3F?eLhji9v5Rk85W>>?$xPA0ZgUB{coUWD7*vuUedc*#N;lz?iyv9D3+Y z#!OtsK`YEqptf}A%P06BBltlpzsJ~83Xgge+GJ@_)w~pKXApbjqmijD*;z0w?EiI{>{Ml(D4zJ zSQNiEF6r!Oq-n~v0=oj}{8+DqQ zlw}HJU-xI?)_Tn?Y-)dE#Z~sUaLiUb{Q6Mv=9D~9G5avManh0|MGFkC3Xk1kr6rZ@ z@Qaw!06ZkC*!0C>#!BKH9q%m6(P_OJF|2$Lls1m6Bv!Taz*K%sW4o*AmRR2Ro}Rh@ z;LA%Go#hgqyV`#fZjf%$9$3rq?mDw`E=^obfoDN#`~^$wV@x}R*Cy>(aEs&Cv{z!A zfnq{t9Bo(cXNO3}F5{TO=ryIzA&O$2;CPCawo6~wJd^w&n4YK?*=t|Br9H6Z(EyPo zyk#Pb7p8Ro2~DG&wJaAt{tS5)$-I83UiDB5IcJE$n-oa`0OZW0NP3-Gt{Q=tE0Vhk_6v>4zwy!7=nIP^w$uA_izGx+T$$n<2wnP3a? zOLe9^QVzzeNJ?}l$KRHs^uGf^&;53}_mVI>D=GSqZBLH{ z?5!gnON^fjJ5yDgx}Gx#8~3<2U*1p878-U&7-#rcyJaH{Em){N*bbi1YG&J768GR5 zs-(>&!&P5VIKN-NORc+O=`c|7qC_Qg9%-TQsCYS;)v5WPmZ_SDox^jhhFA`#m*@V- z%llPpI_B0`hORjfiyf>vdV%*xk<)RhhLGY-W6)cvnAo=s)5|CuVOm@NbDLe@xPRq(=K;V@Dztt9QR7_&h(EoV2s=yQ2OipxctSAP{`*k6{>d|ea}l}^C&bD1>y zrKjj(DLBrm9duG&e{Vf}G@?mCQ1$TrnVhUxK5(DXJ++(1t*Q-ffH^5i2meg7f7XY+ zCK!u4#!RMKq+*-xpn4eT3&qUZu0zhb1NG_o$fD`xdvl_k)n-D85ALJCK;0mShk6NFxr%QTqG&f!$Nub28xwiF7dd5 z`TyIh#|m;=H31y|KPXo>rOf=w(nbG@Y|Bb}K6wE~TvY#0*ox3ZdR=KLwW^y)-Zb$2 zqJLBhiSFadv0$m9@kqThH&Btic<%#5H~ST+XoF_##U7vh*Nq!%q%KpP{0?|9ATW8$ zv8+Ww+}egyY^_xSOBu{e#IWUz+AT2}bm{zitHdO#YhTJ3;nsN=n9pIDuuSN z^GM~kO$eS{cXH4l+22{YoS)n`=*9t*7E@cxw7WD7=jmo^=_ z)13Gy*)$ZN7=UuNPbpQTEDSEtS;SGyCSEP#l|n&33d8Y zKe{qE1aqRp#jrC2Y?_Gc!nK2;j>@&Qn~rbv;OaHzjy=1?MeSGH`e=8|iLCPUvJ6K_ zF?mw(qzbax2fO7!8S&}jiiW~|6^*V9$tdr-Ot(!btNw$j6SpLLup1jqR-#!%Dqb6S znWI5S5SEvj^@x&Y74KWc9;QhmY}`X2&QB zsNE|cYGD@9P=%1_Wkk1ZHd8{<0nf%-H#|mPc!b5CpAmB+zQ+jGgUj{$0z;h%?bZ8u z#Odbe(KNL7=d?)wU093VFM(>d*zZ})r^-#kNs)_WAzpy~k2ciamguS=JDFb7HtB>mYL zC^69)EJnt{wI4R{1|!lb%rA?c#L_iiTnXOM>yqg#_(eVO@?CIJ-@{VsqzF)6Ds<~t z$EP=`ckwyT6!)G4l#E`;ueMH)Pp9ZxGz66&%t5JU4^7d_tGImRE0+PPo7(9awn4|> zm_2_z!fh{e7JX%tR6$IW2!s_6zr}6ij!v_t@EW;c%*9FyHm= zVDyLd+O9@p?!8*{%dfU9#Kx>w{u@LlvDojp!IR7A1Fta&AxkcQ8gp8Kc*J{5J1uE< z2D(v%S(Z;xGdahOc~$-kj+|BL1!iKz8prI@0f+0@vImE}?|9d`wU9ugk<~zQ)uEsj zPVIro{*yMy8%su0YBCY+iaed_f(KMX8}h~H>X z3e<#<4^}(8!ZlpHQ>b}GK(ECtUr$j-x?wf6tcPXVgH9#*m+oetv#%2L5 zH2<}IU?;u&ing~3MT>o?5SA|@*DI7^5hYk5%gvIMm(LzDP!JMSATDnPE93p1!GoYko2dnyI6V6b9<%jHZ03; zO?%~=JIlSS#_5BjiKYPymEe@{>kHFS0saUI>Cw$_d4Kf)@T-p!hSvPO#ed#WOs>;J zg~r&=XKIl0?OPxAs&suhvS=yfOpl)#bbSaaP1A4zow&vH!LWXX7Ks(;pcJ^HM}x_( z3poWXy?f?P^Q5vx46*qIUyn09b+eM`YDeOwg6R(RQw7l*+8H3}4L3?Zd<(-x(jvVZ_ zQMkD09i_zWi{*8MCR}-Kxy*XWy*aoxjPhrfg66(jIh}G>5!@JDpUGDI09T!qs7PFY zG~6a+mclV*&1-ytxji97v~PZ~KKIKTiyr=C^DY-x{U|q^IkF$Z8U6Pb+dQi$f=3lc zLE1`9sTVM$i#Xm1#%`gas8dRyF^Ud4c;U)Ytfw_8BkPCkET##bQzn_{-wo$tOXxM* zV{mx_HI$cy=?(+cjXX3y2V3`aLcu6m<<`CRA; zz5nkcm`xgO6sx_O`4fwx(eD?M{wa^Mz{Z$m`_n16JM5hlxEN8T$}7Fpj2dFW8R8jm z=cM3zRmefmMe54ELd>_UYm%#z{#II#8i$w5L~`YBXN7y0k6}FpFRs>;r#z#`Wv~Yk z=c0YjP751_%SIN0_kCV6O-VcMdCGZfywv{yN>15mez5DYul!GlR|LgU^L5DpPR?NZ zS<@FQoc@j2Lz8<$z;1(x+d0Gm%!sS>t}Vd9}B= z_g_~vRwCMNesw*`ospWgCbPVX zQ?jyW_nPI(!T;nYa6s5uNgaYKe8HE5=nqg#!PiRugMDwvhn7Hn3MK#m?jETDx1Bz- z7^Qg1=K=UYr$+=>)l1K%;v;7QB16hsNjX6&2T-(XcW81iRi?3rx$TG4sZB+A|+J0 zmwl{jj+ZXhR$~NT<&8ya88{E7U#!q;JW|bFyXh$!mqsBV~sQetJ zq*nv#dDL?T1`DhY88Kwm%Gl-?P2_s6_M1YWc_$lF0n_1wqti$OR87ZC85HFc`kZ`S z_-N3@g5SH)?M$wj+tfVp3aO($m<<*mk>L&<=U7kt@;HOUxn8{UaYNTlD!%}dU= zqLKBaN;o^;FO6m~8Cc|e3tkS_oefe%9dm>b6d^%m1 zm)~?5G}j0>yXMkl@POzIyh7oFksnT4oJm|8zr+Mvq(Ldm-5oD2`c_`zQ`|93LL1}j z<)ym+y(KVe>(t!p10aq_i+@1$Ys~K^B|hDH$Ld{Lr#z6i=BOmSQe4-!k~$i zU#j2Pudj+c(fQ^-JK|e2r8{b&tg%W7Ahyn*VJ0uX42jt3msCk%VwrnGZ z-ZTvRQOWxyDszApex)xglNC9}vuD9Lb>eAcKJ6nB-~z}~ zpVI)&JeJlINxuF&G9TwQI{OE z?yI(|g+5SwuIjY&_ZA5>s+g5CC!GR}YwBK{L9sb@7sN9;L(nuV*R6~@3NDuyDV6aI zpD(VnzG$?Kb}$EZB~0lqKm2nT z!d`52RRbf^mvDIPpWcr&6w=MQ{(GxTz>)AgaA^JMhDhJ^MZ{q?fu5wop2bf~z9_m& zi|HTz>gmPk#qHA<9vZfyn3t=`B@4M9c7}Qe-nn8HXjC^g>9D)WzME2*B^R|p{|yps zX>*r9z7nhFdczoyb5i&dw*ZX^IFY+a_Rt=96?p}0O_%hJqGwDS^Z_&In&z5O z?f-t=uvG)5z12E{YbMKfnA^_<_G3kYsCitR>TOEyku;w)dvJl_A!rlelcnkx1fHFsL>bycr3vfCmHN60K zK`k3}MFz5;`hHqe)Q$W6_*TXA+x_lu_fl_4ti!yRPcu=6)g_who(lb zf#}{k^p@A_%iJQ?EiN>L;b*4s|^@uz=^{=34J-jH7!{0L6fH(c3t`a1^kGje@@6>I+XOS9LvSy*W&f@%SW;-We0yY4<(1ZhTKN^Dfcg#go~eFU6!RN z{MkN`eP&a2mh{tD%y9r$O5XM&R+Fr9W$^FGuKwz8zPR=L8OQTs%v!ADIcZhgdYoHh z?&~3l*va~ty?9-!?-^(>X$#q((6Qla2@T9&f5`cc=JRxy!T?N!j zSUQIN>44S_+0xY}7)?gBDwM3@IPO>}vS~_yRwMTw91k4-kNK z6L56ChU3r=famsqx;Z5HjsbU?Wh4tL$ijhv=41VX0t>igm<0)wrOjr1mj%gyM}V3j zC=Jd)wRNpS0o?LM@@H)U?XtkuN1?kpebHIh6I>Pk*lZ=ifQO<%5#Us^8nU+3v1Y;U zGZ-o*-_pu*T(&B&nkV-qEI?U8dl(;F%EQ2^8=o@j(gIHA*ZPgOEZtapGCcZ&2q_vth$H4KFYSbs=Q)u=&BdIR zaGmHGK;(im$%|K+?)uF?Z#dgMbh2A~Q~sOC`b)V_Mew=fc7nB|#!36GmY`)EY+-OIhU)98jzyT7xg#s?^P)+$kWUGq!7h-@ zqb)U#K0@@qm>e=jinbS3P7dkZ)L(isd5S@D8a>H4J9UR)&iC_#g5Or0AID9d^ob!i z#r8v5k^}cIAi{s6@vDrpgPn3_>wW=zpe%_4LF5VWhe^fHf9nkx4iEdoN6QU z*LGLftV6ZvR=+{uUAv!%e&d=Q#IoZ~K9en1LA!;IoK?^wP(He3kfhUr4n7+Vk>`p| zJ0ToGf5Y~~){3!G)ZoQ}G$do4@RmRJx`PD+W(!6l7D{P6#T?hu`u}-{0h0FX?Wd}c z)qE{pQ4d3|E}8+P@AMz^*?TBG>ZaipXn|<_E3#&Z+IApgq{c!W0Qo|6L%Q6urf070 z@O#v&%tSna>D8g;rTWoB^}_jyuh-=7NdVcy0EP@o*TpFIdkFiGfs7?bmX9e~`PxH2 zNSTL00hn?Pk8}a1BJ`gK7eb%OJzMQE&yO90J_8R<>(T{>SfKD%>gRh6G_VfVTH;zS zrp24R1_cj=8xsxnKlaIfNFc00L$XH-jZ_JdCmN`23PjV~ z59TN5rye&#@4yj{JO{33umC`s{#GqZ@`4ItMbXo~O_TIY|Hh=Kl~B{XYYaAxwyMnA z&;ZnE7Ngq`_GaL!BoiYTS{HpV(X8h%%Xh(C2<|(XbfJ{q;~(Tt(doCzS^s{R&xbA# zRGaU>{^3;gr?p~~hqI{D-0LmeZ3iS?CJXlWy> zQz5Y92I#yyUYrfmqr%^>9p{yRvw`v=3pUMaqj6EQTI^u~bQ2>_s=PKZwgyk)s;81Q z&$k?`Z0Dobp4mTiJWE;0ViJ#?*!d`l?3!*fU${>Kz%VB(O!^upyStbMG;_r4;8eLu zKscH$Nc@I~-W1P>q=4I+w2XT)%rucz)_#VL4U;y9_E`L*#~$yOJnwExELb3vFVGnB zxu)PyeQV%yv0y=>53i`1T=nore`<4PYn$ib6&?jEA+aN@gYEoD5VuroweT6qs+Gg1L3Q{aNQe*LufGz%_*{ z1LI;RMv7;(oR&F^Ue6ABT2($^eBdGL`zeywuqV0a{5Uy;*{0;z8Be(`YtfI%@6`;f z)o(ur7v`(+SJZ>aC2lc{EAVt3oK;Q~QBY?Zwb;Hwf@?dU`-rLYm?M*?#Mo(5*&>rd>tQevo zMl6^|Y(6LJXdXnVD0qPC2qfQW(oDV6l&isv2i&D^7>Gx&<^qB1qS%B{gj=<2>x3Yc zYYx7UGKy-+3>vx+?yfNl)tE@$(*>$#;04-peLL4-ddc=yvZFIO9f9*pfM@X3V7*+p zX>kMn4Mw;;Q_O$I4p47F(P0VjssZ4sM{rT$LX-Xfobw3C(G#udc&{NkO)ZKps@JxH z1upbkiB=a58DfoF3oMLlfGP|LaEgo)05n(itqk40nNH#KH8*;6H=(e7t}u-om~`4* zb8Ca<0u#yr=NFe3rJH!}s zO6g1W$cuPm3>D^f@!ai>S#5oTYASGbkQjq|%Emgzs8p?VTC~Ieg0_ajc1oaBXKkLP z5B(NOEdjj?65`^_&di7x9b?z;V*8RV8c*$Gvz=#CJAl}3%*WC>ZleJSc2+46{G+?} zsu`G5y8|;GlybM7`@Tp7yhm^Yu{BtcDtMhq^^AMR$h{Nk-f1swgkduS7__c-H;@D| zT$L(wG#DvkjZ~*TP~v4Kc@$=hs#q2b_b z)-?_gBmEDe=)9&@Ze<&+RqHH1O6COtW6D8_QxWTwQz$l)8)Cc49r>Tbm0L6g4sRi4 zJQQnGI$`DbSGo;aDKXT`lcr;H8BH#^U@tNBGuGm9#TS_eb2_>r(&3J8LZrsjzWNXO zg-e5qiutZAz;$9JXIFDsR}xznQ_BsnM;=^kuJ8JnAcUiw;J1?(D;L$g z-I>w9`UOUGSHBI;H9KF>j=hMdC`4eJ;0rp!#cO`6Q3X`V)$KAdzZTGbS9Z7Z3f>4x zGAOVp&YL`4nu7HVj&WN`#-1A&R=bKd=KRL{_!mCs*D@R9+X;Df3hd{U2!ozKYl&DT zpvW0=EsK6OG~^m!>gIHQoN|B$h80|?4As%=eQd=seNi8Utc%tjolKu9>-5H+ zA0fYP0?mRtI{Oq*SD^Zr~zX?-2x{ zY!JBBj+gOj3?Y`+Q32ej^i_p(mj*;rv}b>%Lq6vO>#0Mm=OG<)1s3$vfW?z&3Ly0% z96nUfdkK)8fzm>K%c_qt_%@QKxc6HKbQ_As2H0N{6u*1YVuR6VEJgj-jh1(36gyc} zQX1$RK$>tIuh5q4BrcUKPU8*|-Xyy&fdI>XKxlMb@>DX6{%1TvsG>NPaB09CASGOZ z5ZDeVK*}|vbp8y$s$|Ph(_AB&nu+WvWo{#@yx}rk3qkpC#(12W%P&~_Of>K>>35-u z+>AkcumTkh4=ejuKqSFDf^5*`#Sg+)QHz{dR2_?X#W{eSR5DMT-#^#s>QV>lNMjv4 zrcgj?hFdB#7&I^0X0Z0%Ghfj?KfPq8@3cS&XQ@neN*-0)@~~W@qYQ}$RaAzw)=4tR zd|;kJ$3vo7&*8c;F)!lh5mob!2jWp4=X+acKTYJ)#!*M7Jez|im*&fzb2&$bggBX=K_xz=*B>Pwi#=%qFS-mJKUzRSz-o6)xcRuw$!t}wf1dbc3JZ(CJG~Yd5o2hA$BJP_|7PT37vn=LJc=qTGd4G0CnW z$_eiU0~{%Cux;{E!81c-Kk3hl8{%BMVGJ1{?rOku4yX*SwSvHG5OU2oNB}PeLktbx z)=5n{$kY>fq<7QfLLm7SEUV{0c0%QHUBmv$y6Y#Q%I_rG34Es zsk%t+H0!yQQeI7Bi`qR>i0BFHzH+ z&x@QeSkq)`|0DKf@fY{TVZj0DKlppe-;cFbB@EhPKYpdTDc_V-{E-mAkeYBAo9cf9 z`FkI?r<45|*hn{8D@p7wa}7)(hmzVmOk9FPk75`TLL&jxX;tirSpT^b#p5VQL)=iO z8T|v`R(AjA@?xg&5b@1(<)GN}#)GEIN9>B~CY7 zmx0QTUgLs+6RdD3XkA4XPypNNoJ@ec=fXgwrU)=P7WxwAse!32=mMxPizdU>)i%%7 zf2tzg9&`X_np+Gw^sA~^79C!+m(cJqF!H;HGUxz$tZfqSDvBH(kR65vrRQx(Fi}+O z&&-A=u|v8fYI-D^scMqelrd>Z1q__DatgiK2rIDu20L78lFhV=Y8wt@GWN#@^p~CqmZ_ zBKO(c7u)zK0_V7Y_Dp$Hy>{k|pF|kE8{skBD>G1`kdn@4`S`@vf95!{MD%R^H(>NCM!+k%5w_rcd)z>=aH~ z#1|?9qcNxknlPfm}|OhW~I0z4lcs-uCL;+lZD9qfUAo2G_xPg&RdBh&0X zSPzINj({zh(%Nv#H3iMRyx^r{hf@@Z?^fjYwLDPCJCOti5C;=|{J|63fc%g@c*%A% zBqMrenwd_Mk&Kx%D!NaYG%zQQK$x5OyyYumg+0F-Z%J!8!5ev{1I@d4{*#-Rm$})3 zuRZ9?-$KX5%&2_CSBmtZ9t8DQQr@cK!f08ri0po=p5>#5CtLRn*G06JX9RgfYhBf2 zb&{2{HZJHK-0Wt9Rd3=v1soEWU5};n0${8GlyV_@I=OT6)J#ypf|vjf=7#a-Ar{BOik|q7@EF! zc-9pNv{43>*~3K$AR&jjcOc!{5SKFQTYdewEC4*7G67|Hfgy)52n*4nuYWpKAWEoC zPSXRK*9yhM(ETg{77~Yunluoz?v{lfYi~vf+g6CpS1AMX06=4)KU)V#4MOKB^HDNj zUG?1S{z32!dtW5_L`5d#Bb*%wAbltc*zU6SiPkp{XAYlM)>S8+(|2^Zm3B;Rg*a|@ z05@X%3712*5)X?~Z;DD79wD1cDZ$PxEbcf zDaNfbJBX_-AL8Uwd9+wS&ssE@CbppWevq`B!{(yuY%)P&hKioMZa=ww*+`@4tC%{+ zap$4l!n&*Zr&TAR2C}-Xy#4c&-MTJUYwdya^d|W&BNtmH#LU-)mVP(g))+9oY~WGa zR?=af;=e>B<_-E0B!!iIJl4{0wQr)c-|xHGMRMKg$;&Tvt;dD9{9I}q-fEAd3yGS5vjYn;>|Tnc(-}D5 z_{yU3jQ0z5`M3dO__r=vM7!Z>h_@veZw%Wt9krA8_QX^rx(tvwVqU?qJI1@PUBB$? z5lz+Lc@3`%ZEk8PKw4nd6+VN}!H}Z<<^_u!1qfrsq!Rb)S1@74b_@9PG*D3uGPetA zAwho4p6KimZLs<33>cH>^r-)7n-u{j*$qCXA~h%KNA4lO2v@zz0H8#xS0T0zEfCcT z^Q$$$J{qL>j2T49#AZjx1pgG;Q<@*%3`r%8AIAIBS9d9e80xmd)!wgLy(Ek=-<C!-J3jK1`J1ytM@4OpXQ;e7RX82vqKhuf$WF-Z;HJ~E0l(`v`E=)^ z29hXEgUI~&I{Om2dvxQ1p?`S@ezaQyp0a%BB<+}==#w?{!}|xOIa78G{iB6m-DVX3;N4Vk9bwwNTPQ&yeq(U$G~ zbh?7t!G2y&+nvljRo9*q4PBAHN~NQJ$<0E3Jk+Eyi4-McSrm zv2$Li{SEk-2fa!1i2e;VVar6Br-ZvhZA6{D$8;14tpdK&o!m~vt-!GRS7E|aU<3wE zy%@o+0Y-6~3nNwl?r=6bCASR5giEr(KQ0h{C7P1t4d_t?%%2A7NCXs?O1Lt?A;9ap zz7h<}Ml2wJkHExMFmQf^r@%^(#T;Klk^oRcsdnLbQw(mMtkbdb4&c>x!nx&}ccKp5 zc>#tn1_d73S4}HZIDf$r9#iUz5xM+IMQ#JBhPC z2Gw>peK_CE>JK%G8E*Pe9((SZF*xSvp6AczEysXq&?kGTi{X)?Z_Y{T!lK%7SqqZJ zk?x0T4FU=g@$aMmFhUH1+A>{B^mzq6$%`VW2PPr`#Edp*b(#ge2KokHyOyH^F%E#y zat1+H*+4DKo$Gq|WCTnG)M_G?tAhYfv*9&CRc7uQH9qRi8fO=7>Ix>9SG8QXh&vKE zZ~nF(1mt$a9&PWcFL;-;@LU*Q6*IQWShEoU6*W6qgga0ryEoSJsRdkGp{YvQc-P8?9lhiuWxvQQPFYMuvsg?yU zmwys`r+!c8a^No;Obhz$Qn(ERNzq<2_3 zm&qU*A4uv&HJg6C{dfcQ7o&kG&khK4;b_H(*joIz0Gljr-tj$8CcPQ#8w#H2bJpFC z{Wr|dIL7o01_@e8JTT24S}=3i{y=8eCd20g85phRIeen<$C3PMDOf)W-QxH6WQAp3 zNHT4Dw7BU{bKQZw3UinQm`h=X6Ga-~66K={4@ip2AvuP5--r*By+g|4JC~!K?I5=T zL=gl_jjLt7g%#;5yzxh(CrUM(6HR;SV%y`kT}g!7)K3)}wP?N1WiK zwTN?vJ>Sm`5ege>j+tT29na!Ats8XR4E2zH;lmBTg?^KTQ4fo|T9%}sWn1dpBp>E` zQqj}QFuu>uh$M_aqN|}H7xW>3I~({-mFdPqwPZ*ea?ifnbhC1L3jwf~2j0dj_4$S5 z0RYgNVs@Ixk@P)k6C|D3VyCUgf1GB5MgknT@Dv7C67w0;c?@)ekqN*}>NuHzjb?9w z0Zo#7H>{(}K_^nU-HhzlylnM>vxQhW_%1ReHuvT>o14mCba11><@44|ks#U)X8B%&!4s8?m-|CH z=3S$F$#k}ly;DBZ3H}b|IzNP)bmQO@&k#yy9|tCzjTcyvaNb-BJmoMs!i>FKx3a z==;(XSz>715drNcotf#r0Tw`}laT$?3ybGbB9J{1NN969TE{FzMJ6~xCWMnG_rLG9 z^2~9gh-t!TuJgc7>a8Rok9bQMID-{jk@n_6qL^Q|MWcj($!vQ!B2O~UyDI5=xZz%^ ztSyBCWBn8XAizZmwHwZx{G4H|J$o|HsC`$c0~gMlv`y*!6GcGzDOP~)&emT7&Kk3WrZl!iSR1tcEJ0K}VEn7QZa?L(#XJB`F?X|r>U}J|$ zi`Z0b~plJq_m`KVa*`RV~2rev`i836@ zdlxp4M@vS)*F)$&g2lM_KGQ#Q7qUm|UQs5~qoVf-NaXIxipQj}&I#VZ@LU$9B`8Yi z)&7^F0SUNIp0WY0;$IFR6nb!k!aD(RktQxY5dAL^`6CmJV@}xf4W`Da>~IUk^05;f zzb9Z{E~{{|4x4z-M#&I%axRqCR`SoY1BI^K(MZO7X_3@QG1QV%c{k*siTc!%X@&^* zayuSP^s8Fx?{7B_{_eSSbeTCGnX>zpb*4c3q#x*-T21Y7uR@zE^E!yasdVboVmki;>P6Mdn-4 zHhRso90m>1eO6lf$f!z;pHgbfz@fG3$gO`S{<)R%3R+I$u2;)ay^u^B_lR0%b)CfO z&aQ_83h#uUi6!%oW%`HNQZqHaz!bigGS74<=0m3U5#pQ!2`moQz!v&6b`fMd(`?tf@{h`r9yoq+yHg8uuliMmGnmR!em~lb@W|z3-!FDS(9^$lK~q!FF$~ zP>lHnI^%#Nxe_ql|JKK)meR+y{q&UbgGdXCT9*w-ldy-&!|pN)_9dO1>}pDc`ejFQ=AlVoYM)w&EOb-nHoV znNVQnEzHDp3QpD^*F89ZHnh4IJz%Niq|S;s7380fSELc}fJ5t^XqzIsm?+s~*JzZU zEHfCwZp?f7c|b$pnWyp?>#MZ;aisp@x`x3IPgWt#hbO~j&pr+raHz=Xsde7gO*uO` zHm&e;lK9wtW6c>k^2XJKBl-t_)!+9(gaCEpkRC7ra8HOr>VP!HRu_WG?CrW~-lQvV zQOVNYP!OF?7PLT-qFH#eLyjTeZxjoHJL>zSGw6b0-nabe8`v$aX&9snk|rU#-go;& z+s>E~!8;)Y>kiBVu>_L%QN=JI-8sX@=Ibjpz=x|3$RTOQ0_*FLt|SqPH3-(@GXz>h z;F71z{m{#57ET`UkbwHnNDj@n^C^HfXmkdPf)-=SNjF{B>=~frqf0}1! zd$Pu`G~*%I8yzW+wI`d3H-);+q3hQk4wpp<1&8zO&*{cTi0Gd+h5Y`CbEl*e?Fo>O zC}-|_9)6ncLDrVcbqUguaJ9~A8ZHBfz#A@Iy4JcbfWc%jJe!IkA&p?3E?P5`cE?f` z7}AHeA?^WMEjGYu4ak`1G6*IErGs@1y@RxA>mY1j1N63%BEk-}0V0yn?J7VKJunN~ zi(rf39e)R0zuWjP2idBx4k=lT=A;V&Xqpk_n6kJkGKJkh|mtn!IaON z#m#Oe40dY(S=0($_f9%bKLJn0B^^#}X-%$yM68D78&e)Tl4Ma0= zd@^&hZBRVHCKOCnZveYmoPYV|?RRZyF8NT{DZ>Yf+TJ{9V{FVhpJntb0Cbr@XTZpO zmbdxR23BvQTJ^9}64e~53pDa^|7g;{DPZtYCx}I3Q=J}bxQjmI8 z46fJ+_Lhz&$oEj0Vr+JBK05mRP*2(8GWuMZT#R`hHR_CbWuv`at(w<4)?w5wU$Rj| z1$yU76W{)h$tc953%r|;?d|Ab)OkDH53kWea6tE4K%!WLON}gnDs);RxB-yenUaXsfRaDH z1{h-3H)7t@>mvgpGcb^3g$>YMOT9i||C_j}tflrA_&nr##?uyMe$DsEpTgJl5O9W~ zg*`}a?jS`DKhrN$0GXR#5@G6L zr*2co7l3^HoqFvgA3^&MT(?>`(=ORnZsy60NBMy1dY%d;zd%_PFJ+U_< zLDH0b$hLMFlL7rGShB)h+Ol2@W3Qq9>Y=! z?%>nU>+czPb46XLe@u0Jd4k8r#$J?unjFNHnGIgjuN@;f(z?tdY~H$2<& z2WP47xsxnvXIx1wdp1hM%E1ct#Kh5fLpP8;A^F>UVtJD z7;6K+dXCa#v7v#nD5f)army|a*{8}(_`!cmgx#*arq%-p&DfqfFf+-=I#iAa+<~_x z`5^$$%>fjh3cbdp8Fx<5EyiWH1giY4?eE!r{X*O3%loC z>;4htC^EC<5mTQPJgoombi3;yrH4BwAX!P*YUFCFJTtpp!Z5ibw<$!I)*}T3UZrYA zHl9Bs)DBSQ{57cYyCR9eB_PSEbgrU?7It8mfe^X>q!+-?8Q!J&h10j8bbVcIK7nv~ z^gv$^tf7S(H2}6YRb>T4aD+vKMKI=#9NB#3ofOn9s@;mUdU^<`uwW}$#;Sk}~8of20u3R^; z_?gql4k8j8b1>1#(x|leM5o^CoLuO(DvGWCjJbP(i^exes2g)A@0uc|Nj{^>{J5x% zAYYaxuh)_-FglnQ>1>s#qzrZ0x;^Ejd6|~Rmsv28p@p`*lOK0rlf3DlviA0&es$|z zO2Pg}MLir$nYAoAPn%}f@-w`8@04qPFQx{o7yY@3`cwUxJdy{dDi^Yr`8<_>hPygFd*Q{6y;9K53W? z@jXSR`aG$l)wUT<0l6+CQM>jMFyC;=)c+`q16gCTrkH^YHHM1l2RR+PSq>hR?ABrP#@_W}p0LIwvS#@U?1+Jx*9NAlii)5D46 zsrhnlsN!E1S=o8o4MD@G>_;4VzL|MDz&UD~Xm%v-@sd)RQ?hO9m1HaW{(^ZaU$QNLxuKkAzV>~Grqg07$J5yRq^6?(sP(HQ%{B|RC)nmmb^`c{JMab{K!IUE zjvXN{niG5mb<)e9d$|Lw&L=u4_|1N(>F8bT^__X`Fy%OY{eC^Kf1qZ%5UIv6a&Wy& z`CS0uLf_9rNjy1+S0?LHW+2`L%gz}d0k)d1YV_f14D;(G{{30IBGn))WAMA}pantJ zxfKBNG`KIWpNQ8aT}d^j@8;oFitpBl@5OnJd9FI$r1;4Ic5<4VXiFK4`+nOu{Bn1y zHds6m?~zQS^@YmD2@)LtObbm&U+d?h2pS<0-nfmo&=ZX#HT=wmlNLFKA`v@ZqJLIB z_5Ld&_4lTsdqZB=GIQZKaS!A@IGxl z(vO_m1p`p~k{2X9!4GT)(vc-;k=(uSt)GN=dY;uy@Z;8D)P)aMRTOqNy1zPQh;)}g zFiT;9m@pQ;XljrrQ%l-nh!{tY0@fd_IQA4btw1e*e-V?VtJhG;GvYG!QON9?t#@5$ zdj&`5^~R7-?XgRvz@SiyjmZf8y;6_CtQk)yy-bH4yEP}P-ocj)Mua_rpE2QS9neO( zque_Up+-RaDVz*5 zX;IN;>gi=om@pO@tDf;}$!U<&_eSfgt{JkY4vs>18p}yCCDaGap{wP zqJ2nHW`-6KWjoUOBAd4hSo0%z3a`jUc~Gz1p5>_~z_H~iku;SiE@`QD0yepNE$$4` zdaej+8aR+20nEn$&ko>qJ>>*22}WQ|Kxz;2I+|0A}w0c?NnEm+o}ihbg0WN|FXstb1W- zEKU(XGnbNgfwV~50(@X%`!3)tsb)HI0Nhff{wZVaMPu`1C~swI;H*)c^MAT3`6wf* zbn#GgGi#a~o-$8-z=zQ!ohR#tYCgv0Zaqq!^6Rz@?VD0{|96FmikO&)hzP{4yM?7$ zts)`qZH5al)Ugkjut^L%l1wNpFy&x9$w>IBLL#~*I)Wvil91*S4X4R#WY0g=m5)hR z&%IDBBf7Gd-_eiz@DNQzVXIGM{*-^q%r>;;`!+@OgSv;oxP~I}N*8<}85L=om`*PA zj|*|fQ~GhRGLD=rStf8s=$`j34M?4cjROg0avpW46C~(;^Z)Ruu$C2HnxSCgo8ul< zM@AX^^V?%6LtOf9cAhjWw?_XmS4b9|$SU5Y^e~>55u_=9gHF+(3Kw6INS>%pa`S`g zxL%3ZGf@$svrwjZ9KlH%4%9&!D<&Df+<#Wfy}#ABwK;eMe0Sws2a!{yyh&W6daFSq zb&H5Y=f*uU{GYAhcLTciXOp$P`dgSVGD)IP4?2nEfBtxq-uAf{5gNMr<1DILIKrHk zW8(oiX{L)q7ZsYSyOHAztLXA7;Aj)nJVCwU!-B*iJ|^G`3~R$74Yv z9*TWdqAo~+iJbx$%oVejB)j!H?K|-lMJ-1>j)-J;_~&E#Zi=6>U+!1|aqbc?e3+Yd zHclDe&p1DPOyQGMC&1H{;Gftn_c``1T_vQokH>KQf>JQs<gCG@ES#G}JEw{@D${eaGb^fQWN$Tx%hKR0d#k(&RZQV@6 z%3^*zG9$>4nGhbzkJN2-#t`4SV(>U97{yCyB&5}AzLH#_q6Lw`@5*-m6+no*8*`)t znPW?m`F~UQeH0&kG;dCuDNw{0cjI&zB5j%fFVVqr0T&-*YpI@3`717WiN}nbRH5vQ z?JFi1SuM<`Art0grW!)s5S3HyesNJ}dXPXU8HUH=pUG9c!|K%s99_V-Kk_qX6tpz_X?fYEL#hgoL}q}GJH|V)MUcDjcr7eKcW4XsKfS>ED4|? zs%b2GZvWOh`E)!krf#KmvpuX+M%rRt0QWCZ{8=RPklLHN{>*|x)q4M@JysmMyZeW2 z@sqD%=Km6DyRMsdQv{z6zy26~*Pa9ZQtruRMO;7b5_k1gm=8*JGozxmW{A~rt~c~{ z)2&Cpb1pRPKzHIk4#DCFh|Ja^y_8<@<){a%(*T%v$s>2Oc6HFxa;<-fu6VlnG#6`Y ze4AZj_^O;vb!a*M5x|UlbKHuUC0!(|A2{S6G^Dx*%et9%tjnCwl1>%S~}a4JE0OPl%D2 zVSLQ+i1hSp8JX*1@Wk^#ZBwhRqm#F!?4E%YU5otx2fxr7qyXD|%yy%h>c^15*?f6x1-2dG# ziV&N+cRoWz1ooGu<3EzBqv%X*Y$*0HtB^?}CG*=Lbyn$0Ey(d`sbl2-lU=64sZ@`@ zA>rV&j(hAPzD)e|*8{m1asC*Q8@~=A5)E^m%L@KF^giaTUJNLoO0UPWWQbnLWZx`h zjfzzt>XGEtCQa6K0{b2)5v3Wr!dhQk2{$c4&0$A<893Q*}7}B0g{m=E8vE7w0gZujNt<9Y|Un z9bbIeWvA7w$@?dB^7AWUYIOai@dYUa^)xwbr2n>XfDS3`oaLkEs%B~9FTXRK^mRr) z)qBHK#t-S6il1I=Y;Rzg6g?qWkrI6u1FHVn%KgtWxJ^{tji_-u@kfCz{dL_^ zYb99Wemj$`xtpQcBvY;x{o;>Hz1b`Nj2wkLV@dH}qb^YX%km*6Ecr$dtvHd(J)WIp zZRf|avEzPeq1ht=2)m|;zu~=8+AAR?V_xB9U;RD(GTv=)Ua-7N(R>sMsqP7poFh{H zarcb#bh-OxA#{3t_OGYs9cAidYR0+-YZjJrw~=%jgWKwFkc5KNt6XuTp^ApG>Bl!n zYPdPaYK`fa7^8_Ct>m_>eis!IkVa3B+0q*db~OUCoQ6+t?5N(pvSIJPMa}j-zhRHy zU!E{@_9^~n(Oc8v(s{YDcf9`+1-x@=Pz$ve6XAcn;YDmpa(e90(EPyahrx!V>{ES7 z4!WV=MQLR>TV+fnrYza*uaxdaf1{sz5s45LVQQ6erC4^sC1{Op>X|d#VYhrtcgLs4 zFV5w@HnAc)yiV-5P}>QAzgS4D)(@7i4-(N_XjTzk&X3d}2JW$?>RD?J_l!HXQw^2P z)AQX$y0KpRb&ub_(Rj=ETR%#2$HX?dJd)vUK)s~E*Fe3y{bIiGWnP!sLlx6r7BjNo zDBsnef8&FE=y(iVG}RglehO#1*hc$5!vq+4lfb)vl;_mx$0+@dU9uW9t&S|?a!spk zNcsAxq>waWvp?8Hjn!H%vKJEA`!GoVe1{X&$C!lAXM9rh)NfH5aXH?@Y(YU#`Ork^ zY#-h1TlDi$6A^y;h0QHlk%^*g(pZDiD%|)-t*eYA)_H`@&p#fFQ4N7otG)oc?N9gA zTdyCUciOc^CbR8!8ao@DI{LAGYJYx!LiRMj>@}EcN%keICTKddHa^GEor&bjOJl`< zCgh^O|Lmx|cbOx|uVF>pKYa=Mid3|13vbqP6l8j*8dk>cF#e01z9blE@zxf62;MVW|C1UOq{y>Yr_iSmoxM0Pr&>PxlV(X(E=gFbs zTUSARdbgGp$S|VqMX}PEg=j51_x_pI1Ran-mv%Ta**B7TeV%uIT|`|b5wB3^v%+FX z3Wc6xs5nh4IDF?K#5}ZFwF)Ex;mt36%kTXDuuTvlVuQc_l9FDsIV>&qrkPd8q#5^q z@OC!(KB>z>k!jIVh^=qs<(z=l{D`}F3vXZK&GhlRr8~Djb+}SA7%On7f|-BbWtO8X zWU>UcJSW4^xjRUceH&Zds7cCy|ohXz90$p zTV<78_pnhU#$9}SpNvBHWs8|}2lx&Y$E+LKt-?Ycetntq^?ak$I5Zf+e^HwAyf$iYEef&ErC+#}Vr4t4AE(w`}FgFxmC*GnF+vo{-j$SC8m!J+?8vN>NChu`EDhj#|AzS1oD zv;0pFWRrt|2id-s_u?TZrF^cm90R=WVNB zrn*BZaiy?CbYHZx@m=Uqm2MK5vw@$ngSZ;QPmQS54WELga?q>oX+}IZYfS9u)DS_r zQ@Q)LwZ$w3p3X4OT+j9Wka!T;SIt(s6&Xv!KJsC7RhEO@w5;}0b|oPqDMx4F6t=&) zUSG(M5W8Z!nPh2Emz`5CG3k1KcR8iFGT0`)Dfz~?TTlKaI`x$7)rWsHa(ssT1+_sK zF(7+6I+1s{wB;r5+#-pmk@KBJ`>?Tflu~j+F1_=hlfb`E?I#%S=LoS6T&-o zG^yvrOj(mxro8nx89wmrn{Ni#jlFnJ{?%)1RlL*xeuVjgr+G(XUC<6&zhk^9%67(` zr$STEIap)W?XxJg>x~r24U;ExvgYG|rQ?d$BG{LH9n2gU&$iey&uBNds^_T)?R@ck zqS{lKu<*^jGl0=7LW|>GT?L1+!pGoyp2#FSP@NzBm$9bu1|;#70fxtUGPyoT%`TpL z8Uu z22MP$%uy6($h%-Zq&7A!emi%r7_A*ZM_W7mM2T)ezTKuLDw&WPMjNnssC`aNwJqF6 z1$>cVd>B%y?yW(s)C4&Y#-4atLNLG={C$bg>~J&Z@vnIEMN*TjDOQ*JEzp8np9VMv zSjECf22=dSdLPLMOo6GT*IrataajUI^xJw>prB{=61{UTpYc$j$vti02MPS zf384>n#)OOHGlU0@ytA3DaZa5H*+IVc)nZtV=mXpHB>?GqC{fq>sS3%yaoXBjEi~j z>DQBb>Cw>A=fPtwdK%|b#PT~I_YahH)Oha<4m9a-#M4T-6PLf0nMnzKNM6bK&Nqc( zb>~JEX&O;Dd8Qk4?LDyzM5red4e_p!lfa5e!TK$^M{Yps^1npH^X;LZ^XW}Li~L3Yl5cnP6LOl=T0M0&qEU z`qC!OKEO44uPbDTm8O@|9UVM9410~=3jCMo0vG$qtLe78wuqnD}h%c5K3jH8ovRw>aBOZpyQq5WaHkTHYiAGgaN2 zpSR>y#0C?pZ+*G3^n!gkG_8r7dMszed{~BU!M9FVEa{f^guOInhASJNSp4*a4W;+) zCv|4&CtMF4H~Ea0secnl#{51mPO@3`A5eV_U7`QWNy#fyVBNAeFIF&`whgO1z9Wrs z9odpt4CNrcNxr_L`g?7BCu9L(@NVpoRl0y7EG#i`c$AzIWBgBKd1|j)hGCO2zbS>Z z!2Hd5o0sM1F@mOy3a-3FU6JWYcJ%L~+EfL0Mlu3TI3a)9I#u!3Xqmq@x1w%jrUntD zR9l|O-JBS7X^mo|5i(ZyY`!?jUA5O!Qs%|r%rcGoE6NV(>y$)~oh1bNrz&xEJ#+!z z6Soi-DWM{n<+n9*-8*wW3_tbxnLTxXWe!@G~|pnExmr5HxvtCM3XBvBYBTE_9?D^HBIwGhA?-Gv`r;ZNX#y zGCA(5r@pcxh*xLU?eZkx$-WQ#wV~_&7dHt12NFT;zW#nP93A<|9_8HG0Gpy6rXb|iuq>5uwMA$UGjC7%D zZJ2DM%pYP$g*Joj;S|Y(5f+}!#gFh(hKZomazosV{{UXY(K~~LSYxEP@J?Rt=g@KU zp_{D;3@pgJ79nWtbbX=~bI3frQ}#)Tu%~kG#VAptEaf_@y{0O(aRgfAbkmn%;Rtlk z%jO}Js)$*Kqr$HwZ^6tu<^7f*-6O^0aO7uBjnu!kdhK^n=%78&PWmbv{a4rsCpQPq zBe;)f+>hP?IA?u2rbGPNyY2g~P;OS~mG8uT%U76Tx$;e4YP}QlthS-fMBBD|PeCxz z{{R4FG~F^PpO4sP4n|Q8I%HseByG$8!~iG|0RRF50RsdA0|5a6000000RRypF+ovb zaepNgu1UMjm+NGYW~ zX0_qT2vE=k9J+frW3aC<+fHKwFr*0a_wOXs45KFxZ{yllC~J?ubvoKA3#QO3nu)`s zUF9NFBm~^1g=Sle0Dsgrf7l-g8wqNy+K$$74aBdStN?tRUrBfX!aTv{yyzVz!A|*S zo#GKNF{mtWcZFDU*UgegdbYUlVKOw8?4yxcw-EpIRl zmd`^_wFGO zx_U}~lxL?Bz!kV|o?;O1xPK8*ofp)vS#x;Jl9*>sV+%c6)zGZ-EG;6F^8;wrV0fMqkEwBi|ewzvC_J06Mhrro?7k8&t4uSa)Ty^ zgvfu4{C2#wdIXB-DScSg^o8&Vh( zqW2hhUe(wL`!N-_F%FPx)*yBghcc4JTn@0nJ4yfyng0OAj+uh1{{V#!dwvf3iZ>~% zspe?O>j(Q8MP#VwaYMv4mj3|q3egQ7@hPYlQRtK)CQ)*f=MXNHQm8VG6LHDJt{|aX zlo}w}a4Q!8X#9Bm`TSm;J)?ZeZmK#ftWmNfc0c*y0sW7_ zr7%Y$5KR-j5K+g7h0)jl00CG(G*wgsiAO>KRRPn?N@Ox7S8=`FRvMT_qbFapG|;6Q9K2B?WmFxp@T5ErO|w!^Gg=gt2BNCiT`q1sdY zlhQH1YDcs4XoAxxm#kJ&^@X}HW^HC|`}Ucx+bxgH{{TMl zj$GF)csJ^ZP`pz)*mxloVzqE6<0J}OeI?~w1li0yuvIQ=M=FO*4kAQRdF6+YI*8iF zJyUIL&DPz+dBJd$4ieabV+JVYnd6@1LhAfXP~0ode6JAHA_$O2sRt=xiO$2(J8;S> zyuE?hfj~6V9|FeedBZhMXcNf-+vK?m-bX~lBp{bgaS0N>ZYvsk5#K?_bpfui)vSAc z`@~hv4*2{0c%GX)N1<2ZA%l~BE*KPv)@gz!VT%`x5w~{7%z6@?7BUj8N-gM0Hu}`@ zmql3iiC_g;b`Ask{{WKX4_Q;UJnPydbWt|C<;XRwUXUzQH4GG9_ipMztYRf`K!ws! zS2qAnFq+L2A?1c;+Z?{{TgE62z6r{s~xTb2&R|C8%L`RG?bJ7A$kXOl|27j~vTuXZ{Au zul)e+siP+KIUp#j{{X@c$c0_z4BgbqiOI}v^8%$Y7Lz}ZDdhxf;S}yHB=;%UhcHw#J#DB1Wb^DMgm0LBD5A4x^A{{X@c7!+lIjvRha?Sh)W!)ERw zwo>ScOiL;tX}E=5<|)LW?ce?YN-s4$VxsCh)lKy*8$TDjQw+t;KCu>(0C6e-5EPSi zcdCj7u-Q*YbmjGw67?RaRku)z#+taBQunC1{$@>7rDh9jzT;d>s)1Ex@L%l!&^<$k zb?y&Y=LPt$>^_lIl>T4i<`^3eYu*0+p(`u1EnxF@42VGCgBT89&aU$GBj#;j#t0g_-1antBAC=7Lg6p*VD&eqSt zu3|(GUt!0g-)3H@3&nAqo{z&Q7PZz`RYDe+sD}&HWAED~m(UdS&OeW6O@wum;xMHc zF;QZcP?!o*9%nxU5DWt`E@|3SD9HDjCG(LL2Gj(}Zpuaf08tK^Wj4kr-AbHF@rlAN z*R@Wh(R;UG(4Bn3XP`uEW|w9 zj^}P+yIG~~#pkKSrrnTIh2+A$n3D!3aJgu(>9|Yk4(L4+uT&`)CSlouU#M43IKE;6 zRA*Y2$|P1aQ+WISc$Kuo*IyFAjsE}_2Foc4o=O=H9t3BgNanG5wKf12o4a-4ya z#6XjQFE+g24~7UZb~?dLp()UBhk}4LS@fMLvwSq9_WaRkNxZN6_3w}PU>AZ z17Ols+WjR!$50t2>hY(X1+eiShJBRU2TyVz!05)A*qoF9Py!nKH zCBKpmS!&Dys8!}7swP&-{{Roe$V510e}qF_XRq*smOP(?sd+4X^V)Fz);43Saz z&8$JSy}{F8q=E&&_RIQ40ZcM`Z}v|}P%XeM`Y-J;uomm@aC*vDlYf7Yc}S-+z^B!O zltZ2CY4iQWTV;vw{{SVm+h6ehNR-$|_A2>e^~cDDLf*`D$NGhEEHCZ-z$)J}M8m~Q zK=+1)JVKI(vu97=#4K=*7btSYm!HS1Vqs;;{8D|ftQiFQ3m85>?-zjG>r zS5M#G8Bia-djA05con!PU)+zZE&Jd)26BDm9dv>$MY^X@dAdq<|iC_Lv4qN zWUv}~GZoDe0a&%Q6tmH;STgj($mqU~lcN||FX*9oSktXnBtIWH=%|jTgtY4pbipB!Lv$mVVnXG`T#u)j1rZ>C${mwTu z14LvD6mZ0gU188-2v`rJOrk^G1lV$kNe?KWbedDS`htQG;Ku{fHN0BC$%OJnX$5s} z{{Txv{{Vn==kWH_vZB?Otn7A_-q1v{7hm}zY?Qi7oexaHuR4I?3NGN;Y%iD#sby%5 zlIfBv7pmzluq9^a@%#X2hbJF}4Zryo)xc<#dZ=(e1zutUM80n@1qk=1amW_bY0ccG zuAm{G+*g$CKsxzOrZW3}C9bhMUyPr$@RY8otO8|RFA-(jHm9@{Y>SP0%%0Q7DnD_-^w6rn=2h*!VBr(w8OP5yt-jq{CGTw`vFBA4z-xwQH{b08g1*qz<0d z{XY-~%4dK$Bcb>}*{Pm*OZPvfF%_zHy0`GgxuhHSMc5@;3Eda-8F40WzxI~`<)iD~ zFczAz`HGDd8-P__A_9cZ0-S9YkJJJ~O`+qTXW0lLLA!fAzorb?9R>TwIPbJ#ZrqCd z_arI-Wzz27^W21J=d=3$J)r(0RhoWYfiLKjwJ8iC+%m|=%H>f=>A{vr zsOft3i4zxASF!!^Dya#GO)YPA2E)~MSlh2EJ>bg1xw98*d{jo0A)(50bUPy}>A@&t zwQr%lM9W(;6+zb}9SE+WVJz~=kUrj_gk^kyTk=!{rzu_Hzn9uF3iE$_$9O`Mv@$c? zgU#^}W?Jnn%WcUKe{V=+EAF714m(7qj~*h_?JlyAdct-X0-)i|Oo1^vKlC?}YySWx zUPzVA{tbo{7M>%#I)&aIF$}dtu;Bo@O#uG@$`;6=!!pMDM!EgUYU%|UaS*DG82E;F zij*6b{{SVcE+&D@0Ar1QGk=?E;BO>LEATYm;ahbEl*2AV5PD%o56U?iZ#>LY+~)-} z#A^OvD@3%S<~>&(VDSWLmW|xOedSBXh=ho$qEOO$MQ(%ehbsjW(sjBcq$^tF)fGU))=Bu z4~UDV6kDjcje#8IrSyoHufg#^OLl$`wGT6Q;5TU=iG?FZI?J=#WZ~Wu{er}}YOmG> zERN{w8jO3vibK{6q)tOI5vDY1wYWJb!N0ELQ~<^NYWv)*1Zqca$mDclhuTV@?Wk0 z0Jy*mZ9Bs<*)Jad0Mu*)n$$yuLzrx)m{RW?%>Mv#b_>VE1!uyquP@s32qLs!PM@+n z3jY9N1u?Xyg|e%%#`CYgxow#B#pmNb&zPXw%be%_%Lru7XFzTn@*07UR`V}{o+y-Y zjw7vkW>cpT#L&5^Z(-msm1gwtj-u{-ThRBFUdwt#!MvRB1?_P3i8NNPU~c$hsNuzT zq})#3Gc;%75aYSt3PTHTFnjuo$$E|9 z1cvQcxprcS*YJc#lq*054s z_lyS-3uj6G5nO@jusgsW0VtrjBJF)onOkNK>L|XX=RW{067E^(KL&xs8|?r>@%h@j zbN>K>xW<3-7T4z5!vVU9IPyz+pdia7thFg0Ob*<@Q`VV zY!!Q{Ol$`34-q*$%q1JY#us104jI6*g>R(a;Re|3uf>i@ZsVYf znz+%U@qV9$O&2X}L`Ik_{69?0YFK29P{YilkC}S){JxM6WLk`mFyvD(15H3UxNSJW zn)b{~!5!kK+Dh4EMV zL=dHL)%;)WEK#mc(e4OxGz=eomS1G|qBa65y`UVmC!839DRQhhZ)d5WB*U{S zZSNcPGvtRyNEu!tP`bS#FcsG-zCW*X#4B!FbH+~mUs9eXi0?O-2g~~+vd;$lN(%O6 z*<*dBj2g@v8+Ip2X)kY=P;8?;CED4!M2U4TMI$JR9ucW$y^?mey0bivM92<|#fw?J zUQuq{#qOYTCnAgv=B3M_^&IoPGfPa=4GaKO5p%~ebF4r$`h+RI6~bfHbepm(E}57} zp&b3!k_D#dd%a~o2dv0zOHFBx+|cMo8na@$k0$G-IGB@OVU+^BLaXnJA?$)0+ZvW* z2&ZE81OR8M%QPxo>L~!bE8K`WD-zU!mm(2;_3J7$j{w1UpnVWXYug{B_JT6*-{<*?tKVqumlY_*lEmpW4tjJ88A3}BRa+hg;-LXJ$gfYkzJ{o#e$KfhHlDlXHn>y^oHIbU4`ufFSC~5 zH@#{$QyF7qzAagKV^F4UEs%J8k=(FTFs(ypF@C6kG#ce|+ljudyk(^{JS!7`rx;2b z*zcwKOdv?8jIF25O(q*yhQ&1)I@K5#niiv)*r*H6RrSoHAQtSj)4#qIRW%wa9&sdkFynGayvtV z(H&_h2wa0Hq$zh;v|r-NqY-Q|4vA+|@&SYY00DRO z6#WK~*&@AvH- zgua8Ht^3SpOGEHKv=b6}C!*uj-`S*guAG(8BF53 zRgTGZNQin;P7)xZl~hw?sNxDYvjEzS%ZSp;tPKAE6FE;_lE~BdAha=g5 z+2u`#B+_E@+FKH|sf*j>)C7w}Y+ubpu{2W8pXLd_@B0q@V5cMnWad^3UgIj4@DdCH ztPv6+_R5Az+u5>gTZrUeOnOE)nRQ52$2*Dcvj!I(nwF->Q8||MW^M@TI3%~DE$IIM z;Ces!1=r%5qxj%TZEk0VE0?$a3kwfl#x-) z+bW78Sx^2}^1xgXCWzaV$>zZsxs$+&OJJry_A=%C(qWXmN(_*y+XbzXlS%IatItSu zT+b)GGntm|STcy~P#d*{)?;U+L4R`Am8NB{Xf&XP8-r}V@{N*^yZ->gjFDmp3zpq5 zhSC*uBU?1>0hjCl00;^agc`gbg$#aMU$^BJ!|940qgzN?V?tIIwrQ^pR#8xDl zwHI!4ai~{1^*^alH%SU+X+ph&_=Rb8T6{18OQqCMSZ(Xm6JMh>GH8_XC7v3pj5O98 zZ0GN2$#F$P?DnDS9;AY(__y@?%HW*LWpOA`$KSpqjUBO{_xkZEU`xkT=e|A9616b8 z>#m-jP(yfidL&Bl+&q^ zgT?U`k&v0~#7<1qJa4O!CDUsN25oz44(k}B*cGK7lVmOv;rsaS0 z9CMVn@4Pe)(~BcK9CUyWMpg&lfXa6v7P`Ygv=a2b8uw+bAvFxBzEaOvfH#H;+VfJC z9SAuai)jo5s>fIqXOFbWPy=1y0 z={OI>a{6V8_e`3892h_LQWajTstSI83SK3Dgr$p*B5pBza~g4Si?ihbm2dXdKMu8Np6=nQq*@UKRF!lTJ%Cx3>z}PP^4LF5zW5fc(gjtpZW>O3oUOZ3SjZ2@B3hTfI2Y4J4fDP`EpE^Rs(qnuytz?JfMy;`2{rNc_#cB^=y0X4`u5wv>S!0dw`wP zwZsH*7?qzA+jZ^|yoWg4YgX|YjNH>Th+#b?wIRxL2gw0NnDI&8;`RLI}o@OCE;Zd`lOi`3{BZO6)J>yr8~90N}8&>#y!8 zRlKuOi?`AMV3tIyqW&$alr=q}tuG7NSLA^pAVs_M>kTFYZjh&=WU3tBNCd8ouSCc7 zJ5s@db}*ZZnytp}7~c`Q!|?^KkIS9@La=@S+KM?O(|Le7fq1_X&Ut<`Vf2Ob{{V$u zuxXMh#86n6y0&7g_Y_KC0^fl})u1zo0AunFl_>WA0M_~A@TIGYYM3JYOx!b{&Hn(T zz7J^SL4T2~kxt--%Yu!-DoCQJ(vmn?5OtPpjWK`rVi2~G3&I*N@nYwb-T-Khbo)(z zXqc?U9m_S=0JLLVMHyw5m;V4lrceARE~U3}slHP+oj;bCr_A=(Pr{V)qS_b-()L&V64tvZ=Y-`#GrZ9(iy>+Tf zR?^?RSPg$>RRcB)XfCdL9!DO!^_Rnv+qMhx7Vb<cD<+R@*G@7+SK zhgP}I-Wp>b15|K1tn|+MG{czIa`b2Z`Y@8gns4vFybVLq!dT+O7iuvH%*b3o05oEl zmEGpc;$2BDxRtkV}9DIe2w|u8+iXodd0{dLP`xH(fJ*b=mROW|j=m z7G4WG({N0Hv}q?58ipxh4ca;d9Ks3>*5c%V2O)^1MUtmzxR=ERQNa?mD`*F`iwaBF z8m1e;o@F$S?yN`+*1*Eh*0GcO+M_mNVN;DBSQ%UH+vF5}LbUyry)I{H`;&z8{5GB>K1sbu7A; zEuq=3zzq`e$DjOwVEof{P*Wi&;7?4Zsu~z#vgQ+7>;C}C-SnN(TJs!=gUFWwBPgv@ z6e{NB8@%;^xUeq}6vHc$Hf|NfEiy#1ri2E!;suv%z`x=m6!ndc{l6kNhIyI3--}j1 z@R7ka)XSsdD&_nl6s3-TDC)WVS6L8d<%X6vDP^xQET`}QwfGP)MZ7P}x2rN#bP?@i zZbTLEK}(#cF#$~B6);q6BIXA#dDeT}L7IqnFfkCig>z6mptZQ^&smXg?im2WfL*oP zzorCQ36OlkYby0l{^#CUEzjS+@|Gq2`|kpd#}8Ni4|q>@&PSzxPsAEI*7<+q<|UAW zqqfh5_Jt|6&29exZZrwmxEzh0WsWPm1rTPc{VHT*hP|L6P&s6&LpdJtT!%V5vWQNc z!`0HS#1<$L8}$3cxESpYDasy79qu8Kb!c(c&p3VM)>`cdqQp0j>G$o&P#eYPjQQ`> z%%f%7DQR2shq((LgGJqA=YFKP!~}0Yf2iISi~IMaMF|Dw=B6^U5L`0FI+xxdmisUW z8+c*}ra6yeK47KZ`^=R7p@Kyw##-Qw1+S9M*<`Y-Al3FhD8K`RyMiDYRBBl*V7Iqe=~D}kb%Od6_(JNF@OPUs zepE_74-rHOMO=D4CY#SmS{YBg!KI1{I?NRX-XK?x{F!pb!oQhIznB+^Ym)IDML&TP599*}{%eX$U0ExhdR$BH$EWiy%YZPjQCIk;?)^U%y^zU&`WC!1stPtp z-ulClJtmB?1!ad5qYy^?BST>a7gLvcfX2TKV186x%Cis5wh>+6EYWeRq{k6|%l`n6 zh~FQKkcpH302lm+K{B9SF%|^d65?lnF$ZuK#2bGLqT<$LcbIvo6vSI@Q&$C%7RFj` z5)U$iO!=HSfWS=JCZPps1vM&$pv?q4+*Z*oY7+J90z?AH!hkHSJ7uqB_Lj)Dy*Yo< z62}%9;w%d%NA>)BMT&LD-*0JQFd=30FL#~s0`zYm#B>*%{XqpXM(frpM9uHjfJb2fO1l`H%ruQ> zew+7|7e0eP{{R^fBOF%C(|@7(Wk6Rt=@q1)3h#&SPk%8hJqIVT`#nf+fn_kWch@!ghAnkvFkL%cB-Q6EEOWHWE^~_5dtx^0KmWnDeWsQ zvWl7wu_;)EN5s9#E_fu!w4h}Z`#s^aEVk=4bt&vRL%sk;o=)Yx#t%>;EJWO({-u{h zLbNy7X9RO}J3!NTnckX>gB>Ebfyb%LL!1=d#4ET!cvA6Y`?4RxRkuoj+e=Gb!m5h{ zc6-~dw}vSOAT$cT!xB7fHKG~}9lrJWh6;t+*lf&8I=3|iE`;R4nY>?U6jKNQ>4d#x zX%kT#j`dIic*M$&b7%#gck2P5@i+KEvNRImy|kk4Syz9I*Zxlu%h#vitI07_Jv9Tb z-fNUf#l$YhQ3nr6kh|h#{SnBTZvO!Boz~-y30H(XMaRk~iF9g+R#h-GB^P!70LX7R zLWue$HYCfRiC^I;8^8Rw#BY!M4K{vnVH@F%@c6la$>QfofK(-Fgh>h|7#_nFewoBQuG5T#q+pY9>bo29*GulATymu(zo{{VpzYbfvUgWh5? z=*$Ru$0|DW94up&J2=|m;_J|t!rn@+Mip1f53Hp!;|)TLt6|EgGSi>))>6Rgy6~Ts z;Dn{pvhSh$Jqe+H_bRx@T9h!icUEVL`^`q6Rpd&$aCWyRLEbin-W*x{TkQFjv$r`b z%l-6oGIHy#dVTNaBNTo6{LYi}sKb6(Gmc>gG|jJ2hlkg9!}%bTF=qtJFFC-o@vGO(v=Lmm!OY z4u=@+-YXG;>@)7Dq83&T@aX#f;ww&|LYYd##Nh#2BPFgQj?fOyu~zw)xZ)iiC5&If z!KH7>C~lYSC=W_~BBGf801IAbl@0JKPzIAy)o-Wf-ml?nKb7cy0a}+#DZx3rlocyy z(g4AZSaB-$=d9Kv%hDHi_56xAFBJB`~@`#cQnJs z{{Z+}vHt*!+%W{;qHV{lTMX^>m)?-vKCtGM+IMwOH4$D!0o25lpZ->?Oy}e9V&70Lb%r}s7_@z0Qiy|y3hHQwt$vVMWg7I={?W`8hR)CW`$4eF)9-Qjm0|At zxdj9}E(942?*6g%A3-U_a7tdb)+43@( zd>LD>)CP)Ho(KHn#W1WHw`OU-)9AyQ@(y}u^!hP~C1YGG_l@-_jKFKp-%n`QLA&Yq z=_`Bqo*UH7Vijkky~k!JG0Vif+a4koq3IAPW4vXgVm%QtyOu3s`#>u_pE2?n8vT@w zUuanzf^MK2(H66A;4yWrZCb9gq{o8#<^XCqbn^&o^p&Z-U##<+mgR4>UPBi`Htad= zDCv_r@|^P@nfg|09J~o4m3MYtIq0T;sRA>_>LH6Pl%Vi4fJsmutjR628b2LI>bz^`ITj#{9@|= z0P|nr_zp}BF%xifCU3M?{XZde{u6|s@`xI5@CTg!Dro#~=@yHDyJi0X7QC~q_&S6D z;te-9N5w}O2y=5K2x(ZR7TSHLLYRWeb&9!Qrcz~ti(_UH5vCyfs3<#cT)F*&)(UNk z-)(-C=^4VWA^AP&6%|83zfa(OVjWa)zkZ2jlChJg(fER;FFf@7{6MfOogY67?Jz*y ziypiEuX#}cRtvVFmj`I;H)JrW#}O@pt;Dj}`bQdO@rg@H-~1q?Mh=H~hR&d*z}MOs zJlN4{_xgR{VFJR3b+zSBh9xSW#(%$tSABVo&x*m*@9`=qFyf7W&H6p1%A=6xt3I{! z4$(v!HD9_t{3TZ;Il6zJ?wwFXFK-#+|2XUqYrhLFs=(>+B3y^HTG><}N z*I12)_d$Mc&fy*y0NJ^6%WYsRLw|n%08+^H<53L?))EXiP0A}VftjJ?fCk5e6g^h} zvaIBB(g>8*jEz=dMN;v&{)pfj52xE92Try53Mh>?@fw+!mT7}v$`9rMSUHsLqo}!n z3d*Erd0LJu$X&8}MfKPNd%hmhq&daQ1kL~fS<0NC;%X9eT(1RRq2 ze5Zyx%E@1Z5}(C$Uw{lB_@eG5mHz;MT@XtYF>B}6Q+V{B%3IT$j=F`I_K4V#9)kqI zGPGLD_;suN0AT!GuFII$v~!~bbigk@(F<`mLavt(Q&9ol;!{ix5B?~x_bT@EiNZ%L zz!=oRR8v>u@Ep5{TR#BHDdIX0!Ir{Wu@$rl#6@$egFE$zcL>n~BxV&pu;1_%YCt=za2=>?2lcN+(}e#|0_<1xrNSF|rjO6*&2?=t5!rS;IiE7EFK zs;l_^JqTq}AUE3nKK70*DaKD<sS z6;0Ls{+3W*#7Grb&BD8YJEkp56(L@-^p)qy6l)|^!xt(YH_H`GUpB*XC6gZUa0DAN z-Sr|vwRpk-;4Dza(vs{%F0Vga6W|Ok(9zu!U`#MT8i2}MslZpHVCPX^;FLhC zlr+@zW^-<3IUfftcQ=rACVU4JSbbOod5c-5K;%U1#}`t9*mQ{vpDBd}Urj;>89pF6 zD!N3)F=THc)Rs=cEQ1*_FpkJghad@iOIhM)VVW7kx77i3E0_TtB5>k(`u+(NCKx%H zJFLZL;+NK2e^Cqb0|Ex^Udww^?-#ag!(sB0b)8b0n}C*)=zK~*CmDslcCxm4lx1_Z zI*-m*)BgZH1ft>#SvZ!}N;pqg(O`}D(iAQmz;={wk;RC+ZL35pzj8jOqGB8D&7A8>YBQTM9rC$ zi@y<07~7Ov;FnXYm@BfP%~m2XS%WaQkHx(o!=3W{&^DXySZqRr@k+a!ANVzRe;BL3 z{iZ00n;}l$!W^{_67rIWDNuHYs?FgoTWW^ znG8_N0lM5p)oyxzGW`jX$59cc4TxK(<`8iMRy@IG>I*CIEn}!MsDp-F7s*X^f9ZS5 z2dP`@kJ5WVGTy_R!}~qZQwK^fIDu<4K;sI9fAALRJK+Ts= zfAl@#q%f+!nXl0Hit+{3Y8tM4&CqMDL@TC%}ohehua zyNISPt$x4EHFP+uEoazYnDut+ZoU0Ve2l5$tGC~zWGe>C*Kgz6Syf$MXLf$Q&hR%b zoH@HI_H;z%Tq}#%*7J`$Iyi(VEDICg9%}sDB)e|JJ#YE*APzWt^lZ&UZ~BHfQT zxQA@a?0d{tme%vmy`bKrQ7lJY1MU_mw8hs-1 z6U^F%Tdeq3Sivop@|EI~j)M`70l%)WF4nQYz@@=VJi?}e3P=JW?!^_g#$Zr7sjfL8 zwEIPKv!BE#s7o1mrJmK*W{#5VLq#I9_?B~Y-@o?_0vhMm6<90qfwI!6oP0KnFZ%3H!h&7T4ztqc^(}GiIfsmAYO1!B-&i?@L7s&$JxY2C+ zN^bAOS}i535EE_x0OLxc2sW24?8UskkZX&cxVv|kn&l2^1z?6)+@O5_0P;#{{8Aph zWjek(!p5(eu~|>j1B7WuS(Q1Lq`m9%HyvvK0P)VfVwAWx>VOmosGTVqAkkI%D)T5z ze*XXn41NZiul&-p1vPUO67a+-qUhh^m6+AH(-A`~cduE*ej6};6!4k9cti@#}k4~Qnl zI{VZF0m$v^{2<0O4WDn(gOas$@c#e;05UHQ*ndg^t({Jv^n1jVjZ*mjV>V+pe;=}1 zbeQ|-MJQk`SI5(&SO_bV<`~@BOaT;v+YoYNh^Ee>VVZb=bX{SGX9&~<+Y93ok^$MU zr&ZXQE>*Rno5yvZ3___(y6*lK{6&K4jBD+D5#R@E=PQKW{{VluC^)_c-#+kJZ_)SY!4_!h{`i0wW*pSvJ`00o!c+-| zVr8I;()vYqaSvd6KmY;fn6+R1g+Y`+nK1R3Es={*5FOF4C`fO&Y*gf37lkCS7kEKb z2OvBP(+{LL)aZBuyi063iCk~ucZrt;PUZdk@hmI#_-`DNr*J$HhU zPPNipn@;Vh=!|rt7>02GA|(C665{O)Ytb$-nt&^eef#}O0M}U7oxDmxIPWWzs~d#& z=)(DySa8586QV=q0tNsJb+vj&5V~LAH~#>Y#45I2#?6r-f&$=yGKSeIPzmWT;si;A z0n(m3oC^SM{@B}Z4UnfeRl!|YfJETbLfAt|c}!J6U`2Yc7BAica{&stUGE?GTg&*f zp())*M4;g;9sEk(@1RYW@=8fEtTLuEh={{H|1bbdOB7tEt=Kx){kDhuWp&;D(_ zU*hV)IuFH$1frMjmFUF+<(*H!-cS6X<&8LBKlue{h%fF?Sk4GlVf2W*!UZ&*%yb4J zLaqw4@Qv_)@VB4CRbPudB{b_OI3d**&eGNRHNy(5-+#xLBa{CC7&R+WjMT1>32ajg z*X4E<9qPXdvr%n>@VAyHgVrs!!tTEm8;CpnR^o9SZHU1B4>u`U{BnL#y0D5j4|y-{USZwpjb=}4xJ1BrjQET*01*E3j&(g7yS=t$)jfb)&A5D z9IA)4*XTu3Wh^~#{{Rpr4$|!JllYDe6<=PYLrxt(f7Cbw4l&Ky{KbmpmGhtFj2#5u zN~McixRC*Y81oUTTt&MYr7IbTw6vdy`fO& zR&S<$NHv z?Jhv9YADmE6(|PKqh_FoJ>pZNK`c&@rI41v`9{wXWvyjjENR3#Q>B-k&p@i+H>0TZ*Pm4<;(Vy-#X|cWMiG8^MB@+vXXFD9gr97hmRdX>moXRelV*u!sdyBTN2mwjfVVacXd`BIj zldtB-I{YpYhBEv^P4$$UpUM|jeqtCsWrd#81XmD4An7SLDCk4aQzW(KV__@;$wyOZq=gs~&ZNPY@|IQc__FH%02tTe zi@N;R_(HEgfjXHY=Az4RA#0ap+@&)6K&szq!C3rx{4Ez7;QUe+3?;WvS)`cU)UYsn zO|>k`_+7UP!{rrr%3dM^{>2>g6*m6>>YKO;6z&TuA*v#diu?_e^R8iUFW_6-q|quO zVTiYgiH0x|@WDls1u-FK;lFNY5Vchkgqtlsga-(0cYZuTEIR|4 z-hwU?-`GaWD9iQwA}J$jO?v+T2weOw$80~SI$0E_Z{#2>Xs$cw;uj5ozVsj3A}1$) zbbg3ws=<%GgrW|brCy)GEI?<6&-jf{<(j+Yiz8(YIM3-p#_T^&KAAb5lOfsmc8k{|+^aNW1Fh?_m4>KSLS{gkjD`;}{n1bG55t-rq z7hVR_uSZZeP!$ke-Rk>}@YQ3`Ey{T_O(R~At#fGP9-_N;XhO{-YlnD+HXgF0!we{u zLyviWeqfG3E2$~;oodCtF8Nc$T6h~OeMZ-;XbCY!`gSy~R4^~wIX{>ff`H^R&B3T0pNoqG^cSOUc1KW3VJshYgdR7ZXzr}g+5{+!B5-( zZb6a0LhQsE5w(hwG9 zI_L3vK9B||<~bo(NK)|mfM8aTRh#@^5nMhH5UZ5sb5h*)jq&;2Suz;;m;RAcj}cJ1 zmhQKyz938fr8=ogk`3zRm{~<{{{U-6q!y4+9yT;#1?)jYKStDmxA|p%{i;25|`oMCqlwxsk z2AGF1Q;2}laV^XY^}7DxEG-7TE(|to)7(F~LWGrd%JLziUcqN;~GzMo$316}3Z*XZ|%Q;NawU!q~O?jnoi=2r8+`73K#su)`r#AsOa z#5hp%F;Z`&taL%XaK;&77-HBxHR%aDBn4(?-wD|e0ll&oF3&aU6PS*JbZk=De>*$b z5qe#3=l=VViD8Y6hu_oMD_W||@YQ!TJ*j|jTvIOD{XUEpUE`j7`%~VaOHG(-m;SZx zL8q2iir@Y4vi(yPPv1{ykmmb`ul@IjOm=JU+b0<3@85W^5K`;fWG`?kM4_zaWm<-{ zYoiB=1vF*oMG##1nggB6P}ksI9Knvl0n%&uv7q1KTW%@4F?LH;yTw7^u{2q=7G^*w z%@cr7=@@Ldbf^v8z_y@KZKf2mp{?LVB8X<3)9}Ja4mH2Gdim&;3o+MQWYr7uFoA+N zR3=)Ksy$hs4E5SGBi0LOxYYyN2|2mMz+CecZS%NATN0M-lptJZm?qnZT^s8hF!Y?q zth+mrK(;%l619Xy>w*}f?xM|C#0IH<1g*<4mx?Il3H-(oao7kRYvw$~*~z2XA9>0# zD!F2=*iF+@4kaSGzz$77ANeU&Y^?~|*DDwQ0EYSe0BDr-W(|-f>xqt@=pxB5R9b2! zu!V{xX;Ci>D8c!m!}vfq;DXXM#O!C(zB6MQzj&Zl;8wv)*`W z3A5fP+VKQ2Ul0w4<0fF}PfVks{{Wst0Wu^M?jclln&vOmfeI$*S{wA1BK=@#U;8(r z<7IAfBCj|4fzm}Cvn?N3q}Kq=FT%gavoL0KZ@&RYFF zNWpNCG~NpSzfWm^*(qDnzAn5lsybD0<3Fd-m{xBH;_vNw31O-SP5tS9 zMm^eHUEj~m_+h78Ulsg&Oc=9#ee>jDL8$cm{xJ3T@AS?!)D>BCDZvMOmKN+LG`fqP zVi~8_V6k25A?tl%3Ek2b$mO|`0Mf!?7!GqJZ?D3C*a_faZb#AyR#T}5v3~-*U^FhX za)3DpB0)^R3q6U0gW3%wE(!XG5=_BPhK32Do5c7zU6u^x?!@sSsIph%zH!){!Us_? zwyNnH2e~m{OTz@Q(2x+BmYN-6B`EKRR7Z)7o_8CxIAA?W89GANf+f!ow{ce3w%tJ8 zR3L!jR5D6Kqb!!O6J+p31+lDp$tyewP8B>+>krx6RG-npAsDu}nAYG>5>z`tSgs|7 zF-}kp&;gIYAusZ`m+&c)3CKj5dQ`mKdO`3?7_3k9PJ#$xPV^Jc;?AVUSehR*CD;BA zq?Wp}Brf2p#skY6tpSTCw?WkHDg(uA?qbbQh%(!AxgjD(#NM z5uzAo{{ZrL{5Adl65No(C+B-5{{W}uqfk>*ORvX>9$%Qz_&RRC1l`4=*sYI9*O;Q% zOp5FH@KO7{l8>oZCPw0Y`MB9Q{L6WbF zztZ-YlOUtbQ}QAZG~4I;_)4Y7F1zpcKJ!gL63)2~(HcpAVlYHncNNGnu@mCy5$bk zKm=Cq9gAVeG}+?=wUOdO0^QR#b~Wsz$E+`#ifykNbrgo7u;CphejJ^cYA7nV!TvAV zmt0biO>thDdn8~o38d##{=JwgWZsP1XY>0ZP&X#+=KS;T5?FW5;QM~evTaT<`2IZ! zV{bfbpZo6wV9WRW_DHv3F}wTpWh$J?GQI8M#cb9QBo1J6vym%YkijW#^z`hz4~|xubbC z+ZUl1!5d8D#7oQaL#-7W^&=!rb&lz1n7oM^hX4n}+^ke!OMFnjBP>Co@Ez8|_BzXs z@Dz>BUI_rJ12R)V(=AQ>M5f3b!UZz9pJ4jNFp2_VJM4NOg5e-iT3dBqv2c}87m`x( ziBzQxq7^j}9D2(VjtYhjy(0puX@=avIqPwIDQ-&uJ|U2CUBJE(hm7Nf*53%nyKUPVS+Sm z{CS<|IJJOj#A}8C^D8xQNoxU-^8q=H@c#hgDrUP(scXBBCx|7ZD7*;3%d_GoEhVlG zbTz7jd}HxPLLk{Gb^idN6`dfqn1#zL{3U9yFo6`4{t!4f7L_^)MpvJ}RPuZNX{sN` zre^i?2Db+F`$PwqcCqt>RXTwOiK@sd|f@54rz;mp@4OE+RoCPA^&o^!Uw^-N zra{ubkG)8nDw~Cc(Ew*LMunK`b*OXPm@DLmVeCYu+*z?iq_piS4*g+;Bq?Z74-%^q zX@DtS$%Z3F`l{CFxZU@dhNx75)rPxiwpRrP!_pM|0w+=^;P;4IimM#QuIB`#mwZF8 z3T2Y(3pd_1!jCC?kRBwwG(8#{fV??Dv&-VaG*?-wo1zGvNDG^4V0{QJ(lx`?GSTJ* zIzIjJ9B`E8FfNjWa%ush!chWU+q7BAU+^I7nOk2-Xd_-OVub4-SOJ1B;3l`My@uEl z(T$cv=A*z5SyC&~$(oh-BX9Xj0N&-6(eVpOo0c|=@Jbv(9Y6TOUBl0>;-23B0D{Hb zv~b00i_`5WGJ4DZ07$J^B`^F7S%2|LD5|f>9K6If${4)GWS}MIKb=Z(o&E&ql=NUn zGwNm2q6vfWzHw`>!tsBPC$#843r!FuU*USP%CEpVGOdQVU{fqdL=*t?5>mmE{a|(Z z{xCQH0G9atWu;1X;}Mpakii-@sI7YL3&bx;=^Q=~Er{8ISTK6aRZ%m#)bM*uy(I`+ z%lK4ig~gFn$@sc5i41-o(N15(V`q71KY*KKMp;Kv1u)E4c}m}`YUpAX55ijFJ)>@Q z5Dl;|KaR8Tg}^sXe+Wj`(h<8vR-)T+%L!V#+{WuYV{W1*$b*&39MXQoAQY=-g&)$v zR@Rz#{{Vhd1zTEsWc?&JYc{*%HT|Oj7%wlE@WPi&g?kD7App~o&2aum(UFb2mj)7r z8+gM07`9^rUY36eS%+_5Kk^+bhQ9kwup5CJOnHqF-=ua@uae=@Z}SmgMI}1C62(;O zTqVJ3iydQn;}4@Vld!Fg`_i6N*6UQ*tB)$je#EeVE4K0Li>T4hJi^Xkg89bO8@kK@8ZsIpgG z{{Y;3kPAdFIdAU$;9^>=zCVv>2VHLK=lS=FmIrG1{yn4FOFF@}x2tvc`;Dkrg1@|N zVdtzQs%xwXN~mifa{x3ug}Xg-2%zFt3_*Hgz%ij*z=l*!B+PKBnU(N9!aPT^)f=`@ zwQg>6YJ;qHp+*)1SJuu@#XzwglPe0Ch{~^W7PNqUY54 zCQDXv`dek~8~FnmYQCZp0*u99IQ2=mEh-uh4aOCCJb55cn5)4G4H6M-BoMS~H>&)} zv2w5h8+E43hc@a~`n*IMgW78uG_2#Im@W{{Y1pAr9d82+YdR-&v8o#0!N2 zr7y&_-OcwcR~JQ=)!#pyxxbj;!4cvSba{!=9;lUuR}X}FzX@zH9R327GLEE6=As6h zh&W&e4Baeuh}tQ{AlVY^iQcmna>QT6v>$+*VqZ1*0j2>n_+`pz7?WnZ{t)CuyCZdo zjuLRN<1AY!DqVM>{itlz!ksNYLTOveeDe)ETdchV{t=?JD+kH_N>yXKTmFy>juG;o z+AA$KR&@UWEWjES>_5z<)fETV`3RtaljZ)%w?NZ=Kcgy!Ea~Y3BJAb`+shl5q{dz& z1vS>DOSNA}R$#_^%MJsvc;9>eV$(DpFIV5$Ww^CeHyMk1g{!c}F2n)}W;5e%$isF> zmQw3Q`1UE4v8bSNlAh+?NEHsiDc1%0+r2W*)(Xp(@lTMiJ<(8GjAtqRr^yf=nYHVG z&%Cpst_Hv6eV8i)3{jl%U&pjaFF6P2=bb_kT?+FK2HgE@K-0g%NVO4lvSK$g;Nm#hoBZ*r&r zTN;1tc6Gfzh;N^%PZ6*rq7lCMOCG&~J!3yf)Bj4<&_lE6<|Q0kX8@CCqJ*kQz+ctt>*a$_DOJcyR*|hBK*6W#(04O0aGvjIG5S#N2>_X)Nv~ z#O**ap`XBBWgSHuBHmbwrlLMS3CpCjH}CjU9Ymv7=@7Sal~zw&S});=ufiNlUS$o3 z63nDh5jI45iEuc6UN)90_Y?tlrTyrLiwpfhXbb``uMk*u#SW_l0T`#o z{{Y++OR8tgEC(nk?mwv1yD_hy`6`2kA$T&yhpKWKb23x_QUn{|yJ|P@Z+H(0n;2bR zZoRu9nP3Q`*gv;qVOro|3vAoY{lzX4(rf`@v(oC_gxLiQvRbV9+qg3n4PnWaz07tJ zf`oFbKeR8%#DQH)L+fYn$iUH12MME}`{9YeX>2fkTJXay3Sb2E{{WtZ1&gb9^ZfcU zlt8r6#{T*-N?XmD`}~k;vK8C!_{vFa@^A0*LSm`)#s2_V`HURBe!k`@n4#+oRrdXGWwbDiD1$> zT$R<7C&xzt2MM6a=@Nf%SRKN-0LrxEq%!i#1XwDw>-X)zv>dm8e&SFosTx^Arw1cI zd|CRNI+k=y{tCXm(36>Wtf6zF2?Q-(W`hr?m?+obYD^iTZKD-2O{6iLNa|zUPHGEKXmiFwUmm#L zB>4=;1AmJW3T*e5*8EJ%2|=PLW&Z%h7NPhHYUOf37c2|rp`ze5mlFk96j~M$$xq^% zy8PMD{E2x#B5r#VOqrgzaZA0!E#?5x__5Rf0EFQFDAUXmSu)(G%%QuLPw6wIlu1n7 zstJm@g6dJ9+6vrX`b#dqJp^xpULk>X5G+edsKC8C!O)m?bNHj70TfQx;+JxcFEOOE z5*cGs?o}%nC@vt{F-B#o;wtVVv*Yj?XXZDiWh(t3BM=5NFvPTF63Ucy0_pUK@_sCG z#0~xhm2ssn@Qz$W28IDCVpCT==|RL^563|~9?>I$TJr^zOIlbLm?_+$PvV1#O3&a6 zw)Yz5ZK{h!&7Uzefj6#_%V#{31qYaeEJcY_#jf$h$2ct&>VAYfYO3D)q&=_~R=!}b z89Exb>(X2d#?kbDxCA&g_tA)H8FPN0+bB-b{d&g(1!OO${4*spNqzwXGaIG)AIz}W zD-V3eOEvmGrZ$76!lZ0~E>Sjah>>*h4E03c0I|pvHwn9XW%MCEV+E?Lv zwkhw+xIpTrK})!|!yUVk(yLrk7XGmU);yFc5B45{R~2Ej>dkuW?j*3fWXiYAhr_s# zz!l>@>;8RGTu=eJc(3aHnPe){PfGqgBzUoDD|z0$@#KTV>2v)506y^u3>8o7`1K_g zhYsuK`SfD!AlL8iJxNWA$@kaN5<%LZ*WR&Ro;1IH<}Pf%SMSm`P$=>D>E1PtyAyVP zWqPqa{E(Gv*tiLj``klCH8TV8GTq@}27TjvOH@EDEHo<8N3=ubvI zED+ARg03~rqQl*<0Mp!Y0BNX57v>;E#BQw#h6vLGM6eu_4J^W0FHdGA%50f+hawPS zzj0I)DIq!B0MYxHvQ3c^;Q5zmlF5md?XF=pX(o{$g^L(>7Kq8!*XC@e^AeQN1AvzW zaS(8ntCXvSU8GXAsYTsPb1>rn065~wOE1khkwXhR~)EiQ-|g`)z7Jbh_VOC z{536Rvn$qE#lb^22bnI^R9k=Z$yXJZ9gFgef3yL^a>t|#s<~&hzE4?-r1XLu`^5z; zRAr9KmKc5In{H)9IO0{*SE~)>fF591B)3Fuw9$wyq=*`BB{*Oqv$uj)T>i`xu zDs|8KVMkas(L)3qwJxCsns$xsF}aZE%nmx`EWj$VGM5Bd7#hiLO%Z97HwK=+co?$K z)&oeC{=EqIlqe4z^t!IVizt^YD(@YrW26C=(H1VnrYZuWweA+^40fmqE?t@uc~-!95nT`BSv*l_EPvuawb^2hj)`3jIRA^A*<8xv`-6z z3f14C9mbB8!M}2!cv#DJBNu<@W*kG^l^A^Yg1(QJABbh>llKu#EYQ zxGX@q%rae^kuy1(p<^QZ&T*_|8*M48mkc;8z)Xq`VX_fnjOV1V${u7-?3c&{Xsh`5 zgjU6jQl`8l8h4)YS(uelrCMO?P+IVp!T1xWr{;yn%&+i)$&GNpyuD|Xy;_1Z=zyDU z0zu#LLIi1+t^TJ{UMjs|SCjt$RN^oFAd*=yMcq9!Ey@}bs}h3?>woz0d%D{{Vnlzsm174lWqf%qhf6ODyI9Hwn}# zYNeHgGz_p%iX4$v7Ab<T zxJl&{W+jytN0+$!kE(!ae4U@!{z!TUX< zr8r!P;r?K-pi=`~Ed7a?@T2dd6+o`9KVHz(-EIz_Y?UH73qJZvf?6E>e^R>&!N=D| zC8LHfaAC|1q8%)MB+HFaZ_oCCmoyyqC0LXhgsqtAELBm_F@VpQq--wQ!nzQ)gbp5n zuiwibCL}RiD?Vzxges2vv9tNFLEZpvZI%jyj_q04$8@l&`L2Vx>Io7GOU=LR)3}f{ z9V>*vynEBKkb&y)Tyu`xJ1HI@D$E+M_WUepTgBCM&3tRZL0~M_1oq~ZIY3;<6C#w!oAvwUmr+U7{y&dGDK4GI^JKxbpo> zqRynoJ|+!*6NmH7Tv52+56sf;BX@qW6J%FQ6x$W$H_Ba}fh8#gp}FbBX40#X(L-=_yI5DG{`!gCE zxYm|*5e6b!B^U{9LhvJIn1>M+m)G&h@`+_f@Dqo^B{Lel9%ArC;C^DAzmKCcq*0iw zv4CxgT36aR<_x)kG8|*m{5|6%O2r??@hJ;x{v3Xw68-nO2lk~|4I(>P{1V88;lcC& z041`$7(ZXct8FpIkEEurB}~wFZ^!l{C$gFP>kT#;8ouxOnM9-?r}Z?dS3f`0L5aBm zr8t>|Suy~JEK|7V)_^;QCgTMds?LAreV|I+PN#>vUc;=vdmt9?Z>80pJCeB;fIWeu z&Yi@Hy~&y7N5{%VM)YfpTD*SZAXpWb2~D1$cL)l20=muPv37P+C4>W9zWV&blGT0t;sVva-+tm1DzC>sf0=Wf@rUo$70>MvIUi5I zaS#dh_xPKCQwE#uaS4ofNHuM*tR=rlt(?Vtb%`7h3^6Ffuf^Ldxb$v@9*sOq@@ty( z7DkTH^9#(aD2}}^gm(^K2Jy@L9z=P9u|6Ob4|pM7kug_&AgdipT`|%)dN@CrG4=C# zOz6&Qpo_&0LW&FCZzKxF?XHru3|_Dbta`v~2X!9dN{qle=?p|#fV5)ahL{`%%!d&K z9WcQ`C{>vl@Ylo{w*0|HW-#)^8akEMJIfjf%hUuWsFbT|8)U(S4c z)KSxN$*E%xGdlQ}iu~Di@j3_q%r-@pOkFh!uBTEEVtbJ0_(cq{NCT(yOT&Z#76SKMi?oEeN6PvIe+Q+O56Cg^_IIIj&zOTv z032m3%M`RffKzu5wo`XqBSoLMXOF<8;#c@ebj*+(naE;R89}9#a~2js>O?Bfz)+*+ zDB47(A>2X4RUrptOXfAl;p-#XA+jOjD+>PrNT|59h2ipwaKD61u`3Kg(L6CaI35?7P1#gaX3+KJWHI)!ww%&-3WRH9YG5KK5c{r0HLK zdyxnhv!*`h*^Mruk$(LlWWaBazr!#saij0rA_^~_KK1#Rz4MIy`any~SKqye1@hf} z`*21G%OMJFV11T_Tp{Enf-Q4n2bi*V2rx^ppZ*$h~XgRQnU5Mn;`A!0#Q4|v$E zdPN1mujv5~-NWkJ3Dak^rrm<=((fh5Q7Lj-02X^Zgt`na1Vnr@MT-NXz2V*wsDLbC zMT4lIj7L>e5X>Ef9D|Oa1G6w~sIp=eF)7OBWuz@VJCk^{7po)q11( zjQKd9+0(D>_JW5cy!`(FGgry` z=)ls~r|bG)CrY#T!!cSef9xov;m_YPv>0>z{{YA$1|PyghA$-Y{^Jmb86t=8thKHX z3IdL9CNUc;Mh|E7gha)K`?KOCi%4D0zvX)|J2_ug^V43*f>Bdp9#4SqBleyZTVJUd zJcyw|qrT#6xOA0an(7HgzF2z_f)N0N+!y0+)Wr&1!J(kP8+N7D{{Rq(gA6)2Yi<%!$&(F< zx@FL}A}bow7S{!#(RX2rHv>qubX@c|$d1A)SdAiZkXG39b%Q|S0(HV+U-Xwa#6U9D z>aWoYGTSgO(J%h;)Vg9dVG&s0tgesdHd#Xu8)@1u178WKnJVbwJ*H0ZACz6e$haaY zo+WntT_&YKFMoFIWr4ihp{LjI6#oFl;;LGz0Lk)zs$&!c8dvTsx!RSHC#E6U3am+yNkvx>dbEO9g|eu7G*>lSf&q%A`4W4 znFt|ZikcsIqEQxe_*ie{G}HppPh9oP9FLE{%Q}H=O(@(EvU=x23SaJ4_W;58v&74+ zp`=@7*We}L{4W#mgSep7U;0Ei{3J0NDT~1T2h2w+iE$GE)#6Z9MHM1;5}~hnwA=EH zoJ(F$z@~YYtU%sivaTxVW7e=odh0sKh27#jQ31Tf9DKws>LAu%&-y*%WpPmS`(&eh zpMn1Xej+mB^7{V(ue9Fw=lON0=>WFe4Z6j#G_I30GYB0F;0}{cEeSSEq=bUGa;g!{_yvv6mB}w-e~h)^yV~! z17k*!yE}00WYyqg(Odl&UI}n2vM!2xnYU#`KyWQR2A+>;8Nhid4?tgc-k9%V(88DzG60(c>DE@A$5Je{kYE$r{B1M8wCD7{{T?!w_g&b+lCai zPU>2GGYQF$RG)(H5fq{d(S2dkx^Yu3gI%i)_=n9K#2$nD^)7oQ? z+CCqYA!m%jP&KHpC^3kRxOFQL<{O+lZDfN&?6PP%nKN3{S~77lX6jbhf@Z4=n?oww z08^gOtqoRX{Xj1>Gf^7deiP{vR})5QoVirPm&s{27-f>1KXYn+87=cH$iO!KZK}V; zgFgtiK|-ns6v0IVQ)I(c0ORm_W=1Xm*Q~GbmDbF5f?_GVVvZj2turN5$k4@XZXvQ& zF8*fm;KyZ4IjL_`Es1Y|6l2vdv|Aw*K;r$9%qu^O#s2`{d3?X~f9d$I@Rip7D^~$F zfqzI5zr}Vky;u^n0a}`->1x3#S~n>gscNf&-&x+4s<@|Y6x3DQFM=s5poYtXq7;k& z07-x8Fa08pYnUKZU;0Zr5l2Nq>4X$&EOdxAMI)e!8D~NiNz#f3a7(?LFYnNcR5zc$d(8FmUw*OJcI)@+ERCP{ z@ADDBzW)Gz+ZOQKoBQ>O-c{;uWNE%2+W2T6ziI$kMNOjo$HVIdGhSk)+%E_hB+sPU zA=qM2Z1N67>N;m+MNuSc(&3>(@aI+sv4w@fZTVMI4&u9bJ3EfYkr`lE^c=u)W5ijh zRtp6rAcc;`1oXGmm~kY6w7V#MU=2WanOn})^|&3C(kr~7#0t(BOd~hRIc#&RO0~}Aia}=Sr~nv%71k_^}m+>kVe99S>2|PhKFzqd|C}@osJ>iuxRNu@>!7SM@U1BZ@gV%(s zgqCcV+wBz5)=|*>^%AL22rG$2;o=rpz@`|0yOvzNpi?YV3O4}CH7jEa%6QMg? z4qz@LI6!syOS~-?EXxW)hFFTp5a^9?OaA~!t`z7ZO+p++JNyNs7XV9Hy+j-`=Awh0 z#NOjqM{zGmw%tXpE;Yd~f-YEHAuJ?sh}n`hK>q-ucR8IzNeEq#8+<@8ZdTjx0LQ$+ zf?B&bIs~QA8Q!z}6al_Mx6V)4i)o=3eV_O}pd#gVD@mbmX5e>^&fuUr}4X?yt!! zfLmNX`8$ahWNmw|`SoBZ)g}?+@9B-e>B;x~C8(pvzy0-MP=feAEBN+;0e*jX_oExB zTwuSCy-A>W&JVxo2Ez02_xUFU;lICkDRkd~`}Uzoyr%m7{$deve8Q#OY#MQovcxwxQ--o~>ZzdvG^gU+1ob|H@FU*F+*Sxwb* zHT9c4>YTm%ZX*yIdbN1ZwpJ&en^*52`M?K4#CTvCXg~^~@Wh&%k2fLub5XbK{uBC1XO(xzeD?l7EWo`?scTV$L0;mW|a8M4EFOP7|_5D z31SrP7oe$K?J0EtVW;2^;H$|js;^jKYX_bQrd4h!Hxd>x6=NyW1415zh$@MFtU8|5af(>sHZVwK?E@wxQU{DL{u)O21lf_ z*_`RcmB4sO`{{RdXt7g0XL*5ExB@PCfihyN0 zjpfk-DJ^{4X6b^Ff z!|n_lNp@6PR(cHs&Qn{(sO`R{`F-+M^*EgR_t2>OU)ZXi!ar-?; zF9!$F@8My^VbZXD*MyB#9Cyq1y~wGxrvvx=_*q2K?!NxLrzrP+`}#7`Ww%28`oPi8 zRjm2@$ueMk=kL^(Wo+#}{kW5^b@%R}yjfkJzgUhKz5V-^6f*UB`~Am3WAESGEux#} z@7%zr9 z!7EiNfC(HL}LtE(@}41;<_J6%&}FzOlW4y(^tR-GcSaH?Ew^4u`H zYGm5fz`BNqtGM!wZ(Gdx7E+Q}@1$E%JX|Wk9PCZ0V0cAMMWenOm&*1fS^%saJV68# z1#tivjg-%bAYIm5sGKHHu&^-fK%g9Q_n&arm~+R(P9EqXZ|*B(6*U0pWzlT2srVXh zp~<)IhRcQrLL>eeMCRPF9^e? zJ#g&ebQ8iZs)^z86~Q~-h2TsVQKFe@#6~LRiNTh<#Nfu8d_*0}{{RS~wl3x=c+|sZ z#J}{4xVWok--LT5HG(Crufna2M-C@i#8f4><{)XfEo&Lc9v>*z6#`e*I4ZqrIJTon z76!xB{E95B4PPc-sIaWoFRcmt61Qv^dR=~mb|0VS5sSKZee8S87O)-n_K$hW+AAM? z%e%q6+(x8UYIHKx(KoT2Qtuf4JcPXRj2lv7l_GLLZy zmaND+0KN9_XbV9Nibfusod+HrQR*F~OZ)l2-oW6gbc&#(f z2D^RXk0<5X_x3@umi7DfAyf~4zi`W}QTLC%qSnu9=kN12JatdMZa(|t@7=%@{r&rx zlJWQN>6e;&pTBNZ!Rz<#VN$E-@7t9F8|(M(W+;uF{{75V0_$IV{KTcMc#0YKW(!;1 z6Tq;gQNEGuElr6QI-d$Yp{!x^|>v( z!|*$}xIh-HX?BjLRHE+1NXw}#wT=GC9dH~JrM{MWsLxu%OM|#y{Yn?tIEvsew5ds% zkIEwYowD6LM7wiDsW@fY&_rZ-D;bcnNFyd7Rk;vd5@(rfb>?`ME;?>eIki9~7H(lH z>OZMkyw2VAi0f3Fh-NezBY2@v#Vg{0k9I={$k)4Gl@x~l+&ebqAH-t4?Ua8+Sh^Qqei zO#46F^#N)3+zhDrme6JoA`S5efZyP*NIbq$-x9$ri)&eqpd}D;n9wz}{{Uq5Z4v2a zP*|EUADCd}tfST#crd6_Bpoqr%hJvp$4HJS7Z|mBlyUe3)J_b$YY@80_*Kgjcp#>j zr*i1RTXp#rc|Y*d-F^m}s63Cr_CEkEvlY(|$^;-5Kn099x`&v5=z!mZ5AubEUyl(s zX1AF~Omx3UlXGMPQqK`un6=b&EE7afy7iYAQF$K`A%ZVVRIrM*wiPsaNF9g5zh}v*`qT6wLVy+mx2)C9e4~OD~U*R&gQt<}Q z;Ucbd5qL*JDRptC68w>Dv|GM1=rqcBS_Z%Z34H$mXhC+ujdarfVpUv)3(o%lV2m~m z`fv2G8(&A?^#+7qaa`B=E>Y{Bz2&OYef?m$IqOlcVi8%gTwUE7^#1^`KPcJE9fN+43%ciBLD zH&|}jcfsVgyy@P^Gq-EW+h3=tG$tIpImhq9%OO>Ut6Bd5zRU|Y+Z|KxJcL)UdV1gU z?-ob^uhaf}M##3OHJ-Qp`^p7@hb8_001{YG_NVXqK!v-r0r%~~s8XBh z_vpritag6=s3F{+uyDI`Z9sM zcl-A+&wn3&+}Kmq`}Jc-CAH5#f0&h9@AvB!8^=n5a{c@Jg;cHfmE}-POqIFDVa{PA z(mSaUWra}+ zmbFHFfkX$m1Y!1U#G)y*RQ-MyA8HFtkoIytm@HpvZ0CRd4(HqtFZhR&qc4$DVK$QGHVXoxnzR|*)q4p^86%@uhLERChG z)rO(uviwS$UIecWA`!xH0081+a+cYU`mPzZUe2!l#$>YV%J3alHcSC<7xMLG9st3$ zD}sUj80BYVzQ=ig;1vBzl?pDma9-TxuRdi_K+NY*m6ppT!B>a}E3R0rNVpOaX6CqJ zn?7MyfM;j3{m$n;LGKf>9Y!v8P0dhXddr0r>A$IufebYdyZl7QRipR_qOH0D-&X2u zcnB9gu@(?5iIv`%TH13;&hhGb6}ugvb|r0}Kh#rQPEvBrEvvAb{{Wx%WZQVP&C9~# zrfyZ=bEHOC#*JAH0!Je4nR>X5)%rjent=0A9&TH>uke9vvewC*-oG}7Z_Tw=EvmoG z@J=ef6nFFazx0K$Wg6g}567-3b1Zbq7xD}t=P^;o?ooFU);D>ZaDw#<<@~9_%IiM> zaN-v%e-HBfIe$_4K{QKCC5;3}aE_oc7f11LF`iFop`XIFVH!5R--gQ1F%EC=oI}uY z0a;)MAHwWnhFH2LqMRO)coDj{vMuF{dZfdcoy~?RH$ ziQ+1_M1~1Ms$FWMl+e>kFXSL9Sf{H8?l3r%%I#zHBTHqquC;%-us3G6#=l<)cq4i~ zm;Ax0Yr6Hv{g*Y(Z1n!+lx%f=_Lo}Du`UKBmgCk1jc0clZ7}uw-UV>w9)YHWv~Q=S z`b`g1-jlzv?93#obaZj?c=Ae7A7IDP?2izV(&>49z50pF0=LB#mE-5=i@Ku+cnm2ZHzaUKzQ!KK}rJk`TgfyM6xQPsv!M6fEv$hLYVf8;<#l#R>C+u6U=zBSHqFnG8j z2_mfwd|kwqN|(`=Tv~X9r36l9a`r(@GVyvEl#8LMVvI&md&OLB+;0|xZC0fv3)b!| zj4Rt;F|ldZ#DTX=F(n0qvZ7Rhu|rJ-qizb+4geae$A>uW7DBzQvAF|6`HeUx6XDha zm=!w5imM>!iu>ASM5xJxI5v+59ucN4RnUKOrkjIkVanp&La`KjrR?d&E$sZOezgIJ zacnMb3smtDZA%ad73SS|mE?$l{Y#giaL2P# z4IoODR?{^aEG!VOq(f~g(fmRru2R>`L2w+JZHT>evz>eTMH0(Z3@7@b4cHCKp=TxG zC4{BNL5aiRC_YT*P}Le9LOCCkKh? zm8_)M0_lovl=k-vCY9RC0aP{1HXyL^4ectkdB)`xzjd_AI?IU7G~-0v2KDCj2J?N77XIRRRu zYjy9BaO)`;iYJ%+&#>tigcqgd&EK3~r&Knm3eAIu(wgu(O-pTcZHZn%Pyo)!qs$dN z)jNqV!K+u+ta-uoK|Opb>zX`!3PuH};0#uA<7Z`psx60DAL~BM8#UseMSmWI%xPOV zZ=ZgAj7G}KjeQ(lRajJQ*B%<_ZjcbAySqWUyO9Rz?(URSq)Te(?k=UfQ+hyRfC1ir zfB$vO!Jd<6AMN$5weET&%|WW`1Fv0@!+R_ME88#ZGKOAbMsI-}ig{eU0IP6V{(VqL zy7_WD?EGT5*6{81F3K6q!Gf{^^w7`$GqXe+#~_T*{tGy`3jyP6Z{ueDE9{)PMeOy- z@+c`EC>S|ep~W`8fql_xiY$P2<0_hOz1}~D0zC9hmHvhA?YSSe7a;ST-+<8C$s?=Z zL3de|Y|jwL4IYFt6Lze7zF&^3d;UInkqgtbHjKc;Rl;K#PwbTCFv~Wd1ocxpAI0gM zTTbe)Nk7S0b%bLk5U}NoL!1j7Xti7+`WNSZ%45dXXxELcP(k0*Rr21vv`Fq_qLq8X zAGEHL|3Frq{f(uccv;-+T6YaC3GRI2n||mcGL$SQ{P-&^qB_s*!dclvr`=it4@Op4 z!6k3^$KiHlQPcx@QL6a{!RP`p%k1@w8op83=mgd(hbNGhPuvC$H{)^_g=|*EyP4>* z>w`c7QyZ~2E$XX1BGRhTl0PK~CNhrn!(_8p^)2@~_}U=T}D>6b3 zC*rf+VsJZJ949pIBkQew!UXa1y0jH4b=LD+sLnF&Om^_mkZb&ghLMok(Z>9;%hGCo z`dQS;kPyAc!N5T(a?`doBIxbNEJm=T_lLZV^7gB1`7nH~Y6|fmFdS~5(T_!2_6Upo z+yfH*zE4uWwK8n8n?MaOfPOyD#Zws2u+kKPcCj@dLvFFoA@~{aUG9u;J!XP%C0q6l z!o7aPdT(cxPn{)5jZ^kw)HSn9B`Qw)J(eHPJiVB#XTPOy{&JDOIl2+)W32AbQfIbI z3m^nq!6bumc1h<|ZmB5bvpkWqN2yAXeE?cXJyv>EkLF~ZTdq#u4-!8{4a>@;(55+M zH+lM4{rp71HCs)pSfif<-34jRCX#~TlY7n|$c!sW;JP_+C%p@6QuaE#?qhkH;=T_- z@FVaQR5jXijlWf_Jt{F~n8*r6a>P&=`$Up{fPju4Y$4F=pKT-cB?`rSurLLK&WQOkwlR?nuV z`m^uk*x66`)M)7UMQ{7W4*ZvIoUO0q0yD3Y5fKLM)HMR(dr`};;uo#S5ERFd$}P@Q z(27Vm-Nt73Q z*T2Qs*XO^;90TmHT4R8XR!(jkCD7JiC_TU)%1MHP-ppCqRdilquH;C6O@jXeankN6 z|L^+`>JECI(!X?Ef&5eI`l}rTQ&-jj8hqTWxj(F84-e*~rp)g{F39yQ)?Q?Ja-U!? zlGJnSpDaVnLUM;aA|TBp$oXy1E{vG`cL@w7Y5ezD3-Y9}W2E2KBd@2d%yotHY&w~P zvT@@U%*}P*s>_q>PvW)YvHlLjC%zX{eT*Kj`-`Kh^GF=08iy6XD6%=bx+I%)mb`ol z2tf@CFbIpF(dDTe|JuwC53_gCnHaEmONf0y>mKX5KK!~mJ+X9wY3e~%C|IO#)D|Ox z84IfJS@kr|!82o>=IiwWO6eEP2(n8&I@#zqdX99Gb`C3X;P(YlXeSwGrVhrU@3cKI zSUuxw*D3JPv1RH8tXE8z2!1o&lhk1whXBS|nRX}rCu}urPi{H7Kg?0F_sQVuq+f`M zQdsklvpK#qJ)r!CDN~1K9QeA2;)KWla4@4RYNk=-g1(jccjplb1(vwnNm|g+?}j?j z=}A)L)WBPo#jyvOht6V}9OG5hRBrds>KmgGa>?m9?44yyV=R7AztkfdAv~7c7|?9 zPMAu~Om-b1r$lSce+Q{I;b#>GNSU}wX}4w#A4wMJtJ)?95)-cFD?fea#t{a2$3#g> zxFW;T*l~@D%DO+FoYkX^y&pnBANUf*oB?l4uIY^^Mqjqc^7~aB<O*EJbtLoJ+@s7chB7e#v^x}p^f+XHk1*8vjE z{T}bEx%%lWpy;fq7%3(4lV}r8&W$_8QsGDD4qSQZF zd-%>nvRi~5fs3?d9gwmYt0w0-OznQXV}tPBmie-hp!^n|h1_c1PQ(-`q<6;N*#Yxe zJXrPLa2ZOJ-dO>_;?k&^n1R`LY->vRdj1Czk31!7o^TdvtwHE^6)?3wkN-z$gJ2no zMiOH1a1rXx>r{OXshB)xF8*wXZe&IqQDwCs@6a!s)x-AZZ)q2X*fI8X?=+WvX70e7 ziSK7wllkqXmjH=22bCPapDm;6Q0M?W`oih#^`H#AEq|_){2yT8=(rizTyy6$1DL1? zu8(Ay17qP3st|L5%hM(N+42+R>ucI+1&}GlVqL$o)0>Kw3(yl3t8Y{KzA_j{1Du4c z>Se!U?OniYV%JI)nCd$eB^=&fA(SXAe<9nSw5j@n7o86WdV$G9#t|8z1l)3iH$5X6 z{P2{VdmjDvYDpd_9=uN~pSZHqhG`fY`@8_|OiCmU5_|m^)%R(K#XYu9{}u0r!1vG2 z1HB2_Idqw0S_lZMC6vFpi}*NzyrfEbr)tHYIh)!A? z+$(LZvHF43O3h4pb;1;O1(sF2-TNDyp0<`v@5nSq+IfFz8>Y^o1XJ0+eG1hJ`x0*- z2@xWW&XE!n;4x?6F@GPAUIl8acFG=EYRPnd=GfEWT|`x>MQs>XGf+GBq=Fla12oXt zsX=t5YZ3NJBj08miBiY)s(pyek-j-DbMSD5a|u&-S-zy9^Zp0g2xq})6+1u*+7G=&OG48v|RHmID)OpvPv3qnaCsg%O zu_FcDHumS2HC(k&5keCKB{rU)pkZ)$nPcE1h3iAa*c9`jShuD%S|L|eN)~IP;_A1S zZ1#Re6!mWkz->V|!#&+J%rF3iGjtcc_=>6Rfr@_FYEqxlB5L@UB`4hEZ17L3n@neh zq}dSh?c)fLGCo9AT43K_h~R+qFpII-XQNCTJhA9=)HY?xd>ljf9R;-M>n* zf*H?pUd@Xl$7hgx&ve9L+3VM#~37?rC!x-VMYZ#$o#HCV#H8l{}SjRS!gi+_p<4)U`R!^rcE1#R- z#6c~IlIF`B(`b5{uhfH{H!f{o+TahdF?aH?(_)vnEZ6dW)}F6M%29B1V;>xO$9w9a zJ9IuStWp1}#-!hJE7+JvRnT9|%ky4(z7wn-#3If?# zRIMJ{>F!5fk;el16E}Kh>51Cchin(0YDjERpCND9I*3&Q#+}E?$UK8uO27zljh9K7Un`=jk2@jY0OI8n$S#E0YVu;Lp}fAID&gU)>cxPB_=O@`GF`s z+0=<11OWtm{LL>+ia8ywh9te#xBD|PD-xWLd9JZ6=pGgc2`X9Q2$`pK>H^`=kZ_8D zo-l|&n=L<;uRYa%_V4s*QUqjE3AJ>i#*GS#ep7_bh&($(puKkP9E4o{4#={_y68E& zIj-NJTS1v-uLVCJ?@7uYvxr6!yTK9Yc$!*%lwzh`YJuj&h3b$qHU3s*g2(u`_+>n{ zTVuIMi=oIkyI}7eQ^HOKd1ctGzn=>KlWF73ItwUH=_#pZFs_-Smu?gjOt(`lw1yrK zyl=*<1_#9(eW-U@NOR@W%ke<9ja-4Z_(ZddgH$eINGnF%I-v7u7ry=|kG z)v@2yc%5h_kPs4DviUXWaoH0@DDZIx!kr9%4^F}LhkPkHWSfCw%Oi@$PM(jV;Ju|G zOq0qgP_QJ)K8-DGt=8?awo_3*Mv^BP>oX`tvOveiQJ}prPi(|8n#32xx)^3oG^f5c zbUKsvgPS%*#GPQ_XE7FkWIXmiGIAB#UvPzsM(TUUU102@%{;cvE|rhg@il z%YaQZDqMv}AyQ*96maAN1Mp)pslM4c_wn%VfF-f@^qmR)xtwmDcTq<# z+Ajn({X8Q`#`kaRRl`mkGC8Ol$^NpfsIgU#v1Jk}#;Wg8XQMASclBpZb0R6%t^wDy zfiU#jE0wjtysBVr`q}ZvzDr6JNme8t{@)t^1`x{T^gabS2z<;1F3$ecF`?->ycFmN*2IfcgHsS8m2?A{Ya zwOQ&A?cu&CbJF{q%_Ml65_}S>p^Hrh{(dL(;kTe5^IJ+4qmDM}>G|a?a+&nk(52w~ zx#Fu_RSbh0ur{%iq@y%g-Tfl*qjt%F{!EH%nt?ZA=B@VIRuxwRb;*X>`M32Fz!|X-N~Irr-17#%uQvX!sPYMS}uNOWt+AXq1_Ai99H!n z%?1s~5`=6{f4^e~3eG#%as5BckkZk;mtNpIP~r?0h6NwlefF!dY`TFZIqY@?o9$+X zcC|uhE>WM``6cCo+n8ty!C+lPQH4Lf&-D^$r}vlp_VTqUJ7V>kEm&g9ta5rz;Yclhnvf)o`#xiieMU7!l`0ct4sM8?wzmlH91Pb5B*6|kSgwvbGs zOs7$@&wZsY9C9RKmyWf3_j0b>3VBwj3mAu;fHktJjU>gdHSzAvlHGWk;1d}`hwh8y zb)nl&#&0<2bIu;Cnv_hbIkKBMgMu=lvA9*!gsr`4ooaPc4M&T;l>!fAX8+6xs$wn= znybzRBN8q56PUCcyh%g`EX^Zq9Uq`p9AWZGVIm=1!zXQUF;v)#AQsJU6x&vXQW-2d zF2!|N!-3fz#X)~_Vxmqb|MD_2kfV#i#*o6Sl1p}=@YCoWb>NfePK(x=)5v%^@`1ml zIQ$%p{`YZc(GJc22T%}qGhaDTqK~$?Ec1R1of_r-2e@xbkezN#S~7nOpE!EbUEX#M zit6%na%d*3zuSM-e{`7!UgK@s^1F!y0*@s8@W_zV*gYKla=K9@ot~I=kYGiO!zL!k z(6GHmZmA+tGE~A4%$BJ7lVy7rzEPKPgThnJmBDIS3h`EimLjI@sCu}u4p4;Yeg(uh ztt3t_`BpWPY)9@&f=TfmMs3GI%D%+g3@*p04A$;p7ER7q-~P%oQk+CUOM=OTX+19J z7JpWE)>EYTQd12H1@c~nlhhtCUlE$I6cf7g)m0t+8xfcnUG0d|Dbs1opLG_Q{zQmk zqj&#qaMzw7#NNa+kB|5dqB27$_i;~u=Asd<1f9e-MxMMXYP=--Q`k_>!nbuQdVn5; zAiU7S?w?S?vGk&ZlGDkJQhKGPtSi?Zf`GZXYb6!VK{O;_3#_UANC@1@m)$a8g-f0)a1U$@+_0ZPR6ohF{|GzkHY@><^F)zZ-=BDxzw< zA59{?7L{^+b}Aewr3lIr4M7JD30g(SLSNfe84D_l6M{^~?m?bFWW%kKo5|O{h;5R= z-vl>4&rbvCic3S)L3+*92$K5quD6os2u|jm3!h=eB=xgqpRoO(l{)T(^v&Wa@HypP z-yiE%UA|-V9wrT&NQj*hv2eM2D_>8=j(~vz+jsl5R6SAxL=|!v^c}Gj&0>~*1fZAk zgrq99*1*-QU8>m;Aj|M(&HUY$N)N3qO0-&TIvT}oaU>AjaWo3gRRtLW!WPH=!8l{k z2FXlPccR>Ay{KWu9TZgo$;Dye9_$WkZQtVm{XcsG6=Weh*t2;~43pNS*;sRnJoCgobu-d77u0SNRIly!a%g(ZhmNVCT6zddCkk?mv7?^N?~CWCv{G)e`VNHn_fm4U98^ix4vw2`oc?XvLVXG4jmr(%)x4-BEJDw7n4l#bDr${$t~E--yIl0jB$S$& zy>0r$fMY>7oVI~84c1{Pf<{t)=C zd~_y@FgE?!RO@#G&k)tB__PnN%HM<=fE;B#IQKfzCQ~h^%vr)I9THU;;Uw|p=S+Xz zwC-*=lfhot3WUYOeWYtq-aWAn1Q-Gu(bQ0rN7QCJfb>q$H=CvMqZ}?UBo96iJ9XD~ z;i?yJsTnC9$drW7e?gRcLRcz1N9iFGdj%)u_%yMd#W_Irf8utc33!e9*7?FaHuLdG zPeni(KI*PWz9><443FoHT!TV5TTL@s|Mmn-#$y~=+vG=MXCPHYL?mzBpt0&SIh`|j z>Uk}a3zs>1Y8%I53FMXb-Nk(1Ik@LCkq{tZXy9tw)<5<)xs6bkq3b$}^M)%=M!7Z~{=-xcU71X-yXCdNo^of} zruS+nd5L=MDT8%6Ep>oB{iPXNG$xFFs%a{fiWi&p}+-<-jwW}u0kV9PLuqWVq zbpxaY=P_oO@brXC;IkU=tp!MrPrY5hizTku3veL#P-(ZfL$&(vCrhU-O ztYVS{=*b`)x3l%kw#XvK2(bV_ei6HFZF>oNqdwqGPBijVYI1}^hL3$Tim<<6>X9ea zXTm9QPj49iPrEY3Kz<0ji~RbhFZc@Gopc0;4exee^U~{(;Mbl{MV49TyELr~Lqib>HLGq3{BNR}?n1aSM~IiB<(i5h$q-ezlMj z(_SC^00cK{z6#ZIvH1RpkwB}AlT4P5eXo{tLd&e3TS` zqlFP%FKSvC;Jyo4GU^j$w?RLryv$r!DvarM)h=e)U|4>j&ZbYT%m~M_imUwhAeW~eu=_72(p;>gFYt*5g z`v#6tG061wyBZUoQsE}7W>R}M&X)Ok{R)h<{tPAgsrt4ue4TJhE85|Y+C(P^q{7w} zXv;cwm&0EeR~3X@iF*`hW3}rv#Pv)XE9<%E=SpRff#Xcg^f$AS=shv(MlF~-|A?9$eZo+@ zL0cCl@XkOf1wXo@NIjxfW2h6?sb%hq(R`5CF&qT-iN)%knQG@;OOq@*V-Q|t>F>&2 zq}XpfXlve}kQujTglImTX(_Q`GaUUW48%vX{p395M*(8<)?tre{mSTnqa*1+#9mia zAHydv5Tmy1g;=3np?qDS!T$PbQOPJVn+jhF7ZdQGMP+-b3icUc1e0U@2-OalLAFNXg>usg%?8?zZ+jy(lPA)8!&HEcG6;9XjFbdUUs6g*J`YqQof3OSTtG? zhUpyA<1BOmSFYF%8t?ynX&4Ml3xb>YD{zTvUukB(GD9}yz~%$iA64h<8ma;1D2|`j zGVf6j`%Zi0WcIA}kG{mwTpqLL59)2{8qV$x1@<+fOsj}!ST(R?j(%H|?VS!S1@G2cOqy}v47yK->u~tX4aqx$Z!bf*9e^qr z=`?@b#~WC$2h+~kOGhkYOVycgO{z!&R^x+5wqZO&fxV_IE)O6pL6W#uJDH}+>o zT@7=8RRjSrhLT3$@L54gxN6~AoO(Z|!ZO!Z+9(UZyhGeFarDVk@%|-&ue@FR@DSgC zQBZH4LfG3tVrAUM<~R$PNTKu(sjIU5=p28+rw)fo*FJc%Dl{R%TkvBtIKfwuV6NmP-K=J%OeuF z{|^>p&_+Gq`OWAt^0-L&-%_2Hbxt3-`a*N~k$+QaFgn10Czj)mD)+^wDF4m%J?ivg zl2X>8iQUbk(RkBW?VaA2YOF)9m|gqN>}A>c)IZH~lLKUIrZ?J+Y|*fN50*yXtzf6e zGS3eB$j13h}A7*PLP&2SpM#eE`>HRTX zT8Rn|E)jH@4My;z`&zWD_Ni_EMu#9%GgCVs+g>#{eYXTRtIs~EAhxlk|n%=PL5^9!BqX2}w*@bn6-9ojl$fxWbUu7Rk zB9AGu3@iSXGZ{vk69VY%DY zIfJ{d8_rZ#ghs^=)@aAeEAiPJ-$V!Dd3OBE{sXo5eW1jPJ>p%S+37ZfABrgqQMwq~ z#Fz5dySXGsxYv7I>0o2L68oQzmfgT9^s12D3I=<51M!=Nh1%@A4?Z)}IqL90VX>hD zEe@B7mJOb-8x`J851*bxr-_*|$8aw54*$M}^3M&siOKKaGEVqgGCO?Z5#3MgqJ6!; zr@!Z(2gJMjq9mP-z+Py3E|PGM6ADq-)k*$I9SWNM;!4LB)2t$7n!9|ATxl5}UN;td zlW{N2*IbD&;mwd!go$%|RzNQJ1h> z28K^*zudCj6L5JX-?^kOe}m+Pm!cWYm4G=V>NCSfyNL_%N|cHB)LPtr4p!xHr>2iaDqNFM_yA7k&WDcg@0F$(o;TiaYaWx$a1;{H!CcJ9$ zwnr(A%0v~Rh!Yfz%5E`D&ev|ucN|~e`#rZsQ8z+>XzS%6OMNv+NuI#iiJ^})u@l*J zxG9qxKUF}<2r2s$htytwRZ#^xK}yI70x1CG*w%#-vxT;+hN$F3w&L`8q0 zmFZu6NUTf#=dfuIzbuFlD{Bed3gPy~B<4A|hSqh?J7S$>fTy_N)F6@$j=f= z#uikNWB%#dc1gH5f-AUmbyrv&9=pwkaZfy~Z6ez#j~&!YqtjodcN#)`PH7#eMD&B` zc4h9Doy9_!-m?rFWdu!_u2JL9pFy>!xD1Zt2cxetZJk+n3^OhMsZ&xLHcepfzH%JI zW{Okp%QIvYW|SDZ{2V=tZOSl(>yjDA>I>SFC4ze(M#7C+TQAe-_rcvgtzdN^3HOW1 zqooC?ynYLC021NapTeRF2%e#V$3QQhpmQJ0XBGTt`XhTVV11tq+qGEMq)`8jVgTz_8G0-rLD|%0EZO?T4jiS@a$wMIhE+f%W@9*#_X_hUEC3ch3>QJL8;};5qZ`Hdm$o%flaBNR z1tREANOjM-j@Dw?G+tB*S`W&9^>jhT*N+0p^fJN1&Q%=Rup{H(IR!%_%Am zDJD$0MOK=OnF=4lS;gHEt!QKJAI;T=Fq(qAQ05e9ONzZ{t>CiRXufX}FinzpWRE(| zBWDQ&d)f;SjREb*4Cx@StNdGoZ+N-Y~*{1qMDjA7F@@l-drj?o- zNWE`bJ|_0C`)|H*y}a>$Zu<*Khs2&Yc%MXKnsA6RF_2r8Rt_5~^%VOJgJ5+8x-zYf zmuBBBj_TE3;b~NGK9ASxt5fs5gpxCUkz{5YTYRRpin`2u8R{1hQty8Xawqp!Ki2)j z`W^F2gwf3BY`<;QD2lUz;deJgO#Ya)?Lcl-pqI^KS@TF@M-=aRDhCPw*0B%!U<0+aNCU;-Fj`+*X3Izjq^& z%KBIdQtwCR7xzUN=fqPqoLTt|09}3s#QLa0In9Wd2@dk- z>@)k-v?Tt*qN@~_`ul4IdecYcU{i+Mu}HT_GPJc)5DTuFe(j+UfqsNBo{CZZ>N4pK^?3PchLoz90Q#ywe-Yu?x@U}WOYw1os4UCj(V7RVUG^>x#2?#A zh*~I7-UzJ4taCI*{AGU3V=ncVmK~zn|^S(Rt@Jc z8Z`S%3W!c|RT_*e^J^3g-Fx0^03zThUaGOTKZAuHGjrL;YWwG$YTlGhP zB|7bz3B1*4Q;b+#rtBLl32_i4(}L5F^eS0q)N$S< z?vS}mjVbpF>00MLhJr@lCPU0jpTZrbsba;z*QAavi*fey)vQ^E2<^0Y`$4i^sy;f= zcD+Cjj+_UvEiZ^qGIoA|&`TZw(8)wymtzW)z@L%OW30OoV2>Ia_9*`B7gVW6x@D|v zQ)Azo8j^YXyDYj}j%%*CT4ZXOSKdSwq`qjqYzw=4w||rSHR4t<7d*`nr<>z80`wt7 z@NHwpj#IFYS?P_@|3kIZg_5dMo@SzXYdf*PIxhh3g=Cq=4WwDn;8Zc>D2tn|VOuWm z{CE|+F(ja0_A&$3%uGP4RDM4AER-m8PA?>p1e;~f#8U3Wf9p#`m5(cCPF<5{^ zNpKwWY{dMp9#C_l+?cXUa@4it@yXQyVJmalVC2BIIx_&Ou8`1bjo!LC49vFMK$hQ$ z`2Na>dXbc_0Pl4Eki!62fo?U@$-%F8aq3HEY;UiNqcxp-;aVRMcr`9+j7!^$Bg?F- zgN|4?2a)}iF$&QPL)$Sbe6E99(moQ>i z?4YIs(R@AhSICFldN?1&W+m#&|2TB@Rd&R+e9zW-Q%3HI`4b?1=xgMlGn-%VPYaW! z8%w_ERaz>IWy8DY`HItkF7x-Z%M4dB8WA;^Dh)S=V>M66#sIB|xzJ%Jaq_nt+&49= z$4J)i2K@&E()eL>Wl`rN_(-QJc?+fm(;5ynTyxO&Djgg51?*)K3|{z1tzHzjFE|OU zzrJlCe)z7HRfbKnQ%WL|Yd98>c+4#h+K}zO4?kQ#g=}Mx%B)hFQXgkjr0s&I$2AfU zz%Su>+EaRx3CPd0(JL?6;jNZG?cGNC8Pwj9c<)~R(jOb{BsD+|AF`$NO^oByA{#Dj zVh=T>kwnO+yiBOJU0p0}koR0U<3ap~ewS2?SqpEUZJ&p4=iL*0)EGH`;Z=|u_DCQS z!%3dr2EwwQtskmD=3t!60xcMXXRx)AI@H|v&St_JmBdFMnX{d`oq`pFFh;V&_k2=- zho0Jm1-8ye;3B-flH|+CLJNb;OeWOV;5Bmfn?PcZYoY9f(Ez@V!Q5WVHnS9zauzc8kpOI9LgT3-o z$5-WO(0ebVZBm{MuE}@kNQTNpS=M)7a-bfSINn+0l70PmzMk!(8#3Nc6Zsm zAngWAR?F{EFt+a7^@)c{vwZC*N%_?6DMHtZJbgbRz@(9pFe_Soqals6z1pH`Yjkj( z(4MjA3=}0+EQ1i__V#uRw6i#}(A16&9V9)hR2s~VdC(7dp&9@W7A!NhZ#{+4%Y?cg zl)Mf~RCE`8qfjoTlp~eA>$``NyHx>45g;tUz9wb_v19s{A$~~M3swC(h9OB=*`i_H?T4)+`~cUNV?)i0N~gy7PJ?+Rl38CdlG>;6bN zoV>k7F9$AVy2ahlh|=oDKt^brM~1`|!6MyZigQ)Xwec|MJsx~l5G*c($_-ilUY>?? zX_>xRaA}Oz?mprE1F7-u4 z2f0=fL}-$BlG%(=dBOs;ozs^r=XpxR0lh0yd!ugTzqD(IwA~8gq&*F{!WoapNoTM7 z;Y{-{6toc%*$Pv4SUe$48t_Z?g>&n;i9&ulv;Ny`rhsC^+teB@*R_RG6&(E0N1N=@ zA#(>~|FtLs{dbk&W7*Xz?6k|ib#k9+@V-iXQlsKa(^=H zi;TO@8X>z)3qgRZDea_tir6>`=j&lZh39bJ-b>KUl%ng-xy!7S`kz0hV>sXDh%4I% z4brxnDuRBV{|Wo=7TMZDQqipD#lQ48@a*jMiX$yscV_jx8F>yPjsANB)ii*buA9(B z-K3q&0sBEUyV`>TqKq_ug~aKyIf6w4Zk~<@?lW_TeTo|jpLVLadjOTM*i(G8{J>JugRFQEi$7*b7k`|Hrh!%{tRIy=fiTxdD-r%q48B7}T!JTnZzt`5d zw^=|cd3H_MP}ZZ-)~WLUK(Vkg1%e#z6W@rK_Ei#OW&{Wh90sv|*GFo;bu?vSrr80u z|3Hn5`|&3SYIc!Cszfog=yoMx<@iIF8k#J&@w&hf!?Mw%`g-v+hmmNt;al3jJ(EwZ zqj-4S96L1JDHMMnOZOWa(8B$|Sp@Q2wTroE6YGG?bpm<$69`Dp3@z=f6_2Y?`COVpzxerAL5N#W0@8 zv4E-p{TFSud{X^zoc+(EyXnS3ge<82$(UO_%~$^RF%5Exg-g<{Tzujgg%g5IRql$y zIR?3?;;IJOigL{MtL8RY?w_V*bSFfteu0V!K3SIN$B|*yq+8xux?3fr3h#sH z^?h9WZ9}-gJkWgl7Cj+xyQ~T~1if4Meq$bX{b`{_mrMVqwRrR`R;(YrD0YHOq40-DQ0#4&0DxOf^RMBPGq1EUV(1>~;=;h`R+r^=gFAaBob zR%{kUu)p;8+J{^%Kql~eQIvXF~XR}ofrwO`s8I%+N1u zcEg@%UG+03&*G#04OJ+gBv$}tJ%E)5gys|D8D}I&;))-Oz7eR*_x=~KK0hS_7SS>m&HU1Wm_rLAf zahn@|(A(OZsiY6D(pC%e~cT7I!<*H1wzJeQ{_gj|@BS*Fm(Cq|9f)`p3|xJwMip~dvu)}Z7$;6poueNo2B ztG`qfQ+IYB^g(tJJ>-8KO>v4AFhfPfqH0=#QC`HA`y<9sbo>4`yJs8Bh`X68Bp`GG zp!^QMp!!Gqy1u(h*DVHzsgWq)NOoAW*LvRW~yJK(PS{Z9CgHKHC6&hvK>p$2XAStVJfB=P*3U@3?luooK zWzl|brM6G8Wa-_>@D%XzP0-dm!&%H5JkFUP@T^$oZS}Ht;@qdIcf99VTB#8%@C!1t zV+LjMb#?qKdpk105H+WY1UQWc=JwN5V={kpWY9(D+XMWmUKHz(S#5r<|8@QN$Hee9 zB{%Jq@^6o5A#7iCn!#cPZ%_Y)Nb$ z-jiL!ScILz?}tmbJg7&-vxj>hwvJM4adei-r&LioC+Y2FiH$uw^4v)15lT%~rYWtL z8d>?heR<`DqU$8gu^2FY>3@>dd;X#5DavgvBJT9v$&r+jqtt&a513%>MW-LnOIlnK_yyTY^x zGN@ydDDMk2gkmZ1(1)$thRa{*uMP$vxD!XT{(V*v)0Q!R>sIUS10LPW>{`%us?>fIc@T{|00ePluwe~l5)4f zz`P;o%vrPg!wa%ZCLujXLG8w@7b^HiPQg8v_GS?4E7`{gKif_5dWs{4D>02;9rzHz zwPczEOsPeSMY5P!Y9v`$(&E8q^kjSRt=&{){-29#|EwYO)u9eRNL^gmt6hq?WESL8 zU|@Y@eR~xBnU)^)Tr7u?DAp8b5eYcSs`1r|BVSthpXgJ8Pg3MkwXLgb&pvpX_@ri7 zZqNRy66&}Z^UStZw$}7;cQ)0}uN+a1;1#t6+>+0pFv1sKg{AT0%&+bLfl^8jSzV!h zSJmT+%}h;a0CJW3&)55ZSW+q_T7!bYe;}lts8E(n{fV&m`{#p-JfTq*LEO&|aYSFb zy89eAqw%OG1s6gl&J>BP1WVxh68g|d&{9!z1c0NzMCa1m|4n?$-(!nk@S!qmxsola z(F8Bgter_?p&h#F!7c`i*hzwbf+lO~SPi{Y{9FwNcgAuK0R;p-1HiP|ff;9=g9BchcKuXud`A)hHS=H8rG*=EVJSDn^SIg_E^TwuTP8CP@zB6GrT}V%(xgKoK+-K zGksWHLkY9aC3EN+6WqUH(R})3HT&eN&Pl>H{iO3e4y?`YGivqGbX!@@GL%_3V?r}iw5a6yPlIPys8d^&4O}`Ph^zPlAMH=G>Wmd-LLR0r;IQl&w2U#mEKRQ&8*HA3bMq;Zt9$o}*c5s|e%3E3n5h&w3;EaKrQLz!DUq5TRzUX&TV7J4h`(*a5nIo=4_~xR}pU#ags%HNsfZ| znaO+^%qzXcvO3=obX!fIhMg2x?1(!j(^S+~HK%`UA8eG~Q#1YMx{q@fx@->H@4CK&#>fcPg7s=PHI^+WtT7;S zM?pFJpQ{s!Vmb*f`irnI6t~FPutdJ&bpK;dp1ZF;Qw$5Z;ppX%40XZzYG&NHShB)Z zFRKtW`PV-QlW;`RgrBjH)N_zp2bYkH9Vw{8t`dUyuU;D^xGO^BH{80A7aQL_n^pqR zVxht(_*S98{mV@VJxZ{sZ~y?Y_IfU^UKP)hI{*?U^05_{49lWm8DoYhu))HH%x{t1S7Ru zL#jdwul`e{R?ZII4z6|);1{-{vT$G#|zGg!Vt;Q;-U( zDsHEZ+BP~RiWyF!pd;}RA|BzN`|SDc2Cq+z6%nIqT=lee#Q(?9S;a-&cUyeuk`UtPN|{0yPE;&P`Z(n?i|A5Isf0JwS#w{9S7W(L2;3?6BmjBa{dXoP$+g4BA+%b93`uurMMO|0#T_k&8 zwI~6){Q7ZUFSRR)Dj|3o_jojdr-05|9JtJYZMrz~#82lyYFVe#KvsNS-=fzT_8^bx zX`%cydUl_tTD3+3xCnE_Ek59`#`1Mz^KRrLuVZXVU4t)0P_&c-d zk$3}#oQFU7S3f=k5on?Yzy~qOI4`%N7MbG!xXkXGy}YS80A3NW(WVqZj2rXvP&6>G zywwTGsAq*OSqvTxiMRB#jh0wHWiuGLA-nd?WKx2~0}k*kjJAMPZ!xW-0!sjP2_q*S z<)%O_O&{1rTKg2t;dE-Ku#%{tT(vbQ0(4H)gS1jWv#+4=xC9ctK$C3=;&v}yeyf~ zRUzTPn(EgWl7i58&W=V~Y;*cgUnTBpSTuXQeLWNMX32lN9@dc3KOz`&nIwmeg{Qj@ zl_mBCTW~657qZui_L*c@ua-CiW7G&^Rv#4=<@Sfg1m5+hOUm@P(D$K%_*0#dA-4gW zS5*E5bTt91-%#7|_Il)5Ku-20JbugGjRWZP7KIkC%}Z~nREyF6I1-p($}dh9&X?GD zAZu7ad3{G)xx@)>&ec~GrE21Rx$_tn^|?5Fw}zC{zWMI$!i$DxDzo08UaLkbkoQk2 zcZ3MI;2dQcUAt4oGZ}6^43Khlu?vFh9|#RVZ!#3JXGTZkBhng=J{{18w<%s!m$CZ8 zY4H(D)du?dFr>C|rNL^7u_*ezHLjTL5w*7LABfD2klQx@SVe8uH47Ep>rcHiUugah zWGR0_s>oVf*xp6)F}Ro%VMbWm(wLs6e_{XdUz$w>RF6CCZmLXr+(GxBIG)}ZI%^Qt zb4R9bL*nT z$#V7Ih(!0d61D7NX(_{g4bQClSzWy^6JvGmskB3{y%%Hd8dUJVtfinF-*h`%KleU{RY+NOA@u(cPfg ztBluVX<|?Ob#;@D0rP93it8w6?qX;AVRmQwdAvz7@7jbv(#`(E_#=s{%&dIiw zu^s7-vj1{GldZ{7K_-^5#w{a+)>-^uMEgB1qY=*TgHB+%QPZBEE3(Q=s7Nm6a&A@0 z#H;r{O&dsS5pl=c6YRX;&I5;cOxwnMvJ37E39W+;Aa6>CJF^t1QbPPeZ(6YCHSeB9 zqN4feHSnA5+GRW8zr`n#hg5LMic0B;zD zCs@(xb#LPmPsGS3{PN!u39mHC`7~UFnLG7zsmvou(LDK3Mk82%f`!N<0^ljjF6h#^lIec{7-LfMcQ_wj~ zt=1@JSLb2TRwOq^Q}bPQ%W#+3yZ#$(y6wG9`VBN*_{%ZEDD(HU8h;Ww!V3wuKDv}^ zH&X)D$+IVb(eY-W8OZFD{7k9dT6~fB##S0GsbHajXeU}TOIOd8NVd@0w@2hJ^ho{k zWG~P8Wg%ETtq4p=I0J85D^ta3^mKh-VUlI5x@Iacq7J zU2z+!G%XgnVdW`Q(JEFnIs-0zyo4&6^u&69r435@g z?2OqFLg{5Y1aV=wQOj7__gAfqJnyD@AFWW0PXB7%$FP7_H6m8xAuIEwZ%vU(SO-oy zDp;()wMt-leBs1OJr>fBCOCX=)SowrPxsg#6n2m9TSg1|XbmCL{#k;PUMf zZwZg~_upEA4*iY498$2(@r}^CkIbar&Ylpo=Df(wd>8QYh?B(!o3yRLI||UU{sXm? z%ww_uGPZgxlj!5aH42*%P+gr3}&_P@4GrU7x5`+C&>3oR0T=qyEYnUbzulvtCq81WD zI1SBq#IE@;t%wsTVAxOlfu*=(e{(?hBwH(Eok*b^MiuP@REAw0OzH=!2M;iL0sRV5 zEgMA_>P}C&Dg$7B)_?Tsy=jOGeP$Hg!n?8_jolRs1JV9$hP355(o9#Oh6?hZ7=1WN ze#IY~>6_!I#C^rs3$vRf5Fl736~_AyRE4U0pwON$`&$%}`;G2U&ESRJs08!@1wyNU zu#e7)9Uar3f>^c||w-}$7yT7}qt!ZghS3VP$*^^?C zS~qIMhZQ3dE0OKIqSd%tFM!*QM@__w%KD^P zvW-`H8GAhY%DR;K5$^HrkXUngNK7lf=G_f76m8<|114!k@6Bq{<~-n_J_!nO6&zI| z7co$9kiExz64o{2fBsJYFdynhP;|ef`g6wd z^(m%Z8$g8Z(jBK<{!1ryf^u$*I#%-;2khcONOr7nxBAT4OMV&EU&2_^dQG(>ftT`t zT=oT+prQbW6AU{Ch>9F=udeNy@K*fHs3;RVicq);`V$r2SiAgZ;GL!FB^jQUY?7_o zXDMfst_dx}+X`4;R;4NOyH)?y%jQsa!xN)*rsNVU92_a-1)SmtNU(~psJPTw=q z;>{r2fN$!sh0YGGy@K7Cur_NLO$Ulj>%iWWYqcit z_Kq=tbBoR19c11ePY{jTuzE=Uz1s?A^M*@=w=wI-ik!9-^QsCGiBZLsvREF{QoMW) zszBMT{SQ=W9+8-0j_dXma%R_;-t`2wu4F^+;Vbq0X~t}89Tzlk{vXJ+dPAT2tAv}i zCLRVF8qNKl`sQSo2IfJJ5IzcY1+f%mtoTx)YbBxi9xg|BBukti zz18cm|Hz4I(kK;W`h8&7D=pg0BI4$CKcgyXtgiz9DGQ4Lz=blbXKTVbf2C#;0_IKVF;OojvOfswT^BRj~7prwYSbzpkpCBUp~ zhJ194$1F1&ZHK8_osb3muW{pqQ;b$H9Yqv=OUU>TE_TqIY=#-e{2SSANjUN|KLVDu zLIghTU{(p+d)Dyb?+I^FILg^_yo7{5UnB9Yz_yz=t)^CWqChcW+O5chh#zS|lw3IU zK>dtC4>6m=wU}Ec5sa{H_?r(D-Mpk;&RBssa`M{3aA>m`KMg1)W3x=OaqQ?{MUA07 zh;EE-;cJZmbhMkGGxG$#O;-%S|K0Pp(1Rll%dxcbCR)q!Cfw$&KHbl~U7S4fnVtbfFa!l12)E z#z%Za1|>BMu0*LK{3bLa+ox|&5oZVlsit#%l3Bvll-d(ha3y55P>r+$`TQfjIX>FR zItkvE%Z-^-S{yod+&1^7MAiQC1?r8Gh=Ojg!S~N5=?GorasR?!#0uC8T8QUA@jl4u zg^_&{f`5u@SDVMa{$IDAJR7|Vap2ZjOjTBsNMD|(7YVbjc^Ci@W~`}n!(y^+P9(o- znhPS+#=U;DKqkymu?;jT8P}%Y-NJo@p+_OJvv~nlY`mRchIz1mFUfJLLO4RB@sB2$ zX5F^X`gv^IIFbkO_1PrI9x1=`Rk~*G7x`_V|JZWq^AQ~a8rC9kHe#_a=wRc$}{|#UbxC!4q z>|I_HXDnYvRb>}7r1%O&d7!9s&*f~YKpja}gyy($)Lvl6h{PE}?Ux&qh>HO2Sd9$9 zkoEG9qzcYU`ihu&Dg7p-(W<3V@_@I|zi1Biv36+en)XF3IsBpJ z`W6vb&@(KR8abdDT;W01&TF2vz(r6<-CTLgDT;#GFe2U|H3-_){(TeL`KFydp?V6X zI-i$sPmPc!b;(9lq4sOr4coW-jz`q$egPH9sEiOw^|!Yprp>|eyqu)WJcw-)I%pWn zHP|01N1-;0;=xD(qJyAeyd77MDX9b6Rtn+Xj%#+Yf|=aU>v%`Y*^=(GMsv_cV${=1 zz0?*h{^~ByAAg2|K(Zv&zbhH8w#E=qSp|m*wD0x4sOwYMWA@WzESwL^TSmLn5DF=7 zcq>bF7yr7Rdx|5(kZt%6)V3`FqCnadO`>wvyTj*Nn!pCazTK_L5^OMY9T}z&)%9a4 zhG1U&#`soaF2*=a%<+s&)i5RZOFXBGWE`KZu*T=!4iTqrzM{k6*ZD6rBHlF zG}w}vo%xn8tEg0rv=@2gl}eOQ{7xMq^=%X8;k#hSYzCyJ zTyy{%f}vEqRxYMSP;@>yB+F{;$^B2RDn5tDv>uN)=F~ZagHnbJjZ^n~qoJY2uu>xu zxOQqb92RR+*IPXAn;t_d&=s}9?Xpm9e}g=7YE4(V(VNXAK}(eNNHQg`gN@x~$5BB*EUj9ni^7qTm;@r_kK!K>zJ!L2R{H4*BqFt$4 zN4ch;+Nz$#PuMzX5gg@p##BM7DuTv|Fb&jO{%s-S&&kz6v9E~{2+rekWVQCG+)fDs zPiS>4B38X7yc-;bYIg|)_wh!TO7pKj)zmea9GDRt9pILV3D0v4q$I7u9Rl8ywPnTO)zoqO z1qLMBhL9Eh5nqRBN}4U0hgI15IrTDH78!#mlg(GpX!r`XlnsnT&o0Ews{Y2D_qjZK zHGLGwneF>uA&6a7W3AhD^Aat(mOMZ8;c>k7xLeYHAda4oVI(BFbv!p>$uU(@G1YB> zD#2+0@Se{r=6*RT)_y$X`9F|Hz&qXqB&$BLn#*rp0_kUb*?=`dF;z{v7JQFN!S)iE zbv5gJ{&M=TlafZk}b z;P{Jb`e}#MpSdS%i{LdMNm!Rr5qfzRYR9#8`ya^vP~B<%BESSOrN;lI@_X?G43Bhom`g*7|U2frp-Xo}7-G^x;-2{z5p52-sl=sP@R60S?q zAP2}N;JJ5UPSxpr_+mRKp~O!32Ne&gLBj2%rA-gRS@VmK@buLIpOHdk?s)%~eM>&| za!OOS`Fd|Uo6#-kS~dy!Ip$y|AB8^KpP>dXrcdaJpzBFy7WTM!1ee2?Y|pZiu3j?1 zxYhLC4uV({)vi(VQmM%zCCJV~r!$7dc?th+*%Fz_mWpRN`QNIC?i0lx%%h`Po|u#p@_eTz<-(12b-Zw=-e2zT!Z&PRP2HGPPz3lff!qwlSLR(KIYwfw zUEwF!tE(Q9cHE)Bp|6B}ni;8R9rvy4rr&o1%TA(`b$6|dVYLKb@Z!6Xeyp=gsKDKa z21oGO42gTncK^Uc3eK*gtQoZ_H=>rA$w=@#M>KmVW{_87(BOToe;VgE8C+Ef(zXWD z!qBd&miY|nyS4fT$vu@w>@kCQ3tOI* z^yG^kc^*?o^pO>Wr#;HM)UFS@it@rI-TLbm#Y<0p#0~{Q&rH*_BH@d-hw{h&9HY=B zw_PrMr|xFUlr)=|$*RRy_&}_R>nK`1nISPs6pH2JUnm8EO6mX5kMcp)+R&V(>L~jP zz)fbIcK^7ISS^ZD%`8=46{|VP$c*E!;?0up7U|6)Hhz)9Z^v85yZ@)ZN)TSeyE07w zL2HsIXsAtN%5?}wSTfcUiU2f_Lk8?R6zHveleRF@-d9MzdM%21 zS#|)B5;hLJRL~o`NM#d~%Iegg_Xh^QTw`lGQc?a8^jv6rS?goXR7?N3KYgZ8Y#j%7 zJ!J0lz1{{wAN6@BG5ye)cm8P8&M zK+=-y+`tOBot@fc2rbv;{WY<-;opM2(9Pg%0Ar&U2|?B3ZpR^YbF=EWM-FYEEgV8n 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