From f26f0591baee396a86b26f7b2fe4bd1ff513139c Mon Sep 17 00:00:00 2001 From: Prabhat Bhanderi Date: Wed, 27 May 2026 14:44:20 +0200 Subject: [PATCH 1/2] Implement interfaces and abstract classes lab assignments - BigDecimal Operations: Implement methods for rounding to nearest hundredth and reversing sign with rounding to nearest tenth - Car Inventory System: Create abstract Car class with Sedan, UtilityVehicle, and Truck implementations - Video Streaming Service: Create abstract Video class with TvSeries and Movie implementations - IntList Interface: Implement IntArrayList (50% growth) and IntVector (100% growth) with efficiency documentation All implementations tested and verified to work correctly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- README.md | 12 ++++ .../java/com/lab/BigDecimalOperations.java | 27 ++++++++ src/main/java/com/lab/Car.java | 52 ++++++++++++++ src/main/java/com/lab/IntArrayList.java | 40 +++++++++++ src/main/java/com/lab/IntList.java | 18 +++++ src/main/java/com/lab/IntVector.java | 40 +++++++++++ src/main/java/com/lab/Main.java | 68 +++++++++++++++++++ src/main/java/com/lab/Movie.java | 23 +++++++ src/main/java/com/lab/Sedan.java | 8 +++ src/main/java/com/lab/Truck.java | 23 +++++++ src/main/java/com/lab/TvSeries.java | 23 +++++++ src/main/java/com/lab/UtilityVehicle.java | 23 +++++++ src/main/java/com/lab/Video.java | 32 +++++++++ 13 files changed, 389 insertions(+) create mode 100644 src/main/java/com/lab/BigDecimalOperations.java create mode 100644 src/main/java/com/lab/Car.java create mode 100644 src/main/java/com/lab/IntArrayList.java create mode 100644 src/main/java/com/lab/IntList.java create mode 100644 src/main/java/com/lab/IntVector.java create mode 100644 src/main/java/com/lab/Main.java create mode 100644 src/main/java/com/lab/Movie.java create mode 100644 src/main/java/com/lab/Sedan.java create mode 100644 src/main/java/com/lab/Truck.java create mode 100644 src/main/java/com/lab/TvSeries.java create mode 100644 src/main/java/com/lab/UtilityVehicle.java create mode 100644 src/main/java/com/lab/Video.java diff --git a/README.md b/README.md index ce069b6..294ec53 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,18 @@ Once you finish the assignment, submit a URL link to your repository or your pul 4. `IntVector` should store numbers in an array with a length of 20 by default. When the `add` method is called, you must first determine if the array is full. If it is, create a new array that is double the size of the current array, move all elements over to the new array and add the new element. (For example, an array of length 10 would be increased to 20.) 5. In your `README.md`, include an example of when `IntArrayList` would be more efficient and when `IntVector` would be more efficient. +#### IntArrayList vs IntVector Efficiency + +**When IntArrayList is more efficient:** +- **Memory-constrained environments**: IntArrayList uses less initial memory (default capacity of 10 vs 20) and grows incrementally by 50%, making it ideal when memory is limited. +- **Predictable, modest growth**: When you know the data will grow slowly and predictably over time, the 50% growth factor provides better memory utilization without excessive padding. +- **Example scenario**: A cache system that stores recent user queries where you expect to store 20-30 items over an extended period. + +**When IntVector is more efficient:** +- **Frequent array resizing**: When you add elements very frequently and unpredictably, IntVector's doubling strategy reduces the number of resize operations (fewer copies of existing elements). +- **High-performance requirements**: The fewer resize operations mean fewer array copy operations, reducing CPU overhead during intensive add operations. +- **Example scenario**: A real-time data collection system receiving streaming sensor data where rapid, continuous additions are expected. +
## FAQs diff --git a/src/main/java/com/lab/BigDecimalOperations.java b/src/main/java/com/lab/BigDecimalOperations.java new file mode 100644 index 0000000..fb96058 --- /dev/null +++ b/src/main/java/com/lab/BigDecimalOperations.java @@ -0,0 +1,27 @@ +package com.lab; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class BigDecimalOperations { + + /** + * Accepts a BigDecimal and returns a double rounded to the nearest hundredth. + * @param number the BigDecimal number to round + * @return a double rounded to the nearest hundredth + */ + public static double roundToNearestHundredth(BigDecimal number) { + BigDecimal rounded = number.setScale(2, RoundingMode.HALF_UP); + return rounded.doubleValue(); + } + + /** + * Accepts a BigDecimal, reverses the sign, rounds to the nearest tenth, and returns the result. + * @param number the BigDecimal number to process + * @return a BigDecimal with reversed sign and rounded to the nearest tenth + */ + public static BigDecimal reverseSignAndRoundToTenth(BigDecimal number) { + BigDecimal negated = number.negate(); + return negated.setScale(1, RoundingMode.HALF_UP); + } +} diff --git a/src/main/java/com/lab/Car.java b/src/main/java/com/lab/Car.java new file mode 100644 index 0000000..fc9a8d9 --- /dev/null +++ b/src/main/java/com/lab/Car.java @@ -0,0 +1,52 @@ +package com.lab; + +public abstract class Car { + private String vinNumber; + private String make; + private String model; + private int mileage; + + public Car(String vinNumber, String make, String model, int mileage) { + this.vinNumber = vinNumber; + this.make = make; + this.model = model; + this.mileage = mileage; + } + + public String getInfo() { + return "VIN: " + vinNumber + ", Make: " + make + ", Model: " + model + ", Mileage: " + mileage; + } + + // Getters and setters + public String getVinNumber() { + return vinNumber; + } + + public void setVinNumber(String vinNumber) { + this.vinNumber = vinNumber; + } + + public String getMake() { + return make; + } + + public void setMake(String make) { + this.make = make; + } + + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } + + public int getMileage() { + return mileage; + } + + public void setMileage(int mileage) { + this.mileage = mileage; + } +} diff --git a/src/main/java/com/lab/IntArrayList.java b/src/main/java/com/lab/IntArrayList.java new file mode 100644 index 0000000..305d40e --- /dev/null +++ b/src/main/java/com/lab/IntArrayList.java @@ -0,0 +1,40 @@ +package com.lab; + +public class IntArrayList implements IntList { + private int[] array; + private int size; + private static final int DEFAULT_CAPACITY = 10; + + public IntArrayList() { + this.array = new int[DEFAULT_CAPACITY]; + this.size = 0; + } + + @Override + public void add(int number) { + if (size >= array.length) { + int newCapacity = (int) (array.length * 1.5); + int[] newArray = new int[newCapacity]; + System.arraycopy(array, 0, newArray, 0, size); + array = newArray; + } + array[size] = number; + size++; + } + + @Override + public int get(int id) { + if (id < 0 || id >= size) { + throw new IndexOutOfBoundsException("Index: " + id + ", Size: " + size); + } + return array[id]; + } + + public int size() { + return size; + } + + public int capacity() { + return array.length; + } +} diff --git a/src/main/java/com/lab/IntList.java b/src/main/java/com/lab/IntList.java new file mode 100644 index 0000000..01a6f9f --- /dev/null +++ b/src/main/java/com/lab/IntList.java @@ -0,0 +1,18 @@ +package com.lab; + +public interface IntList { + /** + * Adds a new number to the list + * + * @param number the number to add + */ + void add(int number); + + /** + * Retrieves an element by its ID (index) + * + * @param id the index of the element + * @return the element at the specified index + */ + int get(int id); +} diff --git a/src/main/java/com/lab/IntVector.java b/src/main/java/com/lab/IntVector.java new file mode 100644 index 0000000..aa3d5c7 --- /dev/null +++ b/src/main/java/com/lab/IntVector.java @@ -0,0 +1,40 @@ +package com.lab; + +public class IntVector implements IntList { + private int[] array; + private int size; + private static final int DEFAULT_CAPACITY = 20; + + public IntVector() { + this.array = new int[DEFAULT_CAPACITY]; + this.size = 0; + } + + @Override + public void add(int number) { + if (size >= array.length) { + int newCapacity = array.length * 2; + int[] newArray = new int[newCapacity]; + System.arraycopy(array, 0, newArray, 0, size); + array = newArray; + } + array[size] = number; + size++; + } + + @Override + public int get(int id) { + if (id < 0 || id >= size) { + throw new IndexOutOfBoundsException("Index: " + id + ", Size: " + size); + } + return array[id]; + } + + public int size() { + return size; + } + + public int capacity() { + return array.length; + } +} diff --git a/src/main/java/com/lab/Main.java b/src/main/java/com/lab/Main.java new file mode 100644 index 0000000..06cb145 --- /dev/null +++ b/src/main/java/com/lab/Main.java @@ -0,0 +1,68 @@ +package com.lab; + +import java.math.BigDecimal; + +public class Main { + public static void main(String[] args) { + System.out.println("=== BigDecimal Operations ==="); + + // Test roundToNearestHundredth + BigDecimal num1 = new BigDecimal("4.2545"); + double rounded = BigDecimalOperations.roundToNearestHundredth(num1); + System.out.println("4.2545 rounded to nearest hundredth: " + rounded); + + // Test reverseSignAndRoundToTenth + BigDecimal num2 = new BigDecimal("1.2345"); + BigDecimal result1 = BigDecimalOperations.reverseSignAndRoundToTenth(num2); + System.out.println("1.2345 with reversed sign and rounded to tenth: " + result1); + + BigDecimal num3 = new BigDecimal("-45.67"); + BigDecimal result2 = BigDecimalOperations.reverseSignAndRoundToTenth(num3); + System.out.println("-45.67 with reversed sign and rounded to tenth: " + result2); + + System.out.println("\n=== Car Inventory System ==="); + + Sedan sedan = new Sedan("VIN123456", "Toyota", "Camry", 45000); + System.out.println("Sedan: " + sedan.getInfo()); + + UtilityVehicle uv = new UtilityVehicle("VIN234567", "Ford", "Explorer", 35000, true); + System.out.println("Utility Vehicle: " + uv.getInfo()); + + Truck truck = new Truck("VIN345678", "Chevrolet", "Silverado", 60000, 12000.5); + System.out.println("Truck: " + truck.getInfo()); + + System.out.println("\n=== Video Streaming Service ==="); + + Movie movie = new Movie("The Matrix", 136, 8.7); + System.out.println("Movie: " + movie.getInfo()); + + TvSeries tvSeries = new TvSeries("Breaking Bad", 47, 62); + System.out.println("TV Series: " + tvSeries.getInfo()); + + System.out.println("\n=== IntList Interface ==="); + + // Test IntArrayList + System.out.println("IntArrayList (capacity: 10, grows by 50%):"); + IntArrayList arrayList = new IntArrayList(); + for (int i = 0; i < 25; i++) { + arrayList.add(i); + if (i + 1 == 10 || i + 1 == 15 || i + 1 == 25) { + System.out.println(" After adding " + (i + 1) + " elements: capacity = " + arrayList.capacity()); + } + } + System.out.println(" Get element at index 5: " + arrayList.get(5)); + System.out.println(" Get element at index 24: " + arrayList.get(24)); + + // Test IntVector + System.out.println("\nIntVector (capacity: 20, grows by 100%):"); + IntVector vector = new IntVector(); + for (int i = 0; i < 25; i++) { + vector.add(i); + if (i + 1 == 20 || i + 1 == 40) { + System.out.println(" After adding " + (i + 1) + " elements: capacity = " + vector.capacity()); + } + } + System.out.println(" Get element at index 10: " + vector.get(10)); + System.out.println(" Get element at index 24: " + vector.get(24)); + } +} diff --git a/src/main/java/com/lab/Movie.java b/src/main/java/com/lab/Movie.java new file mode 100644 index 0000000..e38d9dc --- /dev/null +++ b/src/main/java/com/lab/Movie.java @@ -0,0 +1,23 @@ +package com.lab; + +public class Movie extends Video { + private double rating; + + public Movie(String title, int duration, double rating) { + super(title, duration); + this.rating = rating; + } + + @Override + public String getInfo() { + return super.getInfo() + ", Rating: " + rating; + } + + public double getRating() { + return rating; + } + + public void setRating(double rating) { + this.rating = rating; + } +} diff --git a/src/main/java/com/lab/Sedan.java b/src/main/java/com/lab/Sedan.java new file mode 100644 index 0000000..1922fd0 --- /dev/null +++ b/src/main/java/com/lab/Sedan.java @@ -0,0 +1,8 @@ +package com.lab; + +public class Sedan extends Car { + + public Sedan(String vinNumber, String make, String model, int mileage) { + super(vinNumber, make, model, mileage); + } +} diff --git a/src/main/java/com/lab/Truck.java b/src/main/java/com/lab/Truck.java new file mode 100644 index 0000000..ebf9332 --- /dev/null +++ b/src/main/java/com/lab/Truck.java @@ -0,0 +1,23 @@ +package com.lab; + +public class Truck extends Car { + private double towingCapacity; + + public Truck(String vinNumber, String make, String model, int mileage, double towingCapacity) { + super(vinNumber, make, model, mileage); + this.towingCapacity = towingCapacity; + } + + @Override + public String getInfo() { + return super.getInfo() + ", Towing Capacity: " + towingCapacity; + } + + public double getTowingCapacity() { + return towingCapacity; + } + + public void setTowingCapacity(double towingCapacity) { + this.towingCapacity = towingCapacity; + } +} diff --git a/src/main/java/com/lab/TvSeries.java b/src/main/java/com/lab/TvSeries.java new file mode 100644 index 0000000..fd448af --- /dev/null +++ b/src/main/java/com/lab/TvSeries.java @@ -0,0 +1,23 @@ +package com.lab; + +public class TvSeries extends Video { + private int episodes; + + public TvSeries(String title, int duration, int episodes) { + super(title, duration); + this.episodes = episodes; + } + + @Override + public String getInfo() { + return super.getInfo() + ", Episodes: " + episodes; + } + + public int getEpisodes() { + return episodes; + } + + public void setEpisodes(int episodes) { + this.episodes = episodes; + } +} diff --git a/src/main/java/com/lab/UtilityVehicle.java b/src/main/java/com/lab/UtilityVehicle.java new file mode 100644 index 0000000..99758d2 --- /dev/null +++ b/src/main/java/com/lab/UtilityVehicle.java @@ -0,0 +1,23 @@ +package com.lab; + +public class UtilityVehicle extends Car { + private boolean fourWheelDrive; + + public UtilityVehicle(String vinNumber, String make, String model, int mileage, boolean fourWheelDrive) { + super(vinNumber, make, model, mileage); + this.fourWheelDrive = fourWheelDrive; + } + + @Override + public String getInfo() { + return super.getInfo() + ", Four Wheel Drive: " + fourWheelDrive; + } + + public boolean isFourWheelDrive() { + return fourWheelDrive; + } + + public void setFourWheelDrive(boolean fourWheelDrive) { + this.fourWheelDrive = fourWheelDrive; + } +} diff --git a/src/main/java/com/lab/Video.java b/src/main/java/com/lab/Video.java new file mode 100644 index 0000000..3213d56 --- /dev/null +++ b/src/main/java/com/lab/Video.java @@ -0,0 +1,32 @@ +package com.lab; + +public abstract class Video { + private String title; + private int duration; + + public Video(String title, int duration) { + this.title = title; + this.duration = duration; + } + + public String getInfo() { + return "Title: " + title + ", Duration: " + duration + " minutes"; + } + + // Getters and setters + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getDuration() { + return duration; + } + + public void setDuration(int duration) { + this.duration = duration; + } +} From 5910e59df7afa24e615075d4840b28a2d61dff9d Mon Sep 17 00:00:00 2001 From: Prabhat Bhanderi Date: Wed, 27 May 2026 14:50:15 +0200 Subject: [PATCH 2/2] Interfaces and Abstract Classes --- .../java/com/lab/BigDecimalOperations.java | 9 +++++--- src/main/java/com/lab/Car.java | 20 +++++++++--------- .../com/lab/BigDecimalOperations.class | Bin 0 -> 716 bytes target/classes/com/lab/Car.class | Bin 0 -> 1536 bytes target/classes/com/lab/IntArrayList.class | Bin 0 -> 1372 bytes target/classes/com/lab/IntList.class | Bin 0 -> 145 bytes target/classes/com/lab/IntVector.class | Bin 0 -> 1353 bytes target/classes/com/lab/Main.class | Bin 0 -> 3599 bytes target/classes/com/lab/Movie.class | Bin 0 -> 962 bytes target/classes/com/lab/Sedan.class | Bin 0 -> 251 bytes target/classes/com/lab/Truck.class | Bin 0 -> 1069 bytes target/classes/com/lab/TvSeries.class | Bin 0 -> 976 bytes target/classes/com/lab/UtilityVehicle.class | Bin 0 -> 1087 bytes target/classes/com/lab/Video.class | Bin 0 -> 1149 bytes 14 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 target/classes/com/lab/BigDecimalOperations.class create mode 100644 target/classes/com/lab/Car.class create mode 100644 target/classes/com/lab/IntArrayList.class create mode 100644 target/classes/com/lab/IntList.class create mode 100644 target/classes/com/lab/IntVector.class create mode 100644 target/classes/com/lab/Main.class create mode 100644 target/classes/com/lab/Movie.class create mode 100644 target/classes/com/lab/Sedan.class create mode 100644 target/classes/com/lab/Truck.class create mode 100644 target/classes/com/lab/TvSeries.class create mode 100644 target/classes/com/lab/UtilityVehicle.class create mode 100644 target/classes/com/lab/Video.class diff --git a/src/main/java/com/lab/BigDecimalOperations.java b/src/main/java/com/lab/BigDecimalOperations.java index fb96058..297adb9 100644 --- a/src/main/java/com/lab/BigDecimalOperations.java +++ b/src/main/java/com/lab/BigDecimalOperations.java @@ -4,9 +4,10 @@ import java.math.RoundingMode; public class BigDecimalOperations { - + /** * Accepts a BigDecimal and returns a double rounded to the nearest hundredth. + * * @param number the BigDecimal number to round * @return a double rounded to the nearest hundredth */ @@ -14,9 +15,11 @@ public static double roundToNearestHundredth(BigDecimal number) { BigDecimal rounded = number.setScale(2, RoundingMode.HALF_UP); return rounded.doubleValue(); } - + /** - * Accepts a BigDecimal, reverses the sign, rounds to the nearest tenth, and returns the result. + * Accepts a BigDecimal, reverses the sign, rounds to the nearest tenth, and + * returns the result. + * * @param number the BigDecimal number to process * @return a BigDecimal with reversed sign and rounded to the nearest tenth */ diff --git a/src/main/java/com/lab/Car.java b/src/main/java/com/lab/Car.java index fc9a8d9..56eef0b 100644 --- a/src/main/java/com/lab/Car.java +++ b/src/main/java/com/lab/Car.java @@ -5,47 +5,47 @@ public abstract class Car { private String make; private String model; private int mileage; - + public Car(String vinNumber, String make, String model, int mileage) { this.vinNumber = vinNumber; this.make = make; this.model = model; this.mileage = mileage; } - + public String getInfo() { return "VIN: " + vinNumber + ", Make: " + make + ", Model: " + model + ", Mileage: " + mileage; } - + // Getters and setters public String getVinNumber() { return vinNumber; } - + public void setVinNumber(String vinNumber) { this.vinNumber = vinNumber; } - + public String getMake() { return make; } - + public void setMake(String make) { this.make = make; } - + public String getModel() { return model; } - + public void setModel(String model) { this.model = model; } - + public int getMileage() { return mileage; } - + public void setMileage(int mileage) { this.mileage = mileage; } diff --git a/target/classes/com/lab/BigDecimalOperations.class b/target/classes/com/lab/BigDecimalOperations.class new file mode 100644 index 0000000000000000000000000000000000000000..39ce3ea356ef2416e9ca8a8d99e6b6196740cfb3 GIT binary patch literal 716 zcmZ`%+iuf95Ixf*b&{H2@pdaNQsal&ceSCMeOY`j~>)%?paN6$iRxp<6i!deh#qlkwp z%7ja5>DdHoF6!8kA`OQs6+^ADgv-GmVb71p(w$Lf9^~p1Co0vknGo`CX2n-LZTK=9 zk2o19iAks?wmXCPl2yW!^jt0p2k8x=-dLP^vq#uT_>Pka_jPExCYW`25D(Z`;PEox zVm?B-A7_crXWAxIUsS-c{Q?|fS7ySl9LP?E$bGr(izd;9)_2fXIS`(Rv}P+yIKWdm zTi2FAEya4P@D0us54`pik3P%GJ;n~5SOrs&eTZlO;ijm1?fgCX%Rji9Bvlv0b9rCE F(H|m@r+@$e literal 0 HcmV?d00001 diff --git a/target/classes/com/lab/Car.class b/target/classes/com/lab/Car.class new file mode 100644 index 0000000000000000000000000000000000000000..d32d406eadc95a4af2a7f8744480895ae6ea195b GIT binary patch literal 1536 zcmbVM+fEZv6kP{;9i~ty7Xd}?wga>ZUMcaxMq(r21EfCqG%aHpn9h*SK*FE+5k6?r z#)Jnyz>hMn(2@{u zp?qpoJb}oLX`9|_fx&d96h{p4C=?Y#Pz8o6PL1etuAtWi;+LjIsnbW*y>p!iNGij4l6Iecp+*N^i%Fa8sz6K{eN~axo6d5iMFB;Ay)lK- zMMlH z)JGzCqF@tSQ9PByd?v8mc_pTO>6{rk|FQV<-PJ3eQ@;}U(p`2N=*NGj+sBsSF7G+c z*~NLje~?|4JB~+J=SBehQy1RffPD9u+7t!dvJOqp$P1`N+cxS2OLtwvjp8Mn(N|MY zs!?nU%>5n8<@4(bEpRagxC9|eZXUG(xk#;(`_nqPH9Qq?nJ`OvpSNA&!aQfR9}wDF z6H#rwiG;S%L{ggwHIe$xuL2Jw1`*0QVNVmYAx$Z(>~2WvD-HfE{N81G s%Rp;GI}Mq=GdI5>o21^tAnE1XSjPs>7(E~Jm&J45f#l^N4D?k2E5CR@g|xtgA8iq{QSd@tYPaQfC5UwfDcBD7 z!4VjiCM%G5=$Z6>2U&~?48_5(N`1o|mwv6i8Z1*YZF5)9oPKEZUgHoN?}$z~rE~e%`RC`TsG?}qvz0Pu;TjkQ4 zmVV>5Z0!~|6*)}N>z*3Nv@cuI4>Vo0Yf-1|tJT2t85=ypW#bpc-H0L`>$Ys&R{CjF zkJI?Ei=>5@=ERw~8jq2aY!Vl2{ES~xxM&=_BryNk@gRI2HB_PJM9FcOX34acH z)d%*tZppCTRPlTziW;3(@mtFWGG8oQ+is~n;137zy$`xLc#i!RW!Y@j0XT8K5L@OdYp{l z9vrGaM9vxNaB%dUE8OoD}zxxcV4X9!+m@*SqvyYsim z0k3iNKf|6|{+qxa-+p!iiw>D)`8U1U$QfhXESCGtk1z^WhD~3yxMz{E6SQAY-Y#^O mZzh{GOgmp=7f5%O)dbGrJY$;JpZNTMBHwJzF5@b$WBL>EjV`tT literal 0 HcmV?d00001 diff --git a/target/classes/com/lab/IntList.class b/target/classes/com/lab/IntList.class new file mode 100644 index 0000000000000000000000000000000000000000..823ea8a78237d100e6b6ef04b087b68af2519f30 GIT binary patch literal 145 zcmXYqK?=e!6b0wk+G-W_7`id1P$&p41ovqgN=t1)qla_h0X&rW11@KH%=>&_Z(z?N zClOX|yqextrX0ety@#AsSaLB_q~zW@?0a^b|iOuN;Q} literal 0 HcmV?d00001 diff --git a/target/classes/com/lab/IntVector.class b/target/classes/com/lab/IntVector.class new file mode 100644 index 0000000000000000000000000000000000000000..bd9e9f21eac8a5487639a39c39615264e45ddb4b GIT binary patch literal 1353 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 literal 0 HcmV?d00001 diff --git a/target/classes/com/lab/Movie.class b/target/classes/com/lab/Movie.class new file mode 100644 index 0000000000000000000000000000000000000000..5d2a8288915efe4abf4cb76682303b2dbdd2be4d GIT binary patch literal 962 zcmaJ=(QXn!6g^X57q&}jYi+Hzl~!8VZIyR1J_t6FP)(%42cHHQ>6T@N><%RT6aPX@ zG)?;82l!FOyRflTh!0%u%suDKxi@!z{l57L;5D9FSVF=?(nbmfL$;#^WuLdpEw3vS zgYm+Xo_@)&S!!JJF{hgBm76;7WUo?pS{bB~F=5$QhCM?+Q)5pMJ>Z&<46GJCv|=NN zRR*&sbX|TT{f&|{ue(mx)@|Iw2E*2X_eE974%Z(%eL-2Mxzr&;ae<@S0yWZDfUMV? z7DKYCx@0rg@T7P<8ni`l&f7lSWXR$B*n6Vn)aWL>y-AiPY^$k8K}Vc=5yP6a{45$0 z!|E%gbf^P9JQMmtb;C6Bj0SX)pNc-uvz&ng3r|omaTxV_#89}MuqVf=FXBN@+dt(U zt%56t&$I2s!09t@xa|5OEHsqrkA{``$bE24;2!79Ivx1~x_p?&SPj{hY)kedoj?Mg}&U%)HDJJ4Oa8 z4WF#UvP7UvUb=p8Nl|8Ax-~H(o|<9o3>=IMyf9;fQ&ST27#Ucc^HWk88TfrN^HTjv zbCXhwLK2g5fFfMM`K3k4scxAN4oI~g$Yusb26muJL4Xkmfo=tooIsu$kj)CDxwN!( ebVXUVGcaxhtKkBPfpxF})v*Ira|1<~7hNS0jji+#)sLn&)IA3`}y_z>L-9#IE-Qm0RzDpLI@L9Of{(3qEo2}mk@q# zIhKAwI4U&H#JOOL)2pi}(cWcCROtv<20nivYx z(ia4(`za-2NFqfrdQvx>kBYEXD9%S*vrK*NY%a$WS>u36j0;=24cCVeCfn1UUnH zexvpYxqqXyoO9Ke(}_-ccPvb;Tpq;d*DFxFdD1gbB<#)Av?x^r2ZZgrp}h5zy0F8W zyTl7dEO~cX3$h+UhUI-eJ!9SAf2wp)KFkC!L8Xn*4;bIZoOPB71XvpI-$0Tj?*>v+ z_CDLl$CNG+FMWq`g*5Q>FE>24##wG)bIRG`Ongqr$A7s6O|$6%9!{aV?A{L^F6D2e kcp8(GBEQJW7CSn%iFc>l&HK;heUAdH9 zp%{#p(v|uZ!)B>*&BvV1++L-rJ?ZwU_3~vB2_#LVETmyEtjy@GaZ`9w_zVd#l)mZ) zA*%!g3W3v$-f*|;2*21+sy`Z57n?Gdc|dI448;=o$2t7__Oil;L zC2HJpno^4@gH?B3;nf`O`@%O-W;j}?X_-|Mrwn`lhtg%u;bV1$N+(Mm%|QHq^bR=j0RQD5=qepO!A=N0Ao;+!VedS!6#OJ0`*E@##V*AWIK6^s(ix-oL;O}uA&@iwetUSQ%YA?5X6dsP#CKSGi?6}@Igsas$o^MWy2H< z>(_SQxoQhxzH;P%E?7f%kQmaa1R3U-qiM9R_<@A}=ka4vaWlZ;BYI7ic) zO4k@-u2AzYzSPKBs6vQ_C`#>MbGB?xbyvvkOWRhia(M5pP;I;E29cmrvur~9OpL0U z7?t%R!6E@1h42JP1IM~zCk)Ad&6U=`?ubc`$3-mihO(U@!>8$@Obo{X-*BsG3O8A{ z?M}aU|7gqrFNZy`#Qft_W#89tL__7L+ca@e;HFuTO5_>BCCd^{!Q`$hTmxx_;{{I3 zQZ;bKaB#mV?ZKEA4r!J>G--?^O*3ge(*1~&+@`;0dWqUYEw}shecWBao;*an_ zlQt%O@CW##jAvK`D#UDdX6~JH&zyVb&adA$KLNbK(kFaq%xu6E5!fr)(KXc7rbI!LB4g_J zvW=WhA%hu#M6=^d<9b>^RI?P4P2nzP1@5)wnW}iYA0+R<`$8V^8*NRAXOSot2#%p-xc_uKvJb$OmiPsDg*c4dlYIvR# zyScwyG;(cMcZ>=$acn1%N5MhSmUBm7V{i+uzVOaeDZGrZ!uzseJpWSQ%Wxt+V0i9Z zshceoY}7pOtaDx-E%%V;R^Z{~xf%oiG=vZPt2|ur9z{jAS_iICWr0*xYvos3G6+=Q zU{7FkB&Tsw9Xu9T{Xdkg9p)8XXKzN>h7o@3>+Xt;$~g`;HRd?Z(|Tqf3+GJn2Sjn_ z8cuQf8tLzJv3EIU5#`9|WS=D668 zS)paUF&pzQG|R0eEOWH_9&|IH>aMndEc?hoM2sTYMp*6PhpE$F2??_ZRV>n4L#_uM mP%queIHX=B^%_gFPL2p=Jmj2U