From 86e5da05706d30029e505095487ac1a9ba52984c Mon Sep 17 00:00:00 2001 From: m_broelemann Date: Sun, 27 Dec 2020 19:46:27 +0100 Subject: [PATCH] =?UTF-8?q?Fehlerbehebung=20Anzeige=20AllIOsFragment.java?= =?UTF-8?q?=20ge=C3=A4ndert=20Testclasse=20TestIO.java=20mit=20Leben=20gef?= =?UTF-8?q?=C3=BCllt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/aped/MainActivity.java | 6 +- .../example/aped/communication/TestIO.java | 20 +++- .../aped/ui/all_IOs/AllIOsFragment.java | 100 ++++++++++++++---- .../src/main/res/drawable/green_signal.jpg | Bin 0 -> 9522 bytes APED/app/src/main/res/drawable/red_signal.jpg | Bin 0 -> 9473 bytes .../src/main/res/layout/listview_layout.xml | 44 ++++++++ 6 files changed, 148 insertions(+), 22 deletions(-) create mode 100644 APED/app/src/main/res/drawable/green_signal.jpg create mode 100644 APED/app/src/main/res/drawable/red_signal.jpg create mode 100644 APED/app/src/main/res/layout/listview_layout.xml diff --git a/APED/app/src/main/java/com/example/aped/MainActivity.java b/APED/app/src/main/java/com/example/aped/MainActivity.java index da14479..b22c35e 100644 --- a/APED/app/src/main/java/com/example/aped/MainActivity.java +++ b/APED/app/src/main/java/com/example/aped/MainActivity.java @@ -10,6 +10,7 @@ import android.view.Menu; import android.widget.Toast; import com.example.aped.communication.IIO; +import com.example.aped.communication.TestIO; import com.example.aped.utils.IXML; import com.example.aped.utils.TestXML; import com.google.android.material.navigation.NavigationView; @@ -33,10 +34,11 @@ public class MainActivity extends AppCompatActivity { /** was soll angezeigt werden in Navigation.*/ private AppBarConfiguration mAppBarConfiguration; /** zur Verwendung von xml anstatt der direkten Einbindung.*/ - private IXML xml; + public static IXML xml = new TestXML(); /** zur Verwendung von uebergabe anstatt der direkten Einbindung.*/ - private IIO uebergabe; + public static IIO uebergabe = new TestIO(); /** allgemeines.*/ + @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/APED/app/src/main/java/com/example/aped/communication/TestIO.java b/APED/app/src/main/java/com/example/aped/communication/TestIO.java index eb07aae..8976dbb 100644 --- a/APED/app/src/main/java/com/example/aped/communication/TestIO.java +++ b/APED/app/src/main/java/com/example/aped/communication/TestIO.java @@ -1,14 +1,30 @@ package com.example.aped.communication; +import android.widget.Toast; + +import com.example.aped.R; + public class TestIO implements IIO { @Override public String read(String deviceName) { - return "test"; + + String Wert; + switch (deviceName) { + case "stoff": + Wert = "TRUE"; + break; + case "schnaps": + Wert = "FALSE"; + break; + default: + Wert="default"; + } + return Wert; } @Override public String write(String deviceName, String value) { - return value; + return "TRUE";//Wenn erfolgreich gesendet } } diff --git a/APED/app/src/main/java/com/example/aped/ui/all_IOs/AllIOsFragment.java b/APED/app/src/main/java/com/example/aped/ui/all_IOs/AllIOsFragment.java index ece3647..1dccc4f 100644 --- a/APED/app/src/main/java/com/example/aped/ui/all_IOs/AllIOsFragment.java +++ b/APED/app/src/main/java/com/example/aped/ui/all_IOs/AllIOsFragment.java @@ -1,11 +1,15 @@ package com.example.aped.ui.all_IOs; +import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.ImageView; import android.widget.ListView; import android.widget.SearchView; import android.widget.TextView; @@ -17,31 +21,91 @@ import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +import com.example.aped.MainActivity; import com.example.aped.R; +import java.util.List; + public class AllIOsFragment extends Fragment { ListView lv; - SearchView searchView; ArrayAdapter adapter; - String[] name = {"IN1", "Temperatur extern","Strom Heizung"}; + List name = MainActivity.xml.getDeviceNames();//{"IN1", "Temperatur extern > 5°C", "Strom Heizung < 10A"}; + //String[] state = {"FALSE", "TRUE", "FALSE"}; + int[] images =new int[name.size()];// {R.drawable.red_signal, R.drawable.green_signal, R.drawable.red_signal}; + int[] favoriten = new int[name.size()];//{android.R.drawable.btn_star_big_off, android.R.drawable.btn_star_big_on, android.R.drawable.btn_star_big_off}; + int[] favoriten_state = new int[name.size()]; @Override public View onCreateView(LayoutInflater inflater, - ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_all_ios, container, - false); - lv = (ListView) view.findViewById(R.id.idListView); - adapter = new ArrayAdapter(getActivity(), - android.R.layout.simple_expandable_list_item_1,name); - lv.setAdapter(adapter); - lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Toast.makeText(getContext(),"Position:"+position, Toast.LENGTH_LONG).show(); - } - }); - return view; + ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_all_ios, container, + false); + lv = (ListView) view.findViewById(R.id.idListView); + CustomAdapter customAdapter = new CustomAdapter(); + lv.setAdapter(customAdapter); + return view; + } + + class CustomAdapter extends BaseAdapter { + + @Override + public int getCount() { + return name.size(); + } + + @Override + public Object getItem(int position) { + + return null; + } + + @Override + public long getItemId(int position) { + + return 0; + } + + @Override + public View getView(int i, View view, ViewGroup viewGroup) { + if(MainActivity.uebergabe.read(name.get(i))=="FALSE") + { + images[i]=R.drawable.red_signal; + }else { + images[i] = R.drawable.green_signal; + } + if(favoriten_state[i]==0) + { + favoriten[i]=android.R.drawable.btn_star_big_off; + }else { + favoriten[i] = android.R.drawable.btn_star_big_on; + } + view = getLayoutInflater().inflate(R.layout.listview_layout, null); + ImageView imageView = (ImageView) view.findViewById(R.id.images); + TextView TextView_Name = (TextView) view.findViewById(R.id.textName); + TextView TextView_State = (TextView) view.findViewById(R.id.textState); + ImageView ButtonView_Favoriten = (ImageView) view.findViewById(R.id.imageButtonFavoriten); + + ButtonView_Favoriten.setOnClickListener(new View.OnClickListener(){ + @Override + public void onClick(View view){ + if(favoriten_state[i]==0){ + favoriten_state[i]=1; + favoriten[i]=android.R.drawable.btn_star_big_on; + ButtonView_Favoriten.setImageResource(favoriten[i]); + }else{ + favoriten_state[i]=0; + favoriten[i]=android.R.drawable.btn_star_big_off; + ButtonView_Favoriten.setImageResource(favoriten[i]); + } + } + }); + imageView.setImageResource(images[i]); + TextView_Name.setText(name.get(i)); + TextView_State.setText(MainActivity.uebergabe.read(name.get(i))); + ButtonView_Favoriten.setImageResource(favoriten[i]); + return view; + } + } } -} diff --git a/APED/app/src/main/res/drawable/green_signal.jpg b/APED/app/src/main/res/drawable/green_signal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bf966a2a6426ed522be1b1f6efb8aea1f7128e9 GIT binary patch literal 9522 zcmbVycT`i|wr>zHf)tS|0#S-I1(9AOD$P$s1Ocfcy-N=e5>TlE5tJebp@;|qkzOVA zAcCRy-a82;1W3Zmch5cN-Fxo)Q-&nJ)-`rr; zfEUyQa5f3J51>7F?(dU2=%^?C1$ufqI(kMR@cacPMkc0<{VYW^S}!Xj2EdBsxAS}(a_SKqoe&>YwGM!>T>`c z8~x?$GMeYv4Q+vf-W+$r6LT&I-79P1eA?# zOUx;2VGxpiisO9g)6d8yEH^KL{~OwWAp5@q_WJ(|*}s7OZ(I`qCR!Tm;?c4JzyPvQ zZmbyKAEG_y7{>K}(EO3zY{AbUuXfagVyg}FgvDPOW#2Y0whR`Vspf3)*NgU%X1CG- zhk~aT=YNp&7JF%1Wq>2{Zu;PU$B#g;)&^XHSc5@UMa4nQ>?2#B;Rsn6=g8kT?y2*d zv^kOcs+LT7lZQ!Ix&6lSy5G86e^rN??ZJ5gr*7@ws@b=G)y`YDcIBUQEWR=jVI73` zz<1O4w=D>NhDsH0MJ76UX2wOV*q#BhV~-P*uveB6>Q)Nkpkup~5MS-g`$m&HXxG^* zQ#*U5LN!JcVwYHlcni(|%(oVu+|K|mzmP=08DQM4%UpNfYM?8TX86+&i3&)?{c4Z$ zO>;k;e$*4iC4I@#I4h};eAKq|q8L7d;Jel;OB$)?S0sGHb2#YtJi#W^MZgJ`rhfvO zB>TQ%l1tXh6?13W4JZ*7DLz_$4cUH~IwtXNXpX(L2FD`?HNN(PT{rbUnVbO(o^97F zO2CEE4?kU@x1lAs7K93KVYM;EHA86?L90HQuIJxx|s_tI&}r z@<}tgEBF7bjomJ6Gi?{(!xL(26<>z?!U^#`PiF!Ajzo zSR%G(N83csFlooT6(yR!(4#FvZwOZ(q&Y$y34uDUckwF= zGZNW5HI(q&9r{64X8=x{Tg&~}@sb>R5BEj8%*5;KSzA86aUc4g0L!3e6~P1782LzQ)j6u&(7dpD$(uhW?XQr?!MN+O$N*H;KCl03E8} zvWCM;p!&hB&UJ$v_t2KZ)rs7vh9i%=K0THj{5YLB(b-^{&1XM{M_2<7INOL7i>Ytb z__pazk~X;85alk!^hYO`S%yiEL%+wL0p2PufI3E4OJ)@#{D8`*^f{73Z^r-lU^cwB zt)u470I#ht;~sgFGae;uEW?*q@DCC~o7Gsmn?N!Pr1R(T1yVs$n3Zuf|8kwj`T%So zH1#+uU4Eq1k0bMe>BYo0$`1~_Ra z*&;xnP{9;X@++W$D{b)TYFeoxW&~aKP!bQ8z(C%8TDWQ~n2ly{T_k_-Q!P~MHMJi0 z7Y|PQqfC0dX#RxK4Wo~EWj7>p$z?PYV?P#leCpMK7t28o zFzdjssK*96Hag2sJ_@a{NnKg?mY(C?HFG~&$CnT#5+tDZRQL7YBS$!RZpVbw5h9}zC6|QZZ#UqJF8}VYb2XfBZFFEBvUpW1-%4D%4rvvR2gzg) zw72Mo_5`*eCqT_MmjzTq70nYy4PoaqzlGBsA6RCV!l!Tie91#`TvS?AdljltwTF&J zJHZ(soyr1|;H`I^OZtwt^M4NVkjgBxJ}nx&gIByO$PmM$-U_KcFnv70W7==83~55% zIW=8>?!+#(gPcZgj;JB07t$m**5@}6?+g;?ScQ3RnQce+k#gBM+6moUV z|Ds2 z>nBuAW!qQO;O>RJ-c6vvJe3_Ky&zU)L%E3|#gLlz8UgK31#J!8?>?0Z+f^&QymBRR zk}+@S5WsGeT9YM=XYD}n&XOMBb3l_Pxe-<6+S6Rg&I~e>4??+>9eHjpm2KW-@AWT% zmbHJ5UbG|?F?9M4eK6Gq++1QgjUl@fos0V{k>K5D zvYZ-aY+f>xn{QZ`Foo0IvLLB?Z(6f>eYPzRW+`#{J|5^4m9cVg2ddg`65_Yx9sI%d zgy4SQ7UUMUHr^ktSH3H25zDmybsLzYS*45JVQU+Xu1F!IZAR}pF_op$ssR& ze+Q9|G1g-K?Z zX8`vfUX^XD+S%{)&6W0y29$wEa7`PR*O*10=OKJXtNF7;BN4oqHuYd>YVctD z`e6(IBkIv`fe*B-|79Z93`=7}gaCzjPU@dCg|ZB&oFL%)Gw4To=A5|&KtJrzH`Dx> z*M$#FADy=T*;8E;%Hn=5=>7h;iR3CM9L_m0;@@9&#rG;(S=wm7^L+EQ*Q`QQCYZY? zV!2_A3GhRAb#0Y}tlla;R2td~j^LhU&|ryYZyOBKkjH;4&>rAbXq$`#ZgYcm7u7(! zDj-+Du>~QE*gji{>@2)_(}|s=g46ol;>^v=l~+hpZGq6%-LrdyKbj=gt_oQfpitn| z{bIxgqUT^M3{*DYKIqQXA3?`rc4T*`-04<@gGV~xwJVr&Gv7<^ie{8+s~|DiC%mie zrU|^Czw58XeK$!E_*{gwcZQg@B~~@KnMa@NWRJG9rPM{4oQOALd=HfM?>`B>7bF7X z_*@h~TjdI=F^Sw*mpc{Nt2~uw>wJ^b;oCD^kxsGuvv2;XRD9?|zk4HMDd8rz$dOpX zK_0rY5!~M}k&BxXVz~jbY`+R@D7MLxwPG4$LE}>q5@56hb7E^ z8B`5#eXVMUk-D{f4|O%}wdxxi9;gg4IdG2O!OAMDRr{Q7UGovD+)v$gvR%cVd!+p4 z`<|R|qjWMtq&Fx1DM4OC1f4^cY&$+=I%3}1aFMUyfy$oRQhrsRRDX~oxTM|DFKLs~ zZ$Qr3A!;#*mzpR6avDX}^|HQb8-iQ4AX=`ke|_H)nYAJh+DOYPeN%80jx|gtKN^3ix=|IBQ#r+wAm zB*Sf%O(kNl2zlHmyY0POgtyb;Ckgp@(`dU7SlsSgP25WSpQRwS3jaHVm3yW_KWrY7 zf#f2Mn`eO5BqHsi4bOvluVQxrRgh7jIGZL0s=ML6#tgHA-opLDp~C&XU%BJSbk8ly zZeI?yFUvl))IX-!x6%KqYLlxPi3=xzABCk?SL|2Vtt1HE;l=^MCZ#&_=t%Iq1l~X5 z18RphXmB-KYl#A7?W}3Zqz5To~YOD30mR+qN4l21JrNGqKxr3%tc_`v5mmW ztYPyhuh&dgl+-lV+81f=AhnyykxaBD)kw}h*`&tkyHxW9{JRtdd_K$rM~H9$mQ^!& z<_IWzG7=`L7#C3G?9Nn zP;bn;^F4XN&KlW6zS!k}eF8bbTS|9&0q)~zTWSJ2MUn_2cPuJsj>@{pJocaxO`Iv_ zey25C)F1f4q}Nn;$xvb+<=L7J-|A<4`0NDQr{HOp%Ucf*`6JM<@v4qui#W!t7Zjhx zmToh?O9(@1rBMs|MjgRcPV8@v{OEW@ebbXu#i~#PVRZXNF~0p4e$2{wHw3lpdd@ZyI7A4+rOM+R`#DPJJyr z9`DJkWw<>6BJG5WU}d8b*RHf&u?}N-^TA4IJH8mn1)I`$ggG}#&YKBNj*HX=B%=9C z(aFAv*m zC~w*zxfJ6IW;K1;CU9Nltj#M;+c?;d`lCp{(_!Vy?FAad6|}*;nwOktWU9X5>2B09 zqB6&bK@_)vxI->f6J)}FsF z0ORD%Poc~Pwi(^Xhl%K3P+(-?;iLU=^&$-32FIE&7y4kmzAC>@ILPNU?9=K2s&AKW zleH9L@Kj3l2$D;iR5m;VdHgM`0QlR9n+OCCNI#LzFc=gD;A?LZXb@2oul1w z20qq4Q}6jxxT^V&$Gs}F$FVUDH`)nK-(h{AwZIvHLGFmE!O`%+_dv>TYd!0-Q$3k8 zKtxPMcET_Kgu8(fMJ+>D9z#w_j-2pO9LD~#!P`fSV!4e*%l{~f|5+UW&#Ucc(@{_b z?1w*y21Bc`QXTL(I6O;oDdKeM0F{e&$h^FiznW7S+{|7i3b`LguDO0H3nsLPLSm3wugk^|s2}S+{U;OCSLBlVGX0wcA z(ddDw^O!ma%{kw)y8@59)Xz;L&KHxfw0(A*!qya@<}JtqpM#TKk5!c8Qt)LPT?GdyZzA(Id34n75a`&Gsz%`eX5*b3 zQqJt2hlUC?pb88F^Ujo=0m5~cV9C=&zvJMQEb`kmIDX#pC_!!nx4RvKAARUuIW;@s z8ms=Gdaa$}LD~#xKUQSZRr!7ntYTo?P6$vpC8Q&~+T+P|DTzNw6OFMyYY3^;`>00Q zBC(#p^x*e1bJT5X1+u&GAv#62+cU+^M7oaT*6}g(=1P5NYpfXR!tsCdNB`uJ{>PQZ zbeEBU9Z%WnD77wBV&aa)U-Rw_MmC3Fe{2pmdB3mPa7gC7X{D?X;Wos%XO4X z@XjV6xj&MGI?WngY)N{HTi(oYh(5sBFrmBI56Pcq~b5R&E375^mrL zpu8}}?rY=f613V1CwzzO5bHKrlG__USynd>VYm$BU21ov9iM(>I!Tx8B92+MG;-Uo z*t?w@D|YGMQ|y1ew^K9Knj=G;6@9ubynap8&3X5VU5~tw_pC_e$5_m~tHh6KUUNd7 zVzj@w)E9UA`TKBY==4Gic>X52pi)(-)3$HBXBRo|a4(2zxaFgb)3aIy6H``?C$C2; z1O}{eFr^=#5@4}5?8MYg4cR)&jNc#J7`z_sLO~rm^EL%IZLViBz8&ClG#9LGeuwv~ ztju>rVM*!&)-&Mvl@ib5UPtKesrcHW4$*BD%*O37Ya&ML6% z;0VK;{akGM#%_%e^&CE|(E&PCzTi2yMo93OMqedkS_^o@O z_C$q*Y`q13I(YLmfRYV+VcO>H`TUT?UP!-t-)NsA_X}NBKHBw@=!!^(;f^>aQXD3F zE=*|C07ucwhNk;@Xrp6ZL+=3B9%`O^5b@t=!v9ViGS*_%#dT)Z^$XMzTTAzpjN>l% zKqkYJeD$?{jZ0SOcKn)<*xIw1FzSqIgVBYm^w+rZR$PSS+5D`DA3IW}#ml2`ldW!Z za9WpO9Ra8egOtM2r*cb55GW$ZGfI-=N*vdy6WqleMRi>|e_H-fV~#|zJ1{?Tv_pQh zCvZ}?2g*(aPez%fqx|n+l#;3_<=5|=D=3(G1=VMr5a(;+D8gnIA7{_$@@gh1h)rSE z<5-E8Q2h=zh8XwQV+=uw7)nOWH=r(AVq!ec0R7wJQK~?xwv90xB7G>RM!h#Q=;&pQ zV3R+&wuxp6>O++Dk<&c`EL7l@(38CE;xrSGmgx&h>w*s6$u$GZMt)p!CUin;;B*hR1#jj3gIOfM9j#3Xr>59&XU!wK<60%vl}Ht3^C)~Nm83;ecDrmMt*e9T>b($DJ1Re znxe!0U05m`12^yS-Ohhp(kuMRO|BoO5K0?0mCVj`kSV-W;nz~wiYK-x3)W)@A z7ttFN3QGt_buy5D^I+z3mqToE86?6Pz9&)xQ}YM8PS^#;2?C{xK^-N>luJ<26EbI4oh~sBCQr4=+7{nb}H5eOYScE^o6Z} z1;P|8ouko)=x$mkCu>}y?y0!v`%5=21qG+%a|u#oZVSy4?G8!ifJUbTwv#GRMwaI6 zE=G9Z2=Q+7WPvvQGOLu7AH{}ocGp&kIXy|53^Suz2(19%IB_n@J z`v1A@i(P`0T51bqNo3?bvy#nVi^_lZb#27-osvN`lGz^|75rh+T6@5JDOxJ**fQh< zLZ*KhL?np5odG9C9Y4PqiH&4QR&`fugm8d1SytfYR=aoTBP^R;@^d+7c z`{OQ~fJHu9TBTEMH<9LVR`8$l(0d{&E6hHHBqq*GyT5ITYWIqsFl`Iv+(9{*)Y?Yh zs)&3~P3taAO2lyP$UY0R=7|)PD4Th!;)^pt)w-olB#dWjX7f$^j7*xVc~hXK%jY(y zb;PdX9tu4_bEWW;@iVvYMm8}gaK=}m?h8dFF_x97i%TzwSDWim@r`$z6!7)%FYIW8 zL1DhTD&JMI-ug4b3i?hqt5-Tnr8A8PlDCy`rM zm0@N}e3sp;Q%BDzLW627heww?*>`a25(zPR&z*TaN+OYN{F%v>FU7Lo?c^qe!LwFJ zD&4Zz|K;`CPr5ai1jL=QS#OcE(N1UvO5Y4a=*9Mtor?RP{I;LYp4(`J$q4I@sxhIo z7uCXa+G@P)t>ZAM?@n(lTg6J#_OADdbcPszc87ES0x;n=}R4 zY+-_qlR)3P%?U#QcBGe8L9(P$q#Nvp3>50ttf%``csH?uHC z?SNW>*0k)bAfoftRjK8}I|nYTq>5TTTH@;Q=nCWyD`tL@;PwfW=qSLy!V^G#`!R8$ zN9G~7{Kh_%wfgfJpuM3Z*uQJ5w8db*$Op~3tBdF%L8cM= z=H@Cl_iugu$hseUpiPwi-U$y4vE$)~L*T91sq-CK$TI+FM)=1&{%2-RhpvB=trZ@3 ze>jbfVqU4@Pv&~{@=l2F!!lU~U{5H$|9}PLzP=^7bko>NH&4}IaqzH++xkxAwAxSU zN3VPQ_HU>n_fR$$TaUBEC*-zQuz4*wF1Kj637zCCxV4JyeFuRDcb)t`n+Q}X``MeW-WBY>HCFWns7&7U zUR4Oy#@-Dc-7qdR%A^0=Q#a+D2isbVz80roQc1MrbboNnfM)ULMX68ouL6bBCU5N) zq;}qeSL>*A4~6#U5a9;6on()%E-8s)V;0(ikrzx|bI$+?!CB;ug8+Ohr(u9ZoCFHM z(zgDTzQf)9#*FXK;J1Iv*^etLpU^_f4p6+r0g0BR;pifGK2 z!yBvvy-x2rD+K2`Q*M>*M+Fpfh_7*?;Gd9=8;6+kg~ml{TmE$@$)wNw3~&M2 zSzDz9em&bhp;Cs)N#t4GtPWFV$S4I`H~2pL^6A9$g}U_^V(KtdDg_~tOz{C5fcEc51_*+z8e@FO%14hYv@mUp4^nRJ-s*YQw?Wy%B%RU1Hg%eOYO}vy=*loOb zh)!^cq2OhLT+6Chcqf--}2#4IUHiv?VHan*albk;*-T0i< zIqx{gyrd@HFO MmH(9kra2q`UzZH{A^-pY literal 0 HcmV?d00001 diff --git a/APED/app/src/main/res/drawable/red_signal.jpg b/APED/app/src/main/res/drawable/red_signal.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83676acdd57a8b120e863da1742e154f4d9b1111 GIT binary patch literal 9473 zcmbVy2UHVXyYA3?Q$TtV6afKgQiKFWK|qWkT_Gw8Vg#fL7zn6<(m{cb8WfNwMtTpO z&?CJQn)H$&B|u0{zH|QbpK{MS>)yL(-Zisk_MWw$J$v5w-On?WampOPZERp<0MO9T z0FS5}K$!yc0XkaRzjtb(r|t~Q3=H)246IB{jLht;?Cfl;Y-}8yXSg{yc{thFxcRwx z&hql{@v(EA6X53+IK#`w`}ad==%{Vz8CVz?Sa>qB>oGt)Qys6KJx**wCWSjw=Asu=L7_WE?ktkBrB(;epN$LOI!cu zEd#^bM#lFoEUm0App>euX? z+;4gL1%;($5!J*-i(XsJ~$@zuFrQgddt843o-9LN#2ZzL? zz~N}8!jFyE?RneI(nwRanaDerWzd&J%gk&vKB=DiXB zrKFifO4S_C_r!C6m0wzI{sQ4|X#a}r{|?yO|1V_!1oj`eCINOj8tTiV;{m|H>HV(} zmw@eJN8%NlTu5S$e!QNNgGGS3sI=CJHZF&hpQ2|g4c>1s{JpSAb>U=eF1OuUjS>}8KaV(84gh+BMu z1cJSU)DE|KmIOs_PVB2+hGCA{X};`VSlLR^ay&3SGsEcj$9|d|Y{__9qFy8ZduY=v zQ0E&3SlC#(G!!2thEt*dcEyIm0U~CVi=e2gQ&fd3u6}59I>7%W_#j|&f+JzkelDWrU(NSa2O3@6IbPf;(l&Y7x7yvh z-~QST+@`?xu&HABi{i`~{c>^zUdQ90NaTmQ{&PfU7@RRD}xnRC~Lbz-D$(U*w;Sw7O4Op7*X zWkO~AoHz##hL#+DJfxPU#-%$veV+3jU4oGggP?RA1DuJFeDImTgki}ktFSE>r*}Uu zd}hi`DOhvnmEjB%Dk&#e^NCTG_3E3QcI=c&s}U?izNtm@3Bg1WaFTmOsb0vcIEwEPplx*K;IaYt` zo8NuYBnn_vAJH-3uX1|^lC_N)XBADVl9f@2z9ouvTP}n-NDRW|oyP1M_R(p8PS>k> zl{b#ML2v6-9}?FV#09$)@BTVuL%XJ)J_z|{_?!b(C^h_91XHTqZ|kJcP8^%M~8$FTx-d*lGQRVN|iqG zfUSfZFR1s}!=DmS3o=rsgD=(CoKAjhp!GmMJdPBe+l#quath z*jV+CMjIzMp;!Dp!UYR>cd8d5q5$OGx(sE)K z{kwJT;n%*S$Da+Z75QyjPyqH$;iEC1%L_20?D;Y!rdR4uW?73O|BN3OH6hNDWC=n% zO5r|Jx<-Vg5D|kH`X#7E_}VB|GwIMl z&%x!14fBx5W9LbddO>k-eAKi}cb#G}aZTEA`IsjW)KK(m%PFBR!NM~}n-81?noV32 zPw&#aW@L+eR^$f6TwmfD%y8ht?<}5uP;Vua9klbc)5Bo~<|DeqqNXUO0lY0|&WyN} zMfR)5fu#3B|W))k7?Ek@bq|) zoIGG_2hklKn3`&f+J#6l+|;8wTt9%OOUL>*4g-zR09Rs!Nk^tR!3hwJ|HDI}vp#0$S~TNNf*UZVNnRXmp- zy0O1@YU9HIuIr?C!bLmjcobF{ka{Fyp=FPdK9Ln{A@EB|a} zyvTa#YaA!VSdmyA?Jwl#Oh#-XXz!)rt|2qXjaV+vx>bWVIAzB?_p&z7g=*p^501=xyrUlh)-S6*D5{{=UzHsqTZ zv#;0){KbhF=?r*8`X0dThx!q8F{mFcNQ`7J)kTh1(1J|T;Ebd|!%;ND=~u+FVo2+q zje@4{;gNyn(nkUa*2cU=qILG&+?Vpk0c|9#O1Ec>Tx4+)%JBpFZo(dDDDme+KkGgQ zpILt#C_jkiB|Z3bz1D=oz;rZ5kKHuLo7@jBA2|&7d4LGV@%;GU{g^YY*d7#sFX_eP z>oCOaYAd$~x=QEXRcS)G%~5~^Fzcb?r9Ro4Bvro9qW48|>e(&|*t(ZHQs}A}zlS=W z9L=FNsPrIaxD8Be%wRb8bmAo8Y$xjLpxzv}Co_}OHx9E-(BI!o+@6{k4N9AMNQg8g zp2a7(1zjB}xvc%H5Dyq zZfL-}3SK8eaEm+^ZuTQGC6!q-lv8tO$KJ3_;f3x+zCi_~_xOxXwk+Y;(2fZT5C!^2{ikwpGnet-Wk`|#fUdeB9kE@Z(h z17SIBu|Z7qMvFzf?RCk3cWZV5hv9n^fY+sLZL;|L>!eQw)-jgTTBv^HTZCW*S7<8f z@-yeboJSWvqz9{Zk&5;-T0pX;1m8&a0-NqqeU&hJvCNSJzlV1`c*>^91`9#LZLenK zGc%5a525ZvnHAKQ&&dU&`Oc+=QiJM2=?lf%$mA*~YNF>UzWoVT70`Q{NWNyj&fdtS z^WYl7Z9?iI(n}S7sGMi>*P)Ln%kS{&u2UHTW2oao@x=|(#wwFYmtP%(pL1`Op^1$Z zV@;xl^VX4!ML8)?Qb*cnqL<*R=hH)wI|h0r`R6ze>9H0HK-bJLO;M%q&$nRG!lN*8WQIbYj=#9b8qt|_(mjop_LTIfV0D_Bnm(jCAe`#&eB$m ze7wDH!!@xlz=Xf6oFu+kIv+kJ8vW*6Yon0q9PW(mO!m(YKiO#(i{G3>=aW2h9zI>b z)~~_9w?@8>mQTSt1=KwAb$m68S(&-_)Q`HTvy_$?N&(oU7Q@3p=WKhHpQHJseYRYg zJssbd*kp@!M`W*F;;g(TFeX~IPXR#tCG7D;uhy#6>7#y~ zqI-ysb;xBfokjVHpgT&UGRny|-Jp73ruZq`cQiZFtm2oeF#jk|A)3po=` zcI&AdH9@7NI^*E~W^qh|=#bMSw0hTEBe!AJx@z*^j`-7;7|??t^*{UCT0(;SH=o4h zNrrSV|47%hzVX7t`CY~{3$G{astUY${6s9Q20G!qkVlf4Wi`20qw(UZcx{|m4ox%4T~5${HDCcfW30ZG zH-Ky(PZfxYRDKn3H|>N1%wsz!0L?}M8QUnL6PYzSD?TcHBD&<>^nRzMN_T(=-Yh|t zEx8s)?R9S8M38y8{z@cX`MJRd>tjO2Il_);gW5ZspCoASfoC6zys^NQVPn%UI9BhX zv=ohXE2$IE<_c2f3gEciX^F1+k$yStZhDnrzlRkg?*>Nnx?P4P!f+&T1&1u905Odf z<^F0eOTE9MyG{}M$JPyFO%#BUWJl&BjHFLZIL4#h{En?>U)@oZGUEO%!f39`+~s1~w)3CN4V0f!)Pul_;eG5dM#&+BZH1(Hu!SX7LhPS4vg>Bp$ z`Aq@tf16U9iq-2I+C!yN!#=3u`^;>okxQZ%v?=0-A8D}vTXKF-&q5V90&pXEvc zgpQIPx?=-~q{(cr-{8{v3q6j8m;EwJC11E|p$Xr{`g**MIT(1&Za==odynRSHnXgh z^~N$pYz|(jt&Y*(cVZS<)}2Ebel)f^Q{3|KMuKFo8y(j-`CVhd)XAr*svo5utp_q| z@f|4#A#FB+rmd>M!VW|_-pIC-$Ev9ud?CBrq_e{B= z`!@LgqGu{ck-BA=s__Ex(MB=Sos}k}u#VJsWSn8(fe{vxjQC6)?cf?x(HLZ6LCQ7d zNFf01Fh5xmP^)4ZU_xd&xU7MK`S7m3B2;_qGd5lao!ux};G$crqN!5J`wSV1Kek?Z z|6QLuAS#NiexS4&|AV^Dxw_Dm2GUn#8hQopf{ht2qU<4YjW11a6W<-Izw!O8ro{Z9 zExU5Dl@sP-CgQ_iN+yt17 zbS_Vp0ywa55#J*6QE5-tVXM^iXz^4C%wQKoAMjji*Y2p{IF)$0xyr#B+z8jrDOlna zS~pBJzJwAv)uaY9;D0lR!~^7}(SkuWeq=jgCC$YM`UMrSvBouCWOFr0t+B%C$VqP; z1yM|k_O3%_cpRMFu)Sap5`|Pd+YeNId1$@3vgP{iG}&S_RZIwL6CXzby!pYSjgN9) zRqiUU(x@NFoS3WNrv17teI!ll zc#+6Rzh$P=-yEl=f#4IN^_R8Z@|@G%44MwR#aCgA*w919m3d^Sv}1K;@=K#bo_th3 z1#q0|L+hlloOHHP02~LIZ@W0Q>FM`L9j3+iL6EI6LMU@{LXXK`Z{E3blOGMuKh!>j z86M;eP3fODs2@BI9fiv}dZL%FKF5+H3(XXi75ccQgw7tsG8%&xU0~R`#6KqcVB_PW zgVM5-*R74fi*?X_rZ~ue;lACG-L0ddxj)Pm_DEci=;*<;u73AwSj2rJ2j$}r|0#X= z_cY?a9Iea9-Bn>d3pYfztn|269F!eW@U*M8#C1V|xkm`?^%k_;xkXq!x9jlKQNmfd-Z>Zp8#<9IKUTQD4=(75*i5e=W8uLEx)Ib8Sy85%zG1WED=9ltwJC{gh% z-G#$TZmfWVp&QV<2zl&+d(8?Ge{Y751U@l>3lj`{n+t7l&sCJyYHV%?pTZYob3J6m z#fWQAJqpkaAxT~>IMJE#EA3YpLvxN6s|U`sT_6=8*fkx=TW|{SZRS?~_|%O4AAKE@ z^KS|S>4SKCCvb3!q3{Usv;1$6RM#_mOPsguadWs_xVy}8E3!5~=%i|n#6v7<3A%z0 z?GWD@HMkvq^4J);f^0#Hj;bA%XBe;d`^c-EDZeZ5D9lP?taEuU{b}Abxg8&_Vp)1z zeR2O?V^<1hN61yHb_lj?d&>Pb;!@6)e-d~9nZ*0Y`H#H$?Sj)!-vhHU>J0gMEaEx` zDlJRw?k8XV;kob}!(%j*)Vqb2_M3D+3pM22{ngsQR|VRcdb0n2ECve!}TulzfdR&@T7tFTXNC*W$nT?t{=Mk!e&F ziJG4mnTG;|9^CvfR^uCosJ&7|id}&^A^3ECu8Bv8(UlT2@GEWTvyGNlYe$i~k!9?g zf28Du*IAhGsP4w#!?En3a6I+@5_w0s8OGqL&N{PVt zx$!JW!o`83%zf`RvLBsz_r@i`AjHg(;fX2Ktd-sBry)D5)LXvs_>kzrE4)E^)-%uk z@-Y@U#V#oE`h_^9AV*}cwIm@ydDrIx`JvpzB1mbdMtwpS+jNNp%~2d|57&BpCxA2D zF;71_>8G^(PWhuTOk)YM^-lpY)jnWB<{**6#{z*(wae=;&Zd`LZys9rVi)VYd!>poOCMG3|tD6G6 z7t^B7sF1n32S=YeM-(FM*01(6KX>EaderSNC_hx9x#iG@$F+MBW!io@(4Z$i#`xLb z38@QIHW(Y`8PpFJPF@H~rc(;8cYalQyyp>{(0WgLVNtxLbnX**{4vSI&gw@px1rjd z(wpm|A|hetDmmtID!*TA?o4jX4f@@0Gg@fi2dlPDVs-|8!Ar`#Vlk+Bs7C2-0CxZn z^s5-_us2rF&+ShW`2yR;jDVa6cV-?tHUS6AXcgiRKHP$+ztEGRczpHhR996srbjOG zI(87PuhLu%nY{iSyNToQ>(=@vq~)dvZFpPy2fFOvswi6_&-KDlQGP`T3^%Wyy!16E z>;Lo;vh39BmVM?owQTqhtZf8TL^j^{-GwQhgS>8i!R>Lfe(_6(+3PvuCU0I#M9eBz zm#hYcH#~wX<6lw$ew~MK+wV6G!#AP)R>hqe&2vaghnzzl?@knqF4X6RtZr;)^+{yG zlBS?}w$d#2W}SZqW|IQow;?RVAbZFAH`E)TXZot)1NzOkj*<1P!?DKueKL?_t6_yL zM}q_-5lPE!k6!_wEK{m9wCK>Y4MyZ|==9TAGPmdhD(m>Z%p$}zH_f%mO8jy%U4d9( zy4SkiCTv@Zk2e7vx?!34A|_{M3iOGnF{eg+J!cO#kz<%r%J6RTNeq?_WP%VmUR#XZ zYb4kDnEf3XY5L)Mc+QW6Yt5hR#4<~3>k;evTvPZeNQPl9gwf#0MG^K>!Jok=Qv?2En4YNIge{477= z>i9lAbdN({Kw=R%yODY{)eO2!;0l311GnHl{^Zc;NcD^@bwKoR*m2%~u)X5cJ6__} zd!)Bdzr|}V@NWr<;-oK)tnW}_!2J;;UD^DU z8pU^45A*Cz8Pi}2ebYtkJnZ$+zXEklHO%TO2V8~Lcg;j#zh1j%?buFowPsi^R4ko4 z9#1yL*E@S(ePP_^tvb9X2|+>c_@J!W-X;29_(htEtnOiJ{mWT?Ht*(R;_FuJaE$3I z6Pc99b5pXfcD*(3aLMHa-Hb`WIKWm|m3>%|AKHJbGz93gEHM0?fz9Csz-y z*iKv*E&k5)VIfSNwJ^(oMob@TUZbCoF?#iN}}_t>-_eW$4~4#UEw{%{>^1&GiK8?XaS8i06cDAb__?o!JeWd9DHat(0 zl*HUye^HiG)!ku{kl0*L+?k+rMCiiUdz6mGLZ1-MZeZJ*!(IEd0|;JidK;tKDoY>m zi>ZgFwqEvpY3=R0#BjOp0PZ)V=-5S*1~FB4Ifbpy!5XR{0njo2=?otS1 z-lCrP1z+POH6FMHHICKNY&zYg$+S45{6}H~f){T`alr2m)t_?RH~MXMvY~P9;`=>` zFH4UInFfKE6w`kj8{Z2^n+2U_>If6A=hWkeH|9_6LmXi;#|6TTf*7drQ8ETc2e-x_ z%y;DG-Wgp-EH3k)Ro6P#pb(ul=f@bW>AbwE3YaZPZ}|J;6CJX{7ndjj6yvro&4z=4 zlw#h4Sv%DOH&KGBYB%rmv7o`!oyJ)>|F2R<`Iwn2UZ$4<<+ohlG*bW$xNAcN2VXgC zMPzy+T^3aDR1RoBYXmf(rt$2jbxt|X2 zPZnwqbi*KdUia38644ogNy|RbDq6Zh!Ol8+P4r{sB)-!mk|{xJe#D2kg0Bh_VBx)! z=8odsWt9}Ky#bCs(oH57t;x2iE%xvtt}YA4$f*4w2-Ij99cn_uknHN%2(*Nd+ec;} z{j^AoOjm_I>27Py3g8)(K8B+JEaWq*jVy3bs&9&5!m{bN?W3kYiUOQ0m|KDpmzo51 zJYnw5XqEvuL)O&uW42Oq6o6By9m3X{4hs_2KNyaBojN64$|N0Z*x={~S*&`eThxn|BlqIi$m%z!(fTi zJ;8}m#K`*&j9|C8vL#Irafz>yRHu zA0*X_*ks=zwY%8(=`SXK`0HXaUcQYxY4y0`cS9akfZG0dGhJ7dJKBvr-!4Rx!eUDnub*SR-Sf-o9BU&AlIb(c3IW~53V?ZUFk zXDEHlZv6(oG6!x)L`CyXx`zulr?USAo&w2y{Nj6mR^CB6NQymL!rk*n3F$pVho z@ZD)y(It1;x+5N%Qps%^_k*HYoeI$c-&kWiz%+X()$ZTb%m3k+5OIlCe9 + + + + + + + + + + + + \ No newline at end of file