From 924d6597451abbfee75bd97b22b3b9bd571d3d2c Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 14 May 2014 10:56:52 +0000 Subject: [PATCH] Added Expand and Collapse on Validations git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-table-widget@95666 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/resources/ResourceBundle.java | 26 ++- .../client/resources/collapseall.png | Bin 0 -> 606 bytes .../client/resources/collapseall_12.png | Bin 0 -> 516 bytes .../client/resources/collapseall_32.png | Bin 0 -> 1005 bytes .../client/resources/expandall.png | Bin 0 -> 472 bytes .../client/resources/expandall_12.png | Bin 0 -> 426 bytes .../client/resources/expandall_32.png | Bin 0 -> 833 bytes .../validation/ValidationsTasksPanel.java | 189 +++++++++++------- .../client/resources/collapseall.png | Bin 0 -> 606 bytes .../client/resources/collapseall_12.png | Bin 0 -> 516 bytes .../client/resources/collapseall_32.png | Bin 0 -> 1005 bytes .../client/resources/collapseall_8.png | Bin 0 -> 357 bytes .../client/resources/expandall.png | Bin 0 -> 472 bytes .../client/resources/expandall_12.png | Bin 0 -> 426 bytes .../client/resources/expandall_32.png | Bin 0 -> 833 bytes .../client/resources/expandall_8.png | Bin 0 -> 313 bytes 16 files changed, 137 insertions(+), 78 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_12.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_32.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/expandall.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/expandall_12.png create mode 100644 src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/expandall_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_12.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_8.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/expandall.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/expandall_12.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/expandall_32.png create mode 100644 src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/expandall_8.png diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java index 546a4d1..49093e1 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/ResourceBundle.java @@ -4,7 +4,6 @@ package org.gcube.portlets.user.td.tablewidget.client.resources; import com.google.gwt.core.client.GWT; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.resources.client.ClientBundle.Source; /** * Resource Bundle @@ -89,10 +88,31 @@ public interface ResourceBundle extends ClientBundle { @Source("basket_32.png") ImageResource basket32(); - @Source("pencil_32.png") - ImageResource rowEdit32(); @Source("pencil.png") ImageResource rowEdit(); + + @Source("pencil_32.png") + ImageResource rowEdit32(); + + + @Source("collapseall.png") + ImageResource collapseAll(); + + @Source("collapseall_12.png") + ImageResource collapseAll12(); + + @Source("collapseall_32.png") + ImageResource collapseAll32(); + @Source("expandall.png") + ImageResource expandAll(); + + @Source("expandall_12.png") + ImageResource expandAll12(); + + @Source("expandall_32.png") + ImageResource expandAll32(); + + } \ No newline at end of file diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall.png new file mode 100644 index 0000000000000000000000000000000000000000..7f342a551aa4a8726f9fbdd0d69d840487ff5d6a GIT binary patch literal 606 zcmV-k0-^nhP)Px#24YJ`L;ytqc>ukKpzx>w000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z2@Wi8RaIU9000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0005GNkl@c5Qe{VbBhT|Tm)JQaUq1ffK+fJ_&Qy=b`{bma1(G>@fGaCrEBX8#7!5$ znA8JBlIDh-ncu~|O%t06`orNIm|^Ds=lm1iefptfj=AG5%!J7?bIes8$4t0xZ+GE> zJel*X^N{`K9xgyaf=~+_v>Jo}mvKq4TpNi@g7VUO>EBPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z3K}}MX^8^>000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0004BNkl^gqlTUL2mrS-**#bL5<(loIp#JZ7_5EEbDV%klGU z9nW8Wj@sOjlxW-LpTxSZX~*&@1!g|3BwKr+!@w|Px#24YJ`L;ytqc>ukKpzx>w000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z2@VlAJsD2`000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0009>Nkl5Ls5J#-Oas+TSMr{eH)-_n49gBwjqP`1AD(3g=if zBx6vOkJjtjz&S!tem-h1-hKGO*UK4X4+sQ>b5x~Uq#azztI33yo0~DN#?H@s7i5k2&BbCZpYjmCh{XtdmRVlG5=!2>2tC4CH~B*&0MMas@Oar?h5 z$RU8rOqd+9o(!Pko}S{p|1}EMHIr9=1T1L3f?$y-92_4X zb8>P*S(bBSxW2xQnc3qvp-j~g#I=XiK{;P&=* zVF-L(XGBc3z+_Ek?(grjySuwE2@ehqSX*0b!m+ir#opfDQc3vn)3>M-ssKWnR!t_8 zrQCRbf8UvpMkBVjw-@ev@R7zf9w5I0o&d*7BdG!>NZhf=pg?~}s8o`n3VhC@2cG7I z-zmu+fmas^`+J5V0m-#My@ntaznFv|xn6!zxI-UL&C9|lnGV`GulBj*4XH9FNM|>I_$UL7vpFakf+Li*M#J~a)#&a*e-|_Cl zmrjq68p)>BLfKmlugh(h%!Rhj67z}FE46R2HT!lsYc3c00Ni=w@5}!pSBp$p871>K zt+hz6lai)87T(hT@!7@9w^k#h)ElNQ)(JdBhO8FE=6a##BU9YurM4W3XT&x?bsj0z b68ioCbBS1exjeK*00000NkvXXu0mjf?>)9^ literal 0 HcmV?d00001 diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/expandall.png b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/resources/expandall.png new file mode 100644 index 0000000000000000000000000000000000000000..b3180164c71ccdc9f8bc45eddb8d33bae9afbb95 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x37`TN&n2}-D90{Nxdx@v7EBifGJ}zeK=sba5ppayVYeb22er|4R zUI~M9QEFmIYKlU6W=V#EyQgnJcq5-U&?;k37sn8b({m>q<{fenaE+fcwIe`9ONFb; zL(_NW329%t`L?KBU@ywyOSF=~mU!#AAz(9RAUl z?PPY}sCUVopQk1`D9)PTXe-dLLU@JyMgzskyDr6Yna%cBdX)4q!63nCW`m=U=fsy5 zbNzJ0xcS--&p)~?^Y*l-MV%+NEDKn+O37;%N5KAQ0W(b%ogKcNH*=1Ctl0B|`|`^z z8A{wbt~U=BSftp^|6kvo`pE5JoK?Y6!!>)Fvl(-o7ImJu^-gt(fu_#2-^QB)53X7h zqI{KebN{E`zmJP=@|;!~nfo$Dwc6x=<11Hv2m#DP|^db&7eLb|w&nH5fE)%_jv0A6{Wjlr+_`6873Sb4(rLu0 zI?>H2NNA=@$2;4Mtj5QSnZK2#B_yj!G@lmF{{7(DyGAwRo403f+;9C@|HcB7&{Lg% znWa@OyZD(MOH`;AycV^v!6o~a6HUTo9u(K%+I|MvjPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z3IrL!PsgqR000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0007*oyZO>aRN94k}p6)=#y|7669+TAo(!Jc7zGYjM38XIq2U3yjWtH zPPV7FySlo5UcHL1-)?M!Y;2GO1jzz}WK3RP{sIW)ZF#-y2S|Ct;{5oXY!J-l7aMFN z@`vj|iek>+wy^_SjEXNFQTNf$$>1W(#xs@q+M&D>2U))?77*=<0vfQ-CZMFH0!N7!bjM&}N{?OTKH0+=Nu2i8go zFs81V^4o=p)f5;pqs4&j6%{bZ$S@UGtm}dSAt%WsEurH*tTD>8^Xn}!H+&v8L>TE0>#=y+T$ARAfFB7eKx?j;){qOqZ68s@4vXApW` z!Ozal_L2brM@L6X1BiC#T-i;|f@nTEIXT(8-|K^n8h4y3D2yi9*UO)}qGv%Z$uMVg z=ot>YcMv8F$uA?}`=?JIFweSo5#_qo3)v--#3@jsIk#}?V!1?9%qDQEWWNWo>w^rkI zz3s9hw{@zJTc}rU-%4xt^Y*?yqVNHDNaFkL@50pzQ+7wmK4(}frL|ttx?_`6|1W7* zB40xz(new KeyProvider()); FolderDto root = gen.getRoot(); @@ -113,50 +121,42 @@ public class ValidationsTasksPanel extends FramedPanel { } ColumnConfig cc1 = new ColumnConfig( - new ToStringValueProvider("task"),168, "Task"); + new ToStringValueProvider("task"), 168, "Task"); cc1.setHeader("Task"); cc1.setCell(new AbstractCell() { @Override - public void render(Context context, - String value, SafeHtmlBuilder sb) { - sb.appendHtmlConstant("" - + value + ""); - - }} - ); + public void render(Context context, String value, SafeHtmlBuilder sb) { + sb.appendHtmlConstant("" + value + + ""); + + } + }); + + /* + * ColumnConfig cc2 = new ColumnConfig( new ValueProvider() { + * + * @Override public String getValue(BaseDto object) { return object + * instanceof ValidationDto ? ((ValidationDto) object) .getDescription() + * : ""; } + * + * @Override public void setValue(BaseDto object, String value) { if + * (object instanceof ValidationDto) { ((ValidationDto) + * object).setDescription(value); } } + * + * @Override public String getPath() { return "description"; } }); + * cc2.setHeader("Description"); + */ - - /*ColumnConfig cc2 = new ColumnConfig( - new ValueProvider() { - - @Override - public String getValue(BaseDto object) { - return object instanceof ValidationDto ? ((ValidationDto) object) - .getDescription() : ""; - } - - @Override - public void setValue(BaseDto object, String value) { - if (object instanceof ValidationDto) { - ((ValidationDto) object).setDescription(value); - } - } - - @Override - public String getPath() { - return "description"; - } - }); - cc2.setHeader("Description"); - */ ColumnConfig cc3 = new ColumnConfig( new ValueProvider() { @Override public Boolean getValue(BaseDto object) { - return object instanceof ValidationDto ? ((ValidationDto) object) - .getValid() : null; + return object instanceof ValidationDto ? ((ValidationDto) object).getValid() + : null; } @Override @@ -199,63 +199,102 @@ public class ValidationsTasksPanel extends FramedPanel { List> l = new ArrayList>(); l.add(cc1); - //l.add(cc2); + // l.add(cc2); l.add(cc3); ColumnModel cm = new ColumnModel(l); tree = new TreeGrid(store, cm, cc1); - //tree.getStyle().setLeafIcon(ResourceBundle.INSTANCE.tableValidation()); - - //tree.getView().setStripeRows(true); - //tree.getView().setColumnLines(true); + // tree.getStyle().setLeafIcon(ResourceBundle.INSTANCE.tableValidation()); + + // tree.getView().setStripeRows(true); + // tree.getView().setColumnLines(true); tree.getView().setAutoFill(true); tree.setBorders(false); tree.setLoadMask(true); tree.setColumnResize(true); tree.getView().setAutoExpandColumn(cc1); - - IconProvider iconProvider=new IconProvider() { + + IconProvider iconProvider = new IconProvider() { @Override public ImageResource getIcon(BaseDto model) { - ImageResource img=null; - if(model instanceof FolderDto){ - String type=((FolderDto) model).getType(); - if (type.compareTo("job")==0){ - img=ResourceBundle.INSTANCE.cog(); + ImageResource img = null; + if (model instanceof FolderDto) { + String type = ((FolderDto) model).getType(); + if (type.compareTo("job") == 0) { + img = ResourceBundle.INSTANCE.cog(); } else { - if (type.compareTo("task")==0){ - img=ResourceBundle.INSTANCE.basket(); + if (type.compareTo("task") == 0) { + img = ResourceBundle.INSTANCE.basket(); } else { - + } } } else { - img=ResourceBundle.INSTANCE.tableValidation(); + img = ResourceBundle.INSTANCE.tableValidation(); } return img; } }; tree.setIconProvider(iconProvider); + tree.addExpandHandler(new ExpandItemHandler() { + + @Override + public void onExpand(ExpandItemEvent event) { + forceLayout(); + + } + }); - /* - * ToolBar buttonBar = new ToolBar(); - * - * buttonBar.add(new TextButton("Expand All", new SelectHandler() { - * - * @Override public void onSelect(SelectEvent event) { tree.expandAll(); - * } })); buttonBar.add(new TextButton("Collapse All", new - * SelectHandler() { - * - * @Override public void onSelect(SelectEvent event) { - * tree.collapseAll(); } })); - * - * v.add(buttonBar, new VerticalLayoutData(1, -1)); - */ - add(tree, new MarginData(0)); - onResize(); + tree.addCollapseHandler(new CollapseItemHandler() { + + @Override + public void onCollapse(CollapseItemEvent event) { + forceLayout(); + + } + }); + + + ToolBar toolBar = new ToolBar(); + + TextButton btnExpandAll = new TextButton(); + // btnReload.setText("Expand All"); + btnExpandAll.setIcon(ResourceBundle.INSTANCE.collapseAll12()); + btnExpandAll.setToolTip("Expand All"); + btnExpandAll.addSelectHandler(new SelectHandler() { + + @Override + public void onSelect(SelectEvent event) { + tree.expandAll(); + forceLayout(); + } + }); + toolBar.add(btnExpandAll); + + + TextButton btnCollapseAll = new TextButton(); + // btnReload.setText("Expand All"); + btnCollapseAll.setIcon(ResourceBundle.INSTANCE.expandAll12()); + btnCollapseAll.setToolTip("Collapse All"); + btnCollapseAll.addSelectHandler(new SelectHandler() { + + @Override + public void onSelect(SelectEvent event) { + tree.collapseAll(); + forceLayout(); + } + }); + toolBar.add(btnCollapseAll); + + + + con.add(toolBar, new VerticalLayoutData(1, -1)); + con.add(tree, new VerticalLayoutData(1, -1)); + + add(con,new MarginData(0)); diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall.png new file mode 100644 index 0000000000000000000000000000000000000000..7f342a551aa4a8726f9fbdd0d69d840487ff5d6a GIT binary patch literal 606 zcmV-k0-^nhP)Px#24YJ`L;ytqc>ukKpzx>w000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z2@Wi8RaIU9000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0005GNkl@c5Qe{VbBhT|Tm)JQaUq1ffK+fJ_&Qy=b`{bma1(G>@fGaCrEBX8#7!5$ znA8JBlIDh-ncu~|O%t06`orNIm|^Ds=lm1iefptfj=AG5%!J7?bIes8$4t0xZ+GE> zJel*X^N{`K9xgyaf=~+_v>Jo}mvKq4TpNi@g7VUO>EBPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z3K}}MX^8^>000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0004BNkl^gqlTUL2mrS-**#bL5<(loIp#JZ7_5EEbDV%klGU z9nW8Wj@sOjlxW-LpTxSZX~*&@1!g|3BwKr+!@w|Px#24YJ`L;ytqc>ukKpzx>w000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z2@VlAJsD2`000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0009>Nkl5Ls5J#-Oas+TSMr{eH)-_n49gBwjqP`1AD(3g=if zBx6vOkJjtjz&S!tem-h1-hKGO*UK4X4+sQ>b5x~Uq#azztI33yo0~DN#?H@s7i5k2&BbCZpYjmCh{XtdmRVlG5=!2>2tC4CH~B*&0MMas@Oar?h5 z$RU8rOqd+9o(!Pko}S{p|1}EMHIr9=1T1L3f?$y-92_4X zb8>P*S(bBSxW2xQnc3qvp-j~g#I=XiK{;P&=* zVF-L(XGBc3z+_Ek?(grjySuwE2@ehqSX*0b!m+ir#opfDQc3vn)3>M-ssKWnR!t_8 zrQCRbf8UvpMkBVjw-@ev@R7zf9w5I0o&d*7BdG!>NZhf=pg?~}s8o`n3VhC@2cG7I z-zmu+fmas^`+J5V0m-#My@ntaznFv|xn6!zxI-UL&C9|lnGV`GulBj*4XH9FNM|>I_$UL7vpFakf+Li*M#J~a)#&a*e-|_Cl zmrjq68p)>BLfKmlugh(h%!Rhj67z}FE46R2HT!lsYc3c00Ni=w@5}!pSBp$p871>K zt+hz6lai)87T(hT@!7@9w^k#h)ElNQ)(JdBhO8FE=6a##BU9YurM4W3XT&x?bsj0z b68ioCbBS1exjeK*00000NkvXXu0mjf?>)9^ literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_8.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/collapseall_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e080d2e22219c9623423a8ff4742e2bd279f6a06 GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggKRz5CCPUR`PuK|T5OI#yLobz*Y zQ}ap~oQqNuOHxx5$}>wc6x=<11Hv2m#DR(qc)B=-NL(&GyWi_@f=JuP=OL|5S`sf_ z+_2sL=$`c{zbp1I z3U)18ur7O&%ER*A4_B1Covu!f@73y&vpbwV@AaScnIG%pz3Vr;v_N@HL>vb1Z9-6rU{lehs>gTe~DWM4fA>WKO literal 0 HcmV?d00001 diff --git a/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/expandall.png b/src/main/resources/org/gcube/portlets/user/td/tablewidget/client/resources/expandall.png new file mode 100644 index 0000000000000000000000000000000000000000..b3180164c71ccdc9f8bc45eddb8d33bae9afbb95 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x37`TN&n2}-D90{Nxdx@v7EBifGJ}zeK=sba5ppayVYeb22er|4R zUI~M9QEFmIYKlU6W=V#EyQgnJcq5-U&?;k37sn8b({m>q<{fenaE+fcwIe`9ONFb; zL(_NW329%t`L?KBU@ywyOSF=~mU!#AAz(9RAUl z?PPY}sCUVopQk1`D9)PTXe-dLLU@JyMgzskyDr6Yna%cBdX)4q!63nCW`m=U=fsy5 zbNzJ0xcS--&p)~?^Y*l-MV%+NEDKn+O37;%N5KAQ0W(b%ogKcNH*=1Ctl0B|`|`^z z8A{wbt~U=BSftp^|6kvo`pE5JoK?Y6!!>)Fvl(-o7ImJu^-gt(fu_#2-^QB)53X7h zqI{KebN{E`zmJP=@|;!~nfo$Dwc6x=<11Hv2m#DP|^db&7eLb|w&nH5fE)%_jv0A6{Wjlr+_`6873Sb4(rLu0 zI?>H2NNA=@$2;4Mtj5QSnZK2#B_yj!G@lmF{{7(DyGAwRo403f+;9C@|HcB7&{Lg% znWa@OyZD(MOH`;AycV^v!6o~a6HUTo9u(K%+I|MvjPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^q^ z3IrL!PsgqR000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0007*oyZO>aRN94k}p6)=#y|7669+TAo(!Jc7zGYjM38XIq2U3yjWtH zPPV7FySlo5UcHL1-)?M!Y;2GO1jzz}WK3RP{sIW)ZF#-y2S|Ct;{5oXY!J-l7aMFN z@`vj|iek>+wy^_SjEXNFQTNf$$>1W(#xs@q+M&D>2U))?77*=<0vfQ-CZMFH0!N7!bjM&}N{?OTKH0+=Nu2i8go zFs81V^4o=p)f5;pqs4&j6%{bZ$S@UGtm}dSAt%WsEurH*tTD>8^Xn}!H+&v8L>TE0>#=y+T$ARAfFB7eKx?j;){qOqZ68s@4vXApW` z!Ozal_L2brM@L6X1BiC#T-i;|f@nTEIXT(8-|K^n8h4y3D2yi9*UO)}qGv%Z$uMVg z=ot>YcMv8F$uA?}`=?JIFweSo5#_qo3)v--#3@jsIk#}?V!1?9%qDQEWWNWo>w^rkI zz3s9hw{@zJTc}rU-%4xt^Y*?yqVNHDNaFkL@50pzQ+7wmK4(}frL|ttx?_`6|1W7* zB40xzQL70(Y)*K0-AbW|YuPggKRz5CCrG5>kX+R;#64!_l=ltB< z)VvY~=c3falGGH1^30M91$R&1fbd2>aiF3po-U3d5|>N+H}V}!U|?H+_2v`T4?Go? z`3F)q&S>pjJJp1(xzUB)%0q=M`v3diyh73Wd!On>zL~f2`da}h;hd%(k%>pQ{yVU% z=BQcP>}VfngIp7%nKG7g-k<(_5Z^Yl$K69Sazo`Ec@bB~Nh%B;Nfs}JuQWg1mzO(Z z-8sXlS8plIeiKwbBVSue^5u5Pl$_#K_i7mTZt1t>RCfpix{txr)z4*}Q$iB}GV^UH literal 0 HcmV?d00001