From e89e64d0c6d06c4ca7585070d99ef1719afc161b Mon Sep 17 00:00:00 2001 From: lausaru Date: Tue, 9 Apr 2024 00:02:29 +0200 Subject: [PATCH] first commit --- .../java/com/example/library/demo/Menu.java | 23 ++++++++++++++++++ .../com/example/library/demo/model/Issue.java | 4 +++ .../example/library/demo/model/Student.java | 2 +- .../library/demo/service/LibraryService.java | 4 +++ .../com/example/library/demo/Menu.class | Bin 8686 -> 9452 bytes .../example/library/demo/model/Author.class | Bin 1851 -> 2403 bytes .../com/example/library/demo/model/Book.class | Bin 3711 -> 4268 bytes .../example/library/demo/model/Issue.class | Bin 2619 -> 3652 bytes .../example/library/demo/model/Student.class | Bin 2129 -> 2755 bytes .../library/demo/service/LibraryService.class | Bin 4849 -> 5108 bytes 10 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/library/demo/Menu.java b/src/main/java/com/example/library/demo/Menu.java index 03c35b78..3bf5f799 100644 --- a/src/main/java/com/example/library/demo/Menu.java +++ b/src/main/java/com/example/library/demo/Menu.java @@ -174,6 +174,7 @@ public void executeCommand() { LocalDateTime todayDate = LocalDateTime.now(); LocalDateTime returnDate = todayDate.plusDays(7); Issue issue = new Issue(todayDate,returnDate,student,bookIssue); + libraryService.addIssue(issue); student.addIssue(issue); bookIssue.setQuantity(bookIssue.getQuantity()-1); libraryService.addBook(bookIssue); @@ -187,6 +188,28 @@ public void executeCommand() { break; case 7: // Call listBooksByUsn method + // Ask for student usn and check if already exists + System.out.println("Enter student usn: "); + String studentUsn2 = scanner.nextLine(); + + Student student2; + Optional studentOptional2 = libraryService.findStudentByUsn(studentUsn2); + if (!studentOptional2.isPresent()) { + System.out.println("Student with usn " + studentUsn2 + " not found."); + break; + } else { + student2 = studentOptional2.get(); + List studentIssues = student2.getIssues(); + if (studentIssues.isEmpty()) { + System.out.println("Student " + student2.getName() + " has no issued books."); + } else { + System.out.println(student2.getName() + "'s issued books: "); + System.out.println("Book Title Student Name Return date"); + for (Issue issue : studentIssues) { + issue.printIssueInfo(); + } + } + } break; case 8: System.out.println("Exiting program."); diff --git a/src/main/java/com/example/library/demo/model/Issue.java b/src/main/java/com/example/library/demo/model/Issue.java index f33df03e..634e49d9 100644 --- a/src/main/java/com/example/library/demo/model/Issue.java +++ b/src/main/java/com/example/library/demo/model/Issue.java @@ -86,4 +86,8 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(issueId, issueDate, returnDate, issueStudent, issueBook); } + + public void printIssueInfo() { + System.out.printf("%-20s %-20s %-15s\n", issueBook.getTitle(), issueStudent.getName(), returnDate); + } } diff --git a/src/main/java/com/example/library/demo/model/Student.java b/src/main/java/com/example/library/demo/model/Student.java index 0fbe2fbb..567ef676 100644 --- a/src/main/java/com/example/library/demo/model/Student.java +++ b/src/main/java/com/example/library/demo/model/Student.java @@ -13,7 +13,7 @@ public class Student { @Column(name = "student_name") private String name; - @OneToMany(mappedBy = "issueStudent", orphanRemoval = true) + @OneToMany(mappedBy = "issueStudent", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true) private List issues = new ArrayList<>(); public Student() { diff --git a/src/main/java/com/example/library/demo/service/LibraryService.java b/src/main/java/com/example/library/demo/service/LibraryService.java index 3f16ad96..e966c7f0 100644 --- a/src/main/java/com/example/library/demo/service/LibraryService.java +++ b/src/main/java/com/example/library/demo/service/LibraryService.java @@ -82,6 +82,10 @@ public List findBooksByAuthor(Author author){ return bookRepository.findAllByAuthor(author.getAuthorId()); } + // Issue Repository + public void addIssue (Issue issue) { + issueRepository.save(issue); + } /*public List findByUsn(Student student){ return bookRepository.findAllByUsn(student.getUsn()); }*/ diff --git a/target/classes/com/example/library/demo/Menu.class b/target/classes/com/example/library/demo/Menu.class index 3a9d0511bb61fa7e18321bd1779ef94540b77f36..e901f383e65508c8a145f9c0a0e5af31f8820a74 100644 GIT binary patch delta 2314 zcmaJ?X>e3k7XHqAw--9youv2I9q_S6#TW?4(jp)sLR7#IcTs7{LKD)B>CVUxtJ*2X zlF}+my``2gqvA|e(3w$5q>+}IBCe&lVU=Q0i^Ox^dvRQ<>>u}?``zy> z_dECA{;c`aR^Lk}EB^v;4&`_F_V{VOe8InP?l9i>VHrO5;}fI_-tNxg#o6NeP9KKx zZ$Azz(8J*JOfO?c@Tmv?_2Wu>CeIEmbbs#0L-<1eG0^7wN||31=A0_GxhLHfOq4?K zV4I5by&p%hlQ4$kv=$2eorMs**cQSVZ1ds=!pueae2;16HGlfG7yCOpb462S{s~;! zS?ur2nH`xTS91^}egfQt;D)|z&W_!h>&kmcBSdOiHfD?2T(`NQFW=pl={?g+LQW4h zdC2W24|(Ofpy?r>A1N-=FK?a#qTY$OO7r-V&*& zOXXvc@pQS|&-Rt_Xk-bklIKRpmArHfVQjl2h83#6ko#4j)r4`Q6f)Ol3Y^BwDycin z>sZ?YC%cXiqWZ!w;IvuorVbx10ZMlN0E7;+{^G|;Qo-zj0wMOl3 z+)B6)L8gStDwJj_^GQj`ne>UgKe;(}w-GC&buX5s<3_xU6=k&Fj~+QMW!9)bMzW0e zjIjEADA%MWls+=TWgIe$C-I*O{%7YzRMikw{vTEFr33D>zzV)`=1-~A6|Q0s4Q0$u z$F2D6vnOpBMj6dp5LPbn3cht*HY=Qq8%`&TL>b?ulO-eRY$~R>3?8cBm_uLmf9SXc zsf;H$qjI{FkWLw?-MCvx5?9t1!d@Iq*BNzXoE#YWcmN6Z2oou(;J0j@?Np8T!DE9g zFoc)*JZNd$K6E&>l}g+7xA3t3E*{Yj{L0ROmOWcIrViPLj4(t&Ud&O1^i@)Mo@hF}XWjrsQ!3*MfyeMABOX2|b zi4X9y_!_Ue1YUFb@w#hj3Hx2s@P=y!-gM2v0oMY&?OKF`t_$#vs}1j}b4rh6D$PKQ zV#H^c7Q#;nGWalV#R*C>rr~e+ic(a^XZ&*v&{)O!nZ(QG8Sg*Ve2Ewak^>jquWY)=^H21l7<~RF$9!N!w(le*ODd9SunR9?eeW!DjIOOb_lkiqhB- zz7tNKDlexyfAkT@6uu+s7kmm$R}7MC7mXQ0gL)W9y$g!RV~Fq11^m_MLK^*NS;my* xjLqlkv4+_ztg+1++pX~uYrKpa)bbV9scTXg%LO<41{h@(%z2 delta 1516 zcmYjRZBSHY6n@UV@9tf8@3MUD$7KOwSH4m(5kwGk3rw*P5{q)O8BHXHP$Qb0#$+0Q z*kt}_-sxk8v4Os@4@;m{Tdk28$7-6UrkVa#KgywDr~aJxoacScx#xY( z``$~9m+Rf1&nG?xu!im(cAwE{OrF+J2^ z-I2eyXHQ4Z_U>{Q{+1_FD>PiwF^f4lk(#ezUWWqJCiMlJk(x=Wr5d?U6H3gvX5 z(5cZqggkch^q19aFAk^$BoBukq#8LDiaM5XTrPvgWP>znk zYj_eE0OIfuDM#dB_OA3I6ZIzWW)cm^Q23Dydeww|2@KmXN!cIHQRp%GVYr4?%bD=g zfoF|C9F1quR2wvcaWu!#`Z9LN=W_BjBh$!^;|DpG6WMve$c*DB!#IVB1TNd<;5WF3O^;^8H zevfz52^?3a@vb_H_k>L=|P`OOjqiYM4wWG4$5PqS6PnxX%Q1sm8;2unaUXI zD4z?aD@XAt6)?}I9K%BtVP2ZL?FLUZ&`eR2r}iU{7BkPU9^(cJsR)^@Z5tI+2||4= zaTArYYp~FDbQ3K>HjiLGE#>}$>OR(>jFU6eFLB0BRu7U!<@~uUb8NKCDm{Tgx|y+n zd9RZXp-r^Va#n_@g6F=M-+`_33aCl_D$(akN>s%X*}|-3VQe+3_-wWYD_H~kAeQcRPwCYmFsBUwo=5)D}1F17>F0w0$dv#QMF1+FN+iu(H$xB0P}8?PTl z)(?b#B&Shv-w6IWiR+^%GhYUoFT>=q&EOkY%d0}G&CtrOW6B!#mqMdEnSG08W0t+m avJIBK-Le}jyD^P6bBdekt#miF!T1+}z$hO8 diff --git a/target/classes/com/example/library/demo/model/Author.class b/target/classes/com/example/library/demo/model/Author.class index 6f8ba1babe31601fa8e983722fa5ef73ae8624aa..b4ba8603bf50f7d291fc1a8d6fe037cd82064ac5 100644 GIT binary patch literal 2403 zcmah~TT@$A6#jND1d>1t<<2e^9UY&1@HaV*-#X_2A%@{0d!M!Ux_oP`Z|(g3@2`IVn8ijC5kwP+r4dJ) z!u41B8=b3YdpEbf{mSfk3T-o%ZFzGF(ahvV0__Sne5JZ)RdNfis}EPKnwLZZ(GH}L zPM|Z5E?iTX*m0^k^R2EPR7|d7ZM)h%%#}^m$yJ@Qp>f^Yb6kb?ZO7RcCyc*x?psds zNxJM#qX#z>5;fzk>8era%LIBp(4yyB_HKTXxunpSM!)E`Q+K(lt%_h8OyeeQ@lg8_ z3uWfe;Gkf8X4klRQ5{ZW1aB$CY(G#>gIX9zw8qkSTeRXvLP!noq%n>OhS)XUQbpHl z43U{^u=Wp`&Rt{@m`o#!DTVIyY=d&stj&B~*A;%;ZA>z_&Nny=PbR+Drz`e`c$NW=XvgtX#puMUpQ+#|Wb>0j%4mx3;7CpVQzp4+yI<*UrgUa&RA#syMr|#~UXO@&U6~MhO zjxHn4GI{Pv(}r5M)sK_s6sI`6K#VJ&2q-+D)J^Fj_jf73XYdG*dBA5OyiRd{pTChB zp74S%!T&El-~}H+t{>7-1Rwd1#WK&|OpR}Ek{^6@xz15#5m9~t*RyY+vcDm*`34=Y zk^I>=|CnnRHGlzP?WN;E%u`ASHdvrNe1A&}CjR!QE&8{b{AH((8Dshwz2~0$iG!M< z=OOwZW;I6q2xEblFoI|Wg^(}FJc6gR?U4F_2LfUl&$tSR9Ct}7p8W*_Kk*|1$wYDn z#u_q+pJnhIpM)9AagT_0cIq_-&e6(q3%<5-O!yx91FbWJZDA(`SDa5CH-!Q|<=TvC zs2NkHB_{s+Foqakz%7f4NqeMw>A`BBsZe zU<#NUVhVbf#Y*V*gu4)ED?9ZA;<2NtztELE#%=QF_VFL&EE;$`3?^$ z4N)5Mr8|^HDUJG4AEhLvq%S36KOz=AqWh@Nh#qne9F+tIWsoB>f*Bukz`m`s-fm$P zYb@OeJ26YnN3c%2PQ(*k>L1J}keXLMA=&s<-YC4l=Uk$YxZK7dK-9 txwt6=9W8FQ3CQ9JrUh9eR~H(3Fdm|b;H9rs^haApy+rv7#^A#+`yYg--yHw| delta 772 zcmZ{iTTX*e5Qcw_rBO7f)j$L*YO7VKQf%``rKUf%&+pg%HhwWn`wpyJ2MAX;Z~9tsVvO=#G-!zNlx z)Um=)wx_vn@v9H9&5gCP4WAn(W@!T|6xz9Rhsxa{LQK-pQKjv$q>l-Di0^ef++%Dq z1}s#tz&1Aa8O=xq=FmlttEdmyx)XouK_nWB8DJ^XI9P zlGoBWMNt`*SA+^np{#N!uL#v8RBsGam`-6vCI3(H-NjxdlP8mS&G?42oZIjhfAlpZ diff --git a/target/classes/com/example/library/demo/model/Book.class b/target/classes/com/example/library/demo/model/Book.class index ef131c3db79c0ca7ec658c21da1da0cdf41e8cc0..c2e32213a10cc192a8fec951080622a9dd3a6e93 100644 GIT binary patch delta 1853 zcmZ{k+jCPz9LK*W=OibW(*mgt*0xfO47o59nc_HFLo$su*0vN32x+}=O4BwWC55CY z77dD`B3_R-RJ>na@*rL+(;1Z~9(;5B4|vtlM_(NEyPJ^4kj|MsyWicj-~Ie{e|!Gz zsodoL`Ja^^0YvfH1@|Vk?1l}a2F9>cfpa!fO61LAQ9(x_IGQt$nUTDCcs3$C2i(|& z-8$|!kis4X8|3(6DVvXsPvtTPOPuD&99cB;Y-|ZMOs@_PT-y_z*e*;TFt88%6=-v2 zaZZ6RFxleMVK1pC3{2udt6x3gc^HrAIAFlUl(nMvE7R5=s^2q%Ssil*vdCFI+K7J! zc?0vvRf8LvH?w&+3Ruu_#K2LANUdMAj&IIuyKKqM7SO>71xi7I_gW+ZPZbJ>Xf3!C zh3Sj}H4q%OesdJBTR&JRl!~RJ=E7K}G*_4|I`Ou3T)(6JoEz`rJst0hP|jPI^k21) z6l}JB*Eg#=KCymsMqMR_>VSep%kJ{`3AK*Lbd2?*?0u|=<53L?D2_bYd%)jo?;3cakoK?b5?1f#Nj)AdX&sr{HO>Vu$K+-GY;%sjy!Fo@xmgZ3gVU zy(Qtg8sUOxqa>_u#{gHltAWN*r*V)|(9{rO65*Ma2=QiwSW5zLl>prD9SmKZh9eaI z4)NwQN)YPqHJ}C?p#~+?vp7x8=7UQ#LnZ4_IkCT2kG+$5#*?Gd|DY1hP$Qf(x(3t` z?pfWbAqn*yo)=KopN3CvcQtv&>kN$uT}}n-^3C^()(|s$;MU0 zkgAg^NtKjJ*S>_NR=AidubmfVjbcBqbedOrg2_B7W9X|A)e|m@GkB3P^m3ceGDmFk zBDBG-w<~{Rrw(Vlo{eW@fG^=?vBzxh<*gQ%Gwl2UwzNv1?o?W16-}k>)?aPja_S=X z3aG}be4ybp!u5oBrJm#QnyXLv2{V>BOJaqgpgF&08r*z!w^!x=Z)pRUo|jD^_B9^z z9<;8s1xuM!+DXIYG7hDdad=Oa+@euI0!f9hGhN#Ue; ShvhANK;>rZLwt-+(e)n}k|YrT delta 1253 zcmZ|OSx*yD6bJDCl%cb9LJ3L{#R4K4OH`2X01*l$m7t;mDxfHqeJcf8ceL*Nn)|?q z&g2jXiHPlv~%yB+jD;R%$c|4|4Q^Pe?NT&(1_Q|dTEYc z!0}N79XKX_LvpQjS}e*HdA;aUaK^w{^h>A|GfJiSC0CU7;=F+Y zb4?u^i3P)CE6&xPDmINt6D{wIdj8- zab735IvK?j@;J!FG?&AoRfn~43Cw++0F+v)8S=~n5D>ZX*)4*4kfOeo{P4} zYk1-*PhD1zJK^E~nwZ5rr_)#U5sk|nIgmPiJarg0`UPC8AEP4HWUO9=uF0{eN- zs+aErnwOGc6GdvwiYl;+^v5W&4v=^NEhGdsAOzA00gG@MSC}`LjXb15`V? z$%oZ$p|0EgvgG!*904*hy-5sMm9?f{u-e=#Z`f{l|2rHnI3?WqdtyD^eJUS!+X~Kg zui!#YCNRVU45o$k+hJwgU_b|MV(kTwbAF3pzTmfUhZB{P`~2R;Q_ggbp5X;vq4+=8 C`kj&h diff --git a/target/classes/com/example/library/demo/model/Issue.class b/target/classes/com/example/library/demo/model/Issue.class index 89ccad442050cec719fdf51b020534cf3f1ee601..5edaceb783148f180ea7e2b8d8d6a69f39b6d4d4 100644 GIT binary patch literal 3652 zcma)8TXWM!6#h2xEk*2Z_7j1L zu4bejZS)b%sD?4@6NsBK&SFJij~|&LuxNS4n&A|r=6(%t;($P(()4K<-IfKp;-H4N zd$ zx{P{avMp})v5>?GoQ&g?hAEsD7*IQ2_snXLSX>q}p4Rm$Cz&82+VZZ@X3)>X!sLBv z^Q?xq@s2=bU3b?7h9@3`Xcqf$4uv?*Ys_(`Zd+QHHeJuCF`Ml=vu4O&Y})zTj%j%% z&oT5`A%RN*gNKiuI^m|8?~`ZTWD-{}9miD-*Kl1R-6i3CW+hK$)2lM^_rAsxotf4e ziFzN!IBsgVC5;~GVzjm8aoU~JYb=Xd%*8RU;WqAYFBH+Q2SlnjWO%Cr=i8|c5QH%p z%8S70-MS^qcENPb<*ISnvTRTHOxxlvj&RKr-SPDNhT*s-X|`63e6dnsp9uYR!>|m8 zgAt41kjQw7Pj<*Deyv@DtrlVOc5Y4jmcvhy=o>yjbM%Qfe2MWCGa=Mfdsh@ zlWz$!&rzC*W`DuRkDT~XN)kY8VG%yYlOVzi9Hr-2Huoz=wxaPl$`W%nSd3FDboS$uG2E?_^F1 zJcSd2DbtDRdMGB|k;5=$Ix*cOrd!)!@=H6wtRBQJ8V(4TD} z$CAu_hiLDM++Rq{$^tmb=Oyyr;v%JSO5;j8Nhw7srKB{aG^MnXhA3qyWt0?;{D4UB z3p(pn-C~ec2+SkSo6`vHU_bkrtf`a_s8tarJk&|ye$3z*J4p{dq1H}B-wtC^Bnz4KQjCThw#+rUI4P5qJr5m`>^wz-4V&~pHzyuz)IhhQc^x!iE U<#W~NcM;SVl)q#=Y~0WO1CjC_Pyhe` delta 985 zcmZ{j%Q6E|5QhI5LT*L54T&IBp)!LAA`(Jeg2a7cVL{ngu${8@5VQ6U6gE^@S$PUx z1b@$j8B@t(&N)5j@6%uR>GPI&=?=etJ--4d;^;m+r9R}Emz%7Q*5izVz@=$kUtkzP zs8j?v#?cQ22CWWS6Pzb$PhB95Y3nQ)+mfwrZe=*naGo_WhpdTtu2ax!&Z5YR z5#??GEgTEhYfv*5sR&aEhHYlxC9XsxC`BxD7X1np1?xL#q(vX6KQKW3AVL^I8{&VyY75%M~ka1d~)gfX~0F3fW@l&vhH38u|&DjpBKcerBKU7F0;S`5@RO{HV zsXjx!H*OXw#@21UW@pt>%RRl{ wOQ4}w2mos~+H>r-M}-X41`N*ADKQ}1LmE`Yu08JAkFlNhKJ5ci@x>kf0DL@500000 diff --git a/target/classes/com/example/library/demo/model/Student.class b/target/classes/com/example/library/demo/model/Student.class index 81515a7d87f7e08d900048460ee85b6d858ee89a..e44203f57ed00715cba79cd18c637a13fd56b5d5 100644 GIT binary patch literal 2755 zcma)8Yj+bx7=9+#Hr*Czp-Ef0M`KGqX#YgmB7-?Ci|E@AEwKUS{*pf4}_+;61FT5J5DFn1whJ z0=pl|uVlU^osImh^@pnB3nXT2$M$ChqUp>^5(5Hb#;E1nwfvmx%B`a9`6(n39mEi< zB!(@FV3)wjN~4}v-^hBirt&p=-IeZEzN+ete7#XswS3ucRh6SDY|m>ckMzZDXpLG( z5pj=&QH;^bQ~n*#5!jaw%#6&k@7m5rA+w@Q_gNU%rb(LKly#*A9k6f^hbX_LeMet* z)kcRcOlqT;L$4tm!O&l46-;*`L^hVtiY(&NF# z(wPoov&ge$kWC_IVH$4U$$h8FQ+<>9FlbacF<>#w{Qk;^DLXv+Y}g2 z-|u6&C~$D8<@k18t=OKuUQ=_9)9|HlHyrXEpvxoa`ZC{CuE$I$r=s$U)q=p`zFYH+ zTC47G+wy{}KG2aA7%bZxj`UkD-!BF_OyTJ4&J=ejkVRbPl9mSCLf;nCgo%A8apgH5GB9bH$=S{0rq*7`*Cc9&oZ=2_?hyNb4>Zno;{%3YQWwJyU(Mb=iNYwLNq81px6 z#y-7MSi+N0Y*$%?oe%`MyEoWbCFO56s<)-fwD`;^Q^O`P5$5|?SYPeju%TEw-6|QN zP-&sp{Iyf5VH4~N)5v?fx+2ui?&ZGjUP|QK3yGsIjJGukTz+ZswUw}B*vAH4AhTo8 zjiHIkfTO++-A?Y5s=!M?G`g>zuwnI0_2Lp7F8i|bs3eNr z<8RW#d2aBM=kr}-bip`Haq}W#xa8q73ilxtX84tvRd^p)Ft>)Q;pXiLBnt~KnWR$7e+?E>3Br2NZ&ynFmOSO;5RB1G0Ra0 zG?C3c!TxPR{cQjalXlXOj0aY2l0-i#KtLPfeKT zsB<3A{(}8K@g-vTbin~>!xiAg+X=qi*LkAXdAhIj$5;v@*vXvgbw1O_IgnqbvSr)} zL9TJs@vA+3%_Z;bOag4JG&L+%kpH{_L%FL3n9}tT^CSZ`$ zQ5HLJiT~9uv)Bu)!x^J8DECrZWeNANN@0`yC$YvRi{L)}h7nJWh<|Z5iJ>d)Bi!ST zz$f^WPo3Ty+k&oKn0f#r)qd1^Y`^CG;VrL>!xm?zxMcacmME+ zDMVn>FT`~OqcD);&E`JC-9$F9MQEGlm#txr4>1gIomWl^3KZvKp0+{_i&(nFGQzZ2 zip-_o5k(B{aqrnqx+^@zXaN%FBi8^1vC3Oi`(O=4-UPo+PS^Xf3w6PyXaSNwCWRrS z8ThcmPAa}p9}9-AQ<9S;Vq$~Xuw)7vgg!x8((}B>T`FPc3r(aOJed$dM_DtJt&b^{ zly(bLY+psVEkkh|46`e5rjvJqypug>b?tpxhFfR6o7iHK5^t4Z1o1k;8)}Ppn!LFl zywW-Y+eGMM+ib)FExuBW54x`<8h5bERRmqpmj+t-H>6*9&;^oV0cWDsJuB#5xrJ^6 zXF9=!uHcI5iIP^}vX*u_(QX&CPGFz70~|6?*DHmy*R6gQIrr;r^@#@UjB-$qiSw&* Wr1Csb>#3S^nfo)|&*{XU;o={~Av}@* diff --git a/target/classes/com/example/library/demo/service/LibraryService.class b/target/classes/com/example/library/demo/service/LibraryService.class index 0d11d12cf22a9b8397bafcc2a422a12426edc1c6..67731a1468c8a0618b3547663dbe715442f65174 100644 GIT binary patch delta 1369 zcmZ{k-ERz07{;F&rc=AKv)wF8OIiulS_z3pf;3{&NV(9YjTRTa(!D6vZms%eDQZ!Q zp-O$$SK>;eA?w1W3x9;fom+`Z5zjd@X3utaE_UY3v-AF*^Stlb{k7uv%FwsJpT7WT z!Q1K3J0l#%AtX&4*09d`F>kTcuGM^)F)B=}@<30|woGOyrJ>15o6F+zVN+9=2BX*2 z8=OJ2-jKTU$vW8CM{Wf)9N`^^qKfNcEspsmS~V8U(ri8(=!cF0r!SJw(#}MrE;>kN zGj*T_N0D*9MiTYM_!OIqu(Si>yjSz1VF<@%dCcx)dCIQaBg*SBhu5Si=UuE$;3VI+ z2|k6>tT;o}@|Ckx&QYm^_6O@tG(Z>{8q0*qd9+EB?{@8)G!>B@XoRp55Fq4PWx3XI zf!akZ=OzZ6#^{pPLd|MfvyktAVg7F~jA2}2jb}Q{FI~`OidQ^Pt_ZX?05qb4Mv6dJ zJHivDoD zndPz{t7c%<=Fy?!J!Kt*wzVi+wQXZr+%AB}SmpNZ4#m4}+}Q?+Ji1B^wgebBY8M=z ze~uh1lNslBxVt*bf zKLOu$19T{C+dn&Y>Dh5d{EQaQ(f^`Mf*2F@mPydf1iKU$^@L90Wg);6H>Km1yuSAT I+1>#E05bEZFaQ7m delta 1085 zcmZ{k%TE(g7{$+2TgP*_W-2vb3^^* z-aK}DYV<+>K;IBW4;0+z2m}!1+^$7%u}X`g?u_Q=+KpkjkkP|hQpxH!v{+z-%oKH? z9-|o3Gg`87oU71zc#Y$L2*)UY3MMdV*tfMl+P#5TPS_i9j?Z>s=O|_m@Q}MTf*;{A z9aB_&mhyzkQz{pr{KK^xT!uK%t3_Hw)NWvy5#^`l-pXgKpzQOGC|(3Tv3+; zNS8sn1zIL(#RLu8Ks^p1hl&K~6FwV3?}z1}?=a}Q5=;)dgfH}&_o!q9y^60!(1}Rw fUgaY8N&wAzQ(E<#DqqBJtm8XzF05G}fFHnrK}~!~