From f8823bed35cb063b188a3c5494cec33ab57942ce Mon Sep 17 00:00:00 2001 From: Vichea <48352653+vicheanath@users.noreply.github.com> Date: Thu, 8 Feb 2024 09:22:01 -0600 Subject: [PATCH 1/3] add: gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file From 88e95395228b4a343aa47cd057e3c67c192f0d02 Mon Sep 17 00:00:00 2001 From: Vichea <48352653+vicheanath@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:06:48 -0600 Subject: [PATCH 2/3] feat: add update property --- backend/pms/src/main/resources/data.sql | 6 +- .../b3d88783-7ac9-4eb7-8016-731f19346aed | Bin 0 -> 31026 bytes frontend/src/components/Property.js | 72 +- frontend/src/pages/Favorite.js | 2 +- frontend/src/pages/MyProperty.js | 1 + frontend/src/pages/PropertyDetail.js | 50 +- frontend/src/pages/UpdateProperty.js | 782 +++++++++--------- frontend/src/routes/Router.js | 2 +- 8 files changed, 464 insertions(+), 451 deletions(-) create mode 100644 backend/pms/src/main/resources/zfilestorage/b3d88783-7ac9-4eb7-8016-731f19346aed diff --git a/backend/pms/src/main/resources/data.sql b/backend/pms/src/main/resources/data.sql index b2714e2..e17e333 100644 --- a/backend/pms/src/main/resources/data.sql +++ b/backend/pms/src/main/resources/data.sql @@ -87,7 +87,7 @@ VALUES ( 'House for Sell in Iowa', 'RENT', '2024-02-07 00:29:48.576972', - 3 + 2 ), ( 'Land', @@ -106,7 +106,7 @@ VALUES ( 'Great Building Site Right off Hwy 34', 'RENT', '2024-02-07 00:44:43.55343', - 3 + 2 ), ( 'House', @@ -123,7 +123,7 @@ VALUES ( '1,000', 'RENT', '2024-02-07 01:04:03.030894', - 3 + 2 ); diff --git a/backend/pms/src/main/resources/zfilestorage/b3d88783-7ac9-4eb7-8016-731f19346aed b/backend/pms/src/main/resources/zfilestorage/b3d88783-7ac9-4eb7-8016-731f19346aed new file mode 100644 index 0000000000000000000000000000000000000000..6cb9fd0eb94d481aade60487a57dfb93144e4e05 GIT binary patch literal 31026 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

nHGe)HUr*PzHttmob{u3inyHXZk( z-)Wxj4>9>7N`)GM*3<_oU;h_&zKR{qm}KkYD2Rfl5yMm$UNUT4#dWvPV_g6tvX|d@ z3ttt~{+OWMIR{ev)Gr&P4B`SRe&J9ag`OPnCG z9I4;Fcdf_%`KGGdNO_S$bbd|TjNRsZq)s4RUzQxP->f}wbBUz@FQk>#`cs;K+~i{| z-4P@z5uwBnlrDde9lV~L!EL?VOG)Wej$&Wg;YV$!)2>7=?}KQZzh4oaP?vL&Q20h} z6z+vNPhCr%xA8hxgl(DUXbBfE)X&th#d7U7L0D)}URl;4;<|vs9K1=Ueadc}6ubpy zPVR2ZqVXGX5UnJHU|%o}Or`$IRc>UIwj`LTxO~Am=~&g@ED`OcvW1 zrhp1g?6e<#vSc9LRiMa_fv!FMN?b+;O%DL3d^AIpTNzjPV z-t|+>DPz3cN843I%5+v8wqyv(GO=aYDTpf<*^@BH30?y>uvoT=zP)gnjB7o z28rHFP#j6afwOlm|K>pAXQ1K;CqRrjpY(rAOzT_g4say=a;+N!-q9G0smLFuRE5O0 zf01z3_daCv)e(+b8f~S`GMJVWgumD2CSN=!L=w#3)z3doydg!IR+(fZDe5TFB>A#6 zzjh=%qxrpDdxZ}3H-ks`Qmuu`*(|OxLsD)!)~j|3FIk0+nlC6uH3Ad=sJ<3`?Q3S8U*K>i0e>`D;h3swrvlQFRrd=A}V&*FjCs&oBqeVpIe%`BN`4D|5^ zeKkMruJu;m7I929p?S_?nCDUu){jQAqP=N5#<<4B0xv`cLmcvLQfD2 zfYd4W1&^SF2lu70D)_7V+?tGZO=FypyHcwc8&_Z6`)}mEd{^GTk20EZC0Is)?~@Ks ziVX1BAH$#O%Gd`>h)7_1wttuGw|=-eO_pt)Naf9Zbn{L$73#pO3?p*A3Iv zL+ijom~7K$aOx7z<-mD(1~<+kcb5sTgZ?!6{LE1UWgRjX?L!yXi^m)y5V1tTlFk89 zV446Apt@cEbwfsb=J@0*1HQ|Da%$RFHRKdg3Jo0>_b9qI)GllO;zrHoq%xwAm;SU* z?|6>6Fjw&aP=aiXJBWWo#e~h6%2_gb@?|%($a)WooHA1XB_A-KNnWL%ck$3g zV7BQddbB=cz*KfJ(=xd11|^NT>!kAP)0s05za2M-sAB5Lv;AHQn2BIUkj63qE=3)# zj8iBz{sqyZfM zq^>Vu_+Rj|Mefql+hL)49$F(?RGMEd;FB5gX=+ff8&9O!mPj2zpu^xxGe^u96(&Wy(4|P^tyaaYjL^s^iC( zy=|5OkWkQhe}&~uS~hJ6cN z^Gf{&V&S&F(BT z0t}TRMzgeo3M>i#P-&6vQOTNZ$AK@djDwTzhvz2 z)xlS5e3TsYi23ORK8LKX@X$S`W?8g@aXiM=b+q#~nO-{%0A@wCHoI&7Qab8WsOhxE zpfy&aN@s2C60}6#O-e#Y;R-|RDMC8x3yRyE$Y#b2Py>zRgggQujoyQLAzS(__mZtF za8I^hw4T#oT^W1S3fuf6W2o-&k~>=+=qi+tnJ z^F&UF27?&63B-GxS63IlyJEAbEcu?7n;p^^F3QPLPQxw7GS zw~?>LTc6GDa%04>^o{nbAP)vQ+!YSgl!-S5?$iLFY$eEn{Z^hg`wHk}xB)c1D{3UWV&;U2n|GTVx`^Hr29HRI+z+_pSXIkWI&q9JSImDPED)DvylT3d z84bDeiJ{V4AKP;>zAT@sf#Ha1gIFquorO^8CrrmF@JaPxpBcP;GOqyLt0OhX6OZo1 z#fD&^I@V*W0CON;8*BtPP4PFggu2}g7dQ=F5CO4RlzfIAswF(Ao73aawm%U!RopQe zwfsrH$lQ2Gr?0(;WiN^nGyuj+hX7%E=+``bC_N=;&VSHx=M0!%&cB}BCK>LyLi6*R zhR@ETrQU1!?}(XW)aD^`>-Z)1BetX}f8pFlOig&1-e;O#MH1_wI|~xB-H(R5AmShp zBL%#tJ##E6>r|C`bRZdqryhC|&2izAr#wU+L411J`P4xpvS#SpS&nT@P$%ev1VbRz z-pj#%O`~ooVOVx6z-@h4Iiz{`0#8wgXz<^PDsw@PwQ)R&N?;%Jex)4OCNff#{l_ds zT#;XZoEu=^e{Ma7^X2n@1(@5_gAoFoFqqbkD35|^8t`D+)*6X*oolGVxKQEGmEyNi$x6@8V�R_XXt2{jho<(l(Nmcq`h; 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 x6VxiHCtv`|5S000`id*lEB literal 0 HcmV?d00001 diff --git a/frontend/src/components/Property.js b/frontend/src/components/Property.js index ede1599..56c1828 100644 --- a/frontend/src/components/Property.js +++ b/frontend/src/components/Property.js @@ -4,6 +4,7 @@ import { MdFavoriteBorder, MdOutlineFavorite } from "react-icons/md"; import { Link } from "react-router-dom"; import { formatMoney } from "../utils/money"; import { api } from "../libs/api"; +import { FiEdit2, FiEye } from "react-icons/fi"; const Property = ({ price, numberOfRoom, @@ -15,21 +16,23 @@ const Property = ({ favorite, refetch, viewOffer, + updateProperty, + unFav, }) => { const addFavorite = async (id) => { api.post(`favorites/${id}`).then((res) => { - console.log(res); + refetch(); setIsFav(true); }); }; const removeFavorite = (id) => { api.delete(`favorites/${id}`).then((res) => { - console.log(res); + refetch(); setIsFav(false); }); }; - const [isFav, setIsFav] = useState(favorite); + const [isFav, setIsFav] = useState(favorite || unFav); return ( @@ -40,41 +43,48 @@ const Property = ({ Location: {location} -

