From 8e18f2ab43e422f3488aecf73499a19512922787 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 28 Feb 2019 20:09:00 -0500 Subject: [PATCH] So sick of these EEP warnings in my log, add the asset types --- indra/llcommon/llassettype.cpp | 3 + indra/llcommon/llassettype.h | 13 ++- indra/llinventory/llinventorytype.cpp | 10 ++ indra/llinventory/llinventorytype.h | 10 +- indra/newview/llinventorybridge.cpp | 3 + indra/newview/llinventoryicon.cpp | 25 +++++ indra/newview/llinventoryicon.h | 1 + indra/newview/llviewerassetstats.cpp | 97 ++++-------------- indra/newview/llviewerassettype.cpp | 3 + .../skins/default/textures/Inv_Settings.png | Bin 0 -> 925 bytes .../default/textures/Inv_SettingsDay.png | Bin 0 -> 925 bytes .../default/textures/Inv_SettingsSky.png | Bin 0 -> 883 bytes .../default/textures/Inv_SettingsWater.png | Bin 0 -> 764 bytes .../default/textures/Inv_UnknownObject.png | Bin 0 -> 1048 bytes .../skins/default/textures/textures.xml | 5 + 15 files changed, 90 insertions(+), 80 deletions(-) create mode 100644 indra/newview/skins/default/textures/Inv_Settings.png create mode 100644 indra/newview/skins/default/textures/Inv_SettingsDay.png create mode 100644 indra/newview/skins/default/textures/Inv_SettingsSky.png create mode 100644 indra/newview/skins/default/textures/Inv_SettingsWater.png create mode 100644 indra/newview/skins/default/textures/Inv_UnknownObject.png diff --git a/indra/llcommon/llassettype.cpp b/indra/llcommon/llassettype.cpp index 5b22d5bab..66602f4e7 100644 --- a/indra/llcommon/llassettype.cpp +++ b/indra/llcommon/llassettype.cpp @@ -101,6 +101,9 @@ LLAssetDictionary::LLAssetDictionary() addEntry(LLAssetType::AT_OUTFIT, new AssetEntry("OUTFIT", "outfit", "outfit", false, false, false)); addEntry(LLAssetType::AT_MY_OUTFITS, new AssetEntry("MY_OUTFITS", "my_otfts", "my outfits", false, false, false)); addEntry(LLAssetType::AT_MESH, new AssetEntry("MESH", "mesh", "mesh", false, true, true)); + addEntry(LLAssetType::AT_SETTINGS, new AssetEntry("SETTINGS", "settings", "settings blob", true, true, true)); + + addEntry(LLAssetType::AT_UNKNOWN, new AssetEntry("UNKNOWN", "invalid", NULL, false, false, false)); addEntry(LLAssetType::AT_NONE, new AssetEntry("NONE", "-1", NULL, false, false, false)); }; diff --git a/indra/llcommon/llassettype.h b/indra/llcommon/llassettype.h index e6fee54ca..272c63399 100644 --- a/indra/llcommon/llassettype.h +++ b/indra/llcommon/llassettype.h @@ -132,7 +132,16 @@ public: AT_MESH = 49, // Mesh data in our proprietary SLM format - AT_COUNT = 50, + AT_RESERVED_1 = 50, + AT_RESERVED_2 = 51, + AT_RESERVED_3 = 52, + AT_RESERVED_4 = 53, + AT_RESERVED_5 = 54, + AT_RESERVED_6 = 55, + + AT_SETTINGS = 56, // Collection of settings + + AT_COUNT = 57, // +*********************************************************+ // | TO ADD AN ELEMENT TO THIS ENUM: | @@ -143,7 +152,7 @@ public: // | 4. ADD TO LLViewerAssetType.cpp | // | 5. ADD TO DEFAULT_ASSET_FOR_INV in LLInventoryType.cpp | // +*********************************************************+ - + AT_UNKNOWN = 255, AT_NONE = -1 }; diff --git a/indra/llinventory/llinventorytype.cpp b/indra/llinventory/llinventorytype.cpp index 78651b55f..fcef1611c 100644 --- a/indra/llinventory/llinventorytype.cpp +++ b/indra/llinventory/llinventorytype.cpp @@ -85,6 +85,7 @@ LLInventoryDictionary::LLInventoryDictionary() addEntry(LLInventoryType::IT_ANIMATION, new InventoryEntry("animation", "animation", 1, LLAssetType::AT_ANIMATION)); addEntry(LLInventoryType::IT_GESTURE, new InventoryEntry("gesture", "gesture", 1, LLAssetType::AT_GESTURE)); addEntry(LLInventoryType::IT_MESH, new InventoryEntry("mesh", "mesh", 1, LLAssetType::AT_MESH)); + addEntry(LLInventoryType::IT_SETTINGS, new InventoryEntry("settings", "settings", 1, LLAssetType::AT_SETTINGS)); } @@ -145,6 +146,15 @@ DEFAULT_ASSET_FOR_INV_TYPE[LLAssetType::AT_COUNT] = LLInventoryType::IT_NONE, // 47 AT_NONE LLInventoryType::IT_NONE, // 48 AT_NONE LLInventoryType::IT_MESH, // 49 AT_MESH + + LLInventoryType::IT_NONE, // 50 AT_RESERVED_1 + LLInventoryType::IT_NONE, // 52 AT_RESERVED_2 + LLInventoryType::IT_NONE, // 53 AT_RESERVED_3 + LLInventoryType::IT_NONE, // 54 AT_RESERVED_4 + LLInventoryType::IT_NONE, // 55 AT_RESERVED_5 + LLInventoryType::IT_NONE, // 56 AT_RESERVED_6 + + LLInventoryType::IT_SETTINGS, // 57 AT_SETTINGS }; // static diff --git a/indra/llinventory/llinventorytype.h b/indra/llinventory/llinventorytype.h index b444ecfa5..1d9627ffb 100644 --- a/indra/llinventory/llinventorytype.h +++ b/indra/llinventory/llinventorytype.h @@ -62,8 +62,10 @@ public: IT_ANIMATION = 19, IT_GESTURE = 20, IT_MESH = 22, - IT_COUNT = 23, + IT_SETTINGS = 25, + IT_COUNT = 26, + IT_UNKNOWN = 255, IT_NONE = -1 }; @@ -108,8 +110,14 @@ public: ICONNAME_LINKFOLDER, ICONNAME_MESH, + ICONNAME_SETTINGS, + ICONNAME_SETTINGS_SKY, + ICONNAME_SETTINGS_WATER, + ICONNAME_SETTINGS_DAY, + ICONNAME_CLOTHING_UNKNOWN, ICONNAME_INVALID, + ICONNAME_UNKNOWN, ICONNAME_COUNT, ICONNAME_NONE = -1 }; diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 67cd288b4..3eb442385 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -1296,6 +1296,9 @@ LLInvFVBridge* LLInvFVBridge::createBridge(LLAssetType::EType asset_type, //LL_WARNS() << LLAssetType::lookup(asset_type) << " asset type is unhandled for uuid " << uuid << LL_ENDL; break; + case LLAssetType::AT_SETTINGS: + break; + default: LL_INFOS() << "Unhandled asset type (llassetstorage.h): " << (S32)asset_type << " (" << LLAssetType::lookup(asset_type) << ")" << LL_ENDL; diff --git a/indra/newview/llinventoryicon.cpp b/indra/newview/llinventoryicon.cpp index f93dc8dd7..f2739df69 100644 --- a/indra/newview/llinventoryicon.cpp +++ b/indra/newview/llinventoryicon.cpp @@ -88,8 +88,14 @@ LLIconDictionary::LLIconDictionary() addEntry(LLInventoryType::ICONNAME_LINKFOLDER, new IconEntry("inv_link_folder.tga")); addEntry(LLInventoryType::ICONNAME_MESH, new IconEntry("inv_item_mesh.tga")); + addEntry(LLInventoryType::ICONNAME_SETTINGS_SKY, new IconEntry("Inv_SettingsSky.png")); + addEntry(LLInventoryType::ICONNAME_SETTINGS_WATER, new IconEntry("Inv_SettingsWater.png")); + addEntry(LLInventoryType::ICONNAME_SETTINGS_DAY, new IconEntry("Inv_SettingsDay.png")); + addEntry(LLInventoryType::ICONNAME_SETTINGS, new IconEntry("Inv_Settings.png")); + addEntry(LLInventoryType::ICONNAME_CLOTHING_UNKNOWN, new IconEntry("inv_item_unknown.tga")); addEntry(LLInventoryType::ICONNAME_INVALID, new IconEntry("inv_invalid.png")); + addEntry(LLInventoryType::ICONNAME_UNKNOWN, new IconEntry("Inv_UnknownObject.png")); addEntry(LLInventoryType::ICONNAME_NONE, new IconEntry("NONE")); } @@ -163,6 +169,14 @@ const std::string& LLInventoryIcon::getIconName(LLAssetType::EType asset_type, break; case LLAssetType::AT_MESH: idx = LLInventoryType::ICONNAME_MESH; + break; + case LLAssetType::AT_SETTINGS: + // TODO: distinguish between Sky and Water settings. + idx = assignSettingsIcon(misc_flag); + break; + case LLAssetType::AT_UNKNOWN: + idx = LLInventoryType::ICONNAME_UNKNOWN; + break; default: break; } @@ -182,3 +196,14 @@ LLInventoryType::EIconName LLInventoryIcon::assignWearableIcon(U32 misc_flag) const LLWearableType::EType wearable_type = LLWearableType::EType(LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK & misc_flag); return LLWearableType::getIconName(wearable_type); } + +LLInventoryType::EIconName LLInventoryIcon::assignSettingsIcon(U32 misc_flag) +{ + switch (misc_flag & LLInventoryItemFlags::II_FLAGS_WEARABLES_MASK) + { + case 0: return LLInventoryType::ICONNAME_SETTINGS_SKY; + case 1: return LLInventoryType::ICONNAME_SETTINGS_WATER; + case 2: return LLInventoryType::ICONNAME_SETTINGS_DAY; + } + return LLInventoryType::ICONNAME_SETTINGS; +} diff --git a/indra/newview/llinventoryicon.h b/indra/newview/llinventoryicon.h index 659448143..58e1ffdb6 100644 --- a/indra/newview/llinventoryicon.h +++ b/indra/newview/llinventoryicon.h @@ -49,6 +49,7 @@ public: protected: static LLInventoryType::EIconName assignWearableIcon(U32 misc_flag); + static LLInventoryType::EIconName assignSettingsIcon(U32 misc_flag); }; #endif // LL_LLINVENTORYICON_H diff --git a/indra/newview/llviewerassetstats.cpp b/indra/newview/llviewerassetstats.cpp index 90260ed6f..7e41b4bdd 100644 --- a/indra/newview/llviewerassetstats.cpp +++ b/indra/newview/llviewerassetstats.cpp @@ -524,88 +524,31 @@ asset_type_to_category(const LLViewerAssetType::EType at, bool with_http, bool i // - gestures // - everything else. // - llassert_always(50 == LLViewerAssetType::AT_COUNT); // Multiple asset definitions are floating around so this requires some // maintenance and attention. - static const LLViewerAssetStats::EViewerAssetCategories asset_to_bin_map[LLViewerAssetType::AT_COUNT] = - { - LLViewerAssetStats::EVACTextureTempHTTPGet, // (0) AT_TEXTURE - LLViewerAssetStats::EVACSoundUDPGet, // AT_SOUND - LLViewerAssetStats::EVACOtherGet, // AT_CALLINGCARD - LLViewerAssetStats::EVACOtherGet, // AT_LANDMARK - LLViewerAssetStats::EVACOtherGet, // AT_SCRIPT - LLViewerAssetStats::EVACWearableUDPGet, // AT_CLOTHING - LLViewerAssetStats::EVACOtherGet, // AT_OBJECT - LLViewerAssetStats::EVACOtherGet, // AT_NOTECARD - LLViewerAssetStats::EVACOtherGet, // AT_CATEGORY - LLViewerAssetStats::EVACOtherGet, // AT_ROOT_CATEGORY - LLViewerAssetStats::EVACOtherGet, // (10) AT_LSL_TEXT - LLViewerAssetStats::EVACOtherGet, // AT_LSL_BYTECODE - LLViewerAssetStats::EVACOtherGet, // AT_TEXTURE_TGA - LLViewerAssetStats::EVACWearableUDPGet, // AT_BODYPART - LLViewerAssetStats::EVACOtherGet, // AT_TRASH - LLViewerAssetStats::EVACOtherGet, // AT_SNAPSHOT_CATEGORY - LLViewerAssetStats::EVACOtherGet, // AT_LOST_AND_FOUND - LLViewerAssetStats::EVACSoundUDPGet, // AT_SOUND_WAV - LLViewerAssetStats::EVACOtherGet, // AT_IMAGE_TGA - LLViewerAssetStats::EVACOtherGet, // AT_IMAGE_JPEG - LLViewerAssetStats::EVACGestureUDPGet, // (20) AT_ANIMATION - LLViewerAssetStats::EVACGestureUDPGet, // AT_GESTURE - LLViewerAssetStats::EVACOtherGet, // AT_SIMSTATE - LLViewerAssetStats::EVACOtherGet, // AT_FAVORITE - LLViewerAssetStats::EVACOtherGet, // AT_LINK - LLViewerAssetStats::EVACOtherGet, // AT_LINK_FOLDER - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // (30) - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // (40) - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // - LLViewerAssetStats::EVACOtherGet, // AT_MESH - // (50) - }; - - if (at < 0 || at >= LLViewerAssetType::AT_COUNT) + switch (at) { + case LLAssetType::AT_TEXTURE: + return is_temp ? with_http ? LLViewerAssetStats::EVACTextureTempHTTPGet : LLViewerAssetStats::EVACTextureTempUDPGet + : with_http ? LLViewerAssetStats::EVACTextureTempHTTPGet : LLViewerAssetStats::EVACTextureNonTempUDPGet; + break; + case LLAssetType::AT_SOUND: + case LLAssetType::AT_SOUND_WAV: + return LLViewerAssetStats::EVACSoundUDPGet; + break; + case LLAssetType::AT_CLOTHING: + case LLAssetType::AT_BODYPART: + return LLViewerAssetStats::EVACWearableUDPGet; + break; + case LLAssetType::AT_ANIMATION: + case LLAssetType::AT_GESTURE: + return LLViewerAssetStats::EVACGestureUDPGet; + break; + case LLAssetType::AT_LANDMARK: + default: return LLViewerAssetStats::EVACOtherGet; + break; } - LLViewerAssetStats::EViewerAssetCategories ret(asset_to_bin_map[at]); - if (LLViewerAssetStats::EVACTextureTempHTTPGet == ret) - { - // Indexed with [is_temp][with_http] - static const LLViewerAssetStats::EViewerAssetCategories texture_bin_map[2][2] = - { - { - LLViewerAssetStats::EVACTextureNonTempUDPGet, - LLViewerAssetStats::EVACTextureNonTempHTTPGet, - }, - { - LLViewerAssetStats::EVACTextureTempUDPGet, - LLViewerAssetStats::EVACTextureTempHTTPGet, - } - }; - - ret = texture_bin_map[is_temp][with_http]; - } - return ret; } - } // anonymous namespace diff --git a/indra/newview/llviewerassettype.cpp b/indra/newview/llviewerassettype.cpp index 3eee60882..b98767b1b 100644 --- a/indra/newview/llviewerassettype.cpp +++ b/indra/newview/llviewerassettype.cpp @@ -88,7 +88,10 @@ LLViewerAssetDictionary::LLViewerAssetDictionary() addEntry(LLViewerAssetType::AT_MESH, new ViewerAssetEntry(DAD_MESH)); + addEntry(LLViewerAssetType::AT_UNKNOWN, new ViewerAssetEntry(DAD_NONE)); + addEntry(LLViewerAssetType::AT_NONE, new ViewerAssetEntry(DAD_NONE)); + addEntry(LLViewerAssetType::AT_SETTINGS, new ViewerAssetEntry(DAD_NONE)); }; EDragAndDropType LLViewerAssetType::lookupDragAndDropType(EType asset_type) diff --git a/indra/newview/skins/default/textures/Inv_Settings.png b/indra/newview/skins/default/textures/Inv_Settings.png new file mode 100644 index 0000000000000000000000000000000000000000..c43ba349c486e32db0ff2ec222c665a72b0d0674 GIT binary patch literal 925 zcmV;O17iG%P){0OnIuy|=$p+QY-l#zy-q%q2`&6_vB z)ckn8Hsi3R1Rx+)<(YO^?b|e&4^XE*i59sHhPhHcTrg zJT4qu$(f3`gD01OJde6beJnFGExtoWJ2oK#_|cePj8S~_F(lSU5B>DYj56`weEcL?i8aKUtYWc5 zf+RV*MO~KcG4XNHW71Qss`~$}s~sQcFJ!OxL)DYxymdnL7JP3y&gY@yd>?`P5iT;N z`0N1;zKgzD(meanxDIERB`vZ8=Nr)WVCt5hm)tU3@i@GmK*JogTtn?bp=QN(j_)D7 zCQo$*yL<9gWPju04-GVDy>nq^#{d8T32;bRa{vGi!~g&e!~vBn4jTXf0m4Z{K~y-6 zrIJlZR8bg)pL@^fFs)2%%E3qov{JG`F&83(p|%Lb7IuUd8HkHCkjRCB3?d2=4rU-U zV4L8cVnhlN#<<%EgG6SUgf>Fiom}J~NmSgKHYwBfZ=!eio$tI44~GN)87+HIN`(RM zK6lrplwJD*lu~zrGQcaPTy%hIQ>oO?WHR|R7z}p*1yD*o1d0Jyj@CBtSxVUhp#NhT zK-jij0<>%ccFIom>}2nR5E@Xu4ahl$VfYQh@c$V#$U!|8iyezbqo;J2XsC*e6od-v zzFU@c9(a4GK|CHW`qFf^*3(?=>spKy=t9t8KK8g9FO*)N4-WwD0}V{mJmJko;~&Z zBcmq)$Ygll(8-UDO^y^7apmPB0MfRN4p`}Q+I9ju+OI8zj$YhKF0X*5QQp~#$6HAG zjaC3Yy{0OnIuy|=$p+QY-l#zy-q%q2`&6_vB z)ckn8Hsi3R1Rx+)<(YO^?b|e&4^XE*i59sHhPhHcTrg zJT4qu$(f3`gD01OJde6beJnFGExtoWJ2oK#_|cePj8S~_F(lSU5B>DYj56`weEcL?i8aKUtYWc5 zf+RV*MO~KcG4XNHW71Qss`~$}s~sQcFJ!OxL)DYxymdnL7JP3y&gY@yd>?`P5iT;N z`0N1;zKgzD(meanxDIERB`vZ8=Nr)WVCt5hm)tU3@i@GmK*JogTtn?bp=QN(j_)D7 zCQo$*yL<9gWPju04-GVDy>nq^#{d8T32;bRa{vGi!~g&e!~vBn4jTXf0m4Z{K~y-6 z#ge~k6hRb#zxQSqgF6A;y=_!3XcAFOX=5W25sy@MmV&8MX(yPou(PqTO6=2F`d9cT z1U;0%lKbi1u6V+;m|G3pACL#b3~y$>;eGSqyhGg64@NbDdWckGsK>}`0KaGd4(;td z-|^)C?UtvI0!iwS`b=TDB$8H z5Tz{p?Cd;1M3w-KhcCLK4n#ndxK;$fc@SmNKc(~dK5J`NDa!%#`5!hnuQQ!iIO)9V zA{yz=gBcA_L_wAEbj0_s-?(%82HV^BSYK~*eB9&Yq(pdMo77{dhER`?Y6$fNnf0Nb zKs7+B5mci%pOFjTNmelDdy_2BHxV+?4J{Hzv}Y*LM%jKyqk)C|&%_YJr6!f?b0D`Dm5FJmdMbj~s68 zBA*Sy6mcF?4^3~Vi#c(KdJr&mcz`S!aJaS0lP{lQVHX0XjTaX$i(B|n%te5xj}Dr6 zck3nA5%xFUK(Z1WEEKW!roqw-(j1yH&OQDD7NC~4P%M1K00000NkvXXu0mjfx=gEj literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/Inv_SettingsSky.png b/indra/newview/skins/default/textures/Inv_SettingsSky.png new file mode 100644 index 0000000000000000000000000000000000000000..77858b23c312ab5aae88888672a34d967ffbb62c GIT binary patch literal 883 zcmV-(1C0EMP){0OnIuy|=$p+QY-l#zy-q%q2`&6_vB z)ckn8Hsi3R1Rx+)<(YO^?b|e&4^XE*i59sHhPhHcTrg zJT4qu$(f3`gD01OJde6beJnFGExtoWJ2oK#_|cePj8S~_F(lSU5B>DYj56`weEcL?i8aKUtYWc5 zf+RV*MO~KcG4XNHW71Qss`~$}s~sQcFJ!OxL)DYxymdnL7JP3y&gY@yd>?`P5iT;N z`0N1;zKgzD(meanxDIERB`vZ8=Nr)WVCt5hm)tU3@i@GmK*JogTtn?bp=QN(j_)D7 zCQo$*yL<9gWPju04-GVDy>nq^#{d8T32;bRa{vGi!~g&e!~vBn4jTXf0hmcdK~y-6 z)soGM6HyR_zq(boyVL1RCJl}<4w48mh~UD_z`VdLd=T+Pd?nqw^$Ao&QNf>y=_Z*l zll0$p(UEcEP7n_ibrw~eqRxT;9>UWXAx;v47*!WQJ*a_t4n_(0Z>78~8;-^?@0LPY z0TzKXaEj&mm?vissoIX$UoQ}Gy!yD}eBDqs{ZKYg(j;PLN;%(&I0f}sgU8firaYSF zfG|7Qo#!Nk!qZT8LgqtaRyX>E6_=L_W z%UYl_5CwIh3Kp@(*rMc_^8E^qGMJ9w{0h1N4vWCYUPt! literal 0 HcmV?d00001 diff --git a/indra/newview/skins/default/textures/Inv_SettingsWater.png b/indra/newview/skins/default/textures/Inv_SettingsWater.png new file mode 100644 index 0000000000000000000000000000000000000000..46fb58c3f24add810048393a5abb95eed712ee15 GIT binary patch literal 764 zcmV{0OnIuy|=$p+QY-l#zy-q%q2`&6_vB z)ckn8Hsi3R1Rx+)<(YO^?b|e&4^XE*i59sHhPhHcTrg zJT4qu$(f3`gD01OJde6beJnFGExtoWJ2oK#_|cePj8S~_F(lSU5B>DYj56`weEcL?i8aKUtYWc5 zf+RV*MO~KcG4XNHW71Qss`~$}s~sQcFJ!OxL)DYxymdnL7JP3y&gY@yd>?`P5iT;N z`0N1;zKgzD(meanxDIERB`vZ8=Nr)WVCt5hm)tU3@i@GmK*JogTtn?bp=QN(j_)D7 zCQo$*yL<9gWPju04-GVDy>nq^#{d8T32;bRa{vGi!~g&e!~vBn4jTXf0U=35K~y-6 z#geZ}Ls1xppR-K`LFaIC(L0b~P=*>TcC8jQ8pMA<5NwKJSj6OyAZQeeE}D#M3nGRi zh_JGxLD04<_qANc-Q{|)h+jG9JiOm?z5@sTw5(P+*S;%a9L)p36W4eYD6?r=X|aq$ zz6bcU$q{h-Qz%_vH4SWa&Tq_etc~9ZtbE`G$ae8pE;!V(TVOQ?)Pczk8;sU3GQ3mc zNQ1bLJ$s2Bl_ zW*dgGaOFdf0SZ8WtYef1*Avb@LRe`*AUN?NT8d3mqKdPus#pmtO}$9ov&5amrNpCl ulkxPgY_$Mv19LzK+ye(xOx=C^f7CY)+fx87^wLiN0000|qj zUdZK(S~%!;EkqYxwr6Z~BYwd}ou0T_(@VKIC zMd2yo&{|P7d0V(k$;1-Er^0ScE+~9!>hUVSn4GTim&sZr8~}?`*p;s1cpWPlEhj85 zr!SXXRetYdzQmr)&(BHh74JbOOb|aVrkNzb2t$m?Jc0)wgR-JQzV|18hJxfOGOLu( zSRqY@B5qMvrFv3gO7x_REG4u5fBUMZhJDrQc0aT{8OB>b*tVcjHjK|h!>AmA^${-e zwfw>XjJ}Iru4#Sy;Mjn(%bFJ7f%8r1eo$jt>_@VSTT&@_J%NrWbY4T-QnhEl`yAgx zWL>`M3U>EkK+ZdszX3vQXVnq^QB42<010qNS#tmY3ljhU3ljkVnw%H_00KNoL_t(I zjfIn6Xi`xe$A9PC+wBf-X{|Q@wCk)8!OB0F&_gZAC?b08A!3c9Jr(q@f~|rOeHk&JIAk-d|Wf=!2#xEUT zdpGFP6U5R8vLZp@UzXI#p*s(pPUmtfh;q4H4vynEmSq6|;K}&d6@UNR!7~TeDANvt zIi`V~dIeoDm-JK9ky8fG*;g8kM$YH+Y&aa&Q9hsVpdbh!NfI;~4Z1rPcyxNdOl2jC zT%EDcPS?Dzi$A^}IcAcnLwix}&ayQoZ++wjT{TBcL zP$(3%*9@PB?0X4bSjOb~hrTK6(G$@A%{wru=A+d%H=ZFn zCz%yO2)5ZwFWnt{9d95A!oI~}d3$+8W~$Yyv6Bx2KoZuwYKs&_p;)>B6aqj9$tqb9 z0FupF2nK^&S~`=-^v=#i&X*+-8TtM%*mh7NkpQ*erv3uNRO_f) SXw2mR0000 + + + + +