From 04f82fac34be914282498bf95efb7d58558e787c Mon Sep 17 00:00:00 2001
From: Denys Vuika <denys.vuika@gmail.com>
Date: Fri, 14 Jun 2024 15:44:15 -0400
Subject: [PATCH] Insights dependency and documentation improvements (#9815)

---
 docs/README.md                                |  18 +--
 docs/core/services/form-rendering.service.md  |   2 +-
 docs/core/services/widget.component.md        |  42 ++++++
 .../images/analytics-without-parameters.png   | Bin 15509 -> 0 bytes
 docs/getting-started.md                       |  60 --------
 .../analytics-generator.component.md          |  35 +----
 .../analytics-report-list.component.md        |  36 +----
 .../components/analytics.component.md         |  39 +----
 docs/insights/components/diagram.component.md |  49 +------
 docs/insights/components/widget.component.md  |  49 -------
 docs/tutorials/README.md                      |   2 -
 docs/tutorials/new-component.md               |  62 --------
 docs/tutorials/new-view.md                    | 138 ------------------
 docs/tutorials/using-components.md            |   2 -
 docs/user-guide/apa-extensions.md             |   4 +-
 docs/user-guide/aps-extensions.md             |   4 +-
 docs/user-guide/extensibility.md              |   2 +-
 docs/versionIndex.md                          |   2 +-
 lib/insights/README.md                        |  26 ++--
 .../analytics-generator.component.md          |  32 ++++
 .../analytics-report-list.component.md        |  33 +++++
 .../docs/components/analytics.component.md    |  30 ++++
 .../docs/components/diagram.component.md      |  46 ++++++
 lib/insights/ng-package.json                  |   9 +-
 lib/insights/package.json                     |  14 +-
 25 files changed, 227 insertions(+), 509 deletions(-)
 create mode 100644 docs/core/services/widget.component.md
 delete mode 100644 docs/docassets/images/analytics-without-parameters.png
 delete mode 100644 docs/getting-started.md
 mode change 100644 => 120000 docs/insights/components/analytics-generator.component.md
 mode change 100644 => 120000 docs/insights/components/analytics-report-list.component.md
 mode change 100644 => 120000 docs/insights/components/analytics.component.md
 mode change 100644 => 120000 docs/insights/components/diagram.component.md
 delete mode 100644 docs/insights/components/widget.component.md
 delete mode 100644 docs/tutorials/new-component.md
 delete mode 100644 docs/tutorials/new-view.md
 create mode 100644 lib/insights/docs/components/analytics-generator.component.md
 create mode 100644 lib/insights/docs/components/analytics-report-list.component.md
 create mode 100644 lib/insights/docs/components/analytics.component.md
 create mode 100644 lib/insights/docs/components/diagram.component.md

diff --git a/docs/README.md b/docs/README.md
index 2eb6a51f0a..cd50ab7ef3 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -578,21 +578,19 @@ for more information about installing and using the source code.
 ## Insights API
 
 Contains components for Process Services analytics and diagrams.
-See the library's
-[README file](../lib/insights/README.md)
-for more information about installing and using the source code.
+See the library [README](../lib/insights/README.md) for more details.
 
 <!--insights start-->
 
 ### Components
 
-| Name | Description | Source link |
-| ---- | ----------- | ----------- |
-| [Analytics Generator Component](insights/components/analytics-generator.component.md) | Generates and shows charts | [Source](../lib/insights/src/lib/analytics-process/components/analytics-generator.component.ts) |
-| [APS Analytics List Component](insights/components/analytics-report-list.component.md) | Shows a list of all available reports | [Source](../lib/insights/src/lib/analytics-process/components/analytics-report-list.component.ts) |
-| [APS Analytics Component](insights/components/analytics.component.md) | Shows the charts related to the reportId passed as input | [Source](../lib/insights/src/lib/analytics-process/components/analytics.component.ts) |
-| [Diagram Component](insights/components/diagram.component.md) | Displays process diagrams. | [Source](../lib/insights/src/lib/diagram/components/diagram.component.ts) |
-| [Widget component](insights/components/widget.component.md) | Base class for standard and custom widget classes. | [Source](../lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts) |
+| Name                                                                                   | Description                                              |
+|----------------------------------------------------------------------------------------|----------------------------------------------------------|
+| [Analytics Generator Component](insights/components/analytics-generator.component.md)  | Generates and shows charts                               |
+| [APS Analytics List Component](insights/components/analytics-report-list.component.md) | Shows a list of all available reports                    |
+| [APS Analytics Component](insights/components/analytics.component.md)                  | Shows the charts related to the reportId passed as input |
+| [Diagram Component](insights/components/diagram.component.md)                          | Displays process diagrams.                               |
+| [Widget component](core/services/widget.component.md)                                  | Base class for standard and custom widget classes.       |
 
 <!--insights end-->
 
diff --git a/docs/core/services/form-rendering.service.md b/docs/core/services/form-rendering.service.md
index ddae91dfb5..fc7fc9d739 100644
--- a/docs/core/services/form-rendering.service.md
+++ b/docs/core/services/form-rendering.service.md
@@ -7,7 +7,7 @@ Last reviewed: 2018-11-20
 
 # [Form Rendering service](../../../lib/core/src/lib/form/services/form-rendering.service.ts "Defined in form-rendering.service.ts")
 
-Maps a form field type string onto the corresponding form [widget component](../../insights/components/widget.component.md) type.
+Maps a form field type string onto the corresponding form [widget component](widget.component.md) type.
 
 ## Class members
 
diff --git a/docs/core/services/widget.component.md b/docs/core/services/widget.component.md
new file mode 100644
index 0000000000..998128aecd
--- /dev/null
+++ b/docs/core/services/widget.component.md
@@ -0,0 +1,42 @@
+# Widget Component
+
+Base class for all standard and custom form widgets. All widgets must extend this class.
+
+## Basic Usage
+
+```ts
+import { Component } from '@angular/core';
+import { WidgetComponent } from '@alfresco/adf-core';
+
+@Component({
+    selector: 'custom-editor',
+    template: `
+        <div style="color: red">Look, I'm a custom editor!</div>
+    `
+})
+export class CustomEditorComponent extends WidgetComponent {}
+```
+
+## Class members
+
+### Properties
+
+| Name  | Type  | Default value | Description |
+|-------|-------|---------------|-------------|
+| field | `any` |               | field.      |
+
+### Events
+
+| Name         | Type                | Description   |
+|--------------|---------------------|---------------|
+| fieldChanged | `EventEmitter<any>` | fieldChanged. |
+
+## Details
+
+The `WidgetComponent` is the base class for all standard and custom form widgets.
+See the [Form Extensibility and Customisation](../../user-guide/extensibility.md) page for full details about
+implementing custom widgets.
+
+## See also
+
+-   [Extensibility](../../user-guide/extensibility.md)
diff --git a/docs/docassets/images/analytics-without-parameters.png b/docs/docassets/images/analytics-without-parameters.png
deleted file mode 100644
index c24dac837407ce4465a501d12e283287353dc254..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15509
zcma*OWl)=6^e&1NC{EGhE$%^z7bwMwdnp>+-6crTmf#j#i?p~yf#B}$Zp9%K33}6W
z{^vJyKis)zGHWvLexJRv_S&*+=ewGU94;0G77`K?uKXuy4J0IF4+On^iGpas4=N5o
zLc$@ok&;rAmy&v;=IUf=V{d_k^yzyt1VbxvkhFiFoi#L+^jlEUgx}elHpOH-fscf5
zk_b>Fdt<oRnmpAzBP)Vgnn*v8lDujG2epY4sO##IVSiEcNqjM}4;4FW6}EytxbCls
zKBqbDiSi*0EZ4pW=Fmb8vJZfAvrR;##ijNzTp_*44MHFJ$^*_~K97mQL3{oZ?j+^(
z#qrBGx5wJ`K+Z@iM;b~b20~XX=GZJ;xDZm4i2j=qjGzhR6JIwNnrQ%ruI@`Tln)GG
zVdWtTQ<eCd`W|McA+j1;By%<}qY~-|mCPL74wVp}ofmQCa4H&FnBxG=u{$Y-tDyPi
z@iEl^OlzQzb$wU<J~oq;NLaV54l^Z2Mq?nL^}Qsi-P*G-^>d54)%U*piLm5!E}Tfh
zSn@G_ZA+DJsd=71(sBrCkaaO(j5KmvfW7;J{M-eeXJpT8Kqg-Y(z%7(mw>l%n+Ewf
z>Xv0Uua|2=6TbY34ZnninDq(Cq!RI`&~k3<!R2DzL<EK0IrbF-KHmzRDea=YkP2tV
z6*EeuAp*>PZy-6}>UujYc{(s0g-3oFXpnkJDSk>%Ec2cJNGbrrhVw1q&iL1&&-Qi~
z$0EmfbnO8n_yLdP)EADg84v=Iis<gEONecUkU_w4swGYZS58Uwf~n-^om7d2#0-+x
zj9FI4pNu5`dfV%W8yHXdbYz=X70D`GnRN$047~m+K!uUlL3WGGM9`Uz;`#x7qaObq
zPDkKW3Q`Bk$2jz+4$~1{npXgu&2FoAEH45-ZUwh~7owGCCnNrF55X+`YlE!8SdNzP
zP3auRRiGlqZ^O}>1?1al3l`nx+ICTbUl@IVl9n(f;0dzk%?rWRw(4Yi(b~QYl_AW2
zC4#B?vhn3=sNb6x4X&H1y;yJ}dN8Ugqi)~R_#O#npxW3AlU&L^w5Vt<G})Wj`;Bn5
zdeqa97O6)y(Xo!%uV{|=a$C`UUDd)Lj&87Ih}fW`yRnboulyzYcv>=lW_G7WCSg88
ziHsyHFCHCZgw6$b<W%h$J#kvTW%Y8IjebEjHnpmfJ*Mzf7$IWc{Atb@bwkQHnSyzF
z-sfLtS9V`6@m%gTmx_|N;~xS#T>)K$pO3y8A%aa!U8b#_gGVgTFBenxl=ST=nUQ+d
zy$<%bIi+B$vafZZi>~@e&a7Yi>YM~pXpoq5kU!8qSx)<*HqMJ6sd!Y$bfNsjC6jm=
zgtD_ariQBb0snP3&mxN426}6dL@E~D2b@nYYB$P?L+nd@@xCCX1e>a1&3zrsr8-9O
zlOz$si3vuZz!?k1-eCKK)YyUAByiWE$o(?B^JVZGhS2bdSNzhHJRe2~^n1uJK0L&$
zF<{9{C&a%Cjr|sfHo*IXcrhr6-Y?E}M`wq@m9#m^o$e-%<_E1$2<RhEQY2eJddXYc
zFp+{a>z5QEW75+T26Y66F%^=H`N@CY*3pQ8jbxniR{tovzeG*t=<9Ij#vUQR?4_$>
z;2<F~1y>Q4;gt5+Rx{mJI2o@lAYH#=-g3|UuHSJ*9@@WU|DFsOTG=;z!PZLS)a|q(
zcKhZj`2)Q*!N|*sP~(p%Z=<;*)Rb80kC`*yWJZYoise>fAS9Qj&nH^R_}+uF1=_OR
z!ZW3=4qK2vX2gsC#K50GKA1%;X&Mic@BQKML+S_L4=xSb1619VGUWzFjJU)Bkn5}F
zC{P?IeMKffg(hA-jwj9~`Fq^vz(}Gld#!4b{N8V+oROC@@ut!)#XV}gEQ+l9to2Ek
zNfAknH8nNAYq)Br&3$SV%^Qbk;@cRO>F?uzN%I%pX;`Vr%<#{k&X6989qLm=TYkFC
zXPkuD*jdlkxz+X8;k&vED>fSo$E=t(V>SCWb2aP0cwy+UHCXKq_U`ab>>v<As}`ru
zt#z(#%*vrrq9*jyS<d8Be1&zv>%7$RCcTT?EsI_<1qMbb#z4lHDc8a_h5aPogV%<!
zr;1k7kjb0L@#*`d??bXfokQe9g+md^%gGqpNm|F+TUvX+v`R8H4lIpvq-442!PO})
zNiG=|HVJzSXYwoZrA)Ibhv|QfJZgSH*mUZp>s78&4w?Cj(%bclmVE2c>*Wrce*e6C
zcO`r%Iy+v9uk<<lSRhTT*&H@Gc*C!Ts~OD_4X5zqudu<fv9&?B#d_ChlRZr}VQTGT
zV`1$uB~m_HsXTu@v1j8nC0_7|p&52CI%4W*(ZGY@@y<QiU0TG?eaS=CJ=)#O1MGg}
zPJ5vKH}gv4O5mXW5ckmTDB=JxQ90S}^u}z%KF+bKcO$>kPl~?VyPG5&HyjY96&)On
z6>S?uLoppC7VQ?z9_^G)pq#19tL&NTo|<2TS9DNBQZzrR#wW*@y@*$<;uhQt7G7_i
zdWb=r?OM+7$nVSVPcR|3)iqx<h7T#Mvkls|&B~Nk&f(4J&fS;MF0d>r)w9;v)cBa$
z*$y|9SGC#5)nZra+s|9yEUk@X+qF+WRiLiE9We=$D(xndW0uP^D>rLTglg7Idlrk1
z4UNT*m1Y5&2@F66q%H4SK<*yyqh4Z%caV%Q{i0>bMl#K)BIn}cjH#oFqcPX@?X{E6
zzn`ubP9{%&ZV$rB{(`m&_j@mv&aPILdqlhM<8Ih#?P&AHF>`L96;Nz{{Ri&$5AB5Q
zo`H<dU!Gl``;mVm+aU8JhkV8RdWotZ{8I9*<Wb1!3p@1MkkSy0Vi9FSp?c0x3PNfP
z8W_XOJFVAC#Npw}xXZ7vxmVs~(ykF8(*@HD$i9z!7daCB;6UM`w^J8sGoEjsPbzH~
zRU|haBmP>9YMZE5U{A8lrHrM4Uq#$e*1%)s-n;!4_hJ?EGbT1s1=BBP7$IfiCwUk7
z`^4~~d)4*#ZBF6cQCsAVRurR|qL(m^D_z}MmC=-((R6=~v^c695I3BUJy?5?LIG1{
zF`IYb+QP}CeaG8Hz~!#_bOm>1|L5sXN)6zT=3)n>Bh?!vfFkV%95&=r$rsG)Y0)|!
zHSj)8IGrR%8=^d>GA2H#vt<QacCB;W+jGYndC?nuYB0Yt+8okFu=(_!!O7Cd49ffd
z(13^>96)$Q>`kmi3`!*u++Q&0ZGLE;-%A_Q=Rfl?`LGGNynr9W%dy=_ISeOiC;T?E
zWd`z-WXi!;qyXSbBZIU2tj5sPNMSpfE|~+1ZzD&5?zHRZu42l~6Y;I4a<xHq)$JHo
zBT38WEp{LFWu3+HrG`U0%;Ft|pB^^42m7<fvpN9{aG#^`0y~ZQx=Ig&7B^}a>cG{L
ztL&pv0TxG=m5CM}d$UKTy`lu=GlB6nQ1b}Xex7uQbTZ|%JWrpp@xV#H@x;x?7haB)
z6Z!juVp+!_usx)<z^-_HY{@XaMZwE|X>{4&OLZgrPN93Krmd$9%`fK!yzF&Bwh#Pu
zQ+ftiecnZS{@|sprLAAD>2W0)9b#uUL7}evoJSrZf_G2tSXN)Ms@Y${E`}2GE#~3E
z4p!M18&2gQwg)P^ZtA=^VgAFca2S8*a}|PnfV&#~JvxiIINRRA)lTFhW7i2I-6Ne{
z<!7dzU%IO={9uwV%qm>(1t+T2^w@R7n4`Zl*XGJ-gN?(<zSJ1-H-Yo!ip&|<imMrD
z3qAIQ?~v@X<LXdX&H>$;Jh!|e)>Z378|Hytzt<KvrzU5F3oqRvR`ZLL0fJmBI8dLf
z&$s1c%hio%YiTaU_gwp@U_ad(qjf-&1k89)s;fIe4l8zu#_oN^17xuM@Hcgf>ecO)
zfgj=HjwGPvW_P-^IOje^qCkw@ui~-wF6;!n_Z0LLBT@7`d82XeYMy(m+AGo6&KuzI
z0H|!Qz-7X@ZX<=#_}AW*FD;{<9k18p$>536jM32e0AZ3RQnPaVv1AgxfxhCr`+NtN
za{wk_Iy4;QFO)7O!e)%An^1s+&Yqr*)scaUG(otzh`hGV;yQH?`SE5-v>>!YqWW(P
z6Kf0-)j7%=PfVn|^Qao4&!_`hx9s8p{ocqkV~+VT$*o$V`Zio_t-S=|Q8Ccj7eO;G
zI><Kv{27RuoCMtGF8CqU?I@i2Z+#54dRYBzdici=Er8=09W-aJ^vm+yzrX?0`ID|2
z5)vunKSGw*U^quKVz|pI%V2C`lM<l4(*)mYBbv}n73HLnp8tJv+lmvBkhoFgr6skz
zmrk-Uyh&!~p3ZLC$Iam4XY~djeB~r%euu^6zA<RYCywWO^Rk5HB})97<U!lZPq?8-
zZ{y<dF!P9fKZ+bM4<1-8J!kRBE1}SR9AZ7YkMicVIux%Bteso3JA1^Zmr>U`_(RKq
z5}7|h_P>b*7MA}XMS}8J{v$ddOXUBd|KR_+DQH?I@<>^Ucn#b0k{4`^2qr39^1(l<
zb1@`h*54V;F4@+n^!b!qZa;mpn};i8kVhKx<1Mpzq?P_PdTa4V;Yc9Q&)&HD3xXG$
zI(C;mjfndniPN8QwEpkJ#i8co?2A#C_?RbFY{m*l2Z85>msExKA9qddF*A4)7(C9_
z9@iRm^FE?ot_$WMSp0@KXq4;K2R<ZM7`5po6opRy@$bVbLt^Q@&FA$0Jd{Gn7?scR
z+=MR{gee78n`yh%D3Fcj-BXNNyFK7-4r20x6+UwG?q}|1ui+p@G1dV&oGl&C7SnH*
zB4PhLBc3D#oT^b;-DB^)<u#5D#dkO!KAKMYYF9}3&ZMs8B_1C1QlQ22M9(>62U{lj
zJ<xJ2la-j{kaFu)iBn-GBuR;Aiz5tfT1!DPn9CAIx~R7Gr2gSUM^@uvp&}$0_n#Jg
zp8o_s?FT*q)lHP!e6JL~1Agij3GS0L0{iSq)(y+7heg53n;8mg0nJAa*T;*ApuCcr
z>sW>HfXUt0>(9Gf7mzWyoydrWz>B33M(V)k(!iN!H!H-{D$Gj|f)&8+12qN|Aju8S
zipB|-xtu<)b)(#*HwIYua$akD`c7?y{%?RRze2+(W?OwO1D`H)Vo7GVV<qs`H(grP
zE*w{y)NA(Zb)!P&6}@(`qsS@;2*>_Rk5tRi`0R`=heCe*ukJg^2?;g6SBJ@g`3S`w
zFV^-Ob0^*U@YP0Z-b6ZBu~aH+!eP7Um<OItW7-b@J^K_waWY=7?X9iP<$4~m%YUz~
z{DbHd0mQqxC~{o=8O0|=Wu)5xxln56vRh+b;c3n|0I^K`|ByOD+y4<UV&eWI8K@fZ
zfAoLg|Gxi&|Lgi6{9o7q;QzY*-*wSO0aZVISNL<wBu|+2J4lU~De*i0P{^QdeGS1%
zIv@lCmj(rwh8J}EZL>QZxB8jidSk;r@x-Wp%vO{50I+GQ(lV7RX_uHUWOMK`|6Sl#
z)rKO^9>$xfP8Rma#pp?M-n9FhyNw2UOMW*Xl%v`X4%5yu3T*BU^yAXMV}CMe^_Gtr
zgzYa>q5GAethhxnU<GzUW=i^LO1E1<)p`yX4HZqqi4RDmQ7p^iwyV5sQttX)9jE%$
z-bTMAjsG!CJ?_f52FHrxzm`xWwqHsQ=Cl{cc=Ph}5p7fT_n~kbRFQzE5IRLP{jCsV
zNJGn_Jrn~76C4n2YM#)i0hX-maUAA7Ict>N5>c-EpbFf}my^0}CNG^X6j-kc>^d2|
z$huZ!aSaLFqfO%sG^j27L(cixuJgoB@LNX3;{g49?QWO8-bsed{*=Op``l#RHU5l9
zedMM1QJMCtwTqSoe2c;5+i_gxB<E_>UlQTX*2tu~i8_ucAD0&@g)1}FrM;F{e~^F=
zV%7^M&aBy>1%<aRe=<Y_fpyRFHA9dmi4kJ^K%o)R0+a4vg=g*41%@rxv^UgE`)YA?
zc~7bR(KJt<{hx8u>%wX4O^ajiQq2oTuWzd_DXEw11GoEg_H#t4?1ol=GVeRRwy`%{
zM2y!<SW9o54CmX9GN_llsKhO|%6HsFIeO~B?>$c?_#OXFG&rm^#V5RdIdwp=zKQBv
zZ#Q3I*GN-K1{j{)pJkD+vVZW{^jrPi;IQ0qll#hKKYylp(mtl$)AM*jasjH@=tau8
z&bIt0)LC|K@l;mf<k8s%n!3Sm-%up29W>@fw4S!Cu4(98AMX2b)GbVNeA~*$?2eH(
zkU~>X{w)q0-t5Pt_I_S%T&_Rjc3wygUG`~oyZU%r6>v!6c?#R}O0+uUm`X#<2*)GW
zYH{6F#Q?#5&cw+r$#wP`ovd=k#U0n7kIeq)w{Ti&9@oF4O$?>V3r*fbq-Sx$5~|kg
zP{ZOzUk<~@*%X~orM=_21ETh`6{vqij8jw^H|JX!PDV+MhwHOH_mlT0OAU`rH)Qu9
zI!-nVrDpQU?RN4-8nXF==*@yY>3*wKNm4M^_1%xN{w-;0Q7F&d@=qRln=fb0j=Mi{
z_K7Qo6fISOb+&xsEWtjz4~wg!Ub3%nsUIIlZ>gNSZF!U^`1VpO*Q>rhig+Hs^BB5i
z<=Z1=+6pGugjB4CZTky?I_il<S<4!ZidCa1mT2c!9^212fwibyo(6wsc?#s#zqOU0
z6obVi%m=E7CT%DvFBoEIV7<+^_H!C!J78@Bi0W(YV#jU^J5MI&-tipX>qRWp$KR_u
z{&=pq!|g}&$BC1^{wfVz7}~$jGN>sUt@o)3TrOdYn>kk{2K9OoH-7AqATQ__dvSfT
z`2eVIsesdqFgckl>_2OJvwfpR!(+4CywJnvfMmAhaNHbXD#G-XEVn7Ed(CmJ<D0Dh
z^3We4%L4oXP{~S3&5I#vk1U=5>3Uz>{qptf%+xCDA^a?Ha`s_UTT}NeJ$~^&eCK*f
z51m=1lv<^KXM3Wna2q(YwM(De+Rud3QwiE#MyKel3NGf_2<nP$XZ6?{X+Eh$t+%+0
z-Z^CVDqvWy%5moCo|1gUqNVjO3K&hVH?pnn7kqQA;N9532?Q13uT|x<mXEb(-&uDo
zWVm4NcT0&M@hNE~tz;V1vK9`R#bzlCC@YTl_`z*^CJ|QDpU=kfqsG?U)v)b+nR=<?
z<3LG9K11y3YPIXGmBg+4#OOkggWbN4_nm}XzJ^-=h%osmuw=Hx145q{FPP5-nrmKd
z^|*J@M(9u6uo|`lXHOs`D)Q&6LztOjz-of|=62C|`y9Nzc-*kXb9YK7<bG|4i$-_+
zTZ?+*$KJ732~m%|!$Qrst0HYr8pEE=vYJD}?abL_?r_fr+1LImeV6>~r$Qi_967w(
zk|*$}C$$iv|E|(mqo~-uePSII(%4FYN>*e&Tj1m4PSr-iS5X0R&7UeD%NT#BL`jH2
zX;<P}ygavZcIkt+bnwv7kLk|jr$?>zuSEIVM1mCtT8)<V(JlVb2lBW_vxaS#-#pip
z!Au*2aOXen>UGFr>f-F|b4Ndf%H5P#!GOD_Z^ciBn*)nqMq4qYEu*QYj%T@i+d54X
z=bqnJnXR9_3X~LU_wT&_-e1~hZflf0Xe;3EQ}1~1bv6o-nJv{3^Aa;$MSEs61a19%
zzRd)8cfZRA#xfb+cRF|2wr+_BTwZzIsSLP@7)u-AdBdKcs0pp&IMeF0eNB_Ceq7J>
z1}^%BC?^F_3;t~;rB#STQGJ2eGe*Kk$?wB2RSbkpH$n8FrhVYG)3a19%@xunGnHNi
zWev`S1&tB*R!X4Ce2LcETZ4ShQRFrKBZ(Ug*T^w%(ZjSz?Z8Wk$^p}_>%~wwiBy&x
zZCiR+vaC!^oj>%hiF{eQ^VjMCPvz*W-R$tTVkMqazyrUdZmqIx;GJcT)Bfh&jnfyS
zO39EvJvb*(;hC8RAv}W2Ee@BEK2;#L1nP2b&z-0B?XGI6OaCaF_LJkBs|+q1*^TIN
zMMPD=TBC<;<G@5ly#|>>^XM;~TQ~%D!D3>$yyb7!kGq)9%N5Prw)LlZpY06|u8N=i
zZ>3S*QxF%6GZuNCEZxV1ffJhjvP5zM_?17O=svU#`JGVuUq8NAUsd?>E^oZl$^Yy5
zGcAZGE&LkpH1CD3JG=dbQQqjTdm?4k*QEbDy*Q|L|I;j&fWG)4Y$;Wq&vveiy0Uh`
zJ|%$K=*eVE;eofTkZS-EvaB;_x6&2*ISyoay=wS#3|qL_R}_fujs$!`X<K#%NCXCA
zj3<5}VAmBhvp=HASxW?9m%g9ZRoi*^Rr1&Rw(|Q?$c4%6{%XI{lXBI(RMVsK(ffKv
z?j<djzta`E<!E+~gevxae<c9JGO<w-5;ppmg-qoV_jUWso*oAi4SMBwtTt(w^D6DL
zzhshq0XWp+wx#<fD@=|Y^o*NXg3H<!pSQut^o=Lyt+j(?uYtebKe`ujo<+q=ihCTj
z$GM9VMci5J-7@FgwhR7-O1NFGl-$0{n6+<b^``+kFaExb)V9rR4=CLjxch-U{<$=H
z9CA%hcARW)*+TnvjN<;F1*l9W?elc|1Za@S;+X0w9aiwGmb}8tTAOpM+Aq!#@P`^f
zvJ2GQCH-_}%g#rJE4@;MEc8C@SZF<UiEc4JJ*?tAG9mKG%TW&b?=3duPW%ERQa^3v
zIn>+EHN~fz464{^RUW2`1t3W#jn^oQe}3F3F!I^IyY0pzVdGf#R7=r@a;%;v>)a@(
zZ2Qe=SL#V{@ryFkS4&2x>*J%BOs0XLL7uC6f=+h|N2)NqnOeID2<^{R^!ZFmTKJ6S
zc;BwV-0`h#J>?$7)%fhs?On3$c=uArEWM{!I=V83iGa0b9e(ehXmrG3w>3wLcYxhP
z@a67#{?E#<Of^~r2bpmH=eg%cc4+H)cItXp^!{<V>@#eEDy1KiBd~uVQ`cs&9Vm#_
zN4y1ID3U(`HoWM6Q3fjW9X9RbdwR&V2vet7_Ru9~MK}YqryrAk7`ID3`UO0I9`!iI
zA7$$V12+2rq4%*=GxyED9_x3xmF3nJ&_uvNN-JMqHcp9Q`>WghUVi(#GN6^J?P5Nh
zPgQ)A)}`<@uuQi)`PYn)8-LNpfX#e2yH2HH2jrETr@R2T&ACi5faa0rmX6g8dIC3X
zeATP*$vy2S?k|b9`+>rwE`{Nl5g{4U0R6`NX}ikLKX2>$f1~!^PTj1=gfNd(lbp*W
z6yw}(L`!a86lCxc9?e&@`9?UIPkdeSI9yj6>PgOAmpFTVn&#*?Wi?1mTNF-zgdGV~
zqAb&~!z~|0>IHq!!f99aOI03wv=YTcGWy9%97@Uh0eU&<>3X+n*B_wub{R#}I>&~B
z7o}@v`yGdA!mWPK7uZ}`=M~zGg_6e04W)fv+bR!d?b+g>x4ro?%SuJ$>v%Scdz@{O
zSFv+Gf6rzD-`@sbHOud32jtsE@>g!9c^pJjiqCJh`Q6DalWJFf7Gsk@N(*4zI<U$X
zqju9z0iUBa+}#`Mwef9aJjjx}?b$pt(*z!B{MLR~s1>kvQJy#HBaU0<Z}6K1KtA6h
zTPj%iz_<0%GQ_ALyEk*b%H!l=Fg^LnO<*ure9dy!w_icZV5cBf8|t8anh0pbx<K0*
zvV%`qH9B1m2_~kb9)o^f4HO8vC&+Ue9Teyss^}j?r`C~LuQpn`M2lRVjgiGxc9I$I
z-tc2nzJE4#wRD7rgm|Q^P#GTW0YHLYGGF;3a+_EsD9VM!Z+nZb{Tip4QL!TIH)+eW
z#qOGAqxo>>KvWr&+CHwQecZ&j59wEY;esHyjuG`o-&h0V{WAF+m(n}FXPAh8ZSJgU
zU8<UG@Rv-0GiWd7c(wU#zzL(B&%V$1gq7`>_Uf_8uQB$X)I0a^Ea4dr!7LE*JX-tH
z?7N1%xxg#RwYBI=T^xNX>T{spX=_R1p$uJMuy~4<VxKE(cN~tHh>J_cE`ATU->vrx
zIj-;abspXl!Cgj+2!9clCC5lTb(EFjAnJEdg)4F@nClhWhfC@Czz&^39D^PZe9$Ax
zLoAhVsmC_n>YALn9NQ2Xi}892o9fek!~yoJ)2kJ@e!*{&@TiRMdXc_DK09Qyw(r(j
zyZJcYxpya^IkeysTd*=d>4mT*-{H}Cz30Ad$~nWQzZZ0zr_^cnU(DRx4iMiXBY5rn
zQ2InW6OiX$q5K`|l1A8aOTB$t5;*{ff2!Lq&#XUbzkR<6wpIu%bg3;Dy$KHwJzZ$6
zv#eJr^`fdhV{dd+JLm@rz-j)f4A)ENh!|}y{;CZyq^6>3wHOW7yRw`AWq3Azi}L*P
zE1jW&J$V1H?ePgI$LvY6|1pq?f5EJiNo!~wqFj3GKH6J47Zw_NyncC)u_|(WBf%)&
z5Re7bZ?)BQb{=?J*~UpROZn8jVwwluStyOBn7OMu+bDSY`Xq<%b@X=$eDZ8J<g_WU
zTh#WYSaufO!?Xsg%A8{Q{?T{54c1cZW&P=VZ?;{a#PF&sdf5vm6Q*iuuu3sYF%$5X
zQ?OkaxUJYa^sS_-Tf0<?>VEsUBbQ)Z3PbMtEKDta6dE{G7#ApJ*ep8=nW}N1@cmsM
z@KY~jU(;Q<EQhO$?EUUK&e7HCG0-8b%%!y_K%e*dN=Hw?W@;x{rzKm+uQxqMJ3cLa
zp-B0NDH=${Z<h6_%rZhL_)F%}QaQc#{o%bZ^E?2a`|PZnz(GELIDcl`1P-jrRfv#W
z(<f_va7`>iWY5L_VATGwhVZy3wGUq6zZ6jHR1{@8G@oy9NPp)rb(lPFS+Vkq9Q!(P
z=!i_kw~&#m(kA1Yx(%di#}p~P+sAx%WxYg<;ds3mwD}YL>ZkIzHsOuw(=Q>>636`9
znw4;hMvT8txjzlX)~H_-<rtK?ceI$C2|S%F=$0;Kx*vT6_W>+OZ{>=+^&0)?h54~7
zPsQx4TCZ(Oi)>lz7n?4t7?$4ATRb<AjAjTr%~YA#r=)AUKlM}#F15vATd)7LyG_#^
z)r0zO`f_N57RTJ#Z>3A+Yl92)=Q-2g?-T>;s(z0q+*`C~Ut`-}o1A@}&(}QRq1f!1
zTt%eMy3VHRX6^X)0DL8+sf<12Et>c9)iz+#asu+?WYH|_#L+nZ+uB&?pQGvgw6NJ5
zS-VXK9D4Md13u%VpC!Z1rq|N9{zBSEcv)UFcp94C(r)c@<$}kToQRrM^znMjc-$*A
z8vfg<Jed&eLCf-YgcZQ!$wH55rbB$bt(NaL2X`pn@ckQ48u<iw+n1Hxm;>%jDgl4d
zKdb6&g4Kt=|1Ln5vD2J9y3)h@5`X=2#=I@hn5@3DD;Hg)juU$c5V@Q8_$tun$_=S2
zz&WJZdMgD!hQn7&KA$W8L#CZ~(W~c`k_<rg%ByP5n8VZjo`mAb)gpfR-E%xp=Z8LN
zdLztBU5v2)-QQk{yz@n*vobZT{I&@gR_%s$uj67si_F<>3_FKVlILj``$;F$v>5CN
zhHu@fNI6aY-Lvn(jD+3%a`m^xYI95TC$<9ld&4N%ZECo8im7l);I*6D*bszQGy4&C
zxc^CK6aRzyj^cM%uRZQcV*@+_s7UBnq(%(a*!sr0WAHzztN*(k)c;4?Y6kc+L}1B$
z@Yeui)rtd`gB4kkpc;cdCPzLly(P?t9=M|TSzWC)IJy3w)>C(vb#Z@r&YX?G3XqHW
zwOLb&#xu=d1ITTd^I6>M@xiN|lU4X}TpB9G0o)16>-znO-~7$)TE3C5&dfCF?D76)
zJWJFIk(9i@K4HhrI69nd84vbGJlx*iVw4(_aTyGZj&efR*q(@!F5Rk5-$LM<zKntP
zdzqP;y<jpqIXS!i)jAtZX=&+A_C=__Xi=q@*J&n${Lx%_Z7gaIGsvjfb@y>y$JN!<
z+<d1kg0%n2exa&!FLI9=zC{O$N7zBt!y1cWHLD8476FH)I>h#1Vq%h&kueDhoY_2@
zue5U-29p6$h(5Pei3<pP&T0^4#k^t@6QjmJaE@$%crHXm;egOU8{IpDiA02ih$3|r
zdOyZw)e~%YSk&uOTAQ_lU<{1w{34T>pXl~O`R8J7;XrXNF1-CVk0VkpdL|}xVDxJq
z6gie_CJZ1G280{vF0y*Q*&X=&=w<Ns(DV7}F_uc$b-NGOz{=Cp)6#M;Q`pTpRw@Fo
zH^<1xs7cx2WU<z&ns7OaQV>tn6c?-9xC?zn91rZ*gTXDsE=xrv_~+;dyy)s;2jMcD
z;!q&wxYjl_%Q#6eWKmV$nfSW{PCU0jWLHbBy`f|rUxNB?F2^M>tOFh{`Vm>?r}J+7
zk~RGX`%WE+$G_8?-4XlaIruD~`;*2Jz5=<}wcj2`Izaz0-!LaKPQB2>JY|Vs+<^NN
zK{eyEwKibjV|{EaKHfJSu|u{Z%ai5Cv!3rnR%4mM9*0^dyg`IiR#%6!+y%~_9j7B{
zd_sT*-C9fBm=J}9Qk}|ZO2MtmpPI$txRiSb2fFsBOH<p}Tv90(E0blqwQ4V=!f_;B
z^2}psC7{lmT|~?(8@?UiF1Gv47+=?!^~Zcg#n@6&4{G9n_?Kc&;!~j94dH#kB1xLW
z_D0ll<TdfZ--Bt%1qAY+0*8`Vh3HktC@3Nw_C_->S}-e-kH5i?YX`_+y=lh~?b6TX
zz;+tqjw3Qv0VE!?KAhJNw?s#qVkUei{$N{Fja&s|fL4fnBGbuIJvQKr7PmdR$|AEN
zZ|>(@3j4KIa?$+Hxf+}Gu|t^Oa!K=Owk&9fiQP9kkVl6*8rMOWxN9T80661Vut+#X
z*l#i08J03CQO~lR9NIDP_C{;T;JW_}^>LBtW5Lu0HkZwEg99=$@-31<FrZ2I94)Ft
zK`X!*Z~ptw4d*ZxtO-)Ppw}Q#lde!k#gvV?bL|{)e`B9b(jbOtz<DduE2Ni&p(q$N
z$Q(%$=g92nDe8K9OOYh(&i5=*K_qBlN615i|7+A_p&!qYJ!oP9G!|MRXYJ24&-oO&
zwwvEEtc@>G8NEHW^CbN5-qE3zNR;eUnFgVbZgnWWjupRk{WI~F3d;k%;>97RExj$p
z+&14KNlECh;8k@)erT@ITbxkbI{pP5$X9%B=c=>8L}v9H=NDy@x4{(P?Id!bhNdP4
zJ`D~4^TP|QYV;$QSPGz;V;CHTE(q@nEe#D`Lf76@2d=59B5phj`)x)px4j4meAOfx
zH^074OB^oxoiBLan21ARG*VKye<_R;F`7cH+kEc`L_LNexhK(3E$jSmL6=#&?F?O$
z@HhI7y@*((3>omR4H>KuAfHAR?w^n$3D=!ZWpY$<*sA$lo9y=Jr5HbgwnIj%kk=Nx
z+Y0tJh`-eaeb&Q4;|SpoWeM*iyOr+16{iyOC1$Um{`z@Ir=;7M4lm5sfZ}4+C+s%3
z1ZxCCNUlkjIHs{tkRZseI~ld81b$AZzHDN?$zIl3pZB!Aw#gYx(ZssIyTN)Y#=)VK
zAxwmhJw$X(9Z50r(Wc`~u<na)+>VbXT|?azNG#mk1o~T53$FuB#aOmCHzlEQfWi*4
z4CO(7Hr;0Y_JJ^pH>ar_v-TrSb<msrU?0nR{xJO}Y*k6SF`Z57dMT3Ziw0vev%EAT
za8|{}fLE6MXW~NQf+X7{T330&L5(~tgWE2wisJKVyJc&;4zdOQuz9kz#@yMT8>Aa)
zU0Thx-q;YU>dHtZBBgi$Ba77F_b^S0un_-F@clYXw#_D!!+!<Af5pN7DG2H$QOcIF
z!ot{0Nb0)i+@z}(8O$FC67r4V*e2MozO&abd<&k<<|?U&)qENx8!AU5co~c<Mi_)i
zo*GAz!JscAJjx<dxQwzra$i9{pFL{m#pR_gJ=S%8OrH0fBWilfPh$n7wsJ`CC`#vx
zCf`r@Bav*k<h3xXA&)+>q?WXNyv0>&O_ce2%a}MolD@YHH+!6jJw{}iF0BrqLqOvQ
z<@gaqW{*QCO^olIpKY9@LY(6-|BDX7GA=aT1`)|uu`&<wkXF)RXsZP-sj5jEq-r;=
zs$1tT4gsp_u;3O+t@bvAVOUQ`%2yk4w@A+ut0wM5NuFPUY`SbsFlw02E%1Hzm8LPN
zwd=F)LoeL*3~fTUP3KEBWzVbFa79S|?hJ=9I^^xQ{1pFTU<4>HlZ5>bZ@~g}4oB@D
zkJWd=+;+ATQdfj`exPPim-jMf#==}O)%O<MMSniT1CsbK)$vF5gmY{S{kXiI2JJ@|
zeQu4u;SWPlhB^|Lb~sNjAanrsd={d22;nw9KF&l1_ZUnH_Pyhj#<<zvOw)jYSX+_a
zm0r_Xa;z(8l%aeGLFc$rMu3gYCGDciC^$NXX5JVMnieA5j+u)1kK^nDl2-@P@kwui
zC9Wx>G)-Y4UmJFOm}`oYD0GK{0qI9|n?X$yYAT;5^Z9-t%B0C58*;hmMdZC9f>DX6
zij$VCnowen(rc{j{@qZm*_8Mmzt}U?c!1V-Un$$`^qTv~YWpe;JP@n-*g)enf9!V&
zF$9zRbBcKlvl~OfF`U_C9)qE;0C<w5Vq#`WA=4N!bygxBu!NAHi$IT8(Y(gO_mgm3
z;d^*KC;QFDjDkRskCt&K4`wPTPl0zP!6wBrjC63$3jp0&=7lvM>HUG=qr*Rnl`YaO
zYw9(~kq2<;)Cge#XOhzVyUyfxe!T0==ID+H1?AC5>rn~nF^}L4U%#A+2gsz%`W1dt
z<Tm5xdZAx6NOpLJIZ68W#lvHb$uG0G-c3YNSs#y8mXBow-5wV98<_L5e4L!g#YH+M
zg1)o&6+C~`kc_6ch!OE_U5#t%p*YEX{w>)awg`{O1BN??aSTFvk3Wwevy-zRxG|Ou
zLL$IAi%ZEUi?HK2o~&<xC0hxTY7Feds{1M)T1|+zRb@8`W{D(p;h?<87Y636-3)nI
z115u8RG{kOO?h=5Jv<s(PFPs*E*<kuq-L-?9v<2L23TNB>Ri{dKMqi5FjJIY%Q|P%
zse(jSya^V=P=$$M_8324iCgY~m%C(|GaWBqy5cnn5drID3q#&Y<G{C|&do`dS%>eP
zU3j4jWG-heMSXFA)0Ys<K~ntUU@#v{hI+YEH1#tAYUJFUV&W#!B*X}OCpRb>x@iRK
z<qVz6f1SlWi@CW~2Ab4M0(C7|D?^*a4HB;C!f(A~n}m3Pb)<zvWU0P#(55nJNp4Ku
zJ#SBqCLu)WZl-0J=bsG0HL48xLIL3w?3cYzmbAqhy34N&Km*nyyScvHOJ~cbCUl@y
zkNMH!bUMg|yr~3N7TIMl2c;%}2}otK=n*w4zXL7}HI!DjN+}W+)-{L(SgX_&U%SqT
z!g>e0xdy1}g}s#K(ct-XmhJAGq#?cMuNZ-u%X~|ogBujiF09anjKm}=R8*cFa4nXz
zaJ+Tr&cqHl<XUBk>;vFC$VFv*z_K<H7Ns`-6?}9d^W}s!EXzt3A-K5)bL8hFeyb~*
z&K<BB;HZtb?K^eZAej~69kTHZ3t0%*4u)nlbxr@yWPq$VUZ8)VOid>QTndxPn!X$2
zY$d$?lK>c-v<%fUWIlO&5(Db2xd@^gJ~mW_3jN*~JSvCP8Iy&A*)P$^z2sC_lp@{&
zsSLbjA+mekaR8M@`}3~9_EdW@AQuDq1b2ExXZi7gD|n4(y8w+4tr@J>g&x2@w)30K
zz#tQF9sh3khr8w91OOg$NM{h-uwcr8YeIg>A0FIbD~k{hgP8DeLf28<y8*kqm-?2j
zY@uK$Ux%%L8=(n)%EAnW*f-Sht-nkoG=b@ewr+mPM_;!7`pqpSkh&kvmxVY)*pP5R
zm_x6GITH`yO28)a&6etp1H_oM4j9cxbK#SDZDOZr`;laHxEsL=AHs?W#^OagdZTX<
z0)tr7#S#V}FtY5AQL86-WAT(1XzFXL0moX((4^Y)2l<*BA-afba4F(M7+Ca`^%;b~
zh_fXUl|9$sMuQMPX`eJZIcQR#`8;552WA5}9U$XC?A_o2764qsaqQKa6HTYCBMMpL
z_VALwEf>I$0aj=bS_cvO(bg1wu@wMX1fXYH(&4~0RL0^tXk+<X@C{aC0N0r43z5>$
zqzt#ZJ9{qp))2O={U@dEW0W05U2GGHI;CggR2gW~HJyx63JKFvJivlI>LYQyd6p8i
z36!6uL-6l+l)@%|98VWFL)><<L6aZ3Go?~MtfHGXL>3mEgZ8jq>N}C43s#)YIDiH7
zNUkNRfrFzBY*&@YCsr;$nL?I52ZZ1e47f%H7NN%jPG1EtZVtyFBv_P>FEry}iZzDy
zMvGu^zmS3^89ICU{8&cwT7>{!^Gut6)f|b)0kL}6q<K_`;bX!zTIn^?RS3wp7=c3!
zO&K-`Oc;j)WH*~&_tW149HOv7oX{eL`Ro@dpk~EyH)^j%MG^oOZ<Tnd)9hWkH!4Ig
zWfr_Ym=N*9HJGC1VAc9XIfG=4dY?~C0LTatZ}VANxF`q6yoR^5XX+dT)Dr=P;}G2a
zE5zAz^-*EE`g=Nv)zBt-`jnf51FqrzCe`0{#o_uR9S~u4+*HjI0jG1)oa;&*xm0C{
z;r+bq6-xxJWC0*%6Yc|SAD~J31e>V9fcM!5jW5$>H4l-S4MH^b!P-g8=!he$ACd?W
zQe%Q^9D=Ilcd+3f;{k<l>eLW+OWtvi%>Da79c%uXyx^|lA0N+GZ-4`kso>#0Y~P;j
znNGUZ1c2!VIV=qH7N`)AMpz=HkoSg_4e0I*3!_6I3BPb755uOL5x2|-=(5`LMC6u1
zD@lOPeMGQP=pJS>%U#nb+T$e_?C#c8BSpmdYcioiv%1DJ$1fr5!Vp$?ycD~V=TCtd
zDn7}Cd}f#N=J?vnsw@uhZw`moJvJXiM!Z|D65h`K=+i@ZKVkI@ik;HcI;lX!l12j>
z)C3~weIpIuH?|h<ah{dUpY_9p(1Du06A|JfRQFP;$%yL4K2n=sujZ=j4Ekfx@Q&6H
zZ1yY*E9AJXVd(Pcv-+UF@bxH_7q6f;ZFXfP+3!<gOYAs7#>fTv0HkJPSPzoANF((U
z5Ir(j^Tw7{9#Rm-pS?4XbJ?q@GFY`}|8G7HhWPvXGfDHob3bvVU6tt2D=kZQEBpIL
zv}=iO9}sgrLZ*8i%_Cen8XSna&0$-@D8)>JqrTnL)BhNC#yLo}o`G13CUJS^4B$i<
zn*TSgf?iV+R29A%SmOiznCeGpQW(KbOS*|$1$@@I9!%%z?pZ1$?q#^Jqa5+)%mZ(M
zc3=z{vGE4h&<1VxBC-g7WKgI0?=@&M4wo~y?5m4N<MT?`dnZXF9BYf|P=-Mj?sl<{
zoO~ZWvgc=l>JAC0Uz%c1hA_7?6k#d_AXHa|X|p*<g)t7%4>WSB>MYUeDcJ1t1(<G`
zkSbMJT5P|AYkUU9-x%`w3LSpoe68M@y;u1OVir1zvD&)shRKnEpP$1_Sv&}-vHeIG
zmZ2M55a!L3-&Hnoyz#<A8cmo_|KWsSP=j~)n*Ni5@jrH+Z;c9+vuU=zSPq*wNTcbJ
zip5U9W$WAk|8WbBo<=N(L2+;p?>LX8OONrp48R{JN=E)s2|6r3#@dr+X{+qD;q2%g
zMd46ygu|QUhdmjbxG3muTOy;PLXWM$?xvGM{%=WWRgpYwk7y17UWD*es4(hlM|^@H
zD&IqDiZ&K=Cl{#D|Bdp_%e!hcKp&E}T@Q#Vd9zy#ueAKEXoJU2;`ueL1)*p~$`TWG
zZxwP;X)wL(lyVK-_tz@QU#c^%+GqHV;{J|oV8b<N-oA!+;F^&$ZCmzRE>nIpb;7n?
z<~s^ZdjWhA--*~BRH5@rS0fr{f4-HGW_C%;mC3sB)$~f`9p4yuc0xkl^6D22LR??z
z{WMW|L)1<z_Z4fdToh8u1jo)Nc8xJ48eS6qoz>|mx1$JuS;?>UKn=mADdfxVYE4|U
zIc#c*biYpbmqu$KsMbe<Z>e;B;XaU^Ea(|@r4yxF6wm)?5ZSaG%PGCfzX$G0p@$V_
z8ZyXBCg{tfxlHaG&y&n@Xef~)Tp4<{r0t*<*N?y6xOO2SQ2O!2e+vU{SpbM@^@anK
z>XNWnVu31D^=2-8e7^D+5Nn`~KQ*mo6RY&M!03_Y1e4m>5@*E)cY@lJs&I&#o}o1H
zG~#HL<1uM4oRUbD3hiVM*&6*N^+OO#UnoB~<gd+NEmxe(lW!oGmv3L~9j>c}sxzy!
zeibG%sT;`m;<l?tmGQ)n;HgoB3PsjIQC=?}h!4ULLC8nWL0fz}T@inot8nWEp(#2u
zLPr%e1S)1CON6a^@73RVyjR>m!t@YsZw$)rx4vOKAkIKgilq4L4!Gc@?w9<sk#;L7
z{yVW8rJ53(r)G4V<^eqEn8nRcF{+)!zMvn2WEf!BkgIbryyB8BFU<Oeq`*i^PAe{W
zjIJ@5e^D|T()MJZg7CZqvG|zFnlM9Nk?@Z4(s9C)^^ep4{GpC<WSa0s_$mBY^utz;
z`tM;<oYv}*bC`#jWdko(_qyM3xgj)j*cq1lhGwFfxki$7{dHn`WX9ktlFZ^o7WN1!
z`FH>x=lk3=%R#IHnS`Dy?Bn!-0mOlxT!mSHXY>#EOORe9iFZE?<bv|Hl4_cy7QUF~
zOBn_<?Lrvo_g{@tx%Vq-*F^ej0wgkZ>vPy-ph97BjuAI`FUh{w&tG)^w$Y_qMvRmh
z`>#SmX7cdT(H}QOS}c<<5Ri+w&4K4s^-EbFYOlqe==E>eui#rFMpHC_bLRb2J2EG>
z48tI`L9*hj1nF0oQf@}CF#bkyuVahRBW@Fg2`kNzlR5QFE4o%mzK${d0`QgH0Z%Iq
zHxac3e|sHa6L;MO@}PQ30J*&SN$!;z>@v?Y=Ya9DrGzMU0H-Amz(x8ko+nr^(RWzv
z*!4+7(_@f~j5wWbLJE@Hx{|`5y;bep5oQKV0C2Iq(;m>9mx}@FaPh2$*s@XYCo%yI
z$a!q1R?|w|lZH%ceC18?ZD75<$$~-MKUq|!zJ#Mr!&wBrI==<3eAF|l+zE{I@v^A4
zzfm6{#Zy9f=hUXsZ^EzIwIH}gufY*go(O|%+Z&o)T%cvkL+12_D-;{PRrE37cVueS
zB~?-54#cpZSpA2-G?aVA&Pko_l>+acYbb(yi39=tx<XNb7F_|?w}|cuugShSIz$5D
zLsZ$Qcl+)e@(b>1q)*ITD09axpP*{JjEV`S^_cp2@x=IZ?0PXOrr})w0;f3CB9)On
zzXbo6Pe!K_MV_PT5lbfP2u8mlb)8f{h8xd6S_%f=AJ%&dX}w~UbwdPj&>tR}AG0Jy
zUt+qRU6Ag81<C)3gTZTVuIupIs5yeAx!ZoR*s|%h5|z_eL_Dab7gL!~K_nK-N2keh
z^c>`VSYx|6$&83aBa%cgk?DBVd2FS_^9*oC9qM_K6rpO2Oq`PFhF9Du8C9l@e&KrD
z)ajY2L)QNmr=B#rjW;X#*4H<Jhc$JwjEdP(4D#>v2grWStTHk(YA(1>P}l7BY!{QX
zqzcJF)hyn=Gu~FN7{Ia=>fNyCdVLor7;65^r?W|zz_Ej^J=Zl7cTTJ|RN_ycs1<7y
zUCgeuiT>G9f-cOkgV>r^iW7l3ZHO|zNi~-ayulFhqMR-YaW%kddkYJ56&kXh1bPS!
zP-1S46?CyN4-R#|=}Eojpi>wdvUmXj<x%OqCc-Cb{+TO3Esq?J$QfWAThkAB#CB^x
zdVcwfnOH!iy^VdjkA=cA2#iCdG(Pz3MWu7meR>56jmDtr^3Zc~A{2Q|SA0}gD&_XN
z`Xf|Lh4q$#v{ZZUmutl<%@#9h7nh9K^dC9`<nO+T6g(6A3U_NYr{$U-ZKC}AsxO&K
zD-Bhvc=Jx6Q#R=6g_-1-pzThoG|wLn*+gQmdlO%&SrcTJAXFjEz(#7@^3~l=s1OQ8
z&>TH@UFR=W7nSN%vi|Ednad#VB#AOM(=bq;!Ft8u@HBfI!{Fe-R9J?_fbgW~m)n!L
zL)F!Fy3_Yecj1b~l>^m{^-;+vn;aVy*qNZb6)kQDEx{qvuj9dcl!K0TJMsjQFMCZj
zIX?HAtM^NFm^PFInp(X5XhNo*f+ni${4UXuLmzR``gBWGGCfW6jUp7Ql4Ie^a`yl0
k$~?>e?=5@RfXBc%W@wy})=&=O{{cwyGAhy)AB}_mA7OHz761SM

diff --git a/docs/getting-started.md b/docs/getting-started.md
deleted file mode 100644
index 55eb603594..0000000000
--- a/docs/getting-started.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-Title: Getting started (as developer) with Alfresco ADF-based applications
-Level: Basic
----
-
-# Prerequisites and requirements
-
-The first thing to do is to check the prerequisites and the requirements to run the front-end application directly into a development environment.
-
-More in particular check that you have:
-
--   Alfresco Content Services (alias ACS) Community or Enterprise edition up and running (identify the URL that will be required as configuration).
--   The latest lts version of NodeJs.
--   A recent (and supported) version of a browser (see here for further details).
-
-# Cloning and launching the front-end application
-
-Once the environment is properly configured, open a terminal and clone the following GitHub repository in a working folder.
-
-`git clone https://github.com/Alfresco/alfresco-content-app.git`
-
-Once done, enter the alfresco-content-app folder and create a file named .env with the following content (put the ACS URL as value).
-
-`API_CONTENT_HOST="https://..."`
-
-Run `npm install` and then `npm start` to get the application up and running. The application will be available at the URL <http://localhost:4200> and the credentials are the ones required by ACS.
-
-Congratulations! You now have the Alfresco Content App running in development mode into your development environment.
-
-# Troubleshooting and support
-
-If you have any issue, don’t worry! There is an entire community available to help you.
-
-In case of problems raise a question into the [Alfresco Forum](https://hub.alfresco.com/ "https://hub.alfresco.com/") (Application Development Framework section) or connect with the developers into the [Alfresco Gitter channel](https://alfresco.atlassian.net/wiki/spaces/PM/overview "https://alfresco.atlassian.net/wiki/spaces/PM/overview").
-
-# Bonus: Use the Enterprise stack instead of the Open Source
-
-If you are an Alfresco Customer or an Official Partner, you might be interested in using the Enterprise stack instead of the Open Source introduced above. The changes to the tasks are not too many and you can try to do the same exercise with the following changes.
-
--   Use ACS Enterprise Edition instead of the Community Edition.
--   Use the `alfresco-digital-workspace-app` GitHub repository (this is a private repository so you may require to get a local copy of the project raising a request into the Alfresco Support Portal).
--   Use the following `.env` file.
-
-    AUTH_TYPE="BASIC"
-    PROVIDER="ECM"
-    API_CONTENT_HOST="<https://...>"
-    API_PROCESS_HOST="<https://...>"
-    OAUTH_HOST="<https://.../auth/realms/alfresco>"
-    E2E_HOST="<http://localhost:4200>"
-    ADMIN_EMAIL="..."
-    ADMIN_PASSWORD="..."
-    ADF_PATH="../alfresco-ng2-components"
-    ACA_BRANCH="develop"
-    MAXINSTANCES=3
-
--   Run the application using `npm start content-ee`.
-
-# Conclusion
-
-In this tutorial you learned how to launch a fully-featured ADF-based application on your development environment, starting from the source code, with the purpose to have a first experience with the development principles and the best practices suggested to create front-end applications working on top of the Alfresco backend services. This is only the first success that you can do with the Alfresco technology. Continue to learn on how to develop front-end applications using Alfresco, in the following sections of the official documentation.
diff --git a/docs/insights/components/analytics-generator.component.md b/docs/insights/components/analytics-generator.component.md
deleted file mode 100644
index 2727e05b50..0000000000
--- a/docs/insights/components/analytics-generator.component.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-Title: Analytics Generator Component
-Added: v2.0.0
-Status: Active
----
-
-# [Analytics Generator Component](../../../lib/insights/src/lib/analytics-process/components/analytics-generator.component.ts "Defined in analytics-generator.component.ts")
-
-Generates and shows charts
-
-## Basic Usage
-
-```html
-<adf-analytics-generator 
-    [reportId]="reportId" 
-    [reportParamQuery]="reportParamQuery">
-</adf-analytics>
-```
-
-## Class members
-
-### Properties
-
-| Name | Type | Default value | Description |
-| ---- | ---- | ------------- | ----------- |
-| reportId | `string` |  | reportId. |
-| reportParamQuery | [`ReportQuery`](../../../lib/insights/src/lib/diagram/models/report/report-query.model.ts) | undefined | reportParamQuery. |
-
-### Events
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | error. |
-| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | success. |
diff --git a/docs/insights/components/analytics-generator.component.md b/docs/insights/components/analytics-generator.component.md
new file mode 120000
index 0000000000..84814fe35b
--- /dev/null
+++ b/docs/insights/components/analytics-generator.component.md
@@ -0,0 +1 @@
+../../../lib/insights/docs/components/analytics-generator.component.md
\ No newline at end of file
diff --git a/docs/insights/components/analytics-report-list.component.md b/docs/insights/components/analytics-report-list.component.md
deleted file mode 100644
index 0c46f5a9d0..0000000000
--- a/docs/insights/components/analytics-report-list.component.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-Title: APS Analytics List Component
-Added: v2.0.0
-Status: Active
----
-
-# [APS Analytics List Component](../../../lib/insights/src/lib/analytics-process/components/analytics-report-list.component.ts "Defined in analytics-report-list.component.ts")
-
-Shows a list of all available reports
-
-## Basic Usage
-
-```html
-<adf-analytics-report-list
-    [layoutType]="'LIST'">
-</adf-analytics-report-list>
-```
-
-## Class members
-
-### Properties
-
-| Name | Type | Default value | Description |
-| ---- | ---- | ------------- | ----------- |
-| appId | `number` |  | appId ID of the target app. |
-| layoutType | `string` | LAYOUT_LIST | layout Type LIST or GRID. |
-| selectFirst | `boolean` | false | selectFirst. |
-
-### Events
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | error. |
-| reportClick | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`ReportParametersModel`](../../../lib/insights/src/lib/diagram/models/report/report-parameters.model.ts)`>` | report Click. |
-| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | success. |
diff --git a/docs/insights/components/analytics-report-list.component.md b/docs/insights/components/analytics-report-list.component.md
new file mode 120000
index 0000000000..356b22582b
--- /dev/null
+++ b/docs/insights/components/analytics-report-list.component.md
@@ -0,0 +1 @@
+../../../lib/insights/docs/components/analytics-report-list.component.md
\ No newline at end of file
diff --git a/docs/insights/components/analytics.component.md b/docs/insights/components/analytics.component.md
deleted file mode 100644
index 29ba19d487..0000000000
--- a/docs/insights/components/analytics.component.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-Title: APS Analytics Component
-Added: v2.0.0
-Status: Active
----
-
-# [APS Analytics Component](../../../lib/insights/src/lib/analytics-process/components/analytics.component.ts "Defined in analytics.component.ts")
-
-Shows the charts related to the reportId passed as input
-
-![Analytics-without-parameters](../../docassets/images/analytics-without-parameters.png)
-
-## Basic Usage
-
-```html
-<adf-analytics 
-    [appId]="1001" 
-    [reportId]="2006">
-</adf-analytics>
-```
-
-## Class members
-
-### Properties
-
-| Name | Type | Default value | Description |
-| ---- | ---- | ------------- | ----------- |
-| appId | `number` |  | appId ID of the target app. |
-| hideParameters | `boolean` | false | hideParameters. |
-| reportId | `string` |  | reportId. |
-
-### Events
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| editReport | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | emitted when editReport. |
-| reportDeleted | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | emitted when reportDeleted. |
-| reportSaved | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | emitted when reportSaved. |
diff --git a/docs/insights/components/analytics.component.md b/docs/insights/components/analytics.component.md
new file mode 120000
index 0000000000..c123b0a296
--- /dev/null
+++ b/docs/insights/components/analytics.component.md
@@ -0,0 +1 @@
+../../../lib/insights/docs/components/analytics.component.md
\ No newline at end of file
diff --git a/docs/insights/components/diagram.component.md b/docs/insights/components/diagram.component.md
deleted file mode 100644
index 3d16e8917b..0000000000
--- a/docs/insights/components/diagram.component.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-Title: Diagram Component
-Added: v2.0.0
-Status: Active
----
-
-# [Diagram Component](../../../lib/insights/src/lib/diagram/components/diagram.component.ts "Defined in diagram.component.ts")
-
-Displays process diagrams.
-
-## Basic Usage
-
-This component shows the diagram of a process.
-
-```html
-<adf-diagram 
-    [processDefinitionId]="processDefinitionId">
-</adf-diagram>
-```
-
-The below component shows the diagram of a running process instance with the activities highlighted according to their state (Active/Completed/Pending).
-
-```html
-<adf-diagram 
-    [processInstanceId]="processInstanceId">
-</adf-diagram>
-```
-
-## Class members
-
-### Properties
-
-| Name | Type | Default value | Description |
-| ---- | ---- | ------------- | ----------- |
-| height | `number` | 500 | height. |
-| metricColor | `any` |  | metricColor. |
-| metricPercentages | `any` |  | metricPercentages. |
-| metricType | `string` | "" | metricType. |
-| processDefinitionId | `any` |  | processDefinitionId. |
-| processInstanceId | `any` |  | processInstanceId. |
-| width | `number` | 1000 | width. |
-
-### Events
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| error | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | error. |
-| success | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | success. |
diff --git a/docs/insights/components/diagram.component.md b/docs/insights/components/diagram.component.md
new file mode 120000
index 0000000000..b6353e2dc8
--- /dev/null
+++ b/docs/insights/components/diagram.component.md
@@ -0,0 +1 @@
+../../../lib/insights/docs/components/diagram.component.md
\ No newline at end of file
diff --git a/docs/insights/components/widget.component.md b/docs/insights/components/widget.component.md
deleted file mode 100644
index 10e9d712d3..0000000000
--- a/docs/insights/components/widget.component.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-Title: Widget component
-Added: v2.0.0
-Status: Active
-Last reviewed: 2018-03-29
----
-
-# [Widget component](../../../lib/insights/src/lib/analytics-process/components/widgets/widget.component.ts "Defined in widget.component.ts")
-
-Base class for standard and custom [widget](../../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) classes.
-
-## Basic Usage
-
-```ts
-import { Component } from '@angular/core';
-import { WidgetComponent } from '@alfresco/adf-core';
-
-@Component({
-    selector: 'custom-editor',
-    template: `
-        <div style="color: red">Look, I'm a custom editor!</div>
-    `
-})
-export class CustomEditorComponent extends WidgetComponent {}
-```
-
-## Class members
-
-### Properties
-
-| Name | Type | Default value | Description |
-| ---- | ---- | ------------- | ----------- |
-| field | `any` |  | field. |
-
-### Events
-
-| Name | Type | Description |
-| ---- | ---- | ----------- |
-| fieldChanged | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<any>` | fieldChanged. |
-
-## Details
-
-The [Widget component](widget.component.md) is the base class for all standard and custom form widgets. See the
-[Form Extensibility and Customisation](../../user-guide/extensibility.md) page for full details about
-implementing custom widgets.
-
-## See also
-
--   [Extensibility](../../user-guide/extensibility.md)
diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md
index 05e6ecb47e..7fa9420239 100644
--- a/docs/tutorials/README.md
+++ b/docs/tutorials/README.md
@@ -9,8 +9,6 @@ Github only: true
 | --- | --- | --- |
 | [**Prerequisites and the requirements**](creating-your-first-adf-application.md) | Basic | In this tutorial you are going to learn how to create a very basic (and almost “empty”) ADF-based application that you can start enriching with features, behaviors and customizations. The creation of this basic ADF-based application is possible through a scaffolding tool called [Yeoman]\(https://yeoman.io/ "https://yeoman.io/"), which makes this task very straightforward. |
 | [**Creating your Alfresco JavaScript application**](creating-javascript-app-using-alfresco-js-api.md) | Basic | In this tutorial you will learn how to create an application in JavaScript from scratch to interact with Alfresco. |
-| [**Adding a new component**](new-component.md) | Basic | In this tutorial, you will learn how to create a component using [Angular CLI](https://cli.angular.io/) within an existing application. |
-| [**Adding a new view**](new-view.md) | Beginner | In this tutorial you will learn how to create a new view in your application and how to access it using a defined endpoint. |
 | [**Using ADF Components**](using-components.md) | Basic | In this tutorial, you will learn how to extend, use, and configure ADF Components. |
 | [**Basic theming**](basic-theming.md) | Beginner | In this tutorial you will see how to theme an ADF app by modifying the CSS.  |
 | [**Working with a Data Table**](working-with-data-table.md) | Intermediate | In this tutorial you will learn how to populate a DataTable component. |
diff --git a/docs/tutorials/new-component.md b/docs/tutorials/new-component.md
deleted file mode 100644
index ff54d8f607..0000000000
--- a/docs/tutorials/new-component.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-Title: Adding a new component
-Level: Basic
----
-
-# Adding a new component
-
-In this tutorial, you will learn how to create a component using [Angular CLI](https://cli.angular.io/) within an existing application.
-
-By definition, a _component_ controls a patch of screen called a _view_. For example, individual components define and control menus, tabs, forms, buttons and every simple or complex portion of an application's layout. 
-
-## Creating a component
-
-Starting from the root of your project, run the following command in a terminal:
-
-    ng generate component my-first-component
-
-If you are adding the component to an application with more than one module, you might want to specify it using the `--module` parameter. For example use `--module app` to add the new component to the root app of your application.
-
-## Using the component
-
-Once the component is created, you can use the element
-
-```html
-<app-my-first-component></app-my-first-component>
-```
-
-anywhere within the HTML file of another component to render the content of `my-first-component`.
-
-As an example, add `<app-my-first-component></app-my-first-component>` at the top of the
-[`app.component`](../../demo-shell/src/app/app.component.ts)`.html` file in the `src` folder, and run the application again. In the browser you will
-shortly see the text "my-first-component works!", as a placeholder to show where the component is
-rendered in the layout.
-
-## Anatomy of the component
-
-By default the new component is created in the `src/app` path and everything is stored in a folder with the
-same name as the component itself. Here, you should find a folder named `my-first-component` has been added
-to `src/app`, with the following contents:
-
--   `my-first-component.component.scss` containing the CSS used by the component, initially empty.
--   `my-first-component.component.html` containing the HTML used to render the component. This file is
-    created with a very basic placeholder message that displays the name of the component within a `p` tag.
--   `my-first-component.component.spec.ts` containing the unit tests for the component.
--   `my-first-component.component.ts` containing the `MyFirstComponentComponent` class that implements the
-    business logic in typescript.
-
-You must declare or import the component in one or more modules in order to use it. In this example the
-`app.module.ts` file stored in `src/app` contains the following code:
-
-```ts
-import { MyFirstComponentComponent } from './my-first-component/my-first-component.component';
-
-@NgModule({
-    declarations: [
-        ...
-        MyFirstComponentComponent
-    ],
-```
-
-These is the most basic information you need to know about your component. Everything mentioned here is
-standard Angular code without anything specific to ADF applications.
diff --git a/docs/tutorials/new-view.md b/docs/tutorials/new-view.md
deleted file mode 100644
index 7b5491ec02..0000000000
--- a/docs/tutorials/new-view.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-Title: Adding a new view
-Level: Beginner
----
-
-# Adding a new view
-
-In this tutorial you will learn how to create a new view in your application and how to access it using a defined endpoint.
-
-Every application developed in Angular is a single page application where the concepts of *view* and *routing* play a key role in the user experience. Being a single page application, the navigation between the different layouts (called *views*) is enabled through the *routing*. 
-
-## Creating a view
-
-In an Angular application, a view is implemented by a regular component. A view can use other views
-(ie, other components) but a view can also be used to implement the full layout of your application.
-This is the reason why creating a view is not necessarily the same task as creating a component.
-
-To create a view, run the following command in a terminal from the root of your project:
-
-    ng generate component my-first-view
-
-For further details about creating a component, refer to the tutorial [here](new-component.md).
-
-## Routing the view
-
-An Angular application has one singleton instance of the `Router` service that is used to match the browser's URL with the corresponding component to display. The `Router` service must be configured in a Typescript file with a syntax similar to the following source code.
-
-```ts
-import { Routes, RouterModule } from '@angular/router';
-
-const appRoutes: Routes = [
-  { path: 'path-in-the-app', component: ExistingComponent },
-  { path: '**', component: PageNotFoundComponent }
-];
-
-@NgModule({
-  imports: [
-    RouterModule.forRoot(
-      appRoutes,
-      { enableTracing: true } // <-- debugging purposes only.
-    )
-    // other imports here
-  ],
-  ...
-})
-```
-
-To add the new view to the routing, change the `appRoutes` constant as follows:
-
-```ts
-const appRoutes: Routes = [
-  { path: 'path-in-the-app', component: ExistingComponent },
-  { path: 'my-first-view', component: MyFirstViewComponent }, // <-- Add this!
-  { path: '**', component: PageNotFoundComponent }
-];
-```
-
-And remember to import the component in the same file with the following syntax.
-
-```ts
-import { MyFirstViewComponent } from './my-first-view/my-first-view.component';
-```
-
-Be aware that the `Router` service can be declared in a file that can be stored in different places in the application's structure. Usually, the `Router` service is declared in a location close to the file containing
-the root module.
-
-## Testing the view
-
-To render the new view through the application and check the user experience, restart the application and open a browser at the following URL:
-
-    http://<ip_address>:<port>/my-first-view
-
-The result should be a very simple page with the following content.
-
-    my-first-view works!
-
-## View parameters (optional)
-
-In most use cases, you will want to add parameters to the view's endpoint. To enable this, change the `appRoutes` constant as follows:
-
-```ts
-const appRoutes: Routes = [
-  { path: 'path-in-the-app', component: ExistingComponent },
-  { path: 'my-first-view/:name', component: MyFirstViewComponent }, // <-- Change this!
-  { path: '**', component: PageNotFoundComponent }
-];
-```
-
-Then open the Typescript controller for the `MyFirstViewComponent` stored in `src/app/my-first-view` (`my-first-view.component.ts`). You need to add a few things here:
-
-1. We need to `import` and `inject` the router into the class.
-2. Subscribe to the router parameters and fetch the value.
-3. Unsubscribe to the router parameters.
-
-While #3 isn't strictly required, it would eventually cause a memory leak in your application, so
-please remember to unsubscribe!
-
-Modify the typescript controller `my-first-view.component.ts` to look like this:
-
-```ts
-import { Component, OnInit } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
-
-@Component({
-  selector: 'app-my-first-view',
-  templateUrl: './my-first-view.component.html',
-  styleUrls: ['./my-first-view.component.scss']
-})
-export class MyFirstViewComponent implements OnInit {
-
-  private params: any;
-  name: String;
-
-  constructor(private route: ActivatedRoute) { }
-
-  ngOnInit() {
-    this.params = this.route.params.subscribe(params => {
-      this.name = params['name'];
-    });
-  }
-
-  ngOnDestroy() {
-    this.params.unsubscribe();
-  }
-}
-```
-
-Next open the template `my-first-view.component.html` in the same folder and add the greeting as in
-the following source code.
-
-```html
-	<p>
-	  Hello {{ name }}
-	</p>
-```
-
-You can now navigate to `http://<ip_address>:<port>/my-first-view/sir` and see the nice message "Hello sir".
-
diff --git a/docs/tutorials/using-components.md b/docs/tutorials/using-components.md
index c012c2c8b5..e3a2f84736 100644
--- a/docs/tutorials/using-components.md
+++ b/docs/tutorials/using-components.md
@@ -171,5 +171,3 @@ docs to find out how you can change the logo and background image!
 We have some tutorials for you to explore. Here are a few suggested ones to try next:
 
 -   [Basic theming](basic-theming.md)
--   [Create a new page](new-view.md)
--   [Adding a new component](new-component.md)
diff --git a/docs/user-guide/apa-extensions.md b/docs/user-guide/apa-extensions.md
index 453dd7244b..7e774c3f3d 100644
--- a/docs/user-guide/apa-extensions.md
+++ b/docs/user-guide/apa-extensions.md
@@ -19,7 +19,7 @@ This is an example of replacing the standard `Text` [widget](../../lib/testing/s
 
     ![default text widget](../docassets/images/apa-simple-form.png)
 
-    Every custom widget component must inherit the [`WidgetComponent`](../insights/components/widget.component.md) class in order to function properly:
+    Every custom widget component must inherit the [`WidgetComponent`](../core/services/widget.component.md) class in order to function properly:
 
     ```ts
     import { Component } from '@angular/core';
@@ -169,4 +169,4 @@ At runtime you should now see your custom Angular component rendered in place of
 -   [Form field model](../core/models/form-field.model.md)
 -   [Form rendering service](../core/services/form-rendering.service.md)
 -   [Form component](../core/components/form.component.md)
--   [Widget component](../insights/components/widget.component.md)
+-   [Widget component](../core/services/widget.component.md)
diff --git a/docs/user-guide/aps-extensions.md b/docs/user-guide/aps-extensions.md
index 9e523a779d..033c1eafa3 100644
--- a/docs/user-guide/aps-extensions.md
+++ b/docs/user-guide/aps-extensions.md
@@ -19,7 +19,7 @@ This is an example of replacing the standard `Text` [widget](../../lib/testing/s
 
     ![default text widget](../docassets/images/text-default-widget.png)
 
-    Every custom [widget](../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) must inherit the [`WidgetComponent`](../insights/components/widget.component.md) class in order to function properly:
+    Every custom [widget](../../lib/testing/src/lib/core/pages/form/widgets/widget.ts) must inherit the [`WidgetComponent`](../core/services/widget.component.md) class in order to function properly:
 
     ```ts
     import { Component } from '@angular/core';
@@ -181,4 +181,4 @@ This is an example of rendering custom APS stencils using custom Angular compone
 -   [Form field model](../core/models/form-field.model.md)
 -   [Form rendering service](../core/services/form-rendering.service.md)
 -   [Form component](../core/components/form.component.md)
--   [Widget component](../insights/components/widget.component.md)
+-   [Widget component](../core/services/widget.component.md)
diff --git a/docs/user-guide/extensibility.md b/docs/user-guide/extensibility.md
index 65986102bd..1f2dd819c4 100644
--- a/docs/user-guide/extensibility.md
+++ b/docs/user-guide/extensibility.md
@@ -109,4 +109,4 @@ formRenderingService.setComponentTypeResolver('text', customResolver, true);
 -   [Form field model](../core/models/form-field.model.md)
 -   [Form rendering service](../core/services/form-rendering.service.md)
 -   [Form component](../core/components/form.component.md)
--   [Widget component](../insights/components/widget.component.md)
+-   [Widget component](../core/services/widget.component.md)
diff --git a/docs/versionIndex.md b/docs/versionIndex.md
index debdd94c23..0728496a26 100644
--- a/docs/versionIndex.md
+++ b/docs/versionIndex.md
@@ -655,7 +655,7 @@ backend services have been tested with each released version of ADF.
 -   [Version manager component](content-services/components/version-manager.component.md)
 -   [Viewer component](core/components/viewer.component.md)
 -   [Webscript component](content-services/components/webscript.component.md)
--   [Widget component](insights/components/widget.component.md)
+-   [Widget component](core/services/widget.component.md)
 
 <!--v200 end-->
 
diff --git a/lib/insights/README.md b/lib/insights/README.md
index cace97c219..184c959ee6 100644
--- a/lib/insights/README.md
+++ b/lib/insights/README.md
@@ -1,19 +1,6 @@
-# Alfresco insights
+# Alfresco Insights Components
 
-Contains a variety of components, directives and services used throughout ADF
-
-<!-- markdown-toc start - Don't edit this section.  npm run toc to generate it-->
-
-<!-- toc -->
-
-- [Documentation](#documentation)
-- [Prerequisites](#prerequisites)
-- [Install](#install)
-- [License](#license)
-
-<!-- tocstop -->
-
-<!-- markdown-toc end -->
+Contains a variety of components, directives and services used throughout ADF to provide insights into the data stored in Alfresco.
 
 ## Documentation
 
@@ -33,6 +20,11 @@ necessary configuration, see this [page](https://github.com/Alfresco/alfresco-ng
 npm install @alfresco/adf-insights
 ```
 
-## License
+## Components
 
-[Apache Version 2.0](https://github.com/Alfresco/alfresco-ng2-components/blob/master/LICENSE)
+| Name                                                                               | Description                                              |
+|------------------------------------------------------------------------------------|----------------------------------------------------------|
+| [Analytics Generator Component](docs/components/analytics-generator.component.md)  | Generates and shows charts                               |
+| [APS Analytics List Component](docs/components/analytics-report-list.component.md) | Shows a list of all available reports                    |
+| [APS Analytics Component](docs/components/analytics.component.md)                  | Shows the charts related to the reportId passed as input |
+| [Diagram Component](docs/components/diagram.component.md)                          | Displays process diagrams.                               |
diff --git a/lib/insights/docs/components/analytics-generator.component.md b/lib/insights/docs/components/analytics-generator.component.md
new file mode 100644
index 0000000000..314ef7af56
--- /dev/null
+++ b/lib/insights/docs/components/analytics-generator.component.md
@@ -0,0 +1,32 @@
+# Analytics Generator Component
+
+Generates and shows charts for a specific report.
+
+## Basic Usage
+
+```html
+<adf-analytics-generator 
+    [reportId]="reportId" 
+    [reportParamQuery]="reportParamQuery">
+</adf-analytics>
+```
+
+## API
+
+```ts
+import { AnalyticsGeneratorComponent } from '@alfresco/adf-insights';
+```
+
+### Properties
+
+| Name             | Type          | Default value | Description       |
+|------------------|---------------|---------------|-------------------|
+| reportId         | `string`      |               | reportId.         |
+| reportParamQuery | `ReportQuery` | undefined     | reportParamQuery. |
+
+### Events
+
+| Name    | Type                | Description |
+|---------|---------------------|-------------|
+| error   | `EventEmitter<any>` | error.      |
+| success | `EventEmitter<any>` | success.    |
diff --git a/lib/insights/docs/components/analytics-report-list.component.md b/lib/insights/docs/components/analytics-report-list.component.md
new file mode 100644
index 0000000000..00c5a02140
--- /dev/null
+++ b/lib/insights/docs/components/analytics-report-list.component.md
@@ -0,0 +1,33 @@
+# Analytics Report List Component
+
+Shows a list of all available reports
+
+## Basic Usage
+
+```html
+<adf-analytics-report-list
+    [layoutType]="'LIST'">
+</adf-analytics-report-list>
+```
+
+## API
+
+```ts
+import { AnalyticsReportListComponent } from '@alfresco/adf-insights';
+```
+
+### Properties
+
+| Name        | Type      | Default value | Description                 |
+|-------------|-----------|---------------|-----------------------------|
+| appId       | `number`  |               | appId ID of the target app. |
+| layoutType  | `string`  | LAYOUT_LIST   | layout Type LIST or GRID.   |
+| selectFirst | `boolean` | false         | selectFirst.                |
+
+### Events
+
+| Name        | Type                                  | Description   |
+|-------------|---------------------------------------|---------------|
+| error       | `EventEmitter<any>`                   | error.        |
+| reportClick | `EventEmitter<ReportParametersModel>` | report Click. |
+| success     | `EventEmitter<any>`                   | success.      |
diff --git a/lib/insights/docs/components/analytics.component.md b/lib/insights/docs/components/analytics.component.md
new file mode 100644
index 0000000000..f2c27c4d04
--- /dev/null
+++ b/lib/insights/docs/components/analytics.component.md
@@ -0,0 +1,30 @@
+# Analytics Component
+
+Shows the charts for a specific report and application.
+
+## Basic Usage
+
+```html
+<adf-analytics 
+    [appId]="1001" 
+    [reportId]="2006">
+</adf-analytics>
+```
+
+## API
+
+### Properties
+
+| Name           | Type      | Default value | Description                 |
+|----------------|-----------|---------------|-----------------------------|
+| appId          | `number`  |               | appId ID of the target app. |
+| hideParameters | `boolean` | false         | hideParameters.             |
+| reportId       | `string`  |               | reportId.                   |
+
+### Events
+
+| Name          | Type                | Description                 |
+|---------------|---------------------|-----------------------------|
+| editReport    | `EventEmitter<any>` | emitted when editReport.    |
+| reportDeleted | `EventEmitter<any>` | emitted when reportDeleted. |
+| reportSaved   | `EventEmitter<any>` | emitted when reportSaved.   |
diff --git a/lib/insights/docs/components/diagram.component.md b/lib/insights/docs/components/diagram.component.md
new file mode 100644
index 0000000000..6c4ade108a
--- /dev/null
+++ b/lib/insights/docs/components/diagram.component.md
@@ -0,0 +1,46 @@
+# Diagram Component
+
+Displays process diagrams.
+
+## Basic Usage
+
+This component shows the diagram of a process.
+
+```html
+<adf-diagram 
+    [processDefinitionId]="processDefinitionId">
+</adf-diagram>
+```
+
+The below component shows the diagram of a running process instance with the activities highlighted according to their state (Active/Completed/Pending).
+
+```html
+<adf-diagram 
+    [processInstanceId]="processInstanceId">
+</adf-diagram>
+```
+
+## API
+
+```ts
+import { DiagramComponent } from '@alfresco/adf-insights';
+```
+
+### Properties
+
+| Name                | Type     | Default value | Description          |
+|---------------------|----------|---------------|----------------------|
+| height              | `number` | 500           | height.              |
+| metricColor         | `any`    |               | metricColor.         |
+| metricPercentages   | `any`    |               | metricPercentages.   |
+| metricType          | `string` | ""            | metricType.          |
+| processDefinitionId | `any`    |               | processDefinitionId. |
+| processInstanceId   | `any`    |               | processInstanceId.   |
+| width               | `number` | 1000          | width.               |
+
+### Events
+
+| Name    | Type                | Description |
+|---------|---------------------|-------------|
+| error   | `EventEmitter<any>` | error.      |
+| success | `EventEmitter<any>` | success.    |
diff --git a/lib/insights/ng-package.json b/lib/insights/ng-package.json
index 64abae563d..504252c500 100644
--- a/lib/insights/ng-package.json
+++ b/lib/insights/ng-package.json
@@ -19,5 +19,12 @@
     "styleIncludePaths": [
       "../core/src/lib"
     ]
-  }
+  },
+  "allowedNonPeerDependencies": [
+    "@alfresco/adf-core",
+    "@ngx-translate/core",
+    "chart.js",
+    "ng2-charts",
+    "raphael"
+  ]
 }
diff --git a/lib/insights/package.json b/lib/insights/package.json
index a8a0a63c2f..7bb57f59a5 100644
--- a/lib/insights/package.json
+++ b/lib/insights/package.json
@@ -10,18 +10,20 @@
   "bugs": {
     "url": "https://github.com/Alfresco/alfresco-ng2-components/issues"
   },
-  "peerDependencies": {
-    "@angular/common": ">=14.1.3",
-    "@angular/compiler": ">=14.1.3",
-    "@angular/core": ">=14.1.3",
-    "@angular/forms": ">=14.1.3",
-    "@angular/material": ">=14.1.2",
+  "dependencies": {
     "@alfresco/adf-core": ">=6.9.0",
     "@ngx-translate/core": ">=14.0.0",
     "chart.js": "^4.3.0",
     "ng2-charts": "^4.1.1",
     "raphael": ">=2.3.0"
   },
+  "peerDependencies": {
+    "@angular/common": ">=14.1.3",
+    "@angular/compiler": ">=14.1.3",
+    "@angular/core": ">=14.1.3",
+    "@angular/forms": ">=14.1.3",
+    "@angular/material": ">=14.1.2"
+  },
   "keywords": [
     "analytics",
     "alfresco-component",