- - Rooms: {numberOfRoom} - {offerStatus} + Rooms: {numberOfRoom} + + {offerStatus} + - - - - { - viewOffer && ( +
- ) - } + {updateProperty && ( + + + + + )} + {viewOffer && ( + + )} + +
diff --git a/frontend/src/pages/Favorite.js b/frontend/src/pages/Favorite.js index ba97031..6b7ee49 100644 --- a/frontend/src/pages/Favorite.js +++ b/frontend/src/pages/Favorite.js @@ -15,7 +15,7 @@ const Favorite = () => { {data.map((property) => { return ( - + ) })} diff --git a/frontend/src/pages/MyProperty.js b/frontend/src/pages/MyProperty.js index f866661..0cdeecb 100644 --- a/frontend/src/pages/MyProperty.js +++ b/frontend/src/pages/MyProperty.js @@ -41,6 +41,7 @@ const MyProperty = () => { {...property} refetch={refetch} viewOffer={handleViewOffer} + updateProperty={true} /> ); diff --git a/frontend/src/pages/PropertyDetail.js b/frontend/src/pages/PropertyDetail.js index e321c3c..41c73e1 100644 --- a/frontend/src/pages/PropertyDetail.js +++ b/frontend/src/pages/PropertyDetail.js @@ -23,9 +23,7 @@ import { api } from "../libs/api"; const PropertyDetail = () => { const { id } = useParams(); - const { user } = useSelector((state) => state.auth); - const isOwner = user?.roles.map((role) => role.role).includes("Owner"); - console.log(isOwner); + const { data, isLoading, isError } = useQuery(`properties/${id}`); const navigate = useNavigate(); const [show, setShow] = React.useState(false); @@ -86,33 +84,27 @@ const PropertyDetail = () => {

{formatMoney(data.price)}

{data.location}

Rooms: {data.numberOfRoom}

- Status :{data.offerStatus} - -
- { - isOwner ? ( - - - - ): ( - - ) + Status : + + {data.offerStatus} + +
+
diff --git a/frontend/src/pages/UpdateProperty.js b/frontend/src/pages/UpdateProperty.js index a3f3043..bef237e 100644 --- a/frontend/src/pages/UpdateProperty.js +++ b/frontend/src/pages/UpdateProperty.js @@ -1,416 +1,426 @@ -import { zodResolver } from "@hookform/resolvers/zod"; -import React, { useEffect, useRef } from "react"; +import React, { useCallback, useEffect, useMemo, useState } from "react"; import { - Button, - Card, - Col, - Form, - Image, - InputGroup, - Row, + Button, + Form, + Row, + Col, + Image, + Nav, + Card, + InputGroup, } from "react-bootstrap"; import { useForm } from "react-hook-form"; import { z } from "zod"; -import { - CATEGORY, - HOUSE_TYPES, - Map, - handleChangePropertyType, -} from "./AddProperty"; +import { zodResolver } from "@hookform/resolvers/zod"; import { useSelector } from "react-redux"; -import { useMutation } from "react-query"; -import { api } from "../libs/api"; -import { useLocation, useNavigate } from "react-router-dom"; import { apiBaseUrl } from "../libs/constants"; +import { api } from "../libs/api"; +import { useMutation, useQuery } from "react-query"; +import { MapContainer, TileLayer, Marker, Popup } from "react-leaflet"; +import { getCurrLocation, icon, iconURL } from "../utils/map"; +import { FaLocationDot } from "react-icons/fa6"; +import { useNavigate, useParams } from "react-router-dom"; +import Loading from "../components/Loading"; -function UpdateProperty() { - const [propertyType, setPropertyType] = React.useState(HOUSE_TYPES); - const { accessToken } = useSelector((state) => state.auth); - const [images, setImages] = React.useState({}); - const [existingImages, setExistingImages] = React.useState({}); - const [imageKeys, setImageKeys] = React.useState([]); - const [latLong, setLatLong] = React.useState(0); - const location = useLocation(); - const id = 1; - const navigate = useNavigate(); +export const CATEGORY = ["House", "Apartment", "Condo", "Land"]; +export const LAND_TYPES = ["Residential", "Commercial", "Agricultural"]; +export const HOUSE_TYPES = ["Single Family", "Multi Family", "Townhouse"]; +export const APARTMENT_TYPES = ["Studio", "Loft", "Duplex"]; +export const CONDO_TYPES = ["High Rise", "Low Rise", "Mid Rise"]; +export const handleChangePropertyType = (type, setPropertyType) => { + switch (type) { + case "House": + setPropertyType(HOUSE_TYPES); + break; + case "Apartment": + setPropertyType(APARTMENT_TYPES); + break; + case "Condo": + setPropertyType(CONDO_TYPES); + break; + case "Land": + setPropertyType(LAND_TYPES); + break; + default: + setPropertyType(HOUSE_TYPES); + break; + } +}; - const PropertySchema = z.object({ - type: z.string(), - title: z.string().min(3).max(150), - price: z.string().nullable(), - description: z.string().min(3).max(255), - location: z.string().min(3).max(255), - category: z.string().min(3).max(255), - subCategory: z.string().min(3).max(200), - numberOfRoom: z.string().nullable(), - }); +const UpdateProperty = () => { + const [propertyType, setPropertyType] = React.useState(HOUSE_TYPES); + const { accessToken } = useSelector((state) => state.auth); + const [images, setImages] = React.useState({}); + const [imageKeys, setImageKeys] = React.useState([]); + const [latLong, setLatLong] = React.useState([0, 0]); + const navigate = useNavigate(); + const { id } = useParams(); - const { - register, - handleSubmit, - formState: { errors }, - watch, - } = useForm({ - resolver: zodResolver(PropertySchema), - defaultValues: { type: "RENT" }, - }); + const PropertySchema = z.object({ + type: z.string(), + title: z.string().min(3).max(150), + price: z.string().nullable(), + description: z.string().min(3).max(255), + location: z.string().min(3).max(255), + category: z.string().min(3).max(255), + subCategory: z.string().min(3).max(200), + numberOfRoom: z.string().nullable(), + }); - const onSubmit = (data) => { - data.pictures = imageKeys; - data.latitude = latLong.lat || 0; - data.longitude = latLong.lng || 0; - propertyMutation.mutate(data); - }; + const { + register, + handleSubmit, + formState: { errors }, + watch, + setValue, + } = useForm({ + resolver: zodResolver(PropertySchema), + defaultValues: { type: "RENT" }, + }); + const { data, isLoading } = useQuery(`properties/${id}`); - const type = watch("type"); - const category = watch("category"); - const handleRemoveImage = (index) => { - setImages((prev) => { - const temp = { ...prev }; - delete temp[index]; - return temp; + useEffect(() => { + if (data) { + setValue("type", data.type); + setValue("title", data.title); + setValue("price", data.price); + setValue("description", data.description); + setValue("location", data.location); + setValue("category", data.category); + setValue("subCategory", data.subCategory); + setValue("numberOfRoom", data.numberOfRoom); + setLatLong([data.latitude, data.longitude]); + + setImageKeys(imageUrlToKey(data.pictures)); + setImages(data.pictures); + } + }, [data]); + + const imageUrlToKey = (images = []) => { + return images.map((img) => img.split("/")[6]); + }; + + const propertyMutation = useMutation((data) => { + api + .put(`properties/${id}`, data) + .then((res) => { + navigate(`/my-properties`, { + state: { message: "Property updated successfully" }, }); - }; + }) + .catch((error) => { + console.log(error); + }); + }); - const propertyMutation = useMutation((data) => { - api.put("properties/" + id, data) - .then((res) => { - navigate("/my-properties", { - state: { message: "Property added successfully" }, - }); - }) - .catch((error) => { - console.log(error); - }); + const onSubmit = (data) => { + data.pictures = imageKeys; + data.latitude = latLong.lat || 0; + data.longitude = latLong.lng || 0; + propertyMutation.mutate(data); + }; + const type = watch("type"); + const category = watch("category"); + const handleRemoveImage = (index) => { + setImages((prev) => { + const temp = { ...prev }; + delete temp[index]; + return temp; }); + }; - const [property, setProperty] = React.useState({}); - const propertyFetch = () => { - api.get("properties/" + id) - .then((res) => { - console.log(res.data); - setProperty(res.data); - handleChangePropertyType(res.data.type, setPropertyType); - // alert('ddd', res.data.latitude) - setLatLong({ lat: res.data.latitude, lng: res.data.longitude }); - // setExistingImages(res.data.pictures) - setImages(res.data.pictures.map((p) => p)); - }) - .catch((error) => { - console.log(error); - }); - }; - - useEffect(() => { - propertyFetch(); - }, []); - const propertyForm = useRef(property); + const handleUploadImage = (files) => { + setImages((prev) => { + const temp = { ...prev }; + for (let i = 0; i < files.length; i++) { + temp[i] = files[i]; + } + return temp; + }); - const handleChangeProperty = (e) => { - const { name, value } = e.target; - setProperty({ ...property, [name]: value }); - }; + for (let i = 0; i < files.length; i++) { + const formData = new FormData(); + formData.append("file", files[i]); - const handleUploadImage = (files) => { - setImages((prev) => { + fetch(apiBaseUrl + "files/upload", { + method: "POST", + body: formData, + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }) + .then((response) => response.json()) + .then((result) => { + setImageKeys((prev) => { + return [...prev, result.key]; + }); + setImages((prev) => { const temp = { ...prev }; - for (let i = 0; i < files.length; i++) { - temp[i + images.length] = files[i]; - } + temp[i] = result; return temp; + }); + }) + .catch((error) => { + console.error("Error:", error); }); + } + }; - for (let i = 0; i < files.length; i++) { - const formData = new FormData(); - formData.append("file", files[i]); + useEffect(() => { + const geo = getCurrLocation(); + console.log(geo); + }, []); - fetch(apiBaseUrl + "files/upload", { - method: "POST", - body: formData, - headers: { - Authorization: `Bearer ${accessToken}`, - }, - }) - .then((response) => response.json()) - .then((result) => { - setImageKeys((prev) => { - return [...prev, result.key]; - }); - }) - .catch((error) => { - console.error("Error:", error); - }); - } - }; + const imageArr = Object.keys(images).map((key) => images[key]); - const imageArr = Object.keys(images).map((key) => images[key]); + if (isLoading) ; - return ( -
- - -

Update Property

-
- -
- - - - Seller Type - - - - - - - Title - - handleChangeProperty(e) - } - /> - - {errors.title?.message} - - - - Number of Rooms - - handleChangeProperty(e) - } - /> - - {errors.numberOfRoom?.message} - - + return ( +
+ + +

Edit Property

+
+ + + + + + Seller Type + + + + + + + Title + + + {errors.title?.message} + + + + Number of Rooms + + + {errors.numberOfRoom?.message} + + - - Price - - - handleChangeProperty(e) - } - /> + + Price + + - - {type === "Rent" - ? "$ / month" - : "$"} - - - - {errors.price?.message} - - - - - - Description - - - {errors.description?.message} - - - - - - - - category - - - {errors.category?.message} - - - - - - {category} Type - - - {errors.subCategory?.message} - - - - + + {type === "Rent" ? "$ / month" : "$"} + + + + {errors.price?.message} + + + + + + Description + + + {errors.description?.message} + + + + + + + + category + + + {errors.category?.message} + + + + + + {category} Type + + + {errors.subCategory?.message} + + + + - - location - - - {errors.location?.message} - - - - Image - - handleUploadImage(e.target.files) - } - /> + + location + + + {errors.location?.message} + + + + Image + handleUploadImage(e.target.files)} + /> - - {imageArr?.map((img, index) => { - return ( - - -

{img.name}

- - - ); - })} -
- - - {/* */} - - -
- - -
-
-
- ); -} + + {imageArr?.map((img, index) => { + return ( + + +

{img.name}

+ + + ); + })} +
+ + + + + + + + +
+
+
+ ); +}; export default UpdateProperty; + +export const Map = ({ set, center = defaultCenter }) => { + const [map, setMap] = useState(null); + const [latLong, setLatLong] = useState(null); + + useEffect(() => { + set(latLong); + }, [latLong]); + + const displayMap = useMemo( + () => ( +
+
+ +
+ + + +
+ ), + [] + ); + + return ( +
+ {map ? : null} + {displayMap} +
+ ); +}; + +const defaultCenter = [41.023248, -91.966827]; +const zoom = 15; + +function DisplayPosition({ map, setLatLong }) { + const [position, setPosition] = useState(() => map.getCenter()); + + const onClick = useCallback(() => { + map.setView(defaultCenter, zoom); + }, [map]); + + const onMove = useCallback(() => { + setPosition(map.getCenter()); + setLatLong(map.getCenter()); + }, [map]); + + useEffect(() => { + map.on("move", onMove); + return () => { + map.off("move", onMove); + }; + }, [map, onMove]); + + return ( +

+ latitude: {position.lat.toFixed(4)}, longitude: {position.lng.toFixed(4)}{" "} + +

+ ); +} diff --git a/frontend/src/routes/Router.js b/frontend/src/routes/Router.js index 048b768..50a79e9 100644 --- a/frontend/src/routes/Router.js +++ b/frontend/src/routes/Router.js @@ -30,7 +30,7 @@ const Router = () => { } /> } /> } /> - } /> + } /> } /> } /> } /> From df4cff03ebdabe729191a9fa9a393bce3fb27223 Mon Sep 17 00:00:00 2001 From: Vichea <48352653+vicheanath@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:07:17 -0600 Subject: [PATCH 3/3] feat: add update property --- .../b3d88783-7ac9-4eb7-8016-731f19346aed | Bin 31026 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 backend/pms/src/main/resources/zfilestorage/b3d88783-7ac9-4eb7-8016-731f19346aed diff --git a/backend/pms/src/main/resources/zfilestorage/b3d88783-7ac9-4eb7-8016-731f19346aed b/backend/pms/src/main/resources/zfilestorage/b3d88783-7ac9-4eb7-8016-731f19346aed deleted file mode 100644 index 6cb9fd0eb94d481aade60487a57dfb93144e4e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31026 zcmV(hK={8>Nk&F0c>n-cMM6+kP&gnSc>n+qkpi6oDgXmO0zPdrl}M%|qM@UZ+c>}t ziDzze)Lbv3!@u}>nEj~g
Xs`(xkDr2onNp!OjD3;P@G?VT+L)$OeLSOXp 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

nHGe)HUr*PzHttmob{u3inyHXZk( z-)Wxj4>9>7N`)GM*3<_oU;h_&zKR{qm}KkYD2Rfl5yMm$UNUT4#dWvPV_g6tvX|d@ z3ttt~{+OWMIR{ev)Gr&P4B`SRe&J9ag`OPnCG z9I4;Fcdf_%`KGGdNO_S$bbd|TjNRsZq)s4RUzQxP->f}wbBUz@FQk>#`cs;K+~i{| z-4P@z5uwBnlrDde9lV~L!EL?VOG)Wej$&Wg;YV$!)2>7=?}KQZzh4oaP?vL&Q20h} z6z+vNPhCr%xA8hxgl(DUXbBfE)X&th#d7U7L0D)}URl;4;<|vs9K1=Ueadc}6ubpy zPVR2ZqVXGX5UnJHU|%o}Or`$IRc>UIwj`LTxO~Am=~&g@ED`OcvW1 zrhp1g?6e<#vSc9LRiMa_fv!FMN?b+;O%DL3d^AIpTNzjPV z-t|+>DPz3cN843I%5+v8wqyv(GO=aYDTpf<*^@BH30?y>uvoT=zP)gnjB7o z28rHFP#j6afwOlm|K>pAXQ1K;CqRrjpY(rAOzT_g4say=a;+N!-q9G0smLFuRE5O0 zf01z3_daCv)e(+b8f~S`GMJVWgumD2CSN=!L=w#3)z3doydg!IR+(fZDe5TFB>A#6 zzjh=%qxrpDdxZ}3H-ks`Qmuu`*(|OxLsD)!)~j|3FIk0+nlC6uH3Ad=sJ<3`?Q3S8U*K>i0e>`D;h3swrvlQFRrd=A}V&*FjCs&oBqeVpIe%`BN`4D|5^ zeKkMruJu;m7I929p?S_?nCDUu){jQAqP=N5#<<4B0xv`cLmcvLQfD2 zfYd4W1&^SF2lu70D)_7V+?tGZO=FypyHcwc8&_Z6`)}mEd{^GTk20EZC0Is)?~@Ks ziVX1BAH$#O%Gd`>h)7_1wttuGw|=-eO_pt)Naf9Zbn{L$73#pO3?p*A3Iv zL+ijom~7K$aOx7z<-mD(1~<+kcb5sTgZ?!6{LE1UWgRjX?L!yXi^m)y5V1tTlFk89 zV446Apt@cEbwfsb=J@0*1HQ|Da%$RFHRKdg3Jo0>_b9qI)GllO;zrHoq%xwAm;SU* z?|6>6Fjw&aP=aiXJBWWo#e~h6%2_gb@?|%($a)WooHA1XB_A-KNnWL%ck$3g zV7BQddbB=cz*KfJ(=xd11|^NT>!kAP)0s05za2M-sAB5Lv;AHQn2BIUkj63qE=3)# zj8iBz{sqyZfM zq^>Vu_+Rj|Mefql+hL)49$F(?RGMEd;FB5gX=+ff8&9O!mPj2zpu^xxGe^u96(&Wy(4|P^tyaaYjL^s^iC( zy=|5OkWkQhe}&~uS~hJ6cN z^Gf{&V&S&F(BT z0t}TRMzgeo3M>i#P-&6vQOTNZ$AK@djDwTzhvz2 z)xlS5e3TsYi23ORK8LKX@X$S`W?8g@aXiM=b+q#~nO-{%0A@wCHoI&7Qab8WsOhxE zpfy&aN@s2C60}6#O-e#Y;R-|RDMC8x3yRyE$Y#b2Py>zRgggQujoyQLAzS(__mZtF za8I^hw4T#oT^W1S3fuf6W2o-&k~>=+=qi+tnJ z^F&UF27?&63B-GxS63IlyJEAbEcu?7n;p^^F3QPLPQxw7GS zw~?>LTc6GDa%04>^o{nbAP)vQ+!YSgl!-S5?$iLFY$eEn{Z^hg`wHk}xB)c1D{3UWV&;U2n|GTVx`^Hr29HRI+z+_pSXIkWI&q9JSImDPED)DvylT3d z84bDeiJ{V4AKP;>zAT@sf#Ha1gIFquorO^8CrrmF@JaPxpBcP;GOqyLt0OhX6OZo1 z#fD&^I@V*W0CON;8*BtPP4PFggu2}g7dQ=F5CO4RlzfIAswF(Ao73aawm%U!RopQe zwfsrH$lQ2Gr?0(;WiN^nGyuj+hX7%E=+``bC_N=;&VSHx=M0!%&cB}BCK>LyLi6*R zhR@ETrQU1!?}(XW)aD^`>-Z)1BetX}f8pFlOig&1-e;O#MH1_wI|~xB-H(R5AmShp zBL%#tJ##E6>r|C`bRZdqryhC|&2izAr#wU+L411J`P4xpvS#SpS&nT@P$%ev1VbRz z-pj#%O`~ooVOVx6z-@h4Iiz{`0#8wgXz<^PDsw@PwQ)R&N?;%Jex)4OCNff#{l_ds zT#;XZoEu=^e{Ma7^X2n@1(@5_gAoFoFqqbkD35|^8t`D+)*6X*oolGVxKQEGmEyNi$x6@8V�R_XXt2{jho<(l(Nmcq`h; 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 x6VxiHCtv`|5S000`id*lEB