From 56a478c67e5ceaef535368c5aac44b206c24c3e3 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Wed, 6 Nov 2024 14:26:11 -0800 Subject: [PATCH 01/21] add ai sdk samples for inference and rag --- scenarios/inference/chat-app/chat-simple.py | 20 ++ scenarios/inference/chat-app/chat-template.py | 37 ++++ scenarios/rag/custom-rag-app/README.md | 136 ++++++++++++ .../assets/chat_eval_data.jsonl | 13 ++ .../assets/grounded_chat.prompty | 26 +++ .../assets/intent_mapping.prompty | 57 +++++ .../rag/custom-rag-app/assets/products.csv | 21 ++ .../rag/custom-rag-app/chat_with_products.py | 81 +++++++ scenarios/rag/custom-rag-app/config.py | 35 +++ .../rag/custom-rag-app/create_search_index.py | 199 ++++++++++++++++++ scenarios/rag/custom-rag-app/evaluate.py | 83 ++++++++ .../custom-rag-app/get_product_documents.py | 127 +++++++++++ scenarios/rag/custom-rag-app/requirements.txt | 6 + 13 files changed, 841 insertions(+) create mode 100644 scenarios/inference/chat-app/chat-simple.py create mode 100644 scenarios/inference/chat-app/chat-template.py create mode 100644 scenarios/rag/custom-rag-app/README.md create mode 100644 scenarios/rag/custom-rag-app/assets/chat_eval_data.jsonl create mode 100644 scenarios/rag/custom-rag-app/assets/grounded_chat.prompty create mode 100644 scenarios/rag/custom-rag-app/assets/intent_mapping.prompty create mode 100644 scenarios/rag/custom-rag-app/assets/products.csv create mode 100644 scenarios/rag/custom-rag-app/chat_with_products.py create mode 100644 scenarios/rag/custom-rag-app/config.py create mode 100644 scenarios/rag/custom-rag-app/create_search_index.py create mode 100644 scenarios/rag/custom-rag-app/evaluate.py create mode 100644 scenarios/rag/custom-rag-app/get_product_documents.py create mode 100644 scenarios/rag/custom-rag-app/requirements.txt diff --git a/scenarios/inference/chat-app/chat-simple.py b/scenarios/inference/chat-app/chat-simple.py new file mode 100644 index 00000000..6ca1f376 --- /dev/null +++ b/scenarios/inference/chat-app/chat-simple.py @@ -0,0 +1,20 @@ +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +project_connection_string = "" + +project = AIProjectClient.from_connection_string( + conn_str=project_connection_string, + credential=DefaultAzureCredential() +) + +chat = project.inference.get_chat_completions_client() +response = chat.complete( + model="gpt-4o-mini", + messages=[ + {"role": "system", "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?"}, + {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."}, + ] +) + +print(response.choices[0].message.content) diff --git a/scenarios/inference/chat-app/chat-template.py b/scenarios/inference/chat-app/chat-template.py new file mode 100644 index 00000000..3e431bc6 --- /dev/null +++ b/scenarios/inference/chat-app/chat-template.py @@ -0,0 +1,37 @@ +# +from azure.ai.inference.prompts import PromptTemplate + +def get_chat_response(messages, context): + # create a prompt template from an inline string (using mustache syntax) + prompt_template = PromptTemplate.from_message(prompt_template=""" + system: + You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig? Refer to the user by their first name, try to work their last name into a pun. + + The user's first name is {{first_name}} and their last name is {{last_name}}. + """) + + # generate system message from the template, passing in the context as variables + system_message = prompt_template.render(data=context) + + # add the prompt messages to the user messages + response = chat.complete( + model="gpt-4o-mini", + messages=system_message + messages, + temperature=1, + frequency_penalty=0.5, + presence_penalty=0.5) + + return response +# + +# +if __name__ == "__main__": + response = get_chat_response( + messages=[{"role": "user", "content": "what city has the best food in the world?"}], + context = { + "first_name": "Jessie", + "last_name": "Irwin" + } + ) + print(response.choices[0].message.content) +# diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md new file mode 100644 index 00000000..c3bf5bb8 --- /dev/null +++ b/scenarios/rag/custom-rag-app/README.md @@ -0,0 +1,136 @@ +--- +page_type: sample +languages: +- python +products: +- ai-model-inference +- ai-search +- ai-evaluation +description: Example description. +--- + +## Custom RAG App + +### Overview + +This folder contains a reference implementation of a custom RAG app built using the Azure Foundry AI SDK. + +Check out the following files for implementation details: + - [create_search_index.py](): creates an Azure AI search index + - Uses data in [assets/products.csv]() to generate the index + - [get_product_documents.py](): implements document retreival based on user queries + - Using [assets/intent_mapping.prompty]() for generating a search query from the conversation + - [chat_with_products.py](): implements chat that grounds response in retrieved documents + - Uses [assets/grounded_chat.prompty]() for formatting retrieved documents into the chat prompt + - Implements the [Microsoft AI Chat protocol](https://github.com/microsoft/ai-chat-protocol) for compatibility with evaluation and front-ends + +### Objective + +The main objective of this sample is for you to understand how to build a custom knowledge retrieval (RAG) app using the Azure AI Inferencing SDK. We'll be putting together inferencing, tracing, evaluation, prompts and search to build a fully custom rag app! + +## Create resources + +To run this sample, you'll need to create an Azure AI Project with an Azure AI Services resource connected to it. If you have an existing one, you can skip these steps and move to the next section. + +### Create an AI Project and AI Services resource + +First we'll create a project in Azure AI Studio: + - Go to [https://aka.ms/aistudio/ignite2024](https://aka.ms/aistudio/ignite2024) + - Click **New Project** on the homepage + - Enter a project name + - Click **Create new hub**, provide a hub name + - Click **Create Project** + +This will take about 3 minutes to complete. + +### Deploy a gpt-4o-mini model + +Now we'll need to deploy a model so that we can call it from code. To start, we'll use a gpt-4o-mini model because it's fast and cheap. You can experiment with using a gpt-4o model for better results. + - Go to the **Models + Endpoints** page + - Click the **+ Deploy Model** dropdown and click **Deploy a base model** + - Select **gpt-4o-mini** from the list and click **Confirm** + +Repeat the above steps for the following models: + - text-embedding-3-large + - Phi-3.5-mini-instruct _coming soon: not currently available in AI Studio_ + +## Set up a local development environment + +First, clone this repo locally from your favorite terminal and open this folder: +``` +git clone https://github.com/azure-samples/azureai-samples +cd azureai-samples/scenarios/rag/custom-rag-app +``` + +### Creating a local Python environment + +First, create a virtual environment. Always do this when installing packages locally >:( + +On Windows: +``` +py -3 -m venv .venv +.venv\scripts\activate +``` + +On Linux: +``` +python3 -m venv .venv +source venv/bin/activate +``` + +Install the core dependencies to run the sample: +```Python +pip install -r requirements.txt +``` + +## Configure project string + +Go back to the **Overview** page of your project, and in the upper right hand corner click the copy button beside the **Project connection string** field. + +Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```PROJECT_CONNECTION_STRING=``` variable. + + +### Run the sample! + +Create a search index: +``` +python create_search_index.py +``` + +Test out what documents are retrieved from the search index by running: +``` +python get_product_documents.py --query "I need a new tent for 4 people, what would you recommend?" +``` + +Run a sample user input through the ```chat_with_products``` function: +``` +python chat_with_products.py --query "I need a new tent for 4 people, what would you recommend?" +``` + +#### Tracing + +To enable tracing, first install packages needed for logging telemetry to AI Studio projects: +``` +pip install azure-monitor-opentelemetry +``` + +Now run the application with telemetry enabled: +``` +python chat_with_products.py --enable-telemetry +``` + +Click the link at the start of the output to view your traces in Azure AI Studio! + +#### Evaluation + +Install packages needed to run evaluation (this can take up to 8 minutes): +``` +pip install azure-ai-evaluation[remote] +``` + +Run evaluation: +``` +python evaluate.py +``` + +### Estimated Runtime: 30 mins diff --git a/scenarios/rag/custom-rag-app/assets/chat_eval_data.jsonl b/scenarios/rag/custom-rag-app/assets/chat_eval_data.jsonl new file mode 100644 index 00000000..752d5e5f --- /dev/null +++ b/scenarios/rag/custom-rag-app/assets/chat_eval_data.jsonl @@ -0,0 +1,13 @@ +{"query": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} +{"query": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} +{"query": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} +{"query": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} +{"query": "What brand is TrailMaster tent? ", "truth": "OutdoorLiving"} +{"query": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} +{"query": "What is the floor area for Floor Area? ", "truth": "80 square feet"} +{"query": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} +{"query": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} +{"query": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} +{"query": "How long are the TrailBlaze pants under warranty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} +{"query": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} +{"query": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"} \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/assets/grounded_chat.prompty b/scenarios/rag/custom-rag-app/assets/grounded_chat.prompty new file mode 100644 index 00000000..289458b7 --- /dev/null +++ b/scenarios/rag/custom-rag-app/assets/grounded_chat.prompty @@ -0,0 +1,26 @@ +--- +name: Chat with documents +description: Uses a chat completions model to respond to queries grounded in relevant documents +model: + api: chat + configuration: + azure_deployment: gpt-4o +inputs: + conversation: + type: array +--- +system: +You are an AI assistant helping users with queries related to outdoor outdooor/camping gear and clothing. +If the question is not related to outdoor/camping gear and clothing, just say 'Sorry, I only can answer queries related to outdoor/camping gear and clothing. So, how can I help?' +Don't try to make up any answers. +If the question is related to outdoor/camping gear and clothing but vague, ask for clarifying questions instead of referencing documents. If the question is general, for example it uses "it" or "they", ask the user to specify what product they are asking about. +Use the following pieces of context to answer the questions about outdoor/camping gear and clothing as completely, correctly, and concisely as possible. +Do not add documentation reference in the response. + +# Documents + +{{#documents}} + +## Document {{id}}: {{title}} +{{content}} +{{/documents}} diff --git a/scenarios/rag/custom-rag-app/assets/intent_mapping.prompty b/scenarios/rag/custom-rag-app/assets/intent_mapping.prompty new file mode 100644 index 00000000..e980e500 --- /dev/null +++ b/scenarios/rag/custom-rag-app/assets/intent_mapping.prompty @@ -0,0 +1,57 @@ +--- +name: Chat Prompt +description: A prompty that extract users query intent based on the current_query and chat_history of the conversation +model: + api: chat + configuration: + azure_deployment: gpt-4o +inputs: + conversation: + type: array +--- +system: +# Instructions +- You are an AI assistant reading a current user query and chat_history. +- Given the chat_history, and current user's query, infer the user's intent expressed in the current user query. +- Once you infer the intent, respond with a search query that can be used to retrieve relevant documents for the current user's query based on the intent +- Be specific in what the user is asking about, but disregard parts of the chat history that are not relevant to the user's intent. +- Provide responses in json format + +# Examples +Example 1: +With a conversation like below: +``` + - user: are the trailwalker shoes waterproof? + - assistant: Yes, the TrailWalker Hiking Shoes are waterproof. They are designed with a durable and waterproof construction to withstand various terrains and weather conditions. + - user: how much do they cost? +``` +Respond with: +{ + "intent": "The user wants to know how much the Trailwalker Hiking Shoes cost.", + "search_query": "price of Trailwalker Hiking Shoes" +} + +Example 2: +With a conversation like below: +``` + - user: are the trailwalker shoes waterproof? + - assistant: Yes, the TrailWalker Hiking Shoes are waterproof. They are designed with a durable and waterproof construction to withstand various terrains and weather conditions. + - user: how much do they cost? + - assistant: The TrailWalker Hiking Shoes are priced at $110. + - user: do you have waterproof tents? + - assistant: Yes, we have waterproof tents available. Can you please provide more information about the type or size of tent you are looking for? + - user: which is your most waterproof tent? + - assistant: Our most waterproof tent is the Alpine Explorer Tent. It is designed with a waterproof material and has a rainfly with a waterproof rating of 3000mm. This tent provides reliable protection against rain and moisture. + - user: how much does it cost? +``` +Respond with: +{ + "intent": "The user would like to know how much the Alpine Explorer Tent costs.", + "search_query": "price of Alpine Explorer Tent" +} + +user: +Return the search query for the messages in the following conversation: +{{#conversation}} + - {{role}}: {{content}} +{{/conversation}} \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/assets/products.csv b/scenarios/rag/custom-rag-app/assets/products.csv new file mode 100644 index 00000000..81c99b21 --- /dev/null +++ b/scenarios/rag/custom-rag-app/assets/products.csv @@ -0,0 +1,21 @@ +id,name,price,category,brand,description +1,TrailMaster X4 Tent,250.0,Tents,OutdoorLiving,"Unveiling the TrailMaster X4 Tent from OutdoorLiving, your home away from home for your next camping adventure. Crafted from durable polyester, this tent boasts a spacious interior perfect for four occupants. It ensures your dryness under drizzly skies thanks to its water-resistant construction, and the accompanying rainfly adds an extra layer of weather protection. It offers refreshing airflow and bug defence, courtesy of its mesh panels. Accessibility is not an issue with its multiple doors and interior pockets that keep small items tidy. Reflective guy lines grant better visibility at night, and the freestanding design simplifies setup and relocation. With the included carry bag, transporting this convenient abode becomes a breeze. Be it an overnight getaway or a week-long nature escapade, the TrailMaster X4 Tent provides comfort, convenience, and concord with the great outdoors. Comes with a two-year limited warranty to ensure customer satisfaction." +2,Adventurer Pro Backpack,90.0,Backpacks,HikeMate,"Venture into the wilderness with the HikeMate's Adventurer Pro Backpack! Uniquely designed with ergonomic comfort in mind, this backpack ensures a steadfast journey no matter the mileage. It boasts a generous 40L capacity wrapped up in durable nylon fabric ensuring its long-lasting performance on even the most rugged pursuits. It's meticulously fashioned with multiple compartments and pockets for organized storage, hydration system compatibility, and adjustable padded shoulder straps all in a lightweight construction. The added features of a sternum strap and hip belt enhance stability without compromising on comfort. The Adventurer Pro Backpack also prioritizes your safety with its reflective accents for when night falls. This buoyant beauty does more than carry your essentials; it carries the promise of a stress-free adventure!" +3,Summit Breeze Jacket,120.0,Hiking Clothing,MountainStyle,"Discover the joy of hiking with MountainStyle's Summit Breeze Jacket. This lightweight jacket is your perfect companion for outdoor adventures. Sporting a trail-ready, windproof design and a water-resistant fabric, it's ready to withstand any weather. The breathable polyester material and adjustable cuffs keep you comfortable, whether you're ascending a mountain or strolling through a park. And its sleek black color adds style to function. The jacket features a full-zip front closure, adjustable hood, and secure zippered pockets. Experience the comfort of its inner lining and the convenience of its packable design. Crafted for night trekkers too, the jacket has reflective accents for enhanced visibility. Rugged yet chic, the Summit Breeze Jacket is more than a hiking essential, it's the gear that inspires you to reach new heights. Choose adventure, choose the Summit Breeze Jacket." +4,TrekReady Hiking Boots,140.0,Hiking Footwear,TrekReady,"Introducing the TrekReady Hiking Boots - stepping up your hiking game, one footprint at a time! Crafted from leather, these stylistic Trailmates are made to last. TrekReady infuses durability with its reinforced stitching and toe protection, making sure your journey is never stopped short. Comfort? They have that covered too! The boots are a haven with their breathable materials, cushioned insole, with padded collar and tongue; all nestled neatly within their lightweight design. As they say, it's what's inside that counts - so inside you'll find a moisture-wicking lining that quarantines stank and keeps your feet fresh as that mountaintop breeze. Remember the fear of slippery surfaces? With these boots, you can finally tell it to 'take a hike'! Their shock-absorbing midsoles and excellent traction capabilities promise stability at your every step. Beautifully finished in a traditional lace-up system, every adventurer deserves a pair of TrekReady Hiking Boots. Hike more, worry less!" +5,BaseCamp Folding Table,60.0,Camping Tables,CampBuddy,"CampBuddy's BaseCamp Folding Table is an adventurer's best friend. Lightweight yet powerful, the table is a testament to fun-meets-function and will elevate any outing to new heights. Crafted from resilient, rust-resistant aluminum, the table boasts a generously sized 48 x 24 inches tabletop, perfect for meal times, games and more. The foldable design is a godsend for on-the-go explorers. Adjustable legs rise to the occasion to conquer uneven terrains and offer height versatility, while the built-in handle simplifies transportation. Additional features like non-slip feet, integrated cup holders and mesh pockets add a pinch of finesse. Quick to set up without the need for extra tools, this table is a silent yet indispensable sidekick during camping, picnics, and other outdoor events. Don't miss out on the opportunity to take your outdoor experiences to a new level with the BaseCamp Folding Table. Get yours today and embark on new adventures tomorrow! " +6,EcoFire Camping Stove,80.0,Camping Stoves,EcoFire,"Introducing EcoFire's Camping Stove, your ultimate companion for every outdoor adventure! This portable wonder is precision-engineered with a lightweight and compact design, perfect for capturing that spirit of wanderlust. Made from high-quality stainless steel, it promises durability and steadfast performance. This stove is not only fuel-efficient but also offers an easy, intuitive operation that ensures hassle-free cooking. Plus, it's flexible, accommodating a variety of cooking methods whether you're boiling, grilling, or simmering under the starry sky. Its stable construction, quick setup, and adjustable flame control make cooking a breeze, while safety features protect you from any potential mishaps. And did we mention it also includes an effective wind protector and a carry case for easy transportation? But that's not all! The EcoFire Camping Stove is eco-friendly, designed to minimize environmental impact. So get ready to enhance your camping experience and enjoy delicious outdoor feasts with this unique, versatile stove!" +7,CozyNights Sleeping Bag,100.0,Sleeping Bags,CozyNights,"Embrace the great outdoors in any season with the lightweight CozyNights Sleeping Bag! This durable three-season bag is superbly designed to give hikers, campers, and backpackers comfort and warmth during spring, summer, and fall. With a compact design that folds down into a convenient stuff sack, you can whisk it away on any adventure without a hitch. The sleeping bag takes comfort seriously, featuring a handy hood, ample room and padding, and a reliable temperature rating. Crafted from high-quality polyester, it ensures long-lasting use and can even be zipped together with another bag for shared comfort. Whether you're gazing at stars or catching a quick nap between trails, the CozyNights Sleeping Bag makes it a treat. Don't just sleep— dream with CozyNights." +8,Alpine Explorer Tent,350.0,Tents,AlpineGear,"Welcome to the joy of camping with the Alpine Explorer Tent! This robust, 8-person, 3-season marvel is from the responsible hands of the AlpineGear brand. Promising an enviable setup that is as straightforward as counting sheep, your camping experience is transformed into a breezy pastime. Looking for privacy? The detachable divider provides separate spaces at a moment's notice. Love a tent that breathes? The numerous mesh windows and adjustable vents fend off any condensation dragon trying to dampen your adventure fun. The waterproof assurance keeps you worry-free during unexpected rain dances. With a built-in gear loft to stash away your outdoor essentials, the Alpine Explorer Tent emerges as a smooth balance of privacy, comfort, and convenience. Simply put, this tent isn't just a shelter - it's your second home in the heart of nature! Whether you're a seasoned camper or a nature-loving novice, this tent makes exploring the outdoors a joyous journey." +9,SummitClimber Backpack,120.0,Backpacks,HikeMate,"Adventure waits for no one! Introducing the HikeMate SummitClimber Backpack, your reliable partner for every exhilarating journey. With a generous 60-liter capacity and multiple compartments and pockets, packing is a breeze. Every feature points to comfort and convenience; the ergonomic design and adjustable hip belt ensure a pleasantly personalized fit, while padded shoulder straps protect you from the burden of carrying. Venturing into wet weather? Fear not! The integrated rain cover has your back, literally. Stay hydrated thanks to the backpack's hydration system compatibility. Travelling during twilight? Reflective accents keep you visible in low-light conditions. The SummitClimber Backpack isn't merely a carrier; it's a wearable base camp constructed from ruggedly durable nylon and thoughtfully designed for the great outdoors adventurer, promising to withstand tough conditions and provide years of service. So, set off on that quest - the wild beckons! The SummitClimber Backpack - your hearty companion on every expedition!" +10,TrailBlaze Hiking Pants,75.0,Hiking Clothing,MountainStyle,"Meet the TrailBlaze Hiking Pants from MountainStyle, the stylish khaki champions of the trails. These are not just pants; they're your passport to outdoor adventure. Crafted from high-quality nylon fabric, these dapper troopers are lightweight and fast-drying, with a water-resistant armor that laughs off light rain. Their breathable design whisks away sweat while their articulated knees grant you the flexibility of a mountain goat. Zippered pockets guard your essentials, making them a hiker's best ally. Designed with durability for all your trekking trials, these pants come with a comfortable, ergonomic fit that will make you forget you're wearing them. Sneak a peek, and you are sure to be tempted by the sleek allure that is the TrailBlaze Hiking Pants. Your outdoors wardrobe wouldn't be quite complete without them." +11,TrailWalker Hiking Shoes,110.0,Hiking Footwear,TrekReady,"Meet the TrekReady TrailWalker Hiking Shoes, the ideal companion for all your outdoor adventures. Constructed with synthetic leather and breathable mesh, these shoes are tough as nails yet surprisingly airy. Their cushioned insoles offer fabulous comfort for long hikes, while the supportive midsoles and traction outsoles with multidirectional lugs ensure stability and excellent grip. A quick-lace system, padded collar and tongue, and reflective accents make these shoes a dream to wear. From combating rough terrain with the reinforced toe cap and heel, to keeping off trail debris with the protective mudguard, the TrailWalker Hiking Shoes have you covered. These waterproof warriors are made to endure all weather conditions. But they're not just about being rugged, they're light as a feather too, minimizing fatigue during epic hikes. Each pair can be customized for a perfect fit with removable insoles and availability in multiple sizes and widths. Navigate hikes comfortably and confidently with the TrailWalker Hiking Shoes. Adventure, here you come!" +12,TrekMaster Camping Chair,50.0,Camping Tables,CampBuddy,"Gravitate towards comfort with the TrekMaster Camping Chair from CampBuddy. This trusty outdoor companion boasts sturdy construction using high-quality materials that promise durability and enjoyment for seasons to come. Impeccably lightweight and portable, it's designed to be your go-to seat whether you're camping, at a picnic, cheering at a sporting event, or simply relishing in your backyard pleasures. Beyond its foldable design ensuring compact storage and easy transportation, its ergonomic magic is in the details. An adjustable recline, padded seat and backrest, integrated cup holder, and side pockets ensure the greatest outdoor comfort. Weather resistant, easy to clean, and capable of supporting diverse body types, this versatile chair also comes with a carry bag, ready for your next adventure." +13,PowerBurner Camping Stove,100.0,Camping Stoves,PowerBurner,"Unleash your inner explorer with the PowerBurner Dual Burner Camping Stove. It's designed for the adventurous heart, with sturdy construction and a high heat output that makes boiling and cooking a breeze. This stove isn't just about strength—it's got finesse too. With adjustable flame control, you can simmer, sauté, or sizzle with absolute precision. Its compact design and integrated carrying handle make transportation effortless. Moreover, it's crafted to defy the elements, boasting a wind-resistant exterior and piezo ignition system for quick, reliable starts. And when the cooking's done, its removable grates make cleanup swift and easy. Rugged, versatile and reliable, the PowerBurner marks a perfect blend of practicality and performance. So, why wait? Let's turn up the heat on your outdoor culinary adventures today." +14,MountainDream Sleeping Bag,130.0,Sleeping Bags,MountainDream,"Meet the MountainDream Sleeping Bag: your new must-have companion for every outdoor adventure. Designed to handle 3-season camping with ease, it comes equipped with a premium synthetic insulation that will keep you cozy even when temperatures fall down to 15°F! Sporting a durable water-resistant nylon shell and soft breathable polyester lining, this bag doesn't sacrifice comfort for toughness. The star of the show is the contoured mummy shape that not only provides optimal heat retention but also cuts down on the weight. A smooth, snag-free YKK zipper with a unique anti-snag design allows for hassle-free operation, while the adjustable hood and full-length zipper baffle work together to ensure you stay warm all night long. Need to bring along some essentials? Not to worry! There's an interior pocket just for that. And when it's time to pack up? Just slip it into the included compression sack for easy storage and transport. Whether you're a backpacking pro or a camping novice, the MountainDream Sleeping Bag is the perfect blend of durability, warmth, and comfort that you've been looking for." +15,SkyView 2-Person Tent,200.0,Tents,OutdoorLiving,"Introducing the OutdoorLiving SkyView 2-Person Tent, a perfect companion for your camping and hiking adventures. This tent offers a spacious interior that houses two people comfortably, with room to spare. Crafted from durable waterproof materials to shield you from the elements, it is the fortress you need in the wild. Setup is a breeze thanks to its intuitive design and color-coded poles, while two large doors allow for easy access. Stay organized with interior pockets, and store additional gear in its two vestibules. The tent also features mesh panels for effective ventilation, and it comes with a rainfly for extra weather protection. Light enough for on-the-go adventurers, it packs compactly into a carrying bag for seamless transportation. Reflective guy lines ensure visibility at night for added safety, and the tent stands freely for versatile placement. Experience the reliability of double-stitched seams that guarantee increased durability, and rest easy under the stars with OutdoorLiving's SkyView 2-Person Tent. It's not just a tent; it's your home away from home." +16,TrailLite Daypack,60.0,Backpacks,HikeMate,"Step up your hiking game with HikeMate's TrailLite Daypack. Built for comfort and efficiency, this lightweight and durable backpack offers a spacious main compartment, multiple pockets, and organization-friendly features all in one sleek package. The adjustable shoulder straps and padded back panel ensure optimal comfort during those long exhilarating treks. Course through nature without worry as the daypack's water-resistant fabric protects your essentials from unexpected showers. Plus, never run dry with the integrated hydration system. And did we mention it comes in a plethora of colors and designs? So you can choose one that truly speaks to your outdoorsy soul! Keeping your visibility in mind, we've added reflective accents that light up in low-light conditions. Don't just carry a backpack, adorn a companion that takes you a step ahead in your adventures. Trust the TrailLite Daypack for a hassle-free, enjoyable hiking experience." +17,RainGuard Hiking Jacket,110.0,Hiking Clothing,MountainStyle,"Introducing the MountainStyle RainGuard Hiking Jacket - the ultimate solution for weatherproof comfort during your outdoor undertakings! Designed with waterproof, breathable fabric, this jacket promises an outdoor experience that's as dry as it is comfortable. The rugged construction assures durability, while the adjustable hood provides a customizable fit against wind and rain. Featuring multiple pockets for safe, convenient storage and adjustable cuffs and hem, you can tailor the jacket to suit your needs on-the-go. And, don't worry about overheating during intense activities - it's equipped with ventilation zippers for increased airflow. Reflective details ensure visibility even during low-light conditions, making it perfect for evening treks. With its lightweight, packable design, carrying it inside your backpack requires minimal effort. With options for men and women, the RainGuard Hiking Jacket is perfect for hiking, camping, trekking and countless other outdoor adventures. Don't let the weather stand in your way - embrace the outdoors with MountainStyle RainGuard Hiking Jacket!" +18,TrekStar Hiking Sandals,70.0,Hiking Footwear,TrekReady,"Meet the TrekStar Hiking Sandals from TrekReady - the ultimate trail companion for your feet. Designed for comfort and durability, these lightweight sandals are perfect for those who prefer to see the world from a hiking trail. They feature adjustable straps for a snug, secure fit, perfect for adapting to the contours of your feet. With a breathable design, your feet will stay cool and dry, escaping the discomfort of sweaty hiking boots on long summer treks. The deep tread rubber outsole ensures excellent traction on any terrain, while the cushioned footbed promises enhanced comfort with every step. For those wild and unpredictable trails, the added toe protection and shock-absorbing midsole protect your feet from rocky surprises. Ingeniously, the removable insole makes for easy cleaning and maintenance, extending the lifespan of your sandals. Available in various sizes and a handsome brown color, the versatile TrekStar Hiking Sandals are just as comfortable on a casual walk in the park as they are navigating rocky slopes. Explore more with TrekReady!" +19,Adventure Dining Table,90.0,Camping Tables,CampBuddy,"Discover the joy of outdoor adventures with the CampBuddy Adventure Dining Table. This feature-packed camping essential brings both comfort and convenience to your memorable trips. Made from high-quality aluminum, it promises long-lasting performance, weather resistance, and easy maintenance - all key for the great outdoors! It's light, portable, and comes with adjustable height settings to suit various seating arrangements and the spacious surface comfortably accommodates meals, drinks, and other essentials. The sturdy yet lightweight frame holds food, dishes, and utensils with ease. When it's time to pack up, it fold and stows away with no fuss, ready for the next adventure! Perfect for camping, picnics, barbecues, and beach outings - its versatility shines as brightly as the summer sun! Durable, sturdy and a breeze to set up, the Adventure Dining Table will be a loyal companion on every trip. Embark on your next adventure and make lifetime memories with CampBuddy. As with all good experiences, it'll leave you wanting more! " +20,CompactCook Camping Stove,60.0,Camping Stoves,CompactCook,"Step into the great outdoors with the CompactCook Camping Stove, a convenient, lightweight companion perfect for all your culinary camping needs. Boasting a robust design built for harsh environments, you can whip up meals anytime, anywhere. Its wind-resistant and fuel-versatile features coupled with an efficient cooking performance, ensures you won't have to worry about the elements or helpless taste buds while on adventures. The easy ignition technology and adjustable flame control make cooking as easy as a walk in the park, while its compact, foldable design makes packing a breeze. Whether you're camping with family or hiking solo, this reliable, portable stove is an essential addition to your gear. With its sturdy construction and safety-focused design, the CompactCook Camping Stove is a step above the rest, providing durability, quality, and peace of mind. Be wild, be free, be cooked for with the CompactCook Camping Stove!" \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/chat_with_products.py b/scenarios/rag/custom-rag-app/chat_with_products.py new file mode 100644 index 00000000..80765edf --- /dev/null +++ b/scenarios/rag/custom-rag-app/chat_with_products.py @@ -0,0 +1,81 @@ +# +import os +import logging +from opentelemetry import trace +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential +from config import LOGGING_HANDLER, LOGGING_LEVEL, ASSET_PATH, enable_telemetry +from get_product_documents import get_product_documents + +# use the app telemetry settings to configure logging for this module +logger = logging.getLogger(__name__) +logger.addHandler(LOGGING_HANDLER) +logger.setLevel(LOGGING_LEVEL) + +# initialize an open telemetry tracer +tracer = trace.get_tracer(__name__) + +# create a project client using environment variables loaded from the .env file +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# create a chat client we can use for testing +chat = project.inference.get_chat_completions_client() +# + +# +from azure.ai.inference.prompts import PromptTemplate + +@tracer.start_as_current_span(name="chat_with_products") +def chat_with_products(messages : list, context : dict = {}) -> dict: + documents = get_product_documents(messages, context) + + # do a grounded chat call using the search results + grounded_chat_prompt = PromptTemplate.from_prompty( + os.path.join(ASSET_PATH, "grounded_chat.prompty") + ) + + system_message = grounded_chat_prompt.render(documents=documents, context=context) + response = chat.complete( + model=os.environ["CHAT_MODEL"], + messages=system_message + messages, + **grounded_chat_prompt.parameters, + ) + logger.info(f"💬 Response: {response.choices[0].message}") + + # Return a chat protocol compliant response + response = { + "message": response.choices[0].message, + "context": context + } + + return response +# + +# +if __name__ == "__main__": + import argparse + + # load command line arguments + parser = argparse.ArgumentParser() + parser.add_argument( + "--query", type=str, + help="Query to use to search product", + default="I need a new tent for 4 people, what would you recommend?" + ) + parser.add_argument( + "--enable-telemetry", action="store_true", + help="Enable sending telemetry back to the project", + ) + args = parser.parse_args() + + if (enable_telemetry): + enable_telemetry(True) + + # run chat with products + response = chat_with_products(messages=[ + {"role": "user", "content": args.query} + ]) +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/config.py b/scenarios/rag/custom-rag-app/config.py new file mode 100644 index 00000000..26c4a858 --- /dev/null +++ b/scenarios/rag/custom-rag-app/config.py @@ -0,0 +1,35 @@ +import os +import sys +import pathlib +import logging + +from azure.identity import DefaultAzureCredential +from azure.ai.projects import AIProjectClient +from azure.ai.inference.tracing import AIInferenceInstrumentor + +# load environment variables from the .env file +from dotenv import load_dotenv +load_dotenv() + +LOGGING_HANDLER = logging.StreamHandler(stream=sys.stdout) +LOGGING_LEVEL = logging.INFO +ASSET_PATH = os.path.join(pathlib.Path(__file__).parent.resolve(), "assets") + +def enable_telemetry(log_to_project : bool = False): + AIInferenceInstrumentor().instrument() + + if log_to_project: + from azure.monitor.opentelemetry import configure_azure_monitor + + project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() + ) + application_insights_connection_string = project.telemetry.get_connection_string() + if not application_insights_connection_string: + "No application insights connection string found. Telemetry will not be logged to project." + return + + configure_azure_monitor(connection_string=application_insights_connection_string) + print("Enabled telemetry logging to project, view traces at:") + print(f"https://int.ai.azure.com/project-monitoring?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}") diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py new file mode 100644 index 00000000..9991ac47 --- /dev/null +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -0,0 +1,199 @@ +# +import os +import logging +from azure.ai.projects import AIProjectClient +from azure.ai.projects.models import ConnectionType +from azure.identity import DefaultAzureCredential +from azure.core.credentials import AzureKeyCredential +from azure.search.documents import SearchClient +from azure.search.documents.indexes import SearchIndexClient +from config import LOGGING_HANDLER, LOGGING_LEVEL + +# use the app telemetry settings to configure logging for this module +logger = logging.getLogger(__name__) +logger.addHandler(LOGGING_HANDLER) +logger.setLevel(LOGGING_LEVEL) + +# create a project client using environment variables loaded from the .env file +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# create a vector embeddings client that will be used to generate vector embeddings +embeddings = project.inference.get_embeddings_client() + +# use the project client to get the default search connection +search_connection = project.connections.get_default( + connection_type=ConnectionType.AZURE_AI_SEARCH, + with_credentials=True) + +# Create a search index client using the search connection +# This client will be used to create and delete search indexes +index_client = SearchIndexClient( + endpoint=search_connection.endpoint_url, + credential=AzureKeyCredential(key=search_connection.key) +) +# + +# +import pandas as pd +from azure.search.documents.indexes.models import SemanticSearch, SearchField, SimpleField, \ + SearchableField, SearchFieldDataType, SemanticConfiguration, SemanticPrioritizedFields, \ + SemanticField, VectorSearch, HnswAlgorithmConfiguration, VectorSearchAlgorithmKind, \ + HnswParameters, VectorSearchAlgorithmMetric, ExhaustiveKnnAlgorithmConfiguration, \ + ExhaustiveKnnParameters, VectorSearchProfile, SearchIndex + +def create_index_definition(index_name : str, model : str) -> SearchIndex: + dimensions = 1536 # text-embedding-ada-002 + if model == "text-embedding-3-large": + dimensions = 3072 + + # The fields we want to index. The "embedding" field is a vector field that will + # be used for vector search. + fields = [ + SimpleField(name="id", type=SearchFieldDataType.String, key=True), + SearchableField(name="content", type=SearchFieldDataType.String), + SimpleField(name="filepath", type=SearchFieldDataType.String), + SearchableField(name="title", type=SearchFieldDataType.String), + SimpleField(name="url", type=SearchFieldDataType.String), + SearchField( + name="contentVector", + type=SearchFieldDataType.Collection(SearchFieldDataType.Single), + searchable=True, + # Size of the vector created by the text-embedding-ada-002 model. + vector_search_dimensions=dimensions, + vector_search_profile_name="myHnswProfile", + ), + ] + + # The "content" field should be prioritized for semantic ranking. + semantic_config = SemanticConfiguration( + name="default", + prioritized_fields=SemanticPrioritizedFields( + title_field=SemanticField(field_name="title"), + keywords_fields=[], + content_fields=[SemanticField(field_name="content")], + ), + ) + + # For vector search, we want to use the HNSW (Hierarchical Navigable Small World) + # algorithm (a type of approximate nearest neighbor search algorithm) with cosine + # distance. + vector_search = VectorSearch( + algorithms=[ + HnswAlgorithmConfiguration( + name="myHnsw", + kind=VectorSearchAlgorithmKind.HNSW, + parameters=HnswParameters( + m=4, + ef_construction=1000, + ef_search=1000, + metric=VectorSearchAlgorithmMetric.COSINE, + ), + ), + ExhaustiveKnnAlgorithmConfiguration( + name="myExhaustiveKnn", + kind=VectorSearchAlgorithmKind.EXHAUSTIVE_KNN, + parameters=ExhaustiveKnnParameters( + metric=VectorSearchAlgorithmMetric.COSINE + ), + ), + ], + profiles=[ + VectorSearchProfile( + name="myHnswProfile", + algorithm_configuration_name="myHnsw", + ), + VectorSearchProfile( + name="myExhaustiveKnnProfile", + algorithm_configuration_name="myExhaustiveKnn", + ), + ], + ) + + # Create the semantic settings with the configuration + semantic_search = SemanticSearch(configurations=[semantic_config]) + + # Create the search index definition + return SearchIndex( + name=index_name, + fields=fields, + semantic_search=semantic_search, + vector_search=vector_search, + ) +# + +# +# define a function for indexing a csv file, that adds each row as a document +# and generates vector embeddings for the specified content_column +def create_docs_from_csv(path: str, content_column : str, model: str) -> list[dict[str, any]]: + products = pd.read_csv(path) + items = [] + for product in products.to_dict("records"): + content = product[content_column] + id = str(product["id"]) + title = product["name"] + url = f"/products/{title.lower().replace(' ', '-')}" + emb = embeddings.embed(input=content, model=model) + rec = { + "id": id, + "content": content, + "filepath": f"{title.lower().replace(' ', '-')}", + "title": title, + "url": url, + "contentVector": emb.data[0].embedding, + } + items.append(rec) + + return items +# + +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/evaluate.py b/scenarios/rag/custom-rag-app/evaluate.py new file mode 100644 index 00000000..08058bae --- /dev/null +++ b/scenarios/rag/custom-rag-app/evaluate.py @@ -0,0 +1,83 @@ +# + +# +# create a wrapper function that implements the evaluation interface for query & response evaluation +def evaluate_chat_with_products(query): + response = chat_with_products(messages=[{"role": "user", "content": query}]) + return { + "response": response["message"].content, + "context": response["context"]["grounding_data"] + } +# + +# +# Evaluate must be called inside of a __name__ == "__main__" block +if __name__ == "__main__": + from config import ASSET_PATH + + # workaround for multiprocessing issue on linux + from pprint import pprint + import multiprocessing + try: + multiprocessing.set_start_method('spawn', force=True) + except RuntimeError: + pass # Start method has already been set, so we can ignore this error + + result = evaluate( + data=os.path.join(ASSET_PATH, "chat_eval_data.jsonl"), + target=evaluate_chat_with_products, + evaluation_name="evaluate_chat_with_products", + evaluators={ + "groundedness": groundedness, + }, + evaluator_config={ + "default": { + "query": {"${data.query}"}, + "response": {"${target.response}"}, + "context": {"${target.context}"}, + } + }, + output_path="./myevalresults.json" + ) + + tabular_result = pd.DataFrame(result.get("rows")) + + pprint("-----Summarized Metrics-----") + pprint(result["metrics"]) + pprint("-----Tabular Result-----") + pprint(tabular_result) + pprint(f"View evaluation results in AI Studio: {result['studio_url']}") +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/get_product_documents.py b/scenarios/rag/custom-rag-app/get_product_documents.py new file mode 100644 index 00000000..cfba016f --- /dev/null +++ b/scenarios/rag/custom-rag-app/get_product_documents.py @@ -0,0 +1,127 @@ +# +import os +import logging +from opentelemetry import trace +from azure.ai.projects import AIProjectClient +from azure.ai.projects.models import ConnectionType +from azure.identity import DefaultAzureCredential +from azure.core.credentials import AzureKeyCredential +from azure.search.documents import SearchClient +from config import LOGGING_HANDLER, LOGGING_LEVEL, ASSET_PATH + +# use the app telemetry settings to configure logging for this module +logger = logging.getLogger(__name__) +logger.addHandler(LOGGING_HANDLER) +logger.setLevel(LOGGING_LEVEL) + +# initialize an open telemetry tracer +tracer = trace.get_tracer(__name__) + +# create a project client using environment variables loaded from the .env file +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# create a vector embeddings client that will be used to generate vector embeddings +chat = project.inference.get_chat_completions_client() +embeddings = project.inference.get_embeddings_client() + +# use the project client to get the default search connection +search_connection = project.connections.get_default( + connection_type=ConnectionType.AZURE_AI_SEARCH, + with_credentials=True) + +# Create a search index client using the search connection +# This client will be used to create and delete search indexes +search_client = SearchClient( + index_name=os.environ['AISEARCH_INDEX_NAME'], + endpoint=search_connection.endpoint_url, + credential=AzureKeyCredential(key=search_connection.key) +) +# + +# +from azure.ai.inference.prompts import PromptTemplate +from azure.search.documents.models import VectorizedQuery + +@tracer.start_as_current_span(name="get_product_documents") +def get_product_documents(messages : list, context : dict = {}) -> dict: + overrides = context.get("overrides", {}) + top = overrides.get("top", 5) + + # generate a search query from the chat messages + intent_prompty = PromptTemplate.from_prompty( + os.path.join(ASSET_PATH, "intent_mapping.prompty") + ) + + intent_mapping_response = chat.complete( + model=os.environ["INTENT_MAPPING_MODEL"], + messages=intent_prompty.render(conversation=messages), + **intent_prompty.parameters, + ) + + search_query = intent_mapping_response.choices[0].message.content + logger.info(f"🧠 Intent mapping: {search_query}") + + # generate a vector representation of the search query + embedding = embeddings.embed(model=os.environ["EMBEDDINGS_MODEL"], input=search_query) + search_vector = embedding.data[0].embedding + + # search the index for products matching the search query + vector_query = VectorizedQuery( + vector=search_vector, + k_nearest_neighbors=top, + fields="contentVector") + + search_results = search_client.search( + search_text=search_query, + vector_queries=[vector_query], + select=["id", "content", "filepath", "title", "url"]) + + documents = [{ + "id": result["id"], + "content": result["content"], + "filepath": result["filepath"], + "title": result["title"], + "url": result["url"], + } for result in search_results] + + # add results to the provided context + if "thoughts" not in context: + context["thoughts"] = [] + + # add thoughts and documents to the context object so it can be returned to the caller + context["thoughts"].append({ + "title": "Generated search query", + "description": search_query, + }) + + if "grounding_data" not in context: + context["grounding_data"] = [] + context["grounding_data"].append(documents) + + logger.info(f"📄 {len(documents)} documents retrieved: {documents}") + return documents +# + +# +if __name__ == "__main__": + import argparse + + # load command line arguments + parser = argparse.ArgumentParser() + parser.add_argument( + "--query", + type=str, + help="Query to use to search product", + default="I need a new tent for 4 people, what would you recommend?" + ) + + args = parser.parse_args() + query = args.query + + result = get_product_documents(messages=[ + {"role": "user", "content": query} + ]) +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/requirements.txt b/scenarios/rag/custom-rag-app/requirements.txt new file mode 100644 index 00000000..447d289c --- /dev/null +++ b/scenarios/rag/custom-rag-app/requirements.txt @@ -0,0 +1,6 @@ +azure-ai-projects +azure-ai-inference +azure-ai-identity +azure-search-documents +pandas +python-dotenv \ No newline at end of file From 4535b1883801acff4bca7b1eb86383e6acbc9a8f Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Wed, 6 Nov 2024 14:27:13 -0800 Subject: [PATCH 02/21] remove outdated rag sample --- scenarios/rag/rag-e2e/README.md | 28 - .../data/product-info/product_info_1.md | 215 ------ .../data/product-info/product_info_10.md | 173 ----- .../data/product-info/product_info_11.md | 155 ---- .../data/product-info/product_info_12.md | 169 ----- .../data/product-info/product_info_13.md | 156 ---- .../data/product-info/product_info_14.md | 161 ----- .../data/product-info/product_info_15.md | 170 ----- .../data/product-info/product_info_16.md | 199 ----- .../data/product-info/product_info_17.md | 166 ----- .../data/product-info/product_info_18.md | 167 ----- .../data/product-info/product_info_19.md | 151 ---- .../data/product-info/product_info_2.md | 200 ----- .../data/product-info/product_info_20.md | 165 ----- .../data/product-info/product_info_3.md | 173 ----- .../data/product-info/product_info_4.md | 188 ----- .../data/product-info/product_info_5.md | 221 ------ .../data/product-info/product_info_6.md | 219 ------ .../data/product-info/product_info_66.md | 101 --- .../data/product-info/product_info_7.md | 137 ---- .../data/product-info/product_info_8.md | 195 ----- .../data/product-info/product_info_9.md | 207 ------ scenarios/rag/rag-e2e/rag-qna.ipynb | 425 ----------- scenarios/rag/rag-index-creation/README.md | 32 - .../create-index-from-various-sources.ipynb | 684 ------------------ .../data/product-info/product_info_1.md | 215 ------ .../data/product-info/product_info_10.md | 173 ----- .../data/product-info/product_info_11.md | 155 ---- .../data/product-info/product_info_12.md | 169 ----- .../data/product-info/product_info_13.md | 156 ---- .../data/product-info/product_info_14.md | 161 ----- .../data/product-info/product_info_15.md | 170 ----- .../data/product-info/product_info_16.md | 199 ----- .../data/product-info/product_info_17.md | 166 ----- .../data/product-info/product_info_18.md | 167 ----- .../data/product-info/product_info_19.md | 151 ---- .../data/product-info/product_info_2.md | 200 ----- .../data/product-info/product_info_20.md | 165 ----- .../data/product-info/product_info_3.md | 173 ----- .../data/product-info/product_info_4.md | 188 ----- .../data/product-info/product_info_5.md | 221 ------ .../data/product-info/product_info_6.md | 219 ------ .../data/product-info/product_info_66.md | 101 --- .../data/product-info/product_info_7.md | 137 ---- .../data/product-info/product_info_8.md | 195 ----- .../data/product-info/product_info_9.md | 207 ------ 46 files changed, 8545 deletions(-) delete mode 100644 scenarios/rag/rag-e2e/README.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_1.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_10.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_11.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_12.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_13.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_14.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_15.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_16.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_17.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_18.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_19.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_2.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_20.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_3.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_4.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_5.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_6.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_66.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_7.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_8.md delete mode 100644 scenarios/rag/rag-e2e/data/product-info/product_info_9.md delete mode 100644 scenarios/rag/rag-e2e/rag-qna.ipynb delete mode 100644 scenarios/rag/rag-index-creation/README.md delete mode 100644 scenarios/rag/rag-index-creation/create-index-from-various-sources.ipynb delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_1.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_10.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_11.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_12.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_13.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_14.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_15.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_16.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_17.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_18.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_19.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_2.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_20.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_3.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_4.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_5.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_6.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_66.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_7.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_8.md delete mode 100644 scenarios/rag/rag-index-creation/data/product-info/product_info_9.md diff --git a/scenarios/rag/rag-e2e/README.md b/scenarios/rag/rag-e2e/README.md deleted file mode 100644 index b45c23e2..00000000 --- a/scenarios/rag/rag-e2e/README.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -page_type: sample -languages: -- python -products: -- ai-services -- azure-openai -description: Create, register, and consume an index to answer questions based on your data using the Retrieval Augmented Generation (RAG) pattern. ---- - -## Retrieval Augmented Generation (RAG) using Azure AI SDK - -### Overview - -This notebook shows how to create an index and consume it to answer questions based on your data (aka RAG pattern). It demonstrates how to create an index from local files and folders, how to store that index in Azure Cognitive Search or in FAISS. The index gets created locally and can then be registered to your AI Studio project. Once registered, it can be retrieved and consumed to answer questions. The sample shows how to build a simple QnA script to answer questions. - -This sample is useful for developers and data scientists who wish to use their data with LLMs to build QnA bots, co-pilots. Basically anyone interested in using the RAG pattern. - -### Objective - -The main objective of this tutorial is to help users understand the process of creating an index, registering the index in the cloud, using that index to build a Q&A bot to answer questions based on the indexed data. By the end of this tutorial, you should be able to: - -- Create an index on Azure Cognitive search or FAISS from your local files -- Use the index in a chatbot built using Azure OpenAI and Langchain - -### Programming Languages - - Python -### Estimated Runtime: 20 mins diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_1.md b/scenarios/rag/rag-e2e/data/product-info/product_info_1.md deleted file mode 100644 index bfe299f2..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_1.md +++ /dev/null @@ -1,215 +0,0 @@ -# Information about product item_number: 1 -TrailMaster X4 Tent, price $250, - -## Brand -OutdoorLiving - -## Category -Tents - -## Features -- Polyester material for durability -- Spacious interior to accommodate multiple people -- Easy setup with included instructions -- Water-resistant construction to withstand light rain -- Mesh panels for ventilation and insect protection -- Rainfly included for added weather protection -- Multiple doors for convenient entry and exit -- Interior pockets for organizing small items -- Reflective guy lines for improved visibility at night -- Freestanding design for easy setup and relocation -- Carry bag included for convenient storage and transportation - -## Technical Specs -**Best Use**: Camping -**Capacity**: 4-person -**Season Rating**: 3-season -**Setup**: Freestanding -**Material**: Polyester -**Waterproof**: Yes -**Floor Area**: 80 square feet -**Peak Height**: 6 feet -**Number of Doors**: 2 -**Color**: Green -**Rainfly**: Included -**Rainfly Waterproof Rating**: 2000mm -**Tent Poles**: Aluminum -**Pole Diameter**: 9mm -**Ventilation**: Mesh panels and adjustable vents -**Interior Pockets**: Yes (4 pockets) -**Gear Loft**: Included -**Footprint**: Sold separately -**Guy Lines**: Reflective -**Stakes**: Aluminum -**Carry Bag**: Included -**Dimensions**: 10ft x 8ft x 6ft (length x width x peak height) -**Packed Size**: 24 inches x 8 inches -**Weight**: 12 lbs - -## TrailMaster X4 Tent User Guide - -### Introduction - -Thank you for choosing the TrailMaster X4 Tent. This user guide provides instructions on how to set up, use, and maintain your tent effectively. Please read this guide thoroughly before using the tent. - -### Package Contents - -Ensure that the package includes the following components: - -- TrailMaster X4 Tent body -- Tent poles -- Rainfly (if applicable) -- Stakes and guy lines -- Carry bag -- User Guide - -If any components are missing or damaged, please contact our customer support immediately. - -### Tent Setup - -#### Step 1: Selecting a Suitable Location - -- Find a level and clear area for pitching the tent. -- Remove any sharp objects or debris that could damage the tent floor. - -#### Step 2: Unpacking and Organizing Components - -- Lay out all the tent components on the ground. -- Familiarize yourself with each part, including the tent body, poles, rainfly, stakes, and guy lines. - -#### Step 3: Assembling the Tent Poles - -- Connect the tent poles according to their designated color codes or numbering. -- Slide the connected poles through the pole sleeves or attach them to the tent body clips. - -#### Step 4: Setting up the Tent Body - -- Begin at one end and raise the tent body by pushing up the poles. -- Ensure that the tent body is evenly stretched and centered. -- Secure the tent body to the ground using stakes and guy lines as needed. - -#### Step 5: Attaching the Rainfly (if applicable) - -- If your tent includes a rainfly, spread it over the tent body. -- Attach the rainfly to the tent corners and secure it with the provided buckles or clips. -- Adjust the tension of the rainfly to ensure proper airflow and weather protection. - -#### Step 6: Securing the Tent - -- Stake down the tent corners and guy out the guy lines for additional stability. -- Adjust the tension of the guy lines to provide optimal stability and wind resistance. - -### Tent Takedown and Storage - -#### Step 1: Removing Stakes and Guy Lines - -- Remove all stakes from the ground. -- Untie or disconnect the guy lines from the tent and store them separately. - -#### Step 2: Taking Down the Tent Body - -- Start by collapsing the tent poles carefully. -- Remove the poles from the pole sleeves or clips. -- Collapse the tent body and fold it neatly. - -#### Step 3: Disassembling the Tent Poles - -- Disconnect and separate the individual pole sections. -- Store the poles in their designated bag or sleeve. - -#### Step 4: Packing the Tent - -- Fold the tent body tightly and place it in the carry bag. -- Ensure that the rainfly and any other components are also packed securely. - -### Tent Care and Maintenance - -- Clean the tent regularly with mild soap and water. -- Avoid using harsh chemicals or abrasive cleaners. -- Allow the tent to dry completely before storing it. -- Store the tent in a cool, dry place away from direct sunlight. - -## Cautions -1. **Avoid Uneven or Rocky Surfaces**: Do not place the tent on uneven or rocky surfaces. -2. **Stay Clear of Hazardous Areas**: Avoid setting up the tent near hazardous areas. -3. **No Open Flames or Heat Sources**: Do not use open flames, candles, or any other flammable heat sources near the tent. -4. **Avoid Overloading**: Do not exceed the maximum weight capacity or overload the tent with excessive gear or equipment. -5. **Don't Leave Unattended**: Do not leave the tent unattended while open or occupied. -6. **Avoid Sharp Objects**: Keep sharp objects away from the tent to prevent damage to the fabric or punctures. -7. **Avoid Using Harsh Chemicals**: Do not use harsh chemicals or abrasive cleaners on the tent, as they may damage the material. -8. **Don't Store Wet**: Do not store the tent when it is wet or damp, as it can lead to mold, mildew, or fabric deterioration. -9. **Avoid Direct Sunlight**: Avoid prolonged exposure of the tent to direct sunlight, as it can cause fading or weakening of the fabric. -10. **Don't Neglect Maintenance**: Regularly clean and maintain the tent according to the provided instructions to ensure its longevity and performance. - -## Warranty Information -Thank you for purchasing the TrailMaster X4 Tent. We are confident in the quality and durability of our product. This warranty provides coverage for any manufacturing defects or issues that may arise during normal use of the tent. Please read the terms and conditions of the warranty below: - -1. **Warranty Coverage**: The TrailMaster X4 Tent is covered by a **2-year limited warranty** from the date of purchase. This warranty covers manufacturing defects in materials and workmanship. - -2. **What is Covered**: - - Seam or fabric tears that occur under normal use and are not a result of misuse or abuse. - - Issues with the tent poles, zippers, buckles, or other hardware components that affect the functionality of the tent. - - Problems with the rainfly or other included accessories that impact the performance of the tent. - -3. **What is Not Covered**: - - Damage caused by misuse, abuse, or improper care of the tent. - - Normal wear and tear or cosmetic damage that does not affect the functionality of the tent. - - Damage caused by extreme weather conditions, natural disasters, or acts of nature. - - Any modifications or alterations made to the tent by the user. - -4. **Claim Process**: - - In the event of a warranty claim, please contact our customer support (contact details provided in the user guide) to initiate the process. - - Provide proof of purchase, including the date and place of purchase, along with a detailed description and supporting evidence of the issue. - -5. **Resolution Options**: - - Upon receipt of the warranty claim, our customer support team will assess the issue and determine the appropriate resolution. - - Options may include repair, replacement of the defective parts, or, if necessary, replacement of the entire tent. - -6. **Limitations and Exclusions**: - - Our warranty is non-transferable and applies only to the original purchaser of the TrailMaster X4 Tent. - - The warranty does not cover any incidental or consequential damages resulting from the use or inability to use the tent. - - Any unauthorized repairs or alterations void the warranty. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 5 - **Review:** I am extremely happy with my TrailMaster X4 Tent! It's spacious, easy to set up, and kept me dry during a storm. The UV protection is a great addition too. Highly recommend it to anyone who loves camping! - -2) **Rating:** 3 - **Review:** I bought the TrailMaster X4 Tent, and while it's waterproof and has a spacious interior, I found it a bit difficult to set up. It's a decent tent, but I wish it were easier to assemble. - -3) **Rating:** 5 - **Review:** The TrailMaster X4 Tent is a fantastic investment for any serious camper. The easy setup and spacious interior make it perfect for extended trips, and the waterproof design kept us dry in heavy rain. - -4) **Rating:** 4 - **Review:** I like the TrailMaster X4 Tent, but I wish it came in more colors. It's comfortable and has many useful features, but the green color just isn't my favorite. Overall, it's a good tent. - -5) **Rating:** 5 - **Review:** This tent is perfect for my family camping trips. The spacious interior and convenient storage pocket make it easy to stay organized. It's also super easy to set up, making it a great addition to our gear. - -## FAQ -1) Can the TrailMaster X4 Tent be used in winter conditions? - The TrailMaster X4 Tent is designed for 3-season use and may not be suitable for extreme winter conditions with heavy snow and freezing temperatures. - -2) How many people can comfortably sleep in the TrailMaster X4 Tent? - The TrailMaster X4 Tent can comfortably accommodate up to 4 people with room for their gear. - -3) Is there a warranty on the TrailMaster X4 Tent? - Yes, the TrailMaster X4 Tent comes with a 2-year limited warranty against manufacturing defects. - -4) Are there any additional accessories included with the TrailMaster X4 Tent? - The TrailMaster X4 Tent includes a rainfly, tent stakes, guy lines, and a carry bag for easy transport. - -5) Can the TrailMaster X4 Tent be easily carried during hikes? - Yes, the TrailMaster X4 Tent weighs just 12lbs, and when packed in its carry bag, it can be comfortably carried during hikes. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_10.md b/scenarios/rag/rag-e2e/data/product-info/product_info_10.md deleted file mode 100644 index 8f054a7b..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_10.md +++ /dev/null @@ -1,173 +0,0 @@ -# Information about product item_number: 10 -TrailBlaze Hiking Pants, price $75, - -## Brand -MountainStyle - -## Category -Hiking Clothing - -## Features -- **Material**: Made of high-quality nylon fabric -- **Color**: Khaki -- **Size Options**: Available in M, L, and XL sizes -- **Weight**: Lightweight design, weighing approximately 1lb -- **Quick-Drying**: Designed to dry quickly, allowing for enhanced comfort during outdoor activities -- **Water-Resistant**: Provides protection against light rain or splashes -- **Breathable**: Offers excellent breathability to keep you cool and comfortable -- **Articulated Knees**: Features articulated knees for improved mobility and flexibility on the trails -- **Zippered Pockets**: Equipped with zippered pockets for secure storage of small essentials -- **Versatile Design**: Suitable for various outdoor activities, including hiking, trekking, and camping -- **Durable Construction**: Constructed with durability in mind, ensuring long-lasting performance -- **Comfortable Fit**: Designed to provide a comfortable and ergonomic fit during active pursuits -- **Stylish Appearance**: Features a sleek and attractive design -These features highlight the key attributes of the TrailBlaze Hiking Pants, providing customers with valuable information about the product's materials, design, functionality, and comfort. - - -## Technical Specs -Certainly! Here are the technical specifications for the hiking pants: - -- **Material**: Nylon -- **Color**: Khaki -- **Dimensions**: M, L, XL -- **Weight**: 1lb -- **Fit**: Regular -- **Closure Type**: Button and zip fly -- **Pockets**: Multiple zippered pockets (Zippered pockets for secure storage.) -- **Articulated Knees**: Yes (Articulated knees for enhanced mobility.) -- **Quick-Drying**: Yes -- **Water-Resistant**: Yes -- **Breathable**: Yes -- **Sun Protection**: UPF 50+. UPF sun protection for shielding against harmful UV rays. -- **Waistband**: Elastic waistband with belt loops -- **Adjustability**: Drawstring at the hem -- **Reinforced Seams**: Yes -- **Care Instructions**: Machine washable, tumble dry low -- **Recommended Use**: Hiking, trekking, camping, outdoor activities -- **Durability**: Reinforced construction for durability. - -## TrailBlaze Hiking Pants User Manual - -Thank you for choosing the TrailBlaze Hiking Pants. This user manual provides detailed instructions on how to wear, care for, and maintain your hiking pants. Please read this manual carefully before using the product to ensure optimal performance and longevity. - -## Wearing the Hiking Pants - -### Choosing the Right Size - -- Refer to the size chart provided to determine the appropriate size based on your waist and inseam measurements. - -### Putting on the Pants - -- Unzip the pants and step into them, one leg at a time. -- Pull the pants up to your waist, ensuring a comfortable fit. - -### Adjusting the Waistband - -- Use the adjustable waistband to achieve a snug fit around your waist. -- Secure the waistband using the provided buckle or drawstring. - -### Securing the Pants - -- Fasten the front closure, which may consist of buttons, snaps, or a zipper, to securely close the pants. - -### Adjusting the Length - -- If necessary, adjust the length of the pants by rolling up or down the cuffs. -- Secure them in place using the integrated tabs or buttons, if available. - -## Care and Maintenance - -To maintain the quality and performance of your TrailBlaze Hiking Pants, follow these care and maintenance guidelines: - -### Washing Instructions - -- Machine wash the pants in cold water with a mild detergent. -- Avoid using bleach or fabric softeners. -- For best results, wash the pants separately or with similar colors. - -### Drying Instructions - -- Hang the pants to dry naturally. -- Avoid using a dryer, as high heat can damage the fabric and affect the pants' performance. - -### Ironing and Pressing - -- If necessary, iron the pants on a low setting, avoiding excessive heat. -- Ensure that the pants are completely dry before ironing. - -### Stain Removal - -- Treat any stains promptly using a stain remover or mild soap. -- Gently scrub the affected area and rinse thoroughly. - -### Storage - -- When not in use, store the hiking pants in a cool, dry place away from direct sunlight. -- Avoid folding the pants tightly to prevent creasing. - -## Contact Information - -For any inquiries, assistance, or feedback regarding the TrailBlaze Hiking Pants, please contact our customer support: - -- Customer Support Phone: +1-555-123-4567 -- Customer Support Email: support@trailblazegear.com - -We are dedicated to providing you with the best hiking experience and ensuring your satisfaction with the TrailBlaze Hiking Pants. - -## Caution: -1. **Avoid Excessive Force**: Do not pull or tug on the pants excessively, as it may cause the fabric to stretch or tear. -2. **Avoid Sharp Objects**: Do not come into contact with sharp objects or rough surfaces that can potentially puncture or damage the pants. -3. **Avoid Excessive Heat**: Do not expose the hiking pants to open flames, high heat sources, or direct sunlight for prolonged periods, as it may cause discoloration or damage to the fabric. -4. **Do Not Overload Pockets**: Avoid overloading the pockets with heavy or sharp objects, as it may cause discomfort, hinder mobility, or damage the pants. -5. **Avoid Harsh Chemicals**: Do not use harsh chemicals, bleach, or strong detergents when washing the hiking pants, as it may degrade the fabric or affect its performance. -6. **Avoid Prolonged Moisture Exposure**: Although the hiking pants are water-resistant, avoid exposing them to excessive moisture or prolonged rain, as it may affect their water-resistant properties. -7. **Avoid Improper Storage**: Do not store the hiking pants in damp or humid environments, as it may lead to mold or mildew growth. Additionally, avoid storing the pants in compressed or wrinkled positions for extended periods. -8. **Do Not Ignore Repairs**: If you notice any damage or wear on the hiking pants, promptly address it by repairing or replacing the affected area. Ignoring repairs may lead to further damage or compromise the integrity of the pants. -9. **Avoid Abrasive Surfaces**: The pants are designed for hiking and outdoor activities, but avoid contact with sharp or abrasive surfaces that could damage the fabric. -10. **Check for Snags or Tears**: Before each use, inspect the pants for any snags, tears, or loose threads. If any damage is detected, avoid using the pants until repairs are made. -11. **Proper Layering**: The hiking pants are designed to be worn as an outer layer. Ensure proper layering with base layers and insulation as per the weather conditions to optimize comfort. -12. **Protection from Insects and UV Rays**: The pants provide some protection against insects and UV rays, but it is recommended to use additional measures such as insect repellent and sunscreen for complete protection. - -By following these cautionary points and avoiding the mentioned actions, you can help maintain the quality and performance of your TrailBlaze Hiking Pants for a prolonged period. - -## Warranty Information - -The TrailBlaze Hiking Pants are covered by a limited warranty to ensure your satisfaction and provide peace of mind. Please review the following warranty details: - -**Warranty Duration:** The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as seam separation, zipper malfunction, or fabric defects. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information.Please retain your proof of purchase as it will be required to verify warranty eligibility. - -## Return Policy -- **If Membership status "None":** Customers can return the hiking clothing within 30 days of purchase for a full refund. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the customer. -- **If Membership status "Gold":** Customers can return the hiking clothing within 60 days of purchase for a full refund or exchange. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the company. -- **If Membership status "Platinum ":** Platinum members can return their hiking clothing within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all hiking clothing purchases. - -## Reviews -## FAQ -44) Are the TrailBlaze Hiking Pants suitable for cold weather? - While the TrailBlaze Hiking Pants are designed to be quick-drying, water-resistant, and breathable, they may not provide enough insulation for extremely cold weather. We recommend layering with thermal base layers for added warmth. - -45) Do the TrailBlaze Hiking Pants have an adjustable waistband? - Yes, the TrailBlaze Hiking Pants feature an adjustable waistband with a built-in belt, ensuring a comfortable and secure fit for various body shapes. - -46) Are the TrailBlaze Hiking Pants available in different lengths? - The TrailBlaze Hiking Pants are currently available in one standard length. However, the articulated knees and stretchy fabric provide flexibility and comfort for different leg lengths. - -47) Can the TrailBlaze Hiking Pants be worn in rainy conditions? - Yes, the TrailBlaze Hiking Pants are water-resistant, making them suitable for use in light rain. However, they may not provide complete protection in heavy rain or extended wet conditions. - -48) How many zippered pockets do the TrailBlaze Hiking Pants have? - The TrailBlaze Hiking Pants have two zippered hand pockets and two zippered thigh pockets, providing secure storage for your essentials while on the trail. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_11.md b/scenarios/rag/rag-e2e/data/product-info/product_info_11.md deleted file mode 100644 index bfef1cbd..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_11.md +++ /dev/null @@ -1,155 +0,0 @@ -# Information about product item_number: 11 -TrailWalker Hiking Shoes, price $110 - -## Brand -TrekReady - -## Category -Hiking Footwear - -## Features -- Durable and waterproof construction to withstand various terrains and weather conditions -- High-quality materials, including synthetic leather and mesh for breathability -- Reinforced toe cap and heel for added protection and durability -- Cushioned insole for enhanced comfort during long hikes -- Supportive midsole for stability and shock absorption -- Traction outsole with multidirectional lugs for excellent grip on different surfaces -- Breathable mesh lining to keep feet cool and dry -- Padded collar and tongue for extra comfort and to prevent chafing -- Lightweight design for reduced fatigue during long hikes -- Quick-lace system for easy and secure fit adjustments -- EVA (ethylene vinyl acetate) foam for lightweight cushioning and support -- Removable insole for customization or replacement -- Protective mudguard to prevent debris from entering the shoe -- Reflective accents for increased visibility in low-light conditions -- Available in multiple sizes and widths for a better fit -- Suitable for hiking, trekking, and outdoor adventures - -## Technical Specs - -- **Best Use**: Hiking -- **Upper Material**: Synthetic leather, mesh -- **Waterproof**: Yes -- **Color:** Black -- **Dimensions:** 7-12 (US) -- **Toe Protection**: Reinforced toe cap -- **Heel Protection**: Reinforced heel -- **Insole Type**: Cushioned -- **Midsole Type**: Supportive -- **Outsole Type**: Traction outsole with multidirectional lugs -- **Lining Material**: Breathable mesh -- **Closure Type**: Quick-lace system -- **Cushioning Material**: EVA foam -- **Removable Insole**: Yes -- **Collar and Tongue Padding**: Yes -- **Weight (per shoe)**: Varies by size -- **Reflective Accents**: Yes -- **Mudguard**: Protective mudguard - -## User Guide/Manual: - -### 1. Getting Started - -Before your first use, please take a moment to inspect the shoes for any visible defects or damage. If you notice any issues, please contact our customer support for assistance. - -### 2. Fitting and Adjustment - -To ensure a proper fit and maximum comfort, follow these steps: - -1. Loosen the quick-lace system by pulling up the lace lock. -2. Slide your foot into the shoe and position it properly. -3. Adjust the tension of the laces by pulling both ends simultaneously. Find the desired tightness and comfort level. -4. Push the lace lock down to secure the laces in place. -5. Tuck any excess lace into the lace pocket for safety and to prevent tripping. - -Note: It's recommended to wear hiking socks for the best fit and to prevent blisters or discomfort. - -### 3. Shoe Care and Maintenance - -Proper care and maintenance will help prolong the life of your TrailWalker Hiking Shoes: - -- After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth. -- If the shoes are muddy or heavily soiled, rinse them with clean water and gently scrub with a soft brush. Avoid using harsh detergents or solvents. -- Allow the shoes to air dry naturally, away from direct sunlight or heat sources. -- To maintain waterproof properties, periodically apply a waterproofing treatment according to the manufacturer's instructions. -- Inspect the shoes regularly for any signs of wear and tear, such as worn outsoles or loose stitching. If any issues are found, contact our customer support for assistance. -- Store the shoes in a cool, dry place when not in use, away from extreme temperatures or moisture. - -## Caution Information - -1. **Do not expose to extreme temperatures** -2. **Do not machine wash or dry** -3. **Do not force-dry with heat sources** -4. **Do not use harsh chemicals or solvents** -5. **Do not store when wet or damp** -6. **Do not ignore signs of wear or damage** -7. **Do not ignore discomfort or pain** -8. **Do not use for activities beyond their intended purpose** -9. **Do not share footwear** -10. **Do not ignore manufacturer's instructions** - -## Warranty Information -Please read the following warranty information carefully. - -1. Warranty Coverage: - - The TrailWalker Hiking Shoes are covered by a limited manufacturer's warranty. - - The warranty covers defects in materials and workmanship under normal use and conditions. - - The warranty is valid for a period of [insert duration] from the date of purchase. - -2. Warranty Claims: - - To initiate a warranty claim, please contact our customer care team at the following contact details: - - Customer Care: TrailWalker Gear - - Email: customerservice@trailwalkergear.com - - Phone: 1-800-123-4567 - -3. Warranty Exclusions: - - The warranty does not cover damage resulting from misuse, neglect, accidents, improper care, or unauthorized repairs. - - Normal wear and tear, including worn outsoles, laces, or minor cosmetic imperfections, are not covered under the warranty. - - Modifications or alterations made to the shoes will void the warranty. - -4. Warranty Resolution: - - Upon receiving your warranty claim, our customer care team will assess the issue and provide further instructions. - - Depending on the nature of the claim, we may offer a repair, replacement, or store credit for the product. - - In some cases, the warranty claim may require the shoes to be shipped back to us for evaluation. The customer will be responsible for the shipping costs. - -5. Customer Responsibilities: - - It is the customer's responsibility to provide accurate and detailed information regarding the warranty claim. - - Please retain your original purchase receipt or proof of purchase for warranty validation. - - Any false information provided or attempts to abuse the warranty policy may result in the claim being rejected. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 4.5 - **Review:** I recently purchased the TrailWalker Hiking Shoes for a weekend hiking trip, and they exceeded my expectations. The fit is comfortable, providing excellent support throughout the journey. The traction is impressive, allowing me to confidently tackle various terrains. The shoes are also durable, showing no signs of wear after a challenging hike. My only minor complaint is that they could provide slightly more cushioning for longer treks. Overall, these shoes are a reliable choice for outdoor enthusiasts. - -2) **Rating:** 5 - **Review:** The TrailWalker Hiking Shoes are fantastic! I've used them extensively on multiple hiking trips, and they have never let me down. The grip on various surfaces is exceptional, providing stability even on slippery trails. The shoes offer ample protection for my feet without sacrificing comfort. Additionally, they have withstood rough conditions and still look almost brand new. I highly recommend these shoes to anyone seeking a reliable and durable option for their hiking adventures. - -3) **Rating:** 3.5 - **Review:** I have mixed feelings about the TrailWalker Hiking Shoes. On the positive side, they offer decent support and have good traction on most terrains. However, I found the sizing to be slightly off, and the shoes took a bit of breaking in before they felt comfortable. Also, while they are durable overall, I noticed some minor wear and tear on the outsole after a few months of regular use. They are a decent choice for occasional hikers but may not be ideal for intense or prolonged expeditions. - -4) **Rating:** 4 - **Review:** I purchased the TrailWalker Hiking Shoes for a hiking trip in rugged mountain terrain. They performed admirably, providing excellent stability and protection. The waterproofing feature kept my feet dry during unexpected rain showers. The shoes are also lightweight, which is a bonus for long hikes. However, I did notice a small amount of discomfort around the toe area after extended periods of walking. Nevertheless, these shoes are a reliable option for most hiking adventures. - -5) **Rating:** 5 - **Review:** The TrailWalker Hiking Shoes are hands down the best hiking shoes I've ever owned. From the moment I put them on, they felt like a perfect fit. The traction is outstanding, allowing me to confidently navigate challenging trails without slipping. The shoes provide excellent ankle support, which is crucial on uneven terrain. They are also durable and show no signs of wear, even after multiple hikes. I can't recommend these shoes enough for avid hikers. They are worth every penny. - -## FAQ -49) How long does it take to break in the TrailWalker Hiking Shoes? - The TrailWalker Hiking Shoes are made of flexible synthetic materials, so they usually take just a few days of regular use to break in and feel comfortable on your feet. - -50) Are the TrailWalker Hiking Shoes suitable for trail running? - While the TrailWalker Hiking Shoes are designed primarily for hiking, their lightweight construction and excellent traction also make them suitable for trail running on moderate terrains. - -51) Do the TrailWalker Hiking Shoes provide good arch support? - Yes, the TrailWalker Hiking Shoes feature a cushioned midsole and supportive insole, providing excellent arch support for long hikes and reducing foot fatigue. - -52) Are the TrailWalker Hiking Shoes compatible with gaiters? - Yes, the TrailWalker Hiking Shoes can be used with most standard gaiters, providing additional protection against water, snow, and debris while hiking. - -53) Can the TrailWalker Hiking Shoes be resoled? - While it may be possible to resole the TrailWalker Hiking Shoes, we recommend contacting the manufacturer (TrekReady) or a professional shoe repair service to determine the feasibility and cost of resoling. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_12.md b/scenarios/rag/rag-e2e/data/product-info/product_info_12.md deleted file mode 100644 index 6c00a690..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_12.md +++ /dev/null @@ -1,169 +0,0 @@ -# Information about product item_number: 12 -TrekMaster Camping Chair, price $50 - -## Brand -CampBuddy - -## Category -Camping Tables - -## Features -- Sturdy Construction: Built with high-quality materials for durability and long-lasting performance. -- Lightweight and Portable: Designed to be lightweight and easy to carry, making it convenient for camping, hiking, and outdoor activities. -- Foldable Design: Allows for compact storage and effortless transportation. -- Comfortable Seating: Provides ergonomic support and comfortable seating experience with padded seat and backrest. -- Adjustable Recline: Offers multiple reclining positions for personalized comfort. -- Cup Holder: Integrated cup holder for keeping beverages within reach. -- Side Pockets: Convenient side pockets for storing small items like phones, books, or snacks. -- Robust Frame: Strong frame construction to support various body types and provide stability on uneven terrain. -- Easy Setup: Quick and hassle-free setup with a folding mechanism or snap-together design. -- Weight Capacity: High weight capacity to accommodate different individuals. -- Weather Resistant: Resistant to outdoor elements such as rain, sun, and wind. -- Easy to Clean: Simple to clean and maintain, often featuring removable and washable seat covers. -- Versatile Use: Suitable for various outdoor activities like camping, picnics, sporting events, and backyard gatherings. -- Carry Bag: Includes a carrying bag for convenient storage and transportation. - -## Technical Specs -- **Best Use**: Camping, outdoor activities -- **Material:**: Durable polyester fabric with reinforced stitching -- **Color:** Blue -- **Weight:** 6lbs -- **Frame Material**: Sturdy steel or lightweight aluminum -- **Weight Capacity**: Typically supports up to 250 pounds (113 kilograms) -- **Weight** Varies between 2 to 5 pounds (0.9 to 2.3 kilograms), depending on the model -- **Folded Dimensions**: Compact size for easy storage and transport (e.g., approximately 20 x 5 x 5 inches) -- **Open Dimensions**: Provides comfortable seating area (e.g., approximately 20 x 20 x 30 inches) -- **Seat Height**: Comfortable height from the ground (e.g., around 12 to 18 inches) -- **Backrest Height**: Provides back support (e.g., approximately 20 to 25 inches) -- **Cup Holder**: Integrated cup holder for holding beverages securely -- **Side Pockets**: Convenient storage pockets for small items like phones, books, or snacks -- **Armrests**: Padded armrests for added comfort -- **Reclining Positions**: Adjustable backrest with multiple reclining positions for personalized comfort -- **Sunshade or Canopy**: Optional feature providing sun protection and shade -- **Carrying Case**: Includes a carrying bag or case for easy transport and storage -- **Easy Setup**: Simple assembly with foldable or snap-together design -- **Weather Resistance**: Water-resistant or waterproof material for durability in various weather conditions -- **Cleaning**: Easy to clean with removable and washable seat covers (if applicable) - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping tables within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping tables within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping table purchases but from the same product brand. - -## User Guide/Manual - -### 1. Safety Guidelines - -- Read and understand all instructions and warnings before using the camping chair. -- Always ensure that the chair is placed on a stable and level surface to prevent tipping or accidents. -- Do not exceed the weight capacity specified in the technical specifications. -- Keep children away from the chair to avoid potential hazards. -- Avoid placing the chair near open flames or heat sources. -- Use caution when adjusting or reclining the chair to prevent pinching or injury. -- Do not use the chair as a step stool or ladder. -- Inspect the chair before each use for any signs of damage or wear. If any issues are found, discontinue use and contact customer support. - -### 2. Setup and Assembly - -To set up the camping chair, follow these steps: - -1. Open the carrying case and remove the folded chair. -2. Unfold the chair by extending the frame until it locks into place. -3. Ensure that all locking mechanisms are fully engaged and secure. -4. Pull the fabric seat taut and adjust it for optimal comfort. -5. Make sure the chair is stable and balanced before use. - -### 3. Adjustments and Usage - -- To adjust the backrest, locate the reclining mechanism and choose the desired angle. Engage the lock to secure the position. -- Use the padded armrests for added comfort and support. -- The integrated cup holder and side pockets provide convenient storage for your beverages, books, or other small items. -- Take advantage of the chair's lightweight and foldable design for easy transportation and storage. - -### 4. Care and Maintenance - -- Regularly inspect the chair for any signs of damage or wear. If any parts are damaged, contact customer support for assistance. -- To clean the chair, use a mild detergent and water solution. Avoid using harsh chemicals or abrasive cleaners that may damage the fabric or frame. -- If the chair includes removable and washable seat covers, follow the provided instructions for proper cleaning and care. -- Store the chair in a dry and cool place when not in use to prevent damage from moisture or extreme temperatures. -- Avoid prolonged exposure to direct sunlight to maintain the color and integrity of the fabric. - -## Caution Information - -1. **Do not exceed the weight capacity** -2. **Do not use on uneven or unstable surfaces** -3. **Do not use as a step stool or ladder** -4. **Do not leave unattended near open flames or heat sources** -5. **Do not lean back excessively** -6. **Do not use harsh chemicals or abrasive cleaners** -7. **Do not leave exposed to prolonged sunlight** -8. **Do not drag or slide the chair** -9. **Do not place sharp objects in the storage pockets** -10. **Do not modify or alter the chair** - -Certainly! Here's a sample warranty information for the TrekMaster Camping Chair, along with fictitious contact details for customer care: - -## Warranty Information - -1. Limited Warranty Coverage: - -- Warranty Duration: 1 year from the date of purchase. -- Coverage: This warranty covers manufacturing defects in materials and workmanship. - -2. Warranty Exclusions: - -- Damage caused by misuse, abuse, or improper care. -- Normal wear and tear, including natural fading of colors and gradual deterioration over time. -- Any modifications or alterations made to the chair. -- Damage caused by accidents, fire, or acts of nature. - -3. Warranty Claim Process: - -In the event of a warranty claim, please follow these steps: - -- Contact our Customer Care within the warranty period. -- Provide proof of purchase, such as a receipt or order number. -- Describe the issue with the camping chair and provide any necessary supporting information or photographs. -- Our customer care representative will assess the claim and provide further instructions. - -4. Contact Information: - -For any questions, concerns, or warranty claims, please reach out to our friendly customer care team: - -- Customer Care Phone: 1-800-925-4351 -- Customer Care Email: support@trekmaster.com -- Customer Care Hours: Monday-Friday, 9:00 AM to 5:00 PM (PST) -- Website: www.trekmaster.com/support - -## Reviews - -1) **Rating:** 5 - **Review:** I absolutely love the TrekMaster Camping Chair! It's lightweight, sturdy, and super comfortable. The padded armrests and breathable fabric make it perfect for long camping trips. Highly recommended for outdoor enthusiasts! - -2) **Rating:** 4 - **Review:** The TrekMaster Camping Chair is a great value for the price. It's easy to set up and packs down nicely. The cup holder and side pockets are convenient features. The only downside is that it could be a bit more cushioned for added comfort. - -3) **Rating:** 5 - **Review:** This camping chair exceeded my expectations! It's well-built, durable, and provides excellent back support. The compact design and lightweight construction make it perfect for backpacking trips. I'm thrilled with my purchase! - -4) **Rating:** 3 - **Review:** The TrekMaster Camping Chair is decent for short outings. It's lightweight and easy to carry, but I found the seat fabric to be less durable than expected. It's suitable for occasional use, but I would recommend something sturdier for frequent camping trips. - -5) **Rating:** 4 - **Review:** I'm happy with my TrekMaster Camping Chair. It's comfortable and sturdy enough to support my weight. The adjustable armrests and storage pockets are handy features. I deducted one star because the chair is a bit low to the ground, making it a bit challenging to get in and out of for some individuals. - -## FAQ -54) What is the weight capacity of the TrekMaster Camping Chair? - The TrekMaster Camping Chair can support up to 300 lbs (136 kg), thanks to its durable steel frame and strong fabric. - -55) Can the TrekMaster Camping Chair be used on uneven ground? - Yes, the TrekMaster Camping Chair has non-slip feet, which provide stability and prevent sinking into soft or uneven ground. - -56) How compact is the TrekMaster Camping Chair when folded? - When folded, the TrekMaster Camping Chair measures approximately 38in x 5in x 5in, making it compact and easy to carry or pack in your vehicle. - -57) Is the TrekMaster Camping Chair easy to clean? - Yes, the TrekMaster Camping Chair is made of durable and easy-to-clean fabric. Simply wipe it down with a damp cloth and let it air dry. - -58) Are there any accessories available for the TrekMaster Camping Chair? - While there are no specific accessories designed for the TrekMaster Camping Chair, it comes with a built-in cup holder and can be used with a variety of universal camping chair accessories such as footrests, side tables, or organizers. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_13.md b/scenarios/rag/rag-e2e/data/product-info/product_info_13.md deleted file mode 100644 index d7205d04..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_13.md +++ /dev/null @@ -1,156 +0,0 @@ -# Information about product item_number: 13 -PowerBurner Camping Stove, price $100, - -## Brand -PowerBurner - -## Category -Camping Stoves - -## Features -- Dual burners for efficient cooking -- High heat output for fast boiling and cooking times -- Adjustable flame control for precise temperature regulation -- Compact and portable design for easy transportation -- Piezo ignition system for quick and reliable ignition -- Wind-resistant design to withstand outdoor conditions -- Removable cooking grates for easy cleaning -- Built-in fuel regulator for consistent performance -- Sturdy construction for durability and stability -- Compatible with various fuel types (propane, butane, etc.) -- Integrated carrying handle for convenient portability -- Made with high-quality materials for long-lasting use - -## Technical Specs - -- **Best Use**: Camping, Outdoor Cooking -- **Material:** Stainless Steel -- **Fuel Type**: Propane, Butane, compatible with various fuel types -- **Color:** Black -- **Burner Type**: Dual Burners -- **Heat Output**: High heat output for fast boiling and cooking times -- **Flame Control**: Adjustable flame control for precise temperature regulation -- **Ignition System**: Piezo ignition system for quick and reliable ignition -- **Wind Resistance**: Wind-resistant design to withstand outdoor conditions -- **Construction**: Sturdy construction for durability and stability -- **Fuel Regulator**: Built-in fuel regulator for consistent performance -- **Cooking Grates**: Removable cooking grates for easy cleaning -- **Portability**: Compact and portable design with integrated carrying handle -- **Compatibility**: Compatible with standard camping fuel canisters -- **Dimensions**: 14in x 14in x 10in -- **Weight**: 5 lbs - -## User Guide/Manual - -### 1. Safety Instructions -- Read and understand all instructions before using the camping stove. -- Only use the camping stove in well-ventilated outdoor areas. -- Keep the camping stove away from flammable materials, including tents and overhanging branches. -- Never leave the camping stove unattended while it is in use. -- Use caution when handling the camping stove, as it can become hot during operation. -- Keep children and pets away from the camping stove. -- Follow all local fire safety regulations and guidelines. - -### 2. Setup and Assembly -- Select a flat and stable surface for setting up the camping stove. -- Remove the stove from its packaging and unfold the legs. -- Attach any included accessories such as windshields or side tables, if applicable. - -### 3. Fuel Selection and Connection -- Choose the appropriate fuel type for your camping stove (propane, butane, etc.). -- Follow the manufacturer's instructions for connecting the fuel canister to the stove. -- Ensure a secure and tight connection between the fuel canister and the stove. - -### 4. Ignition and Flame Control -- Locate the ignition system (typically a piezo igniter) on the camping stove. -- Turn the control knob to the "Ignite" or "Start" position and press the ignition button to ignite the burners. -- Adjust the flame control knob to increase or decrease the flame intensity. - -### 5. Cooking Tips -- Place cookware on the cooking grates and ensure stability. -- Use suitable cookware that matches the size of the burners. -- Monitor the cooking process closely and adjust the flame as needed. -- Avoid placing flammable materials near the camping stove during cooking. - -### 6. Cleaning and Maintenance -- Allow the camping stove to cool down completely before cleaning. -- Clean the cooking grates and stove surface using mild soap and water. -- Remove any food residue or grease buildup from the burners. -- Store the camping stove in a clean and dry place. - -## Caution Information - -1. **DO NOT** use the camping stove indoors or in poorly ventilated areas. It is designed for outdoor use only. -2. **DO NOT** leave the camping stove unattended while it is in use. -3. **DO NOT** place flammable materials or objects near the camping stove during operation. -4. **DO NOT** use the camping stove in windy conditions without proper wind protection or shielding. -5. **DO NOT** touch the stove surfaces or components while they are hot. Always use heat-resistant gloves or utensils. -6. **DO NOT** use the camping stove with a damaged or leaking fuel canister. Check for any leaks or defects before connecting. -7. **DO NOT** modify or alter the camping stove in any way. Use it as intended and follow the manufacturer's instructions. -8. **DO NOT** attempt to disassemble or repair the camping stove yourself. Contact authorized service personnel for assistance. -9. **DO NOT** use the camping stove if you suspect a malfunction or if it shows signs of damage. Discontinue use and seek professional inspection. -10. **DO NOT** expose the camping stove to extreme temperatures or direct sunlight for prolonged periods when not in use. - -Certainly! Here's a sample warranty information for the PowerBurner Camping Stove: - -## Warranty Information - -1. Warranty Coverage: -- The PowerBurner Camping Stove is covered by a **1-year limited warranty** from the date of purchase. -- The warranty covers manufacturing defects in materials and workmanship under normal use. -- The warranty is valid only for the original purchaser and is non-transferable. - -2. Warranty Exclusions: -The warranty does not cover the following: -- Damage caused by misuse, abuse, negligence, accidents, or improper maintenance. -- Normal wear and tear, including scratches, dents, or fading of the finish. -- Damage caused by unauthorized repairs or modifications. -- Damage caused by using the camping stove for purposes other than intended. -- Damage caused by using incompatible or improper fuel. - -3. Warranty Claim Procedure: -In the event of a warranty claim, please follow these steps: -- Contact our customer care center within the warranty period to initiate a warranty claim. -- Provide proof of purchase, including the date of purchase and the retailer from whom the product was purchased. -- Describe the issue or defect in detail and provide any supporting documentation or images, if applicable. -- Our customer care team will guide you through the warranty claim process, which may involve inspection, repair, or replacement of the camping stove. - -4. Contact Information: -If you have any questions or need assistance with your PowerBurner Camping Stove, please contact our customer care team: -- Customer Care Phone: 1-800-213-2314 -- Customer Care Email: support@powerburner.com -- Website: www.powerburner.com/support - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping stoves within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping stoves within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping stove purchases but from the same product brand. - -## Reviews -1) **Rating:** 5 - **Review:** I absolutely love the PowerBurner Camping Stove! It's compact, lightweight, and incredibly efficient. It heats up quickly and provides a consistent flame for cooking. The adjustable heat control is a great feature, allowing me to simmer or boil with ease. The sturdy construction and durable materials give me confidence in its longevity. It's definitely a reliable companion for all my camping adventures! - -2) **Rating:** 4 - **Review:** The PowerBurner Camping Stove is a solid choice for outdoor cooking. It's easy to assemble and disassemble, making it convenient to transport. The flame output is consistent, and the heat is well-distributed. I appreciate the built-in wind protection, which helps maintain a steady flame even in windy conditions. The stove is sturdy and stable, providing a reliable cooking surface. The only downside is that it's a bit bulky compared to other camping stoves I've used, but overall, it's a reliable and functional option. - -3) **Rating:** 3 - **Review:** The PowerBurner Camping Stove gets the job done, but it has some room for improvement. The flame control is a bit tricky, and it can be challenging to achieve a low simmer. The ignition system works well most of the time, but occasionally it takes a few tries to get it going. On the positive side, it's fairly lightweight and easy to carry. The construction is decent, but I would prefer a more durable feel. It's an average camping stove that serves its purpose adequately. - -4) **Rating:** 5 - **Review:** I'm impressed with the performance of the PowerBurner Camping Stove. It's compact, yet powerful enough to cook meals quickly. The flame is adjustable and provides excellent heat control. The integrated piezo ignition is reliable and saves me the hassle of carrying a separate lighter. The stove is easy to clean, and the included carrying case is a nice bonus. I've used it on multiple camping trips, and it has never let me down. Highly recommended for outdoor cooking enthusiasts! - -5) **Rating:** 4 - **Review:** The PowerBurner Camping Stove is a solid choice for camp cooking. It's easy to set up and operate, and the flame is consistent and reliable. The stove is stable on various surfaces, thanks to its sturdy design. The included windscreen is effective in protecting the flame from gusts of wind. The only minor drawback is that the control valve is a bit sensitive, requiring careful adjustment to achieve the desired heat level. Overall, it's a reliable camping stove that delivers good performance. - -## FAQ -59) Can the PowerBurner Camping Stove be used with both propane and butane? - Yes, the PowerBurner Camping Stove is compatible with both propane and butane fuel canisters, allowing you to choose the most convenient option for your needs. - -60) How easy is it to clean the PowerBurner Camping Stove after use? - The PowerBurner Camping Stove is designed for easy cleaning, with removable pot supports and a stainless steel construction that can be wiped down with a damp cloth after it has cooled down. - -61) How long do fuel canisters last with the PowerBurner Camping Stove? - Fuel consumption for the PowerBurner Camping Stove depends on factors like burner intensity and altitude. On average, a 16 oz propane canister can last between 1 to 2 hours of continuous use on high heat. - -62) Can I use the PowerBurner Camping Stove indoors? - The PowerBurner Camping Stove is designed for outdoor use only. Using it indoors can lead to dangerous carbon monoxide buildup, which poses a serious risk to your health and safety. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_14.md b/scenarios/rag/rag-e2e/data/product-info/product_info_14.md deleted file mode 100644 index 55c04ede..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_14.md +++ /dev/null @@ -1,161 +0,0 @@ -# Information about product item_number: 14 -MountainDream Sleeping Bag, price $130, - -## Brand -MountainDream - -## Category -Sleeping Bags - -## Features -- Temperature Rating: Suitable for 3-season camping (rated for temperatures between 15°F to 30°F) -- Insulation: Premium synthetic insulation for warmth and comfort -- Shell Material: Durable and water-resistant ripstop nylon -- Lining Material: Soft and breathable polyester fabric -- Zipper: Smooth and snag-free YKK zipper with anti-snag design -- Hood Design: Adjustable hood with drawcord for customized fit and added warmth -- Draft Tube: Insulated draft tube along the zipper to prevent heat loss -- Zipper Baffle: Full-length zipper baffle to seal in warmth and block cold drafts -- Mummy Shape: Contoured mummy shape for optimal heat retention and reduced weight -- Compression Sack: Included compression sack for compact storage and easy transport -- Size Options: Available in multiple sizes to accommodate different body types -- Weight: Lightweight design for backpacking and outdoor adventures -- Durability: Reinforced stitching and construction for long-lasting durability -- Extra Features: Interior pocket for storing small essentials, hanging loops for airing out the sleeping bag - -## Technical Specs - -- **Temperature Rating**: 15°F to 30°F -- **Insulation**: Premium synthetic insulation -- **Color:** Green -- **Shell Material**: Durable and water-resistant ripstop nylon -- **Lining Material**: Soft and breathable polyester fabric -- **Zipper**: YKK zipper with anti-snag design -- **Hood Design**: Adjustable hood with drawcord -- **Draft Tube**: Insulated draft tube along the zipper -- **Zipper Baffle**: Full-length zipper baffle -- **Shape**: Mummy shape -- **Compression Sack**: Included -- **Sizes Available**: Multiple sizes available -- **Weight**: Varies depending on size, approximately 2.5 lbs -- **Dimensions (packed)**: 84 in x 32 in -- **Gender**: Unisex -- **Recommended Use**: Hiking, camping, backpacking -- **Price**: $130 - -## User Guide/Manual - -### 1. Unpacking and Inspection: -Upon receiving your sleeping bag, carefully remove it from the packaging. Inspect the sleeping bag for any damage or defects. If you notice any issues, please contact our customer care (contact information provided in Section 8). - -### 2. Proper Use: -- Before using the sleeping bag, make sure to read and understand the user guide. -- Ensure the sleeping bag is clean and dry before each use. -- Insert yourself into the sleeping bag, ensuring your body is fully covered. -- Adjust the hood using the drawcord to achieve a snug fit around your head for added warmth. -- Use the zipper to open or close the sleeping bag according to your comfort level. -- Keep the sleeping bag zipped up to maximize insulation during colder temperatures. -- Avoid placing sharp objects inside the sleeping bag to prevent punctures or damage. - -### 3. Temperature Rating and Comfort: -The MountainDream Sleeping Bag is rated for temperatures between 15°F to 30°F. However, personal comfort preferences may vary. It is recommended to use additional layers or adjust ventilation using the zipper and hood to achieve the desired temperature. - -### 4. Sleeping Bag Care: -- Spot clean any spills or stains on the sleeping bag using a mild detergent and a soft cloth. -- If necessary, hand wash the sleeping bag in cold water with a gentle detergent. Rinse thoroughly and air dry. -- Avoid using bleach or harsh chemicals, as they can damage the materials. -- Do not dry clean the sleeping bag, as it may affect its performance. -- Regularly inspect the sleeping bag for signs of wear and tear. Repair or replace any damaged parts as needed. - -### 5. Storage: -- Before storing the sleeping bag, ensure it is clean and completely dry to prevent mold or mildew. -- Store the sleeping bag in a cool, dry place away from direct sunlight. -- Avoid compressing the sleeping bag for extended periods, as it may affect its loft and insulation. Instead, store it in the included compression sack. - -## Caution Information - -1. **DO NOT machine wash the sleeping bag** -2. **DO NOT expose the sleeping bag to direct heat sources** -3. **DO NOT store the sleeping bag in a compressed state** -4. **DO NOT use the sleeping bag as a ground cover** -5. **DO NOT leave the sleeping bag wet or damp** -6. **DO NOT use sharp objects inside the sleeping bag** -7. **DO NOT exceed the temperature rating** - -## Warranty Information - -1. Warranty Coverage - -The warranty covers the following: - -1. Stitching or seam failure -2. Zipper defects -3. Material and fabric defects -4. Insulation defects -5. Issues with the drawcord, Velcro closures, or other functional components - -2. Warranty Exclusions - -The warranty does not cover the following: - -1. Normal wear and tear -2. Damage caused by misuse, neglect, or improper care -3. Damage caused by accidents, alterations, or unauthorized repairs -4. Damage caused by exposure to extreme temperatures or weather conditions beyond the sleeping bag's intended use -5. Damage caused by improper storage or compression -6. Cosmetic imperfections that do not affect the performance of the sleeping bag - -3. Making a Warranty Claim - -In the event of a warranty claim, please contact our customer care team at the following fictitious contact details: - -- Customer Care: MountainDream Outdoor Gear -- Phone: 1-800-213-2316 -- Email: support@MountainDream.com -- Address: www.MountainDream.com/support - -To process your warranty claim, you will need to provide proof of purchase, a description of the issue, and any relevant photographs. Our customer care team will guide you through the warranty claim process and provide further instructions. - -Please note that any shipping costs associated with the warranty claim are the responsibility of the customer. - -4. Limitations of Liability - -In no event shall MountainDream Outdoor Gear be liable for any incidental, consequential, or indirect damages arising from the use or inability to use the MountainDream Sleeping Bag. The maximum liability of MountainDream Outdoor Gear under this warranty shall not exceed the original purchase price of the sleeping bag. - -This warranty is in addition to any rights provided by consumer protection laws and regulations in your jurisdiction. - -Please refer to the accompanying product documentation for more information on care and maintenance instructions. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their sleeping bags within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their sleeping bags within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all sleeping bags purchases but from the same product brand. - -## Reviews -1) **Rating:** 4 - **Review:** I recently used the MountainDream Sleeping Bag on a backpacking trip, and it kept me warm and comfortable throughout the night. The insulation is excellent, and the materials feel high-quality. The size is perfect for me, and I appreciate the included compression sack for easy storage. Overall, a great sleeping bag for the price. - -2) **Rating:** 5 - **Review:** I am extremely impressed with the MountainDream Sleeping Bag. It exceeded my expectations in terms of warmth and comfort. The insulation is top-notch, and I stayed cozy even on colder nights. The design is well-thought-out with a hood and draft collar to keep the warmth in. The zippers are smooth and sturdy. Highly recommended for any camping or backpacking adventure. - -3) **Rating:** 3 - **Review:** The MountainDream Sleeping Bag is decent for the price, but I found it a bit bulky and heavy to carry on long hikes. The insulation kept me warm, but it could be improved for colder temperatures. The zippers tended to snag occasionally, which was a bit frustrating. Overall, it's an average sleeping bag suitable for casual camping trips. - -4) **Rating:** 5 - **Review:** I've used the MountainDream Sleeping Bag on multiple camping trips, and it has never disappointed me. The insulation is fantastic, providing excellent warmth even in chilly weather. The fabric feels durable, and the zippers glide smoothly. The included stuff sack makes it convenient to pack and carry. Highly satisfied with my purchase! - -5) **Rating:** 4 - **Review:** The MountainDream Sleeping Bag is a solid choice for backpacking and camping. It's lightweight and compact, making it easy to fit into my backpack. The insulation kept me warm during cold nights, and the hood design provided extra comfort. The only downside is that it's a bit snug for taller individuals. Overall, a reliable sleeping bag for outdoor adventures. - -## FAQ -63) What is the temperature rating for the MountainDream Sleeping Bag? - The MountainDream Sleeping Bag is rated for temperatures as low as 15�F (-9�C), making it suitable for 4-season use. - -64) How small can the MountainDream Sleeping Bag be compressed? - The MountainDream Sleeping Bag comes with a compression sack, allowing it to be packed down to a compact size of 9" x 6" (23cm x 15cm). - -65) Is the MountainDream Sleeping Bag suitable for taller individuals? - Yes, the MountainDream Sleeping Bag is designed to fit individuals up to 6'6" (198cm) tall comfortably. - -66) How does the water-resistant shell of the MountainDream Sleeping Bag work? - The water-resistant shell of the MountainDream Sleeping Bag features a durable water repellent (DWR) finish, which repels moisture and keeps you dry in damp conditions. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_15.md b/scenarios/rag/rag-e2e/data/product-info/product_info_15.md deleted file mode 100644 index 1861602e..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_15.md +++ /dev/null @@ -1,170 +0,0 @@ -# Information about product item_number: 15 -SkyView 2-Person Tent, price $200, - -## Brand -OutdoorLiving - -## Category -Tents - -## Features -- Spacious interior comfortably accommodates two people -- Durable and waterproof materials for reliable protection against the elements -- Easy and quick setup with color-coded poles and intuitive design -- Two large doors for convenient entry and exit -- Vestibules provide extra storage space for gear -- Mesh panels for enhanced ventilation and reduced condensation -- Rainfly included for added weather protection -- Freestanding design allows for versatile placement -- Multiple interior pockets for organizing small items -- Reflective guy lines and stake points for improved visibility at night -- Compact and lightweight for easy transportation and storage -- Double-stitched seams for increased durability -- Comes with a carrying bag for convenient portability - -## Technical Specs - -- **Best Use**: Camping, Hiking -- **Capacity**: 2-person -- **Seasons**: 3-season -- **Packed Weight**: Approx. 8 lbs -- **Number of Doors**: 2 -- **Number of Vestibules**: 2 -- **Vestibule Area**: Approx. 8 square feet per vestibule -- **Rainfly**: Included -- **Pole Material**: Lightweight aluminum -- **Freestanding**: Yes -- **Footprint Included**: No -- **Tent Bag Dimensions**: 7ft x 5ft x 4ft -- **Packed Size**: Compact -- **Color:** Blue -- **Warranty**: Manufacturer's warranty included - -## User Guide/Manual - -1. Tent Components - -The SkyView 2-Person Tent includes the following components: -- Tent body -- Rainfly -- Aluminum tent poles -- Tent stakes -- Guy lines -- Tent bag - -2. Tent Setup - -Follow these steps to set up your SkyView 2-Person Tent: - -Step 1: Find a suitable camping site with a level ground and clear of debris. -Step 2: Lay out the tent body on the ground, aligning the doors and vestibules as desired. -Step 3: Assemble the tent poles and insert them into the corresponding pole sleeves or grommets on the tent body. -Step 4: Attach the rainfly over the tent body, ensuring a secure fit. -Step 5: Stake down the tent and rainfly using the provided tent stakes, ensuring a taut pitch. -Step 6: Adjust the guy lines as needed to enhance stability and ventilation. -Step 7: Once the tent is properly set up, organize your gear inside and enjoy your camping experience. - -3. Tent Takedown - -To dismantle and pack up your SkyView 2-Person Tent, follow these steps: - -Step 1: Remove all gear and belongings from the tent. -Step 2: Remove the stakes and guy lines from the ground. -Step 3: Detach the rainfly from the tent body. -Step 4: Disassemble the tent poles and remove them from the tent body. -Step 5: Fold and roll up the tent body, rainfly, and poles separately. -Step 6: Place all components back into the tent bag, ensuring a compact and organized packing. - -4. Tent Care and Maintenance - -To extend the lifespan of your SkyView 2-Person Tent, follow these care and maintenance guidelines: - -- Always clean and dry the tent before storing it. -- Avoid folding or storing the tent when it is wet or damp to prevent mold or mildew growth. -- Use a mild soap and water solution to clean the tent if necessary, and avoid using harsh chemicals or solvents. -- Inspect the tent regularly for any damages such as tears, punctures, or broken components. Repair or replace as needed. -- Store the tent in a cool, dry place away from direct sunlight and extreme temperatures. -- Avoid placing sharp objects or excessive weight on the tent, as this may cause damage. -- Follow the manufacturer's recommendations for seam sealing or re-waterproofing the tent if necessary. - -5. Safety Precautions - -- Always choose a safe and suitable camping location, considering factors such as terrain, weather conditions, and potential hazards. -- Ensure proper ventilation inside the tent to prevent condensation buildup and maintain air quality. -- Never use open flames or heating devices inside the tent, as this poses a fire hazard. -- Securely stake down the tent and use guy lines as needed to enhance stability during windy conditions. -- Do not exceed the recommended maximum occupancy of the tent. -- Keep all flammable materials away from the tent. -- Follow proper camping etiquette and leave no trace by properly disposing of waste and leaving the campsite clean. - -## Caution Information - -1. **Do not exceed the tent's maximum occupancy** -2. **Do not use sharp objects inside the tent** -3. **Do not place the tent near open flames** -4. **Do not store food inside the tent** -5. **Do not smoke inside the tent** -6. **Do not force the tent during setup or takedown** -7. **Do not leave the tent unattended during inclement weather** -8. **Do not neglect proper tent maintenance** -9. **Do not drag the tent on rough surfaces** -10. **Do not dismantle the tent while wet** - -## Warranty Information - -1. Limited Warranty: The SkyView 2-Person Tent is covered by a limited warranty for a period of one year from the date of purchase. This warranty is valid only for the original purchaser and is non-transferable. - -2. Warranty Coverage: The warranty covers defects in materials and workmanship under normal use during the warranty period. If the tent exhibits any defects during this time, we will, at our discretion, repair or replace the product free of charge. - -3. Exclusions: The warranty does not cover damage resulting from improper use, negligence, accidents, modifications, unauthorized repairs, normal wear and tear, or natural disasters. It also does not cover damages caused by transportation or storage without proper care. - -4. Claim Process: In the event of a warranty claim, please contact our customer care department using the details provided below. You will be required to provide proof of purchase, a description of the issue, and any supporting documentation or images. - -5. Contact Details for Customer Care: -- Address: Customer Care Department -SkyView Outdoor Gear -1234 Outdoor Avenue -Cityville, USA -- Phone: 1-800-123-4567 -- Email: support@skyviewgear.com - -Please ensure that you have registered your product by completing the warranty registration card or online form available on our website. This will help expedite the warranty claim process. - -6. Important Notes: -- Any repairs or replacements made under warranty will not extend the original warranty period. -- The customer is responsible for shipping costs associated with returning the product for warranty service. -- SkyView Outdoor Gear reserves the right to assess and determine the validity of warranty claims. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 5 - **Review:** I absolutely love the SkyView 2-Person Tent! It's incredibly spacious and provides ample room for two people. The setup is a breeze, and the materials feel durable and reliable. We used it during a rainy camping trip, and it kept us completely dry. Highly recommended! - -2) **Rating:** 4 - **Review:** The SkyView 2-Person Tent is a great choice for camping. It offers excellent ventilation and airflow, which is perfect for warm weather. The tent is sturdy and well-built, with high-quality materials. The only minor drawback is that it takes a little longer to set up compared to some other tents I've used. - -3) **Rating:** 5 - **Review:** This tent exceeded my expectations! The SkyView 2-Person Tent is incredibly lightweight and packs down small, making it ideal for backpacking trips. Despite its compact size, it offers plenty of room inside for two people and their gear. The waterproof design worked flawlessly during a rainy weekend. Highly satisfied with my purchase! - -4) **Rating:** 3 - **Review:** The SkyView 2-Person Tent is decent overall. It provides adequate space for two people and offers good protection against the elements. However, I found the zippers to be a bit flimsy, and they occasionally got stuck. It's a functional tent for the price, but I expected better quality in some aspects. - -5) **Rating:** 5 - **Review:** I've used the SkyView 2-Person Tent on multiple camping trips, and it has been fantastic. The tent is spacious, well-ventilated, and keeps us comfortable throughout the night. The setup is straightforward, even for beginners. I appreciate the attention to detail in the design, such as the convenient storage pockets. Highly recommended for camping enthusiasts! - -## FAQ -67) How easy is it to set up the SkyView 2-Person Tent? - The SkyView 2-Person Tent features a simple and intuitive setup process, with color-coded poles and clips, allowing you to pitch the tent within minutes. - -68) Is the SkyView 2-Person Tent well-ventilated? - Yes, the SkyView 2-Person Tent has mesh windows and vents, providing excellent airflow and reducing condensation inside the tent. - -69) Can the SkyView 2-Person Tent withstand strong winds? - The SkyView 2-Person Tent is designed with strong aluminum poles and reinforced guylines, ensuring stability and durability in windy conditions. - -70) Are there any storage options inside the SkyView 2-Person Tent? - Yes, the SkyView 2-Person Tent features interior mesh pockets and a gear loft for keeping your belongings organized and easily accessible. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_16.md b/scenarios/rag/rag-e2e/data/product-info/product_info_16.md deleted file mode 100644 index bd0574e3..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_16.md +++ /dev/null @@ -1,199 +0,0 @@ -# Information about product item_number: 16 -TrailLite Daypack, price $60, - -## Brand -HikeMate - -## Category -Backpacks - -## Features -- Lightweight and durable construction for comfortable all-day use -- Spacious main compartment with ample storage capacity -- Multiple pockets and compartments for organized storage of essentials -- Adjustable shoulder straps and padded back panel for optimal comfort -- Breathable mesh panels for enhanced airflow and ventilation -- External attachment points for securing additional gear -- Water-resistant fabric to protect your belongings from light rain and splashes -- Integrated hydration system compatibility for convenient water access on the go -- Reflective accents for improved visibility in low light conditions -- Adjustable sternum strap and waist belt for added stability and support -- Available in a variety of colors and designs to suit your style - -## Technical Specs - -- **Best Use:** Hiking -- **Material:** Lightweight and durable fabric -- **Color:** Green -- **Capacity:** Spacious main compartment with multiple pockets and compartments -- **Shoulder Straps:** Adjustable for a custom fit -- **Back Panel:** Padded for comfort and support -- **Ventilation:** Breathable mesh panels -- **Attachment Points:** External attachment points for gear -- **Water Resistance:** Water-resistant fabric -- **Hydration System Compatibility:** Integrated hydration system compatibility -- **Reflective Accents:** Yes -- **Sternum Strap:** Adjustable for added stability -- **Waist Belt:** Adjustable for added support -- **Dimensions:** 20in x 12in x 6in -- **Weight:** 1.5 lbs - -## User Guide/Manual - -1. Getting Started: -Before using your TrailLite Daypack, it's important to adjust the straps to ensure a comfortable fit. - - - Adjusting Shoulder Straps: - 1. Put on the daypack and adjust the shoulder straps evenly on both sides. - 2. Pull the adjustment straps to tighten or loosen the shoulder straps as needed. - 3. Ensure the shoulder straps are snug but not overly tight, allowing for a comfortable fit. - - - Adjusting Sternum Strap: - 1. Locate the sternum strap on the shoulder straps. - 2. Adjust the sternum strap up or down to a comfortable height. - 3. Buckle the sternum strap across your chest and adjust the length as desired. - - - Adjusting Waist Belt (if applicable): - 1. If your TrailLite Daypack features a waist belt, locate the belt on the back panel. - 2. Wrap the waist belt around your waist and fasten the buckle. - 3. Adjust the length of the waist belt for a snug fit, providing additional support and stability. - -2. Packing and Organizing: -The TrailLite Daypack offers various compartments and pockets to help you organize your belongings effectively. - - - Main Compartment - The main compartment is ideal for storing larger items such as clothing, food, or equipment. Follow these steps to pack your daypack efficiently: - 1. Unzip the main compartment. - 2. Place your larger items in the bottom of the compartment. - 3. Arrange your belongings to distribute weight evenly and avoid bulkiness. - 4. Secure any loose items using compression straps if available. - - - Pockets and Compartments -Utilize the additional pockets and compartments for organizing smaller items such as keys, snacks, or electronics. Some daypack models may have specific pockets for water bottles or a dedicated hydration bladder sleeve. - -3. Hydration System Compatibility -The TrailLite Daypack is designed to be compatible with hydration systems, allowing you to conveniently stay hydrated during your outdoor activities. - - - Installing a Hydration System - 1. Locate the hydration bladder sleeve or compartment within the daypack. - 2. Insert the hydration bladder into the designated sleeve - 3. Ensure the bladder hose is accessible and can be easily routed to the shoulder strap. - 4. Attach the hose clip or loop on the shoulder strap to secure the hose in place. - - - Using the Hydration System - 1. Fill the hydration bladder with clean water according to the manufacturer's instructions. - 2. Ensure the bladder is securely sealed to prevent any leaks. - 3. Insert the hose through the designated opening or clip it onto the shoulder strap for easy access. - 4. Adjust the hose length to a comfortable position for drinking while on the move. - 5. When you need to drink, simply bite the valve and suck the water through the hose. - 6. After use, remember to clean and dry the hydration bladder to maintain hygiene. - -4. Wearing and Adjusting -Properly wearing and adjusting the TrailLite Daypack will enhance your comfort and ensure optimal weight distribution. - - - Putting on the Daypack - 1. Loosen all the straps, including the shoulder straps, sternum strap, and waist belt (if applicable). - 2. Put your arms through the shoulder straps and position the daypack on your back. - 3. Adjust the shoulder straps evenly on both sides and tighten them gradually. - 4. Buckle the sternum strap across your chest and adjust the length as needed. - 5. Fasten the waist belt around your waist and adjust it for a snug fit (if applicable). - - - Adjusting the Fit - 1. Ensure the daypack sits comfortably on your back and rests evenly on your shoulders. - 2. Adjust the shoulder straps to distribute the weight evenly and prevent excessive strain. - 3. Tighten the sternum strap to stabilize the daypack and reduce shoulder movement. - 4. Adjust the waist belt for added support and to transfer weight to your hips (if applicable). - -5. Care and Maintenance -Proper care and maintenance will prolong the lifespan of your TrailLite Daypack and ensure its optimal performance. - - - Cleaning Instructions - - Spot clean any stains or dirt with a damp cloth or sponge. - - If necessary, use a mild detergent and warm water solution for more thorough cleaning. - - Rinse thoroughly and air dry completely before storage. - - Avoid using harsh chemicals, bleach, or abrasive cleaners, as they may damage the fabric. - - - Storage Guidelines - - Before storing, make sure the daypack is clean and dry to prevent mold or mildew growth. - - Store the daypack in a cool, dry place away from direct sunlight. - - Ensure all zippers and closures are fully closed to prevent dust or debris from entering. - - Avoid placing heavy objects on top of the daypack during storage. - -## Caution Information - -1. Do not overload the daypack beyond its recommended weight capacity. Exceeding the weight limit can strain the backpack's seams, zippers, and overall structure, leading to potential damage or discomfort. -2. Do not expose the daypack to extreme temperatures or harsh weather conditions for extended periods. Extreme heat or cold can affect the integrity of the materials and compromise the performance of the backpack. -3. Do not use the daypack as a seat or place excessive pressure on it. Sitting or stepping on the daypack can damage the contents inside and put unnecessary stress on the backpack's construction. -4. Do not drag the daypack on rough surfaces or drag it behind you. This can cause abrasion and tears on the fabric, compromising the durability of the backpack. -5. Do not submerge the daypack in water or expose it to heavy rain without using a rain cover or waterproofing solution. While the daypack may offer some water resistance, it is not fully waterproof and can allow water to seep through zippers and seams. -6. Do not use sharp objects or knives directly on the daypack. This can puncture or tear the fabric, reducing the backpack's functionality and compromising its overall lifespan. -7. Do not store the daypack in damp or dirty conditions for extended periods. Moisture and dirt can lead to mold or mildew growth, unpleasant odors, and potential damage to the backpack's materials. -8. Do not modify or alter the daypack's design or structure. Any unauthorized modifications can compromise the backpack's integrity, safety, and warranty coverage. -9. Do not neglect regular cleaning and maintenance of the daypack. Proper care and upkeep, as outlined in the user guide, are essential to preserve the backpack's performance and longevity. -10. Do not disregard any warnings or instructions provided by the manufacturer. Always follow the guidelines outlined in the user manual to ensure safe and proper use of the TrailLite Daypack. - -By adhering to this NOT TO DO list, you can maximize the lifespan and performance of your TrailLite Daypack while ensuring a safe and enjoyable outdoor experience. - -## Warranty Information - -Warranty Information for TrailLite Daypack: - -1. Warranty Coverage: -The TrailLite Daypack is covered by a warranty against defects in materials and workmanship for a period of one year from the date of purchase. This warranty is valid only for the original purchaser and is non-transferable. - -2. Warranty Claims: -In the event of a warranty claim, please contact our customer care within the warranty period. Provide the proof of purchase (receipt or order confirmation) along with a detailed description of the issue you are experiencing with the daypack. - -3. Warranty Exclusions: -Please note that this warranty does not cover damages resulting from: - - 1. Normal wear and tear, including scratches, abrasions, and color fading that occur with regular use. - 2. Misuse, abuse, or improper care of the daypack, including exceeding weight limits, inappropriate storage, and neglect of maintenance. - 3. Accidental or intentional damage caused by accidents, impacts, or any unauthorized repairs or modifications. - 4. Damage resulting from extreme weather conditions, including exposure to excessive heat, cold, or moisture. - 5. Any third-party modifications or additions made to the daypack. - - 4. Warranty Resolution: - Upon receipt of your warranty claim, our customer care team will assess the issue and determine the appropriate course of action. This may include repair, replacement, or providing a comparable product based on the nature of the defect and the available options. Please note that any shipping or transportation costs associated with the warranty claim are the responsibility of the customer. - - For any warranty-related inquiries or claims, please contact our customer care team: - -4. Customer Care: - - Phone: 1-800-123-4567 - - Email: customerservice@trailite.com - -Our dedicated customer care representatives are available during business hours to assist you with any questions or concerns you may have regarding the TrailLite Daypack or its warranty. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 4 - **Review:** The TrailLite Daypack is a great companion for my hiking trips. It has ample storage space to fit all my essentials, and the adjustable straps provide a comfortable fit. The material is durable and water-resistant, keeping my belongings safe even during unexpected rain showers. The only improvement I would suggest is adding more internal compartments for better organization. - -2) **Rating:** 5 - **Review:** I love my TrailLite Daypack! It's lightweight, yet sturdy enough to carry all my gear. The padded shoulder straps and back panel provide excellent comfort, even during long hikes. The multiple pockets and compartments help me stay organized, and the water bottle holder is a convenient feature. Highly recommended for outdoor enthusiasts! - -3) **Rating:** 3 - **Review:** The TrailLite Daypack is decent for its price. It offers sufficient storage space and the overall construction seems durable. However, I found the zippers to be a bit flimsy, and they tend to get stuck sometimes. The shoulder straps could also use some extra padding for improved comfort, especially when carrying heavier loads. - -4) **Rating:** 5 - **Review:** I'm extremely satisfied with my TrailLite Daypack. The quality of the materials is top-notch, and the stitching is strong and reliable. The pack is spacious enough to fit my hiking essentials, and the organization pockets help me keep everything in place. The adjustable straps allow for a personalized fit, and the lightweight design adds to the overall comfort. Highly recommended! - -5) **Rating:** 4 - **Review:** The TrailLite Daypack is a reliable and affordable option for day hiking. It has enough room to hold my essentials, including a hydration bladder, snacks, and extra layers. The padded back panel and shoulder straps make it comfortable to carry, even on longer hikes. The only downside is that it lacks a dedicated rain cover, so I had to purchase one separately for added protection. - -## FAQ -71) What is the recommended load capacity for the TrailLite Daypack? - The TrailLite Daypack is designed to comfortably carry up to 25 lbs (11 kg) of gear, making it ideal for day hikes and short trips. - -72) Does the TrailLite Daypack have a specific compartment for a hydration bladder? - Yes, the TrailLite Daypack has a dedicated hydration sleeve inside the main compartment, along with a tube exit port for convenient access to your hydration system. - -73) How do I clean and maintain the TrailLite Daypack? - To clean the TrailLite Daypack, simply hand wash it with mild soap and water, then air dry it away from direct sunlight. Avoid using bleach or machine washing to preserve the backpack's durability. - -74) Can the TrailLite Daypack be used for daily commuting? - While the TrailLite Daypack is designed primarily for outdoor activities, its multiple compartments, comfortable design, and hydration compatibility make it suitable for daily commuting as well. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_17.md b/scenarios/rag/rag-e2e/data/product-info/product_info_17.md deleted file mode 100644 index 3ff40fa5..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_17.md +++ /dev/null @@ -1,166 +0,0 @@ -# Information about product item_number: 17 -RainGuard Hiking Jacket, price $110, - -## Brand -MountainStyle - -## Category -Hiking Clothing - - -## Features - -Here is a feature list for the RainGuard Hiking Jacket: - -## Features -- Waterproof and Breathable: The RainGuard Hiking Jacket is designed to keep you dry and comfortable in wet conditions, thanks to its waterproof and breathable fabric. -- Durable Construction: Made with high-quality materials, this jacket is built to withstand rugged outdoor activities and provide long-lasting performance. -- Adjustable Hood: The hood of the jacket is adjustable, allowing you to customize the fit and provide additional protection against rain and wind. -- Multiple Pockets: The jacket features multiple pockets, including zippered hand pockets and a chest pocket, providing convenient storage for your essentials. -- Adjustable Cuffs and Hem: The cuffs and hem of the jacket are adjustable, allowing you to seal out the elements and tailor the fit to your preference. -- Ventilation Zippers: To prevent overheating during intense activities, the jacket is equipped with ventilation zippers that allow for increased airflow. -- Reflective Details: The jacket includes reflective details to enhance visibility in low-light conditions, ensuring your safety during evening or early morning hikes. -- Packable and Lightweight: The RainGuard Hiking Jacket is designed to be lightweight and easily packable, making it convenient to carry and store in your backpack. -- Versatile Design: Suitable for various outdoor activities, this jacket is perfect for hiking, camping, trekking, and other adventures. -- Available Sizes: The RainGuard Hiking Jacket is available in a range of sizes to ensure a proper fit for both men and women. - -## Technical Specs -- **Best Use:** Hiking -- **Waterproof:** Yes -- **Breathability:** Yes -- **Material:** Nylon -- **Hood:** Adjustable -- **Pockets:** Multiple (zippered hand pockets, chest pocket) -- **Cuffs:** Adjustable -- **Hem:** Adjustable -- **Ventilation:** Zippers for increased airflow -- **Reflective Details:** Yes -- **Packable:** Yes -- **Lightweight:** Yes -- **Design:** Unisex -- **Sizes:** M, L, XL -- **Price:** $110 - -Sure! Here's a user guide for the RainGuard Hiking Jacket: - -## User Guide/Manual - -1. Safety Information - - The RainGuard Hiking Jacket is designed for outdoor use and provides protection against rain and wind. It is not intended for extreme weather conditions. - - Always ensure proper ventilation when wearing the jacket to prevent overheating. - - Follow all safety guidelines and precautions while hiking or engaging in outdoor activities. - -2. Product Description - The RainGuard Hiking Jacket is a high-quality waterproof jacket designed for hikers and outdoor enthusiasts. It features the following key features: - - Waterproof material to keep you dry in wet conditions. - - Breathable fabric for enhanced comfort during physical activities. - - Adjustable hood, cuffs, and hem for a customized fit. - - Multiple pockets for storing essentials. - - Reflective details for increased visibility in low-light conditions. - - Lightweight and packable design for easy transport. - -3. Getting Started - Before using your RainGuard Hiking Jacket, please follow these steps: - 1. Remove the jacket from its packaging. - 2. Ensure that all zippers, buttons, and fasteners are intact and functioning properly. - 3. Familiarize yourself with the jacket's features and adjustments. - -4. Usage Instructions - To maximize the performance and comfort of your RainGuard Hiking Jacket, follow these guidelines: - 1. Wear appropriate layers underneath the jacket based on the weather conditions. - 2. Adjust the hood, cuffs, and hem to achieve a snug and comfortable fit. - 3. Utilize the pockets for storing small items such as keys, wallet, or a mobile phone. - 4. If needed, open the ventilation zippers to regulate airflow and prevent overheating. - 5. Be mindful of the jacket's limitations in extreme weather conditions. - -5. Care and Maintenance - To ensure the longevity and performance of your RainGuard Hiking Jacket, please adhere to the following care instructions: - 1. Clean the jacket as needed following the manufacturer's recommendations. - 2. Use mild detergent and cold water for washing. Do not use bleach or harsh chemicals. - 3. Rinse the jacket thoroughly and allow it to air dry. Do not tumble dry. - 4. Store the jacket in a cool, dry place when not in use. - 5. Regularly inspect the jacket for any signs of damage and repair or replace as necessary. - -6. Warranty Information -The RainGuard Hiking Jacket comes with a limited warranty. Please refer to the warranty card included with your purchase for detailed information on coverage, terms, and conditions. - -7. Contact Us - If you have any questions, concerns, or need further assistance with your RainGuard Hiking Jacket, please contact our customer support team: - - Customer Care: 1-800-123-4567 - - Email: support@rainguardjackets.com - - Website: www.rainguardjackets.com/support - -## Caution Information - -1. **Do not use fabric softeners**: Fabric softeners can reduce the waterproofing capabilities of the jacket. Instead, use a mild detergent specifically designed for outdoor gear. -2. **Do not use bleach or harsh chemicals**: Bleach and other harsh chemicals can damage the fabric and affect the jacket's performance. Stick to gentle cleaning methods. -3. **Do not dry clean**: Dry cleaning can alter the jacket's properties and compromise its waterproofing. Follow the care instructions provided for proper cleaning. -4. **Do not expose to open flames or high heat**: The RainGuard Hiking Jacket is not flame-resistant. Keep it away from open flames, campfires, and other high-heat sources to prevent damage. -5. **Do not store when wet**: Always ensure the jacket is completely dry before storing it. Storing it while damp or wet can lead to mold, mildew, and unpleasant odors. -6. **Do not overload pockets**: While the jacket has multiple pockets for storage, avoid overloading them with heavy or bulky items. Excessive weight in the pockets may strain the fabric or affect the jacket's fit. -7. **Do not iron**: Ironing the RainGuard Hiking Jacket can damage the fabric and its waterproof coating. If necessary, use a gentle heat setting or follow the manufacturer's instructions. -8. **Do not make alterations**: Avoid making any alterations or modifications to the jacket, such as cutting or sewing, as it may compromise its integrity and performance. -9. **Do not expose to sharp objects**: Take care to avoid contact with sharp objects or rough surfaces that can puncture or tear the jacket. Handle it with care during outdoor activities. -10. **Do not disregard manufacturer guidelines**: Always follow the care and usage instructions provided by the manufacturer. Ignoring these guidelines may void the warranty and impact the jacket's performance. - -## Warranty Information -Certainly! Here's the Warranty Information for the RainGuard Hiking Jacket: - -## Warranty Information - -**Duration**: The RainGuard Hiking Jacket is covered by a warranty period of 1 year from the date of purchase. - -**Coverage**: The warranty covers any defects in materials or workmanship under normal use during the warranty period. This includes issues such as faulty zippers, seam failures, or manufacturing defects. - -**Exclusions**: The warranty does not cover damages resulting from improper use, normal wear and tear, accidents, unauthorized repairs or modifications, or damage caused by non-compliance with care instructions. - -**Claim Process**: In the event that you experience any issues covered by the warranty, please follow these steps: - -1. Contact our Customer Care within the warranty period with your proof of purchase and a detailed description of the issue. -2. Our Customer Care team will provide you with further instructions and may require additional information or documentation. -3. If the issue is determined to be covered by the warranty, we will either repair or replace the RainGuard Hiking Jacket, at our discretion. -4. Please note that shipping costs associated with the warranty claim may be the responsibility of the customer. - -**Contact Details**: - -Customer Care Hotline: 1-800-123-4567 -Email: support@rainguard.com -Website: www.rainguard.com/support - -Our dedicated Customer Care team is available to assist you with any questions or concerns regarding the RainGuard Hiking Jacket. Feel free to reach out to us during our business hours, Monday to Friday, 9 AM to 5 PM. - -Please retain your proof of purchase as it may be required to process any warranty claims. We appreciate your trust in our product and strive to deliver the best customer service experience possible. - -## Return Policy -- **If Membership status "None":** Customers can return the hiking clothing within 30 days of purchase for a full refund. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the customer. -- **If Membership status "Gold":** Customers can return the hiking clothing within 60 days of purchase for a full refund or exchange. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the company. -- **If Membership status "Platinum ":** Platinum members can return their hiking clothing within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all hiking clothing purchases. - -## Reviews -1) **Rating:** 5 - **Review:** I absolutely love the RainGuard Hiking Jacket! It's lightweight, comfortable, and keeps me completely dry even in heavy rain. The adjustable hood and cuffs provide a perfect fit, and the ventilation system keeps me from getting too hot during intense hikes. Highly recommended! - -2) **Rating:** 4 - **Review:** The RainGuard Hiking Jacket is a reliable companion for outdoor adventures. It effectively repels water, and the sealed seams ensure no moisture gets in. The multiple pockets offer convenient storage options, and the adjustable waist and hem provide a customizable fit. The only improvement I would suggest is adding pit zips for better ventilation. - -3) **Rating:** 5 - **Review:** I'm extremely impressed with the RainGuard Hiking Jacket. It's well-designed and offers excellent protection against the elements. The durable construction gives me confidence in its longevity, and the hood is adjustable to provide optimal coverage. The jacket also packs down easily, making it convenient for travel. Highly satisfied with this purchase! - -4) **Rating:** 3 - **Review:** The RainGuard Hiking Jacket is decent for light rain showers, but it falls short in heavy downpours. It kept me dry initially, but after prolonged exposure, some moisture seeped through. The fit is comfortable, and the zippers are sturdy, but I would recommend reinforcing the seams for better waterproofing. - -5) **Rating:** 4 - **Review:** The RainGuard Hiking Jacket performs well in most weather conditions. It effectively repels rain and wind, keeping me comfortable during hikes. The adjustable hood and cuffs allow for a snug fit, and the jacket is lightweight, making it easy to carry. However, I wish it had more insulation for colder temperatures. - -## FAQ -75) How breathable is the RainGuard Hiking Jacket? - The RainGuard Hiking Jacket features a breathable membrane, allowing moisture vapor to escape and preventing overheating during high-energy activities. - -76) Is the RainGuard Hiking Jacket true to size? - Generally, the RainGuard Hiking Jacket fits true to size. However, it is advised to refer to the sizing chart provided by the manufacturer to ensure the best fit. - -77) Can the RainGuard Hiking Jacket be packed into its pocket for storage? - Yes, the RainGuard Hiking Jacket can be packed into one of its zippered pockets, making it compact and easy to carry when not in use. - -78) How do I clean the RainGuard Hiking Jacket? - To clean the RainGuard Hiking Jacket, machine wash it on a gentle cycle using cold water and mild detergent, then hang it to dry. Do not use bleach, fabric softeners, or dry cleaning, as they may damage the jacket's performance. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_18.md b/scenarios/rag/rag-e2e/data/product-info/product_info_18.md deleted file mode 100644 index 5bc7fc36..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_18.md +++ /dev/null @@ -1,167 +0,0 @@ -# Information about product item_number: 18 -TrekStar Hiking Sandals, price $70, - -## Brand -TrekReady - -## Category -Hiking Footwear - -## Features -- Durable and lightweight construction for comfortable hiking -- Breathable and quick-drying materials to keep your feet cool and dry -- Adjustable straps for a customizable and secure fit -- Cushioned footbed for enhanced comfort and support -- Rubber outsole with deep treads for excellent traction on various terrains -- Toe protection to shield against rocks and debris -- Drainage system to prevent water accumulation and improve drying time -- Shock-absorbing midsole for reduced impact on joints -- Removable insole for easy cleaning and maintenance -- Versatile design suitable for hiking, walking, and outdoor activities -- Available in various sizes and colors to suit personal preferences -- Made with high-quality materials for durability and long-lasting performance - -## Technical Specs -Based on the provided features, here are the technical specifications for the TrekStar Hiking Sandals: - -## Technical Specs - -- **Best Use:** Hiking -- **Material:** Synthetic -- **Closure:** Adjustable straps -- **Footbed:** Cushioned footbed -- **Outsole:** Rubber with deep treads -- **Toe Protection:** Yes -- **Drainage System:** Yes -- **Midsole:** Shock-absorbing -- **Insole:** Removable -- **Suitable For:** Hiking, walking, outdoor activities -- **Sizes Available:** Various sizes -- **Colors Available:** Brown -- **Weight:** 1.5 lbs -- **Dimensions:** 7-12 (US) - -Sure! Here's a user guide for the TrekStar Hiking Sandals: - -## User Guide/Manual: - -1. Product Overview - -The TrekStar Hiking Sandals are designed to provide comfort, support, and traction for your outdoor adventures. They feature durable materials, adjustable straps, and a cushioned footbed for a customized fit and enhanced walking experience. The sandals are suitable for hiking, walking, and various outdoor activities. - -2. Proper Fit and Sizing - -It is essential to choose the correct size for your TrekStar Hiking Sandals to ensure a proper fit. Follow these steps to determine your size: - -1. Measure your foot length from the back of your heel to the tip of your longest toe. -2. Refer to the size chart provided by TrekStar to find your corresponding size. -3. Try on the sandals and make sure they feel snug but not too tight. The straps should be adjustable for a secure fit. - -3. Adjusting the Straps - -The TrekStar Hiking Sandals come with adjustable straps for a personalized fit. Follow these instructions to adjust the straps: - -1. To loosen the straps, lift the buckle and pull the strap through. -2. To tighten the straps, pull the loose end of the strap while holding the buckle in place. -3. Adjust the straps on both the forefoot and ankle areas to achieve the desired fit. - -4. Putting on and Taking off the Sandals - -To put on the TrekStar Hiking Sandals: - -1. Loosen the straps and open the sandals. -2. Slide your foot into the sandal, ensuring your heel is properly positioned on the footbed. -3. Adjust the straps for a secure and comfortable fit. - -To take off the TrekStar Hiking Sandals: - -1. Loosen the straps on both the forefoot and ankle areas. -2. Open the sandals and gently slide your foot out. - -5. Care and Maintenance - -Proper care and maintenance will prolong the life of your TrekStar Hiking Sandals. Follow these guidelines: - -1. After each use, remove any dirt or debris by wiping the sandals with a damp cloth. -2. Avoid exposing the sandals to excessive heat or direct sunlight, as this may cause damage to the materials. -3. If the sandals become wet, allow them to air dry in a well-ventilated area away from direct heat sources. -4. Regularly check the straps, buckles, and footbed for any signs of wear or damage. If any issues are found, discontinue use and contact customer support. - -## Caution Information -1. Do not wear the sandals without properly adjusting the straps. Always ensure a secure and comfortable fit by adjusting the straps according to your foot size and preference. - -2. Do not use the sandals for activities they are not designed for. The TrekStar Hiking Sandals are intended for hiking and outdoor activities. Avoid using them for sports or activities with high impact or excessive wear. - -3. Do not expose the sandals to extreme temperatures. Avoid leaving them in direct sunlight, near heat sources, or in hot vehicles, as this can cause damage to the materials and affect their performance. - -4. Do not neglect regular cleaning and maintenance. Proper care is important to keep your sandals in good condition. Clean them regularly, remove dirt and debris, and inspect them for any signs of wear or damage. - -5. Do not immerse the sandals in water for extended periods. While the sandals are water-resistant, they are not designed for prolonged submersion. Avoid wearing them in deep water or submerging them completely. - -6. Do not ignore signs of discomfort or pain. If you experience any discomfort or pain while wearing the sandals, discontinue use and assess the fit and sizing. It's important to ensure the sandals provide proper support and do not cause discomfort or injuries. - -7. Do not modify or alter the sandals. Avoid making any structural or cosmetic changes to the sandals, such as cutting or gluing. Modifying the sandals can compromise their integrity and void any warranty or return policies. - -8. Do not rely solely on the sandals for protection in extreme weather conditions. While the TrekStar Hiking Sandals offer some level of protection, they are not designed for extreme cold, wet or hazardous conditions. Use appropriate additional gear and take necessary precautions. - -9. Do not store the sandals in a damp or humid environment. Make sure to store the sandals in a dry and well-ventilated area to prevent the growth of mold or mildew. - -10. Do not disregard the warranty terms and conditions. Familiarize yourself with the warranty information provided with the sandals and follow the recommended guidelines for warranty claims and returns. - -## Warranty Information -Certainly! Here's the Warranty Information for the TrekStar Hiking Sandals: - -## Warranty Information -- Warranty Coverage: The TrekStar Hiking Sandals are covered by a **1-year limited warranty** from the date of purchase. The warranty covers manufacturing defects and workmanship under normal use. - -- Warranty Claims: If you encounter any issues with your sandals during the warranty period, please contact our customer care team (details provided below) to initiate a warranty claim. Our team will guide you through the process and assist you with the necessary steps. - -- Exclusions: The warranty does not cover damage caused by improper use, negligence, accidents, normal wear and tear, unauthorized repairs or modifications, or failure to follow the care instructions provided with the sandals. - -- Resolution Options: In the event of a valid warranty claim, we will, at our discretion, either repair the sandals, replace them with an equivalent model, or provide a refund for the purchase price. The resolution option will be determined based on the nature of the issue and available stock. - -- Proof of Purchase: To initiate a warranty claim, you will need to provide a proof of purchase, such as a receipt or order confirmation, clearly indicating the date and place of purchase. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer care team: -**TrekStar Hiking Sandals Customer Care** -- Phone: 1-800-123-4567 -- Email: support@trekstar.com -- Hours of Operation: Monday to Friday, 9:00 AM to 5:00 PM (EST) - -Our customer care team is dedicated to providing excellent service and ensuring your satisfaction with our products. - -Please note that the warranty is valid only for the original purchaser and is non-transferable. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating: 5** - **Review:** I absolutely love my TrekStar Hiking Sandals! They provide excellent comfort and support during long hikes. The adjustable straps allow for a perfect fit, and the durable construction gives me confidence on rugged terrains. These sandals are a must-have for any outdoor enthusiast! - -2) **Rating: 4** - **Review:** The TrekStar Hiking Sandals are great for warm weather adventures. They have a sturdy sole that offers good traction, and the open design keeps my feet cool. The straps are easy to adjust, ensuring a secure fit. The only improvement I would suggest is adding more cushioning for added comfort. - -3) **Rating: 3** - **Review:** The TrekStar Hiking Sandals are decent for the price. They are lightweight and breathable, making them suitable for summer hikes. However, I found that the sizing runs slightly small, so I recommend going up a size for a more comfortable fit. The durability could also be improved for longer-lasting use. - -4) **Rating: 5** - **Review:** I am impressed with the quality of the TrekStar Hiking Sandals. They are durable and can withstand various terrains. The adjustable straps provide a customized fit, and the sandals offer good arch support. I've worn them on multiple hikes, and they have held up exceptionally well. Highly recommended! - -5) **Rating: 4** - **Review:** The TrekStar Hiking Sandals are a reliable choice for outdoor activities. They offer excellent breathability, keeping my feet cool on hot days. The traction is reliable on most surfaces, and the adjustable straps allow for a secure and comfortable fit. My only suggestion would be to add more padding to the footbed for enhanced comfort. - -## FAQ -79) Are the TrekStar Hiking Sandals suitable for water-based activities? - Yes, the TrekStar Hiking Sandals are designed with quick-drying synthetic materials and excellent traction, making them suitable for activities such as river crossings and beach walks. - -80) How do I find the right size for the TrekStar Hiking Sandals? - To find the right size for the TrekStar Hiking Sandals, refer to the manufacturer's sizing chart and measure your feet according to their guidelines. - -81) Can I wear the TrekStar Hiking Sandals with socks? - While the TrekStar Hiking Sandals are designed to be worn barefoot, you may choose to wear them with thin, moisture-wicking socks for additional comfort and blister prevention. - -82) How do I clean and maintain the TrekStar Hiking Sandals? - To clean the TrekStar Hiking Sandals, simply rinse them with water and use a soft brush to remove any dirt or debris. Allow them to air dry away from direct sunlight. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_19.md b/scenarios/rag/rag-e2e/data/product-info/product_info_19.md deleted file mode 100644 index 6fad9edb..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_19.md +++ /dev/null @@ -1,151 +0,0 @@ -# Information about product item_number: 19 -Adventure Dining Table, price $90, - -## Brand -CampBuddy - -## Category -Camping Tables - -## Features -- Durable Construction: Made from high-quality materials to ensure long-lasting performance in outdoor environments. -- Portable and Lightweight: Designed to be compact and lightweight for easy transportation and setup during outdoor adventures. -- Adjustable Height: Offers adjustable height settings to accommodate various seating arrangements and preferences. -- Spacious Surface: Provides ample surface area to comfortably accommodate meals, drinks, and other essentials. -- Easy Setup: Quick and hassle-free setup with user-friendly mechanisms and instructions. -- Weather Resistant: Designed to withstand outdoor conditions, including sun, rain, and moisture. -- Sturdy and Stable: Features a robust and stable frame that can support the weight of food, dishes, and utensils. -- Folding Design: Enables easy folding and compact storage when not in use, making it ideal for camping and travel. -- Versatile: Suitable for various outdoor activities such as camping, picnics, barbecues, and beach outings. -- Easy to Clean: Smooth surface and materials that are easy to wipe clean after use. - -## Technical Specs -**Best Use:** Outdoor dining, camping, picnics -**Material:** Aluminum -**Tabletop Material:** Sturdy and easy-to-clean surface -**Frame Material:** Strong and lightweight frame construction -**Adjustable Height:** Yes -**Foldable:** Yes -**Dimensions (when set up):** 60in x 30in x 28in -**Weight:** 20lbs - -## User Guide/Manual -### 1. Safety Guidelines - -- Before using the Adventure Dining Table, carefully read and understand all safety guidelines provided in this user guide. -- Always ensure the table is placed on a stable and level surface to prevent tipping or instability. -- Do not exceed the specified weight capacity of the table to avoid damage and potential injury. -- Keep children away from the table during assembly and use to prevent accidents. - -### 2. Assembly Instructions - -1. Unpack all components and verify that all parts are included. -2. Follow the provided assembly instructions specific to your Adventure Dining Table model. -3. Use the appropriate tools, if required, to securely attach the tabletop to the frame. -4. Ensure all connections and fasteners are tightened properly to guarantee stability. - -### 3. Operating Instructions - -- To set up the Adventure Dining Table, unfold the legs and secure them in place according to the manufacturer's instructions. -- Adjust the table height if applicable, ensuring it is suitable for your intended use. -- Place your dining items, such as plates, utensils, and food, on the tabletop with care. -- Use the table responsibly and avoid placing excessive weight on unsupported areas. - -### 4. Cleaning and Maintenance - -- After each use, remove any food debris and clean the tabletop with a mild detergent and water. -- Avoid using abrasive cleaners or harsh chemicals that may damage the table's surface. -- If the table becomes wet, dry it thoroughly before folding and storing to prevent mold or mildew growth. -- Store the Adventure Dining Table in a dry and secure location to protect it from the elements. - -### 5. Warranty Information - -The Adventure Dining Table comes with a limited warranty that covers manufacturing defects and workmanship issues. Please refer to the warranty card or the manufacturer's website for specific details on the warranty terms and conditions. - -### 6. Contact Information - -If you have any questions, concerns, or need assistance with your Adventure Dining Table, please contact our customer support team: - -- Customer Support: 1-800-123-4567 -- Email: support@adventurediningtable.com -- Website: www.adventurediningtable.com/support - -## Caution Information -1. **Do not exceed the weight capacity:** The Adventure Dining Table has a specified weight capacity. Do not exceed this limit to prevent damage to the table and potential injury. - -2. **Do not use as a step ladder or stool:** The Adventure Dining Table is designed for dining purposes only. Do not stand or sit on the table, as it may lead to instability and accidents. - -3. **Do not place hot objects directly on the tabletop:** The tabletop may not be heat-resistant. Always use heat-resistant mats or trivets to protect the surface from hot cookware or dishes. - -4. **Do not drag or slide the table on rough surfaces:** Avoid dragging or sliding the Adventure Dining Table on abrasive or uneven surfaces, as it may scratch or damage the table's legs or frame. - -5. **Do not leave the table exposed to extreme weather conditions:** Although the Adventure Dining Table is designed for outdoor use, prolonged exposure to extreme weather conditions such as heavy rain, snow, or intense sunlight may degrade its performance and durability. Store the table in a dry and secure location when not in use. - -6. **Do not dismantle or modify the table:** Do not attempt to dismantle or modify any parts of the Adventure Dining Table. Alterations to the original design may compromise its stability, safety, and warranty coverage. - -7. **Do not use harsh chemicals or abrasive cleaners:** Avoid using harsh chemicals, solvents, or abrasive cleaners on the tabletop or frame, as they may cause damage. Instead, use mild detergent and water for regular cleaning. - -8. **Do not leave sharp objects directly on the table:** To prevent scratches or cuts on the tabletop, avoid placing sharp objects directly on the surface. Use coasters or protective covers when necessary. - -9. **Do not use the table on unstable or uneven surfaces:** Ensure that the Adventure Dining Table is placed on a stable and level surface to prevent tipping or instability during use. - -10. **Do not leave children unattended near the table:** Always supervise children when they are near or using the Adventure Dining Table to prevent accidents or injuries. - -## Warranty Information - -The Adventure Dining Table comes with a limited warranty that covers manufacturing defects and faulty workmanship. The warranty terms and conditions are as follows: - -1. **Duration:** The Adventure Dining Table is covered by a warranty period of 1 year from the date of purchase. - -2. **Coverage:** The warranty covers defects in materials and workmanship under normal use and proper care. It includes issues such as structural defects, faulty hardware, or manufacturing flaws. - -3. **Exclusions:** The warranty does not cover damages resulting from misuse, abuse, accidents, improper assembly, modifications, normal wear and tear, or any damage caused by natural disasters or extreme weather conditions. - -4. **Claim Process:** In the event that you encounter a manufacturing defect or faulty workmanship covered by the warranty, please follow these steps: - - Contact our Customer Care within the warranty period and provide the necessary information about the issue. - - Our Customer Care team will guide you through the troubleshooting process, and if required, provide instructions for return or repair. - - Please retain the original proof of purchase (receipt or order confirmation) as it will be required to validate your warranty claim. - -5. **Resolution:** Based on the nature of the warranty claim, we will either repair or replace the defective part or the entire Adventure Dining Table at our discretion. If the exact model is no longer available, we will provide a comparable replacement. - -6. **Contact Information:** For any warranty claims or inquiries, please reach out to our Customer Care team using the following contact details: - - - Customer Care Phone: 1-800-123-4567 - - Customer Care Email: support@adventurediningtable.com - - Customer Care Hours: Monday to Friday, 9:00 AM to 5:00 PM (EST) - -Please note that this warranty is non-transferable and applies only to the original purchaser of the Adventure Dining Table. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping tables within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping tables within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping table purchases but from the same product brand. - -## Reviews -1) **Rating:** 5 - **Review:** I recently purchased the Adventure Dining Table Camping Stove, and it has been a game-changer for our outdoor adventures! The stove is compact, lightweight, and easy to set up. It provides a steady flame and quickly heats up our meals. The built-in windscreen is a great feature, as it keeps the flame protected on windy days. The cooking surface is spacious enough to accommodate multiple pots and pans. I highly recommend this stove to fellow campers who value convenience and efficiency. - -2) **Rating:** 4 - **Review:** The Adventure Dining Table Camping Stove has been a reliable companion on our camping trips. It's sturdy and well-built, ensuring stability while cooking. The flame control is precise, allowing us to adjust the heat according to our cooking needs. The stove heats up quickly and evenly, providing consistent performance. The compact design makes it easy to carry and store. The only improvement I would suggest is a more comprehensive user manual with detailed instructions for maintenance and cleaning. - -3) **Rating:** 3 - **Review:** I have mixed feelings about the Adventure Dining Table Camping Stove. On one hand, it's compact and lightweight, which is great for backpacking. The stove ignites easily and heats up quickly. However, I found the flame control to be a bit finicky, making it challenging to maintain a steady heat level. The cooking surface is also smaller than expected, limiting the size of pots and pans that can be used. Overall, it's an okay stove for basic cooking needs, but I would recommend exploring other options if you require more precise temperature control or larger cooking capacity. - -4) **Rating:** 5 - **Review:** I absolutely love the Adventure Dining Table Camping Stove! It's incredibly easy to use and provides consistent heat for cooking. The compact size is perfect for our camping trips, and the foldable design makes it effortless to pack and transport. The stove is durable and withstands outdoor conditions well. It has become an essential part of our camping gear, and I highly recommend it to anyone in need of a reliable and efficient camping stove. - -5) **Rating:** 4 - **Review:** The Adventure Dining Table Camping Stove is a reliable and affordable option for outdoor cooking. It's compact and lightweight, making it ideal for backpacking. The stove performs well, delivering a consistent flame and even heat distribution. The construction is sturdy, and the foldable legs provide stability on various surfaces. The only minor drawback is the lack of an included carrying case, which would have made transportation and storage more convenient. Overall, it's a great value for the price and a worthy addition to any camping setup. - -## FAQ -83) How much weight can the Adventure Dining Table support? - The Adventure Dining Table can support up to 100 lbs (45 kg) of evenly distributed weight, making it suitable for various outdoor dining and cooking needs. - -84) How do I set up the Adventure Dining Table? - The Adventure Dining Table features a foldable design with telescopic legs. Simply unfold the table, extend the legs to the desired height, and secure them in place using the locking mechanism. - -85) Is the Adventure Dining Table easy to clean? - Yes, the Adventure Dining Table has an easy-to-clean aluminum surface. Simply wipe it with a damp cloth or sponge and mild detergent to remove any dirt or spills. - -86) Can I use a camping stove on the Adventure Dining Table? - Yes, the Adventure Dining Table is designed to accommodate camping stoves, cooking utensils, and other outdoor dining essentials. However, ensure that the stove is stable and use caution when cooking with open flames. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_2.md b/scenarios/rag/rag-e2e/data/product-info/product_info_2.md deleted file mode 100644 index 4b28b562..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_2.md +++ /dev/null @@ -1,200 +0,0 @@ -# Information about product item_number: 2 -Adventurer Pro Backpack, price $90, - -## Brand -HikeMate - -## Category -Backpacks - -## Features -- 40L capacity for ample storage space -- Ergonomic design for comfortable carrying -- Durable nylon material for long-lasting performance -- Multiple compartments and pockets for organized storage -- Hydration system compatibility with a dedicated hydration bladder sleeve and tube port -- Adjustable and padded shoulder straps for a customized fit and enhanced comfort -- Adjustable sternum strap and hip belt for stability and weight distribution -- Compression straps to secure the load and reduce pack volume -- External attachment points and gear loops for attaching additional gear -- Rain cover included for protection against wet weather -- Laptop compartment or sleeve for safely carrying electronic devices -- Reflective accents for enhanced visibility in low light conditions -- Breathable back panel with airflow channels for ventilation -- Side mesh pockets for easy access to water bottles or snacks -- Lightweight construction for reduced burden on long hikes -- Reinforced haul handle for easy lifting and carrying - - -## Technical Specs -**Best Use**: Hiking -**Capacity**: 40 liters -**Material**: Nylon -**Color**: Blue -**Dimensions**: 24 inches x 14 inches x 8 inches (height x width x depth) -**Weight**: 2.5 lbs -**Waterproof**: No -**Number of Compartments**: Multiple -**Laptop Compartment**: No -**Hydration System Compatibility**: Yes -**Adjustable Straps**: Yes -**Hip Belt**: Yes -**Sternum Strap**: Yes -**External Attachment Points**: Yes -**Gear Loops**: Yes -**Rain Cover**: No -**Reflective Accents**: Yes -**Back Panel Ventilation**: Yes -**Side Mesh Pockets**: Yes -**Load Compression Straps**: Yes -**Haul Handle**: Yes - -## Adventurer Pro Backpack User Manual - -### Introduction - -Thank you for choosing the Adventurer Pro Backpack. This user manual provides instructions on how to use and maintain your backpack effectively. Please read this manual thoroughly before using the backpack to ensure optimal performance and longevity. - -### Package Contents - -Ensure that the package includes the following components: - -- Adventurer Pro Backpack -- User Manual - -If any components are missing or damaged, please contact our customer support immediately. - -### Backpack Overview - -The Adventurer Pro Backpack is designed to provide comfort, durability, and ample storage space for your outdoor adventures. Familiarize yourself with the key features of the backpack: - -- Ergonomic design for enhanced comfort during long hikes. -- Multiple compartments and pockets for efficient organization. -- Hydration system compatibility for convenient water access. -- Adjustable straps for a customized fit. -- Durable and water-resistant nylon material for reliable performance. - -## Backpack Adjustments - -### Shoulder Straps - -1. Put on the backpack and adjust the shoulder straps evenly on both sides. -2. Ensure the shoulder straps are snug but not too tight. They should distribute the weight evenly on your shoulders. -3. Adjust the length of the shoulder straps using the buckles to achieve a comfortable fit. - -### Chest Strap - -1. Fasten the chest strap across your chest and adjust its position to sit comfortably. -2. The chest strap helps distribute the weight and stabilize the backpack during strenuous activities. - -### Hip Belt - -1. Secure the hip belt around your hips and adjust its tightness for a snug fit. -2. The hip belt helps transfer the weight of the backpack to your hips, reducing strain on your shoulders and back. - -## Backpack Usage - -### Packing the Backpack - -1. Open the main compartment and organize your gear inside. -2. Utilize the various compartments and pockets to separate and secure your items. -3. Place heavier items closer to your back for better weight distribution. -4. Ensure that the weight is evenly distributed and the backpack is balanced. - -### Hydration System Setup - -1. If using a hydration system, locate the dedicated compartment or sleeve for the hydration reservoir. -2. Insert the hydration reservoir into the designated pocket and route the drinking tube through the opening or tube port. -3. Connect the drinking tube to the backpack's shoulder strap for easy access. - -### Adjusting the Backpack - -1. Throughout your hike, periodically adjust the shoulder straps, chest strap, and hip belt as needed to maintain a comfortable fit. -2. Proper adjustments ensure optimal weight distribution and prevent discomfort or strain during your adventure. - -### Removing the Backpack - -1. To remove the backpack, loosen the shoulder straps, chest strap, and hip belt. -2. Carefully slide the backpack off your shoulders while maintaining balance. -3. Place the backpack on a clean and dry surface. - -## Backpack Care and Maintenance - -- Clean the backpack regularly with a mild soap and water solution. -- Avoid using harsh chemicals or abrasive cleaners that can damage the fabric or coatings. -- Allow the backpack to air dry completely before storing it. -- Store the backpack in a cool, dry place away from direct sunlight. - -## Caution - -- Do not exceed the recommended weight capacity of the backpack to prevent strain or damage. -- Avoid dragging the backpack on rough surfaces to prevent abrasion and punctures. -- Do not use the backpack as a seat or support for heavy objects to avoid structural damage. - -## Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -We hope you enjoy your Adventurer Pro Backpack and have a fantastic outdoor experience! - -## Warranty Information - -**Warranty Duration:** The Adventurer Pro Backpack is covered by a 2-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as stitching defects, zipper malfunctions, or hardware failure. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the Adventurer Pro Backpack. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -Kindly note that the warranty period, coverage, and claim process are subject to change. Please refer to the warranty card included with your product for the most up-to-date and accurate information. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -6) **Rating:** 5 - **Review:** I am extremely happy with my Adventurer Pro Backpack! It has ample space, multiple compartments, and is super comfortable to wear. The hydration system compatibility is a major plus. I'm thrilled with this purchase! - -7) **Rating:** 4 - **Review:** I bought the Adventurer Pro Backpack, and while it's comfortable and has many useful features, I wish it came in more colors. The blue color just isn't my favorite. Overall, it's a good backpack. - -8) **Rating:** 5 - **Review:** The Adventurer Pro Backpack is perfect for my hiking trips. The ergonomic design and adjustable straps make it comfortable to wear all day, and the multiple compartments help me stay organized. - -9) **Rating:** 4 - **Review:** I like the Adventurer Pro Backpack, but I wish it had more external pockets for easy access to small items. It's comfortable and has many useful features, but this addition would make it even better. - -10) **Rating:** 5 - **Review:** This backpack is a game changer for my hiking adventures. The 40L capacity is perfect for extended trips, and the hydration system compatibility is extremely convenient. I highly recommend it to any serious hiker. - -## FAQ -6) What is the maximum weight capacity of the Adventurer Pro Backpack? - The Adventurer Pro Backpack is designed to hold up to 40 lbs of gear comfortably. - -7) Is the Adventurer Pro Backpack suitable for both men and women? - Yes, the adjustable straps and ergonomic design of the Adventurer Pro Backpack make it suitable for both men and women. - -8) Can I attach additional gear to the outside of the Adventurer Pro Backpack? - Yes, the Adventurer Pro Backpack features external attachment points for items such as trekking poles or a sleeping pad. - -9) Is the Adventurer Pro Backpack water-resistant? - The Adventurer Pro Backpack is made of water-resistant nylon material, which helps protect your gear from light rain. However, it is not completely waterproof. - -10) How do I clean and maintain the Adventurer Pro Backpack? - To clean the Adventurer Pro Backpack, use a damp cloth to wipe down the exterior and air dry. Avoid machine washing or using harsh chemicals. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_20.md b/scenarios/rag/rag-e2e/data/product-info/product_info_20.md deleted file mode 100644 index e4441682..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_20.md +++ /dev/null @@ -1,165 +0,0 @@ -# Information about product item_number: 20 -CompactCook Camping Stove, price $60, - -## Brand -CompactCook - -## Category -Camping Stoves - -## Features -- Lightweight and Compact Design: The CompactCook Camping Stove is designed to be lightweight and compact, making it easy to carry and transport during outdoor adventures. -- Efficient Cooking Performance: This camping stove delivers efficient cooking performance, allowing you to prepare meals quickly and easily. -- Adjustable Flame Control: The stove features an adjustable flame control mechanism, giving you the flexibility to adjust the heat intensity according to your cooking needs. -- Sturdy Construction: Made with durable materials, the CompactCook Camping Stove offers reliable performance and long-lasting durability, ensuring it can withstand rugged outdoor conditions. -- Wind-Resistant Design: The stove is designed with wind-resistant features, allowing it to maintain a steady flame even in windy conditions, ensuring efficient cooking. -- Easy Ignition: The stove features an easy ignition system, eliminating the need for matches or lighters. Simply press a button or turn a knob to ignite the flame. -- Foldable and Space-Saving: With its foldable design, the CompactCook Camping Stove can be easily stored and takes up minimal space in your camping gear. -- Compatible with Various Fuel Types: This camping stove is compatible with a wide range of fuel types, including butane, propane, and isobutane, providing versatility for your outdoor cooking needs. -- Built-in Safety Features: The stove is equipped with built-in safety features such as a flame control valve and a sturdy base to ensure safe and secure cooking. -- Ideal for Camping and Hiking: The CompactCook Camping Stove is specifically designed for camping and hiking adventures, making it an essential companion for outdoor enthusiasts. - -## Technical Specs - -Best Use: Camping, Hiking -Fuel Type: Butane, Propane, Isobutane -Ignition Type: Piezo-electric ignition -Flame Control: Adjustable -Cooking Performance: Efficient and fast cooking -Wind Resistance: Yes -Foldable Design: Yes -Compatibility: Compatible with most cookware -Built-in Safety Features: Flame control valve, sturdy base -Dimensions: 4.72 x 2.4 x 0.55 inches -Weight: 1.62 ounces - -## User Guide/Manual - -1. Safety Precautions -- Read and understand all instructions before using the camping stove. -- Only use the camping stove in well-ventilated outdoor areas. -- Keep children and pets away from the camping stove during operation. -- Do not touch the stove's burner when it is hot or in use. -- Use the stove on a stable and non-flammable surface. -- Keep flammable materials away from the stove. -- Always ensure the fuel canister is properly connected and secure. - -2. Product Overview -The CompactCook Camping Stove is a portable and lightweight stove designed for outdoor cooking. It features the following components: -- Burner: This is where the flame is produced for cooking. -- Control Valve: Use this to adjust the flame intensity. -- Fuel Canister Connection: Connect the fuel canister to the stove for operation. -- Sturdy Base: Provides stability during cooking. - -3. Setting Up the Stove -1. Choose a flat and stable surface to place the stove. -2. Ensure the control valve is in the "OFF" position. -3. Attach the fuel canister to the stove by following the manufacturer's instructions. -4. Verify that the fuel canister connection is secure. - -4. Operating Instructions -1. Check that all connections are secure before operating the stove. -2. Open the fuel canister valve. -3. Light the stove using the provided ignition system or a long-reach lighter. -4. Adjust the flame intensity using the control valve. -5. Place your cookware on the stove's burner. -6. After use, turn off the control valve and close the fuel canister valve. - -5. Maintenance and Cleaning -- Allow the stove to cool completely before handling or storing. -- Clean the stove regularly using mild soap and water. -- Ensure all parts are dry before storage to prevent corrosion. -- Check and replace any worn or damaged components. -- Store the stove in a clean and dry place. - -6. Troubleshooting -- If the flame goes out during operation, turn off the control valve, wait a few minutes, and relight the stove. -- If you experience issues with the stove's performance, consult the troubleshooting section of the manufacturer's manual or contact customer support. - -7. Warranty Information -Your CompactCook Camping Stove is covered by a limited warranty. For warranty details and contact information, refer to the warranty card included with your purchase. - -## Caution Information -1. **Do not use indoors:** The CompactCook Camping Stove is designed for outdoor use only. Do not attempt to use it indoors, as it can lead to carbon monoxide buildup and pose a serious health hazard. - -2. **Do not leave unattended:** Always supervise the stove while it is in use. Never leave the stove unattended, especially when there are open flames or hot surfaces. This helps prevent accidents and ensures your safety. - -3. **Do not operate near flammable materials:** Keep the stove away from flammable materials such as tents, dry grass, leaves, or any other combustible items. Maintain a safe distance to prevent accidental fires. - -4. **Do not touch the stove while hot:** Avoid touching the stove, particularly the burner and other metal parts, when it is in use or immediately after use. Allow sufficient time for the stove to cool down before handling. - -5. **Do not modify or alter the stove:** The CompactCook Camping Stove is designed and manufactured with specific safety features and specifications. Do not attempt to modify or alter the stove in any way, as it may compromise its performance and safety. - -6. **Do not use incompatible fuel:** Use only the recommended fuel type specified by the manufacturer. Using incompatible fuel sources can lead to malfunction, poor performance, or damage to the stove. - -7. **Do not overload the stove:** Avoid placing oversized or excessively heavy cookware on the stove. Overloading the stove can cause instability, tipping, or damage to the stove. - -8. **Do not store fuel canisters improperly:** Store fuel canisters in a cool, dry, and well-ventilated area, away from direct sunlight and sources of heat. Do not expose them to extreme temperatures or store them near open flames. - -9. **Do not use damaged components:** Inspect the stove and its components regularly for any signs of damage or wear. If you notice any cracks, dents, or other issues, refrain from using the stove and replace the damaged parts before using it again. - -10. **Do not disregard safety instructions:** Always follow the safety instructions provided by the manufacturer in the user manual or product documentation. Ignoring safety guidelines may lead to accidents, injuries, or damage to property. - -## Warranty Information - -**Warranty Coverage:** -During the warranty period, if any defects arise in the stove that are attributable to faulty materials or workmanship, we will, at our discretion, repair or replace the stove or its components free of charge. The warranty is valid only for the original purchaser and is non-transferable. - -**Exclusions:** -The warranty does not cover damages or malfunctions resulting from: -- Misuse, abuse, or improper handling of the stove -- Use of incompatible fuel sources or improper fuel storage -- Unauthorized modifications or alterations to the stove -- Normal wear and tear, including scratches, dents, or fading -- Accidental damage, acts of nature, or any other events beyond our control - -**Obtaining Warranty Service:** -In the event that you experience any issues with your CompactCook Camping Stove covered by this warranty, please contact our customer care department using the following contact details: - -- Customer Care Contact: AdventureGear Support -- Email: support@adventuregear.com -- Phone: 1-800-555-1234 -- Hours of Operation: Monday to Friday, 9:00 AM to 5:00 PM (Eastern Time) - -To initiate a warranty claim, please provide the following information: -- Your name and contact information -- Proof of purchase (receipt or order confirmation) -- Description of the issue and any relevant details - -Our customer care team will guide you through the warranty process and provide further instructions on how to proceed. - -**Limitations of Liability:** -Our liability under this warranty is limited to the repair or replacement of the defective stove or components. We are not liable for any indirect, incidental, or consequential damages arising from the use or inability to use the stove. - -Please refer to the user manual and safety instructions provided with your CompactCook Camping Stove for proper care, maintenance, and safety guidelines. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping stoves within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping stoves within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping stove purchases but from the same product brand. - -## Reviews -1) **Rating:** 5 - **Review:** I recently purchased the CompactCook Camping Stove, and it has exceeded my expectations. It's compact and lightweight, making it easy to carry during backpacking trips. The stove heats up quickly and provides a steady flame, allowing me to cook my meals efficiently. The build quality is impressive, and it's incredibly easy to set up and use. I highly recommend this stove for all camping enthusiasts! - -2) **Rating:** 4 - **Review:** The CompactCook Camping Stove is a reliable companion for outdoor adventures. It's sturdy and well-built, ensuring stability during cooking. The flame control is excellent, allowing precise temperature adjustments. The compact size is perfect for backpacking, and the included carrying case makes transportation a breeze. My only minor gripe is that the ignition system can be a bit finicky at times. Overall, it's a great stove for the price. - -3) **Rating:** 3 - **Review:** I have mixed feelings about the CompactCook Camping Stove. On one hand, it's lightweight and easy to assemble. However, I found the heat output to be a bit underwhelming, especially when trying to boil water quickly. The stability is decent, but I would have liked to see better wind resistance. It's an okay stove for basic cooking needs, but if you require more power and efficiency, you might want to explore other options. - -4) **Rating:** 5 - **Review:** The CompactCook Camping Stove is a fantastic addition to my camping gear. It's compact, lightweight, and incredibly efficient. I love how quickly it heats up, allowing me to prepare meals in no time. The flame control is precise, and the stability is impressive, even on uneven surfaces. The included carrying case is a bonus for easy storage and transportation. I'm extremely satisfied with this stove and would highly recommend it to fellow campers. - -5) **Rating:** 4 - **Review:** I've been using the CompactCook Camping Stove for a few camping trips now, and overall, it has performed well. The construction is solid, and it feels durable. The stove ignites easily, and the flame is consistent. The only drawback is that the burner size is a bit small, which limits the size of pots and pans you can use. If you're cooking for a larger group, you may need to consider a larger stove. Nonetheless, it's a reliable and convenient stove for solo or small group camping. - -## FAQ -87) What type of fuel does the CompactCook Camping Stove use? - The CompactCook Camping Stove is compatible with standard isobutane-propane canisters, which are widely available and easy to use. - -88) How long does it take to boil water using the CompactCook Camping Stove? - The CompactCook Camping Stove can bring 1 liter of water to a boil in approximately 3.5 minutes, depending on factors such as altitude and ambient temperature. - -89) Is the CompactCook Camping Stove suitable for cooking large meals? - While the CompactCook Camping Stove is designed for lightweight and compact cooking needs, it can accommodate pots and pans with a diameter of up to 8 inches (20 cm), allowing you to cook a variety of meals. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_3.md b/scenarios/rag/rag-e2e/data/product-info/product_info_3.md deleted file mode 100644 index c3a98864..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_3.md +++ /dev/null @@ -1,173 +0,0 @@ -# Information about product item_number: 3 -Summit Breeze Jacket, price $120, - -## Brand -MountainStyle - -## Category -Hiking Clothing - -## Features -- Lightweight design for easy carrying -- Windproof construction for protection against strong winds -- Water-resistant material to keep you dry in light rain -- Breathable fabric for enhanced comfort during activities -- Adjustable cuffs for a customized fit and added protection -- Available in sizes M, L, and XL -- Stylish black color for a sleek look -- Full-zip front closure for easy on and off -- Adjustable hood with drawcord for added coverage -- Zippered pockets for secure storage of essentials -- Inner lining for added comfort and warmth -- Durable polyester construction for long-lasting use -- Packable design for convenient storage and travel -- Elasticized hem for a snug fit -- Reflective accents for enhanced visibility in low light conditions - -## Technical Specs -**Best Use**: Hiking Clothing -**Material**: Polyester -**Color**: Black -**Available Sizes**: M, L, XL -**Weight**: 1 lb -**Dimensions**: 25 inches x 15 inches x 5 inches (height x width x depth) -**Waterproof**: No -**Number of Pockets**: Multiple -**Adjustable Cuffs**: Yes -**Hood**: Adjustable with drawcord -**Front Closure**: Full-zip -**Lining**: Yes -**Construction**: Windproof and water-resistant -**Packability**: Packable -**Reflective Accents**: Yes -**Breathability**: Yes -**Seam Sealed**: No -**Underarm Vents**: No -**Hem Drawcord**: Yes -**Storm Flap**: Yes -**Chin Guard**: Yes -**Articulated Elbows**: No -**DWR Coating**: No -**UPF Rating**: Not specified -**Care Instructions**: Machine washable - -## Summit Breeze Jacket User Manual -### Introduction - -Thank you for choosing the Summit Breeze Jacket. This user manual provides instructions on how to properly use and maintain your hiking jacket. Please read this manual carefully before using the product to ensure optimal performance and longevity. - -### Product Overview - -The Summit Breeze Jacket is a high-quality hiking jacket designed to provide protection and comfort during outdoor activities. It is made from durable and water-resistant polyester fabric, suitable for various weather conditions. The jacket features adjustable cuffs and a sleek black design, making it both functional and stylish. - -### Important Safety Information - -- Before using the Summit Breeze Jacket, please ensure that you are familiar with proper hiking safety guidelines and are adequately prepared for outdoor activities. -- This jacket is designed for hiking and outdoor use only. It is not intended for use in extreme weather conditions or as protective equipment for high-risk activities. - -### Wearing the Summit Breeze Jacket - -1. **Choosing the Right Size**: Select the appropriate size of the jacket based on your body measurements. Refer to the size chart provided to ensure a proper fit. - -2. **Putting on the Jacket**: Slide your arms through the sleeves of the jacket. Zip up the front zipper to the desired position. - -3. **Adjusting the Cuffs**: Use the hook-and-loop closures on the cuffs to adjust the fit around your wrists. Ensure a snug but comfortable fit. - -4. **Fastening the Zipper**: To secure the jacket, pull up the zipper and engage the zipper pull at the top. Make sure the zipper is fully closed for maximum protection against the elements. - -### Care and Maintenance - -Proper care and maintenance will help prolong the life of your Summit Breeze Jacket. Here are some guidelines to follow: - -- **Cleaning**: Clean the jacket regularly using mild soap and water. Avoid using harsh chemicals or bleach as they may damage the fabric. -- **Drying**: Allow the jacket to air dry in a well-ventilated area. Avoid exposing it to direct sunlight or using a dryer, as excessive heat can cause shrinkage or damage. -- **Storage**: When not in use, store the jacket in a cool, dry place. Avoid storing it in damp or humid conditions, as this can promote mold or mildew growth. -- **Repairs**: If your jacket requires repairs, contact our customer support for assistance. Attempting to repair the jacket yourself may void the warranty. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Caution: - -1. **Do not expose to open flames or high heat sources:** The Summit Breeze Jacket is not fire-resistant. Keep it away from open flames, stoves, heaters, or any high heat sources to prevent damage to the jacket and potential injury. - -2. **Avoid sharp objects:** Be cautious around sharp objects that can puncture or tear the jacket, such as thorns, branches, or sharp tools. Avoid contact to prevent damage to the fabric. - -3. **Do not use harsh chemicals:** Avoid using harsh chemicals, solvents, or bleach when cleaning the Summit Breeze Jacket. These substances can damage the fabric, zippers, or other components of the jacket. Instead, follow the recommended care instructions provided in the user manual. - -4. **Do not store the jacket when wet or damp:** Before storing the jacket, ensure that it is completely dry. Storing the jacket when wet or damp can lead to the growth of mold, mildew, and unpleasant odors. Hang it up or lay it flat in a well-ventilated area until it is fully dry. - -5. **Avoid excessive abrasion or friction:** While the Summit Breeze Jacket is designed to be durable, excessive rubbing or friction against rough surfaces can cause premature wear or damage. Avoid continuous contact with abrasive materials to maintain the jacket's integrity. - -6. **Do not iron or expose to high heat:** The Summit Breeze Jacket should not be ironed or exposed to high heat, including direct sunlight for extended periods. High heat can damage the fabric and affect its performance. If the jacket becomes wrinkled, use a low-heat setting or gently steam to remove wrinkles. - -7. **Avoid storing in compressed or tight spaces:** When not in use, store the Summit Breeze Jacket in a well-ventilated area with enough space to prevent excessive compression. Avoid tightly packing or crushing the jacket, as it may affect its loft, insulation, and overall performance. - -8. **Do not use fabric softeners:** Fabric softeners can leave residue on the jacket's fabric, which can reduce its breathability and water repellency. Avoid using fabric softeners during washing or drying. - -9. **Avoid prolonged exposure to extreme weather conditions:** While the Summit Breeze Jacket offers weather protection, it is not intended for prolonged exposure to extreme weather conditions. In severe weather, seek appropriate shelter or layer the jacket with additional protective gear for optimal comfort and safety. - -10. **Do not alter or modify the jacket:** Altering or modifying the Summit Breeze Jacket, such as adding or removing parts, can compromise its performance, fit, and warranty coverage. Avoid making any unauthorized modifications to ensure the jacket retains its intended functionality. - -These cautionary points will help you use and maintain the Summit Breeze Jacket effectively while avoiding potential issues or damage. - -## Warranty Information - -**Warranty Duration:** The Summit Breeze Jacket is covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as seam separation, zipper malfunction, or fabric defects. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the Summit Breeze Jacket. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -## Return Policy -- **If Membership status "None":** Customers can return the hiking clothing within 30 days of purchase for a full refund. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the customer. -- **If Membership status "Gold":** Customers can return the hiking clothing within 60 days of purchase for a full refund or exchange. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the company. -- **If Membership status "Platinum ":** Platinum members can return their hiking clothing within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all hiking clothing purchases. - -## Reviews -11) **Rating:** 5 - **Review:** The Summit Breeze Jacket is perfect for my hikes! It's lightweight, windproof, and breathable. I love the adjustable cuffs and water-resistant feature. Highly recommend! - -12) **Rating:** 4 - **Review:** I bought the Summit Breeze Jacket, and while it's water-resistant and breathable, I wish it had more pockets. It's still a great jacket for outdoor activities! - -13) **Rating:** 5 - **Review:** The Summit Breeze Jacket is my go-to for all my outdoor adventures. It keeps me warm and dry without being too heavy. The windproof feature is truly amazing on windy days! - -14) **Rating:** 4 - **Review:** I like the Summit Breeze Jacket, but I wish it came in more colors. It's comfortable and has many useful features, but the black color just isn't my favorite. Overall, it's a good jacket. - -15) **Rating:** 5 - **Review:** This jacket is a fantastic addition to my hiking gear. It's lightweight, windproof, and water-resistant, making it perfect for unpredictable weather. Love it! - -## FAQ -11) Can I wear the Summit Breeze Jacket as a standalone or as a layer? - The Summit Breeze Jacket can be worn as a standalone in mild weather or as a mid-layer in colder conditions. - -12) Are there any special care instructions for the Summit Breeze Jacket? - To maintain the Summit Breeze Jacket, machine wash on a gentle cycle with cold water and air dry. Do not use bleach or fabric softeners. - -13) Does the Summit Breeze Jacket have any reflective elements for visibility? - Yes, the Summit Breeze Jacket features reflective accents to help improve visibility in low-light conditions. - -14) Are the Summit Breeze Jacket's cuffs adjustable for a better fit? - Yes, the Summit Breeze Jacket has Velcro-adjustable cuffs to ensure a secure and comfortable fit. - -15) How breathable is the Summit Breeze Jacket during high-intensity activities? - The Summit Breeze Jacket is made of a breathable polyester material, which allows moisture to escape while maintaining wind and water resistance. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_4.md b/scenarios/rag/rag-e2e/data/product-info/product_info_4.md deleted file mode 100644 index cff0c098..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_4.md +++ /dev/null @@ -1,188 +0,0 @@ -# Information about product item_number: 4 -TrekReady Hiking Boots, price $140, - -## Brand -TrekReady - -## Category -Hiking Footwear - -## Features -- Durable construction for long-lasting performance -- Comfortable fit for extended hiking trips -- Excellent traction on various terrains -- Waterproof design to keep your feet dry -- Ankle support for stability and protection -- Breathable materials for enhanced comfort -- Cushioned insole for added comfort and support -- Toe protection against rocks and debris -- Quick-lace system for easy and secure adjustment -- Moisture-wicking lining to keep feet dry and fresh -- Padded collar and tongue for added comfort -- Lightweight design for reduced fatigue -- Reinforced stitching for added durability -- Shock-absorbing midsole for enhanced comfort on uneven surfaces - -## Technical Specs -**Product Category**: Hiking Footwear -**Brand**: TrekReady -**Material**: Leather -**Color**: Brown -**Dimensions**: 11 inches (length) x 4.5 inches (width) x 7 inches (height) -**Weight**: 3 lbs -**Waterproof**: Yes -**Ankle Support**: Yes -**Closure Type**: Lace-up -**Sole Material**: Rubber -**Midsole Material**: EVA (Ethylene-Vinyl Acetate) -**Upper Material**: Full-grain leather -**Lining Material**: Moisture-wicking fabric -**Toe Protection**: Yes -**Breathable**: Yes -**Traction**: Multi-directional lug pattern -**Cushioned Insole**: Yes -**Collar and Tongue**: Padded -**Shock Absorption**: Yes -**Reinforced Stitching**: Yes - -## TrekReady Hiking Boots User Guide - -Thank you for choosing the TrekReady Hiking Boots. This user guide provides instructions on how to properly use, maintain, and get the best performance out of your hiking boots. Please read this guide thoroughly before using the product. - -### 1. Introduction - -Welcome to the TrekReady Hiking Boots User Guide. This guide contains important information to help you make the most of your hiking experience with our boots. Please read this guide carefully before using the product. - -### 2. Product Overview - -The TrekReady Hiking Boots are designed for durability, comfort, and performance on various terrains. They feature high-quality leather construction, a rugged outsole for excellent traction, and ankle support for stability. These boots are suitable for hiking, backpacking, and other outdoor activities. - -### 3. Sizing and Fit - -It is important to choose the correct size and achieve a proper fit for optimal performance and comfort. Follow these steps to determine the right size and achieve a good fit: - -- Refer to the size chart provided on our website or product packaging. -- Measure your foot length and width accurately. -- Try on the boots with appropriate hiking socks to ensure a snug but not overly tight fit. -- Walk around to assess the comfort and support of the boots. -- If needed, adjust the lacing system to customize the fit. - -### 4. Proper Care and Maintenance - -To prolong the life of your TrekReady Hiking Boots and maintain their performance, follow these care and maintenance guidelines: - -- Clean the boots regularly using a soft brush or cloth to remove dirt and debris. -- Use a mild soap or specialized boot cleaner for stubborn stains. -- Allow the boots to air dry naturally. Avoid direct heat sources. -- Condition the leather periodically to keep it supple and prevent cracking. -- Inspect the boots for any signs of damage or wear and address them promptly. - -### 5. Break-in Period - -New hiking boots require a break-in period to mold to your feet and prevent discomfort during long hikes. Follow these tips for a smooth break-in process: - -- Wear the boots for short periods initially to gradually break them in. -- Start with shorter hikes and gradually increase the duration and intensity. -- Use proper hiking socks and adjust the lacing for a secure fit. -- Pay attention to any hot spots or discomfort and make necessary adjustments. -- Over time, the boots will adapt to your feet, providing increased comfort and support. - -### 6. Trail Safety Tips - -When using the TrekReady Hiking Boots, it is important to prioritize safety. Consider the following tips for a safe and enjoyable hiking experience: - -- Always inform someone about your hiking plans, including the route and estimated return time. -- Check the weather forecast and dress accordingly. Bring appropriate gear for changing weather conditions. -- Carry essential items such as a map, compass, first aid kit, and sufficient water and food. -- Familiarize yourself with the trail, including any potential hazards or restrictions. -- Use proper hiking techniques and be mindful of your surroundings to prevent accidents. - -### 7. Troubleshooting - -If you encounter any issues or have concerns about your TrekReady Hiking Boots, refer to the following troubleshooting tips: - -- If experiencing discomfort, ensure that the boots are properly sized and laced. -- Check for signs of wear, damage, or loose stitching. Address any issues promptly. -- If the outsole loses traction, clean the treads to remove dirt and debris. -- For persistent issues or questions, contact our customer support for further assistance. - -## Caution: - -1. **Do not use the boots for activities they are not designed for:** Avoid using the TrekReady Hiking Boots for activities such as running, rock climbing, or any other sports where specialized footwear is required. These boots are specifically designed for hiking purposes. - -2. **Do not submerge the boots in water:** While the boots are water-resistant, they are not fully waterproof. Avoid submerging them in water or wearing them in extremely wet conditions, as it may compromise their performance and cause damage. - -3. **Do not use harsh chemicals for cleaning:** Avoid using harsh chemicals, solvents, or abrasive cleaners when cleaning the boots. Instead, use mild soap and water to gently clean any dirt or stains. Harsh chemicals can damage the materials and affect the performance of the boots. - -4. **Do not expose the boots to extreme temperatures:** Avoid exposing the boots to extreme heat or cold for extended periods. Extreme temperatures can affect the integrity of the materials and potentially damage the boots. Store them in a cool and dry place when not in use. - -5. **Do not ignore signs of wear and tear:** Regularly inspect your TrekReady Hiking Boots for any signs of wear and tear, such as frayed laces, worn-out soles, or loose stitching. If you notice any damage, it is recommended to repair or replace the boots to maintain their performance and safety. - -6. **Do not ignore proper fit and sizing:** Ensure that you choose the correct size and fit for your feet when purchasing the TrekReady Hiking Boots. Wearing ill-fitting boots can lead to discomfort, blisters, and potential foot injuries. Take the time to try them on and make necessary adjustments for a proper fit. - -7. **Do not neglect proper maintenance:** Proper maintenance is essential to prolong the lifespan of your TrekReady Hiking Boots. Regularly clean and dry the boots after each use, store them in a suitable environment, and follow the care instructions provided by the manufacturer. - -8. **Do not disregard safety precautions:** While the TrekReady Hiking Boots provide support and protection, they do not guarantee immunity from accidents or injuries. Always exercise caution and follow proper hiking safety guidelines, such as using trekking poles, wearing appropriate clothing, and being aware of your surroundings. - -By keeping these "not-to-do" points in mind, you can ensure the optimal performance, durability, and safety of your TrekReady Hiking Boots. - -## Warranty Information - -**Warranty Duration:** The TrekReady Hiking Boots are covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as sole separation, stitching defects, or hardware malfunctions. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the TrekReady Hiking Boots. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Return Policy - -## Reviews -16) **Rating:** 5 - **Review:** The TrekReady Hiking Boots are incredibly comfortable and durable. The excellent traction and waterproof design make them perfect for all my hiking adventures. Highly recommend! - -17) **Rating:** 4 - **Review:** I bought the TrekReady Hiking Boots, and while they provide great ankle support and traction, they took some time to break in. Overall, they're good boots for hiking. - -18) **Rating:** 5 - **Review:** The TrekReady Hiking Boots have exceeded my expectations. They're comfortable, waterproof, and the ankle support is fantastic. I won't go hiking without them! - -19) **Rating:** 4 - **Review:** I like the TrekReady Hiking Boots, but I wish they were available in more colors. The brown color is nice, but I would prefer something more unique. Overall, they're great boots. - -20) **Rating:** 5 - **Review:** These hiking boots are a game changer for my outdoor adventures. They're extremely comfortable, provide excellent traction, and keep my feet dry in wet conditions. Love them! - -## FAQ -16) How do the TrekReady Hiking Boots provide ankle support? - The TrekReady Hiking Boots feature a high-top design and padded collar, which help to stabilize and support the ankle during hikes. - -17) What type of lacing system do the TrekReady Hiking Boots use? - The TrekReady Hiking Boots use a traditional lace-up system with metal eyelets for a secure and adjustable fit. - -18) Can the TrekReady Hiking Boots be worn for everyday use or just for hiking? - While the TrekReady Hiking Boots are designed primarily for hiking, they can also be worn for everyday use if you find them comfortable. - -19) How should I care for and maintain my TrekReady Hiking Boots? - To clean the TrekReady Hiking Boots, use a soft brush or cloth to remove dirt and debris. Condition the leather periodically with a leather conditioner to maintain its durability and water-resistance. - -20) Do the TrekReady Hiking Boots have a break-in period? - The TrekReady Hiking Boots may require a short break-in period to become more comfortable and form to the contours of your feet. It's recommended to wear them for shorter walks before taking them on long hikes. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_5.md b/scenarios/rag/rag-e2e/data/product-info/product_info_5.md deleted file mode 100644 index 192b2e6a..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_5.md +++ /dev/null @@ -1,221 +0,0 @@ -# Information about product item_number: 5 -BaseCamp Folding Table, price $60, - -## Brand -CampBuddy - -## Category -Camping Tables - -## Features -- Lightweight and durable aluminum construction -- Foldable design with a compact size for easy storage and transport -- Adjustable legs for different height settings and uneven terrain -- Large tabletop dimensions of 48in x 24in, providing ample space for meals, games, and other activities -- Sturdy and stable structure capable of supporting various items -- Quick and easy setup without the need for additional tools -- Rust-resistant and weather-resistant for outdoor use -- Built-in handle for convenient carrying -- Integrated cup holders or mesh pockets for holding drinks or small items -- Non-slip feet for added stability on different surfaces -- Versatile usage for camping, picnics, backyard parties, and other outdoor events - -## Technical Specifications -- **Material**: Aluminum -- **Color**: Silver -- **Dimensions**: 48 inches x 24 inches x 24 inches (Length x Width x Height) -- **Weight**: 15 lbs -- **Maximum Weight Capacity**: Up to a certain weight limit (specific weight limit not provided) -- **Folding Mechanism**: Yes -- **Adjustable Legs**: Yes -- **Tabletop Surface**: Smooth and easy to clean -- **Portability**: Highly portable and easy to carry -- **Stability**: Sturdy and stable construction -- **Weather Resistance**: Resistant to rust and suitable for outdoor use -- **Assembly**: Tool-free assembly -- **Carrying Handle**: Yes -- **Storage Features**: Built-in storage compartments or pockets -- **Frame Design**: Reinforced frame for added durability -- **Leg Locking Mechanism**: Secure locking system to ensure stability during use -- **Table Height**: Adjustable height settings for versatility -- **Transport Bag**: Included for convenient storage and transportation -- **Leg Caps**: Non-slip leg caps for stability on various surfaces -- **Tabletop Design**: Flat and spacious tabletop surface for multiple uses -- **Compact Storage**: Folds down to a compact size for space-saving storage -- **Quick Setup**: Easy and quick setup without the need for additional tools -- **UV Protection**: Resistant to sun damage and fading -- **Carry Weight**: Weight distribution design for comfortable carrying - -## BaseCamp Folding Table User Guide - -Thank you for choosing the BaseCamp Folding Table. This user guide provides instructions on how to use and maintain your folding table effectively. - -### 1. Introduction - -The BaseCamp Folding Table is a versatile and portable table designed for outdoor camping, picnics, and other recreational activities. With its lightweight and foldable design, it provides convenience and functionality for your outdoor adventures. - -Please read this user guide carefully before using the BaseCamp Folding Table to ensure proper assembly, use, and storage. - -### 2. Unpacking and Inspection - -When you receive your BaseCamp Folding Table, carefully unpack and inspect the contents to ensure everything is in good condition and all components are included. The package should include: - -- BaseCamp Folding Table -- Table legs -- Carrying bag -- User Guide - -If any parts are missing or damaged, please contact our customer support for assistance. - -### 3. Table Setup - -Follow these steps to set up the BaseCamp Folding Table: - -#### Step 1: Unfolding the Table - -1. Remove the table and legs from the carrying bag. -2. Unfold the table by gently pulling the sides apart. -3. Ensure that the table locks into place securely. - -#### Step 2: Attaching the Legs - -1. Locate the designated leg attachment points on the underside of the table. -2. Insert the legs into the attachment points until they click into place. -3. Ensure that the legs are fully extended and locked securely. - -#### Step 3: Adjusting the Table Height (if applicable) - -1. If your BaseCamp Folding Table has adjustable height settings, locate the height adjustment mechanism. -2. Adjust the table height to your desired position. -3. Ensure that the height adjustment mechanism is locked securely. - -### 4. Table Folding and Storage - -Follow these steps to fold and store the BaseCamp Folding Table: - -#### Step 1: Detaching the Legs - -1. Remove any items from the table surface. -2. Press the leg release buttons or mechanisms to unlock the legs. -3. Gently pull the legs out of the attachment points. - -#### Step 2: Folding the Table - -1. Collapse the table by folding the sides towards the center. -2. Ensure that the table folds flat and the locking mechanisms engage. - -#### Step 3: Storing the Table - -1. Clean the table surface if necessary. -2. Place the folded table into the carrying bag. -3. Ensure that the bag is securely closed. - -### 5. Cleaning and Maintenance - -To keep your BaseCamp Folding Table in good condition, follow these cleaning and maintenance guidelines: - -- Clean the table surface with mild soap and water. -- Avoid using abrasive cleaners or solvents that may damage the table. -- Ensure the table is completely dry before folding and storing it. -- Store the table in a cool, dry place away from direct sunlight. - -### 6. Safety Precautions - -Please observe the following safety precautions while using the BaseCamp Folding Table: - -- Do not exceed the table's maximum weight capacity. -- Avoid placing hot objects directly on the table surface. -- Ensure the table is set up on a stable and level surface. -- Keep fingers and hands away from the table's folding mechanisms. -- Do not use the table as a step ladder or for purposes other than intended. - -If you have any questions or need further assistance, please contact our customer support using the provided contact information. We hope you enjoy using your BaseCamp Folding Table for all your outdoor activities! - -## Cautions: - -1. **Do not exceed the weight capacity:** The BaseCamp Folding Table has a specified weight capacity. Avoid placing objects or applying weight that exceeds the recommended limit to prevent damage or collapse of the table. - -2. **Do not use as a step ladder:** The BaseCamp Folding Table is designed for use as a table surface. Do not stand or climb on the table, as it may result in instability and potential injury. - -3. **Avoid placing hot objects directly on the table surface:** The table surface may not be designed to withstand direct contact with hot objects. Use appropriate heat-resistant mats or trivets to protect the table surface and prevent damage. - -4. **Avoid uneven or unstable surfaces:** When setting up the table, ensure that it is placed on a stable and level surface. Avoid using the table on uneven or unstable ground, as it may cause the table to tip or collapse. - -5. **Do not force the table during setup or folding:** Use gentle and controlled movements when unfolding, setting up, or folding the table. Avoid using excessive force, as it may damage the table or its locking mechanisms. - -6. **Do not store the table when wet or dirty:** Before storing the BaseCamp Folding Table, ensure that it is clean and completely dry. Storing the table while it is wet or dirty can lead to mold, mildew, or damage to the table material. - -7. **Avoid placing sharp objects directly on the table surface:** To prevent scratches or punctures, avoid placing sharp objects directly on the table surface. Use protective covers or mats when working with sharp tools or utensils. - -8. **Do not modify or alter the table:** Do not attempt to modify or alter the BaseCamp Folding Table in any way. Modifying the table may compromise its structural integrity and could result in accidents or injury. - -9. **Keep fingers and hands clear of folding mechanisms:** Exercise caution when folding or unfolding the table to prevent fingers or hands from being caught in the folding mechanisms. Always keep your hands clear of the moving parts during setup and folding. - -10. **Do not leave the table unattended in windy conditions:** In windy conditions, secure the table properly or consider folding and storing it to prevent it from being blown away or damaged. - -Following these cautions will help ensure the safe and proper use of your BaseCamp Folding Table, prolong its lifespan, and enhance your outdoor experience. - -## Warranty Information - -Thank you for choosing the BaseCamp Folding Table. This section provides details about the warranty coverage for your product. - -- **Warranty Duration:** The BaseCamp Folding Table is covered by a limited warranty for a period of 1 year from the date of purchase. - -- **Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as structural defects, faulty hinges, or table surface irregularities that affect the table's functionality. - -- **Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow the product's care and maintenance instructions. Additionally, the warranty does not cover any incidental or consequential damages. - -- **Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -- **Warranty Remedies:** Depending on the nature of the warranty claim and at our discretion, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement. - -- **Limitations:** The warranty is non-transferable and applies only to the original purchaser of the BaseCamp Folding Table. It is valid only when the product is purchased from an authorized retailer. - -- **Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. Please retain your proof of purchase as it will be required to verify warranty eligibility. -We appreciate your trust in our product and strive to provide you with excellent customer service. Enjoy your BaseCamp Folding Table and have a wonderful outdoor adventure! - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping tables within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping tables within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping table purchases but from the same product brand. - -## Reviews -21) **Rating:** 5 - **Review:** The BaseCamp Folding Table is perfect for our camping trips. It's lightweight, portable, and easy to clean. The foldable design makes it convenient to store and transport. Love it! - -22) **Rating:** 4 - **Review:** I bought the BaseCamp Folding Table, and while it's sturdy and portable, I wish it had adjustable leg heights. Overall, it's a good camping table. - -23) **Rating:** 5 - **Review:** The BaseCamp Folding Table has been a fantastic addition to our camping gear. It's easy to set up and provides ample space for cooking and dining. Highly recommend! - -24) **Rating:** 4 - **Review:** I like the BaseCamp Folding Table, but I wish it came with a carrying case. It's lightweight and portable, but a case would make it even easier to transport. Overall, it's a great table. - -25) **Rating:** 5 - **Review:** This folding table is perfect for our family camping trips. It's easy to set up, sturdy, and provides enough space for our cooking needs. The lightweight design is a big plus! - -## FAQ -21) Can the BaseCamp Folding Table support heavy pots and pans? - Yes, the BaseCamp Folding Table has a sturdy aluminum construction and can support up to 50 lbs of weight. - -22) How do I set up and fold the BaseCamp Folding Table? - The BaseCamp Folding Table features a collapsible design with foldable legs and a roll-up tabletop. Simply unfold the legs, secure the tabletop, and attach the support bars. To fold, reverse the process. - -23) Can the BaseCamp Folding Table be used on uneven terrain? - The BaseCamp Folding Table has adjustable leg extensions that can be used to level the table on uneven terrain. - -24) Does the BaseCamp Folding Table come with a carrying case? - Yes, the BaseCamp Folding Table includes a carrying case for easy transport and storage. - -25) What is the best way to clean the BaseCamp Folding Table? - To clean the BaseCamp Folding Table, simply wipe the aluminum surface with a damp cloth and mild detergent, then air dry. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_6.md b/scenarios/rag/rag-e2e/data/product-info/product_info_6.md deleted file mode 100644 index 7367ea83..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_6.md +++ /dev/null @@ -1,219 +0,0 @@ -# Information about product item_number: 6 -EcoFire Camping Stove, price $80, - -## Brand -EcoFire - -## Category -Camping Stoves - -## Features -- Fuel-efficient: Designed to maximize fuel usage and minimize waste -- Compact: Portable and space-saving design, ideal for camping and outdoor adventures -- Durable: Constructed with high-quality stainless steel for long-lasting durability -- Easy to use: Simple and intuitive operation for hassle-free cooking -- Wind protection: Provides effective wind resistance to maintain steady heat output -- Lightweight: Weighs only 4 lbs, making it easy to carry and transport -- Quick setup: Sets up quickly and easily, saving time and effort -- Heat control: Adjustable flame control for precise temperature regulation -- Versatile: Suitable for various cooking needs, including boiling, simmering, and grilling -- Stable: Sturdy construction ensures stability during use -- Cooking efficiency: Efficient heat transfer for faster cooking times -- Safety features: Includes safety mechanisms to prevent accidents and ensure user protection -- Compatibility: Works with a variety of fuel sources (specific fuel sources not provided) -- Easy maintenance: Simple cleaning and maintenance process -- Compact storage: Folds down or disassembles for convenient storage when not in use -- Cooking surface: Provides ample space for pots, pans, and other cookware -- Heat distribution: Even heat distribution for consistent cooking results -- Carry case: Includes a carrying case for easy transportation and storage -- Environmentally friendly: Designed with sustainability in mind, minimizing environmental impact -- Reliable performance: Consistent and reliable performance in various weather conditions - -## Technical Specs -- **Material**: Stainless Steel -- **Color**: Silver -- **Dimensions**: 12 inches x 12 inches x 8 inches (L x W x H) -- **Weight**: 4 lbs -- **Fuel Type**: Compatible with various fuel sources (specific fuel sources not provided) -- **Cooking Surface Diameter**: Not specified -- **Ignition Type**: Manual ignition (specific ignition mechanism not provided) -- **Burner Type**: Single burner -- **Heat Output**: Not specified -- **Boil Time**: Not specified -- **Wind Protection**: Yes -- **Fuel Efficiency**: Fuel-efficient design for optimized usage -- **Foldable Design**: Yes, for compact storage and portability -- **Carrying Case**: Included for easy transportation and storage -- **Maintenance**: Easy to clean and maintain -- **Compact and Lightweight**: Designed for easy carrying during outdoor adventures -- **Sturdy Construction**: Durable stainless steel material ensures long-lasting performance -- **Flame Control**: Adjustable flame control for precise cooking -- **Versatile Cooking Options**: Suitable for various cooking methods, including boiling, simmering, and frying -- **Easy Assembly**: Simple and hassle-free setup process -- **Heat Resistant Handle**: Ergonomic handle stays cool to the touch for safe handling -- **Wide Base**: Provides stability on uneven surfaces -- **High-Quality Craftsmanship**: Crafted with attention to detail for reliable performance in outdoor environments - -## EcoFire Camping Stove User Guide - -### 1. Introduction - -Thank you for choosing the EcoFire Camping Stove. This user guide provides instructions on how to effectively use and maintain your camping stove. Please read this guide thoroughly before using the product. - -### 2. Package Contents - -Ensure that the package includes the following components: - -- EcoFire Camping Stove -- Fuel canister (sold separately) -- Carry case -- User Guide - -If any components are missing or damaged, please contact our customer support immediately. - -### 3. Stove Assembly - -Follow these steps to assemble the EcoFire Camping Stove: - -1. Place the camping stove on a flat and stable surface. -2. Unfold the legs of the stove to provide a sturdy base. -3. Attach the fuel canister to the designated connection point on the stove. -4. Ensure that all connections are secure and tight. - -### 4. Fuel Preparation - -The EcoFire Camping Stove is compatible with standard camping fuel canisters. Follow these guidelines when preparing the fuel: - -- Use only fuel canisters specifically designed for camping stoves. -- Check the compatibility of the fuel canister with the stove model. -- Ensure that the fuel canister is clean, undamaged, and properly sealed. - -### 5. Ignition and Operation - -To ignite and operate the EcoFire Camping Stove, follow these steps: - -1. Open the valve on the fuel canister slowly and carefully. -2. Use the built-in ignition mechanism or a separate lighter to ignite the stove. -3. Adjust the flame control knob to regulate the intensity of the flame. -4. Place cookware or a suitable grill over the stove for cooking. - -### 6. Adjusting the Flame - -To adjust the flame intensity of the EcoFire Camping Stove, follow these steps: - -- Turn the flame control knob clockwise to increase the flame intensity. -- Turn the flame control knob counterclockwise to decrease the flame intensity. -- Use caution when adjusting the flame, and never leave the stove unattended. - -### 7. Care and Maintenance - -Proper care and maintenance will ensure the longevity and optimal performance of your EcoFire Camping Stove. Follow these guidelines: - -- Clean the stove after each use. Use a soft cloth or sponge with mild detergent and water. -- Ensure that the stove is completely cooled down before cleaning or storing. -- Regularly inspect the fuel canister for damage or leaks. Replace if necessary. -- Store the stove in a clean, dry, and well-ventilated area. - -### 8. Safety Precautions - -It is important to follow these safety precautions when using the EcoFire Camping Stove: - -- Keep the stove away from flammable materials, including tents, clothing, and overhanging branches. -- Use the stove in a well-ventilated area to prevent carbon monoxide buildup. -- Never leave the stove unattended while it is in operation. -- Keep children and pets away from the stove during use. -- Use caution when handling the stove and fuel canister, as they can become hot during operation. - -### 9. Troubleshooting - -If you encounter any issues with the EcoFire Camping Stove, try the following troubleshooting steps: - -- Ensure that the fuel canister is properly connected and has sufficient fuel. -- Check the ignition mechanism or lighter for proper functioning. -- Clean any clogged burner holes or fuel lines. -- If the issue persists, please contact our customer support for further assistance. - -## 10. Contact Information - -If you have any questions, concerns, or need further assistance, please contact our customer support: - -- Customer Support Phone: 1-800-123-4567 -- Customer Support Email: support@ecofire.com - -We hope you enjoy your EcoFire Camping Stove and have a wonderful outdoor experience. - -## Cautions: - -1. Do not use the EcoFire Camping Stove indoors or in enclosed spaces. Always use it in a well-ventilated area to prevent carbon monoxide buildup. -2. Do not touch the stove or fuel canister while they are hot. Allow them to cool down completely before handling. -3. Do not place flammable materials, such as tents, clothing, or paper, near the stove while it is in operation. -4. Do not leave the stove unattended while it is in use. Always keep an eye on the flame and cooking process. -5. Do not use the stove with damaged or leaking fuel canisters. Inspect the canister before each use and replace if necessary. -6. Do not disassemble or modify the stove in any way. Any modifications can lead to unsafe operation and void the warranty. -7. Do not attempt to ignite the stove without following the proper ignition procedure outlined in the user guide. -8. Do not use the stove for purposes other than outdoor cooking. It is designed specifically for camping and outdoor use. -9. Do not overload the stove with oversized or heavy cookware. Use cookware that is suitable for the size and weight capacity of the stove. -10. Do not leave the stove dirty or greasy after use. Clean it thoroughly using mild detergent and water before storing. - -Following these cautions will help ensure safe and optimal operation of the EcoFire Camping Stove. - -## Warranty Information: - -Thank you for choosing the EcoFire Camping Stove. The product is covered by a limited warranty to provide you with peace of mind. Please read the following warranty information carefully: - -**Warranty Duration:** The EcoFire Camping Stove is covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship that arise during normal use of the product. It includes issues such as faulty ignition, burner malfunction, or structural defects. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, negligence, unauthorized modifications, or failure to follow the instructions provided in the user guide. It also does not cover normal wear and tear, cosmetic damage, or damage caused by natural disasters. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the EcoFire Camping Stove. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -We strive to provide you with a high-quality product, and we are confident that the EcoFire Camping Stove will meet your expectations for performance and reliability. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping stoves within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping stoves within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping stove purchases but from the same product brand. - -## Reviews -26) **Rating:** 5 - **Review:** The EcoFire Camping Stove is a fantastic piece of gear. It's compact, fuel-efficient, and easy to use. The wind protection feature is a game changer. Highly recommend it for camp cooking! - -27) **Rating:** 4 - **Review:** I bought the EcoFire Camping Stove, and while it's durable and efficient, I wish it had a built-in igniter. Overall, it's a good stove for camping. - -28) **Rating:** 5 - **Review:** The EcoFire Camping Stove has become an essential part of my camping gear. It's compact, easy to use, and the wind protection makes cooking in windy conditions a breeze. Love it! - -29) **Rating:** 4 - **Review:** I like the EcoFire Camping Stove, but I wish it came with a carrying case. It's compact and efficient, but a case would make it even easier to transport. Overall, it's a great stove. - -30) **Rating:** 5 - **Review:** This camping stove has exceeded my expectations. It's fuel-efficient, easy to use, and the wind protection feature is a lifesaver. I can't imagine camping without it! - -## FAQ -26) What type of fuel does the EcoFire Camping Stove use? - The EcoFire Camping Stove uses small twigs, leaves, and other natural biomass as fuel, making it an eco-friendly option for outdoor cooking. - -27) How long does it take to boil water using the EcoFire Camping Stove? - The EcoFire Camping Stove can bring 1 liter of water to a boil in approximately 4-6 minutes, depending on the fuel used and environmental conditions. - -28) Can the EcoFire Camping Stove be used with different types of cookware? - Yes, the EcoFire Camping Stove features a wide and stable pot support, making it compatible with various sizes and types of cookware. - -29) Is the EcoFire Camping Stove safe to use in areas with fire restrictions? - It's essential to check local regulations before using the EcoFire Camping Stove, as some areas may have restrictions on open fires or require a specific type of stove. - -30) How do I clean and maintain the EcoFire Camping Stove? - To clean the EcoFire Camping Stove, allow it to cool completely, then wipe away any ash or debris with a brush or cloth. Store the stove in a dry place when not in use. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_66.md b/scenarios/rag/rag-e2e/data/product-info/product_info_66.md deleted file mode 100644 index 053a978e..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_66.md +++ /dev/null @@ -1,101 +0,0 @@ - -# Information about product item_number: 66 -Pathfinder Pro-1 Adventure Compass, priced: $39.99. - -Experience accurate navigation and superior outdoor performance with this durable and reliable compass, crafted by the experts at Pathfinder. - -Features: - -Robust, lightweight ABS plastic construction for durability and easy carry -Precision tungsten steel needle with sapphire bearing for smooth and accurate operation -Declination adjusted for use in the northern hemisphere -Built-in adjustable declination correction for precise navigation -Thermometer and altitude scale for additional outdoor information -Liquid-filled capsule for enhanced stability and dampening -Photoluminescent markings for easy navigation in low light conditions -Dual metric and imperial scales for versatile map reading -Transparent baseplate with anti-slip rubber pads and magnifying lens for ease of use -Secure snap-lock lanyard with quick-release wrist strap for convenient carrying -Expertly engineered and assembled with precision -Technical Specs: - -Best Use: Hiking, Orienteering, Backpacking -Analog or Digital: Analog -Increments: 2 degrees -Scale 1:25,000: Yes -Declination Adjustment: Yes -Declination Scale: Yes -Liquid-Filled: Yes -Luminous Points/Bezel: Yes -Ruler: Yes -Magnifying Lens: Yes -Lanyard: Yes -Dimensions: 5.1 x 2.6 x 0.6 inches -Weight: 1.8 ounces - -Whether you're a seasoned explorer or just starting your adventures, the Pathfinder Pro-1 Adventure Compass offers the reliability, accuracy, and ease of use you need to navigate the great outdoors with confidence. - -# FAQ: - -Does the Pathfinder Pro-1 Adventure Compass come with a protective case? -The compass does not include a protective case. However, the ABS plastic construction provides durability and protection against wear and tear during outdoor activities. - -Can I use this compass for marine navigation? -While the Pathfinder Pro-1 Adventure Compass is designed primarily for hiking, orienteering, and backpacking, it can also be used for basic marine navigation. However, it is not specifically designed for marine environments and may not offer the same level of accuracy and features as a marine-specific compass. - -How do I adjust the declination on this compass? -The built-in adjustable declination correction allows you to easily adjust for the local magnetic declination. Simply use a small screwdriver or the provided tool to turn the declination adjustment screw until the declination indicator aligns with the correct value for your location. - -Q: Is the Pathfinder Pro-1 Adventure Compass waterproof? - -A: Yes, the Pathfinder Pro-1 Adventure Compass is designed to be water-resistant, making it suitable for use in various weather conditions. However, it is not recommended to submerge the compass in water for extended periods. - -Q: Can I use the Pathfinder Pro-1 Adventure Compass in the southern hemisphere? - -A: Yes, you can use the Pathfinder Pro-1 Adventure Compass in the southern hemisphere. It is specially designed for use in both northern and southern hemispheres, and it has a built-in adjustable declination correction for precise navigation. - -Q: How often do I need to calibrate the compass? - -A: The Pathfinder Pro-1 Adventure Compass should maintain its accuracy over time. However, it is recommended to check the calibration periodically, especially if the compass has been exposed to strong magnetic fields or experienced significant temperature fluctuations. To calibrate the compass, follow the instructions provided in the user manual. - -Q: Does the Pathfinder Pro-1 Adventure Compass come with a carrying case? - -A: The Pathfinder Pro-1 Adventure Compass does not come with a carrying case. However, it features a durable design and a lanyard hole for convenient carrying around your neck or attaching to your backpack. - -Q: Can I use the Pathfinder Pro-1 Adventure Compass for orienteering competitions? - -A: The Pathfinder Pro-1 Adventure Compass is suitable for orienteering activities, including competitions. Its accuracy, mirror sighting feature, and integrated clinometer make it an excellent choice for orienteering enthusiasts. - -Q: How do I clean the compass if it gets dirty? - -A: To clean the Pathfinder Pro-1 Adventure Compass, use a soft cloth dampened with water and mild soap. Avoid using harsh chemicals or solvents, as they may damage the compass. Ensure the compass is completely dry before storing it in a cool, dry place away from direct sunlight and magnetic fields. - -# Reviews - -Exceptional Baseplate Compass for Outdoor Enthusiasts -I've been using the Pathfinder Pro-1 Adventure Compass for multiple backpacking and hiking trips, and I couldn't be happier with its performance. It's easy to use, accurate, and the built-in thermometer and altitude scale are nice bonuses. The photoluminescent markings make it easy to navigate even in low light conditions. Highly recommended for anyone looking for a reliable compass at a reasonable price. - -A Must-Have for Hiking and Orienteering -I recently purchased this compass for an orienteering competition, and it exceeded my expectations. The adjustable declination correction and tungsten steel needle with sapphire bearing ensure precise navigation. The ABS plastic construction makes it lightweight yet durable. A fantastic compass for any outdoor enthusiast. - -Dependable and User-Friendly Compass -The Pathfinder Pro-1 Adventure Compass has quickly become my go-to navigation tool for hiking and backpacking trips. Its user-friendly design and accurate readings give me confidence in my navigational skills. The dual metric and imperial scales and transparent baseplate with anti-slip rubber pads make map reading a breeze. Highly recommended! - -5-Star Compass for Explorers and Adventurers -As an avid outdoors enthusiast, I've used a number of compasses over the years, and the Pathfinder Pro-1 Adventure Compass is by far the best one I've come across. The mirror sighting feature with V-notch sighting line helps me take accurate bearings with ease, and the integrated clinometer is invaluable for assessing slope angles. A fantastic investment for anyone looking to up their navigation game. - -Perfect Companion for Geocaching -I purchased the Pathfinder Pro-1 Adventure Compass for geocaching, and it has not let me down. The quick and accurate readings have improved my ability to locate caches in a timely manner. The lanyard hole makes it convenient to carry around my neck, ensuring it's always within reach. I highly recommend this compass for geocaching enthusiasts! - -Reliable and Rugged Navigation Tool -I've taken the Pathfinder Pro-1 Adventure Compass on multiple backcountry expeditions, and it has proven to be an indispensable part of my gear. Its durability and resistance to water and shock have made it a reliable navigation tool in all kinds of weather and terrain. The fluorescent markings are a great help during nighttime navigation. This compass is a must-have for serious adventurers! - - - -Return Policy: - -Loyalty Status Bronze: 30-Day Return Policy -Loyalty Status Silver: 60-Day Return Policy -Loyalty Status Gold: 90-Day Return Policy - -Pathfinder offers a one-year limited warranty against defects in materials and workmanship, ensuring your satisfaction and peace of mind. Whether you're an experienced outdoors person or just starting your journey, the Pathfinder Pro-1 Adventure Compass will provide you with the accuracy and reliability you need for successful navigation. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_7.md b/scenarios/rag/rag-e2e/data/product-info/product_info_7.md deleted file mode 100644 index c34b8626..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_7.md +++ /dev/null @@ -1,137 +0,0 @@ -# Information about product item_number: 7 -CozyNights Sleeping Bag, price $100, - -## Brand -CozyNights - -## Category -Sleeping Bags - -## Features -- **Lightweight**: Designed to be lightweight for easy carrying during outdoor adventures. -- **3-Season**: Suitable for use in spring, summer, and fall seasons. -- **Compact Design**: Folds down to a compact size for convenient storage and transport. -- **Included Stuff Sack**: Comes with a stuff sack for easy packing and carrying. -- **Insulation**: Provides warmth and comfort during sleep. -- **Zipper Closure**: Features a durable zipper closure for easy access and temperature control. -- **Hood**: Equipped with a hood to keep your head warm and protected. -- **Durable Construction**: Made with high-quality materials for long-lasting durability. -- **Versatile**: Suitable for various outdoor activities such as camping, hiking, and backpacking. -- **Comfortable**: Offers a comfortable sleeping experience with ample room and padding. -- **Temperature Rating**: Provides reliable performance within a specific temperature range. - -## Technical Specifications -- **Material**: Polyester -- **Color**: Red -- **Dimensions**: 80 inches x 33 inches (Length x Width) -- **Weight**: 3.5 lbs -- **Temperature Rating**: 3.5/5 -- **Comfort Rating**: 4/5 -- **Season Rating**: 3-season -- **Insulation Type**: Synthetic -- **Shell Material**: Polyester -- **Lining Material**: Polyester -- **Zipper Type**: Full-length zipper -- **Hood**: Yes -- **Draft Collar**: Yes -- **Draft Tube**: Yes -- **Compression Sack**: Yes -- **Pillow Pocket**: Yes -- **Internal Storage Pocket**: Yes -- **Zipper Baffles**: Yes -- **Footbox Design**: Contoured -- **Zipper Compatibility**: Can be zipped together with another sleeping bag - -## CozyNights Sleeping Bag User Guide - -Thank you for choosing the CozyNights Sleeping Bag. This user guide provides instructions on how to use and maintain your sleeping bag effectively. Please read this guide thoroughly before using the sleeping bag. - -### Usage Instructions - -1. Unpack the sleeping bag and lay it flat on a clean surface. -2. Open the zipper completely. -3. Slide into the sleeping bag, ensuring your feet are at the bottom end. -4. Pull the hood over your head to retain warmth if desired. -5. Adjust the zipper as needed to control ventilation and temperature. -6. When not in use, roll the sleeping bag tightly and secure it with the attached straps or use the included stuff sack for compact storage. -7. For cleaning instructions, refer to the maintenance section below. - -### Maintenance - -- Spot cleaning: If the sleeping bag gets dirty, gently spot clean the affected area with mild soap and water. -- Machine washing: If necessary, the sleeping bag can be machine washed in a front-loading machine using a gentle cycle and mild detergent. Follow the manufacturer's instructions for specific care details. -- Drying: Hang the sleeping bag in a well-ventilated area or use a low heat setting in the dryer. Avoid high heat as it may damage the fabric. -- Storage: Store the sleeping bag in a dry and clean place, away from direct sunlight and moisture. Ensure it is completely dry before storing to prevent mold and mildew. - -### Safety Precautions - -- Do not place the sleeping bag near open flames or direct heat sources. -- Avoid sharp objects that may puncture or damage the sleeping bag. -- Do not leave the sleeping bag in damp or wet conditions for an extended period as it may affect its insulation properties. -- Keep the sleeping bag away from pets to prevent potential damage. - -If you have any further questions or need assistance, please contact our customer support using the provided contact information. -We hope you have a comfortable and enjoyable experience with your CozyNights Sleeping Bag! - -## Cautions: -1. Do not machine wash the sleeping bag with harsh detergents or bleach, as it may damage the fabric and insulation. -2. Avoid exposing the sleeping bag to direct sunlight for prolonged periods, as it may cause fading or deterioration of the materials. -3. Do not store the sleeping bag when it is damp or wet, as this can lead to mold and mildew growth. -4. Avoid dragging or dragging the sleeping bag on rough or abrasive surfaces, as it may cause tears or damage to the fabric. -5. Do not place heavy objects on top of the stored sleeping bag, as it may affect its loft and insulation properties. -6. Avoid using sharp objects, such as knives or scissors, near the sleeping bag to prevent accidental punctures. -7. Do not fold or roll the sleeping bag when it is wet, as it may lead to the development of unpleasant odors or bacterial growth. -8. Avoid storing the sleeping bag in a compressed or tightly packed state for extended periods, as it may affect its loft and insulation. - -Following these not-to-do's or cautionary points will help ensure the longevity and performance of your CozyNights Sleeping Bag. - -Certainly! Here is the warranty information for the CozyNights Sleeping Bag: - -**Warranty Duration:** The CozyNights Sleeping Bag is covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as zipper malfunctions, stitching defects, or fabric flaws. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized repairs or modifications, or failure to follow care instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective sleeping bag. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the CozyNights Sleeping Bag. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their sleeping bags within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their sleeping bags within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all sleeping bags purchases but from the same product brand. - -## Reviews -31) **Rating:** 5 - **Review:** The CozyNights Sleeping Bag is perfect for my camping trips. It's lightweight, warm, and the compact design makes it easy to pack. The included stuff sack is a great bonus. Highly recommend! - -32) **Rating:** 4 - **Review:** I bought the CozyNights Sleeping Bag, and while it's warm and lightweight, I wish it had a built-in pillow. Overall, it's a good sleeping bag for camping. - -33) **Rating:** 5 - **Review:** The CozyNights Sleeping Bag is perfect for my camping adventures. It's comfortable, warm, and packs down small, making it easy to carry. I love it! - -34) **Rating:** 4 - **Review:** I like the CozyNights Sleeping Bag, but I wish it came in more colors. The red color is nice, but I would prefer something more unique. Overall, it's a great sleeping bag. - -35) **Rating:** 5 - **Review:** This sleeping bag is a game changer for my camping trips. It's warm, lightweight, and the compact design makes it easy to pack. I'm extremely satisfied with my purchase! - -## FAQ -31) What is the temperature rating of the CozyNights Sleeping Bag? - The CozyNights Sleeping Bag is rated for 3-season use and has a temperature rating of 20�F to 60�F (-6�C to 15�C). - -32) Can the CozyNights Sleeping Bag be zipped together with another sleeping bag to create a double sleeping bag? - Yes, two CozyNights Sleeping Bags can be zipped together to create a double sleeping bag, provided they have compatible zippers. - -33) Does the CozyNights Sleeping Bag have a draft collar or draft tube? - The CozyNights Sleeping Bag features a draft tube along the zipper to help prevent cold air from entering and warm air from escaping. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_8.md b/scenarios/rag/rag-e2e/data/product-info/product_info_8.md deleted file mode 100644 index bf6f25dc..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_8.md +++ /dev/null @@ -1,195 +0,0 @@ -# Information about product item_number: 8 -Alpine Explorer Tent, price $350, - -## Brand -AlpineGear - -## Category -Tents - -### Features -- Waterproof: Provides reliable protection against rain and moisture. -- Easy Setup: Simple and quick assembly process, making it convenient for camping. -- Room Divider: Includes a detachable divider to create separate living spaces within the tent. -- Excellent Ventilation: Multiple mesh windows and vents promote airflow and reduce condensation. -- Gear Loft: Built-in gear loft or storage pockets for organizing and storing camping gear. - -## Technical Specs -**Best Use**: Camping -**Capacity**: 8-person -**Season Rating**: 3-season -**Setup**: Freestanding -**Material**: Polyester -**Waterproof**: Yes -**Floor Area**: 120 square feet -**Peak Height**: 6.5 feet -**Number of Doors**: 2 -**Color**: Orange -**Rainfly**: Included -**Rainfly Waterproof Rating**: 3000mm -**Tent Poles**: Aluminum -**Pole Diameter**: 12mm -**Ventilation**: Mesh panels and adjustable vents -**Interior Pockets**: 4 pockets -**Gear Loft**: Included -**Footprint**: Sold separately -**Guy Lines**: Reflective -**Stakes**: Aluminum -**Carry Bag**: Included -**Dimensions**: 12ft x 10ft x 7ft (Length x Width x Peak Height) -**Packed Size**: 24 inches x 10 inches -**Weight**: 17 lbs - -## Alpine Explorer Tent User Guide - -Thank you for choosing the Alpine Explorer Tent. This user guide provides instructions on how to set up, use, and maintain your tent effectively. Please read this guide thoroughly before using the tent. - -### Package Contents - -Ensure that the package includes the following components: - -- Alpine Explorer Tent body -- Tent poles -- Rainfly -- Stakes and guy lines -- Carry bag -- User Guide - -If any components are missing or damaged, please contact our customer support immediately. - -### Tent Setup - -**Step 1: Selecting a Suitable Location** - -- Find a level and clear area for pitching the tent. -- Remove any sharp objects or debris that could damage the tent floor. - -**Step 2: Unpacking and Organizing Components** - -- Lay out all the tent components on the ground. -- Familiarize yourself with each part, including the tent body, poles, rainfly, stakes, and guy lines. - -**Step 3: Assembling the Tent Poles** - -- Connect the tent poles according to their designated color codes or numbering. -- Slide the connected poles through the pole sleeves or attach them to the tent body clips. - -**Step 4: Setting up the Tent Body** - -- Begin at one end and raise the tent body by pushing up the poles. -- Ensure that the tent body is evenly stretched and centered. -- Secure the tent body to the ground using stakes and guy lines as needed. - -**Step 5: Attaching the Rainfly** - -- Spread the rainfly over the tent body. -- Attach the rainfly to the tent corners and secure it with the provided buckles or clips. -- Adjust the tension of the rainfly to ensure proper airflow and weather protection. - -**Step 6: Securing the Tent** - -- Stake down the tent corners and guy out the guy lines for additional stability. -- Adjust the tension of the guy lines to provide optimal stability and wind resistance. - -### Tent Takedown and Storage - -**Step 1: Removing Stakes and Guy Lines** - -- Remove all stakes from the ground. -- Untie or disconnect the guy lines from the tent and store them separately. - -**Step 2: Taking Down the Tent Body** - -- Start by collapsing the tent poles carefully. -- Remove the poles from the pole sleeves or clips. -- Collapse the tent body and fold it neatly. - -**Step 3: Disassembling the Tent Poles** - -- Disconnect and separate the individual pole sections. -- Store the poles in their designated bag or sleeve. - -**Step 4: Packing the Tent** - -- Fold the tent body tightly and place it in the carry bag. -- Ensure that the rainfly and any other components are also packed securely. - -### Tent Care and Maintenance - -- Clean the tent regularly with mild soap and water. -- Avoid using harsh chemicals or abrasive cleaners. -- Allow the tent to dry completely before storing it. -- Store the tent in a cool, dry place away from direct sunlight. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@alpineexplorer.com - -We hope you enjoy your Alpine Explorer Tent and have a great outdoor experience! - -## Cautions: -1. **Stable Setup**: Ensure the tent is pitched on level ground and avoid uneven or sloping terrain to maintain stability. -2. **Safe Location**: Choose a safe and secure location away from hazardous areas like cliffs, rivers, or flood-prone zones. -3. **Windproof**: Do not leave the tent unattended during strong winds or severe weather conditions; properly secure all guy lines and stakes for added stability. -4. **Flame-Free**: Never use open flames or heating equipment inside the tent to prevent fire hazards and damage to the tent material. -5. **Gentle Glide**: Avoid dragging or pulling the tent body on rough surfaces to prevent tears or abrasions; lift and move the tent with care. -6. **Dry and Mold-Free**: Ensure the tent is completely dry before storing to prevent mold and mildew growth; avoid packing a damp or wet tent. -7. **Sunshine Protection**: Avoid storing the tent in direct sunlight for extended periods to prevent UV damage to the fabric; find a cool and shaded storage area. -8. **Capacity Check**: Do not exceed the tent's recommended weight capacity to maintain its structural integrity and prevent potential damage. -9. **Sharp Object Safety**: Keep sharp objects and tools away from the tent to avoid punctures or fabric damage; handle the tent and its components with care. -10. **Original Structure**: Do not modify or alter the tent structure or components, as it may compromise the tent's performance and void the warranty. -By following these cautionary guidelines, you can ensure safe and optimal use of the Alpine Explorer Tent. - -## Warranty Information: - -- **Warranty Duration:** The Alpine Explorer Tent is covered by a 2-year limited warranty from the date of purchase. -- **Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship, including issues such as seam separation, zipper malfunction, or fabric defects. -- **Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. -- **Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. -- **Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. -- **Limitations:** The warranty is non-transferable and applies only to the original purchaser of the Alpine Explorer Tent. It is valid only when the product is purchased from an authorized retailer. -- **Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. Kindly note that the warranty information provided here is for reference purposes. For the most accurate and up-to-date warranty details, please refer to the warranty card included with your Alpine Explorer Tent. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -36) **Rating:** 5 - **Review:** The Alpine Explorer Tent is amazing! It's easy to set up, has excellent ventilation, and the room divider is a great feature for added privacy. Highly recommend it for family camping trips! - -37) **Rating:** 4 - **Review:** I bought the Alpine Explorer Tent, and while it's waterproof and spacious, I wish it had more storage pockets. Overall, it's a good tent for camping. - -38) **Rating:** 5 - **Review:** The Alpine Explorer Tent is perfect for my family's camping adventures. It's easy to set up, has great ventilation, and the gear loft is an excellent addition. Love it! - -39) **Rating:** 4 - **Review:** I like the Alpine Explorer Tent, but I wish it came with a footprint. It's comfortable and has many useful features, but a footprint would make it even better. Overall, it's a great tent. - -40) **Rating:** 5 - **Review:** This tent is perfect for our family camping trips. It's spacious, easy to set up, and the room divider is a great feature for added privacy. The gear loft is a nice bonus for extra storage. - -## FAQ -34) How easy is it to set up the Alpine Explorer Tent? - The Alpine Explorer Tent features a quick and easy setup, thanks to color-coded poles and intuitive design. Most users can set it up in just a few minutes. - -35) Can the Alpine Explorer Tent accommodate two queen-sized air mattresses? - Yes, the Alpine Explorer Tent is spacious enough to accommodate two queen-sized air mattresses, making it an ideal choice for comfortable family camping. - -36) What is the purpose of the room divider in the Alpine Explorer Tent? - The room divider in the Alpine Explorer Tent allows you to create separate sleeping and living spaces, providing privacy and organization for your camping experience. - -37) How does the gear loft in the Alpine Explorer Tent work? - The gear loft in the Alpine Explorer Tent is a suspended mesh shelf that provides additional storage space for small items, keeping them organized and easily accessible. - -38) Can the Alpine Explorer Tent be used in snowy conditions? - The Alpine Explorer Tent is designed primarily for three-season use. While it can withstand light snowfall, it may not provide adequate structural support and insulation during heavy snow or extreme winter conditions. diff --git a/scenarios/rag/rag-e2e/data/product-info/product_info_9.md b/scenarios/rag/rag-e2e/data/product-info/product_info_9.md deleted file mode 100644 index 4ccfef28..00000000 --- a/scenarios/rag/rag-e2e/data/product-info/product_info_9.md +++ /dev/null @@ -1,207 +0,0 @@ -# Information about product item_number: 9 -SummitClimber Backpack, price $120, - -## Brand -HikeMate - -## Category -Backpacks - -## Features -- **Capacity**: 60 liters -- **Material**: Nylon -- **Color**: Grey -- **Dimensions**: 28 inches x 16 inches x 10 inches (Length x Width x Depth) -- **Weight**: 3 lbs -- Ergonomic design for comfortable carrying during hikes and outdoor adventures. -- Adjustable hip belt for personalized fit and weight distribution. -- Integrated rain cover to protect the backpack and its contents from rain and moisture. -- Compression straps for securing and stabilizing the load. -- Multiple compartments and pockets for organized storage and easy access to items. -- Padded shoulder straps and back panel for enhanced comfort and support. -- Sternum strap for added stability during active movement. -- Hydration system compatibility for convenient on-the-go hydration. -- Durable construction to withstand rugged outdoor conditions. -- Reflective accents for increased visibility in low-light conditions. -These features make the SummitClimber Backpack a reliable and versatile choice for backpacking and outdoor activities. - -## Technical Specifications -- **Material**: Nylon -- **Color**: Grey -- **Dimensions**: 28 inches x 16 inches x 10 inches (Length x Width x Depth) -- **Weight**: 3 lbs -- **Capacity**: 60 liters -- **Hip Belt**: Adjustable -- **Rain Cover**: Integrated -- **Compression Straps**: Yes -- **Hydration System Compatibility**: Yes -- **Number of Compartments**: Multiple -- **Back Panel**: Padded -- **Reflective Accents**: Yes -- **Ergonomic Design**: Designed for optimal comfort and weight distribution -- **Adjustable Hip Belt**: Allows for personalized fit and support -- **Integrated Rain Cover**: Provides protection against rain and moisture -- **Compression Straps**: Allows for adjusting the volume and securing the load -- **Back Panel Ventilation**: Enhances breathability and airflow -- **Multiple Compartments and Pockets**: Provides organized storage for gear and essentials -- **Hydration System Compatibility**: Compatible with hydration reservoirs for convenient on-the-go hydration -- **Load Stabilizer Straps**: Helps distribute weight evenly and stabilize the load -- **Durable Construction**: Made from high-quality nylon material for long-lasting durability -- **Reinforced Stitching**: Ensures strong and reliable construction -- **YKK Zippers**: Reliable and smooth-operating zippers -- **Adjustable Sternum Strap**: Enhances stability and load distribution -- **Attachment Points**: Offers options for attaching additional gear or accessories -- **Reflective Accents**: Provides visibility in low-light conditions for added safety - -These technical specifications highlight various features and attributes of the SummitClimber Backpack, providing valuable information to potential customers. - - -## SummitClimber Backpack User Manual - -Thank you for choosing the SummitClimber Backpack. This user manual provides instructions on how to use and maintain your backpack effectively. Please read this guide thoroughly before using the backpack. - -### 1. Introduction - -The SummitClimber Backpack is designed to provide you with a comfortable and versatile solution for your hiking and outdoor adventures. This user manual will guide you through the setup and usage of your backpack. - -### 2. Package Contents - -Ensure that the package includes the following components: - -- SummitClimber Backpack -- Integrated Rain Cover -- User Manual - -If any components are missing or damaged, please contact our customer support immediately. - -### 3. Backpack Overview - -The SummitClimber Backpack features a durable nylon construction with ample storage space and ergonomic design elements for maximum comfort. Familiarize yourself with the various parts and features of the backpack: - -- Main compartment with drawstring closure -- Front zipper pocket -- Side mesh pockets -- Adjustable shoulder straps -- Adjustable hip belt with integrated pockets -- Sternum strap -- Compression straps -- Integrated rain cover - -### 4. Adjusting the Straps - -Properly adjusting the straps ensures a comfortable fit and proper weight distribution. Follow these steps to adjust the straps: - -**Shoulder Straps:** - -1. Put on the backpack and adjust the shoulder straps so that they rest comfortably on your shoulders. -2. Tighten or loosen the straps as needed to achieve a snug fit. - -**Hip Belt:** - -1. Secure the hip belt around your hips and adjust it for a comfortable fit. -2. The belt should sit on your hips, distributing the weight of the backpack. - -**Sternum Strap:** - -1. Connect the sternum strap across your chest and adjust the height to your preference. -2. The strap helps stabilize the backpack and prevent shoulder strap slippage. - -### 5. Packing and Organization - -The SummitClimber Backpack offers multiple compartments and pockets for efficient packing and organization. Here are some tips for packing your backpack: - -- Main Compartment: - - Use the main compartment for larger items such as clothing, sleeping bags, or food. - - Pack heavier items closer to your back for better weight distribution. - -- Front Pocket and Side Pockets: - - Utilize the front zipper pocket and side mesh pockets for quick access to smaller essentials like snacks, maps, or water bottles. - -- Compression Straps: - - Use the compression straps to secure and stabilize the contents of your backpack. - -### 6. Backpack Care and Maintenance - -To ensure the longevity and performance of your SummitClimber Backpack, follow these care and maintenance guidelines: - -- Clean the backpack regularly with mild soap and water. -- Avoid using harsh chemicals or abrasive cleaners. -- Allow the backpack to air dry completely before storing. -- Store the backpack in a cool, dry place away from direct sunlight. - -### 7. Warranty Information - -The SummitClimber Backpack comes with a limited warranty. Please refer to the warranty card included in the package for more information. - -### 8. Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-555-123-4567 -- Customer Support Email: support@summitclimber.com - -We hope you enjoy your SummitClimber Backpack and have a great outdoor experience! - -## Caution: -1. **Overloading**: Avoid overloading the backpack beyond its recommended weight capacity. Overloading can strain the backpack's construction and compromise your comfort and safety. - -2. **Improper Adjustments**: Do not neglect adjusting the shoulder straps, hip belt, and sternum strap properly. Improper adjustments can lead to discomfort, pain, and an unstable carrying experience. - -3. **Sharp Objects**: Avoid placing sharp objects directly inside the main compartment or side pockets without proper protection. Sharp objects can potentially puncture or damage the backpack. - -4. **Improper Storage**: Do not store the backpack in damp or wet conditions. Moisture can cause mold, mildew, and damage to the backpack's material. - -5. **Neglecting Rain Cover**: When hiking in wet weather or encountering rain, always remember to use the integrated rain cover to protect the contents of your backpack. Neglecting to use the rain cover may result in water damage to your belongings. - -6. **Incorrect Cleaning Methods**: Avoid using harsh chemicals, bleach, or abrasive cleaners when cleaning the backpack. Stick to mild soap and water for regular cleaning, and allow the backpack to air dry completely before storing. - -7. **Neglecting Maintenance**: Regularly inspect and maintain the backpack's straps, zippers, and overall condition. Address any issues promptly to prevent further damage or discomfort. - -8. **Unauthorized Modifications**: Do not make any unauthorized modifications or alterations to the backpack. Modifying the backpack can compromise its integrity, safety features, and warranty coverage. - -9. **Neglecting Weight Distribution**: Ensure proper weight distribution by packing heavier items closer to your back and lighter items towards the outside of the backpack. Neglecting weight distribution can lead to an unbalanced and uncomfortable carrying experience. - -10. **Rough Handling**: Avoid excessive rough handling, dragging, or throwing of the backpack. Treat it with care to maintain its durability and longevity. -Remember to use the SummitClimber Backpack responsibly and follow these cautions to ensure a safe and enjoyable outdoor experience. - -## Warranty Information: - -Thank you for choosing the SummitClimber Backpack. The backpack is covered by a limited warranty to ensure your satisfaction with the product. Please review the following warranty information: - -- **Warranty Duration**: The SummitClimber Backpack is covered by a 2-year limited warranty from the date of purchase. - -- **Warranty Coverage**: The warranty covers manufacturing defects in materials and workmanship. It includes issues such as faulty stitching, zipper malfunction, or defects in the backpack's construction. - -- **Exclusions**: The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -- **Warranty Claim Process**: In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -- **Warranty Remedies**: Depending on the nature of the warranty claim, we will either repair or replace the defective backpack. If the exact model is no longer available, we may offer a comparable replacement at our discretion. - -- **Limitations**: The warranty is non-transferable and applies only to the original purchaser of the SummitClimber Backpack. It is valid only when the product is purchased from an authorized retailer. - -- **Legal Rights**: This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. Please retain your proof of purchase as it will be required to verify warranty eligibility.We strive to provide you with a reliable and durable backpack, and we stand behind the quality of our product. Enjoy your outdoor adventures with confidence knowing that your SummitClimber Backpack is backed by our warranty. - -## Return Policy -- **If Membership status "None":** Returns are accepted within 30 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -## FAQ -39) Can the SummitClimber Backpack fit a 17-inch laptop? - Yes, the SummitClimber Backpack has a dedicated laptop compartment that can accommodate laptops up to 17 inches, perfect for those who need to stay connected on their adventures. - -40) Is the SummitClimber Backpack hydration bladder compatible? - Yes, the SummitClimber Backpack is designed with a hydration sleeve and tube port, making it compatible with most hydration bladders for convenient on-the-go hydration. - -41) What is the purpose of the integrated rain cover in the SummitClimber Backpack? - The integrated rain cover in the SummitClimber Backpack provides additional protection against rain and moisture, ensuring your belongings stay dry during your outdoor adventures. - -42) How do the compression straps on the SummitClimber Backpack work? - The compression straps on the SummitClimber Backpack help to stabilize and secure your load by cinching down the contents, improving balance and reducing stress on your back. - -43) Can the SummitClimber Backpack be used as carry-on luggage on a flight? - The SummitClimber Backpack's dimensions (28in x 16in x 10in) may exceed the carry-on size limits for some airlines. We recommend checking with your airline for their specific carry-on requirements before traveling. diff --git a/scenarios/rag/rag-e2e/rag-qna.ipynb b/scenarios/rag/rag-e2e/rag-qna.ipynb deleted file mode 100644 index bbec0f4e..00000000 --- a/scenarios/rag/rag-e2e/rag-qna.ipynb +++ /dev/null @@ -1,425 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Retrieval Augmented Generation (RAG) using Azure AI SDK" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Objective\n", - "\n", - "This notebook demonstrates the following:\n", - "\n", - "- Create an index on Azure Cognitive search or FAISS from your local files\n", - "- Use the index in a chatbot built using Azure OpenAI and Langchain\n", - "\n", - "This tutorial uses the following Azure AI services:\n", - "\n", - "- Access to Azure OpenAI Service - you can apply for access [here](https://go.microsoft.com/fwlink/?linkid=2222006)\n", - "- Azure Cognitive Search service - you can create it from instructions [here](https://learn.microsoft.com/azure/search/search-create-service-portal)\n", - "- An Azure AI Studio project - go to [aka.ms/azureaistudio](https://aka.ms/azureaistudio) to create a project\n", - "- A connection to the Azure Cognitive Service in your project" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Time\n", - "\n", - "You should expect to spend 10-20 minutes running this sample. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## About this example\n", - "\n", - "This sample shows how to create an index and consume it to answer questions based on your data (aka RAG pattern). It demonstrates how to create an index from local files and folders, how to store that index in Azure Cognitive Search or in [FAISS](https://ai.meta.com/tools/faiss). The index gets created locally and can then be registered to your AI Studio project. Once registered, it can be retrieved and consumed to answer questions. The sample shows how to build a simple QnA script to answer questions.\n", - "\n", - "This sample is useful for developers and data scientists who wish to use their data with LLMs to build QnA bots, co-pilots. Basically anyone interested in using the RAG pattern." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Data\n", - "\n", - "This sample uses files from the folder [`data/product-info/`](./data/product-info) in this repo. You can clone this repo or copy this folder to make sure you have access to these files when running the sample." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Before you begin" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Installation\n", - "\n", - "Install the following packages required to execute this notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Install the packages\n", - "%pip install azure-identity \"azure-ai-generative[faiss,index]\" azure-search-documents azure-ai-resources \"langchain<0.0.351\" \"openai<2\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Parameters\n", - "\n", - "Lets initialize some variables. For `subscription_id`, `resource_group_name` and `project_name`, you can go to the Project Overview page in the AI Studio. Replace the items in <> with values for your project." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# project details\n", - "subscription_id: str = \"\"\n", - "resource_group_name: str = \"\"\n", - "project_name: str = \"\"\n", - "\n", - "# Azure Cognitive Search Connection\n", - "acs_connection_name: str = \"\"\n", - "\n", - "# models used for embedding and deployment\n", - "embedding_model_deployment: str = \"text-embedding-ada-002\"\n", - "chat_model_deployment: str = \"gpt-35-turbo\"\n", - "\n", - "should_cleanup: bool = False" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Connect to your project\n", - "\n", - "To start with let us create a config file with your project details. This file can be used in this sample or other samples to connect to your workspace. To get the required details, you can go to the Project Overview page in the AI Studio. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "from pathlib import Path\n", - "\n", - "config = {\n", - " \"subscription_id\": subscription_id,\n", - " \"resource_group\": resource_group_name,\n", - " \"project_name\": project_name,\n", - "}\n", - "\n", - "p = Path(\"config.json\")\n", - "\n", - "with p.open(mode=\"w\") as file:\n", - " file.write(json.dumps(config))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us connect to the project" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.client import AIClient\n", - "from azure.identity import DefaultAzureCredential\n", - "\n", - "# connects to project defined in the first config.json found in this or parent folders\n", - "client = AIClient.from_config(DefaultAzureCredential())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Retrieve Azure OpenAI and Cognitive Services Connections\n", - "We will use an Azure Open AI service to access the LLM and embedding model. We will also use an Azure Cognitive Search to store the index. Let us get the details of these from your project." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get the default Azure Open AI connection for your project\n", - "default_aoai_connection = client.get_default_aoai_connection()\n", - "default_aoai_connection.set_current_environment()\n", - "\n", - "# Get the Azure Cognitive Search connection by name\n", - "default_acs_connection = client.connections.get(acs_connection_name)\n", - "default_acs_connection.set_current_environment()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Build an Index locally\n", - "We will use files from the data directory and build an index. The index will be created on the machine where this sample is run.\n", - "\n", - "You can index files of type `.md, .txt, .html, .htm, .py, .doc, .docx, .ppt, .pptx, .pdf, .xls, .xlsx`. All other file types will be ignored." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Build an Azure Cognitive Search Index\n", - "Let us create an Azure Cognitive Search Index. The below step will chunk and embed your documents locally and then add it to an index in the Azure Cognitive Search Service." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import LocalSource, ACSOutputConfig\n", - "from azure.ai.generative.index import build_index\n", - "\n", - "index_name = \"product-info-acs-index\"\n", - "# build the index\n", - "acs_index = build_index(\n", - " output_index_name=index_name, # name of your index\n", - " vector_store=\"azure_cognitive_search\", # the type of vector store - in our case it is ACS\n", - " # we are using ada 002 for embedding\n", - " embeddings_model=f\"azure_open_ai://deployment/{embedding_model_deployment}/model/text-embedding-ada-002\",\n", - " index_input_config=LocalSource(input_data=\"data/product-info/\"), # the location of your file/folders\n", - " acs_config=ACSOutputConfig(\n", - " acs_index_name=index_name + \"-store\", # the name of the index store inside the azure cognitive search service\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Build a FAISS Index\n", - "The same index can also be created on FAISS. The below step will chunk and embed your documents locally and then add it a FAISS index which is a file based index stored on your local machine." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import LocalSource\n", - "from azure.ai.generative.index import build_index\n", - "\n", - "faiss_index_name = \"product-info-faiss-index\"\n", - "# build the index\n", - "faiss_index = build_index(\n", - " output_index_name=faiss_index_name, # name of your index\n", - " vector_store=\"faiss\", # the type of vector store - in our case it is ACS\n", - " # we are using ada 002 for embedding\n", - " embeddings_model=f\"azure_open_ai://deployment/{embedding_model_deployment}/model/text-embedding-ada-002\",\n", - " index_input_config=LocalSource(input_data=\"data/product-info/\"), # the location of your file/folders\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register the index\n", - "Register the index so that it shows up in the AI Studio Project. \n", - "\n", - "In the below step we will register the Azure Cognitive Search Index which we created, but the same method can be used to register a FAISS index as well." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "client.indexes.create_or_update(acs_index)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Consuming the index\n", - "To consume an Index, you need to retrieve it from the project. You can then use langchain to query the index. In this sample, we will use the Azure Cognitive Search Index which we created, but the same can be applied to any index in your project.\n", - "\n", - "### Retrieve the index from your project as a langchain retriever\n", - "Let us get the index from your project as a langchain retriever. We will use the langchain retriever to build a chat function" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.generative.index import get_langchain_retriever_from_index\n", - "\n", - "# retrieve ML Index from your project\n", - "index_name = \"product-info-acs-index\"\n", - "# this function needs a path. Convert index name to path by adding -mlindex at the end\n", - "index_langchain_retriever = get_langchain_retriever_from_index(index_name + \"-mlindex\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Build a QnA function\n", - "We will build a QnA function which accepts a user question and provides an answer from the index data.\n", - "This function uses the LLM as defined in the `AzureChatOpenAI` constructor. It uses the index as a langchain_retriever to query the data. We build a prompt Template which accepts a context and a question. We use langchain's `RetrievalQA.from_chain_type` to put all these together and get us the answers." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def qna(question: str, temperature: float = 0.0, prompt_template: object = None) -> str:\n", - " from langchain import PromptTemplate\n", - " from langchain.chains import RetrievalQA\n", - " from langchain.chat_models import AzureChatOpenAI\n", - "\n", - " llm = AzureChatOpenAI(\n", - " deployment_name=chat_model_deployment,\n", - " model_name=chat_model_deployment,\n", - " temperature=temperature,\n", - " )\n", - "\n", - " template = \"\"\"\n", - " System:\n", - " You are an AI assistant helping users with queries related to outdoor outdoor/camping gear and clothing.\n", - " Use the following pieces of context to answer the questions about outdoor/camping gear and clothing as completely, \n", - " correctly, and concisely as possible.\n", - " If the question is not related to outdoor/camping gear and clothing, just say Sorry, I only can answer question \n", - " related to outdoor/camping gear and clothing. So how can I help? Don't try to make up an answer.\n", - " If the question is related to outdoor/camping gear and clothing but vague ask for clarifying questions.\n", - " Do not add documentation reference in the response.\n", - "\n", - " {context}\n", - "\n", - " ---\n", - "\n", - " Question: {question}\n", - "\n", - " Answer:\"\n", - " \"\"\"\n", - " prompt_template = PromptTemplate(template=template, input_variables=[\"context\", \"question\"])\n", - "\n", - " qa = RetrievalQA.from_chain_type(\n", - " llm=llm,\n", - " chain_type=\"stuff\",\n", - " retriever=index_langchain_retriever,\n", - " return_source_documents=True,\n", - " chain_type_kwargs={\n", - " \"prompt\": prompt_template,\n", - " },\n", - " )\n", - "\n", - " response = qa(question)\n", - "\n", - " return {\n", - " \"question\": response[\"query\"],\n", - " \"answer\": response[\"result\"],\n", - " \"context\": \"\\n\\n\".join([doc.page_content for doc in response[\"source_documents\"]]),\n", - " }" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us ask a question to make sure we get an answer." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "result = qna(\"Which tent has the highest rainfly waterproof rating?\")\n", - "print(result[\"answer\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cleaning up\n", - "\n", - "To clean up all Azure ML resources used in this example, you can delete the individual resources you created in this tutorial.\n", - "\n", - "If you made a resource group specifically to run this example, you could instead [delete the resource group](https://learn.microsoft.com/azure/azure-resource-manager/management/delete-resource-group)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if should_cleanup:\n", - " # add cleanup steps if needed\n", - " pass" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "aigensdk_dev", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/scenarios/rag/rag-index-creation/README.md b/scenarios/rag/rag-index-creation/README.md deleted file mode 100644 index c6b43ed0..00000000 --- a/scenarios/rag/rag-index-creation/README.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -page_type: sample -languages: -- python -products: -- ai-services -- azure-openai -description: Create an index from various sources like local files, git repo, and remote sources like S3, OneLake and add it to an Azure Cognitive Search Index. ---- - -## Create Index from various sources - -### Overview - -This sample shows how to create an index from different sources like local files and remote sources like a git repo and cloud storage URLs. It adds an index to an Azure Cognitive Search Index. - -This sample is useful for developers and data scientists who wish to use their data to create an Index which can be used in the RAG pattern. - -### Objective - -The main objective of this tutorial is to help users understand the process of creating an index from a variety of data sources. By the end of this tutorial, you should be able to: - -- Create an index from - - Your local files/folders - - Git Repo - - Remote sources like S3, OneLake - -### Programming Languages - -- Python - -### Estimated Runtime: 30 mins diff --git a/scenarios/rag/rag-index-creation/create-index-from-various-sources.ipynb b/scenarios/rag/rag-index-creation/create-index-from-various-sources.ipynb deleted file mode 100644 index ef36ec7a..00000000 --- a/scenarios/rag/rag-index-creation/create-index-from-various-sources.ipynb +++ /dev/null @@ -1,684 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Create Index from various sources" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Objective\n", - "\n", - "This notebook demonstrates the following:\n", - "\n", - "- Create an index from\n", - " - Your local files/folders\n", - " - Git Repo\n", - " - Remote sources like S3, OneLake\n", - "\n", - "This tutorial uses the following Azure AI services:\n", - "\n", - "- Access to Azure OpenAI Service - you can apply for access [here](https://go.microsoft.com/fwlink/?linkid=2222006)\n", - "- Azure Cognitive Search service - you can create it from instructions [here](https://learn.microsoft.com/azure/search/search-create-service-portal)\n", - "- An Azure AI Studio project - go to [aka.ms/azureaistudio](https://aka.ms/azureaistudio) to create a project\n", - "- A connection to the Azure Cognitive Service in your project\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Time\n", - "\n", - "You should expect to spend 15-30 minutes running this sample." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## About this example\n", - "\n", - "This sample shows how to create an index from different sources like local files and remote sources like a git repo and cloud storage URLs. It adds an index to an Azure Cognitive Search Index.\n", - "\n", - "This sample is useful for developers and data scientists who wish to use their data to create an Index which can be used in the RAG pattern." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Data\n", - "\n", - "For this sample we will use data from the blob https://azuremlexamples.blob.core.windows.net/datasets/product-info/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Before you begin\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Installation\n", - "\n", - "Install the following packages required to execute this notebook. \n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Install the packages\n", - "%pip install azure-identity \"azure-ai-generative[index]\" azure-ai-resources \"openai<2\" \"langchain<0.0.351\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# project details\n", - "subscription_id: str = \"\"\n", - "resource_group_name: str = \"\"\n", - "project_name: str = \"\"\n", - "\n", - "# Azure Cognitive Search Connection\n", - "acs_connection_name: str = \"\"\n", - "\n", - "# model used for embedding\n", - "embedding_model_deployment: str = \"text-embedding-ada-002\"\n", - "\n", - "# names of indexes we will create\n", - "local_index_local_files_index_name = \"local-index-local-files-index\"\n", - "cloud_index_git_index_name = \"cloud-index-git-index\"\n", - "cloud_index_remote_url_index_name = \"cloud-index-remote-url-index\"\n", - "cloud_index_local_files_index_name = \"cloud-index-local_files-index\"\n", - "\n", - "should_cleanup: bool = False" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Connect to your project\n", - "\n", - "To start with let us create a config file with your project details. This file can be used in this sample or other samples to connect to your workspace. To get the required details, you can go to the Project Overview page in the AI Studio. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import json\n", - "from pathlib import Path\n", - "\n", - "config = {\n", - " \"subscription_id\": subscription_id,\n", - " \"resource_group\": resource_group_name,\n", - " \"project_name\": project_name,\n", - "}\n", - "\n", - "p = Path(\"config.json\")\n", - "\n", - "with p.open(mode=\"w\") as file:\n", - " file.write(json.dumps(config))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let us connect to the project" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.client import AIClient\n", - "from azure.identity import DefaultAzureCredential\n", - "\n", - "# connects to project defined in the first config.json found in this or parent folders\n", - "client = AIClient.from_config(DefaultAzureCredential())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Retrieve Azure OpenAI and Cognitive Services Connections\n", - "We will use an Azure Open AI service to access the LLM and embedding model. We will also use an Azure Cognitive Search to store the index. Let us get the details of these from your project." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Get the default Azure Open AI connection for your project\n", - "default_aoai_connection = client.get_default_aoai_connection()\n", - "default_aoai_connection.set_current_environment()\n", - "\n", - "# Get the Azure Cognitive Search connection by name\n", - "default_acs_connection = client.connections.get(acs_connection_name)\n", - "default_acs_connection.set_current_environment()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. Build an Index locally from local files or folders\n", - "\n", - "You can build an index from your local files or folders. We will build an index using the `build_index` function. This will create an index on the machine where this sample is run. The local index can then be added/registered to your AI Studio project.\n", - "\n", - "You can index files of type `.md, .txt, .html, .htm, .py, .doc, .docx, .ppt, .pptx, .pdf, .xls, .xlsx`. All other file types will be ignored." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "> In this notebook, we will use Azure Cognitive Search (ACS) as the index store for all our scenarios. You could also use FAISS/Pinecone for index store." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.1 Build the Index locally\n", - "The below step will chunk and embed your documents locally and then add it to an index in the Azure Cognitive Search Service. " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import LocalSource, ACSOutputConfig\n", - "from azure.ai.generative.index import build_index\n", - "\n", - "# build the index\n", - "acs_index = build_index(\n", - " output_index_name=local_index_local_files_index_name, # name of your index\n", - " vector_store=\"azure_cognitive_search\", # the type of vector store - in our case it is ACS\n", - " # we are using ada 002 for embedding\n", - " embeddings_model=f\"azure_open_ai://deployment/{embedding_model_deployment}/model/text-embedding-ada-002\",\n", - " index_input_config=LocalSource(input_data=\"data/product-info/\"), # the location of your file/folders\n", - " acs_config=ACSOutputConfig(\n", - " acs_index_name=local_index_local_files_index_name\n", - " + \"-store\", # the name of the index store inside the azure cognitive search service\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.2 Register the index\n", - "Register the index so that it shows up in the AI Studio Project." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "client.indexes.create_or_update(acs_index)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Question and Answer Function\n", - "\n", - "Let us create a question and answer function which will take in a `question`, `index name` and an optional parameter for `model name`. This will then query the index and give back an answer using the model specified. This function can be used to query any index we have created in the AI Studio." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def qna(question: str, index_name: str, model_name: str = \"gpt-35-turbo\") -> str:\n", - " from langchain.chains import RetrievalQA\n", - " from langchain.chat_models import AzureChatOpenAI\n", - " from azure.ai.generative.index import get_langchain_retriever_from_index\n", - "\n", - " # Get the Index\n", - " index_langchain_retriever = get_langchain_retriever_from_index(\n", - " client.indexes.get(name=index_name, label=\"latest\").path\n", - " )\n", - "\n", - " # Get the LLM\n", - " llm = AzureChatOpenAI(\n", - " deployment_name=model_name,\n", - " model_name=model_name,\n", - " temperature=0.0,\n", - " )\n", - "\n", - " qa = RetrievalQA.from_chain_type(llm=llm, chain_type=\"stuff\", retriever=index_langchain_retriever)\n", - "\n", - " return qa.run(question)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 1.3 Consume the Index\n", - "Let us use the qna function to consume the index created in step 1.2" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(qna(question=\"how do i take care of my tent\", index_name=local_index_local_files_index_name))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. Build an index on the Cloud\n", - "\n", - "You can build an index directly on the cloud (your AI Studio project) from local files or folders as well as remote sources like a Git Repo, [OneLake](https://learn.microsoft.com/fabric/onelake/onelake-overview), [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide), generic cloud URLs.\n", - "\n", - "In this section we will use the `build_index_on_cloud` function. This function will create an index directly in your AI Studio project by running a job to perform the required steps directly in your project.\n", - "\n", - "> In this notebook, we will use Azure Cognitive Search (ACS) as the index store for all our scenarios. You could also use FAISS/Pinecone for index store." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.1 Build an index on cloud from a git repo\n", - "\n", - "Let us build an index from the rust github repository." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.1.1 Configure the source\n", - "\n", - "Let us configure the git repo from where we will get the data. In this case we are using a public repo. If you need to use a private repo, you could add **New Connection** of type `Git` in the AI Studio and use that name for `git_connection_id`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import GitSource\n", - "\n", - "git_config = GitSource(git_url=\"https://github.com/rust-lang/book.git\", git_branch_name=\"main\", git_connection_id=\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.1.2 Configure the index store\n", - "\n", - "Let us configure index name and connection to Azure Cognitive Search" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import ACSOutputConfig\n", - "\n", - "index_output_config = ACSOutputConfig(\n", - " acs_index_name=cloud_index_git_index_name\n", - " + \"-store\", # the name of the index store inside the azure cognitive search service\n", - " acs_connection_id=default_acs_connection.id,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.1.3 Build the index\n", - "\n", - "We will use the `build_index_on_cloud` function. This function will create an index directly in your AI Studio project by running a job to perform the required steps directly in your project. The output of this cell will provide a link to the job which will create the index. Click on the link to track status. You need to wait for the job to complete before using the index." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "client.build_index_on_cloud(\n", - " output_index_name=cloud_index_git_index_name,\n", - " vector_store=\"azure_cognitive_search\",\n", - " embeddings_model=\"text-embedding-ada-002\",\n", - " aoai_connection_id=default_aoai_connection.id,\n", - " data_source_url=\"https://github.com/rust-lang/book/blob/main\",\n", - " input_source=git_config,\n", - " acs_config=index_output_config,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.1.4 Consume the Index\n", - "Let us use the qna function to consume the index created" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(qna(question=\"What makes Rust Enums so awesome?\", index_name=cloud_index_git_index_name))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.2 Build an index on cloud from storage URLs\n", - "\n", - "Let us build an index from storage URLs (cloud locations). You can build an index from the following types of storage locations:\n", - "\n", - "|Location|URL Examples|\n", - "|--|--|\n", - "|Blob|wasb[s]://@.blob.core.windows.net/|\n", - "|OneLake (Lakehouse)|abfss://@onelake.dfs.fabric.microsoft.com/.Lakehouse/Files/|\n", - "|OneLake (Warehouse)|abfss://@onelake.dfs.fabric.microsoft.com/.warehouse/Files/|\n", - "|Amazon S3 (link as OneLakeShortcut)|abfss://@onelake.dfs.fabric.microsoft.com/.Lakehouse/Files/|\n", - "|ADLS|abfss://@.dfs.core.windows.net/|\n", - "\n", - "You will need to ensure, that either you or your Studio project has access to these specific resources to be able to get data." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.2.1 Configure the source\n", - "\n", - "In this notebook we use a publicly accessible blob URL since it is simple to setup without specific user permissions. Let us configure the blob URL." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "remote_source = \"wasbs://datasets@azuremlexamples.blob.core.windows.net/product-info\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.2.2 Configure the index store\n", - "Let us configure index name and connection to Azure Cognitive Search" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import ACSOutputConfig\n", - "\n", - "index_output_config = ACSOutputConfig(\n", - " acs_index_name=cloud_index_remote_url_index_name\n", - " + \"-store\", # the name of the index store inside the azure cognitive search service\n", - " acs_connection_id=default_acs_connection.id,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.2.3 Build the index\n", - "\n", - "We will use the `build_index_on_cloud` function. This function will create an index directly in your AI Studio project by running a job to perform the required steps directly in your project. The output of this cell will provide a link to the job which will create the index. Click on the link to track status. You need to wait for the job to complete before using the index.\n", - "\n", - "Since we are using a publicly accessible storage location, we will not configure the identity. However, you can create an index using your credentials (the person submitting the command) by using the [UserIdentityConfiguration](https://learn.microsoft.com/python/api/azure-ai-ml/azure.ai.ml.useridentityconfiguration). This could be useful in cases where only you have access to the storgae location." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# from azure.ai.ml import UserIdentityConfiguration\n", - "\n", - "client.build_index_on_cloud(\n", - " output_index_name=cloud_index_remote_url_index_name,\n", - " vector_store=\"azure_cognitive_search\",\n", - " embeddings_model=\"text-embedding-ada-002\",\n", - " aoai_connection_id=default_aoai_connection.id,\n", - " data_source_url=\"https://azuremlexamples.blob.core.windows.net/product-info\",\n", - " input_source=remote_source,\n", - " acs_config=index_output_config,\n", - " # identity=UserIdentityConfiguration(),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.2.4 Consume the Index\n", - "Let us use the qna function to consume the index created" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(qna(question=\"what is your return policy on backpacks for members\", index_name=cloud_index_remote_url_index_name))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### 2.3 Build an index on cloud from local files\n", - "\n", - "Let us build an index on the cloud from local files or folders. In this case the index will directly get created on the cloud and not the local machine." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.3.1 Configure the source\n", - "\n", - "Use the local files/folders as the source" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import LocalSource\n", - "\n", - "local_source = LocalSource(input_data=\"data/product-info/\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.3.2 Configure the index store\n", - "Let us configure index name and connection to Azure Cognitive Search" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from azure.ai.resources.operations import ACSOutputConfig\n", - "\n", - "index_output_config = ACSOutputConfig(\n", - " acs_index_name=cloud_index_local_files_index_name\n", - " + \"-store\", # the name of the index store inside the azure cognitive search service\n", - " acs_connection_id=default_acs_connection.id,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.3.3 Build the index\n", - "\n", - "We will use the `build_index_on_cloud` function. This function will create an index directly in your AI Studio project by running a job to perform the required steps directly in your project. The output of this cell will provide a link to the job which will create the index. Click on the link to track status. You need to wait for the job to complete before using the index." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# from azure.ai.ml import UserIdentityConfiguration\n", - "\n", - "client.build_index_on_cloud(\n", - " output_index_name=cloud_index_local_files_index_name,\n", - " vector_store=\"azure_cognitive_search\",\n", - " embeddings_model=\"text-embedding-ada-002\",\n", - " aoai_connection_id=default_aoai_connection.id,\n", - " input_source=local_source,\n", - " acs_config=index_output_config,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### 2.2.4 Consume the Index\n", - "Let us use the qna function to consume the index created" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(qna(question=\"what is the temperature rating of mountaindream\", index_name=cloud_index_local_files_index_name))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Consuming an Index\n", - "\n", - "Refer to the [Retrieval Augmented Generation (RAG) using Azure AI SDK](../rag-e2e/rag-qna.ipynb) notebook for more details on consuming the index in a chat bot with prompts." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cleaning up\n", - "\n", - "To clean up all Azure ML resources used in this example, you can delete the individual resources you created in this tutorial.\n", - "\n", - "If you made a resource group specifically to run this example, you could instead [delete the resource group](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/delete-resource-group)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "if should_cleanup:\n", - " # {{TODO: Add resource cleanup}}\n", - " pass" - ] - } - ], - "metadata": { - "colab": { - "collapsed_sections": [], - "name": "notebook_template.ipynb", - "toc_visible": true - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_1.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_1.md deleted file mode 100644 index bfe299f2..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_1.md +++ /dev/null @@ -1,215 +0,0 @@ -# Information about product item_number: 1 -TrailMaster X4 Tent, price $250, - -## Brand -OutdoorLiving - -## Category -Tents - -## Features -- Polyester material for durability -- Spacious interior to accommodate multiple people -- Easy setup with included instructions -- Water-resistant construction to withstand light rain -- Mesh panels for ventilation and insect protection -- Rainfly included for added weather protection -- Multiple doors for convenient entry and exit -- Interior pockets for organizing small items -- Reflective guy lines for improved visibility at night -- Freestanding design for easy setup and relocation -- Carry bag included for convenient storage and transportation - -## Technical Specs -**Best Use**: Camping -**Capacity**: 4-person -**Season Rating**: 3-season -**Setup**: Freestanding -**Material**: Polyester -**Waterproof**: Yes -**Floor Area**: 80 square feet -**Peak Height**: 6 feet -**Number of Doors**: 2 -**Color**: Green -**Rainfly**: Included -**Rainfly Waterproof Rating**: 2000mm -**Tent Poles**: Aluminum -**Pole Diameter**: 9mm -**Ventilation**: Mesh panels and adjustable vents -**Interior Pockets**: Yes (4 pockets) -**Gear Loft**: Included -**Footprint**: Sold separately -**Guy Lines**: Reflective -**Stakes**: Aluminum -**Carry Bag**: Included -**Dimensions**: 10ft x 8ft x 6ft (length x width x peak height) -**Packed Size**: 24 inches x 8 inches -**Weight**: 12 lbs - -## TrailMaster X4 Tent User Guide - -### Introduction - -Thank you for choosing the TrailMaster X4 Tent. This user guide provides instructions on how to set up, use, and maintain your tent effectively. Please read this guide thoroughly before using the tent. - -### Package Contents - -Ensure that the package includes the following components: - -- TrailMaster X4 Tent body -- Tent poles -- Rainfly (if applicable) -- Stakes and guy lines -- Carry bag -- User Guide - -If any components are missing or damaged, please contact our customer support immediately. - -### Tent Setup - -#### Step 1: Selecting a Suitable Location - -- Find a level and clear area for pitching the tent. -- Remove any sharp objects or debris that could damage the tent floor. - -#### Step 2: Unpacking and Organizing Components - -- Lay out all the tent components on the ground. -- Familiarize yourself with each part, including the tent body, poles, rainfly, stakes, and guy lines. - -#### Step 3: Assembling the Tent Poles - -- Connect the tent poles according to their designated color codes or numbering. -- Slide the connected poles through the pole sleeves or attach them to the tent body clips. - -#### Step 4: Setting up the Tent Body - -- Begin at one end and raise the tent body by pushing up the poles. -- Ensure that the tent body is evenly stretched and centered. -- Secure the tent body to the ground using stakes and guy lines as needed. - -#### Step 5: Attaching the Rainfly (if applicable) - -- If your tent includes a rainfly, spread it over the tent body. -- Attach the rainfly to the tent corners and secure it with the provided buckles or clips. -- Adjust the tension of the rainfly to ensure proper airflow and weather protection. - -#### Step 6: Securing the Tent - -- Stake down the tent corners and guy out the guy lines for additional stability. -- Adjust the tension of the guy lines to provide optimal stability and wind resistance. - -### Tent Takedown and Storage - -#### Step 1: Removing Stakes and Guy Lines - -- Remove all stakes from the ground. -- Untie or disconnect the guy lines from the tent and store them separately. - -#### Step 2: Taking Down the Tent Body - -- Start by collapsing the tent poles carefully. -- Remove the poles from the pole sleeves or clips. -- Collapse the tent body and fold it neatly. - -#### Step 3: Disassembling the Tent Poles - -- Disconnect and separate the individual pole sections. -- Store the poles in their designated bag or sleeve. - -#### Step 4: Packing the Tent - -- Fold the tent body tightly and place it in the carry bag. -- Ensure that the rainfly and any other components are also packed securely. - -### Tent Care and Maintenance - -- Clean the tent regularly with mild soap and water. -- Avoid using harsh chemicals or abrasive cleaners. -- Allow the tent to dry completely before storing it. -- Store the tent in a cool, dry place away from direct sunlight. - -## Cautions -1. **Avoid Uneven or Rocky Surfaces**: Do not place the tent on uneven or rocky surfaces. -2. **Stay Clear of Hazardous Areas**: Avoid setting up the tent near hazardous areas. -3. **No Open Flames or Heat Sources**: Do not use open flames, candles, or any other flammable heat sources near the tent. -4. **Avoid Overloading**: Do not exceed the maximum weight capacity or overload the tent with excessive gear or equipment. -5. **Don't Leave Unattended**: Do not leave the tent unattended while open or occupied. -6. **Avoid Sharp Objects**: Keep sharp objects away from the tent to prevent damage to the fabric or punctures. -7. **Avoid Using Harsh Chemicals**: Do not use harsh chemicals or abrasive cleaners on the tent, as they may damage the material. -8. **Don't Store Wet**: Do not store the tent when it is wet or damp, as it can lead to mold, mildew, or fabric deterioration. -9. **Avoid Direct Sunlight**: Avoid prolonged exposure of the tent to direct sunlight, as it can cause fading or weakening of the fabric. -10. **Don't Neglect Maintenance**: Regularly clean and maintain the tent according to the provided instructions to ensure its longevity and performance. - -## Warranty Information -Thank you for purchasing the TrailMaster X4 Tent. We are confident in the quality and durability of our product. This warranty provides coverage for any manufacturing defects or issues that may arise during normal use of the tent. Please read the terms and conditions of the warranty below: - -1. **Warranty Coverage**: The TrailMaster X4 Tent is covered by a **2-year limited warranty** from the date of purchase. This warranty covers manufacturing defects in materials and workmanship. - -2. **What is Covered**: - - Seam or fabric tears that occur under normal use and are not a result of misuse or abuse. - - Issues with the tent poles, zippers, buckles, or other hardware components that affect the functionality of the tent. - - Problems with the rainfly or other included accessories that impact the performance of the tent. - -3. **What is Not Covered**: - - Damage caused by misuse, abuse, or improper care of the tent. - - Normal wear and tear or cosmetic damage that does not affect the functionality of the tent. - - Damage caused by extreme weather conditions, natural disasters, or acts of nature. - - Any modifications or alterations made to the tent by the user. - -4. **Claim Process**: - - In the event of a warranty claim, please contact our customer support (contact details provided in the user guide) to initiate the process. - - Provide proof of purchase, including the date and place of purchase, along with a detailed description and supporting evidence of the issue. - -5. **Resolution Options**: - - Upon receipt of the warranty claim, our customer support team will assess the issue and determine the appropriate resolution. - - Options may include repair, replacement of the defective parts, or, if necessary, replacement of the entire tent. - -6. **Limitations and Exclusions**: - - Our warranty is non-transferable and applies only to the original purchaser of the TrailMaster X4 Tent. - - The warranty does not cover any incidental or consequential damages resulting from the use or inability to use the tent. - - Any unauthorized repairs or alterations void the warranty. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 5 - **Review:** I am extremely happy with my TrailMaster X4 Tent! It's spacious, easy to set up, and kept me dry during a storm. The UV protection is a great addition too. Highly recommend it to anyone who loves camping! - -2) **Rating:** 3 - **Review:** I bought the TrailMaster X4 Tent, and while it's waterproof and has a spacious interior, I found it a bit difficult to set up. It's a decent tent, but I wish it were easier to assemble. - -3) **Rating:** 5 - **Review:** The TrailMaster X4 Tent is a fantastic investment for any serious camper. The easy setup and spacious interior make it perfect for extended trips, and the waterproof design kept us dry in heavy rain. - -4) **Rating:** 4 - **Review:** I like the TrailMaster X4 Tent, but I wish it came in more colors. It's comfortable and has many useful features, but the green color just isn't my favorite. Overall, it's a good tent. - -5) **Rating:** 5 - **Review:** This tent is perfect for my family camping trips. The spacious interior and convenient storage pocket make it easy to stay organized. It's also super easy to set up, making it a great addition to our gear. - -## FAQ -1) Can the TrailMaster X4 Tent be used in winter conditions? - The TrailMaster X4 Tent is designed for 3-season use and may not be suitable for extreme winter conditions with heavy snow and freezing temperatures. - -2) How many people can comfortably sleep in the TrailMaster X4 Tent? - The TrailMaster X4 Tent can comfortably accommodate up to 4 people with room for their gear. - -3) Is there a warranty on the TrailMaster X4 Tent? - Yes, the TrailMaster X4 Tent comes with a 2-year limited warranty against manufacturing defects. - -4) Are there any additional accessories included with the TrailMaster X4 Tent? - The TrailMaster X4 Tent includes a rainfly, tent stakes, guy lines, and a carry bag for easy transport. - -5) Can the TrailMaster X4 Tent be easily carried during hikes? - Yes, the TrailMaster X4 Tent weighs just 12lbs, and when packed in its carry bag, it can be comfortably carried during hikes. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_10.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_10.md deleted file mode 100644 index 8f054a7b..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_10.md +++ /dev/null @@ -1,173 +0,0 @@ -# Information about product item_number: 10 -TrailBlaze Hiking Pants, price $75, - -## Brand -MountainStyle - -## Category -Hiking Clothing - -## Features -- **Material**: Made of high-quality nylon fabric -- **Color**: Khaki -- **Size Options**: Available in M, L, and XL sizes -- **Weight**: Lightweight design, weighing approximately 1lb -- **Quick-Drying**: Designed to dry quickly, allowing for enhanced comfort during outdoor activities -- **Water-Resistant**: Provides protection against light rain or splashes -- **Breathable**: Offers excellent breathability to keep you cool and comfortable -- **Articulated Knees**: Features articulated knees for improved mobility and flexibility on the trails -- **Zippered Pockets**: Equipped with zippered pockets for secure storage of small essentials -- **Versatile Design**: Suitable for various outdoor activities, including hiking, trekking, and camping -- **Durable Construction**: Constructed with durability in mind, ensuring long-lasting performance -- **Comfortable Fit**: Designed to provide a comfortable and ergonomic fit during active pursuits -- **Stylish Appearance**: Features a sleek and attractive design -These features highlight the key attributes of the TrailBlaze Hiking Pants, providing customers with valuable information about the product's materials, design, functionality, and comfort. - - -## Technical Specs -Certainly! Here are the technical specifications for the hiking pants: - -- **Material**: Nylon -- **Color**: Khaki -- **Dimensions**: M, L, XL -- **Weight**: 1lb -- **Fit**: Regular -- **Closure Type**: Button and zip fly -- **Pockets**: Multiple zippered pockets (Zippered pockets for secure storage.) -- **Articulated Knees**: Yes (Articulated knees for enhanced mobility.) -- **Quick-Drying**: Yes -- **Water-Resistant**: Yes -- **Breathable**: Yes -- **Sun Protection**: UPF 50+. UPF sun protection for shielding against harmful UV rays. -- **Waistband**: Elastic waistband with belt loops -- **Adjustability**: Drawstring at the hem -- **Reinforced Seams**: Yes -- **Care Instructions**: Machine washable, tumble dry low -- **Recommended Use**: Hiking, trekking, camping, outdoor activities -- **Durability**: Reinforced construction for durability. - -## TrailBlaze Hiking Pants User Manual - -Thank you for choosing the TrailBlaze Hiking Pants. This user manual provides detailed instructions on how to wear, care for, and maintain your hiking pants. Please read this manual carefully before using the product to ensure optimal performance and longevity. - -## Wearing the Hiking Pants - -### Choosing the Right Size - -- Refer to the size chart provided to determine the appropriate size based on your waist and inseam measurements. - -### Putting on the Pants - -- Unzip the pants and step into them, one leg at a time. -- Pull the pants up to your waist, ensuring a comfortable fit. - -### Adjusting the Waistband - -- Use the adjustable waistband to achieve a snug fit around your waist. -- Secure the waistband using the provided buckle or drawstring. - -### Securing the Pants - -- Fasten the front closure, which may consist of buttons, snaps, or a zipper, to securely close the pants. - -### Adjusting the Length - -- If necessary, adjust the length of the pants by rolling up or down the cuffs. -- Secure them in place using the integrated tabs or buttons, if available. - -## Care and Maintenance - -To maintain the quality and performance of your TrailBlaze Hiking Pants, follow these care and maintenance guidelines: - -### Washing Instructions - -- Machine wash the pants in cold water with a mild detergent. -- Avoid using bleach or fabric softeners. -- For best results, wash the pants separately or with similar colors. - -### Drying Instructions - -- Hang the pants to dry naturally. -- Avoid using a dryer, as high heat can damage the fabric and affect the pants' performance. - -### Ironing and Pressing - -- If necessary, iron the pants on a low setting, avoiding excessive heat. -- Ensure that the pants are completely dry before ironing. - -### Stain Removal - -- Treat any stains promptly using a stain remover or mild soap. -- Gently scrub the affected area and rinse thoroughly. - -### Storage - -- When not in use, store the hiking pants in a cool, dry place away from direct sunlight. -- Avoid folding the pants tightly to prevent creasing. - -## Contact Information - -For any inquiries, assistance, or feedback regarding the TrailBlaze Hiking Pants, please contact our customer support: - -- Customer Support Phone: +1-555-123-4567 -- Customer Support Email: support@trailblazegear.com - -We are dedicated to providing you with the best hiking experience and ensuring your satisfaction with the TrailBlaze Hiking Pants. - -## Caution: -1. **Avoid Excessive Force**: Do not pull or tug on the pants excessively, as it may cause the fabric to stretch or tear. -2. **Avoid Sharp Objects**: Do not come into contact with sharp objects or rough surfaces that can potentially puncture or damage the pants. -3. **Avoid Excessive Heat**: Do not expose the hiking pants to open flames, high heat sources, or direct sunlight for prolonged periods, as it may cause discoloration or damage to the fabric. -4. **Do Not Overload Pockets**: Avoid overloading the pockets with heavy or sharp objects, as it may cause discomfort, hinder mobility, or damage the pants. -5. **Avoid Harsh Chemicals**: Do not use harsh chemicals, bleach, or strong detergents when washing the hiking pants, as it may degrade the fabric or affect its performance. -6. **Avoid Prolonged Moisture Exposure**: Although the hiking pants are water-resistant, avoid exposing them to excessive moisture or prolonged rain, as it may affect their water-resistant properties. -7. **Avoid Improper Storage**: Do not store the hiking pants in damp or humid environments, as it may lead to mold or mildew growth. Additionally, avoid storing the pants in compressed or wrinkled positions for extended periods. -8. **Do Not Ignore Repairs**: If you notice any damage or wear on the hiking pants, promptly address it by repairing or replacing the affected area. Ignoring repairs may lead to further damage or compromise the integrity of the pants. -9. **Avoid Abrasive Surfaces**: The pants are designed for hiking and outdoor activities, but avoid contact with sharp or abrasive surfaces that could damage the fabric. -10. **Check for Snags or Tears**: Before each use, inspect the pants for any snags, tears, or loose threads. If any damage is detected, avoid using the pants until repairs are made. -11. **Proper Layering**: The hiking pants are designed to be worn as an outer layer. Ensure proper layering with base layers and insulation as per the weather conditions to optimize comfort. -12. **Protection from Insects and UV Rays**: The pants provide some protection against insects and UV rays, but it is recommended to use additional measures such as insect repellent and sunscreen for complete protection. - -By following these cautionary points and avoiding the mentioned actions, you can help maintain the quality and performance of your TrailBlaze Hiking Pants for a prolonged period. - -## Warranty Information - -The TrailBlaze Hiking Pants are covered by a limited warranty to ensure your satisfaction and provide peace of mind. Please review the following warranty details: - -**Warranty Duration:** The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as seam separation, zipper malfunction, or fabric defects. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information.Please retain your proof of purchase as it will be required to verify warranty eligibility. - -## Return Policy -- **If Membership status "None":** Customers can return the hiking clothing within 30 days of purchase for a full refund. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the customer. -- **If Membership status "Gold":** Customers can return the hiking clothing within 60 days of purchase for a full refund or exchange. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the company. -- **If Membership status "Platinum ":** Platinum members can return their hiking clothing within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all hiking clothing purchases. - -## Reviews -## FAQ -44) Are the TrailBlaze Hiking Pants suitable for cold weather? - While the TrailBlaze Hiking Pants are designed to be quick-drying, water-resistant, and breathable, they may not provide enough insulation for extremely cold weather. We recommend layering with thermal base layers for added warmth. - -45) Do the TrailBlaze Hiking Pants have an adjustable waistband? - Yes, the TrailBlaze Hiking Pants feature an adjustable waistband with a built-in belt, ensuring a comfortable and secure fit for various body shapes. - -46) Are the TrailBlaze Hiking Pants available in different lengths? - The TrailBlaze Hiking Pants are currently available in one standard length. However, the articulated knees and stretchy fabric provide flexibility and comfort for different leg lengths. - -47) Can the TrailBlaze Hiking Pants be worn in rainy conditions? - Yes, the TrailBlaze Hiking Pants are water-resistant, making them suitable for use in light rain. However, they may not provide complete protection in heavy rain or extended wet conditions. - -48) How many zippered pockets do the TrailBlaze Hiking Pants have? - The TrailBlaze Hiking Pants have two zippered hand pockets and two zippered thigh pockets, providing secure storage for your essentials while on the trail. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_11.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_11.md deleted file mode 100644 index bfef1cbd..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_11.md +++ /dev/null @@ -1,155 +0,0 @@ -# Information about product item_number: 11 -TrailWalker Hiking Shoes, price $110 - -## Brand -TrekReady - -## Category -Hiking Footwear - -## Features -- Durable and waterproof construction to withstand various terrains and weather conditions -- High-quality materials, including synthetic leather and mesh for breathability -- Reinforced toe cap and heel for added protection and durability -- Cushioned insole for enhanced comfort during long hikes -- Supportive midsole for stability and shock absorption -- Traction outsole with multidirectional lugs for excellent grip on different surfaces -- Breathable mesh lining to keep feet cool and dry -- Padded collar and tongue for extra comfort and to prevent chafing -- Lightweight design for reduced fatigue during long hikes -- Quick-lace system for easy and secure fit adjustments -- EVA (ethylene vinyl acetate) foam for lightweight cushioning and support -- Removable insole for customization or replacement -- Protective mudguard to prevent debris from entering the shoe -- Reflective accents for increased visibility in low-light conditions -- Available in multiple sizes and widths for a better fit -- Suitable for hiking, trekking, and outdoor adventures - -## Technical Specs - -- **Best Use**: Hiking -- **Upper Material**: Synthetic leather, mesh -- **Waterproof**: Yes -- **Color:** Black -- **Dimensions:** 7-12 (US) -- **Toe Protection**: Reinforced toe cap -- **Heel Protection**: Reinforced heel -- **Insole Type**: Cushioned -- **Midsole Type**: Supportive -- **Outsole Type**: Traction outsole with multidirectional lugs -- **Lining Material**: Breathable mesh -- **Closure Type**: Quick-lace system -- **Cushioning Material**: EVA foam -- **Removable Insole**: Yes -- **Collar and Tongue Padding**: Yes -- **Weight (per shoe)**: Varies by size -- **Reflective Accents**: Yes -- **Mudguard**: Protective mudguard - -## User Guide/Manual: - -### 1. Getting Started - -Before your first use, please take a moment to inspect the shoes for any visible defects or damage. If you notice any issues, please contact our customer support for assistance. - -### 2. Fitting and Adjustment - -To ensure a proper fit and maximum comfort, follow these steps: - -1. Loosen the quick-lace system by pulling up the lace lock. -2. Slide your foot into the shoe and position it properly. -3. Adjust the tension of the laces by pulling both ends simultaneously. Find the desired tightness and comfort level. -4. Push the lace lock down to secure the laces in place. -5. Tuck any excess lace into the lace pocket for safety and to prevent tripping. - -Note: It's recommended to wear hiking socks for the best fit and to prevent blisters or discomfort. - -### 3. Shoe Care and Maintenance - -Proper care and maintenance will help prolong the life of your TrailWalker Hiking Shoes: - -- After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth. -- If the shoes are muddy or heavily soiled, rinse them with clean water and gently scrub with a soft brush. Avoid using harsh detergents or solvents. -- Allow the shoes to air dry naturally, away from direct sunlight or heat sources. -- To maintain waterproof properties, periodically apply a waterproofing treatment according to the manufacturer's instructions. -- Inspect the shoes regularly for any signs of wear and tear, such as worn outsoles or loose stitching. If any issues are found, contact our customer support for assistance. -- Store the shoes in a cool, dry place when not in use, away from extreme temperatures or moisture. - -## Caution Information - -1. **Do not expose to extreme temperatures** -2. **Do not machine wash or dry** -3. **Do not force-dry with heat sources** -4. **Do not use harsh chemicals or solvents** -5. **Do not store when wet or damp** -6. **Do not ignore signs of wear or damage** -7. **Do not ignore discomfort or pain** -8. **Do not use for activities beyond their intended purpose** -9. **Do not share footwear** -10. **Do not ignore manufacturer's instructions** - -## Warranty Information -Please read the following warranty information carefully. - -1. Warranty Coverage: - - The TrailWalker Hiking Shoes are covered by a limited manufacturer's warranty. - - The warranty covers defects in materials and workmanship under normal use and conditions. - - The warranty is valid for a period of [insert duration] from the date of purchase. - -2. Warranty Claims: - - To initiate a warranty claim, please contact our customer care team at the following contact details: - - Customer Care: TrailWalker Gear - - Email: customerservice@trailwalkergear.com - - Phone: 1-800-123-4567 - -3. Warranty Exclusions: - - The warranty does not cover damage resulting from misuse, neglect, accidents, improper care, or unauthorized repairs. - - Normal wear and tear, including worn outsoles, laces, or minor cosmetic imperfections, are not covered under the warranty. - - Modifications or alterations made to the shoes will void the warranty. - -4. Warranty Resolution: - - Upon receiving your warranty claim, our customer care team will assess the issue and provide further instructions. - - Depending on the nature of the claim, we may offer a repair, replacement, or store credit for the product. - - In some cases, the warranty claim may require the shoes to be shipped back to us for evaluation. The customer will be responsible for the shipping costs. - -5. Customer Responsibilities: - - It is the customer's responsibility to provide accurate and detailed information regarding the warranty claim. - - Please retain your original purchase receipt or proof of purchase for warranty validation. - - Any false information provided or attempts to abuse the warranty policy may result in the claim being rejected. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 4.5 - **Review:** I recently purchased the TrailWalker Hiking Shoes for a weekend hiking trip, and they exceeded my expectations. The fit is comfortable, providing excellent support throughout the journey. The traction is impressive, allowing me to confidently tackle various terrains. The shoes are also durable, showing no signs of wear after a challenging hike. My only minor complaint is that they could provide slightly more cushioning for longer treks. Overall, these shoes are a reliable choice for outdoor enthusiasts. - -2) **Rating:** 5 - **Review:** The TrailWalker Hiking Shoes are fantastic! I've used them extensively on multiple hiking trips, and they have never let me down. The grip on various surfaces is exceptional, providing stability even on slippery trails. The shoes offer ample protection for my feet without sacrificing comfort. Additionally, they have withstood rough conditions and still look almost brand new. I highly recommend these shoes to anyone seeking a reliable and durable option for their hiking adventures. - -3) **Rating:** 3.5 - **Review:** I have mixed feelings about the TrailWalker Hiking Shoes. On the positive side, they offer decent support and have good traction on most terrains. However, I found the sizing to be slightly off, and the shoes took a bit of breaking in before they felt comfortable. Also, while they are durable overall, I noticed some minor wear and tear on the outsole after a few months of regular use. They are a decent choice for occasional hikers but may not be ideal for intense or prolonged expeditions. - -4) **Rating:** 4 - **Review:** I purchased the TrailWalker Hiking Shoes for a hiking trip in rugged mountain terrain. They performed admirably, providing excellent stability and protection. The waterproofing feature kept my feet dry during unexpected rain showers. The shoes are also lightweight, which is a bonus for long hikes. However, I did notice a small amount of discomfort around the toe area after extended periods of walking. Nevertheless, these shoes are a reliable option for most hiking adventures. - -5) **Rating:** 5 - **Review:** The TrailWalker Hiking Shoes are hands down the best hiking shoes I've ever owned. From the moment I put them on, they felt like a perfect fit. The traction is outstanding, allowing me to confidently navigate challenging trails without slipping. The shoes provide excellent ankle support, which is crucial on uneven terrain. They are also durable and show no signs of wear, even after multiple hikes. I can't recommend these shoes enough for avid hikers. They are worth every penny. - -## FAQ -49) How long does it take to break in the TrailWalker Hiking Shoes? - The TrailWalker Hiking Shoes are made of flexible synthetic materials, so they usually take just a few days of regular use to break in and feel comfortable on your feet. - -50) Are the TrailWalker Hiking Shoes suitable for trail running? - While the TrailWalker Hiking Shoes are designed primarily for hiking, their lightweight construction and excellent traction also make them suitable for trail running on moderate terrains. - -51) Do the TrailWalker Hiking Shoes provide good arch support? - Yes, the TrailWalker Hiking Shoes feature a cushioned midsole and supportive insole, providing excellent arch support for long hikes and reducing foot fatigue. - -52) Are the TrailWalker Hiking Shoes compatible with gaiters? - Yes, the TrailWalker Hiking Shoes can be used with most standard gaiters, providing additional protection against water, snow, and debris while hiking. - -53) Can the TrailWalker Hiking Shoes be resoled? - While it may be possible to resole the TrailWalker Hiking Shoes, we recommend contacting the manufacturer (TrekReady) or a professional shoe repair service to determine the feasibility and cost of resoling. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_12.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_12.md deleted file mode 100644 index 6c00a690..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_12.md +++ /dev/null @@ -1,169 +0,0 @@ -# Information about product item_number: 12 -TrekMaster Camping Chair, price $50 - -## Brand -CampBuddy - -## Category -Camping Tables - -## Features -- Sturdy Construction: Built with high-quality materials for durability and long-lasting performance. -- Lightweight and Portable: Designed to be lightweight and easy to carry, making it convenient for camping, hiking, and outdoor activities. -- Foldable Design: Allows for compact storage and effortless transportation. -- Comfortable Seating: Provides ergonomic support and comfortable seating experience with padded seat and backrest. -- Adjustable Recline: Offers multiple reclining positions for personalized comfort. -- Cup Holder: Integrated cup holder for keeping beverages within reach. -- Side Pockets: Convenient side pockets for storing small items like phones, books, or snacks. -- Robust Frame: Strong frame construction to support various body types and provide stability on uneven terrain. -- Easy Setup: Quick and hassle-free setup with a folding mechanism or snap-together design. -- Weight Capacity: High weight capacity to accommodate different individuals. -- Weather Resistant: Resistant to outdoor elements such as rain, sun, and wind. -- Easy to Clean: Simple to clean and maintain, often featuring removable and washable seat covers. -- Versatile Use: Suitable for various outdoor activities like camping, picnics, sporting events, and backyard gatherings. -- Carry Bag: Includes a carrying bag for convenient storage and transportation. - -## Technical Specs -- **Best Use**: Camping, outdoor activities -- **Material:**: Durable polyester fabric with reinforced stitching -- **Color:** Blue -- **Weight:** 6lbs -- **Frame Material**: Sturdy steel or lightweight aluminum -- **Weight Capacity**: Typically supports up to 250 pounds (113 kilograms) -- **Weight** Varies between 2 to 5 pounds (0.9 to 2.3 kilograms), depending on the model -- **Folded Dimensions**: Compact size for easy storage and transport (e.g., approximately 20 x 5 x 5 inches) -- **Open Dimensions**: Provides comfortable seating area (e.g., approximately 20 x 20 x 30 inches) -- **Seat Height**: Comfortable height from the ground (e.g., around 12 to 18 inches) -- **Backrest Height**: Provides back support (e.g., approximately 20 to 25 inches) -- **Cup Holder**: Integrated cup holder for holding beverages securely -- **Side Pockets**: Convenient storage pockets for small items like phones, books, or snacks -- **Armrests**: Padded armrests for added comfort -- **Reclining Positions**: Adjustable backrest with multiple reclining positions for personalized comfort -- **Sunshade or Canopy**: Optional feature providing sun protection and shade -- **Carrying Case**: Includes a carrying bag or case for easy transport and storage -- **Easy Setup**: Simple assembly with foldable or snap-together design -- **Weather Resistance**: Water-resistant or waterproof material for durability in various weather conditions -- **Cleaning**: Easy to clean with removable and washable seat covers (if applicable) - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping tables within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping tables within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping table purchases but from the same product brand. - -## User Guide/Manual - -### 1. Safety Guidelines - -- Read and understand all instructions and warnings before using the camping chair. -- Always ensure that the chair is placed on a stable and level surface to prevent tipping or accidents. -- Do not exceed the weight capacity specified in the technical specifications. -- Keep children away from the chair to avoid potential hazards. -- Avoid placing the chair near open flames or heat sources. -- Use caution when adjusting or reclining the chair to prevent pinching or injury. -- Do not use the chair as a step stool or ladder. -- Inspect the chair before each use for any signs of damage or wear. If any issues are found, discontinue use and contact customer support. - -### 2. Setup and Assembly - -To set up the camping chair, follow these steps: - -1. Open the carrying case and remove the folded chair. -2. Unfold the chair by extending the frame until it locks into place. -3. Ensure that all locking mechanisms are fully engaged and secure. -4. Pull the fabric seat taut and adjust it for optimal comfort. -5. Make sure the chair is stable and balanced before use. - -### 3. Adjustments and Usage - -- To adjust the backrest, locate the reclining mechanism and choose the desired angle. Engage the lock to secure the position. -- Use the padded armrests for added comfort and support. -- The integrated cup holder and side pockets provide convenient storage for your beverages, books, or other small items. -- Take advantage of the chair's lightweight and foldable design for easy transportation and storage. - -### 4. Care and Maintenance - -- Regularly inspect the chair for any signs of damage or wear. If any parts are damaged, contact customer support for assistance. -- To clean the chair, use a mild detergent and water solution. Avoid using harsh chemicals or abrasive cleaners that may damage the fabric or frame. -- If the chair includes removable and washable seat covers, follow the provided instructions for proper cleaning and care. -- Store the chair in a dry and cool place when not in use to prevent damage from moisture or extreme temperatures. -- Avoid prolonged exposure to direct sunlight to maintain the color and integrity of the fabric. - -## Caution Information - -1. **Do not exceed the weight capacity** -2. **Do not use on uneven or unstable surfaces** -3. **Do not use as a step stool or ladder** -4. **Do not leave unattended near open flames or heat sources** -5. **Do not lean back excessively** -6. **Do not use harsh chemicals or abrasive cleaners** -7. **Do not leave exposed to prolonged sunlight** -8. **Do not drag or slide the chair** -9. **Do not place sharp objects in the storage pockets** -10. **Do not modify or alter the chair** - -Certainly! Here's a sample warranty information for the TrekMaster Camping Chair, along with fictitious contact details for customer care: - -## Warranty Information - -1. Limited Warranty Coverage: - -- Warranty Duration: 1 year from the date of purchase. -- Coverage: This warranty covers manufacturing defects in materials and workmanship. - -2. Warranty Exclusions: - -- Damage caused by misuse, abuse, or improper care. -- Normal wear and tear, including natural fading of colors and gradual deterioration over time. -- Any modifications or alterations made to the chair. -- Damage caused by accidents, fire, or acts of nature. - -3. Warranty Claim Process: - -In the event of a warranty claim, please follow these steps: - -- Contact our Customer Care within the warranty period. -- Provide proof of purchase, such as a receipt or order number. -- Describe the issue with the camping chair and provide any necessary supporting information or photographs. -- Our customer care representative will assess the claim and provide further instructions. - -4. Contact Information: - -For any questions, concerns, or warranty claims, please reach out to our friendly customer care team: - -- Customer Care Phone: 1-800-925-4351 -- Customer Care Email: support@trekmaster.com -- Customer Care Hours: Monday-Friday, 9:00 AM to 5:00 PM (PST) -- Website: www.trekmaster.com/support - -## Reviews - -1) **Rating:** 5 - **Review:** I absolutely love the TrekMaster Camping Chair! It's lightweight, sturdy, and super comfortable. The padded armrests and breathable fabric make it perfect for long camping trips. Highly recommended for outdoor enthusiasts! - -2) **Rating:** 4 - **Review:** The TrekMaster Camping Chair is a great value for the price. It's easy to set up and packs down nicely. The cup holder and side pockets are convenient features. The only downside is that it could be a bit more cushioned for added comfort. - -3) **Rating:** 5 - **Review:** This camping chair exceeded my expectations! It's well-built, durable, and provides excellent back support. The compact design and lightweight construction make it perfect for backpacking trips. I'm thrilled with my purchase! - -4) **Rating:** 3 - **Review:** The TrekMaster Camping Chair is decent for short outings. It's lightweight and easy to carry, but I found the seat fabric to be less durable than expected. It's suitable for occasional use, but I would recommend something sturdier for frequent camping trips. - -5) **Rating:** 4 - **Review:** I'm happy with my TrekMaster Camping Chair. It's comfortable and sturdy enough to support my weight. The adjustable armrests and storage pockets are handy features. I deducted one star because the chair is a bit low to the ground, making it a bit challenging to get in and out of for some individuals. - -## FAQ -54) What is the weight capacity of the TrekMaster Camping Chair? - The TrekMaster Camping Chair can support up to 300 lbs (136 kg), thanks to its durable steel frame and strong fabric. - -55) Can the TrekMaster Camping Chair be used on uneven ground? - Yes, the TrekMaster Camping Chair has non-slip feet, which provide stability and prevent sinking into soft or uneven ground. - -56) How compact is the TrekMaster Camping Chair when folded? - When folded, the TrekMaster Camping Chair measures approximately 38in x 5in x 5in, making it compact and easy to carry or pack in your vehicle. - -57) Is the TrekMaster Camping Chair easy to clean? - Yes, the TrekMaster Camping Chair is made of durable and easy-to-clean fabric. Simply wipe it down with a damp cloth and let it air dry. - -58) Are there any accessories available for the TrekMaster Camping Chair? - While there are no specific accessories designed for the TrekMaster Camping Chair, it comes with a built-in cup holder and can be used with a variety of universal camping chair accessories such as footrests, side tables, or organizers. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_13.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_13.md deleted file mode 100644 index d7205d04..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_13.md +++ /dev/null @@ -1,156 +0,0 @@ -# Information about product item_number: 13 -PowerBurner Camping Stove, price $100, - -## Brand -PowerBurner - -## Category -Camping Stoves - -## Features -- Dual burners for efficient cooking -- High heat output for fast boiling and cooking times -- Adjustable flame control for precise temperature regulation -- Compact and portable design for easy transportation -- Piezo ignition system for quick and reliable ignition -- Wind-resistant design to withstand outdoor conditions -- Removable cooking grates for easy cleaning -- Built-in fuel regulator for consistent performance -- Sturdy construction for durability and stability -- Compatible with various fuel types (propane, butane, etc.) -- Integrated carrying handle for convenient portability -- Made with high-quality materials for long-lasting use - -## Technical Specs - -- **Best Use**: Camping, Outdoor Cooking -- **Material:** Stainless Steel -- **Fuel Type**: Propane, Butane, compatible with various fuel types -- **Color:** Black -- **Burner Type**: Dual Burners -- **Heat Output**: High heat output for fast boiling and cooking times -- **Flame Control**: Adjustable flame control for precise temperature regulation -- **Ignition System**: Piezo ignition system for quick and reliable ignition -- **Wind Resistance**: Wind-resistant design to withstand outdoor conditions -- **Construction**: Sturdy construction for durability and stability -- **Fuel Regulator**: Built-in fuel regulator for consistent performance -- **Cooking Grates**: Removable cooking grates for easy cleaning -- **Portability**: Compact and portable design with integrated carrying handle -- **Compatibility**: Compatible with standard camping fuel canisters -- **Dimensions**: 14in x 14in x 10in -- **Weight**: 5 lbs - -## User Guide/Manual - -### 1. Safety Instructions -- Read and understand all instructions before using the camping stove. -- Only use the camping stove in well-ventilated outdoor areas. -- Keep the camping stove away from flammable materials, including tents and overhanging branches. -- Never leave the camping stove unattended while it is in use. -- Use caution when handling the camping stove, as it can become hot during operation. -- Keep children and pets away from the camping stove. -- Follow all local fire safety regulations and guidelines. - -### 2. Setup and Assembly -- Select a flat and stable surface for setting up the camping stove. -- Remove the stove from its packaging and unfold the legs. -- Attach any included accessories such as windshields or side tables, if applicable. - -### 3. Fuel Selection and Connection -- Choose the appropriate fuel type for your camping stove (propane, butane, etc.). -- Follow the manufacturer's instructions for connecting the fuel canister to the stove. -- Ensure a secure and tight connection between the fuel canister and the stove. - -### 4. Ignition and Flame Control -- Locate the ignition system (typically a piezo igniter) on the camping stove. -- Turn the control knob to the "Ignite" or "Start" position and press the ignition button to ignite the burners. -- Adjust the flame control knob to increase or decrease the flame intensity. - -### 5. Cooking Tips -- Place cookware on the cooking grates and ensure stability. -- Use suitable cookware that matches the size of the burners. -- Monitor the cooking process closely and adjust the flame as needed. -- Avoid placing flammable materials near the camping stove during cooking. - -### 6. Cleaning and Maintenance -- Allow the camping stove to cool down completely before cleaning. -- Clean the cooking grates and stove surface using mild soap and water. -- Remove any food residue or grease buildup from the burners. -- Store the camping stove in a clean and dry place. - -## Caution Information - -1. **DO NOT** use the camping stove indoors or in poorly ventilated areas. It is designed for outdoor use only. -2. **DO NOT** leave the camping stove unattended while it is in use. -3. **DO NOT** place flammable materials or objects near the camping stove during operation. -4. **DO NOT** use the camping stove in windy conditions without proper wind protection or shielding. -5. **DO NOT** touch the stove surfaces or components while they are hot. Always use heat-resistant gloves or utensils. -6. **DO NOT** use the camping stove with a damaged or leaking fuel canister. Check for any leaks or defects before connecting. -7. **DO NOT** modify or alter the camping stove in any way. Use it as intended and follow the manufacturer's instructions. -8. **DO NOT** attempt to disassemble or repair the camping stove yourself. Contact authorized service personnel for assistance. -9. **DO NOT** use the camping stove if you suspect a malfunction or if it shows signs of damage. Discontinue use and seek professional inspection. -10. **DO NOT** expose the camping stove to extreme temperatures or direct sunlight for prolonged periods when not in use. - -Certainly! Here's a sample warranty information for the PowerBurner Camping Stove: - -## Warranty Information - -1. Warranty Coverage: -- The PowerBurner Camping Stove is covered by a **1-year limited warranty** from the date of purchase. -- The warranty covers manufacturing defects in materials and workmanship under normal use. -- The warranty is valid only for the original purchaser and is non-transferable. - -2. Warranty Exclusions: -The warranty does not cover the following: -- Damage caused by misuse, abuse, negligence, accidents, or improper maintenance. -- Normal wear and tear, including scratches, dents, or fading of the finish. -- Damage caused by unauthorized repairs or modifications. -- Damage caused by using the camping stove for purposes other than intended. -- Damage caused by using incompatible or improper fuel. - -3. Warranty Claim Procedure: -In the event of a warranty claim, please follow these steps: -- Contact our customer care center within the warranty period to initiate a warranty claim. -- Provide proof of purchase, including the date of purchase and the retailer from whom the product was purchased. -- Describe the issue or defect in detail and provide any supporting documentation or images, if applicable. -- Our customer care team will guide you through the warranty claim process, which may involve inspection, repair, or replacement of the camping stove. - -4. Contact Information: -If you have any questions or need assistance with your PowerBurner Camping Stove, please contact our customer care team: -- Customer Care Phone: 1-800-213-2314 -- Customer Care Email: support@powerburner.com -- Website: www.powerburner.com/support - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping stoves within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping stoves within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping stove purchases but from the same product brand. - -## Reviews -1) **Rating:** 5 - **Review:** I absolutely love the PowerBurner Camping Stove! It's compact, lightweight, and incredibly efficient. It heats up quickly and provides a consistent flame for cooking. The adjustable heat control is a great feature, allowing me to simmer or boil with ease. The sturdy construction and durable materials give me confidence in its longevity. It's definitely a reliable companion for all my camping adventures! - -2) **Rating:** 4 - **Review:** The PowerBurner Camping Stove is a solid choice for outdoor cooking. It's easy to assemble and disassemble, making it convenient to transport. The flame output is consistent, and the heat is well-distributed. I appreciate the built-in wind protection, which helps maintain a steady flame even in windy conditions. The stove is sturdy and stable, providing a reliable cooking surface. The only downside is that it's a bit bulky compared to other camping stoves I've used, but overall, it's a reliable and functional option. - -3) **Rating:** 3 - **Review:** The PowerBurner Camping Stove gets the job done, but it has some room for improvement. The flame control is a bit tricky, and it can be challenging to achieve a low simmer. The ignition system works well most of the time, but occasionally it takes a few tries to get it going. On the positive side, it's fairly lightweight and easy to carry. The construction is decent, but I would prefer a more durable feel. It's an average camping stove that serves its purpose adequately. - -4) **Rating:** 5 - **Review:** I'm impressed with the performance of the PowerBurner Camping Stove. It's compact, yet powerful enough to cook meals quickly. The flame is adjustable and provides excellent heat control. The integrated piezo ignition is reliable and saves me the hassle of carrying a separate lighter. The stove is easy to clean, and the included carrying case is a nice bonus. I've used it on multiple camping trips, and it has never let me down. Highly recommended for outdoor cooking enthusiasts! - -5) **Rating:** 4 - **Review:** The PowerBurner Camping Stove is a solid choice for camp cooking. It's easy to set up and operate, and the flame is consistent and reliable. The stove is stable on various surfaces, thanks to its sturdy design. The included windscreen is effective in protecting the flame from gusts of wind. The only minor drawback is that the control valve is a bit sensitive, requiring careful adjustment to achieve the desired heat level. Overall, it's a reliable camping stove that delivers good performance. - -## FAQ -59) Can the PowerBurner Camping Stove be used with both propane and butane? - Yes, the PowerBurner Camping Stove is compatible with both propane and butane fuel canisters, allowing you to choose the most convenient option for your needs. - -60) How easy is it to clean the PowerBurner Camping Stove after use? - The PowerBurner Camping Stove is designed for easy cleaning, with removable pot supports and a stainless steel construction that can be wiped down with a damp cloth after it has cooled down. - -61) How long do fuel canisters last with the PowerBurner Camping Stove? - Fuel consumption for the PowerBurner Camping Stove depends on factors like burner intensity and altitude. On average, a 16 oz propane canister can last between 1 to 2 hours of continuous use on high heat. - -62) Can I use the PowerBurner Camping Stove indoors? - The PowerBurner Camping Stove is designed for outdoor use only. Using it indoors can lead to dangerous carbon monoxide buildup, which poses a serious risk to your health and safety. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_14.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_14.md deleted file mode 100644 index 55c04ede..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_14.md +++ /dev/null @@ -1,161 +0,0 @@ -# Information about product item_number: 14 -MountainDream Sleeping Bag, price $130, - -## Brand -MountainDream - -## Category -Sleeping Bags - -## Features -- Temperature Rating: Suitable for 3-season camping (rated for temperatures between 15°F to 30°F) -- Insulation: Premium synthetic insulation for warmth and comfort -- Shell Material: Durable and water-resistant ripstop nylon -- Lining Material: Soft and breathable polyester fabric -- Zipper: Smooth and snag-free YKK zipper with anti-snag design -- Hood Design: Adjustable hood with drawcord for customized fit and added warmth -- Draft Tube: Insulated draft tube along the zipper to prevent heat loss -- Zipper Baffle: Full-length zipper baffle to seal in warmth and block cold drafts -- Mummy Shape: Contoured mummy shape for optimal heat retention and reduced weight -- Compression Sack: Included compression sack for compact storage and easy transport -- Size Options: Available in multiple sizes to accommodate different body types -- Weight: Lightweight design for backpacking and outdoor adventures -- Durability: Reinforced stitching and construction for long-lasting durability -- Extra Features: Interior pocket for storing small essentials, hanging loops for airing out the sleeping bag - -## Technical Specs - -- **Temperature Rating**: 15°F to 30°F -- **Insulation**: Premium synthetic insulation -- **Color:** Green -- **Shell Material**: Durable and water-resistant ripstop nylon -- **Lining Material**: Soft and breathable polyester fabric -- **Zipper**: YKK zipper with anti-snag design -- **Hood Design**: Adjustable hood with drawcord -- **Draft Tube**: Insulated draft tube along the zipper -- **Zipper Baffle**: Full-length zipper baffle -- **Shape**: Mummy shape -- **Compression Sack**: Included -- **Sizes Available**: Multiple sizes available -- **Weight**: Varies depending on size, approximately 2.5 lbs -- **Dimensions (packed)**: 84 in x 32 in -- **Gender**: Unisex -- **Recommended Use**: Hiking, camping, backpacking -- **Price**: $130 - -## User Guide/Manual - -### 1. Unpacking and Inspection: -Upon receiving your sleeping bag, carefully remove it from the packaging. Inspect the sleeping bag for any damage or defects. If you notice any issues, please contact our customer care (contact information provided in Section 8). - -### 2. Proper Use: -- Before using the sleeping bag, make sure to read and understand the user guide. -- Ensure the sleeping bag is clean and dry before each use. -- Insert yourself into the sleeping bag, ensuring your body is fully covered. -- Adjust the hood using the drawcord to achieve a snug fit around your head for added warmth. -- Use the zipper to open or close the sleeping bag according to your comfort level. -- Keep the sleeping bag zipped up to maximize insulation during colder temperatures. -- Avoid placing sharp objects inside the sleeping bag to prevent punctures or damage. - -### 3. Temperature Rating and Comfort: -The MountainDream Sleeping Bag is rated for temperatures between 15°F to 30°F. However, personal comfort preferences may vary. It is recommended to use additional layers or adjust ventilation using the zipper and hood to achieve the desired temperature. - -### 4. Sleeping Bag Care: -- Spot clean any spills or stains on the sleeping bag using a mild detergent and a soft cloth. -- If necessary, hand wash the sleeping bag in cold water with a gentle detergent. Rinse thoroughly and air dry. -- Avoid using bleach or harsh chemicals, as they can damage the materials. -- Do not dry clean the sleeping bag, as it may affect its performance. -- Regularly inspect the sleeping bag for signs of wear and tear. Repair or replace any damaged parts as needed. - -### 5. Storage: -- Before storing the sleeping bag, ensure it is clean and completely dry to prevent mold or mildew. -- Store the sleeping bag in a cool, dry place away from direct sunlight. -- Avoid compressing the sleeping bag for extended periods, as it may affect its loft and insulation. Instead, store it in the included compression sack. - -## Caution Information - -1. **DO NOT machine wash the sleeping bag** -2. **DO NOT expose the sleeping bag to direct heat sources** -3. **DO NOT store the sleeping bag in a compressed state** -4. **DO NOT use the sleeping bag as a ground cover** -5. **DO NOT leave the sleeping bag wet or damp** -6. **DO NOT use sharp objects inside the sleeping bag** -7. **DO NOT exceed the temperature rating** - -## Warranty Information - -1. Warranty Coverage - -The warranty covers the following: - -1. Stitching or seam failure -2. Zipper defects -3. Material and fabric defects -4. Insulation defects -5. Issues with the drawcord, Velcro closures, or other functional components - -2. Warranty Exclusions - -The warranty does not cover the following: - -1. Normal wear and tear -2. Damage caused by misuse, neglect, or improper care -3. Damage caused by accidents, alterations, or unauthorized repairs -4. Damage caused by exposure to extreme temperatures or weather conditions beyond the sleeping bag's intended use -5. Damage caused by improper storage or compression -6. Cosmetic imperfections that do not affect the performance of the sleeping bag - -3. Making a Warranty Claim - -In the event of a warranty claim, please contact our customer care team at the following fictitious contact details: - -- Customer Care: MountainDream Outdoor Gear -- Phone: 1-800-213-2316 -- Email: support@MountainDream.com -- Address: www.MountainDream.com/support - -To process your warranty claim, you will need to provide proof of purchase, a description of the issue, and any relevant photographs. Our customer care team will guide you through the warranty claim process and provide further instructions. - -Please note that any shipping costs associated with the warranty claim are the responsibility of the customer. - -4. Limitations of Liability - -In no event shall MountainDream Outdoor Gear be liable for any incidental, consequential, or indirect damages arising from the use or inability to use the MountainDream Sleeping Bag. The maximum liability of MountainDream Outdoor Gear under this warranty shall not exceed the original purchase price of the sleeping bag. - -This warranty is in addition to any rights provided by consumer protection laws and regulations in your jurisdiction. - -Please refer to the accompanying product documentation for more information on care and maintenance instructions. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their sleeping bags within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their sleeping bags within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all sleeping bags purchases but from the same product brand. - -## Reviews -1) **Rating:** 4 - **Review:** I recently used the MountainDream Sleeping Bag on a backpacking trip, and it kept me warm and comfortable throughout the night. The insulation is excellent, and the materials feel high-quality. The size is perfect for me, and I appreciate the included compression sack for easy storage. Overall, a great sleeping bag for the price. - -2) **Rating:** 5 - **Review:** I am extremely impressed with the MountainDream Sleeping Bag. It exceeded my expectations in terms of warmth and comfort. The insulation is top-notch, and I stayed cozy even on colder nights. The design is well-thought-out with a hood and draft collar to keep the warmth in. The zippers are smooth and sturdy. Highly recommended for any camping or backpacking adventure. - -3) **Rating:** 3 - **Review:** The MountainDream Sleeping Bag is decent for the price, but I found it a bit bulky and heavy to carry on long hikes. The insulation kept me warm, but it could be improved for colder temperatures. The zippers tended to snag occasionally, which was a bit frustrating. Overall, it's an average sleeping bag suitable for casual camping trips. - -4) **Rating:** 5 - **Review:** I've used the MountainDream Sleeping Bag on multiple camping trips, and it has never disappointed me. The insulation is fantastic, providing excellent warmth even in chilly weather. The fabric feels durable, and the zippers glide smoothly. The included stuff sack makes it convenient to pack and carry. Highly satisfied with my purchase! - -5) **Rating:** 4 - **Review:** The MountainDream Sleeping Bag is a solid choice for backpacking and camping. It's lightweight and compact, making it easy to fit into my backpack. The insulation kept me warm during cold nights, and the hood design provided extra comfort. The only downside is that it's a bit snug for taller individuals. Overall, a reliable sleeping bag for outdoor adventures. - -## FAQ -63) What is the temperature rating for the MountainDream Sleeping Bag? - The MountainDream Sleeping Bag is rated for temperatures as low as 15�F (-9�C), making it suitable for 4-season use. - -64) How small can the MountainDream Sleeping Bag be compressed? - The MountainDream Sleeping Bag comes with a compression sack, allowing it to be packed down to a compact size of 9" x 6" (23cm x 15cm). - -65) Is the MountainDream Sleeping Bag suitable for taller individuals? - Yes, the MountainDream Sleeping Bag is designed to fit individuals up to 6'6" (198cm) tall comfortably. - -66) How does the water-resistant shell of the MountainDream Sleeping Bag work? - The water-resistant shell of the MountainDream Sleeping Bag features a durable water repellent (DWR) finish, which repels moisture and keeps you dry in damp conditions. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_15.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_15.md deleted file mode 100644 index 1861602e..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_15.md +++ /dev/null @@ -1,170 +0,0 @@ -# Information about product item_number: 15 -SkyView 2-Person Tent, price $200, - -## Brand -OutdoorLiving - -## Category -Tents - -## Features -- Spacious interior comfortably accommodates two people -- Durable and waterproof materials for reliable protection against the elements -- Easy and quick setup with color-coded poles and intuitive design -- Two large doors for convenient entry and exit -- Vestibules provide extra storage space for gear -- Mesh panels for enhanced ventilation and reduced condensation -- Rainfly included for added weather protection -- Freestanding design allows for versatile placement -- Multiple interior pockets for organizing small items -- Reflective guy lines and stake points for improved visibility at night -- Compact and lightweight for easy transportation and storage -- Double-stitched seams for increased durability -- Comes with a carrying bag for convenient portability - -## Technical Specs - -- **Best Use**: Camping, Hiking -- **Capacity**: 2-person -- **Seasons**: 3-season -- **Packed Weight**: Approx. 8 lbs -- **Number of Doors**: 2 -- **Number of Vestibules**: 2 -- **Vestibule Area**: Approx. 8 square feet per vestibule -- **Rainfly**: Included -- **Pole Material**: Lightweight aluminum -- **Freestanding**: Yes -- **Footprint Included**: No -- **Tent Bag Dimensions**: 7ft x 5ft x 4ft -- **Packed Size**: Compact -- **Color:** Blue -- **Warranty**: Manufacturer's warranty included - -## User Guide/Manual - -1. Tent Components - -The SkyView 2-Person Tent includes the following components: -- Tent body -- Rainfly -- Aluminum tent poles -- Tent stakes -- Guy lines -- Tent bag - -2. Tent Setup - -Follow these steps to set up your SkyView 2-Person Tent: - -Step 1: Find a suitable camping site with a level ground and clear of debris. -Step 2: Lay out the tent body on the ground, aligning the doors and vestibules as desired. -Step 3: Assemble the tent poles and insert them into the corresponding pole sleeves or grommets on the tent body. -Step 4: Attach the rainfly over the tent body, ensuring a secure fit. -Step 5: Stake down the tent and rainfly using the provided tent stakes, ensuring a taut pitch. -Step 6: Adjust the guy lines as needed to enhance stability and ventilation. -Step 7: Once the tent is properly set up, organize your gear inside and enjoy your camping experience. - -3. Tent Takedown - -To dismantle and pack up your SkyView 2-Person Tent, follow these steps: - -Step 1: Remove all gear and belongings from the tent. -Step 2: Remove the stakes and guy lines from the ground. -Step 3: Detach the rainfly from the tent body. -Step 4: Disassemble the tent poles and remove them from the tent body. -Step 5: Fold and roll up the tent body, rainfly, and poles separately. -Step 6: Place all components back into the tent bag, ensuring a compact and organized packing. - -4. Tent Care and Maintenance - -To extend the lifespan of your SkyView 2-Person Tent, follow these care and maintenance guidelines: - -- Always clean and dry the tent before storing it. -- Avoid folding or storing the tent when it is wet or damp to prevent mold or mildew growth. -- Use a mild soap and water solution to clean the tent if necessary, and avoid using harsh chemicals or solvents. -- Inspect the tent regularly for any damages such as tears, punctures, or broken components. Repair or replace as needed. -- Store the tent in a cool, dry place away from direct sunlight and extreme temperatures. -- Avoid placing sharp objects or excessive weight on the tent, as this may cause damage. -- Follow the manufacturer's recommendations for seam sealing or re-waterproofing the tent if necessary. - -5. Safety Precautions - -- Always choose a safe and suitable camping location, considering factors such as terrain, weather conditions, and potential hazards. -- Ensure proper ventilation inside the tent to prevent condensation buildup and maintain air quality. -- Never use open flames or heating devices inside the tent, as this poses a fire hazard. -- Securely stake down the tent and use guy lines as needed to enhance stability during windy conditions. -- Do not exceed the recommended maximum occupancy of the tent. -- Keep all flammable materials away from the tent. -- Follow proper camping etiquette and leave no trace by properly disposing of waste and leaving the campsite clean. - -## Caution Information - -1. **Do not exceed the tent's maximum occupancy** -2. **Do not use sharp objects inside the tent** -3. **Do not place the tent near open flames** -4. **Do not store food inside the tent** -5. **Do not smoke inside the tent** -6. **Do not force the tent during setup or takedown** -7. **Do not leave the tent unattended during inclement weather** -8. **Do not neglect proper tent maintenance** -9. **Do not drag the tent on rough surfaces** -10. **Do not dismantle the tent while wet** - -## Warranty Information - -1. Limited Warranty: The SkyView 2-Person Tent is covered by a limited warranty for a period of one year from the date of purchase. This warranty is valid only for the original purchaser and is non-transferable. - -2. Warranty Coverage: The warranty covers defects in materials and workmanship under normal use during the warranty period. If the tent exhibits any defects during this time, we will, at our discretion, repair or replace the product free of charge. - -3. Exclusions: The warranty does not cover damage resulting from improper use, negligence, accidents, modifications, unauthorized repairs, normal wear and tear, or natural disasters. It also does not cover damages caused by transportation or storage without proper care. - -4. Claim Process: In the event of a warranty claim, please contact our customer care department using the details provided below. You will be required to provide proof of purchase, a description of the issue, and any supporting documentation or images. - -5. Contact Details for Customer Care: -- Address: Customer Care Department -SkyView Outdoor Gear -1234 Outdoor Avenue -Cityville, USA -- Phone: 1-800-123-4567 -- Email: support@skyviewgear.com - -Please ensure that you have registered your product by completing the warranty registration card or online form available on our website. This will help expedite the warranty claim process. - -6. Important Notes: -- Any repairs or replacements made under warranty will not extend the original warranty period. -- The customer is responsible for shipping costs associated with returning the product for warranty service. -- SkyView Outdoor Gear reserves the right to assess and determine the validity of warranty claims. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 5 - **Review:** I absolutely love the SkyView 2-Person Tent! It's incredibly spacious and provides ample room for two people. The setup is a breeze, and the materials feel durable and reliable. We used it during a rainy camping trip, and it kept us completely dry. Highly recommended! - -2) **Rating:** 4 - **Review:** The SkyView 2-Person Tent is a great choice for camping. It offers excellent ventilation and airflow, which is perfect for warm weather. The tent is sturdy and well-built, with high-quality materials. The only minor drawback is that it takes a little longer to set up compared to some other tents I've used. - -3) **Rating:** 5 - **Review:** This tent exceeded my expectations! The SkyView 2-Person Tent is incredibly lightweight and packs down small, making it ideal for backpacking trips. Despite its compact size, it offers plenty of room inside for two people and their gear. The waterproof design worked flawlessly during a rainy weekend. Highly satisfied with my purchase! - -4) **Rating:** 3 - **Review:** The SkyView 2-Person Tent is decent overall. It provides adequate space for two people and offers good protection against the elements. However, I found the zippers to be a bit flimsy, and they occasionally got stuck. It's a functional tent for the price, but I expected better quality in some aspects. - -5) **Rating:** 5 - **Review:** I've used the SkyView 2-Person Tent on multiple camping trips, and it has been fantastic. The tent is spacious, well-ventilated, and keeps us comfortable throughout the night. The setup is straightforward, even for beginners. I appreciate the attention to detail in the design, such as the convenient storage pockets. Highly recommended for camping enthusiasts! - -## FAQ -67) How easy is it to set up the SkyView 2-Person Tent? - The SkyView 2-Person Tent features a simple and intuitive setup process, with color-coded poles and clips, allowing you to pitch the tent within minutes. - -68) Is the SkyView 2-Person Tent well-ventilated? - Yes, the SkyView 2-Person Tent has mesh windows and vents, providing excellent airflow and reducing condensation inside the tent. - -69) Can the SkyView 2-Person Tent withstand strong winds? - The SkyView 2-Person Tent is designed with strong aluminum poles and reinforced guylines, ensuring stability and durability in windy conditions. - -70) Are there any storage options inside the SkyView 2-Person Tent? - Yes, the SkyView 2-Person Tent features interior mesh pockets and a gear loft for keeping your belongings organized and easily accessible. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_16.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_16.md deleted file mode 100644 index bd0574e3..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_16.md +++ /dev/null @@ -1,199 +0,0 @@ -# Information about product item_number: 16 -TrailLite Daypack, price $60, - -## Brand -HikeMate - -## Category -Backpacks - -## Features -- Lightweight and durable construction for comfortable all-day use -- Spacious main compartment with ample storage capacity -- Multiple pockets and compartments for organized storage of essentials -- Adjustable shoulder straps and padded back panel for optimal comfort -- Breathable mesh panels for enhanced airflow and ventilation -- External attachment points for securing additional gear -- Water-resistant fabric to protect your belongings from light rain and splashes -- Integrated hydration system compatibility for convenient water access on the go -- Reflective accents for improved visibility in low light conditions -- Adjustable sternum strap and waist belt for added stability and support -- Available in a variety of colors and designs to suit your style - -## Technical Specs - -- **Best Use:** Hiking -- **Material:** Lightweight and durable fabric -- **Color:** Green -- **Capacity:** Spacious main compartment with multiple pockets and compartments -- **Shoulder Straps:** Adjustable for a custom fit -- **Back Panel:** Padded for comfort and support -- **Ventilation:** Breathable mesh panels -- **Attachment Points:** External attachment points for gear -- **Water Resistance:** Water-resistant fabric -- **Hydration System Compatibility:** Integrated hydration system compatibility -- **Reflective Accents:** Yes -- **Sternum Strap:** Adjustable for added stability -- **Waist Belt:** Adjustable for added support -- **Dimensions:** 20in x 12in x 6in -- **Weight:** 1.5 lbs - -## User Guide/Manual - -1. Getting Started: -Before using your TrailLite Daypack, it's important to adjust the straps to ensure a comfortable fit. - - - Adjusting Shoulder Straps: - 1. Put on the daypack and adjust the shoulder straps evenly on both sides. - 2. Pull the adjustment straps to tighten or loosen the shoulder straps as needed. - 3. Ensure the shoulder straps are snug but not overly tight, allowing for a comfortable fit. - - - Adjusting Sternum Strap: - 1. Locate the sternum strap on the shoulder straps. - 2. Adjust the sternum strap up or down to a comfortable height. - 3. Buckle the sternum strap across your chest and adjust the length as desired. - - - Adjusting Waist Belt (if applicable): - 1. If your TrailLite Daypack features a waist belt, locate the belt on the back panel. - 2. Wrap the waist belt around your waist and fasten the buckle. - 3. Adjust the length of the waist belt for a snug fit, providing additional support and stability. - -2. Packing and Organizing: -The TrailLite Daypack offers various compartments and pockets to help you organize your belongings effectively. - - - Main Compartment - The main compartment is ideal for storing larger items such as clothing, food, or equipment. Follow these steps to pack your daypack efficiently: - 1. Unzip the main compartment. - 2. Place your larger items in the bottom of the compartment. - 3. Arrange your belongings to distribute weight evenly and avoid bulkiness. - 4. Secure any loose items using compression straps if available. - - - Pockets and Compartments -Utilize the additional pockets and compartments for organizing smaller items such as keys, snacks, or electronics. Some daypack models may have specific pockets for water bottles or a dedicated hydration bladder sleeve. - -3. Hydration System Compatibility -The TrailLite Daypack is designed to be compatible with hydration systems, allowing you to conveniently stay hydrated during your outdoor activities. - - - Installing a Hydration System - 1. Locate the hydration bladder sleeve or compartment within the daypack. - 2. Insert the hydration bladder into the designated sleeve - 3. Ensure the bladder hose is accessible and can be easily routed to the shoulder strap. - 4. Attach the hose clip or loop on the shoulder strap to secure the hose in place. - - - Using the Hydration System - 1. Fill the hydration bladder with clean water according to the manufacturer's instructions. - 2. Ensure the bladder is securely sealed to prevent any leaks. - 3. Insert the hose through the designated opening or clip it onto the shoulder strap for easy access. - 4. Adjust the hose length to a comfortable position for drinking while on the move. - 5. When you need to drink, simply bite the valve and suck the water through the hose. - 6. After use, remember to clean and dry the hydration bladder to maintain hygiene. - -4. Wearing and Adjusting -Properly wearing and adjusting the TrailLite Daypack will enhance your comfort and ensure optimal weight distribution. - - - Putting on the Daypack - 1. Loosen all the straps, including the shoulder straps, sternum strap, and waist belt (if applicable). - 2. Put your arms through the shoulder straps and position the daypack on your back. - 3. Adjust the shoulder straps evenly on both sides and tighten them gradually. - 4. Buckle the sternum strap across your chest and adjust the length as needed. - 5. Fasten the waist belt around your waist and adjust it for a snug fit (if applicable). - - - Adjusting the Fit - 1. Ensure the daypack sits comfortably on your back and rests evenly on your shoulders. - 2. Adjust the shoulder straps to distribute the weight evenly and prevent excessive strain. - 3. Tighten the sternum strap to stabilize the daypack and reduce shoulder movement. - 4. Adjust the waist belt for added support and to transfer weight to your hips (if applicable). - -5. Care and Maintenance -Proper care and maintenance will prolong the lifespan of your TrailLite Daypack and ensure its optimal performance. - - - Cleaning Instructions - - Spot clean any stains or dirt with a damp cloth or sponge. - - If necessary, use a mild detergent and warm water solution for more thorough cleaning. - - Rinse thoroughly and air dry completely before storage. - - Avoid using harsh chemicals, bleach, or abrasive cleaners, as they may damage the fabric. - - - Storage Guidelines - - Before storing, make sure the daypack is clean and dry to prevent mold or mildew growth. - - Store the daypack in a cool, dry place away from direct sunlight. - - Ensure all zippers and closures are fully closed to prevent dust or debris from entering. - - Avoid placing heavy objects on top of the daypack during storage. - -## Caution Information - -1. Do not overload the daypack beyond its recommended weight capacity. Exceeding the weight limit can strain the backpack's seams, zippers, and overall structure, leading to potential damage or discomfort. -2. Do not expose the daypack to extreme temperatures or harsh weather conditions for extended periods. Extreme heat or cold can affect the integrity of the materials and compromise the performance of the backpack. -3. Do not use the daypack as a seat or place excessive pressure on it. Sitting or stepping on the daypack can damage the contents inside and put unnecessary stress on the backpack's construction. -4. Do not drag the daypack on rough surfaces or drag it behind you. This can cause abrasion and tears on the fabric, compromising the durability of the backpack. -5. Do not submerge the daypack in water or expose it to heavy rain without using a rain cover or waterproofing solution. While the daypack may offer some water resistance, it is not fully waterproof and can allow water to seep through zippers and seams. -6. Do not use sharp objects or knives directly on the daypack. This can puncture or tear the fabric, reducing the backpack's functionality and compromising its overall lifespan. -7. Do not store the daypack in damp or dirty conditions for extended periods. Moisture and dirt can lead to mold or mildew growth, unpleasant odors, and potential damage to the backpack's materials. -8. Do not modify or alter the daypack's design or structure. Any unauthorized modifications can compromise the backpack's integrity, safety, and warranty coverage. -9. Do not neglect regular cleaning and maintenance of the daypack. Proper care and upkeep, as outlined in the user guide, are essential to preserve the backpack's performance and longevity. -10. Do not disregard any warnings or instructions provided by the manufacturer. Always follow the guidelines outlined in the user manual to ensure safe and proper use of the TrailLite Daypack. - -By adhering to this NOT TO DO list, you can maximize the lifespan and performance of your TrailLite Daypack while ensuring a safe and enjoyable outdoor experience. - -## Warranty Information - -Warranty Information for TrailLite Daypack: - -1. Warranty Coverage: -The TrailLite Daypack is covered by a warranty against defects in materials and workmanship for a period of one year from the date of purchase. This warranty is valid only for the original purchaser and is non-transferable. - -2. Warranty Claims: -In the event of a warranty claim, please contact our customer care within the warranty period. Provide the proof of purchase (receipt or order confirmation) along with a detailed description of the issue you are experiencing with the daypack. - -3. Warranty Exclusions: -Please note that this warranty does not cover damages resulting from: - - 1. Normal wear and tear, including scratches, abrasions, and color fading that occur with regular use. - 2. Misuse, abuse, or improper care of the daypack, including exceeding weight limits, inappropriate storage, and neglect of maintenance. - 3. Accidental or intentional damage caused by accidents, impacts, or any unauthorized repairs or modifications. - 4. Damage resulting from extreme weather conditions, including exposure to excessive heat, cold, or moisture. - 5. Any third-party modifications or additions made to the daypack. - - 4. Warranty Resolution: - Upon receipt of your warranty claim, our customer care team will assess the issue and determine the appropriate course of action. This may include repair, replacement, or providing a comparable product based on the nature of the defect and the available options. Please note that any shipping or transportation costs associated with the warranty claim are the responsibility of the customer. - - For any warranty-related inquiries or claims, please contact our customer care team: - -4. Customer Care: - - Phone: 1-800-123-4567 - - Email: customerservice@trailite.com - -Our dedicated customer care representatives are available during business hours to assist you with any questions or concerns you may have regarding the TrailLite Daypack or its warranty. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating:** 4 - **Review:** The TrailLite Daypack is a great companion for my hiking trips. It has ample storage space to fit all my essentials, and the adjustable straps provide a comfortable fit. The material is durable and water-resistant, keeping my belongings safe even during unexpected rain showers. The only improvement I would suggest is adding more internal compartments for better organization. - -2) **Rating:** 5 - **Review:** I love my TrailLite Daypack! It's lightweight, yet sturdy enough to carry all my gear. The padded shoulder straps and back panel provide excellent comfort, even during long hikes. The multiple pockets and compartments help me stay organized, and the water bottle holder is a convenient feature. Highly recommended for outdoor enthusiasts! - -3) **Rating:** 3 - **Review:** The TrailLite Daypack is decent for its price. It offers sufficient storage space and the overall construction seems durable. However, I found the zippers to be a bit flimsy, and they tend to get stuck sometimes. The shoulder straps could also use some extra padding for improved comfort, especially when carrying heavier loads. - -4) **Rating:** 5 - **Review:** I'm extremely satisfied with my TrailLite Daypack. The quality of the materials is top-notch, and the stitching is strong and reliable. The pack is spacious enough to fit my hiking essentials, and the organization pockets help me keep everything in place. The adjustable straps allow for a personalized fit, and the lightweight design adds to the overall comfort. Highly recommended! - -5) **Rating:** 4 - **Review:** The TrailLite Daypack is a reliable and affordable option for day hiking. It has enough room to hold my essentials, including a hydration bladder, snacks, and extra layers. The padded back panel and shoulder straps make it comfortable to carry, even on longer hikes. The only downside is that it lacks a dedicated rain cover, so I had to purchase one separately for added protection. - -## FAQ -71) What is the recommended load capacity for the TrailLite Daypack? - The TrailLite Daypack is designed to comfortably carry up to 25 lbs (11 kg) of gear, making it ideal for day hikes and short trips. - -72) Does the TrailLite Daypack have a specific compartment for a hydration bladder? - Yes, the TrailLite Daypack has a dedicated hydration sleeve inside the main compartment, along with a tube exit port for convenient access to your hydration system. - -73) How do I clean and maintain the TrailLite Daypack? - To clean the TrailLite Daypack, simply hand wash it with mild soap and water, then air dry it away from direct sunlight. Avoid using bleach or machine washing to preserve the backpack's durability. - -74) Can the TrailLite Daypack be used for daily commuting? - While the TrailLite Daypack is designed primarily for outdoor activities, its multiple compartments, comfortable design, and hydration compatibility make it suitable for daily commuting as well. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_17.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_17.md deleted file mode 100644 index 3ff40fa5..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_17.md +++ /dev/null @@ -1,166 +0,0 @@ -# Information about product item_number: 17 -RainGuard Hiking Jacket, price $110, - -## Brand -MountainStyle - -## Category -Hiking Clothing - - -## Features - -Here is a feature list for the RainGuard Hiking Jacket: - -## Features -- Waterproof and Breathable: The RainGuard Hiking Jacket is designed to keep you dry and comfortable in wet conditions, thanks to its waterproof and breathable fabric. -- Durable Construction: Made with high-quality materials, this jacket is built to withstand rugged outdoor activities and provide long-lasting performance. -- Adjustable Hood: The hood of the jacket is adjustable, allowing you to customize the fit and provide additional protection against rain and wind. -- Multiple Pockets: The jacket features multiple pockets, including zippered hand pockets and a chest pocket, providing convenient storage for your essentials. -- Adjustable Cuffs and Hem: The cuffs and hem of the jacket are adjustable, allowing you to seal out the elements and tailor the fit to your preference. -- Ventilation Zippers: To prevent overheating during intense activities, the jacket is equipped with ventilation zippers that allow for increased airflow. -- Reflective Details: The jacket includes reflective details to enhance visibility in low-light conditions, ensuring your safety during evening or early morning hikes. -- Packable and Lightweight: The RainGuard Hiking Jacket is designed to be lightweight and easily packable, making it convenient to carry and store in your backpack. -- Versatile Design: Suitable for various outdoor activities, this jacket is perfect for hiking, camping, trekking, and other adventures. -- Available Sizes: The RainGuard Hiking Jacket is available in a range of sizes to ensure a proper fit for both men and women. - -## Technical Specs -- **Best Use:** Hiking -- **Waterproof:** Yes -- **Breathability:** Yes -- **Material:** Nylon -- **Hood:** Adjustable -- **Pockets:** Multiple (zippered hand pockets, chest pocket) -- **Cuffs:** Adjustable -- **Hem:** Adjustable -- **Ventilation:** Zippers for increased airflow -- **Reflective Details:** Yes -- **Packable:** Yes -- **Lightweight:** Yes -- **Design:** Unisex -- **Sizes:** M, L, XL -- **Price:** $110 - -Sure! Here's a user guide for the RainGuard Hiking Jacket: - -## User Guide/Manual - -1. Safety Information - - The RainGuard Hiking Jacket is designed for outdoor use and provides protection against rain and wind. It is not intended for extreme weather conditions. - - Always ensure proper ventilation when wearing the jacket to prevent overheating. - - Follow all safety guidelines and precautions while hiking or engaging in outdoor activities. - -2. Product Description - The RainGuard Hiking Jacket is a high-quality waterproof jacket designed for hikers and outdoor enthusiasts. It features the following key features: - - Waterproof material to keep you dry in wet conditions. - - Breathable fabric for enhanced comfort during physical activities. - - Adjustable hood, cuffs, and hem for a customized fit. - - Multiple pockets for storing essentials. - - Reflective details for increased visibility in low-light conditions. - - Lightweight and packable design for easy transport. - -3. Getting Started - Before using your RainGuard Hiking Jacket, please follow these steps: - 1. Remove the jacket from its packaging. - 2. Ensure that all zippers, buttons, and fasteners are intact and functioning properly. - 3. Familiarize yourself with the jacket's features and adjustments. - -4. Usage Instructions - To maximize the performance and comfort of your RainGuard Hiking Jacket, follow these guidelines: - 1. Wear appropriate layers underneath the jacket based on the weather conditions. - 2. Adjust the hood, cuffs, and hem to achieve a snug and comfortable fit. - 3. Utilize the pockets for storing small items such as keys, wallet, or a mobile phone. - 4. If needed, open the ventilation zippers to regulate airflow and prevent overheating. - 5. Be mindful of the jacket's limitations in extreme weather conditions. - -5. Care and Maintenance - To ensure the longevity and performance of your RainGuard Hiking Jacket, please adhere to the following care instructions: - 1. Clean the jacket as needed following the manufacturer's recommendations. - 2. Use mild detergent and cold water for washing. Do not use bleach or harsh chemicals. - 3. Rinse the jacket thoroughly and allow it to air dry. Do not tumble dry. - 4. Store the jacket in a cool, dry place when not in use. - 5. Regularly inspect the jacket for any signs of damage and repair or replace as necessary. - -6. Warranty Information -The RainGuard Hiking Jacket comes with a limited warranty. Please refer to the warranty card included with your purchase for detailed information on coverage, terms, and conditions. - -7. Contact Us - If you have any questions, concerns, or need further assistance with your RainGuard Hiking Jacket, please contact our customer support team: - - Customer Care: 1-800-123-4567 - - Email: support@rainguardjackets.com - - Website: www.rainguardjackets.com/support - -## Caution Information - -1. **Do not use fabric softeners**: Fabric softeners can reduce the waterproofing capabilities of the jacket. Instead, use a mild detergent specifically designed for outdoor gear. -2. **Do not use bleach or harsh chemicals**: Bleach and other harsh chemicals can damage the fabric and affect the jacket's performance. Stick to gentle cleaning methods. -3. **Do not dry clean**: Dry cleaning can alter the jacket's properties and compromise its waterproofing. Follow the care instructions provided for proper cleaning. -4. **Do not expose to open flames or high heat**: The RainGuard Hiking Jacket is not flame-resistant. Keep it away from open flames, campfires, and other high-heat sources to prevent damage. -5. **Do not store when wet**: Always ensure the jacket is completely dry before storing it. Storing it while damp or wet can lead to mold, mildew, and unpleasant odors. -6. **Do not overload pockets**: While the jacket has multiple pockets for storage, avoid overloading them with heavy or bulky items. Excessive weight in the pockets may strain the fabric or affect the jacket's fit. -7. **Do not iron**: Ironing the RainGuard Hiking Jacket can damage the fabric and its waterproof coating. If necessary, use a gentle heat setting or follow the manufacturer's instructions. -8. **Do not make alterations**: Avoid making any alterations or modifications to the jacket, such as cutting or sewing, as it may compromise its integrity and performance. -9. **Do not expose to sharp objects**: Take care to avoid contact with sharp objects or rough surfaces that can puncture or tear the jacket. Handle it with care during outdoor activities. -10. **Do not disregard manufacturer guidelines**: Always follow the care and usage instructions provided by the manufacturer. Ignoring these guidelines may void the warranty and impact the jacket's performance. - -## Warranty Information -Certainly! Here's the Warranty Information for the RainGuard Hiking Jacket: - -## Warranty Information - -**Duration**: The RainGuard Hiking Jacket is covered by a warranty period of 1 year from the date of purchase. - -**Coverage**: The warranty covers any defects in materials or workmanship under normal use during the warranty period. This includes issues such as faulty zippers, seam failures, or manufacturing defects. - -**Exclusions**: The warranty does not cover damages resulting from improper use, normal wear and tear, accidents, unauthorized repairs or modifications, or damage caused by non-compliance with care instructions. - -**Claim Process**: In the event that you experience any issues covered by the warranty, please follow these steps: - -1. Contact our Customer Care within the warranty period with your proof of purchase and a detailed description of the issue. -2. Our Customer Care team will provide you with further instructions and may require additional information or documentation. -3. If the issue is determined to be covered by the warranty, we will either repair or replace the RainGuard Hiking Jacket, at our discretion. -4. Please note that shipping costs associated with the warranty claim may be the responsibility of the customer. - -**Contact Details**: - -Customer Care Hotline: 1-800-123-4567 -Email: support@rainguard.com -Website: www.rainguard.com/support - -Our dedicated Customer Care team is available to assist you with any questions or concerns regarding the RainGuard Hiking Jacket. Feel free to reach out to us during our business hours, Monday to Friday, 9 AM to 5 PM. - -Please retain your proof of purchase as it may be required to process any warranty claims. We appreciate your trust in our product and strive to deliver the best customer service experience possible. - -## Return Policy -- **If Membership status "None":** Customers can return the hiking clothing within 30 days of purchase for a full refund. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the customer. -- **If Membership status "Gold":** Customers can return the hiking clothing within 60 days of purchase for a full refund or exchange. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the company. -- **If Membership status "Platinum ":** Platinum members can return their hiking clothing within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all hiking clothing purchases. - -## Reviews -1) **Rating:** 5 - **Review:** I absolutely love the RainGuard Hiking Jacket! It's lightweight, comfortable, and keeps me completely dry even in heavy rain. The adjustable hood and cuffs provide a perfect fit, and the ventilation system keeps me from getting too hot during intense hikes. Highly recommended! - -2) **Rating:** 4 - **Review:** The RainGuard Hiking Jacket is a reliable companion for outdoor adventures. It effectively repels water, and the sealed seams ensure no moisture gets in. The multiple pockets offer convenient storage options, and the adjustable waist and hem provide a customizable fit. The only improvement I would suggest is adding pit zips for better ventilation. - -3) **Rating:** 5 - **Review:** I'm extremely impressed with the RainGuard Hiking Jacket. It's well-designed and offers excellent protection against the elements. The durable construction gives me confidence in its longevity, and the hood is adjustable to provide optimal coverage. The jacket also packs down easily, making it convenient for travel. Highly satisfied with this purchase! - -4) **Rating:** 3 - **Review:** The RainGuard Hiking Jacket is decent for light rain showers, but it falls short in heavy downpours. It kept me dry initially, but after prolonged exposure, some moisture seeped through. The fit is comfortable, and the zippers are sturdy, but I would recommend reinforcing the seams for better waterproofing. - -5) **Rating:** 4 - **Review:** The RainGuard Hiking Jacket performs well in most weather conditions. It effectively repels rain and wind, keeping me comfortable during hikes. The adjustable hood and cuffs allow for a snug fit, and the jacket is lightweight, making it easy to carry. However, I wish it had more insulation for colder temperatures. - -## FAQ -75) How breathable is the RainGuard Hiking Jacket? - The RainGuard Hiking Jacket features a breathable membrane, allowing moisture vapor to escape and preventing overheating during high-energy activities. - -76) Is the RainGuard Hiking Jacket true to size? - Generally, the RainGuard Hiking Jacket fits true to size. However, it is advised to refer to the sizing chart provided by the manufacturer to ensure the best fit. - -77) Can the RainGuard Hiking Jacket be packed into its pocket for storage? - Yes, the RainGuard Hiking Jacket can be packed into one of its zippered pockets, making it compact and easy to carry when not in use. - -78) How do I clean the RainGuard Hiking Jacket? - To clean the RainGuard Hiking Jacket, machine wash it on a gentle cycle using cold water and mild detergent, then hang it to dry. Do not use bleach, fabric softeners, or dry cleaning, as they may damage the jacket's performance. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_18.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_18.md deleted file mode 100644 index 5bc7fc36..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_18.md +++ /dev/null @@ -1,167 +0,0 @@ -# Information about product item_number: 18 -TrekStar Hiking Sandals, price $70, - -## Brand -TrekReady - -## Category -Hiking Footwear - -## Features -- Durable and lightweight construction for comfortable hiking -- Breathable and quick-drying materials to keep your feet cool and dry -- Adjustable straps for a customizable and secure fit -- Cushioned footbed for enhanced comfort and support -- Rubber outsole with deep treads for excellent traction on various terrains -- Toe protection to shield against rocks and debris -- Drainage system to prevent water accumulation and improve drying time -- Shock-absorbing midsole for reduced impact on joints -- Removable insole for easy cleaning and maintenance -- Versatile design suitable for hiking, walking, and outdoor activities -- Available in various sizes and colors to suit personal preferences -- Made with high-quality materials for durability and long-lasting performance - -## Technical Specs -Based on the provided features, here are the technical specifications for the TrekStar Hiking Sandals: - -## Technical Specs - -- **Best Use:** Hiking -- **Material:** Synthetic -- **Closure:** Adjustable straps -- **Footbed:** Cushioned footbed -- **Outsole:** Rubber with deep treads -- **Toe Protection:** Yes -- **Drainage System:** Yes -- **Midsole:** Shock-absorbing -- **Insole:** Removable -- **Suitable For:** Hiking, walking, outdoor activities -- **Sizes Available:** Various sizes -- **Colors Available:** Brown -- **Weight:** 1.5 lbs -- **Dimensions:** 7-12 (US) - -Sure! Here's a user guide for the TrekStar Hiking Sandals: - -## User Guide/Manual: - -1. Product Overview - -The TrekStar Hiking Sandals are designed to provide comfort, support, and traction for your outdoor adventures. They feature durable materials, adjustable straps, and a cushioned footbed for a customized fit and enhanced walking experience. The sandals are suitable for hiking, walking, and various outdoor activities. - -2. Proper Fit and Sizing - -It is essential to choose the correct size for your TrekStar Hiking Sandals to ensure a proper fit. Follow these steps to determine your size: - -1. Measure your foot length from the back of your heel to the tip of your longest toe. -2. Refer to the size chart provided by TrekStar to find your corresponding size. -3. Try on the sandals and make sure they feel snug but not too tight. The straps should be adjustable for a secure fit. - -3. Adjusting the Straps - -The TrekStar Hiking Sandals come with adjustable straps for a personalized fit. Follow these instructions to adjust the straps: - -1. To loosen the straps, lift the buckle and pull the strap through. -2. To tighten the straps, pull the loose end of the strap while holding the buckle in place. -3. Adjust the straps on both the forefoot and ankle areas to achieve the desired fit. - -4. Putting on and Taking off the Sandals - -To put on the TrekStar Hiking Sandals: - -1. Loosen the straps and open the sandals. -2. Slide your foot into the sandal, ensuring your heel is properly positioned on the footbed. -3. Adjust the straps for a secure and comfortable fit. - -To take off the TrekStar Hiking Sandals: - -1. Loosen the straps on both the forefoot and ankle areas. -2. Open the sandals and gently slide your foot out. - -5. Care and Maintenance - -Proper care and maintenance will prolong the life of your TrekStar Hiking Sandals. Follow these guidelines: - -1. After each use, remove any dirt or debris by wiping the sandals with a damp cloth. -2. Avoid exposing the sandals to excessive heat or direct sunlight, as this may cause damage to the materials. -3. If the sandals become wet, allow them to air dry in a well-ventilated area away from direct heat sources. -4. Regularly check the straps, buckles, and footbed for any signs of wear or damage. If any issues are found, discontinue use and contact customer support. - -## Caution Information -1. Do not wear the sandals without properly adjusting the straps. Always ensure a secure and comfortable fit by adjusting the straps according to your foot size and preference. - -2. Do not use the sandals for activities they are not designed for. The TrekStar Hiking Sandals are intended for hiking and outdoor activities. Avoid using them for sports or activities with high impact or excessive wear. - -3. Do not expose the sandals to extreme temperatures. Avoid leaving them in direct sunlight, near heat sources, or in hot vehicles, as this can cause damage to the materials and affect their performance. - -4. Do not neglect regular cleaning and maintenance. Proper care is important to keep your sandals in good condition. Clean them regularly, remove dirt and debris, and inspect them for any signs of wear or damage. - -5. Do not immerse the sandals in water for extended periods. While the sandals are water-resistant, they are not designed for prolonged submersion. Avoid wearing them in deep water or submerging them completely. - -6. Do not ignore signs of discomfort or pain. If you experience any discomfort or pain while wearing the sandals, discontinue use and assess the fit and sizing. It's important to ensure the sandals provide proper support and do not cause discomfort or injuries. - -7. Do not modify or alter the sandals. Avoid making any structural or cosmetic changes to the sandals, such as cutting or gluing. Modifying the sandals can compromise their integrity and void any warranty or return policies. - -8. Do not rely solely on the sandals for protection in extreme weather conditions. While the TrekStar Hiking Sandals offer some level of protection, they are not designed for extreme cold, wet or hazardous conditions. Use appropriate additional gear and take necessary precautions. - -9. Do not store the sandals in a damp or humid environment. Make sure to store the sandals in a dry and well-ventilated area to prevent the growth of mold or mildew. - -10. Do not disregard the warranty terms and conditions. Familiarize yourself with the warranty information provided with the sandals and follow the recommended guidelines for warranty claims and returns. - -## Warranty Information -Certainly! Here's the Warranty Information for the TrekStar Hiking Sandals: - -## Warranty Information -- Warranty Coverage: The TrekStar Hiking Sandals are covered by a **1-year limited warranty** from the date of purchase. The warranty covers manufacturing defects and workmanship under normal use. - -- Warranty Claims: If you encounter any issues with your sandals during the warranty period, please contact our customer care team (details provided below) to initiate a warranty claim. Our team will guide you through the process and assist you with the necessary steps. - -- Exclusions: The warranty does not cover damage caused by improper use, negligence, accidents, normal wear and tear, unauthorized repairs or modifications, or failure to follow the care instructions provided with the sandals. - -- Resolution Options: In the event of a valid warranty claim, we will, at our discretion, either repair the sandals, replace them with an equivalent model, or provide a refund for the purchase price. The resolution option will be determined based on the nature of the issue and available stock. - -- Proof of Purchase: To initiate a warranty claim, you will need to provide a proof of purchase, such as a receipt or order confirmation, clearly indicating the date and place of purchase. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer care team: -**TrekStar Hiking Sandals Customer Care** -- Phone: 1-800-123-4567 -- Email: support@trekstar.com -- Hours of Operation: Monday to Friday, 9:00 AM to 5:00 PM (EST) - -Our customer care team is dedicated to providing excellent service and ensuring your satisfaction with our products. - -Please note that the warranty is valid only for the original purchaser and is non-transferable. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -1) **Rating: 5** - **Review:** I absolutely love my TrekStar Hiking Sandals! They provide excellent comfort and support during long hikes. The adjustable straps allow for a perfect fit, and the durable construction gives me confidence on rugged terrains. These sandals are a must-have for any outdoor enthusiast! - -2) **Rating: 4** - **Review:** The TrekStar Hiking Sandals are great for warm weather adventures. They have a sturdy sole that offers good traction, and the open design keeps my feet cool. The straps are easy to adjust, ensuring a secure fit. The only improvement I would suggest is adding more cushioning for added comfort. - -3) **Rating: 3** - **Review:** The TrekStar Hiking Sandals are decent for the price. They are lightweight and breathable, making them suitable for summer hikes. However, I found that the sizing runs slightly small, so I recommend going up a size for a more comfortable fit. The durability could also be improved for longer-lasting use. - -4) **Rating: 5** - **Review:** I am impressed with the quality of the TrekStar Hiking Sandals. They are durable and can withstand various terrains. The adjustable straps provide a customized fit, and the sandals offer good arch support. I've worn them on multiple hikes, and they have held up exceptionally well. Highly recommended! - -5) **Rating: 4** - **Review:** The TrekStar Hiking Sandals are a reliable choice for outdoor activities. They offer excellent breathability, keeping my feet cool on hot days. The traction is reliable on most surfaces, and the adjustable straps allow for a secure and comfortable fit. My only suggestion would be to add more padding to the footbed for enhanced comfort. - -## FAQ -79) Are the TrekStar Hiking Sandals suitable for water-based activities? - Yes, the TrekStar Hiking Sandals are designed with quick-drying synthetic materials and excellent traction, making them suitable for activities such as river crossings and beach walks. - -80) How do I find the right size for the TrekStar Hiking Sandals? - To find the right size for the TrekStar Hiking Sandals, refer to the manufacturer's sizing chart and measure your feet according to their guidelines. - -81) Can I wear the TrekStar Hiking Sandals with socks? - While the TrekStar Hiking Sandals are designed to be worn barefoot, you may choose to wear them with thin, moisture-wicking socks for additional comfort and blister prevention. - -82) How do I clean and maintain the TrekStar Hiking Sandals? - To clean the TrekStar Hiking Sandals, simply rinse them with water and use a soft brush to remove any dirt or debris. Allow them to air dry away from direct sunlight. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_19.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_19.md deleted file mode 100644 index 6fad9edb..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_19.md +++ /dev/null @@ -1,151 +0,0 @@ -# Information about product item_number: 19 -Adventure Dining Table, price $90, - -## Brand -CampBuddy - -## Category -Camping Tables - -## Features -- Durable Construction: Made from high-quality materials to ensure long-lasting performance in outdoor environments. -- Portable and Lightweight: Designed to be compact and lightweight for easy transportation and setup during outdoor adventures. -- Adjustable Height: Offers adjustable height settings to accommodate various seating arrangements and preferences. -- Spacious Surface: Provides ample surface area to comfortably accommodate meals, drinks, and other essentials. -- Easy Setup: Quick and hassle-free setup with user-friendly mechanisms and instructions. -- Weather Resistant: Designed to withstand outdoor conditions, including sun, rain, and moisture. -- Sturdy and Stable: Features a robust and stable frame that can support the weight of food, dishes, and utensils. -- Folding Design: Enables easy folding and compact storage when not in use, making it ideal for camping and travel. -- Versatile: Suitable for various outdoor activities such as camping, picnics, barbecues, and beach outings. -- Easy to Clean: Smooth surface and materials that are easy to wipe clean after use. - -## Technical Specs -**Best Use:** Outdoor dining, camping, picnics -**Material:** Aluminum -**Tabletop Material:** Sturdy and easy-to-clean surface -**Frame Material:** Strong and lightweight frame construction -**Adjustable Height:** Yes -**Foldable:** Yes -**Dimensions (when set up):** 60in x 30in x 28in -**Weight:** 20lbs - -## User Guide/Manual -### 1. Safety Guidelines - -- Before using the Adventure Dining Table, carefully read and understand all safety guidelines provided in this user guide. -- Always ensure the table is placed on a stable and level surface to prevent tipping or instability. -- Do not exceed the specified weight capacity of the table to avoid damage and potential injury. -- Keep children away from the table during assembly and use to prevent accidents. - -### 2. Assembly Instructions - -1. Unpack all components and verify that all parts are included. -2. Follow the provided assembly instructions specific to your Adventure Dining Table model. -3. Use the appropriate tools, if required, to securely attach the tabletop to the frame. -4. Ensure all connections and fasteners are tightened properly to guarantee stability. - -### 3. Operating Instructions - -- To set up the Adventure Dining Table, unfold the legs and secure them in place according to the manufacturer's instructions. -- Adjust the table height if applicable, ensuring it is suitable for your intended use. -- Place your dining items, such as plates, utensils, and food, on the tabletop with care. -- Use the table responsibly and avoid placing excessive weight on unsupported areas. - -### 4. Cleaning and Maintenance - -- After each use, remove any food debris and clean the tabletop with a mild detergent and water. -- Avoid using abrasive cleaners or harsh chemicals that may damage the table's surface. -- If the table becomes wet, dry it thoroughly before folding and storing to prevent mold or mildew growth. -- Store the Adventure Dining Table in a dry and secure location to protect it from the elements. - -### 5. Warranty Information - -The Adventure Dining Table comes with a limited warranty that covers manufacturing defects and workmanship issues. Please refer to the warranty card or the manufacturer's website for specific details on the warranty terms and conditions. - -### 6. Contact Information - -If you have any questions, concerns, or need assistance with your Adventure Dining Table, please contact our customer support team: - -- Customer Support: 1-800-123-4567 -- Email: support@adventurediningtable.com -- Website: www.adventurediningtable.com/support - -## Caution Information -1. **Do not exceed the weight capacity:** The Adventure Dining Table has a specified weight capacity. Do not exceed this limit to prevent damage to the table and potential injury. - -2. **Do not use as a step ladder or stool:** The Adventure Dining Table is designed for dining purposes only. Do not stand or sit on the table, as it may lead to instability and accidents. - -3. **Do not place hot objects directly on the tabletop:** The tabletop may not be heat-resistant. Always use heat-resistant mats or trivets to protect the surface from hot cookware or dishes. - -4. **Do not drag or slide the table on rough surfaces:** Avoid dragging or sliding the Adventure Dining Table on abrasive or uneven surfaces, as it may scratch or damage the table's legs or frame. - -5. **Do not leave the table exposed to extreme weather conditions:** Although the Adventure Dining Table is designed for outdoor use, prolonged exposure to extreme weather conditions such as heavy rain, snow, or intense sunlight may degrade its performance and durability. Store the table in a dry and secure location when not in use. - -6. **Do not dismantle or modify the table:** Do not attempt to dismantle or modify any parts of the Adventure Dining Table. Alterations to the original design may compromise its stability, safety, and warranty coverage. - -7. **Do not use harsh chemicals or abrasive cleaners:** Avoid using harsh chemicals, solvents, or abrasive cleaners on the tabletop or frame, as they may cause damage. Instead, use mild detergent and water for regular cleaning. - -8. **Do not leave sharp objects directly on the table:** To prevent scratches or cuts on the tabletop, avoid placing sharp objects directly on the surface. Use coasters or protective covers when necessary. - -9. **Do not use the table on unstable or uneven surfaces:** Ensure that the Adventure Dining Table is placed on a stable and level surface to prevent tipping or instability during use. - -10. **Do not leave children unattended near the table:** Always supervise children when they are near or using the Adventure Dining Table to prevent accidents or injuries. - -## Warranty Information - -The Adventure Dining Table comes with a limited warranty that covers manufacturing defects and faulty workmanship. The warranty terms and conditions are as follows: - -1. **Duration:** The Adventure Dining Table is covered by a warranty period of 1 year from the date of purchase. - -2. **Coverage:** The warranty covers defects in materials and workmanship under normal use and proper care. It includes issues such as structural defects, faulty hardware, or manufacturing flaws. - -3. **Exclusions:** The warranty does not cover damages resulting from misuse, abuse, accidents, improper assembly, modifications, normal wear and tear, or any damage caused by natural disasters or extreme weather conditions. - -4. **Claim Process:** In the event that you encounter a manufacturing defect or faulty workmanship covered by the warranty, please follow these steps: - - Contact our Customer Care within the warranty period and provide the necessary information about the issue. - - Our Customer Care team will guide you through the troubleshooting process, and if required, provide instructions for return or repair. - - Please retain the original proof of purchase (receipt or order confirmation) as it will be required to validate your warranty claim. - -5. **Resolution:** Based on the nature of the warranty claim, we will either repair or replace the defective part or the entire Adventure Dining Table at our discretion. If the exact model is no longer available, we will provide a comparable replacement. - -6. **Contact Information:** For any warranty claims or inquiries, please reach out to our Customer Care team using the following contact details: - - - Customer Care Phone: 1-800-123-4567 - - Customer Care Email: support@adventurediningtable.com - - Customer Care Hours: Monday to Friday, 9:00 AM to 5:00 PM (EST) - -Please note that this warranty is non-transferable and applies only to the original purchaser of the Adventure Dining Table. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping tables within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping tables within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping table purchases but from the same product brand. - -## Reviews -1) **Rating:** 5 - **Review:** I recently purchased the Adventure Dining Table Camping Stove, and it has been a game-changer for our outdoor adventures! The stove is compact, lightweight, and easy to set up. It provides a steady flame and quickly heats up our meals. The built-in windscreen is a great feature, as it keeps the flame protected on windy days. The cooking surface is spacious enough to accommodate multiple pots and pans. I highly recommend this stove to fellow campers who value convenience and efficiency. - -2) **Rating:** 4 - **Review:** The Adventure Dining Table Camping Stove has been a reliable companion on our camping trips. It's sturdy and well-built, ensuring stability while cooking. The flame control is precise, allowing us to adjust the heat according to our cooking needs. The stove heats up quickly and evenly, providing consistent performance. The compact design makes it easy to carry and store. The only improvement I would suggest is a more comprehensive user manual with detailed instructions for maintenance and cleaning. - -3) **Rating:** 3 - **Review:** I have mixed feelings about the Adventure Dining Table Camping Stove. On one hand, it's compact and lightweight, which is great for backpacking. The stove ignites easily and heats up quickly. However, I found the flame control to be a bit finicky, making it challenging to maintain a steady heat level. The cooking surface is also smaller than expected, limiting the size of pots and pans that can be used. Overall, it's an okay stove for basic cooking needs, but I would recommend exploring other options if you require more precise temperature control or larger cooking capacity. - -4) **Rating:** 5 - **Review:** I absolutely love the Adventure Dining Table Camping Stove! It's incredibly easy to use and provides consistent heat for cooking. The compact size is perfect for our camping trips, and the foldable design makes it effortless to pack and transport. The stove is durable and withstands outdoor conditions well. It has become an essential part of our camping gear, and I highly recommend it to anyone in need of a reliable and efficient camping stove. - -5) **Rating:** 4 - **Review:** The Adventure Dining Table Camping Stove is a reliable and affordable option for outdoor cooking. It's compact and lightweight, making it ideal for backpacking. The stove performs well, delivering a consistent flame and even heat distribution. The construction is sturdy, and the foldable legs provide stability on various surfaces. The only minor drawback is the lack of an included carrying case, which would have made transportation and storage more convenient. Overall, it's a great value for the price and a worthy addition to any camping setup. - -## FAQ -83) How much weight can the Adventure Dining Table support? - The Adventure Dining Table can support up to 100 lbs (45 kg) of evenly distributed weight, making it suitable for various outdoor dining and cooking needs. - -84) How do I set up the Adventure Dining Table? - The Adventure Dining Table features a foldable design with telescopic legs. Simply unfold the table, extend the legs to the desired height, and secure them in place using the locking mechanism. - -85) Is the Adventure Dining Table easy to clean? - Yes, the Adventure Dining Table has an easy-to-clean aluminum surface. Simply wipe it with a damp cloth or sponge and mild detergent to remove any dirt or spills. - -86) Can I use a camping stove on the Adventure Dining Table? - Yes, the Adventure Dining Table is designed to accommodate camping stoves, cooking utensils, and other outdoor dining essentials. However, ensure that the stove is stable and use caution when cooking with open flames. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_2.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_2.md deleted file mode 100644 index 4b28b562..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_2.md +++ /dev/null @@ -1,200 +0,0 @@ -# Information about product item_number: 2 -Adventurer Pro Backpack, price $90, - -## Brand -HikeMate - -## Category -Backpacks - -## Features -- 40L capacity for ample storage space -- Ergonomic design for comfortable carrying -- Durable nylon material for long-lasting performance -- Multiple compartments and pockets for organized storage -- Hydration system compatibility with a dedicated hydration bladder sleeve and tube port -- Adjustable and padded shoulder straps for a customized fit and enhanced comfort -- Adjustable sternum strap and hip belt for stability and weight distribution -- Compression straps to secure the load and reduce pack volume -- External attachment points and gear loops for attaching additional gear -- Rain cover included for protection against wet weather -- Laptop compartment or sleeve for safely carrying electronic devices -- Reflective accents for enhanced visibility in low light conditions -- Breathable back panel with airflow channels for ventilation -- Side mesh pockets for easy access to water bottles or snacks -- Lightweight construction for reduced burden on long hikes -- Reinforced haul handle for easy lifting and carrying - - -## Technical Specs -**Best Use**: Hiking -**Capacity**: 40 liters -**Material**: Nylon -**Color**: Blue -**Dimensions**: 24 inches x 14 inches x 8 inches (height x width x depth) -**Weight**: 2.5 lbs -**Waterproof**: No -**Number of Compartments**: Multiple -**Laptop Compartment**: No -**Hydration System Compatibility**: Yes -**Adjustable Straps**: Yes -**Hip Belt**: Yes -**Sternum Strap**: Yes -**External Attachment Points**: Yes -**Gear Loops**: Yes -**Rain Cover**: No -**Reflective Accents**: Yes -**Back Panel Ventilation**: Yes -**Side Mesh Pockets**: Yes -**Load Compression Straps**: Yes -**Haul Handle**: Yes - -## Adventurer Pro Backpack User Manual - -### Introduction - -Thank you for choosing the Adventurer Pro Backpack. This user manual provides instructions on how to use and maintain your backpack effectively. Please read this manual thoroughly before using the backpack to ensure optimal performance and longevity. - -### Package Contents - -Ensure that the package includes the following components: - -- Adventurer Pro Backpack -- User Manual - -If any components are missing or damaged, please contact our customer support immediately. - -### Backpack Overview - -The Adventurer Pro Backpack is designed to provide comfort, durability, and ample storage space for your outdoor adventures. Familiarize yourself with the key features of the backpack: - -- Ergonomic design for enhanced comfort during long hikes. -- Multiple compartments and pockets for efficient organization. -- Hydration system compatibility for convenient water access. -- Adjustable straps for a customized fit. -- Durable and water-resistant nylon material for reliable performance. - -## Backpack Adjustments - -### Shoulder Straps - -1. Put on the backpack and adjust the shoulder straps evenly on both sides. -2. Ensure the shoulder straps are snug but not too tight. They should distribute the weight evenly on your shoulders. -3. Adjust the length of the shoulder straps using the buckles to achieve a comfortable fit. - -### Chest Strap - -1. Fasten the chest strap across your chest and adjust its position to sit comfortably. -2. The chest strap helps distribute the weight and stabilize the backpack during strenuous activities. - -### Hip Belt - -1. Secure the hip belt around your hips and adjust its tightness for a snug fit. -2. The hip belt helps transfer the weight of the backpack to your hips, reducing strain on your shoulders and back. - -## Backpack Usage - -### Packing the Backpack - -1. Open the main compartment and organize your gear inside. -2. Utilize the various compartments and pockets to separate and secure your items. -3. Place heavier items closer to your back for better weight distribution. -4. Ensure that the weight is evenly distributed and the backpack is balanced. - -### Hydration System Setup - -1. If using a hydration system, locate the dedicated compartment or sleeve for the hydration reservoir. -2. Insert the hydration reservoir into the designated pocket and route the drinking tube through the opening or tube port. -3. Connect the drinking tube to the backpack's shoulder strap for easy access. - -### Adjusting the Backpack - -1. Throughout your hike, periodically adjust the shoulder straps, chest strap, and hip belt as needed to maintain a comfortable fit. -2. Proper adjustments ensure optimal weight distribution and prevent discomfort or strain during your adventure. - -### Removing the Backpack - -1. To remove the backpack, loosen the shoulder straps, chest strap, and hip belt. -2. Carefully slide the backpack off your shoulders while maintaining balance. -3. Place the backpack on a clean and dry surface. - -## Backpack Care and Maintenance - -- Clean the backpack regularly with a mild soap and water solution. -- Avoid using harsh chemicals or abrasive cleaners that can damage the fabric or coatings. -- Allow the backpack to air dry completely before storing it. -- Store the backpack in a cool, dry place away from direct sunlight. - -## Caution - -- Do not exceed the recommended weight capacity of the backpack to prevent strain or damage. -- Avoid dragging the backpack on rough surfaces to prevent abrasion and punctures. -- Do not use the backpack as a seat or support for heavy objects to avoid structural damage. - -## Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -We hope you enjoy your Adventurer Pro Backpack and have a fantastic outdoor experience! - -## Warranty Information - -**Warranty Duration:** The Adventurer Pro Backpack is covered by a 2-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as stitching defects, zipper malfunctions, or hardware failure. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the Adventurer Pro Backpack. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -Kindly note that the warranty period, coverage, and claim process are subject to change. Please refer to the warranty card included with your product for the most up-to-date and accurate information. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -6) **Rating:** 5 - **Review:** I am extremely happy with my Adventurer Pro Backpack! It has ample space, multiple compartments, and is super comfortable to wear. The hydration system compatibility is a major plus. I'm thrilled with this purchase! - -7) **Rating:** 4 - **Review:** I bought the Adventurer Pro Backpack, and while it's comfortable and has many useful features, I wish it came in more colors. The blue color just isn't my favorite. Overall, it's a good backpack. - -8) **Rating:** 5 - **Review:** The Adventurer Pro Backpack is perfect for my hiking trips. The ergonomic design and adjustable straps make it comfortable to wear all day, and the multiple compartments help me stay organized. - -9) **Rating:** 4 - **Review:** I like the Adventurer Pro Backpack, but I wish it had more external pockets for easy access to small items. It's comfortable and has many useful features, but this addition would make it even better. - -10) **Rating:** 5 - **Review:** This backpack is a game changer for my hiking adventures. The 40L capacity is perfect for extended trips, and the hydration system compatibility is extremely convenient. I highly recommend it to any serious hiker. - -## FAQ -6) What is the maximum weight capacity of the Adventurer Pro Backpack? - The Adventurer Pro Backpack is designed to hold up to 40 lbs of gear comfortably. - -7) Is the Adventurer Pro Backpack suitable for both men and women? - Yes, the adjustable straps and ergonomic design of the Adventurer Pro Backpack make it suitable for both men and women. - -8) Can I attach additional gear to the outside of the Adventurer Pro Backpack? - Yes, the Adventurer Pro Backpack features external attachment points for items such as trekking poles or a sleeping pad. - -9) Is the Adventurer Pro Backpack water-resistant? - The Adventurer Pro Backpack is made of water-resistant nylon material, which helps protect your gear from light rain. However, it is not completely waterproof. - -10) How do I clean and maintain the Adventurer Pro Backpack? - To clean the Adventurer Pro Backpack, use a damp cloth to wipe down the exterior and air dry. Avoid machine washing or using harsh chemicals. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_20.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_20.md deleted file mode 100644 index e4441682..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_20.md +++ /dev/null @@ -1,165 +0,0 @@ -# Information about product item_number: 20 -CompactCook Camping Stove, price $60, - -## Brand -CompactCook - -## Category -Camping Stoves - -## Features -- Lightweight and Compact Design: The CompactCook Camping Stove is designed to be lightweight and compact, making it easy to carry and transport during outdoor adventures. -- Efficient Cooking Performance: This camping stove delivers efficient cooking performance, allowing you to prepare meals quickly and easily. -- Adjustable Flame Control: The stove features an adjustable flame control mechanism, giving you the flexibility to adjust the heat intensity according to your cooking needs. -- Sturdy Construction: Made with durable materials, the CompactCook Camping Stove offers reliable performance and long-lasting durability, ensuring it can withstand rugged outdoor conditions. -- Wind-Resistant Design: The stove is designed with wind-resistant features, allowing it to maintain a steady flame even in windy conditions, ensuring efficient cooking. -- Easy Ignition: The stove features an easy ignition system, eliminating the need for matches or lighters. Simply press a button or turn a knob to ignite the flame. -- Foldable and Space-Saving: With its foldable design, the CompactCook Camping Stove can be easily stored and takes up minimal space in your camping gear. -- Compatible with Various Fuel Types: This camping stove is compatible with a wide range of fuel types, including butane, propane, and isobutane, providing versatility for your outdoor cooking needs. -- Built-in Safety Features: The stove is equipped with built-in safety features such as a flame control valve and a sturdy base to ensure safe and secure cooking. -- Ideal for Camping and Hiking: The CompactCook Camping Stove is specifically designed for camping and hiking adventures, making it an essential companion for outdoor enthusiasts. - -## Technical Specs - -Best Use: Camping, Hiking -Fuel Type: Butane, Propane, Isobutane -Ignition Type: Piezo-electric ignition -Flame Control: Adjustable -Cooking Performance: Efficient and fast cooking -Wind Resistance: Yes -Foldable Design: Yes -Compatibility: Compatible with most cookware -Built-in Safety Features: Flame control valve, sturdy base -Dimensions: 4.72 x 2.4 x 0.55 inches -Weight: 1.62 ounces - -## User Guide/Manual - -1. Safety Precautions -- Read and understand all instructions before using the camping stove. -- Only use the camping stove in well-ventilated outdoor areas. -- Keep children and pets away from the camping stove during operation. -- Do not touch the stove's burner when it is hot or in use. -- Use the stove on a stable and non-flammable surface. -- Keep flammable materials away from the stove. -- Always ensure the fuel canister is properly connected and secure. - -2. Product Overview -The CompactCook Camping Stove is a portable and lightweight stove designed for outdoor cooking. It features the following components: -- Burner: This is where the flame is produced for cooking. -- Control Valve: Use this to adjust the flame intensity. -- Fuel Canister Connection: Connect the fuel canister to the stove for operation. -- Sturdy Base: Provides stability during cooking. - -3. Setting Up the Stove -1. Choose a flat and stable surface to place the stove. -2. Ensure the control valve is in the "OFF" position. -3. Attach the fuel canister to the stove by following the manufacturer's instructions. -4. Verify that the fuel canister connection is secure. - -4. Operating Instructions -1. Check that all connections are secure before operating the stove. -2. Open the fuel canister valve. -3. Light the stove using the provided ignition system or a long-reach lighter. -4. Adjust the flame intensity using the control valve. -5. Place your cookware on the stove's burner. -6. After use, turn off the control valve and close the fuel canister valve. - -5. Maintenance and Cleaning -- Allow the stove to cool completely before handling or storing. -- Clean the stove regularly using mild soap and water. -- Ensure all parts are dry before storage to prevent corrosion. -- Check and replace any worn or damaged components. -- Store the stove in a clean and dry place. - -6. Troubleshooting -- If the flame goes out during operation, turn off the control valve, wait a few minutes, and relight the stove. -- If you experience issues with the stove's performance, consult the troubleshooting section of the manufacturer's manual or contact customer support. - -7. Warranty Information -Your CompactCook Camping Stove is covered by a limited warranty. For warranty details and contact information, refer to the warranty card included with your purchase. - -## Caution Information -1. **Do not use indoors:** The CompactCook Camping Stove is designed for outdoor use only. Do not attempt to use it indoors, as it can lead to carbon monoxide buildup and pose a serious health hazard. - -2. **Do not leave unattended:** Always supervise the stove while it is in use. Never leave the stove unattended, especially when there are open flames or hot surfaces. This helps prevent accidents and ensures your safety. - -3. **Do not operate near flammable materials:** Keep the stove away from flammable materials such as tents, dry grass, leaves, or any other combustible items. Maintain a safe distance to prevent accidental fires. - -4. **Do not touch the stove while hot:** Avoid touching the stove, particularly the burner and other metal parts, when it is in use or immediately after use. Allow sufficient time for the stove to cool down before handling. - -5. **Do not modify or alter the stove:** The CompactCook Camping Stove is designed and manufactured with specific safety features and specifications. Do not attempt to modify or alter the stove in any way, as it may compromise its performance and safety. - -6. **Do not use incompatible fuel:** Use only the recommended fuel type specified by the manufacturer. Using incompatible fuel sources can lead to malfunction, poor performance, or damage to the stove. - -7. **Do not overload the stove:** Avoid placing oversized or excessively heavy cookware on the stove. Overloading the stove can cause instability, tipping, or damage to the stove. - -8. **Do not store fuel canisters improperly:** Store fuel canisters in a cool, dry, and well-ventilated area, away from direct sunlight and sources of heat. Do not expose them to extreme temperatures or store them near open flames. - -9. **Do not use damaged components:** Inspect the stove and its components regularly for any signs of damage or wear. If you notice any cracks, dents, or other issues, refrain from using the stove and replace the damaged parts before using it again. - -10. **Do not disregard safety instructions:** Always follow the safety instructions provided by the manufacturer in the user manual or product documentation. Ignoring safety guidelines may lead to accidents, injuries, or damage to property. - -## Warranty Information - -**Warranty Coverage:** -During the warranty period, if any defects arise in the stove that are attributable to faulty materials or workmanship, we will, at our discretion, repair or replace the stove or its components free of charge. The warranty is valid only for the original purchaser and is non-transferable. - -**Exclusions:** -The warranty does not cover damages or malfunctions resulting from: -- Misuse, abuse, or improper handling of the stove -- Use of incompatible fuel sources or improper fuel storage -- Unauthorized modifications or alterations to the stove -- Normal wear and tear, including scratches, dents, or fading -- Accidental damage, acts of nature, or any other events beyond our control - -**Obtaining Warranty Service:** -In the event that you experience any issues with your CompactCook Camping Stove covered by this warranty, please contact our customer care department using the following contact details: - -- Customer Care Contact: AdventureGear Support -- Email: support@adventuregear.com -- Phone: 1-800-555-1234 -- Hours of Operation: Monday to Friday, 9:00 AM to 5:00 PM (Eastern Time) - -To initiate a warranty claim, please provide the following information: -- Your name and contact information -- Proof of purchase (receipt or order confirmation) -- Description of the issue and any relevant details - -Our customer care team will guide you through the warranty process and provide further instructions on how to proceed. - -**Limitations of Liability:** -Our liability under this warranty is limited to the repair or replacement of the defective stove or components. We are not liable for any indirect, incidental, or consequential damages arising from the use or inability to use the stove. - -Please refer to the user manual and safety instructions provided with your CompactCook Camping Stove for proper care, maintenance, and safety guidelines. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping stoves within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping stoves within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping stove purchases but from the same product brand. - -## Reviews -1) **Rating:** 5 - **Review:** I recently purchased the CompactCook Camping Stove, and it has exceeded my expectations. It's compact and lightweight, making it easy to carry during backpacking trips. The stove heats up quickly and provides a steady flame, allowing me to cook my meals efficiently. The build quality is impressive, and it's incredibly easy to set up and use. I highly recommend this stove for all camping enthusiasts! - -2) **Rating:** 4 - **Review:** The CompactCook Camping Stove is a reliable companion for outdoor adventures. It's sturdy and well-built, ensuring stability during cooking. The flame control is excellent, allowing precise temperature adjustments. The compact size is perfect for backpacking, and the included carrying case makes transportation a breeze. My only minor gripe is that the ignition system can be a bit finicky at times. Overall, it's a great stove for the price. - -3) **Rating:** 3 - **Review:** I have mixed feelings about the CompactCook Camping Stove. On one hand, it's lightweight and easy to assemble. However, I found the heat output to be a bit underwhelming, especially when trying to boil water quickly. The stability is decent, but I would have liked to see better wind resistance. It's an okay stove for basic cooking needs, but if you require more power and efficiency, you might want to explore other options. - -4) **Rating:** 5 - **Review:** The CompactCook Camping Stove is a fantastic addition to my camping gear. It's compact, lightweight, and incredibly efficient. I love how quickly it heats up, allowing me to prepare meals in no time. The flame control is precise, and the stability is impressive, even on uneven surfaces. The included carrying case is a bonus for easy storage and transportation. I'm extremely satisfied with this stove and would highly recommend it to fellow campers. - -5) **Rating:** 4 - **Review:** I've been using the CompactCook Camping Stove for a few camping trips now, and overall, it has performed well. The construction is solid, and it feels durable. The stove ignites easily, and the flame is consistent. The only drawback is that the burner size is a bit small, which limits the size of pots and pans you can use. If you're cooking for a larger group, you may need to consider a larger stove. Nonetheless, it's a reliable and convenient stove for solo or small group camping. - -## FAQ -87) What type of fuel does the CompactCook Camping Stove use? - The CompactCook Camping Stove is compatible with standard isobutane-propane canisters, which are widely available and easy to use. - -88) How long does it take to boil water using the CompactCook Camping Stove? - The CompactCook Camping Stove can bring 1 liter of water to a boil in approximately 3.5 minutes, depending on factors such as altitude and ambient temperature. - -89) Is the CompactCook Camping Stove suitable for cooking large meals? - While the CompactCook Camping Stove is designed for lightweight and compact cooking needs, it can accommodate pots and pans with a diameter of up to 8 inches (20 cm), allowing you to cook a variety of meals. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_3.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_3.md deleted file mode 100644 index c3a98864..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_3.md +++ /dev/null @@ -1,173 +0,0 @@ -# Information about product item_number: 3 -Summit Breeze Jacket, price $120, - -## Brand -MountainStyle - -## Category -Hiking Clothing - -## Features -- Lightweight design for easy carrying -- Windproof construction for protection against strong winds -- Water-resistant material to keep you dry in light rain -- Breathable fabric for enhanced comfort during activities -- Adjustable cuffs for a customized fit and added protection -- Available in sizes M, L, and XL -- Stylish black color for a sleek look -- Full-zip front closure for easy on and off -- Adjustable hood with drawcord for added coverage -- Zippered pockets for secure storage of essentials -- Inner lining for added comfort and warmth -- Durable polyester construction for long-lasting use -- Packable design for convenient storage and travel -- Elasticized hem for a snug fit -- Reflective accents for enhanced visibility in low light conditions - -## Technical Specs -**Best Use**: Hiking Clothing -**Material**: Polyester -**Color**: Black -**Available Sizes**: M, L, XL -**Weight**: 1 lb -**Dimensions**: 25 inches x 15 inches x 5 inches (height x width x depth) -**Waterproof**: No -**Number of Pockets**: Multiple -**Adjustable Cuffs**: Yes -**Hood**: Adjustable with drawcord -**Front Closure**: Full-zip -**Lining**: Yes -**Construction**: Windproof and water-resistant -**Packability**: Packable -**Reflective Accents**: Yes -**Breathability**: Yes -**Seam Sealed**: No -**Underarm Vents**: No -**Hem Drawcord**: Yes -**Storm Flap**: Yes -**Chin Guard**: Yes -**Articulated Elbows**: No -**DWR Coating**: No -**UPF Rating**: Not specified -**Care Instructions**: Machine washable - -## Summit Breeze Jacket User Manual -### Introduction - -Thank you for choosing the Summit Breeze Jacket. This user manual provides instructions on how to properly use and maintain your hiking jacket. Please read this manual carefully before using the product to ensure optimal performance and longevity. - -### Product Overview - -The Summit Breeze Jacket is a high-quality hiking jacket designed to provide protection and comfort during outdoor activities. It is made from durable and water-resistant polyester fabric, suitable for various weather conditions. The jacket features adjustable cuffs and a sleek black design, making it both functional and stylish. - -### Important Safety Information - -- Before using the Summit Breeze Jacket, please ensure that you are familiar with proper hiking safety guidelines and are adequately prepared for outdoor activities. -- This jacket is designed for hiking and outdoor use only. It is not intended for use in extreme weather conditions or as protective equipment for high-risk activities. - -### Wearing the Summit Breeze Jacket - -1. **Choosing the Right Size**: Select the appropriate size of the jacket based on your body measurements. Refer to the size chart provided to ensure a proper fit. - -2. **Putting on the Jacket**: Slide your arms through the sleeves of the jacket. Zip up the front zipper to the desired position. - -3. **Adjusting the Cuffs**: Use the hook-and-loop closures on the cuffs to adjust the fit around your wrists. Ensure a snug but comfortable fit. - -4. **Fastening the Zipper**: To secure the jacket, pull up the zipper and engage the zipper pull at the top. Make sure the zipper is fully closed for maximum protection against the elements. - -### Care and Maintenance - -Proper care and maintenance will help prolong the life of your Summit Breeze Jacket. Here are some guidelines to follow: - -- **Cleaning**: Clean the jacket regularly using mild soap and water. Avoid using harsh chemicals or bleach as they may damage the fabric. -- **Drying**: Allow the jacket to air dry in a well-ventilated area. Avoid exposing it to direct sunlight or using a dryer, as excessive heat can cause shrinkage or damage. -- **Storage**: When not in use, store the jacket in a cool, dry place. Avoid storing it in damp or humid conditions, as this can promote mold or mildew growth. -- **Repairs**: If your jacket requires repairs, contact our customer support for assistance. Attempting to repair the jacket yourself may void the warranty. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Caution: - -1. **Do not expose to open flames or high heat sources:** The Summit Breeze Jacket is not fire-resistant. Keep it away from open flames, stoves, heaters, or any high heat sources to prevent damage to the jacket and potential injury. - -2. **Avoid sharp objects:** Be cautious around sharp objects that can puncture or tear the jacket, such as thorns, branches, or sharp tools. Avoid contact to prevent damage to the fabric. - -3. **Do not use harsh chemicals:** Avoid using harsh chemicals, solvents, or bleach when cleaning the Summit Breeze Jacket. These substances can damage the fabric, zippers, or other components of the jacket. Instead, follow the recommended care instructions provided in the user manual. - -4. **Do not store the jacket when wet or damp:** Before storing the jacket, ensure that it is completely dry. Storing the jacket when wet or damp can lead to the growth of mold, mildew, and unpleasant odors. Hang it up or lay it flat in a well-ventilated area until it is fully dry. - -5. **Avoid excessive abrasion or friction:** While the Summit Breeze Jacket is designed to be durable, excessive rubbing or friction against rough surfaces can cause premature wear or damage. Avoid continuous contact with abrasive materials to maintain the jacket's integrity. - -6. **Do not iron or expose to high heat:** The Summit Breeze Jacket should not be ironed or exposed to high heat, including direct sunlight for extended periods. High heat can damage the fabric and affect its performance. If the jacket becomes wrinkled, use a low-heat setting or gently steam to remove wrinkles. - -7. **Avoid storing in compressed or tight spaces:** When not in use, store the Summit Breeze Jacket in a well-ventilated area with enough space to prevent excessive compression. Avoid tightly packing or crushing the jacket, as it may affect its loft, insulation, and overall performance. - -8. **Do not use fabric softeners:** Fabric softeners can leave residue on the jacket's fabric, which can reduce its breathability and water repellency. Avoid using fabric softeners during washing or drying. - -9. **Avoid prolonged exposure to extreme weather conditions:** While the Summit Breeze Jacket offers weather protection, it is not intended for prolonged exposure to extreme weather conditions. In severe weather, seek appropriate shelter or layer the jacket with additional protective gear for optimal comfort and safety. - -10. **Do not alter or modify the jacket:** Altering or modifying the Summit Breeze Jacket, such as adding or removing parts, can compromise its performance, fit, and warranty coverage. Avoid making any unauthorized modifications to ensure the jacket retains its intended functionality. - -These cautionary points will help you use and maintain the Summit Breeze Jacket effectively while avoiding potential issues or damage. - -## Warranty Information - -**Warranty Duration:** The Summit Breeze Jacket is covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as seam separation, zipper malfunction, or fabric defects. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the Summit Breeze Jacket. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -## Return Policy -- **If Membership status "None":** Customers can return the hiking clothing within 30 days of purchase for a full refund. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the customer. -- **If Membership status "Gold":** Customers can return the hiking clothing within 60 days of purchase for a full refund or exchange. The clothing must be unworn and in its original packaging with all tags attached. The return shipping cost will be borne by the company. -- **If Membership status "Platinum ":** Platinum members can return their hiking clothing within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all hiking clothing purchases. - -## Reviews -11) **Rating:** 5 - **Review:** The Summit Breeze Jacket is perfect for my hikes! It's lightweight, windproof, and breathable. I love the adjustable cuffs and water-resistant feature. Highly recommend! - -12) **Rating:** 4 - **Review:** I bought the Summit Breeze Jacket, and while it's water-resistant and breathable, I wish it had more pockets. It's still a great jacket for outdoor activities! - -13) **Rating:** 5 - **Review:** The Summit Breeze Jacket is my go-to for all my outdoor adventures. It keeps me warm and dry without being too heavy. The windproof feature is truly amazing on windy days! - -14) **Rating:** 4 - **Review:** I like the Summit Breeze Jacket, but I wish it came in more colors. It's comfortable and has many useful features, but the black color just isn't my favorite. Overall, it's a good jacket. - -15) **Rating:** 5 - **Review:** This jacket is a fantastic addition to my hiking gear. It's lightweight, windproof, and water-resistant, making it perfect for unpredictable weather. Love it! - -## FAQ -11) Can I wear the Summit Breeze Jacket as a standalone or as a layer? - The Summit Breeze Jacket can be worn as a standalone in mild weather or as a mid-layer in colder conditions. - -12) Are there any special care instructions for the Summit Breeze Jacket? - To maintain the Summit Breeze Jacket, machine wash on a gentle cycle with cold water and air dry. Do not use bleach or fabric softeners. - -13) Does the Summit Breeze Jacket have any reflective elements for visibility? - Yes, the Summit Breeze Jacket features reflective accents to help improve visibility in low-light conditions. - -14) Are the Summit Breeze Jacket's cuffs adjustable for a better fit? - Yes, the Summit Breeze Jacket has Velcro-adjustable cuffs to ensure a secure and comfortable fit. - -15) How breathable is the Summit Breeze Jacket during high-intensity activities? - The Summit Breeze Jacket is made of a breathable polyester material, which allows moisture to escape while maintaining wind and water resistance. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_4.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_4.md deleted file mode 100644 index cff0c098..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_4.md +++ /dev/null @@ -1,188 +0,0 @@ -# Information about product item_number: 4 -TrekReady Hiking Boots, price $140, - -## Brand -TrekReady - -## Category -Hiking Footwear - -## Features -- Durable construction for long-lasting performance -- Comfortable fit for extended hiking trips -- Excellent traction on various terrains -- Waterproof design to keep your feet dry -- Ankle support for stability and protection -- Breathable materials for enhanced comfort -- Cushioned insole for added comfort and support -- Toe protection against rocks and debris -- Quick-lace system for easy and secure adjustment -- Moisture-wicking lining to keep feet dry and fresh -- Padded collar and tongue for added comfort -- Lightweight design for reduced fatigue -- Reinforced stitching for added durability -- Shock-absorbing midsole for enhanced comfort on uneven surfaces - -## Technical Specs -**Product Category**: Hiking Footwear -**Brand**: TrekReady -**Material**: Leather -**Color**: Brown -**Dimensions**: 11 inches (length) x 4.5 inches (width) x 7 inches (height) -**Weight**: 3 lbs -**Waterproof**: Yes -**Ankle Support**: Yes -**Closure Type**: Lace-up -**Sole Material**: Rubber -**Midsole Material**: EVA (Ethylene-Vinyl Acetate) -**Upper Material**: Full-grain leather -**Lining Material**: Moisture-wicking fabric -**Toe Protection**: Yes -**Breathable**: Yes -**Traction**: Multi-directional lug pattern -**Cushioned Insole**: Yes -**Collar and Tongue**: Padded -**Shock Absorption**: Yes -**Reinforced Stitching**: Yes - -## TrekReady Hiking Boots User Guide - -Thank you for choosing the TrekReady Hiking Boots. This user guide provides instructions on how to properly use, maintain, and get the best performance out of your hiking boots. Please read this guide thoroughly before using the product. - -### 1. Introduction - -Welcome to the TrekReady Hiking Boots User Guide. This guide contains important information to help you make the most of your hiking experience with our boots. Please read this guide carefully before using the product. - -### 2. Product Overview - -The TrekReady Hiking Boots are designed for durability, comfort, and performance on various terrains. They feature high-quality leather construction, a rugged outsole for excellent traction, and ankle support for stability. These boots are suitable for hiking, backpacking, and other outdoor activities. - -### 3. Sizing and Fit - -It is important to choose the correct size and achieve a proper fit for optimal performance and comfort. Follow these steps to determine the right size and achieve a good fit: - -- Refer to the size chart provided on our website or product packaging. -- Measure your foot length and width accurately. -- Try on the boots with appropriate hiking socks to ensure a snug but not overly tight fit. -- Walk around to assess the comfort and support of the boots. -- If needed, adjust the lacing system to customize the fit. - -### 4. Proper Care and Maintenance - -To prolong the life of your TrekReady Hiking Boots and maintain their performance, follow these care and maintenance guidelines: - -- Clean the boots regularly using a soft brush or cloth to remove dirt and debris. -- Use a mild soap or specialized boot cleaner for stubborn stains. -- Allow the boots to air dry naturally. Avoid direct heat sources. -- Condition the leather periodically to keep it supple and prevent cracking. -- Inspect the boots for any signs of damage or wear and address them promptly. - -### 5. Break-in Period - -New hiking boots require a break-in period to mold to your feet and prevent discomfort during long hikes. Follow these tips for a smooth break-in process: - -- Wear the boots for short periods initially to gradually break them in. -- Start with shorter hikes and gradually increase the duration and intensity. -- Use proper hiking socks and adjust the lacing for a secure fit. -- Pay attention to any hot spots or discomfort and make necessary adjustments. -- Over time, the boots will adapt to your feet, providing increased comfort and support. - -### 6. Trail Safety Tips - -When using the TrekReady Hiking Boots, it is important to prioritize safety. Consider the following tips for a safe and enjoyable hiking experience: - -- Always inform someone about your hiking plans, including the route and estimated return time. -- Check the weather forecast and dress accordingly. Bring appropriate gear for changing weather conditions. -- Carry essential items such as a map, compass, first aid kit, and sufficient water and food. -- Familiarize yourself with the trail, including any potential hazards or restrictions. -- Use proper hiking techniques and be mindful of your surroundings to prevent accidents. - -### 7. Troubleshooting - -If you encounter any issues or have concerns about your TrekReady Hiking Boots, refer to the following troubleshooting tips: - -- If experiencing discomfort, ensure that the boots are properly sized and laced. -- Check for signs of wear, damage, or loose stitching. Address any issues promptly. -- If the outsole loses traction, clean the treads to remove dirt and debris. -- For persistent issues or questions, contact our customer support for further assistance. - -## Caution: - -1. **Do not use the boots for activities they are not designed for:** Avoid using the TrekReady Hiking Boots for activities such as running, rock climbing, or any other sports where specialized footwear is required. These boots are specifically designed for hiking purposes. - -2. **Do not submerge the boots in water:** While the boots are water-resistant, they are not fully waterproof. Avoid submerging them in water or wearing them in extremely wet conditions, as it may compromise their performance and cause damage. - -3. **Do not use harsh chemicals for cleaning:** Avoid using harsh chemicals, solvents, or abrasive cleaners when cleaning the boots. Instead, use mild soap and water to gently clean any dirt or stains. Harsh chemicals can damage the materials and affect the performance of the boots. - -4. **Do not expose the boots to extreme temperatures:** Avoid exposing the boots to extreme heat or cold for extended periods. Extreme temperatures can affect the integrity of the materials and potentially damage the boots. Store them in a cool and dry place when not in use. - -5. **Do not ignore signs of wear and tear:** Regularly inspect your TrekReady Hiking Boots for any signs of wear and tear, such as frayed laces, worn-out soles, or loose stitching. If you notice any damage, it is recommended to repair or replace the boots to maintain their performance and safety. - -6. **Do not ignore proper fit and sizing:** Ensure that you choose the correct size and fit for your feet when purchasing the TrekReady Hiking Boots. Wearing ill-fitting boots can lead to discomfort, blisters, and potential foot injuries. Take the time to try them on and make necessary adjustments for a proper fit. - -7. **Do not neglect proper maintenance:** Proper maintenance is essential to prolong the lifespan of your TrekReady Hiking Boots. Regularly clean and dry the boots after each use, store them in a suitable environment, and follow the care instructions provided by the manufacturer. - -8. **Do not disregard safety precautions:** While the TrekReady Hiking Boots provide support and protection, they do not guarantee immunity from accidents or injuries. Always exercise caution and follow proper hiking safety guidelines, such as using trekking poles, wearing appropriate clothing, and being aware of your surroundings. - -By keeping these "not-to-do" points in mind, you can ensure the optimal performance, durability, and safety of your TrekReady Hiking Boots. - -## Warranty Information - -**Warranty Duration:** The TrekReady Hiking Boots are covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as sole separation, stitching defects, or hardware malfunctions. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the TrekReady Hiking Boots. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Return Policy - -## Reviews -16) **Rating:** 5 - **Review:** The TrekReady Hiking Boots are incredibly comfortable and durable. The excellent traction and waterproof design make them perfect for all my hiking adventures. Highly recommend! - -17) **Rating:** 4 - **Review:** I bought the TrekReady Hiking Boots, and while they provide great ankle support and traction, they took some time to break in. Overall, they're good boots for hiking. - -18) **Rating:** 5 - **Review:** The TrekReady Hiking Boots have exceeded my expectations. They're comfortable, waterproof, and the ankle support is fantastic. I won't go hiking without them! - -19) **Rating:** 4 - **Review:** I like the TrekReady Hiking Boots, but I wish they were available in more colors. The brown color is nice, but I would prefer something more unique. Overall, they're great boots. - -20) **Rating:** 5 - **Review:** These hiking boots are a game changer for my outdoor adventures. They're extremely comfortable, provide excellent traction, and keep my feet dry in wet conditions. Love them! - -## FAQ -16) How do the TrekReady Hiking Boots provide ankle support? - The TrekReady Hiking Boots feature a high-top design and padded collar, which help to stabilize and support the ankle during hikes. - -17) What type of lacing system do the TrekReady Hiking Boots use? - The TrekReady Hiking Boots use a traditional lace-up system with metal eyelets for a secure and adjustable fit. - -18) Can the TrekReady Hiking Boots be worn for everyday use or just for hiking? - While the TrekReady Hiking Boots are designed primarily for hiking, they can also be worn for everyday use if you find them comfortable. - -19) How should I care for and maintain my TrekReady Hiking Boots? - To clean the TrekReady Hiking Boots, use a soft brush or cloth to remove dirt and debris. Condition the leather periodically with a leather conditioner to maintain its durability and water-resistance. - -20) Do the TrekReady Hiking Boots have a break-in period? - The TrekReady Hiking Boots may require a short break-in period to become more comfortable and form to the contours of your feet. It's recommended to wear them for shorter walks before taking them on long hikes. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_5.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_5.md deleted file mode 100644 index 192b2e6a..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_5.md +++ /dev/null @@ -1,221 +0,0 @@ -# Information about product item_number: 5 -BaseCamp Folding Table, price $60, - -## Brand -CampBuddy - -## Category -Camping Tables - -## Features -- Lightweight and durable aluminum construction -- Foldable design with a compact size for easy storage and transport -- Adjustable legs for different height settings and uneven terrain -- Large tabletop dimensions of 48in x 24in, providing ample space for meals, games, and other activities -- Sturdy and stable structure capable of supporting various items -- Quick and easy setup without the need for additional tools -- Rust-resistant and weather-resistant for outdoor use -- Built-in handle for convenient carrying -- Integrated cup holders or mesh pockets for holding drinks or small items -- Non-slip feet for added stability on different surfaces -- Versatile usage for camping, picnics, backyard parties, and other outdoor events - -## Technical Specifications -- **Material**: Aluminum -- **Color**: Silver -- **Dimensions**: 48 inches x 24 inches x 24 inches (Length x Width x Height) -- **Weight**: 15 lbs -- **Maximum Weight Capacity**: Up to a certain weight limit (specific weight limit not provided) -- **Folding Mechanism**: Yes -- **Adjustable Legs**: Yes -- **Tabletop Surface**: Smooth and easy to clean -- **Portability**: Highly portable and easy to carry -- **Stability**: Sturdy and stable construction -- **Weather Resistance**: Resistant to rust and suitable for outdoor use -- **Assembly**: Tool-free assembly -- **Carrying Handle**: Yes -- **Storage Features**: Built-in storage compartments or pockets -- **Frame Design**: Reinforced frame for added durability -- **Leg Locking Mechanism**: Secure locking system to ensure stability during use -- **Table Height**: Adjustable height settings for versatility -- **Transport Bag**: Included for convenient storage and transportation -- **Leg Caps**: Non-slip leg caps for stability on various surfaces -- **Tabletop Design**: Flat and spacious tabletop surface for multiple uses -- **Compact Storage**: Folds down to a compact size for space-saving storage -- **Quick Setup**: Easy and quick setup without the need for additional tools -- **UV Protection**: Resistant to sun damage and fading -- **Carry Weight**: Weight distribution design for comfortable carrying - -## BaseCamp Folding Table User Guide - -Thank you for choosing the BaseCamp Folding Table. This user guide provides instructions on how to use and maintain your folding table effectively. - -### 1. Introduction - -The BaseCamp Folding Table is a versatile and portable table designed for outdoor camping, picnics, and other recreational activities. With its lightweight and foldable design, it provides convenience and functionality for your outdoor adventures. - -Please read this user guide carefully before using the BaseCamp Folding Table to ensure proper assembly, use, and storage. - -### 2. Unpacking and Inspection - -When you receive your BaseCamp Folding Table, carefully unpack and inspect the contents to ensure everything is in good condition and all components are included. The package should include: - -- BaseCamp Folding Table -- Table legs -- Carrying bag -- User Guide - -If any parts are missing or damaged, please contact our customer support for assistance. - -### 3. Table Setup - -Follow these steps to set up the BaseCamp Folding Table: - -#### Step 1: Unfolding the Table - -1. Remove the table and legs from the carrying bag. -2. Unfold the table by gently pulling the sides apart. -3. Ensure that the table locks into place securely. - -#### Step 2: Attaching the Legs - -1. Locate the designated leg attachment points on the underside of the table. -2. Insert the legs into the attachment points until they click into place. -3. Ensure that the legs are fully extended and locked securely. - -#### Step 3: Adjusting the Table Height (if applicable) - -1. If your BaseCamp Folding Table has adjustable height settings, locate the height adjustment mechanism. -2. Adjust the table height to your desired position. -3. Ensure that the height adjustment mechanism is locked securely. - -### 4. Table Folding and Storage - -Follow these steps to fold and store the BaseCamp Folding Table: - -#### Step 1: Detaching the Legs - -1. Remove any items from the table surface. -2. Press the leg release buttons or mechanisms to unlock the legs. -3. Gently pull the legs out of the attachment points. - -#### Step 2: Folding the Table - -1. Collapse the table by folding the sides towards the center. -2. Ensure that the table folds flat and the locking mechanisms engage. - -#### Step 3: Storing the Table - -1. Clean the table surface if necessary. -2. Place the folded table into the carrying bag. -3. Ensure that the bag is securely closed. - -### 5. Cleaning and Maintenance - -To keep your BaseCamp Folding Table in good condition, follow these cleaning and maintenance guidelines: - -- Clean the table surface with mild soap and water. -- Avoid using abrasive cleaners or solvents that may damage the table. -- Ensure the table is completely dry before folding and storing it. -- Store the table in a cool, dry place away from direct sunlight. - -### 6. Safety Precautions - -Please observe the following safety precautions while using the BaseCamp Folding Table: - -- Do not exceed the table's maximum weight capacity. -- Avoid placing hot objects directly on the table surface. -- Ensure the table is set up on a stable and level surface. -- Keep fingers and hands away from the table's folding mechanisms. -- Do not use the table as a step ladder or for purposes other than intended. - -If you have any questions or need further assistance, please contact our customer support using the provided contact information. We hope you enjoy using your BaseCamp Folding Table for all your outdoor activities! - -## Cautions: - -1. **Do not exceed the weight capacity:** The BaseCamp Folding Table has a specified weight capacity. Avoid placing objects or applying weight that exceeds the recommended limit to prevent damage or collapse of the table. - -2. **Do not use as a step ladder:** The BaseCamp Folding Table is designed for use as a table surface. Do not stand or climb on the table, as it may result in instability and potential injury. - -3. **Avoid placing hot objects directly on the table surface:** The table surface may not be designed to withstand direct contact with hot objects. Use appropriate heat-resistant mats or trivets to protect the table surface and prevent damage. - -4. **Avoid uneven or unstable surfaces:** When setting up the table, ensure that it is placed on a stable and level surface. Avoid using the table on uneven or unstable ground, as it may cause the table to tip or collapse. - -5. **Do not force the table during setup or folding:** Use gentle and controlled movements when unfolding, setting up, or folding the table. Avoid using excessive force, as it may damage the table or its locking mechanisms. - -6. **Do not store the table when wet or dirty:** Before storing the BaseCamp Folding Table, ensure that it is clean and completely dry. Storing the table while it is wet or dirty can lead to mold, mildew, or damage to the table material. - -7. **Avoid placing sharp objects directly on the table surface:** To prevent scratches or punctures, avoid placing sharp objects directly on the table surface. Use protective covers or mats when working with sharp tools or utensils. - -8. **Do not modify or alter the table:** Do not attempt to modify or alter the BaseCamp Folding Table in any way. Modifying the table may compromise its structural integrity and could result in accidents or injury. - -9. **Keep fingers and hands clear of folding mechanisms:** Exercise caution when folding or unfolding the table to prevent fingers or hands from being caught in the folding mechanisms. Always keep your hands clear of the moving parts during setup and folding. - -10. **Do not leave the table unattended in windy conditions:** In windy conditions, secure the table properly or consider folding and storing it to prevent it from being blown away or damaged. - -Following these cautions will help ensure the safe and proper use of your BaseCamp Folding Table, prolong its lifespan, and enhance your outdoor experience. - -## Warranty Information - -Thank you for choosing the BaseCamp Folding Table. This section provides details about the warranty coverage for your product. - -- **Warranty Duration:** The BaseCamp Folding Table is covered by a limited warranty for a period of 1 year from the date of purchase. - -- **Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as structural defects, faulty hinges, or table surface irregularities that affect the table's functionality. - -- **Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow the product's care and maintenance instructions. Additionally, the warranty does not cover any incidental or consequential damages. - -- **Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -- **Warranty Remedies:** Depending on the nature of the warranty claim and at our discretion, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement. - -- **Limitations:** The warranty is non-transferable and applies only to the original purchaser of the BaseCamp Folding Table. It is valid only when the product is purchased from an authorized retailer. - -- **Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. Please retain your proof of purchase as it will be required to verify warranty eligibility. -We appreciate your trust in our product and strive to provide you with excellent customer service. Enjoy your BaseCamp Folding Table and have a wonderful outdoor adventure! - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@example.com - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping tables within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping tables within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping table purchases but from the same product brand. - -## Reviews -21) **Rating:** 5 - **Review:** The BaseCamp Folding Table is perfect for our camping trips. It's lightweight, portable, and easy to clean. The foldable design makes it convenient to store and transport. Love it! - -22) **Rating:** 4 - **Review:** I bought the BaseCamp Folding Table, and while it's sturdy and portable, I wish it had adjustable leg heights. Overall, it's a good camping table. - -23) **Rating:** 5 - **Review:** The BaseCamp Folding Table has been a fantastic addition to our camping gear. It's easy to set up and provides ample space for cooking and dining. Highly recommend! - -24) **Rating:** 4 - **Review:** I like the BaseCamp Folding Table, but I wish it came with a carrying case. It's lightweight and portable, but a case would make it even easier to transport. Overall, it's a great table. - -25) **Rating:** 5 - **Review:** This folding table is perfect for our family camping trips. It's easy to set up, sturdy, and provides enough space for our cooking needs. The lightweight design is a big plus! - -## FAQ -21) Can the BaseCamp Folding Table support heavy pots and pans? - Yes, the BaseCamp Folding Table has a sturdy aluminum construction and can support up to 50 lbs of weight. - -22) How do I set up and fold the BaseCamp Folding Table? - The BaseCamp Folding Table features a collapsible design with foldable legs and a roll-up tabletop. Simply unfold the legs, secure the tabletop, and attach the support bars. To fold, reverse the process. - -23) Can the BaseCamp Folding Table be used on uneven terrain? - The BaseCamp Folding Table has adjustable leg extensions that can be used to level the table on uneven terrain. - -24) Does the BaseCamp Folding Table come with a carrying case? - Yes, the BaseCamp Folding Table includes a carrying case for easy transport and storage. - -25) What is the best way to clean the BaseCamp Folding Table? - To clean the BaseCamp Folding Table, simply wipe the aluminum surface with a damp cloth and mild detergent, then air dry. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_6.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_6.md deleted file mode 100644 index 7367ea83..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_6.md +++ /dev/null @@ -1,219 +0,0 @@ -# Information about product item_number: 6 -EcoFire Camping Stove, price $80, - -## Brand -EcoFire - -## Category -Camping Stoves - -## Features -- Fuel-efficient: Designed to maximize fuel usage and minimize waste -- Compact: Portable and space-saving design, ideal for camping and outdoor adventures -- Durable: Constructed with high-quality stainless steel for long-lasting durability -- Easy to use: Simple and intuitive operation for hassle-free cooking -- Wind protection: Provides effective wind resistance to maintain steady heat output -- Lightweight: Weighs only 4 lbs, making it easy to carry and transport -- Quick setup: Sets up quickly and easily, saving time and effort -- Heat control: Adjustable flame control for precise temperature regulation -- Versatile: Suitable for various cooking needs, including boiling, simmering, and grilling -- Stable: Sturdy construction ensures stability during use -- Cooking efficiency: Efficient heat transfer for faster cooking times -- Safety features: Includes safety mechanisms to prevent accidents and ensure user protection -- Compatibility: Works with a variety of fuel sources (specific fuel sources not provided) -- Easy maintenance: Simple cleaning and maintenance process -- Compact storage: Folds down or disassembles for convenient storage when not in use -- Cooking surface: Provides ample space for pots, pans, and other cookware -- Heat distribution: Even heat distribution for consistent cooking results -- Carry case: Includes a carrying case for easy transportation and storage -- Environmentally friendly: Designed with sustainability in mind, minimizing environmental impact -- Reliable performance: Consistent and reliable performance in various weather conditions - -## Technical Specs -- **Material**: Stainless Steel -- **Color**: Silver -- **Dimensions**: 12 inches x 12 inches x 8 inches (L x W x H) -- **Weight**: 4 lbs -- **Fuel Type**: Compatible with various fuel sources (specific fuel sources not provided) -- **Cooking Surface Diameter**: Not specified -- **Ignition Type**: Manual ignition (specific ignition mechanism not provided) -- **Burner Type**: Single burner -- **Heat Output**: Not specified -- **Boil Time**: Not specified -- **Wind Protection**: Yes -- **Fuel Efficiency**: Fuel-efficient design for optimized usage -- **Foldable Design**: Yes, for compact storage and portability -- **Carrying Case**: Included for easy transportation and storage -- **Maintenance**: Easy to clean and maintain -- **Compact and Lightweight**: Designed for easy carrying during outdoor adventures -- **Sturdy Construction**: Durable stainless steel material ensures long-lasting performance -- **Flame Control**: Adjustable flame control for precise cooking -- **Versatile Cooking Options**: Suitable for various cooking methods, including boiling, simmering, and frying -- **Easy Assembly**: Simple and hassle-free setup process -- **Heat Resistant Handle**: Ergonomic handle stays cool to the touch for safe handling -- **Wide Base**: Provides stability on uneven surfaces -- **High-Quality Craftsmanship**: Crafted with attention to detail for reliable performance in outdoor environments - -## EcoFire Camping Stove User Guide - -### 1. Introduction - -Thank you for choosing the EcoFire Camping Stove. This user guide provides instructions on how to effectively use and maintain your camping stove. Please read this guide thoroughly before using the product. - -### 2. Package Contents - -Ensure that the package includes the following components: - -- EcoFire Camping Stove -- Fuel canister (sold separately) -- Carry case -- User Guide - -If any components are missing or damaged, please contact our customer support immediately. - -### 3. Stove Assembly - -Follow these steps to assemble the EcoFire Camping Stove: - -1. Place the camping stove on a flat and stable surface. -2. Unfold the legs of the stove to provide a sturdy base. -3. Attach the fuel canister to the designated connection point on the stove. -4. Ensure that all connections are secure and tight. - -### 4. Fuel Preparation - -The EcoFire Camping Stove is compatible with standard camping fuel canisters. Follow these guidelines when preparing the fuel: - -- Use only fuel canisters specifically designed for camping stoves. -- Check the compatibility of the fuel canister with the stove model. -- Ensure that the fuel canister is clean, undamaged, and properly sealed. - -### 5. Ignition and Operation - -To ignite and operate the EcoFire Camping Stove, follow these steps: - -1. Open the valve on the fuel canister slowly and carefully. -2. Use the built-in ignition mechanism or a separate lighter to ignite the stove. -3. Adjust the flame control knob to regulate the intensity of the flame. -4. Place cookware or a suitable grill over the stove for cooking. - -### 6. Adjusting the Flame - -To adjust the flame intensity of the EcoFire Camping Stove, follow these steps: - -- Turn the flame control knob clockwise to increase the flame intensity. -- Turn the flame control knob counterclockwise to decrease the flame intensity. -- Use caution when adjusting the flame, and never leave the stove unattended. - -### 7. Care and Maintenance - -Proper care and maintenance will ensure the longevity and optimal performance of your EcoFire Camping Stove. Follow these guidelines: - -- Clean the stove after each use. Use a soft cloth or sponge with mild detergent and water. -- Ensure that the stove is completely cooled down before cleaning or storing. -- Regularly inspect the fuel canister for damage or leaks. Replace if necessary. -- Store the stove in a clean, dry, and well-ventilated area. - -### 8. Safety Precautions - -It is important to follow these safety precautions when using the EcoFire Camping Stove: - -- Keep the stove away from flammable materials, including tents, clothing, and overhanging branches. -- Use the stove in a well-ventilated area to prevent carbon monoxide buildup. -- Never leave the stove unattended while it is in operation. -- Keep children and pets away from the stove during use. -- Use caution when handling the stove and fuel canister, as they can become hot during operation. - -### 9. Troubleshooting - -If you encounter any issues with the EcoFire Camping Stove, try the following troubleshooting steps: - -- Ensure that the fuel canister is properly connected and has sufficient fuel. -- Check the ignition mechanism or lighter for proper functioning. -- Clean any clogged burner holes or fuel lines. -- If the issue persists, please contact our customer support for further assistance. - -## 10. Contact Information - -If you have any questions, concerns, or need further assistance, please contact our customer support: - -- Customer Support Phone: 1-800-123-4567 -- Customer Support Email: support@ecofire.com - -We hope you enjoy your EcoFire Camping Stove and have a wonderful outdoor experience. - -## Cautions: - -1. Do not use the EcoFire Camping Stove indoors or in enclosed spaces. Always use it in a well-ventilated area to prevent carbon monoxide buildup. -2. Do not touch the stove or fuel canister while they are hot. Allow them to cool down completely before handling. -3. Do not place flammable materials, such as tents, clothing, or paper, near the stove while it is in operation. -4. Do not leave the stove unattended while it is in use. Always keep an eye on the flame and cooking process. -5. Do not use the stove with damaged or leaking fuel canisters. Inspect the canister before each use and replace if necessary. -6. Do not disassemble or modify the stove in any way. Any modifications can lead to unsafe operation and void the warranty. -7. Do not attempt to ignite the stove without following the proper ignition procedure outlined in the user guide. -8. Do not use the stove for purposes other than outdoor cooking. It is designed specifically for camping and outdoor use. -9. Do not overload the stove with oversized or heavy cookware. Use cookware that is suitable for the size and weight capacity of the stove. -10. Do not leave the stove dirty or greasy after use. Clean it thoroughly using mild detergent and water before storing. - -Following these cautions will help ensure safe and optimal operation of the EcoFire Camping Stove. - -## Warranty Information: - -Thank you for choosing the EcoFire Camping Stove. The product is covered by a limited warranty to provide you with peace of mind. Please read the following warranty information carefully: - -**Warranty Duration:** The EcoFire Camping Stove is covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship that arise during normal use of the product. It includes issues such as faulty ignition, burner malfunction, or structural defects. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, negligence, unauthorized modifications, or failure to follow the instructions provided in the user guide. It also does not cover normal wear and tear, cosmetic damage, or damage caused by natural disasters. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the EcoFire Camping Stove. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -We strive to provide you with a high-quality product, and we are confident that the EcoFire Camping Stove will meet your expectations for performance and reliability. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their camping stoves within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their camping stoves within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all camping stove purchases but from the same product brand. - -## Reviews -26) **Rating:** 5 - **Review:** The EcoFire Camping Stove is a fantastic piece of gear. It's compact, fuel-efficient, and easy to use. The wind protection feature is a game changer. Highly recommend it for camp cooking! - -27) **Rating:** 4 - **Review:** I bought the EcoFire Camping Stove, and while it's durable and efficient, I wish it had a built-in igniter. Overall, it's a good stove for camping. - -28) **Rating:** 5 - **Review:** The EcoFire Camping Stove has become an essential part of my camping gear. It's compact, easy to use, and the wind protection makes cooking in windy conditions a breeze. Love it! - -29) **Rating:** 4 - **Review:** I like the EcoFire Camping Stove, but I wish it came with a carrying case. It's compact and efficient, but a case would make it even easier to transport. Overall, it's a great stove. - -30) **Rating:** 5 - **Review:** This camping stove has exceeded my expectations. It's fuel-efficient, easy to use, and the wind protection feature is a lifesaver. I can't imagine camping without it! - -## FAQ -26) What type of fuel does the EcoFire Camping Stove use? - The EcoFire Camping Stove uses small twigs, leaves, and other natural biomass as fuel, making it an eco-friendly option for outdoor cooking. - -27) How long does it take to boil water using the EcoFire Camping Stove? - The EcoFire Camping Stove can bring 1 liter of water to a boil in approximately 4-6 minutes, depending on the fuel used and environmental conditions. - -28) Can the EcoFire Camping Stove be used with different types of cookware? - Yes, the EcoFire Camping Stove features a wide and stable pot support, making it compatible with various sizes and types of cookware. - -29) Is the EcoFire Camping Stove safe to use in areas with fire restrictions? - It's essential to check local regulations before using the EcoFire Camping Stove, as some areas may have restrictions on open fires or require a specific type of stove. - -30) How do I clean and maintain the EcoFire Camping Stove? - To clean the EcoFire Camping Stove, allow it to cool completely, then wipe away any ash or debris with a brush or cloth. Store the stove in a dry place when not in use. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_66.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_66.md deleted file mode 100644 index 053a978e..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_66.md +++ /dev/null @@ -1,101 +0,0 @@ - -# Information about product item_number: 66 -Pathfinder Pro-1 Adventure Compass, priced: $39.99. - -Experience accurate navigation and superior outdoor performance with this durable and reliable compass, crafted by the experts at Pathfinder. - -Features: - -Robust, lightweight ABS plastic construction for durability and easy carry -Precision tungsten steel needle with sapphire bearing for smooth and accurate operation -Declination adjusted for use in the northern hemisphere -Built-in adjustable declination correction for precise navigation -Thermometer and altitude scale for additional outdoor information -Liquid-filled capsule for enhanced stability and dampening -Photoluminescent markings for easy navigation in low light conditions -Dual metric and imperial scales for versatile map reading -Transparent baseplate with anti-slip rubber pads and magnifying lens for ease of use -Secure snap-lock lanyard with quick-release wrist strap for convenient carrying -Expertly engineered and assembled with precision -Technical Specs: - -Best Use: Hiking, Orienteering, Backpacking -Analog or Digital: Analog -Increments: 2 degrees -Scale 1:25,000: Yes -Declination Adjustment: Yes -Declination Scale: Yes -Liquid-Filled: Yes -Luminous Points/Bezel: Yes -Ruler: Yes -Magnifying Lens: Yes -Lanyard: Yes -Dimensions: 5.1 x 2.6 x 0.6 inches -Weight: 1.8 ounces - -Whether you're a seasoned explorer or just starting your adventures, the Pathfinder Pro-1 Adventure Compass offers the reliability, accuracy, and ease of use you need to navigate the great outdoors with confidence. - -# FAQ: - -Does the Pathfinder Pro-1 Adventure Compass come with a protective case? -The compass does not include a protective case. However, the ABS plastic construction provides durability and protection against wear and tear during outdoor activities. - -Can I use this compass for marine navigation? -While the Pathfinder Pro-1 Adventure Compass is designed primarily for hiking, orienteering, and backpacking, it can also be used for basic marine navigation. However, it is not specifically designed for marine environments and may not offer the same level of accuracy and features as a marine-specific compass. - -How do I adjust the declination on this compass? -The built-in adjustable declination correction allows you to easily adjust for the local magnetic declination. Simply use a small screwdriver or the provided tool to turn the declination adjustment screw until the declination indicator aligns with the correct value for your location. - -Q: Is the Pathfinder Pro-1 Adventure Compass waterproof? - -A: Yes, the Pathfinder Pro-1 Adventure Compass is designed to be water-resistant, making it suitable for use in various weather conditions. However, it is not recommended to submerge the compass in water for extended periods. - -Q: Can I use the Pathfinder Pro-1 Adventure Compass in the southern hemisphere? - -A: Yes, you can use the Pathfinder Pro-1 Adventure Compass in the southern hemisphere. It is specially designed for use in both northern and southern hemispheres, and it has a built-in adjustable declination correction for precise navigation. - -Q: How often do I need to calibrate the compass? - -A: The Pathfinder Pro-1 Adventure Compass should maintain its accuracy over time. However, it is recommended to check the calibration periodically, especially if the compass has been exposed to strong magnetic fields or experienced significant temperature fluctuations. To calibrate the compass, follow the instructions provided in the user manual. - -Q: Does the Pathfinder Pro-1 Adventure Compass come with a carrying case? - -A: The Pathfinder Pro-1 Adventure Compass does not come with a carrying case. However, it features a durable design and a lanyard hole for convenient carrying around your neck or attaching to your backpack. - -Q: Can I use the Pathfinder Pro-1 Adventure Compass for orienteering competitions? - -A: The Pathfinder Pro-1 Adventure Compass is suitable for orienteering activities, including competitions. Its accuracy, mirror sighting feature, and integrated clinometer make it an excellent choice for orienteering enthusiasts. - -Q: How do I clean the compass if it gets dirty? - -A: To clean the Pathfinder Pro-1 Adventure Compass, use a soft cloth dampened with water and mild soap. Avoid using harsh chemicals or solvents, as they may damage the compass. Ensure the compass is completely dry before storing it in a cool, dry place away from direct sunlight and magnetic fields. - -# Reviews - -Exceptional Baseplate Compass for Outdoor Enthusiasts -I've been using the Pathfinder Pro-1 Adventure Compass for multiple backpacking and hiking trips, and I couldn't be happier with its performance. It's easy to use, accurate, and the built-in thermometer and altitude scale are nice bonuses. The photoluminescent markings make it easy to navigate even in low light conditions. Highly recommended for anyone looking for a reliable compass at a reasonable price. - -A Must-Have for Hiking and Orienteering -I recently purchased this compass for an orienteering competition, and it exceeded my expectations. The adjustable declination correction and tungsten steel needle with sapphire bearing ensure precise navigation. The ABS plastic construction makes it lightweight yet durable. A fantastic compass for any outdoor enthusiast. - -Dependable and User-Friendly Compass -The Pathfinder Pro-1 Adventure Compass has quickly become my go-to navigation tool for hiking and backpacking trips. Its user-friendly design and accurate readings give me confidence in my navigational skills. The dual metric and imperial scales and transparent baseplate with anti-slip rubber pads make map reading a breeze. Highly recommended! - -5-Star Compass for Explorers and Adventurers -As an avid outdoors enthusiast, I've used a number of compasses over the years, and the Pathfinder Pro-1 Adventure Compass is by far the best one I've come across. The mirror sighting feature with V-notch sighting line helps me take accurate bearings with ease, and the integrated clinometer is invaluable for assessing slope angles. A fantastic investment for anyone looking to up their navigation game. - -Perfect Companion for Geocaching -I purchased the Pathfinder Pro-1 Adventure Compass for geocaching, and it has not let me down. The quick and accurate readings have improved my ability to locate caches in a timely manner. The lanyard hole makes it convenient to carry around my neck, ensuring it's always within reach. I highly recommend this compass for geocaching enthusiasts! - -Reliable and Rugged Navigation Tool -I've taken the Pathfinder Pro-1 Adventure Compass on multiple backcountry expeditions, and it has proven to be an indispensable part of my gear. Its durability and resistance to water and shock have made it a reliable navigation tool in all kinds of weather and terrain. The fluorescent markings are a great help during nighttime navigation. This compass is a must-have for serious adventurers! - - - -Return Policy: - -Loyalty Status Bronze: 30-Day Return Policy -Loyalty Status Silver: 60-Day Return Policy -Loyalty Status Gold: 90-Day Return Policy - -Pathfinder offers a one-year limited warranty against defects in materials and workmanship, ensuring your satisfaction and peace of mind. Whether you're an experienced outdoors person or just starting your journey, the Pathfinder Pro-1 Adventure Compass will provide you with the accuracy and reliability you need for successful navigation. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_7.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_7.md deleted file mode 100644 index c34b8626..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_7.md +++ /dev/null @@ -1,137 +0,0 @@ -# Information about product item_number: 7 -CozyNights Sleeping Bag, price $100, - -## Brand -CozyNights - -## Category -Sleeping Bags - -## Features -- **Lightweight**: Designed to be lightweight for easy carrying during outdoor adventures. -- **3-Season**: Suitable for use in spring, summer, and fall seasons. -- **Compact Design**: Folds down to a compact size for convenient storage and transport. -- **Included Stuff Sack**: Comes with a stuff sack for easy packing and carrying. -- **Insulation**: Provides warmth and comfort during sleep. -- **Zipper Closure**: Features a durable zipper closure for easy access and temperature control. -- **Hood**: Equipped with a hood to keep your head warm and protected. -- **Durable Construction**: Made with high-quality materials for long-lasting durability. -- **Versatile**: Suitable for various outdoor activities such as camping, hiking, and backpacking. -- **Comfortable**: Offers a comfortable sleeping experience with ample room and padding. -- **Temperature Rating**: Provides reliable performance within a specific temperature range. - -## Technical Specifications -- **Material**: Polyester -- **Color**: Red -- **Dimensions**: 80 inches x 33 inches (Length x Width) -- **Weight**: 3.5 lbs -- **Temperature Rating**: 3.5/5 -- **Comfort Rating**: 4/5 -- **Season Rating**: 3-season -- **Insulation Type**: Synthetic -- **Shell Material**: Polyester -- **Lining Material**: Polyester -- **Zipper Type**: Full-length zipper -- **Hood**: Yes -- **Draft Collar**: Yes -- **Draft Tube**: Yes -- **Compression Sack**: Yes -- **Pillow Pocket**: Yes -- **Internal Storage Pocket**: Yes -- **Zipper Baffles**: Yes -- **Footbox Design**: Contoured -- **Zipper Compatibility**: Can be zipped together with another sleeping bag - -## CozyNights Sleeping Bag User Guide - -Thank you for choosing the CozyNights Sleeping Bag. This user guide provides instructions on how to use and maintain your sleeping bag effectively. Please read this guide thoroughly before using the sleeping bag. - -### Usage Instructions - -1. Unpack the sleeping bag and lay it flat on a clean surface. -2. Open the zipper completely. -3. Slide into the sleeping bag, ensuring your feet are at the bottom end. -4. Pull the hood over your head to retain warmth if desired. -5. Adjust the zipper as needed to control ventilation and temperature. -6. When not in use, roll the sleeping bag tightly and secure it with the attached straps or use the included stuff sack for compact storage. -7. For cleaning instructions, refer to the maintenance section below. - -### Maintenance - -- Spot cleaning: If the sleeping bag gets dirty, gently spot clean the affected area with mild soap and water. -- Machine washing: If necessary, the sleeping bag can be machine washed in a front-loading machine using a gentle cycle and mild detergent. Follow the manufacturer's instructions for specific care details. -- Drying: Hang the sleeping bag in a well-ventilated area or use a low heat setting in the dryer. Avoid high heat as it may damage the fabric. -- Storage: Store the sleeping bag in a dry and clean place, away from direct sunlight and moisture. Ensure it is completely dry before storing to prevent mold and mildew. - -### Safety Precautions - -- Do not place the sleeping bag near open flames or direct heat sources. -- Avoid sharp objects that may puncture or damage the sleeping bag. -- Do not leave the sleeping bag in damp or wet conditions for an extended period as it may affect its insulation properties. -- Keep the sleeping bag away from pets to prevent potential damage. - -If you have any further questions or need assistance, please contact our customer support using the provided contact information. -We hope you have a comfortable and enjoyable experience with your CozyNights Sleeping Bag! - -## Cautions: -1. Do not machine wash the sleeping bag with harsh detergents or bleach, as it may damage the fabric and insulation. -2. Avoid exposing the sleeping bag to direct sunlight for prolonged periods, as it may cause fading or deterioration of the materials. -3. Do not store the sleeping bag when it is damp or wet, as this can lead to mold and mildew growth. -4. Avoid dragging or dragging the sleeping bag on rough or abrasive surfaces, as it may cause tears or damage to the fabric. -5. Do not place heavy objects on top of the stored sleeping bag, as it may affect its loft and insulation properties. -6. Avoid using sharp objects, such as knives or scissors, near the sleeping bag to prevent accidental punctures. -7. Do not fold or roll the sleeping bag when it is wet, as it may lead to the development of unpleasant odors or bacterial growth. -8. Avoid storing the sleeping bag in a compressed or tightly packed state for extended periods, as it may affect its loft and insulation. - -Following these not-to-do's or cautionary points will help ensure the longevity and performance of your CozyNights Sleeping Bag. - -Certainly! Here is the warranty information for the CozyNights Sleeping Bag: - -**Warranty Duration:** The CozyNights Sleeping Bag is covered by a 1-year limited warranty from the date of purchase. - -**Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship. It includes issues such as zipper malfunctions, stitching defects, or fabric flaws. - -**Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized repairs or modifications, or failure to follow care instructions. - -**Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -**Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective sleeping bag. If the exact product is no longer available, we may offer a comparable replacement at our discretion. - -**Limitations:** The warranty is non-transferable and applies only to the original purchaser of the CozyNights Sleeping Bag. It is valid only when the product is purchased from an authorized retailer. - -**Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. - -## Return Policy -- **If Membership status "None":** If you are not satisfied with your purchase, you can return it within 30 days for a full refund. The product must be unused and in its original packaging. -- **If Membership status "Gold":** Gold members can return their sleeping bags within 60 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. -- **If Membership status "Platinum":** Platinum members can return their sleeping bags within 90 days of purchase for a full refund or exchange. The product must be unused and in its original packaging. Additionally, Platinum members receive a 10% discount on all sleeping bags purchases but from the same product brand. - -## Reviews -31) **Rating:** 5 - **Review:** The CozyNights Sleeping Bag is perfect for my camping trips. It's lightweight, warm, and the compact design makes it easy to pack. The included stuff sack is a great bonus. Highly recommend! - -32) **Rating:** 4 - **Review:** I bought the CozyNights Sleeping Bag, and while it's warm and lightweight, I wish it had a built-in pillow. Overall, it's a good sleeping bag for camping. - -33) **Rating:** 5 - **Review:** The CozyNights Sleeping Bag is perfect for my camping adventures. It's comfortable, warm, and packs down small, making it easy to carry. I love it! - -34) **Rating:** 4 - **Review:** I like the CozyNights Sleeping Bag, but I wish it came in more colors. The red color is nice, but I would prefer something more unique. Overall, it's a great sleeping bag. - -35) **Rating:** 5 - **Review:** This sleeping bag is a game changer for my camping trips. It's warm, lightweight, and the compact design makes it easy to pack. I'm extremely satisfied with my purchase! - -## FAQ -31) What is the temperature rating of the CozyNights Sleeping Bag? - The CozyNights Sleeping Bag is rated for 3-season use and has a temperature rating of 20�F to 60�F (-6�C to 15�C). - -32) Can the CozyNights Sleeping Bag be zipped together with another sleeping bag to create a double sleeping bag? - Yes, two CozyNights Sleeping Bags can be zipped together to create a double sleeping bag, provided they have compatible zippers. - -33) Does the CozyNights Sleeping Bag have a draft collar or draft tube? - The CozyNights Sleeping Bag features a draft tube along the zipper to help prevent cold air from entering and warm air from escaping. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_8.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_8.md deleted file mode 100644 index bf6f25dc..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_8.md +++ /dev/null @@ -1,195 +0,0 @@ -# Information about product item_number: 8 -Alpine Explorer Tent, price $350, - -## Brand -AlpineGear - -## Category -Tents - -### Features -- Waterproof: Provides reliable protection against rain and moisture. -- Easy Setup: Simple and quick assembly process, making it convenient for camping. -- Room Divider: Includes a detachable divider to create separate living spaces within the tent. -- Excellent Ventilation: Multiple mesh windows and vents promote airflow and reduce condensation. -- Gear Loft: Built-in gear loft or storage pockets for organizing and storing camping gear. - -## Technical Specs -**Best Use**: Camping -**Capacity**: 8-person -**Season Rating**: 3-season -**Setup**: Freestanding -**Material**: Polyester -**Waterproof**: Yes -**Floor Area**: 120 square feet -**Peak Height**: 6.5 feet -**Number of Doors**: 2 -**Color**: Orange -**Rainfly**: Included -**Rainfly Waterproof Rating**: 3000mm -**Tent Poles**: Aluminum -**Pole Diameter**: 12mm -**Ventilation**: Mesh panels and adjustable vents -**Interior Pockets**: 4 pockets -**Gear Loft**: Included -**Footprint**: Sold separately -**Guy Lines**: Reflective -**Stakes**: Aluminum -**Carry Bag**: Included -**Dimensions**: 12ft x 10ft x 7ft (Length x Width x Peak Height) -**Packed Size**: 24 inches x 10 inches -**Weight**: 17 lbs - -## Alpine Explorer Tent User Guide - -Thank you for choosing the Alpine Explorer Tent. This user guide provides instructions on how to set up, use, and maintain your tent effectively. Please read this guide thoroughly before using the tent. - -### Package Contents - -Ensure that the package includes the following components: - -- Alpine Explorer Tent body -- Tent poles -- Rainfly -- Stakes and guy lines -- Carry bag -- User Guide - -If any components are missing or damaged, please contact our customer support immediately. - -### Tent Setup - -**Step 1: Selecting a Suitable Location** - -- Find a level and clear area for pitching the tent. -- Remove any sharp objects or debris that could damage the tent floor. - -**Step 2: Unpacking and Organizing Components** - -- Lay out all the tent components on the ground. -- Familiarize yourself with each part, including the tent body, poles, rainfly, stakes, and guy lines. - -**Step 3: Assembling the Tent Poles** - -- Connect the tent poles according to their designated color codes or numbering. -- Slide the connected poles through the pole sleeves or attach them to the tent body clips. - -**Step 4: Setting up the Tent Body** - -- Begin at one end and raise the tent body by pushing up the poles. -- Ensure that the tent body is evenly stretched and centered. -- Secure the tent body to the ground using stakes and guy lines as needed. - -**Step 5: Attaching the Rainfly** - -- Spread the rainfly over the tent body. -- Attach the rainfly to the tent corners and secure it with the provided buckles or clips. -- Adjust the tension of the rainfly to ensure proper airflow and weather protection. - -**Step 6: Securing the Tent** - -- Stake down the tent corners and guy out the guy lines for additional stability. -- Adjust the tension of the guy lines to provide optimal stability and wind resistance. - -### Tent Takedown and Storage - -**Step 1: Removing Stakes and Guy Lines** - -- Remove all stakes from the ground. -- Untie or disconnect the guy lines from the tent and store them separately. - -**Step 2: Taking Down the Tent Body** - -- Start by collapsing the tent poles carefully. -- Remove the poles from the pole sleeves or clips. -- Collapse the tent body and fold it neatly. - -**Step 3: Disassembling the Tent Poles** - -- Disconnect and separate the individual pole sections. -- Store the poles in their designated bag or sleeve. - -**Step 4: Packing the Tent** - -- Fold the tent body tightly and place it in the carry bag. -- Ensure that the rainfly and any other components are also packed securely. - -### Tent Care and Maintenance - -- Clean the tent regularly with mild soap and water. -- Avoid using harsh chemicals or abrasive cleaners. -- Allow the tent to dry completely before storing it. -- Store the tent in a cool, dry place away from direct sunlight. - -### Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-800-123-4567 -- Customer Support Email: support@alpineexplorer.com - -We hope you enjoy your Alpine Explorer Tent and have a great outdoor experience! - -## Cautions: -1. **Stable Setup**: Ensure the tent is pitched on level ground and avoid uneven or sloping terrain to maintain stability. -2. **Safe Location**: Choose a safe and secure location away from hazardous areas like cliffs, rivers, or flood-prone zones. -3. **Windproof**: Do not leave the tent unattended during strong winds or severe weather conditions; properly secure all guy lines and stakes for added stability. -4. **Flame-Free**: Never use open flames or heating equipment inside the tent to prevent fire hazards and damage to the tent material. -5. **Gentle Glide**: Avoid dragging or pulling the tent body on rough surfaces to prevent tears or abrasions; lift and move the tent with care. -6. **Dry and Mold-Free**: Ensure the tent is completely dry before storing to prevent mold and mildew growth; avoid packing a damp or wet tent. -7. **Sunshine Protection**: Avoid storing the tent in direct sunlight for extended periods to prevent UV damage to the fabric; find a cool and shaded storage area. -8. **Capacity Check**: Do not exceed the tent's recommended weight capacity to maintain its structural integrity and prevent potential damage. -9. **Sharp Object Safety**: Keep sharp objects and tools away from the tent to avoid punctures or fabric damage; handle the tent and its components with care. -10. **Original Structure**: Do not modify or alter the tent structure or components, as it may compromise the tent's performance and void the warranty. -By following these cautionary guidelines, you can ensure safe and optimal use of the Alpine Explorer Tent. - -## Warranty Information: - -- **Warranty Duration:** The Alpine Explorer Tent is covered by a 2-year limited warranty from the date of purchase. -- **Warranty Coverage:** The warranty covers manufacturing defects in materials and workmanship, including issues such as seam separation, zipper malfunction, or fabric defects. -- **Exclusions:** The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. -- **Warranty Claim Process:** In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. -- **Warranty Remedies:** Depending on the nature of the warranty claim, we will either repair or replace the defective product. If the exact product is no longer available, we may offer a comparable replacement at our discretion. -- **Limitations:** The warranty is non-transferable and applies only to the original purchaser of the Alpine Explorer Tent. It is valid only when the product is purchased from an authorized retailer. -- **Legal Rights:** This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. - -Please retain your proof of purchase as it will be required to verify warranty eligibility. Kindly note that the warranty information provided here is for reference purposes. For the most accurate and up-to-date warranty details, please refer to the warranty card included with your Alpine Explorer Tent. - -## Return Policy -- **If Membership status "None ":** Returns are accepted within 30 days of purchase, provided the tent is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the tent is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -36) **Rating:** 5 - **Review:** The Alpine Explorer Tent is amazing! It's easy to set up, has excellent ventilation, and the room divider is a great feature for added privacy. Highly recommend it for family camping trips! - -37) **Rating:** 4 - **Review:** I bought the Alpine Explorer Tent, and while it's waterproof and spacious, I wish it had more storage pockets. Overall, it's a good tent for camping. - -38) **Rating:** 5 - **Review:** The Alpine Explorer Tent is perfect for my family's camping adventures. It's easy to set up, has great ventilation, and the gear loft is an excellent addition. Love it! - -39) **Rating:** 4 - **Review:** I like the Alpine Explorer Tent, but I wish it came with a footprint. It's comfortable and has many useful features, but a footprint would make it even better. Overall, it's a great tent. - -40) **Rating:** 5 - **Review:** This tent is perfect for our family camping trips. It's spacious, easy to set up, and the room divider is a great feature for added privacy. The gear loft is a nice bonus for extra storage. - -## FAQ -34) How easy is it to set up the Alpine Explorer Tent? - The Alpine Explorer Tent features a quick and easy setup, thanks to color-coded poles and intuitive design. Most users can set it up in just a few minutes. - -35) Can the Alpine Explorer Tent accommodate two queen-sized air mattresses? - Yes, the Alpine Explorer Tent is spacious enough to accommodate two queen-sized air mattresses, making it an ideal choice for comfortable family camping. - -36) What is the purpose of the room divider in the Alpine Explorer Tent? - The room divider in the Alpine Explorer Tent allows you to create separate sleeping and living spaces, providing privacy and organization for your camping experience. - -37) How does the gear loft in the Alpine Explorer Tent work? - The gear loft in the Alpine Explorer Tent is a suspended mesh shelf that provides additional storage space for small items, keeping them organized and easily accessible. - -38) Can the Alpine Explorer Tent be used in snowy conditions? - The Alpine Explorer Tent is designed primarily for three-season use. While it can withstand light snowfall, it may not provide adequate structural support and insulation during heavy snow or extreme winter conditions. diff --git a/scenarios/rag/rag-index-creation/data/product-info/product_info_9.md b/scenarios/rag/rag-index-creation/data/product-info/product_info_9.md deleted file mode 100644 index 4ccfef28..00000000 --- a/scenarios/rag/rag-index-creation/data/product-info/product_info_9.md +++ /dev/null @@ -1,207 +0,0 @@ -# Information about product item_number: 9 -SummitClimber Backpack, price $120, - -## Brand -HikeMate - -## Category -Backpacks - -## Features -- **Capacity**: 60 liters -- **Material**: Nylon -- **Color**: Grey -- **Dimensions**: 28 inches x 16 inches x 10 inches (Length x Width x Depth) -- **Weight**: 3 lbs -- Ergonomic design for comfortable carrying during hikes and outdoor adventures. -- Adjustable hip belt for personalized fit and weight distribution. -- Integrated rain cover to protect the backpack and its contents from rain and moisture. -- Compression straps for securing and stabilizing the load. -- Multiple compartments and pockets for organized storage and easy access to items. -- Padded shoulder straps and back panel for enhanced comfort and support. -- Sternum strap for added stability during active movement. -- Hydration system compatibility for convenient on-the-go hydration. -- Durable construction to withstand rugged outdoor conditions. -- Reflective accents for increased visibility in low-light conditions. -These features make the SummitClimber Backpack a reliable and versatile choice for backpacking and outdoor activities. - -## Technical Specifications -- **Material**: Nylon -- **Color**: Grey -- **Dimensions**: 28 inches x 16 inches x 10 inches (Length x Width x Depth) -- **Weight**: 3 lbs -- **Capacity**: 60 liters -- **Hip Belt**: Adjustable -- **Rain Cover**: Integrated -- **Compression Straps**: Yes -- **Hydration System Compatibility**: Yes -- **Number of Compartments**: Multiple -- **Back Panel**: Padded -- **Reflective Accents**: Yes -- **Ergonomic Design**: Designed for optimal comfort and weight distribution -- **Adjustable Hip Belt**: Allows for personalized fit and support -- **Integrated Rain Cover**: Provides protection against rain and moisture -- **Compression Straps**: Allows for adjusting the volume and securing the load -- **Back Panel Ventilation**: Enhances breathability and airflow -- **Multiple Compartments and Pockets**: Provides organized storage for gear and essentials -- **Hydration System Compatibility**: Compatible with hydration reservoirs for convenient on-the-go hydration -- **Load Stabilizer Straps**: Helps distribute weight evenly and stabilize the load -- **Durable Construction**: Made from high-quality nylon material for long-lasting durability -- **Reinforced Stitching**: Ensures strong and reliable construction -- **YKK Zippers**: Reliable and smooth-operating zippers -- **Adjustable Sternum Strap**: Enhances stability and load distribution -- **Attachment Points**: Offers options for attaching additional gear or accessories -- **Reflective Accents**: Provides visibility in low-light conditions for added safety - -These technical specifications highlight various features and attributes of the SummitClimber Backpack, providing valuable information to potential customers. - - -## SummitClimber Backpack User Manual - -Thank you for choosing the SummitClimber Backpack. This user manual provides instructions on how to use and maintain your backpack effectively. Please read this guide thoroughly before using the backpack. - -### 1. Introduction - -The SummitClimber Backpack is designed to provide you with a comfortable and versatile solution for your hiking and outdoor adventures. This user manual will guide you through the setup and usage of your backpack. - -### 2. Package Contents - -Ensure that the package includes the following components: - -- SummitClimber Backpack -- Integrated Rain Cover -- User Manual - -If any components are missing or damaged, please contact our customer support immediately. - -### 3. Backpack Overview - -The SummitClimber Backpack features a durable nylon construction with ample storage space and ergonomic design elements for maximum comfort. Familiarize yourself with the various parts and features of the backpack: - -- Main compartment with drawstring closure -- Front zipper pocket -- Side mesh pockets -- Adjustable shoulder straps -- Adjustable hip belt with integrated pockets -- Sternum strap -- Compression straps -- Integrated rain cover - -### 4. Adjusting the Straps - -Properly adjusting the straps ensures a comfortable fit and proper weight distribution. Follow these steps to adjust the straps: - -**Shoulder Straps:** - -1. Put on the backpack and adjust the shoulder straps so that they rest comfortably on your shoulders. -2. Tighten or loosen the straps as needed to achieve a snug fit. - -**Hip Belt:** - -1. Secure the hip belt around your hips and adjust it for a comfortable fit. -2. The belt should sit on your hips, distributing the weight of the backpack. - -**Sternum Strap:** - -1. Connect the sternum strap across your chest and adjust the height to your preference. -2. The strap helps stabilize the backpack and prevent shoulder strap slippage. - -### 5. Packing and Organization - -The SummitClimber Backpack offers multiple compartments and pockets for efficient packing and organization. Here are some tips for packing your backpack: - -- Main Compartment: - - Use the main compartment for larger items such as clothing, sleeping bags, or food. - - Pack heavier items closer to your back for better weight distribution. - -- Front Pocket and Side Pockets: - - Utilize the front zipper pocket and side mesh pockets for quick access to smaller essentials like snacks, maps, or water bottles. - -- Compression Straps: - - Use the compression straps to secure and stabilize the contents of your backpack. - -### 6. Backpack Care and Maintenance - -To ensure the longevity and performance of your SummitClimber Backpack, follow these care and maintenance guidelines: - -- Clean the backpack regularly with mild soap and water. -- Avoid using harsh chemicals or abrasive cleaners. -- Allow the backpack to air dry completely before storing. -- Store the backpack in a cool, dry place away from direct sunlight. - -### 7. Warranty Information - -The SummitClimber Backpack comes with a limited warranty. Please refer to the warranty card included in the package for more information. - -### 8. Contact Information - -If you have any questions or need further assistance, please contact our customer support: - -- Customer Support Phone: +1-555-123-4567 -- Customer Support Email: support@summitclimber.com - -We hope you enjoy your SummitClimber Backpack and have a great outdoor experience! - -## Caution: -1. **Overloading**: Avoid overloading the backpack beyond its recommended weight capacity. Overloading can strain the backpack's construction and compromise your comfort and safety. - -2. **Improper Adjustments**: Do not neglect adjusting the shoulder straps, hip belt, and sternum strap properly. Improper adjustments can lead to discomfort, pain, and an unstable carrying experience. - -3. **Sharp Objects**: Avoid placing sharp objects directly inside the main compartment or side pockets without proper protection. Sharp objects can potentially puncture or damage the backpack. - -4. **Improper Storage**: Do not store the backpack in damp or wet conditions. Moisture can cause mold, mildew, and damage to the backpack's material. - -5. **Neglecting Rain Cover**: When hiking in wet weather or encountering rain, always remember to use the integrated rain cover to protect the contents of your backpack. Neglecting to use the rain cover may result in water damage to your belongings. - -6. **Incorrect Cleaning Methods**: Avoid using harsh chemicals, bleach, or abrasive cleaners when cleaning the backpack. Stick to mild soap and water for regular cleaning, and allow the backpack to air dry completely before storing. - -7. **Neglecting Maintenance**: Regularly inspect and maintain the backpack's straps, zippers, and overall condition. Address any issues promptly to prevent further damage or discomfort. - -8. **Unauthorized Modifications**: Do not make any unauthorized modifications or alterations to the backpack. Modifying the backpack can compromise its integrity, safety features, and warranty coverage. - -9. **Neglecting Weight Distribution**: Ensure proper weight distribution by packing heavier items closer to your back and lighter items towards the outside of the backpack. Neglecting weight distribution can lead to an unbalanced and uncomfortable carrying experience. - -10. **Rough Handling**: Avoid excessive rough handling, dragging, or throwing of the backpack. Treat it with care to maintain its durability and longevity. -Remember to use the SummitClimber Backpack responsibly and follow these cautions to ensure a safe and enjoyable outdoor experience. - -## Warranty Information: - -Thank you for choosing the SummitClimber Backpack. The backpack is covered by a limited warranty to ensure your satisfaction with the product. Please review the following warranty information: - -- **Warranty Duration**: The SummitClimber Backpack is covered by a 2-year limited warranty from the date of purchase. - -- **Warranty Coverage**: The warranty covers manufacturing defects in materials and workmanship. It includes issues such as faulty stitching, zipper malfunction, or defects in the backpack's construction. - -- **Exclusions**: The warranty does not cover damages caused by improper use, accidents, normal wear and tear, unauthorized modifications, or failure to follow care and maintenance instructions. - -- **Warranty Claim Process**: In the event of a warranty claim, please contact our customer support with your proof of purchase and a detailed description of the issue. Our support team will guide you through the necessary steps to assess the claim and provide a resolution. - -- **Warranty Remedies**: Depending on the nature of the warranty claim, we will either repair or replace the defective backpack. If the exact model is no longer available, we may offer a comparable replacement at our discretion. - -- **Limitations**: The warranty is non-transferable and applies only to the original purchaser of the SummitClimber Backpack. It is valid only when the product is purchased from an authorized retailer. - -- **Legal Rights**: This warranty gives you specific legal rights, and you may also have other rights that vary by jurisdiction. - -For any warranty-related inquiries or to initiate a warranty claim, please contact our customer support using the provided contact information. Please retain your proof of purchase as it will be required to verify warranty eligibility.We strive to provide you with a reliable and durable backpack, and we stand behind the quality of our product. Enjoy your outdoor adventures with confidence knowing that your SummitClimber Backpack is backed by our warranty. - -## Return Policy -- **If Membership status "None":** Returns are accepted within 30 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Customer is responsible for the cost of return shipping. Once the returned item is received, a refund will be issued for the cost of the item minus a 10% restocking fee. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Gold":** Returns are accepted within 60 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided. Once the returned item is received, a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. -- **If Membership status "Platinum":** Returns are accepted within 90 days of purchase, provided the backpack is unused, undamaged and in its original packaging. Free return shipping is provided, and a full refund will be issued. If the item was damaged during shipping or if there is a defect, the customer should contact customer service within 7 days of receiving the item. - -## Reviews -## FAQ -39) Can the SummitClimber Backpack fit a 17-inch laptop? - Yes, the SummitClimber Backpack has a dedicated laptop compartment that can accommodate laptops up to 17 inches, perfect for those who need to stay connected on their adventures. - -40) Is the SummitClimber Backpack hydration bladder compatible? - Yes, the SummitClimber Backpack is designed with a hydration sleeve and tube port, making it compatible with most hydration bladders for convenient on-the-go hydration. - -41) What is the purpose of the integrated rain cover in the SummitClimber Backpack? - The integrated rain cover in the SummitClimber Backpack provides additional protection against rain and moisture, ensuring your belongings stay dry during your outdoor adventures. - -42) How do the compression straps on the SummitClimber Backpack work? - The compression straps on the SummitClimber Backpack help to stabilize and secure your load by cinching down the contents, improving balance and reducing stress on your back. - -43) Can the SummitClimber Backpack be used as carry-on luggage on a flight? - The SummitClimber Backpack's dimensions (28in x 16in x 10in) may exceed the carry-on size limits for some airlines. We recommend checking with your airline for their specific carry-on requirements before traveling. From e95469ca34b3c33237bf996625ab53fdca8fe143 Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Wed, 6 Nov 2024 17:06:55 -0600 Subject: [PATCH 03/21] Update chat-template.py (#146) change comment dashes to underscores. Docs platform having trouble with the current ids. --- scenarios/inference/chat-app/chat-template.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scenarios/inference/chat-app/chat-template.py b/scenarios/inference/chat-app/chat-template.py index 3e431bc6..68514056 100644 --- a/scenarios/inference/chat-app/chat-template.py +++ b/scenarios/inference/chat-app/chat-template.py @@ -1,4 +1,4 @@ -# +# from azure.ai.inference.prompts import PromptTemplate def get_chat_response(messages, context): @@ -22,9 +22,9 @@ def get_chat_response(messages, context): presence_penalty=0.5) return response -# +# -# +# if __name__ == "__main__": response = get_chat_response( messages=[{"role": "user", "content": "what city has the best food in the world?"}], @@ -34,4 +34,4 @@ def get_chat_response(messages, context): } ) print(response.choices[0].message.content) -# +# From 8fcf5ed4bfc82fa179908a525f66922c8624cca5 Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Wed, 6 Nov 2024 17:23:45 -0600 Subject: [PATCH 04/21] Update chat-template.py (#147) add extra space to top --- scenarios/inference/chat-app/chat-template.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scenarios/inference/chat-app/chat-template.py b/scenarios/inference/chat-app/chat-template.py index 68514056..2cd88ec5 100644 --- a/scenarios/inference/chat-app/chat-template.py +++ b/scenarios/inference/chat-app/chat-template.py @@ -1,3 +1,4 @@ + # from azure.ai.inference.prompts import PromptTemplate From 65ab5c0f1dfb85c1af89b826adc4ae099879c0b9 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Fri, 8 Nov 2024 15:26:49 -0800 Subject: [PATCH 05/21] use underscores in doc comments --- scenarios/rag/custom-rag-app/evaluate.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scenarios/rag/custom-rag-app/evaluate.py b/scenarios/rag/custom-rag-app/evaluate.py index 08058bae..4cbe8247 100644 --- a/scenarios/rag/custom-rag-app/evaluate.py +++ b/scenarios/rag/custom-rag-app/evaluate.py @@ -1,4 +1,4 @@ -# import os import pandas as pd from azure.ai.projects import AIProjectClient @@ -31,9 +31,9 @@ } groundedness = GroundednessEvaluator(evaluator_model) -# +# -# +# # create a wrapper function that implements the evaluation interface for query & response evaluation def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) @@ -41,9 +41,9 @@ def evaluate_chat_with_products(query): "response": response["message"].content, "context": response["context"]["grounding_data"] } -# +# -# +# # Evaluate must be called inside of a __name__ == "__main__" block if __name__ == "__main__": from config import ASSET_PATH @@ -80,4 +80,4 @@ def evaluate_chat_with_products(query): pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}") -# \ No newline at end of file +# \ No newline at end of file From 748ba531fdda2d109b7f7173ff3e2e2c23fcc5df Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sun, 10 Nov 2024 17:37:59 -0800 Subject: [PATCH 06/21] add basic projects samples for docs --- scenarios/projects/basic/.env.sample | 1 + scenarios/projects/basic/README.md | 96 ++++++++++++++++++ scenarios/projects/basic/agents.py | 46 +++++++++ scenarios/projects/basic/evaluate_violence.py | 25 +++++ scenarios/projects/basic/inference.py | 25 +++++ scenarios/projects/basic/myprompt.prompty | 17 ++++ scenarios/projects/basic/openai_client.py | 24 +++++ ...zure_ai_inference-1.0.0b5-py3-none-any.whl | Bin 0 -> 115243 bytes ...azure_ai_projects-1.0.0b1-py3-none-any.whl | Bin 0 -> 153467 bytes scenarios/projects/basic/project.py | 8 ++ scenarios/projects/basic/prompt_inline.py | 18 ++++ .../projects/basic/prompt_promptyfile.py | 29 ++++++ scenarios/projects/basic/requirements.txt | 10 ++ scenarios/projects/basic/tracing_enable.py | 31 ++++++ 14 files changed, 330 insertions(+) create mode 100644 scenarios/projects/basic/.env.sample create mode 100644 scenarios/projects/basic/README.md create mode 100644 scenarios/projects/basic/agents.py create mode 100644 scenarios/projects/basic/evaluate_violence.py create mode 100644 scenarios/projects/basic/inference.py create mode 100644 scenarios/projects/basic/myprompt.prompty create mode 100644 scenarios/projects/basic/openai_client.py create mode 100644 scenarios/projects/basic/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl create mode 100644 scenarios/projects/basic/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl create mode 100644 scenarios/projects/basic/project.py create mode 100644 scenarios/projects/basic/prompt_inline.py create mode 100644 scenarios/projects/basic/prompt_promptyfile.py create mode 100644 scenarios/projects/basic/requirements.txt create mode 100644 scenarios/projects/basic/tracing_enable.py diff --git a/scenarios/projects/basic/.env.sample b/scenarios/projects/basic/.env.sample new file mode 100644 index 00000000..f0202730 --- /dev/null +++ b/scenarios/projects/basic/.env.sample @@ -0,0 +1 @@ +AIPROJECT_CONNECTION_STRING=your_connection_string diff --git a/scenarios/projects/basic/README.md b/scenarios/projects/basic/README.md new file mode 100644 index 00000000..53e5bef3 --- /dev/null +++ b/scenarios/projects/basic/README.md @@ -0,0 +1,96 @@ +--- +page_type: sample +languages: +- python +products: +- ai-model-inference +- ai-search +- ai-evaluation +description: Example description. +--- + +## Custom RAG App + +### Overview + +This folder contains hello world samples for the projects SDK client. + +### Objective + +This is meant to test out code that's used in our [SDK Overview](https://aka.ms/aifoundrysdk) page. + +## Create resources + +To run this sample, you'll need to create an Azure AI Project with an Azure AI Services resource connected to it. If you have an existing one, you can skip these steps and move to the next section. + +### Create an AI Project and AI Services resource + +First we'll create a project in Azure AI Studio: + - Go to [https://aka.ms/aistudio/ignite2024](https://aka.ms/aistudio/ignite2024) + - Click **New Project** on the homepage + - Enter a project name + - Click **Create new hub**, provide a hub name + - Click **Create Project** + +This will take about 3 minutes to complete. + +### Deploy a gpt-4o-mini model + +Now we'll need to deploy a model so that we can call it from code. To start, we'll use a gpt-4o-mini model because it's fast and cheap. You can experiment with using a gpt-4o model for better results. + - Go to the **Models + Endpoints** page + - Click the **+ Deploy Model** dropdown and click **Deploy a base model** + - Select **gpt-4o-mini** from the list and click **Confirm** + +Repeat the above steps for the following models: + - text-embedding-3-large + - Phi-3.5-mini-instruct _coming soon: not currently available in AI Studio_ + +## Set up a local development environment + +First, clone this repo locally from your favorite terminal and open this folder: +``` +git clone https://github.com/azure-samples/azureai-samples +cd azureai-samples/scenarios/projects/basic +``` + +Then run az login to authenticate with Azure: +``` +az login +``` + +### Creating a local Python environment + +First, create a virtual environment. Always do this when installing packages locally >:( + +On Windows: +``` +py -3 -m venv .venv +.venv\scripts\activate +``` + +On Linux: +``` +python3 -m venv .venv +source venv/bin/activate +``` + +Install the core dependencies to run the sample: +```Python +pip install -r requirements.txt +``` + +## Configure project string + +Go back to the **Overview** page of your project, and in the upper right hand corner click the copy button beside the **Project connection string** field. + +Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```AIPROJECT_CONNECTION_STRING=``` variable. + + +### Try out samples! + +Run the different python files to make sure they run: +``` +python .py +``` + +### Estimated Runtime: 10 mins diff --git a/scenarios/projects/basic/agents.py b/scenarios/projects/basic/agents.py new file mode 100644 index 00000000..4729dae6 --- /dev/null +++ b/scenarios/projects/basic/agents.py @@ -0,0 +1,46 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +from azure.ai.projects.models import FileSearchTool + +file = project.agents.upload_file_and_poll(file_path="product_info_1.md", purpose="assistants") +vector_store = project.agents.create_vector_store_and_poll(file_ids=[file.id], name="my_vectorstore") +file_search = FileSearchTool(vector_store_ids=[vector_store.id]) + +# Create agent with file search tool and process the agent run +agent = project.agents.create_agent( + model="gpt-4o-mini", + name="my-agent", + instructions="Hello, you are helpful agent and can search information from uploaded files", + tools=file_search.definitions, + tool_resources=file_search.resources, +) + +# + +# +# create and run a thread with a message +thread = project.agents.create_thread() +message = project.agents.create_message( + thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?" +) +run = project.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id) +if run.status == "failed": + print(f"Run failed: {run.last_error}") + exit() + +# get messages from the thread and print the response (last message) +messages = project.agents.list_messages(thread_id=thread.id) +print(f"Response: {messages[-1]}") + +# \ No newline at end of file diff --git a/scenarios/projects/basic/evaluate_violence.py b/scenarios/projects/basic/evaluate_violence.py new file mode 100644 index 00000000..1e88b816 --- /dev/null +++ b/scenarios/projects/basic/evaluate_violence.py @@ -0,0 +1,25 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +from azure.ai.evaluation import ViolenceEvaluator +from azure.identity import DefaultAzureCredential + +# Initializing Violence Evaluator with project information +violence_eval = ViolenceEvaluator( + azure_ai_project=project.scope, + credential=DefaultAzureCredential()) + +# Running Violence Evaluator on single input row +violence_score = violence_eval(query="what's the capital of france", response="Paris") +print(violence_score) +# \ No newline at end of file diff --git a/scenarios/projects/basic/inference.py b/scenarios/projects/basic/inference.py new file mode 100644 index 00000000..e77de841 --- /dev/null +++ b/scenarios/projects/basic/inference.py @@ -0,0 +1,25 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +# get a chat inferencing client using the project's default model inferencing endpoint +chat = project.inference.get_chat_completions_client() + +# run a chat completion using the inferencing client +response = chat.complete( + model="gpt-4o-mini", + messages=[ + {"role": "system", "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?"}, + {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."}, + ] +) +# diff --git a/scenarios/projects/basic/myprompt.prompty b/scenarios/projects/basic/myprompt.prompty new file mode 100644 index 00000000..80d3d9ca --- /dev/null +++ b/scenarios/projects/basic/myprompt.prompty @@ -0,0 +1,17 @@ +--- +name: Chat Prompt +description: A prompty that extract users query intent based on the current_query and chat_history of the conversation +model: + api: chat + configuration: + azure_deployment: gpt-4o-mini + parameters: + max_tokens: 256 # limit the output + temperature: 0.8 # higher temperature for creative answers +--- +system: +You are a helpful writing assistant. +The user's first name is {{first_name}} and their last name is {{last_name}}. + +user: +Write me a short poem about flowers \ No newline at end of file diff --git a/scenarios/projects/basic/openai_client.py b/scenarios/projects/basic/openai_client.py new file mode 100644 index 00000000..2b33952c --- /dev/null +++ b/scenarios/projects/basic/openai_client.py @@ -0,0 +1,24 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +openai = project.inference.get_azure_openai_client(api_version="2024-06-01") +response = openai.chat.completions.create( + model="gpt-4o", + messages=[ + {"role": "system", "content": "You are a helpful writing assistant"}, + {"role": "user", "content": "Write me a poem about flowers"}, + ] +) + +print(response.choices[0].message.content) +# \ No newline at end of file diff --git a/scenarios/projects/basic/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl b/scenarios/projects/basic/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..7a7a671018ba36b192b82d8c513739f2d0930c23 GIT binary patch literal 115243 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 q%0Ve;6PVH^{m#bEWt-Zxy zerhWdccz(x3sS=cpJL2p=!eZG#H!M<{Ew6hZO-lYysf zf$HX=EU-IrIf&*b=zV!>_TSZC5C34iNGR-KjtBefwyapLU1W)H>&w+Z2wP5ltp3Up zmkkq?D|3M01wDySBxr6ak(i_17ffSfLw}&qjg`;%;yQC;<+Z%3JqLMOo@2XAnLVHh znqKHf*zli1UA69}FfJmI5~WSjXovo#prjI=;(&65J+sXPdfye)waRHKAk>1#BV1cg z6DWfhvVZ%gxzaS#2XPG^OS2=I%5hx?!2X^ip6 z;nu5=WgNYxDpN~8t0K15e8x)|m9xrk`d*9J1CK78)g9*xpF_i2XyODWm4U^uN=inY zHCK&~+N_Z#BuJ4vw_mF4dZP*?wjMc+ND&Cw<9;E(`SF(wdUl||0zjX#yVR$#`Q2Pp zMMY)R*>ER{oJQ@hh)1N*2|bznW5!GXA;os|%dF^5n^;Cc z=`>G?h#i35bjAnlk@L#fgW;2j5gJ|NLWa;ID$*$)^p0;Ij{v(OAeD(GwZ$R5m`5RoC}nigZ?BDeB}#Zs$;A67v#6_Tz0;c1xNhrj!d1?f zPxPgkLO0d`prvd_&BG)fiI#>hMa&H+-l7~*3qE>F~Can~pQPC22B5hE$E_K;rW1X56QsZ?5w zb5OnAlD*tTV{@O#jG~H)r2@^Sp;+D-{GH}+xcs#^Z@8M+@`E5G+D`I887R(_Bw z4OE!6P?fNzYB%n%A`$=11}hUzBaTbexN8C(@>RE+&-(2)F{$|K$+zm>*~4#n^lZDB z^7pHRPp!7J>!I+u!N<*@j&3&Abq|d6Xyyty!*4r`2gg|MPVRQRyuTi)TbIO9grXi| z2GLUP@-Bj8CxtJ+mImN2D)U+J_ncHT`8jb@&&ZK1v=hN}=#!+@59U{;4TS0{EK_po z44?NmIN#x5`g30qdWCbvOeJPtE}WF;cM{)fM<2|hZ(UqL!J?C85r`h(&~Nt-r6d9< z?|~*LlfeV?3$2>9_x1bZ|55FXO{@rCrnE2z+?zZ4s=+iC8L&InAj*65*-+@sTHOjl zn_+mC^9RvfjGV#g-?-=JOLKcVN4`8TqZamHHZNbrMdxxr;0R9Nei`Nz-DKSDlz?(_lQA_$mTk`+Su7;oL)&--h$Oo=3hrT zKYtO3-ash-DGUVAux61K&+%;W#khf-^5b>$j3(*FU7CyW8;GD54Z=}tb?5&HmmY!Q zFW;0;QqzR1SODrOWSy~*JLabV0~%NW{kquzOZra3s8Q-HwLB`II(|MozqDZV8bV!=0gAFAS=(CNtHSsfBA8 zJusWGQg&4p>84i7DPG_o9L3H6%@2Yehx*A-ZMyWdb;@Q9=i7$(UT~4r!mK>y9$$kq z9>)On(|;*avft2DiJ+vO9VeMZEV`SnO{i1}pR)7qLL0 z;blke1L{nTGo279YJ7__zmd#nn9|1 zPumvxF6znET>62O3iNMQ{0|)Dbo5G`kG873Yn2H$%0>}8+;~x<1*n#C4tChwgPIly zVn*#aNxc6l3ZJ;L=j4d8(?S{%2Kt(mq(B_Y!SB;thSKTyOJ`=b>BLv!-|d&*!8+)p z(w47BPbW20TjzVSx8P<41LIW0Pr-Fert9aRw>1q-vVX_Xaa^ZT zq}km>bCbbEDnau+S!kWM^7gI9$qs;7%-Ad zApDdz8e126;ku67dbk7;VVt&-M!hv){M`~pBpRasYzL|L;H3*ec7>XsU~L*)S5s@Y z(t~eTW}CnLGhY=uYrEC65wraugq@DNrhA%#avi3X%`i)4n47eX2u1$IgWGj`o3x+7 ztFKed-mztQ@<-nr3_T?y%^U7?AGLvcVomu~UkWmTqEzYV4#j^>WW)Z+meBncfRhhR zpWQ1V5D0VZ41I#S8|yHDWhYp~b*(ovkS$TEo;^K{A<5Ty7{;&6e|j=+jZ@16c#2hT zzQWJ!T3)SIw;4KK?yE2uM1+@qPprr%K>uRtqgHfj&s;q1pP2+jsAF0LTYY4L8Yf6q z0iQW_G11-*cq9JGztD-dJxVCjcj=9VFvbw)4sIYG#c`UXamYFK#k&q!F*SPU)b5%} z7d*5pnemI0EXMW9@_Yh|U zQ`ZxE5k|WjSHd>F)ir=aRTr{In`1gp56Zq3a2{}%0E2{^7<1>x(W&CA;4iGRRZ6t# zlEY8}*OCVl4L&*p(j=y#EnACBbVKZ`2K=Tiy1&VNCT;~ETc<$?^J$N)|HqAVl=f0 zPrg%Q&HFDno#o}IYI&;rKsg}Q02nym+Z=@TB0`6C^}Hdy7E`P}n3c>HQkc5*YyIqS zt53tsyFDwj?=J#d-Sr$vCNPo+p;ownPD6UrHUT)^x-hOD#gfrO>pj*NX$nq^BdTX)li3^ zhI$)Q4V^xyLu0iiJUp_7SNR}2IZvZ;eXc9$Vw_Z~)mSLdMd$ua{GTcy$Yec%R=pOu z!&VPlXcO2I`a9S#>zBh#2RtiKvySisRj4k?gjJn@ly!7dL(JXhN)!3vnr2BR#z?mW zz~R*CBE{oG5?aw_`R01N|Hbieg;M^sx^h5uobuKY<2n)(-NF&xSMq+Y?*JPTZL6F< zcIe20GYL2Hx9|XMbS!B}&BE<_Ky#{GICdfdjP0`$oZs*06O}=?R~cs5NUqO5zulF8 zFv{21@1+vQhAteSX6Y0Ju2x(Cdw#S|ps19{YYxGoA1y;d~>*mzi^yIQC+3VE=1LMb~Z zmEdodZYDw_*4m_b@8GK|#%hTl;o{|E(#w9oD!SVr>A2(LLIIMhrQ)|!h1Dm3CBJ8A z8E4MoGVA4!(%rUaD5!ga{2?o|=it-mfFN9zJFmjS#QWd$6d|x8SOp{Ff?84)K2*lU ztmpe3&LbfZ{VEK*y)2+jhju1jq!|#Rmq4Z<(_Y635CTb+Eqr*};cR_IrCTcJRwn5^ zQ=034#8KCv{e#=9xxI%2Oh_NpKAIUrK8|0{VSMkQ+dmvWmFpk~+G|eNYF!ch5zCr4 z^dys!@ddq>MQN#Be%@7<&g4a9=3+1Hc9Uig z9oaNIT&|rM{89^eu|x0sM}+TK;aKViu`51{9PD6QO1SCv>|4jZ=;LYi*6F>?hRh8j zW@GQK-O_fSt0;%*ah^D+t}miXa#0~y>#LMX$i=Cg(`iMxQBfSt$ML;RCCL6DH{$BZ zEO~vNX5^Tnb9Y1N&!oUz;7b|Pwbr$edVC8O-O&tnZ0h(!ErvzD#W4tfYwgo!?htP^T2O2|BgPp+AXB{B$b5HuYy$ z&|^Y_)TTno=P+}Kb~BSqKueiXV|R=q!=^X>Oxz50j; zE@EKPHb*};g)w6Ko&4Ljc85sJ-g6&y&2ktRU>>(k!&gg(Uf=R|-AxU@=?_o2=SU!* z115g*HF(5)o;lfPd(YGEDyR2X*jXfZON3tHrew?S)5CQ(Tzvn5S8Jom zGpSb!MjUPahG%g8-`N}TuWMDsmNyMWz(Yl5D~wG$q5M};r-JpT(={T}X55do=8P9Z z`ceYnK;RjbsJ)Qrj%_$L*Fwl*G23VOfv*vPf7kb?bG}}Myd+a=d8g`6qvnjdx(Oaj zkK-Gs^%!UfIUq?{LQ#Wh>}9|>4btI?){IeiA>`6Vf<8*9mr;BpSvtwI1KzsO+|Xs! z{Sk3+HbYmZ5Z|22iCCFxUdl?tr@A8~(bmGE86aW#^a2mby>P?&ldKSp3fo)SAuVFC zG)3I>h_jEFhmhL4dz4CnDN(qCs_-O8>@c6Sd@%aO0Z+A-c4RM&NIW@<94>TU>iCS( z4@spfP5@%xT5%R8>Rb_{Uv)kY&O76yI71H6-w&SV5O5Q{-3_~ZD6vQMI}Z4b(8+E7 zCm@Yq=NykE_aDl(H887+9%M zZaC9C7+ZgHCcb&FaBWbrCVY~-j9jyAN&$iq>U#@`Xxy#hTNy7;M?P;3_qJ1F#h8X9!GMmh2WvG&H&oqaoCvGMl|bjx8>>8()HB+lBMOh~VVN z(JUvEG$h^k!Q3G!*EXzNF_vli2xeDQ*eEtAcD!BZ$d}O>W}Jcq*f~OjBcrEjXMYp3 z%kVB$5@+=Xh)v2y3t+`f+tXVP)Kbs5Eq}qIIS$6Sn1$fcEeX4t#=B_CQVJ)urI5&5D{L|z7h5}8eD$*&sWpA~QlMDp5R-is5(<7#F z^2!g_>=^e}0*cV6WI3X(nS3qkh{8KkK#-pip7kpNLqrn+tDQ62CYf9jRqkDO5er3; zE5)?HwboQ(Hjjr12?`8JtoMMQ()0TZ}`gINxbH)~7_V?{|+2MY+^8PE7^TB!zDCnl=6WtYA6B}=5@l?alEadGz8pIWjBT9o&7va3xSky=!_Oe@Qv_0 z#6$TX{sPIn{=~qV>>ZT7O;}|FViITtu_6}9XGc~!$y*l0cOky158OLIM|mvK7M7k~c>(`W#NKG5s&XyEC63~pA@BoEISHQ}Z8m-n zl>`0rKInlY@X|yJMEV<9=KBRwg*Qixt-{fqwrviLEZJ64K~31{-eC`D&Q@@1)XVoc zV@JPm1rwj06s7bWx@>7{LYotGApI0yTQfpXOD=$m!w3xayH zgoKr_RmesA`-EOFMSfLcwU`QZKAr?VW}lBmx_@CPY59kOX)R6|_Uhxe1cB!>i&u=z zKT_1G%4^0nFIxSmZt57El|R{{MevAhq7t(bS!2Ij*el{&{)z}sOszm)rVbBu)s;40 zv|JkNvyE1E@BIt@b}K){(}$h|BOq?lngKI=71*E){g9ESC~uI9*N)n{yLc20oVYds zf9U5CG>T{RC4-uHsI@8YWhW@#B_j;9wADy)xf|`Y9ENd-sVRN(F^;^+F9H&rE9{14 zMO8~4!Uvj+5t1d33zKggEQ3qTB{ZQmQ|m5TCj|>{ohLDluEYpUr2E=J#JCT}I>(Ia zUgUIq!>`q_qWiS1F#ibnZ*TF&=X}O!cw|Lvb%01@sNlO7*uYFq6L~Y3n*6$IK`_C! zB5xCoD}NAlP|fI~;*2bd?Y;V}LzfWz+DtD3&0nErVt$$?M8+?e7A$o)c@@n743}#a zTnnn^lNP!aBuP0vbvw$kLT+3Nl5hsGS({us%qrabKXl0S*>GstD&~B~#`P;pvVfsT>$SHC z3jLWc71-2Wg3<&-l&-N3(POASaHjBFT8wP;FV>Z^r8Ebt2j8e7@+nyzkXD4wZ_dDK z&CY>$jH>Q0)u@!imh(O$@}L0by>U@)%s$#|Ivm%$%WiQ<%AVj-yP^ZB`nEBrZABG* z>0=NFFH$?(NNtsRlThW-xUlTe)z;CNXV7wlmMTd4P*73(OxYR$p(sad6IGpEdqza) zDjLNSLQb;?#$FO2G!dL6178fFuW-pNqx!tZQ&(fN$LuL#v}x(fpi} zUuPZ>j98B{)V_eMyRO4A3eV$~?2t`O-W$5tiSxWS zWR)?Y03qIVP*vNksY!gHK6(Jhd3x82LB3Bso+2o5-!?oLtO=eIag&aFEl?k1BX%7@ zfd_M7o0w%PW1Vd6+~n9gb=uJ`SDrk^ku{ZP6hFB>yc}$i#7fN~x+brG9&kfrXp5Y0 z?~Z1FsPIU`e$rT z2q(ekc_n_tIP+Wh97@+VS>|95QuTrfo!N3~(}; z)0Fh+f5?*^Z>ug5axIm@TjF~~3RuJ%O(n5>;e{n6g4D`NP5Z5Il7;4WjB7Vxj{*>n z4JKWJ$HKVo>aQ7hLcmz|szdF+kDezp-BC8z~eq-%hZqYwRcT4fJfX z{pUjZctO44E45Iyz%GqTw7OF{LTCq3A?iAi#0Jr)~_bIG?Y1ev=Vd@`B@4(bnz zL(w4laVYHH7q+{jtx|*StG=C?VFTKRVF!4)xVTG^NM*(zg{0=*&+}=OJOl{*l3h9- z?>;omlc=3B-QZX;CkFoB4Yu!fXGgWFMO~9Om|C&9IG9yq{$>TCg2f`b*XqiuX#Sw* z&;aphZbFv9W#H-qy57Enov%{upjTU2=LKxFch!i21}uV$n26KqnZIi$xUTA*7iWh@ z&M;a#8O1)Y$}l_Hi2>wJiHKQ$aD()X(ToEJ62AT%HIfk3zn}RYN{&_YGm_L)JVuIR zT>neuhSdxM)F#qXMP4KQ&zGF+#BQztRSq{0{Wh~EV~14xIY?2H)1O=n#DR7D8=XR; zw78^L$bNCW(;yOo#Cct?_2+#1V9Dmz@js;h!t%P5$@L2p*rR9`i&HA!o)2dhg4K%!V&<+62_VSb%@IH==_ z_zE|1p)%G6O=Z~|i*U*s<&&>>hZWfvKK9Nu(v55Fk+S4PsGSaQn4{|oOOfT$)cGZz zUXG^!(82NlKd`y_qW=fZ2!k=M2B*W*z(1GS3JG?T+%2(6- z6_*J3Tn3?eJm|>>uA%4pTi=p+$>47F`xs=UjnxseM#t0B7L(;YwDR5~DV@|O10EKx z2&TvWa)>kap)!UKqz^ZVMItu1}*yN4R-1jA8e$~jF<#_`l0vXDP$A3 zyiCky+Kkp}m%eNZ!q(Z@>o=a`IeZhkv*Fc_FwM61m zPSD?#ofdKi_x2D-hKc8(hTUYj@y|-l`24DBaT9t)jTL`YNyacoMX5U?%{Iy+xS$YV zy~nd4v=X~lcV=M@O~Cr=d2=*vh!xssgY+k*Zj@%PL`vh$Wqp@(+*P>U@j9tZTrpPu zH}N=lu1!5|upJ1={>S%-si&|&q%LH|$^69J>I4MYd%wuN@4r539OlhVZ%#6W96V80kXv)v z7=;~FING*v*ABkMKoH4kP$_Kg(~1 zH%WoZM0$clk9=lG+m7&6qtr^Ai*^w}Kp$s+np^78r~1=_>e7xErPGMO9A2*qxG!PPk9h;5V!E0uy#!njt()&mZo;yr&HvBQ??V5 z{?0_}-hGij7x#$+s|%T6K|`%Ja06#-9)9fV*%*JC>cqb=g^&TpI1XrAKe6~>ODR8s zZO&N@dL`_=Cd1yWL??=sDv{X(gd>ZgPsU>XWq#!$DXM2ZNz(un1 z$a8$hnP+3J%v@oVz$*>WIp$fMh~qnG3DxJ2x#>thU9=656)+EKrh?cg?W7<1abYCE z&Nd%`c&%m2@~|`lAQMD|K};SCBCG>B^w~BlLe_WPxdQyNX|TeRj4y;sRekTVYnq`} zGOlJk$@!TDl6D*0J9TX;VQgsIbbiS=YMYuG+J@6{K@$d2&bX0J;rbLX6Dk5z|lop$w60 zPW7pnYE{>f`QyI0t<|^hklXJ2f_h|$18%RdJ9qClHQ{-*43qr|?;Psmn`5&75Kady z`1^GY9_zFRxh1Uz+cB=wdpk2rz2=W@E3dc`ih$QEg$0G5?<zK zr893t9bNUf(fx*e;m>-*g2I(LAmBkf(pbC1acle%C^CjaEQToW*tX^s%|B}3YuX2T zQ4UoViX)E75ff{{-ZkqLLfEZ1nQCscyG!bbuUhzAR)0JiNDT0-^XACM|}~H0%E=S{3UVC__@NX>;!CsEjQ# zh*U(RVy%plsb^&ayl|Nu!C8~kaMz*AKB#E|LLlW0*Z92tG{Y`)3O_9_mk zS7+M6B@P2o074hg+L2W2FTW}|&CDDwY2KFO)gDx3z>Qgr7FK};i0D#`TaTHLpKIde z2=H_Fpp>5lr2sAUW!fh$PQRbDh7qvGHngeys-2|P5U_2gi9@9@FT24HLMyt(PTYzh zq!_Ro84y?nf`CM=$2+qjysn&+$FG>3f3coI(}WwA{gQ@eKU@)>8&Jh`Eo6PK5vl7? zw$*!O<`wk}vMM{ou_o$tW&F%~71x*~z7a2789yS2qYed@(_kWlp-t&hXlTdXmgimu zTd+17q6wq>1VE6@Xmz=tyDi-hAs=h?(02Y!8$aCAgv(oDN$J7l5Mfe@$WYw_H))c7 zS49iw#wkG)3~CFuQ5u1TG0iPeLI3ueK0hdrz==4$)+apb*jL14Q)H3Lw76-`|>=KwzVE8aD<}H)Z z3bsAfAj9g@9xOHR%f25kUwgB?1V7HIo?l!z?qk|^|5ndvem+SFw4*}jgz9FQQ=7p9 z_E$U`;vFgEs-h}U{l7z#&H$=g!h!~_darLTA;g|S(GK>a%0tKFRC0uZyT+3~t#N0zA z;9mZ;)uiknb(Mq-nQ~dsTy_Xbhe47lw%O!W96I#Q0ZUSvR*PVS1@UhZ^Hi-hRq=g( zm&mK7ewwKhU#j=qisC~Z;yo=HE2t^iW75nS0RBRh?EdcJ9H*ompiH;Y%|AL{a@s8e zXs3e;A*o@PrVMT~Obe`HHhH!^iZ{B(+K-0UWYcbn?xpDnhyH!odKB_K5O-^jjaypB z3mCCEMg1rp!@k-#n{9JR&znq-oVp}r#h~_NsX*#K=kQx)HEQh}L^Kezn6sQv@DBe2 z6qjZ^R2~g^_nLIhocqjQp8SKvAI&2enlK3(D<))21q1d*6K1y0AT~fBhM#Ys_r$l3(<5PIdol)% z9W;fy=OP8?Lz9@yeLB(R^8IR0EprO`U;VTwItmcq?>sjwi}2#s#_6A+;#pH%Ip%KbW7RX9a&tH{JcfUSQ z&3;rcpfss{I13`U3E7*6qgzof-EFzS5fQ$`iJ~foq8$FUQ8xU>ii`ku-#JZqF{ZafhcA}ZK3p@fTCe*(NjRS;B99X7Tcjewp8KS5{i z+)$$!LC{0EMNa+VkDldL{@(|z<=Zy5ebEox15E_sx!*A%6qK|M09b2&(LrM1cmu9d zpZd{ppQ<%{(dXbF+Zo3~?tX*EJ2i?#hmU0xr7G)Xd}Vj)sz$9Jw#v?XVU+cC9nI%D z0F2<#_{EECEtB#Bd1F%$450D*&(LU7!38}UTvfrY0xjAG*L-Co4EzPknzT2TQ~(>&e=+tB(V|4nn(el2+qTcPZQHi(vu)e9ZQHhOv(CM* z@!ntK)*IExk-cnW#A>V=G3IwfSs6iG8*jK^6H7l(mb8Nuq&8yxEx#&N?q+sPh60k; zG!LzZ=UC;h32hG0Lc%kNNqp}P3od$DF!GJM@(qju%_a=Q2tp-yd5EAAq?xN02doP9 zvG`=@g2}NxMD9(SXPy-=p6$kQ>_yu&?WoYUY}h5nfO$B*^`}KJ{W@e=Jdu-4d+tRV z*B<1oWp4_b=fMBu%#ahv8Kz9w-84-_ z7KXyUtkM>?|P3xI!y`@yfMIm7ToLw(D6H>*XCwps-Jb!C&Z~#JHcX?x{mIB z(LUj5-m>_*csw+EWrnBfigm#%1Ed~`oX!T_6I0}{6g}#qwCbaercQ#7ueY=7-D>0g z{Ldw@ffb}O3q}wHgC+2hIG3-cc|&Y@2;+1~n!4PLtSx?_3F9o;rQczQg)O)%L=xH) z@Hbj2r>$Tm&)}uE{aa@stkau!4j`**7W5#Kne@QF6?-o>&Hx&8iIR~PYm7Sag>g2rky!`pCE5@|3Mkzf8yHTVX#tsqc&`?%d|hrryNtf)pNW$ zau84WHg&HzOfn+wR#x%ZCM3EFvs^eI9hhj^&7mbSe8?#Jtip=yVdJK5ipJM0^X*1$ zqeWzdF?1E&3mCvovk42d$tsfC!_3oED zR7tsa?XcxR+SM-wh`UT)>|r~^9ZjH;*po8M?_MkD5&$_NIDE#PJ?v+qhupp#NN^X{ zJJ&$U$UM`bkhj?l-%ub2EoFFADBdIA-OvUSZ}s{B4mMer&B0QsXzYz4BWDLM#tnJZ z)o95*fjDfZAgPi@Wft4w>g3^U#dD7%GV>sqJja)F!O`W;nyf3WZr&t&D(+tFQAt8v zhr0~RwlVA5HDh2@c~NS`Ay@uXUWwpgsEfVRJrVe+AYf#1rhEVzJYmnkAK>t^Vb7T+ z=vDNQ$CfcsODEp`clIVQKAxg$BjVwL<}5d&3(FL&?CwZfp`wennhdY-vrmR(2P$Zy zW`Es@c>pEa;Be{+jDf%z9p{B7q?`|)_rkgDHO&lkZ~&%g^_?^wm+-8Y(7&)^v||c| zGL?ifi3Ha8pW?8~*ISFVBxZm)?UR7IG0V*A4wE?O`kl>Jy9W@=nbW#kwz;$1JNGS% z27H=Jq3rK#JmsU26E;Q;)=GKG5{8Fa!fjm(vD@#Xi{QWg|6RSq3ogC%Yq#}-5q;V7 zL!*@+B;iYgcU}-fyO|*HraZ?`BB!I8QUfyYxcvo!j|}I#6l?vXb8-ep^89XixL+wm z)wTi+Gs==Q6%b~1JaPYQhS0e)GDJry_TcS2_1>APamq*_Ov~DBrXNj(C$6f#LwTqv zW58)NIIZ*vIgrCDwO9A|#`bS5jCTm&9n*uJ9@tJ)|>9LJjN*$WB|u6iiuwR@4PiF>_F(a0d-Sx;YE|~-V(50L;H*mK5rTr|^L^_44a@rS zjQlkr*1d_*Gujz{Hlky{-1O!V2G?=uyUMcny2Bx36UfuO&8lGiT9w5%?yIgl^8%87 z4bl_dHQ)jIK(s4RTc+8zfIx_Sa*)zEB;=%(Ueqz&nj22j?~El z3Wo%rgUq;OY4jr0c<1^KkITYq3?>}umd1$y?Ed+tfsiSWf)J~+(&hhUTL9gUdYI&iIk4B^qRbQF;!ZXi_nX)t1x#kV}fZ#)kms-vNOtBiY z?5J_);?kjL3BroawLD(lQei>m2qz?AkgV*@`iaoJZEGQl`3!$3%JOx0zuV^9Fv_hp z2;^H-BmT#iXAeL`k6f;Y@UiJ!WUB%q0=VNe6hYC(X5oUY6-v65yp@AybB-qh#oQ77 zhQ-=DtbG@yBIKa|-Y)8JK_K&(QjHZ2vY?hLnXCx0gD!l`JLqhkz|(W5N=8txe0yjK$7epdCewqi~5@JHLONW=Xow?*sP3DfM=|H)yNSU8qp$ zIFr?Xs&E!ufzXI6`1v~AmCKUd+j_K_^|lyLc%oSu4+Rd}_f8@_4G3_GV$K*@2vu|D#Hy%<7Y`WG@l5hK zZZKZ3tg%CTPWOP7W^Uy+E}nyhFK|D2iYlO~klAjY{bC?nVr}lI0%vdbn6aY<1bO9B)GLHfU*P*rlm{T$q(|mdMSSg19CXDdBsy#TNg>7tp);lCOU{4 z$_M!^1Qti~X0o{Z;+C2ohF~Def(pJljST}i6Rg3zEEK8P%oO)*rgV@EfY9Z56Eer^ zfgk}8r=Nc$%5i7W5VVibw1P2(#@SARyBrB&l5HcZ=MI-5e`04890D`9rm5V+RH*Bx|3`#l;MAZ06yp9I}b0 z(*z_c8Y0YIM5|Nc#F2)7y4;;&4zoZ%rp424<5380T2uB!H?f~;GTuWUd0SFo_pyM@ zCr$J#Cxb-1mcjME0gs5I3mS7K-Gg&FRJK8njsifja*dml=EiXQZ?jVa%KeIeM3r8eoUw#|NnzxoTfu3`zbm}8WD8lVt`3bW$D`jrf z{dnRUABA}bVqc3!6H&$?o74-a+PZ!FJ+Qej3qoET8GVUfh&t9QSHNOEhM1fw3M{RK z2zVDLmx_&C*NAqa;16P z8_-b^XpEj0`WzUt&rC1*ZL3layPUXDig6AxJLZ>I8qV_2Z&xy1{1)f_*9cDQ<~ug1 zHByC?4W|kIh>18`Gpq_w1aBOXUY^(e=%zEkhg~+@eT5!Z6~BLm_Va}Mlb_$med+ld zPs$3Ry9b0I_}8Or;z;TA{$B(c30(;%Q8k>BbrV&!qRX}X%eAvcmhIs~FbH9|`bhB@ z5TL@*0z5bfB8_P)N#S4Nue885{O)2awxUV#M@!Pe=g7{GvX;cmy*Z;yUpVIgoyO+w z(hGK$wpVBDd+}1`UiS5jb_e_%>r&IPQ@@4V!8yCQ4i-vl0lt5`tl{3Wy1bnEne(0o;3l*`8B1tmg)mU})_t@Q4>VDcK3YZ8L6nY9-T?z}p17W=_n|L<9 zFT4qu+;5}xOxe$$+}V%`U9#-2xDGGS6#pDWVb2@C{e?Wovp=QzR zu@Ymri4U~2P+yMB^qadsPP-d>V|R1@*eMO#PzUbOZmbI%+@;0|56!ixC)8Eo^CP^U zCJf1Opq0~fYSKwuZgf24wI))R8I%*dOe7F?!)F@}OXj^2hIG1l>Eb3HKQT^lq-CFa zh2}zrrY2A!aZh-$H@ zVw$3UZxcNWzCRDRwyn3yVuf5b|L38e1uwKCR3C%g_8hRoY-yW^R+2r~}Q%d3nmK06nS=Z@p| z#l`yZ`%eK%!q11?H6Q?h1{eUqznlyJ15X!66M6#+dJ9`q6GszUBNKW(R}))fJI8+s z8PiJrwwnwv-QZ(<2s5OBihlh5xLoXKfpj)?#|=sZlTFovDKHW@7rx&V)Q*Yy=HN7c zu^99fVvoFHpI~a}UZlyH$DB8@6_(*nyaBcPqgy(hQP`{5rXZ^o+ftCg;y{DYrjgOg z<$mZms3Jj~EBJwHMAvLz7_$cChVJ)ra3NUrH4E|MxfwLMDVhN>8Jy)x$yi{Ipn{=L zkq|EuUdcgD`OxYvb*feTx53ib2pdf+1fgLs0~&41rkfdiY+_iwkd{))fqbDCQi#QE z!u2@s4tsL$G)H%Y=B2p!vj5GG`W)d32upFb{ib6CR$B#C7<+!3weTD4F0X8z{J6R|d@5{(q(TiqBkLsi}o?f28;{miV@ z^7~*mbfJz_aX;}IA%0h5+~JT9dQKB*~#Tf z$lADjP2&p!zOC6I9qw&E%k2+{{q6g0-T(gtsr;8Hhid_;bQQ{K?Vfj+vErM!j}a+%Vc1rR6O|*c~Yn{ku6-WM2zAc^J|ocSC0C!H~){8 zPCGNxZhwPI@9t}(W?u?Z=qkGx(Pmt?ptg>1^$b+F83^zi!wad=fqQn33 zoH{!i7+Khw{Xa=Ic846Uz3>dbz_a~?FDr;GZ6fdtaRnA5ov`965G3Lom=kT>UWs7HQiOSVd3)@9&%&~C?7MwkhGs6OYbbASwAgfI z*ES8;mkM;7@4D8PWLD5zlJ(p1BS~vPX4hLLJO($sW_EP7FGrP+>c}El`)t;cHhjJ< zmzS(YDz7ujN1fhmCaPMN8>%lA)5!f$T}*6`avRjs$W46Q)Rf&$deADuU0VZAJK`HH z*-cJ0G)yBC0W^m+vitzAtNnweA3fwT-tt19Fwtf%E7E{t_fHxsDU*LPcCD#WK2%ZAR7*U4v)U9n=Kwb-#u0T0(rGV8wSU6T*Grt{)Zar0bM_gtInH*}c9a z7_CnTuIkHT1vZVPG8do&UAqNqz!~Ks@99wg;bNEt}jiY_ufZIcbl$g34JwMcUSv{A4|$J*9GKzW+gdm zYW0dK?_@Ft2C+39oLwChs@(@GN#Qg%tykwlIxuDQdOK8Hpmh8-_lb^C1!v5x0k5`M z3G}pvQ(5JK!3U__9NxdbEPXwA<^0n0O3cvDKYxAw{`h6;=5%KZ)hoQbl29W7n~~hB zr=%nBBbgs!jq!mQmy$Rrfj!NfJzE67lQjb9W##z2p5FdcoiSi#tB_1;SHO~GT3M~! z$qWJ-LO-hpD@q;Gt9KhF5J4)h3K?+y{nHNdLMZr{E+F#5p~O*j5nA0yC3MVRA;p+d zPK5|&JwulkkYyfRa|@kM(7(4D8#w<)$N)fNArOc9Xyk-P0FnrJYM1emKbC)5v?<c$`3FEF)~PCf=F}vZ!WlsVv`XAO0R}20?`$LI%dn=x2vkr zl~DzdjfRk1uO<7yE6KY7C2Jj$?Pn&%a1dQ>*x1z^4kvr@wKU>4K-N@jF*!&vM5+{cC`z7H-}2Mp=L4eBg6QQ>wt;(Hd0YCTungm|IB z#}pRafyVThCGlPvT9%~Ln5A+`YzVPxqv!`(m?wzSdd#3F9w1pu^Ez?nFNW%<^LzuR zJeSQS3Z)DUFwJE;UH}7+M6)RWJM&Ll)3mxY(iyYe2(l}bEkNF|m=M(+d%=e_Dt}Wd zTc8@eh?1IB1HXon{&3C0{rc~hH>+H2?aT~4o!=bY?tACt<@>RVCo7+y+cTKn6#eYa z_vm}(KZy;_^n6Dd4TERWezkBk<*Q<&ymZJOM?u+BFv%I$8VOeH3<~2_L}9oL(wW^y zT(XvPlT|#0B8gj9$cEg-+ZfY(!{3d7l^u8%!jPR4?V!G*QdZc7Y&l*yp&g?-U6^HE zp<++Jj<*?2NKi_Ud{YnwIP@ z>H!$oTX{3xC^0`5;$)v|NsujcX~s(%p(~n3({DOw+}{A$_l(xG%OI-qk#l5p9^zy1 zb<~#F<+lCv zjY1cYDyn`ZJh@tki9J;zoY4S?I1%0e4FI2*EYYK5H>B?3hZOL@dAD^eJ3&*jDf+2# zH;D)1nLWsGMskD!z4lQXz<}b>1t^`DRTa0jS|B2*8OMObc6(2k$6~FoL+z=4}GV(v2R8cs5)>}u(Eenspagzp|=xt4GH zYS@4dwI`Fk&9((>)XNDV+bzM)3*w1ZMxD;AFa_DHZQD#OjRTgXM1gBI#*c{qv!CSi zx}9tK&G(8Mal7V6{bnW<^^*j28k$B3aZsJdcB1}q7 zuM?fhe06IHw?zL?81|nAWI%=?WCy~X)zPLoZO3EM7M>aUVg!m`6$|Nx#qmaWm`fNI z0gK>@h7b`09l)JRx0eT16{eAa)t5Q`)C&dM0-NxGtJMANKAsRh8Y|h3CWKr&sJRHc zg4uBc?726wrzwmEt8zc>f{&VV5*`8<9+W*5I^3V!ZUXPTzE2WwGTNsCG(tVM)#E)7hY_DamO!>WWIKxa&N#Y)Bw|YoDfG^? zm4l;ABch&M`Gz@Gwvj@gB8=;Av=vI3Wvf~MS@7)23?t0Kf`0D-P1g;wJ5GM{NHnAE zRq+=JeWYf_?>Ll*#~y_31t0KJ(LJS8PPT_COeczc-9-fB`9|;&Jhoawh!)vCl!9 zWOk1^1PYRMz?=58swSGyNOA{GW@cib49YB8vLd;1Be5(g32Pc+;X`rk*SSM^s&m<>H-Ce$;|Tz#{?g5E zhp}vWrEN)$7Qg3|*NQfE^SK42*-}#hg}QGBa5U|;XA-RtP1&h^n^+S3e&q3bj{QvS zR*3ws4M4@yEeuP?wGg0ZlLpes7#vp3tSToO^F4UfVA#29tg#aWUAKtyd+N77}>i zYF|`wkLaGl6wVNsDY*=36NJ1CN<&rm0GUao0M~J0c}ce42zdRSwqE=gNNw2ct-Q9; zy^C`%=ewDA;I1C7V9EJS8w7Dj0=MC&qx4l%a{g0tLK zks{-}3t07T@Ld)WS>Ow@y5?ph{I@L~oD9;?2xK=h!j44y%PcHYubUUZO9|y?@{sAm z!-^s%PDa|^bzm7->19C~z>NaD!&?qgficOqiXu;xx}AZk?ZQM!4SkUb3QOGrMqFV> zzN<+Y5Hp75#ga}RLJ?AXjc3loUON-hm;mS_z;2=Q9je; zxt4_fmu`G&&|9dFdY1XN{@1YC9~P)nPwFCHlZ1gQ6>p<0_OuYCa)-2IZ z5oFmZIX(#tyyUreh|jqip(HJMu@Jez+EL{pTO=uK zL&uebjQ;wdQ6|zd`&`yi@2745X0^#^fp8Gi%8gwvnz9EYl8JwuMn14&T1XHLf!U%C z5WUorxkGUkl~leCLsgCHM+>^uwp~?G;R#nkZFb?B-$R4q_qQjel6whst%RDD-QtE! z6SoZ#&2()J4dy-9W*V;Dmg^hfZnh>;HeCU5y6m?{dfx5{qT(=mA&7bz2x(7WtSsK2 z)>Hqy^z{fQ2(AJe^z8$HXC={7xc*z8P}LTA3FhUST$0ZdLd1T2TAp0Do#5{i4k ztVX6cpG`O4{WbCt?M?E}y6Ajpn(tywg;#GSVLaE!!P@zT%*^j9kzUF!zg)lyjVEG& zHFQddl4i9LQr&Ui}rbQSPi?k+kIgB{b9l~4q+97mI~2vWBblMd5Zr->$l5a-F8(ufDQ0wJqW4VL%U zgFPXEWXXsJwtw%K1sCHQuNx<>;|l;PL8Q)MW59r&7qqsL=Kc-A8V6i3MIlAUhWr{n zos}EKeC5h!Vfu(|)_K?%{UgZsns@kecj}%2(lpjyBOJuk0<>MJ35fFbG{v+>G)2Ap{ zzI%$!d}ArOx~V!+iyR{0En0UgM4 zAOH#q*^O!Lor@gm70oaxZ_}lVw!G*00Bf-?DCh8ZHR0|~8 zXG1Ve6OykF4c~e#uW0q?-kn5AzRsH0VZlHDcyRq@UUupp#M?m4bCbq+2HAZqe&pN8 zKLEI#4&C_kLVK0;CyZ#pcHzLK!9rLeLf0H$x@v{9fcrIpZ44;FcCs1%HhfkaA~*d-p8xUJ1n z`FDK^xu0ukz5OA)l6VmPYDgaQ_Hlye-eiY{(g^{Kiq8ab07QOZFEH=v824^m0+r=i z%r8X@x1GPNm6$dO+#8dDAB-*Qa_Y48y&@Vq+}qNb;mFt0oC9tC9MKzUsECr;dpHdr zi>R}zIXl}EU|bX>RN;qy>=y=2QB>G{mbWw#e=%+po-dIpq6Y3QJen`0p;kI+){%OH zr-WJV2{X}`c?HD5b=^aaIq43Acip0uKUJ^WRWsm_q*iPEwpppb=_5Bpo&>~m* z^HnJ{XN0!-di?tWWsUNUKK-RASR^Mc{PKn*Hyx38#wDf_6k9AwewnMjeH z;=uVPi0AKpT#1Yz+7PkFowRm&$)Ff+rylWrXg~}c+YU#V+$$l7glhg`rNDs@!&X3| zj=&97N}m_?(~iAK4zI-;M-Wtl$mC_8Rf>Smyy6ZvpO4XwmKhtx7MFjwwnG#ddLNS1 z0hiNE%LMcC357~ykNVc)DLL8}7bpjb`j5yGXvHc>dHG}wtB}*isW`X}hd?}s{wBWe zb}P-1Hy|#wdCokeSVBU4djw%lID?B`;rH>T-}{T4PC#daZXbt8Z{Z?6rbd{}{R$P_ zjsIZDxXD$FXXzIs+5NooOSXqprx-RXJ~b05u}@z%ngCYkO_CYoJf(fEINmFsW=>!# z$Et16=USr&@&+F1qvc-<$K7ns2DoLmz_MYaZc2;Ja|{lVFVIubMfXdGWt!-h;wF4k z4{>DacXJs8>6=L3;+e<@|EF#_xnof{B6xLHwd}xifoIad4LkW-SAKMEd0!wygJO|Y z>v+KK=~G*<o#w8W(?b?m3%()X=BW3ybc0dg znXcD&gl{YZ+45U;IK!f<_2=Qm(A${cmIQONqxhGm`CR_ItCxyVZ5o%AdX_KA5^S8*EMST6UU(o-=vW6%5&q4o?I1C5?0M-A@diCt=O&tH*9q&Z1 zr)Obn;jE|kUx-|(UlN!Rp&R`JKB&9t;6@`DuP6)xO{6=y!8mb!+nfzKLAleQWp2Nsqf`tP{=-U~iEhHo zzAELJ02~chQ!d4WxNj0pvk)LQ?OdQ8LJGXyr!!n_n9yD;UeOKX$O5+`e9D-R2%7Rh z@FzmE1WP(H1gj;CXrSaeE=E?*)L#1|>^VrM9799+I)hGOP>M_6dP(i{_y&cR;UKR` zoQY;%Dol4WM1=O8+VhWl6}eGukgM;_c&u1*G1@~QObH`*oDD{M?9O+fW?`KieUk8X zF4&r)ZShZt?`jIg!NgbQ`&-Ffc9H%hDky!p1(B#&A$mYEeJ;}GUO+-z zYSbBaE}n$30Vjx=sxhP&_Wl}3KNjLgt8?Efq!$i=V;J_-PUNFD$H?f*q7 z|KGCyH*vqU+vG^ug?{oQ;NhrZwr8Y=R3k{@}a+Zdz@f4wm zbZhux*ZcY=9+7ayVY_I{lnj=pzHoSW_$l+C@Euycl0G)cC>0W6hMAkBctd~a-3=ex zj@7QEGD52N(4{<^>obUy9`WUdJi>`KHO=>X6fb4QQ0BPd7gmG=Sb$ik-Cx^E zePomsy|(T-eE$23jZXYx1ve`ut@}un=hVJ+4`6jyUJQN+*3oir5w#iTJBU@`w~v3r{Oq-{`rL29obn6{yBQ<+OELFO0O zo>L<-I;S|Koz`uiWIeP7&3orud4HI=Y3qdn7dR>g!OI>9BZXyY(h&7?wok{g{pe~QiQci$leA& zc^oCBVz;sIzMMb3g|Ble)fnPQuXK`41f`Ni-kz`ol$1;Vgnee_+;4glr`D?BG}&Z% zyo*IE_@9|_&_oLy6?S4#yMdrGY7U6>%WZg-u71J|^&#dHkCx>H#MXCk`+$1+baeh< z>`dUh@7Jwr><$j)EMEOCb>F>jC$>$-9ea!zQGuocoj6Dd=A>$a0RgyCYkYp2M*8@7 zqj`i0w;>_?TH+8gM2|?AQkLhT@W7)E@8aI#{3d?|=;6yqfiTvAR6(FP?uQZ(sGgw)9ZHH19G4E{XfaLDDjnanDBA(5%Ur1J1Z% zGJ!_{rtlpJDg)DgFF*BQoGOWct%Gjm<9i-aED$VP94F=wrag=R#$@&K1xO=Yyxw+j z5n#^-oihX$pzY0j;EW^_ghqmi7_d&Qw%_@IZ&z8|D2T`Q`$oCUu_R@(^83_cs!>>y zOq6bET^{W+yI0+#+t>}Fs@djZ*@B>TRYh*FuMjYr;?9llZm!QUn}Cbc@=T+|4=fMb z48+saH7)h(T9;XM9u|bvqC{o{ShFNXlY_l|;efVB&jrXB8UFC@tY$;#xLLTIP<+j%fEc>qY z-{oGFoz%pYVNLX=8o+B?y7u_Sa`DwXC ziyWbeD3IHanDr-BgCgEhzm3TG)WNFeAPkEf9cgZV$@FN*so{9it@$H)(wE3I7rwxq zt7O)vo0y)Ykv9y*{`4==a!z7ARdcj5a2H&&rliuVkM?lWg0j~A#tElD0HBG1TVAOG z?QW0VJZZb(Ltzm7oy-TTxk7&g11EM$8QWE;*9_njI5$#z@0!ed(U?%=;IY9sR*nA} z=o`n9GdZ1TL1 z#8&D|@HI1)2;5JAm963KtPu}pmBR9qnWaCLR625@EsEF`Y)R1(-qitg%<$#s>?sPj zi#rrjHzi=_4AJLpZvFN5E&vq?$9y}ah-z3W4dx{3^js2%FMD>_stPwWnkm8o5Ekl8 zdG+xO6_|#;YP;MQjqxd}U~V}WE;+R3(cSti!$V)q+lM%E>9NzSLvdb}iLlV+s=b88IM`%b!>2fFiab>5`j4LUMh_WxuGo|P1Zto6$%IMj^&WV zfS7SOIQ>Qg_tCRIw1!4W5tR%9zJ_R~pX-!C+CvC6Z_n8yUWjIz{xV?3-D8k*{90|; z#iI1@PhY`;ad{m|tTt9a^iAbU~3;aZiVS54qBs5%t`be^>OWi zcDK_U%RVT#MQypy8$$i>_^}LJN_Kwx2*xy6M;a13;eud|J=MC`@E4a7Cixafa(@j?-Kvcsv23d zxQyAo>jm|FnF*Dna@o#+uT0QY-VWre zB|%k<2-3Y^a0t6kG94({9EVgw=ktLqCI)|7+4pqRL?hIeI;o0}1{QC$YLJu5nt3l^ zxdm2*JSU*aoN4pDZ3~gFpa&Hc2B9%s71GIfSkoyYgqcbZ*#V1 zY?4mJt{E?9l(~Fc(Ck1FMq|*sRN+h5vXrpWj-N0;wA8X~+q8#Z>$)pPB}$;0%UFBie@BIijzw)YJ~Wl z^R_O5PqbYI8*!r4lV{*{j64So_%7j+9dQ_ovSrUf2+yoY5KveUe*y;;zs!g(jQZ40 z3vr7#g48UamRl1#dk;1~*LE5RN{^WfSW+C;yw-Toy8 zHmnZo6X@@vXjVu^iV0RhuQm^gu5tFVlabKPOOzH$-5r#8kp3NwZu z0`q8s>+(R-2K2qZ@Yd@$@ZmYEBW9v=W2-%qF2ph$Mdm*V{yB)lt%e%30?{eVy6#Ni zSk+?d<$k@u`cnSEGm5|q0=?t6%jLrjK(>i~5eyck{Ln=KjUgV?CiM^-aiG$4hN*=` zq0Sl40A;fe>5@o<}U7Ecf)X3^-|xNS3GxT>IFOV)pg z#8_$_neT)7FXPLybVl0D{oAH3fev1_%Wpz3EKhsUC}|lvz!OSWQZ1=OVh}m#=%^(# z2>TZ-&8rHstq+KU+{AYC-kozXFHcZgVZYp{ZAYC-RC(sf??rQ9#%?FQ>FDOS1ta2V zs^UA^1Ot)X&1qjlqxuItk7ZqLHSkzdG%iqi{Te)GhkN=%S_Pe6J@IKb-F>bo;741p zA6IFG+0jN^`xdd}#~{yCCTsMgZ!44rF#?&&*mGwc(q~KPyVBtU39GPAl4-3?voHX5S=qvZb;Q&f<->2Md!&oyXgP0Dav&?@S?*XJthH62 z9vy1JBmUXIdvhw1oGkSrYY>&j)_z?T?zN#|(EC=q>vLG*6uhdog$LVFtkd<%pfiFX zs0K~~LWiwKyX*>*wxjxLY&W?37@oXeNt|ZAyS&f-n_|_+7kkU`YF*3Mau))}b@;5M zzo*bF*^RPL;n8F;_QpkuTzd4AN}8i~`mlw+#{GCj@YvjOuU02gPbdIyhJHOtJ)l%gKL`yJt1V zf6w{_**hY_13RZZ4Grj}Bx}CE4H|F>0vK@FDbqLM52{g98j1z*(*ocNeL1(BrgJ%U zX$itdKs$^c574k|58wQ;QS0?hYu$e){H4XeO6zuq6AH+tl>W^* zLiro2*8Ki!JeqhBV`(>Pv_K(aJMey$!x9meX|H>I3(2otVWl@}3p0xOB@PZ-R(co2LjXhDBID=__goaz!Io~iII_nn6c?=VBNtnJo2 zfkb9kxeYR^3NMTbaG!Nma67NuYrUmvc}hCUixj-@@=%;MdLLVn<}M1W0B%DeD2c&M z4XOq%f-SX*ISGS}XfE*2+1GL;I{LQ0l{u8~T7x=x&c~C8`J9l=Snn7|akLrkmQ$E{ zTzT#D5^=xXguE$zBDJn-yyCz_XujRFGoSRLtB&lDgBH*YG^oRfdTsr*g zMv>veDi-TB&i-&+VQwK9Y*O>i{uyiq*fw_GZPlz*P6Eco2G7bLVgnERK))Ek22Nbh z+H!@T(nfWjL{wV!jq@`0f63s=U=AA(Y0)Z-th(Z8Foxacd8^y{9o{0Fe#x>fa`%S@ zAv>f)aD-YM;ZEYjN;*=(-yrh%nag6%&{%|Iw0z+YrGcc)xqJQvj%Vb zAGqAKuF}Pj^_@O@<#mIba)J2!B<_>WugGSd`5tA9f4ye-TTfH4W3+u7Mb}EbeI`~* zy`7&a@pbe_j-BWpBuKnog!MlkgRckuGkNvgUpe`GnqFRgA?i%0y}BzKk74G}a^414 zvFlEa*iP4t~fl6HPa7q0J}0ou2J7Rr z^ioykIkBG|s3D%k2wQ51-IWggcF(a2hc)?6;u1*EqQ!lz^AR>M?qJR-BHVRWS6F8> z(psz`kr33W^Y1T_2>1aZm}ay;qQePOG%SPh(D-G#%Wd79JD>R@F;{dRV ze=r(XYjx+fhkQkI91b zG|^*>GrRPt;}A2)&Sx$?M`jCva5tZ)QMwr)92t_sb)DCv!+$v3_Hv;&0ayNX zN7T87@(0@T`Rs+ad`9iGu>t`ZjV3Y0LR>4s5y)Ss>ZvTZ_-GIk% z;@X(tT#sdWt>#5#3f?EpHKZ!7&9CqiIeCyz%c_}|Pm7pZ?)CigDz#0O8q`l_#dSe3 z_wW94kK;MC3SCGg#D`%Cxn}GvQ!Ct+;UA9GJ=&G@s~3~azTnt^KJBV{HOr}1KF7zJ zuOFlNxZ^(aDV-lSJS%pG&ztVwY`S_)%jh=GB3j?t(*yrr*i4f>&Xu$8A6c~y&z!l3 zL&#I_If~~izrg=V8gY}_t{whC;}#$Q0E+($(r9nsY-IiqGG;4q+ifx+?0}x}dDs0V z6Dr*1|4Sqg05rWq3xSfsrBy|VH^|MY;_DNuy3KhO{raZcI(!PRylL$)>p{8CL1p_z zix)&s<1K%gIyG#u=dAYX3nC|B-j@YNH5Y&P_I=vyqw$V$Y}(kKE8+ol8%#{fgcS75 zgCI(UT4B@U5cLI?1Fd_yCs$BI0jJI1yPZTl4p(TIqO;nb*qK@6bjy_0(RDUfj_o+i z{A4w#M@bK~aU$;?NXJ=3JYX!lTotBz)8oeY@_n=5jzl~A7FcSgA6YvHfF1bSJ65T` zk7-9o`Op>HKMHztCFuMqEJk1YoRf+Gl==BtYSUP5!?o*{Hptt-P30ZH!sm0e-S#=X&t_T+R2JoBidofW&?bfF@8MW zV7OB5cAi-6HJjobH}Acab}^a!l{RoG9oUZ{xwd&JsA>26O6d2eb^3qHiaptZdE@(6 zHdbH&0HXi7Yz7u~|H1ebWu*R#@zY=VVQff2yUyx*#t|vj5nRZS{5RuI&`4+_ZhDh=OocG5`(Xt zbgVj%8L@5&BE$P(CF)0XU!LT$P&4E6-e8V{S*AW4bjF|VejR817dBnjs3Tz4JcJGB zuWlxm$p}yiLqe+f39j zbZfkgsM&9}Qz;LS{4n>1EK^U$pYQ!3F@_)8*mzg61?`7p$w2~~0V_Po{2{@`cIgn~ zjL4zCiyWbW;sL@T4_L&z48P+-(kP;Fq==Gp)WNIhjTdWwU&EfkeF_7}L1n0hdoe8I z1kKeUAnS|sU!N?Dk~I&Bf=S85L*r6BZZJ69*@GvwYlRKRb=8^vt!hM&N-5VFa0b&* z8~+uQEOd>bcAb`>mHMZ!da(Il?7dTvZNav#TefXi&9XU*vuxY8ZQHhO+qP}nHOoG= z*52!E#JxMt+r1CxC3_p$M}O#%F(Pxc_P6hkMt~N2qJetnCyv3^vDo^0j{X<`ho)dH zq@41zAz#EI8eH_G)j8uT>QteVN$>m2r^GBm`!<*HE#vyo&1Nk|lH29(TKM8PTrsxh1I3pb8}FAi^`7MA!UWfcKe zH(yU^jGhB|2?R(sp9@<1Q?11fVy-f^MTO0ugl3veRJt4p0{SCG9?oGhv;YuoP{&d* zteQ)P`^k0AwJ{;qB2c}i)3I>X5)?q5^_|VtT={YBPDxFB51n|QJNXJ?jMBR>0Zk4s zDLLh(e@)YsuaR%9oC7xPZ&Vj-fo5_HMsanQjmP`xy}P#_=Hg<~Wuhq5YapsUyVSY@ic|;zglq3N z#5kk@p3w7Psakk}Fj2(Dad`zSik0d-L#lkuIN}AcJstzWHBTTt9<-C#3TbU@hw$o)46gmzZRstv4 z_;Gf~JAX}j&7?xt<3z+YQ9JXm*W6~CMPvJe{hHW0{^H8)4<2($6Us zXP?|`yK@GfnbHcA_@F^YzDD!wXXBZL4=f!tGv0_eQnhxvK9plEK(I)&$~5z?mUdHc z=xfJofeM|7?o7w4)J0(2k^l|`3`53ju#V;`uIy#l#nUyfqQ@r@O6QFo-Bua&Jc%>w zD693iEE_E-loO5s{6nS-;10UOzoQQIcOe51DubdfFiI03 zcss+NFNQl{*m#WoX}d{0?@^XXyjnw5FVeebcMP3gPW!>f997^MK$=(dG^tm8nzx|6 znzPG7YGk3BYLm;8JEg==VnP=M9ZB+7Tvrrb>^#~aJndQ?P}40{ku4>Iey&@92*Xc*FDucU^$)fd|= zP+^}WlRZ>vB3M=biY-S6Q%8$M=TfmCf)s(yiVIPwA`Zt){p|E~7?hB(u)}w7AsT7c z4{;d*jHZ78PfA$gZ^&~J&y;kjh;n(RSrzS#VP7_Jajt*Wz*n0hxw|*L}uNj zxrO>zZC1Eod5jy~q)iwFo|RwiGkAsZF;A!MdK`OI>t)P^6-yEXR651X6bw~1Q28sw z*qeAW!)#_Vq;Pe}5}U?>q4B2Jc{Xl`12^oH_7NL?|(gpnib$h z1%d(q=urK?9z*|mo-weoHa0VH`Zo>3KlW7>D~nBGgfF~NAB;r!HfWdnj7C{FP1_nW z1~JV8c0VM4RS5@|jRfbVtt2bb!k(^%ij;&yr|QI6Rsu|zlC&%nWcziDZR~3)SrlLuSp%rZ41XrjUx5~m~DuEj%T2v;@aD?aul+1XrAgm=8vOMmO z@DXxmGTBfN)Ku91i-n0}CkPva4gBL}0CeeJDt}!fVaX|AD+~P_=LtDJ$0=vW+d%Z9 zfW{E{+bB8Vq-l$7wbP?elGg9VrOM9_gTq+NM^zyis4}lqDUI}MYzL}2`WWMSVM|u4 z5#-CpdXnzxnx9&unug$doR9H&R4LN@C>+`~cQHvfdh5tdY+pBC#Tq^B>OI}upFF{A zK#dBPOz@$D2!;5+QOL+)Ovsp{>oQML?fs_GH07T-&e4cq3M>@UWwDc7 zexch)`*1g4CFW)OM1;WmW{bq87%oy1?4@fJxhg`4yEE2MPeRox*N<+XxBq?$iX|$R zKy2|_!%wk~$j46qj8G_U>auP~RLjmkiqkdOLbr7970pde zQy}bTu?A3pNS8|k+~}%;x#qHDK%1t{6}3Ox_YfczCk4eOa)LmA5$Q`hs9hkN))P^~ zUSewK2n4;X-+G&XqC|8@)u=&D6PB{_18KH*1jXqu0~5nZsLrLlPpo84VoSbW2JX6@ zbvpK9YjySE(`xyCaG>n8z%j)ASm9EzV|z$gcIzDaD@@tGmB}{L>?0tRyiY3*=9}@1H@QzIc2(ms)M? zMLF$`ewM!Df&U9g$2kC=$@QokeUrXtw5R-I+ZV*)24xZ;5PT&&wSRtO@!db6D zdN#BCvY?gtZPNrlY`t(j4+`>N!$4jXd9?|YG}d2fkDvpt@XcJ>UrJMr;SqS;t=7Rq zhOx3bCRuQ80mZWUpG3Ef-S=7W+#7uiQlMooA}cxM;^pzEJ={>0WxQ*Efjx}+0R=-v+qOW9?fWW-Yd0MhxDta#rl}=L@y(@m}fZDj=cB}~U z!d802y*;eY)y&YW{PF5qSSy$-Bof9SEjB*(eRDbNO9VTi<+Ks=wj6R|2t_B_4IZvKakYFrf+-44Pz^w5p47!I zyd@A&JsQLJm;0DgXKIn)lU+Nj?*kuBtD}FN(3^KOSIlcJ!yM;vSjvWo~{PeHEYe8b!OgQKh-%4Hk(rycDrRtx<6Xw4M|1o8^ z^#-<5)$`w)gH<$_N)~=vjvqk)0SNwwzefK`BwTS@IAF8I?`R!;`|6uplyTc18aAl3 zR2rD$s?|Bw>8Dg}E+t8`U`_k(R|Ydpa*;5VUE1_q4;#>9$mUzhIa|_GL}UVDMG5!J zngZz5-J#`-#B}R}51DHfqerB}9&kHn4jaj#-eYB_ROCmVH;w{RKQl(TY2O91xb;gY z)3I~%{FaL;8*P@VURFzAK~64IVxD+uqz%7g9A7bTovi2@i2)1f`=hWl#Q2%i0G;j7 z3#=X;5!e7qSJyNW<4s;)*=j7LP_L8D++BHITDjIqj_HF=qk>sOW+}H)VP4;ZuO-}9 zzaHaV6+iL0)UJ*4>Rr$83ZTUus+17edmwU#1R>ktqbyYIV>mPj$7|Jbi;6CU*?bl39&ILrN%<`onAk%>8(ZpYW(6S$% zqJ~IH>|C#H_wwwcgC7h|2M6!X^>+3e%3ZbW<{8-J8;uorx&mg3f_^(gsbyDKZvNHu z@foaALA1h-#j+p&i>qdVyn=c9NQXSU{T>6|ee4ManI$v%S(#ewvQ&jr{wnRYIh}S*NQ(>o5*LwxIZ&_bMOIH_7k~6NOx5w;D zK?L&1l-`KhyHfqUmvV{Fojn-SJg6Qi+V6|2iX1qH!(IEq{y>$^Ks&-?)W`nR-!7 zs=CXCYDmMgWAxS@W!?9+hdsdZZ{%o2S@8Pkr=zHK)DHnqJ$+W3eRa~?e)verS%c#1?0Y6z&KD>RtAlCoRP@k3l zlM^YMk=?eZI8_-w;V9%ZJan0Z!y@v+B>Fosz#Tx23%8#yh)##w$NL2=TMQIm^Y)F@ z^XP~k=H7H{Aa?lvj`+_>;0)%u(bz)#nrn6?6n|i?MTiMe;-{HTLiB1ci)ugv;`@XS zZB4=7d?H7`oYfajNaJ0Ub->>GA+Q{dBQx9PIMg|w$T>0-&}arUB9BlVZT=j!!9o&f zZ$tFlbcZdsr~8Z)Ku*AK-LbxEvRo-T4pY{rob^`o;PyDpo%)Z(c z%|^Myhhk`_KvbmIRr|1G80c7Sl4O0k?A?O+nYg-YbhA!bc7B#x0;fR3s-P3!C`n~G zOqwV}kBJGYTcg$d(sKYuwigt7EI(?gD#zd!;9;CIX9Ub}W+H?pv{0rpLP{Y&ab}#_ zg77;Ok3J&6O+8m3m%fp(Oh)M%HeH+j7rGWCNE}$S`jU)uh#}-w7Puzwv6U4eNXrIs zfigF;LHtqZzko=R;L+z=QT8i&!PWGiKoaYvwog}}y`ReB_pp0UR;k3&$XaO>#)JO>e{lr-bLI3|4- z#%$`s~F_u-sX_=5Tq3uER10zq53 zV(vr`Tcdu*+A4r*K#xvu%MO%rp*YK_`x$;uoP~pOpP1{PBHbyS$`koDP{~)NmoF`r zSB0Y-JE&aLeIDG7{$JfbUcJS>F+vH+&0UliFhq z64u8H;)+#;>W-5_B8b9h6e|V!BZys#FmT#Dp1AeG<>SNw>?1846p^4WiQdjOw{FdW;BAjnXuLWbeBCYK*I26{pF)svq%HKaVIhI-d$pO) zd;Rnz==x*_*68}PYm?1!Bc+M5kVm_hFzi_=rfhb93UbN45_8fvU3TKu38%spQ|}I| zz-T5mwgmDtcH2d-12d?PHZ@OOHTGxsUXkCq;Hec$P#QgW$4s(E|~^+6cfdFtefH z73y)_&iE$NoK0$$dMjf0!!OM=1E^g-tD5xmqYo_as`=LSx!gyQ0T$!lKg_rw6llnm zP{2PJ`73OephCUKh)&uFNf@G8GRirkSeFd#us%yW78Q)fWtO+UL|uGa%h-@&g`~qc zz9?dKgR{V^8I`ThN$B@e;)<#043ugC0lJ}zzQAf^tn}>Vae=3~DLA$uZsLL7+WNX~ zTZF(v{NYNi@d;)Wp~5SPL@E0=u0R~Lq_V3rP^|O!Se3tO;zFnffv_@57@}z!;SWL> zUNu?|#zMV5@h0amoqy@*vN3RhZNjCV@EhbeseBL?uYftxKY_F!NoCrl##Z=a)B=NEH$S`827C>#YiWlG?T51D&ruCR#l?j_z~~NvD{We zVR_yjt+tygqBL9TBVV=CSLw$w*MWE@3Ge<=w&1f1;~}>79!u7}(`Bq>aq@U@7-~HP znY3?H+B^p@H;a-0z4X@>=n&=?1nFnlbyDt!CTs#kA)W)JI1ddnL}6+-i})JW4qIlb zMQ8=FUtS2+eK16rPyIr{EPzy_TwmElhSpd^U&VMpLhv&DE0M{9B1MX-UXF>E!Pcfp zzOKCqA$C6SWMB`}lzk@M`WtUJ0_d0+*_qj7DSV{y@HgX&)ae{iP6>LH_ODo=+$Cnc z5JLXkKO3K{>{o^9x+&9=qSZ^g;)Q39u};D)=!>*XaVsETu<2=j)H2~Um%KOa3cXDiXd~re z==^Ylg`iWR>D!bGR*A)BFu4N4F`=QkeLkuvQpu&dLCt>sxO{%H5Y$OpKc#rq)Se%l ztNkR%pSNWHQ0PSW;#4&xYSw<-L!1~v=5i7zICCnMctEMBQq z*gp!%h_n`DV&zC$r&Fp2R2G&{27Zb zw<`}oHv-%xX&XI;n8li{6kR^X$!%pdz=Ii0G3;jpnd0MSjFa{)`&%e)k+z<7LEz&p z{WxsZb?>nC1r*6dcOz^srRMl!Mg5n~40l>ptDohKUeE(EcvxR-sNuDAW>bG^+ct*R z^sYPT9{r$$STIk%OM2{;%Rm83r$E{#*wZ3uy7TO5zW=qWDf6uIyq}L6 zB{FDns2xS#N`Rt@$8paDmwUf-WlRpU%xLw_MbSE+L@q3=t$0@#N*$EL-=&#zG;-h?c1~rk-BNm^Dr8v>03si{V@SeODfqRz(Z$}Aw>9gBW3Ub=kl*N3Q7iWNczy)&Ha#~^RD1^JDB$A>NkcTVU@r<VWf`(0EwT3&A3OTk}Kst6!C`IFg+QYT&LN_6Eq zp{35vre=S8NCExM!k4acR3KlNO>!~`EchpNMRB&Cfv!N`pbGE> z88tL6{$$uTQMwZEW0P&TrGw%jpaPcY!lY%BV7SS1IE`yA^X7C?1KEbuLO}f zK>UkSs}~Vg6d65$3gk!~>2!B$lu#;TENz-%%erjJtMs%F55)5t(NpgSob!aSp>YbX z#o6+ntBuGQ6iOV^VMZ#EqHxB#Wx0oWieb51?cF9bCJSzKO99&I=hdF`rsO<$F0LjQr#iL zXUpB!Dh2fn#(rA$GLmd3ggJ*L*UXb6T~dRmM> zd1TjbqTG7mlVaTHAk#FA47Y<+SdYG)*9=EEdZ$Tt!N-BTLz#75@NUtkUAsJY;U>0x zq-&SDndn*r`mG%TZsKu1=-2w5lkhAN-?9|~IRzRInD?yOPbN{X3EDb5_u!>5uE!3$ zNMWDJYbOTx-p6sgLl^ftqDP|thVU}`wNeFhN)mM&pxsR`gx)ZEE7RJA7;{el+GfmK zQR_@t+=ri`ahCfY{?ISamF}wxh%E)+v>QP@kFZAgOy1?_n|+j` zwqYk7sbaC7Qwm(Z`m^!O^$o@=octHO@|uuXDs+gI`gM%2o?R?B@d2eFR=1gWntyYo zfd<@r?tl=T`}dx+9asQ{NNV4>5r8G0k@Z5D3$dOHQRGtrNq#Za3UU9`qVD`|nCocg zSbaCGgHUPNRdNf?dh>+Jj)2^g`Wfb>Er8CRjzyI zb<_OFqPR$nw24Kmzmx`Hr}-OjS#b+~wHPz+rDWEm{Gz{ho@Y9gkVG63QJpmp+QqGb z8{d{H9x?awh-l0a$J|XxP@pvdeAyA75R-BU2j&{54VletoeLacRFK3rvt)$!@nV|jN567S7G$!&A7vH zh5W?38JxQhzzrcz#Ws7`|pw=Oi3C)O$)N&y4+Z@&a0)>%UF?r|(^R)yYc$ zcf+J0;^{wWxcHrH{L+!J?ow-}`M5e9meAku_sQ9`ovD2LSn_wV)S|8!|GYjGCjdGT zxF4kal+RQP3g8n_X<8b1Dy2Gc>Kupy*EQ3{LaD3vGEH_hRc0_pa0sdDEhW`5auI-o z^G3zdXUJlbjS@B0EP-%Ff4p*{N2X~YAt)Io&>m+FybE&;tGaY51*61Jf*P;sbZF#^ zF3nd0@le402!)QW#kA|04I%WP3z zgoM^yH$^6n+@rQ4nC{F z#_D!pQmrF;qErU)|FQ-EywN0x+y&=j6d*k7d|!ZFA>RktX1^!%*j`aM4of2=c}TH?G%-!Cg%=-$=TMn{ zaU6e&ctYW^pc`|zc-wtkXt5bc_z^68etZnErYt&PA7R#6-k8doh`b+JUsM+i|C%*3 zLZtn58Lrtnf#?aCk}50n2c>)uFZwe{41A$vv^~T`zYEbV*JFQP#*6_)vJPmT#-|)A zD=M^|m10PPuR&wgYGRI)!G}NR&CNSlC(j--F+}&)qef%kABjQsn*5|!ZfqG~v}Cq0 z#k(mZ!~z1d6VC&6P^A+vGR$zFWp43(HQIWOdp5u(HmQ z?e^IQ`JFaOvn^taTYZ)*yW%1m$#j`1d}WS<%BL~}NW@miNObF21tG?ZCdZNDak>U= zs*fR^gCaujic)RS2DD~y?q{4LzjVxmC}ibI$pY%nByg!TSnw>kvwq@ZPadMR-j8MR%v zBhVJJku!!xi)MP?AC9T*WTdcjO!^VTf`#Q%S4VrR3GROwGANApf$E?Y%_i9?j~0EG zhtjoqIhi*?nH{q-BV@MM;++LQUdVA0XP(<6Dmgeau3t z{}F9PxCc+`^FGdc+{)4{P zN=zYw&^HWEqu@qx+qtSem%3V1zM+>g%U9OXva^Wc_{0ie$A0d z8`KU_4_SxiWu-=gLXJ(JEJ0+npA}u~(xA8d4j#{eeCU^iLV!jHB2{KkV!kId@xj5L z40P2FNyw;4$0SC+n2z6HG%qEh%AQcqa!-A*AMTJ2s%@)Of} zl^30<3{!fVKi*UX3A##k9|A@G*kQhqfU7dG(akAhhza;zULsPS*RvzUmCpJ1lb!n*VxErIa05et_&Xif3WR#vBL5SVCQ0yOc2 zVXZqkCT-b^!I0O6sI&d*mytX8CtzfoKlchNdRQlPGLCAd)?b^{3L%<1ngc+TuLVVh zE?}p+u+#D4Q$=BZmtqIGEsz134*_2H#IBL*OhtfF} z^U;g+^4jCu5zgX5;t_yjA~#vA(+4d)*GDc}`FomxmsU>55|^a9irtRo0zv@9nyI*h zMB52{*b>xxGO4)>_=**;{Eg;TOLwdG37E3+U+)iiN)~!@I2= zoaxQE1xMyN<n`6-7sQxaL?9?S!lk~Px2uw7uM`eCh}dlB`$0_)!a3>IBeu*Jz7gP zDvujVpUz6p&PxTP^maBg<@aS42jva9J6-24HE&xL-p}R#DV$ln>rnZ;R_gIsy3uCg z`MH^feXhLWEpYLxJC8+6{dwIw=ZT_x`yg5ws8oS0;90_#IWV*yn-eq1Je;)Jls|2# z7aje#4Q5w@%~9XJ`7q^vs*7m+raRe@0)-c45h~IxM*@$@{E4JD9!CQHvDv5GbE7v& zO23WyqIR6wGBnp@3ml#1_hzm%*2<=E1jGo~%_r``c8|cCrbJ zvdJK=MiJ6}p=zMRc0}{xDf4A8gNa!NXXk%+sREq2mVs zr+Oafz=rg#RL&-^9iI2iaV5K}}5=?;m9Iu`0XbTa=clx=D!wg;r%K_gLTvxGUsv=GY#I z==D5bW$4CTs=zB_-av(yFm}9;2JkWuNrNe3d-!Dx_@KI6qTuT@#gTluOg?fsV#qv7 zHy0w?F9X1iX%%6SRjWWu>@?H`(%+?O;F(Qc*4CAqO!YBujuqA#o}W@hTV6`sk`G1F-htz6x=UbgI71rMA zIrS?mjF_@03~&L@n=Taz;-TQX>ga=xr8UO`E_igkg_Pkz8WbcxH_Z`d^)9?CXv8bf zePzFt)a`94bru4fpnor{-rm`~ertdHH)QvJ#<D&xh)I<%w&HC5>E?Pox6QSE8sVt`J4p-SQd|+0)1?pOlfSHKANS98PXU zuW1mbN1Qk7GqTYOm3@)MhbM_ES>}l+Bf@ZnRG>2kT-4Kw@AKS-<4KW+i!HJJ6u63K5`qkCaJWdRV`+oZJ~c44VBqf z&uBYBC_IRbM`g_b@(-c&*3|i`s?T}bQ>^#{3lSHAv zGhP@DAO}Lda(kuZ=Xt0$IK3Q{>+?M}5&D@r@EKZWA!i(3B9o(f`LW|fp}!j+I%GvO zX?sPM!Q<7x>yRlnJ5hkOnyA9aknb*+TpoG)3a_NpiP-KN*WUyGtf)n{|C5<47Ld^{ zKj#E>Z`@m>Q0?OnpFU_&qIfyS5Jc~UXI`whPC%tI?$^G7P0>S_2QvPU=K!Kv~R3w8I&Jvjr808)!9VdRzCOjatjR2u8M9sOahPdi*OC-3<7f zSz-=eG<(bk+9sD0_3skxG2KS0}!zB1B4K4%`CkkOc62_g=$ zvO`?{&Emr&PcDt@IBE~d1|goWwP4Q*y{$9NUlg2#BXst<^HwdUwe7Obq}Mr}7~-e= zzAYbne+L`)$Z>#ZxK42xJU(D!0fhH^!i+CkeV=vCTqBHhq$HzVrYOPJ&bgm*EPsi^ zIJBdvOpfmxgpcZqoKqg=J5WvpFd3c0tWM|kO{9~zT6sId8BZR-k>I022)E{mE)nAI z{s?+Btr;iz@&3p)6^BjdY@W1Fh$lc>dN}&|Eeg>+nCi-uOzCMd+Y|N$SKw<-8~1CR z>sPlO&PLEp6QsF)1Jj0AnFXe>ZqcskAald-`{Gw(lJkvCbE6cvybV zOf7N?u#KeQz7DGwq zPi>1Q5|eJnw#lpM3i=Tmz-_ENCGb61Jm5CBTIDJ+P&NB%+-;~8RSW(gLU4ou8XH+T z3tSfic5+pwM|+rV|8!I22p3THPQ>C6!jC%QI}ddJAVR8CM>Y44$SiBUC?V>&Gp`&z zKo)7~XX^g^#Trtx0`Y`2k87SqzY-)YhKSpyf@X>V57NZu|NQOk>v=d;*hkUnE_`e!3ykvMkWR{EY8c z!q{{EJj^}E@sUF@jG=|V3L`4TANGhC4H!H~$(0~6diD-KhRgI6c}0t2w95TA@eH6C zsy$z^O=bF^G`1Q;xG(>BR3-NZ4*23<-JfddyA$QUlbI@9#wL6;7`O68y67stkqvBg z+u3ymE5BlcOfXNQ)aE)|boSJ{|0=&<;|4qwBVD0{QyQei)}6q__wobsVt+^E03XnA zMi->T(&q+>N$Ce}01U({Ur0}NrRJF=7M1C;l)^Y-?;P|Rr-D0^F0++Oa`$)`mmAQM z3JPaLUNKJ@K8R}sn}u(L1$80gj-N`z2uA1lp92%1+HI6A5XOptz|E&-Zc!hAX0bE| zJg{0P){zmx`rdG|t3CU7=6L`lDC;g`+^zcE0_=J17)IldGF{gP5^7;6fT7VxQt;O6Lsfoc=<5Mrn7)v! zLr$_O6g-1v7h2@^4uVK?cXar<7@^#?tgFcN!e}_lsZgV{VK7Vx`hei#j2k6DIrD!o z)uV`h&swhk5_PT;!hTNG>a}zNm4reYibd_!L8@xWRVKPqn+;zKd8Uf*uPGD zOB94~VNAiqWzg}%3JLe)NC%@<{NJpQ8Uo>evO=UO4Nay-y7k&=!Zg#_-~|nQi^JS^2^k-S_mYFvtKwi%?Ff-km=OT{2Mbc(6@PZp z?rkZ7-}XDDIEiz(M^=~iR*89XNKn&UPr8#(g-1^DVd`wY3|3pg^foldvQ0Cje|PAi zP1BRFMOVlENeclMmFoak=>@o`#^SxI4c)SsdJB?I1!W^P@ z#zV29Xxb3>rMSG<`34htIuXb}$$DHvb=+^7k>3(cV5LacL88Y*>`AI{2Q_a@kC;#3 zm_6khm%e{T2G9T^ff0ul1^4>Zvl5I}fz>MYMKPS4#i~vKn@Mw6g)&5BDuNcPc}pfN zMst?&&b@jqZ8!-a##sGN14y|W(maZyT{y1Ri&nFZQtVUv}F2MZ{^m?J=v%*C**%M4f* zLd6V2wC20m*I{w7fs;!y{@V+SG0`vxXSExwRd{}fnRodez$=&y2knEfEE*z*p=eIl z$TF*@+(=FaDL4^ep&QD`2rW0#Q`Cd9Dc`>f74=PVM6-YEn3pDUT=#Z%R#KP-15A|W zHHCZEhP6;{<9Y?`EwKKeLc%w|zSvM(5|Fb5d#i>kJz?$!s-)j9}F-ezZy-I8`rtPx$0wMdW9 z+{7CT)YW+hI^iNq03-Ky98c@&ntM+booUzpphC1295>Az$nyD?I!6ZU0=lykVlK7> zA51-VXW}S{bG#kIB2wWxnpXsUs8cX%zSvd|(cssYJI|jC_mljkuFRVEYyBR6%aNeL z)~OwO`cC3dew29V-cB{tz+Yb#Tln>Gv^L09gMKXZ;dVJ+-*@13%R1nCd&5z4RY#yi znu~{k+U13x6}qv9t@?Ox3$y_He4IZGrGUh}_q1iEI6! zMLPH&$S^)In%KW?iN!(dMV2e#aVC&HYsj5*+Fd=1b3b1Pfzk5;(r-fT;VCrcOMh|x;(7ILN8lvXBZlTopqv{Y ztZ!(3{k&2t3=Ga{pNPPqRn%i)4`;=QHOmog5kQ36m6y>tQl`d`;k`^biNGzmMdcTM zCZuQsxs)q{#(W$YKDEA%H>Re#%K<6={DxCyNZ6_i&cpIa(v?{j$1fLpQ-5&9k6;1u zB|`gS;bEgJ8F23I0W?6-Im$Rb$L<+q(HEx~XHAdBN52qfT)BnfSwtrfxn@PUWh6R6 zMvH3q4J+V46DbyTxWoC=&|a}DUZ1B+{Z?R&bf67urD|Z8JAq0IG69VoEbQ-)eTpox z3@_f0DLDU^rZI6O&mlj5?Z2orV zBZjxvGwmG3NNA6W;zA@mNpN*6C(~Ttr)cip{PWo^K+g--?&}IDg@yi=EBJFqu&n(Y zWZz3;DH|B0b)SleySDPO>a%)fy1LE00x-LF+VrR?CK~Nf3Tk}?4f-RF(ej$p#9CIw zI}OhtQ^Jric0v%;60Q(aCKehIb{T-jFdF&%0(uCB=2vZH-bDvzaV2dwCWMD}mo5qlnlfbrPf-L(am6NG@B!9t&JUs~icwgACA zgqHZnQDHH8XgRakCfKVD2G#ATJ=-^44c%*>J=>JnQ)ZlAkc!xnO)0kZ=@rDm+$nbEX2UV6i{7uBrQcetq` zw{Vi98FEq;SBO@6ozZ#)k&6=B>zP&)cW51lD_P!UE1A-*_v??K7t+K6y9AWjO@#ua46@DUqFHbQ|iu`J7>&X~@ zOlb&O4sxlN+OBDd`v+}=cHMg{CLaj+-)SQVo_rI1iloKr4cN$^PS?FX#v5?8*LO~t zkHjEIj^Eed)w$1eF+mUDs-oYM>CF1#JaRV zcRgJA148j6R)hiK7yN!`BUYl=9R=P|*QHWD8*HpXQ6f4Ab1SY7sASe$Z|mo$75MgC z;mGtLxE=Y!)unY*<)EG~W1Ga6;qA{Zxg*}C4CFWg{NGGqK{34Ko|&JreK|8XY(iVF z*zX1=i#4;DsMlf`8AW(zE+ebdkER(#tg1g^q{munYT1<57N7Bt7S@|J4j}`47vLl{ zfrUS)JvzLJ=%=a1CDsYC@2_O{21Xbv2BVbZhgx?U?~7lR=@-|z<#TY{3K}lpky%RH zf(9l_C!1=IJeH5-4L#(KzH9C#E%U2ztjz&YSGoqAtG{gh>Hig*Y{NM}`yBsf4T?JP zIe6W1{X+kF&2Q|C{^8=I(kxWh+?0bCma+9N5oI@zwircC6 zAU_J;EI9)sCAN0DujyD{OF1g4x?V2FW=uT#98?9{Xp_Zq+wfZasVK@61Itjw#o$i; z&JM~h5-;l1`2Hwn{`SsB$4plnmraIytnwi_ zeqV?Qi5axIHPY{Tvm}`)F0iqc!Q^HPV)>$xlWsk3z9Am14zfZRMqzAHO!Yu$d4)qJ zW|vS->_&9T^(G4OL(>P-F&1G0-LO_eZ4E)QcYK-9T*1r;Sn!Tohtg?EdQ~@X`umcT z$QOTM-~{iaL82~7w&&r(!C}gm@C@F}1uvp3A44rEbl(_#KbZ)9vUVH;R{rQ)_fXW6}J;H#*$+II*r6R1%Qx&Q=OBb$y4~ zV5d0MOE$(H;FX9aqB9mgbOT++OO*BjNJLn#Q=CISFBneL8klpBdAbuu_c)fK!dL5u zH?9@4JlDmv!W>WB*-O^1-geiwWyJ(*dqhwYke` zx3tCuUmB-J$~&wuc&blOtVK&{w(AnEB$` ztLM{yL-JTS%cGn8FkxtZoKcDY=ii8twUd>@PintPRqBV-j_~7Q>_adwfJ`u*M~>D9 z#LXTZZ@N;apwVY714c84#>QAiO2K(uvy(>ns5f%fZ01l-YJWVnl2OuaP&Qqt?p?l_ z@8ah95dG-AhOdr&YHxAK=yJ)-ZSc&2W_Kr=W0PB`!*|u%lwr$(CZEKfp+qP}nwaa$z+Z{aQlg_Te~C8;vJ6E>5)c zH@yxzvbgx9plxf#Y`{KM(twc7lWCy`>j+!n*IV2yb2-b&&2B)|E|$pGt@D0DWaS|(G-y9mpQ&S;@v05Q*xU8C`6(41K|4C__Vnbix7qndIXOL%z^D2FIB;cD$GWqi3Abq72gn0SZi9 zw%lz;d}lWAT&TNc~B9!hOhg;EAP1jg7JQf5dK5NDXQVZB!N`-mko-xCA= zG4ozQ3`A2c*ZcLp4eWEtl1KKVC}gzR?X9o$icA>FfNxa~H)VX*(MJ|uu1-q)2ueUJ zZ^DB|#9iZbjVB{D;h)aCQE0(Jis8!oqIIu4j!tyl>XUaFuQRZ>^-@2ip zf5LW0(1+ui&}G33KSo@VMaqo*o*@z_8YC!_*5sfwb|-XR3S^fo(aSX0Bxk_4I0vSp zYuQ3h$tx3x={zbEst5eIBp}rdH(}K-Z5HhNz(MQv5~gDkPY7K~C}kB14-Z@w+`~Qn z51EpBZAN4(f6^o{;w{6H)h=Duv)axBb@TizPyZkMPN?W(LF`S@Y3Di#-`$9B|%O) zZ|94M>9lz_*ojt+N?(TO;8PphzD?IV2vyIKkwB+0iG+z(pGT*wbN0T~gm+wwW{DBZ z79C}83`o1h?kR4`C-#$Nz>QYHVX9=x7@f6p8x*4O9$JaJ+xpM5vGFrF5e;_d@R*F+ zzfa{DxH&srolr#fu!qP&)9pv=mbAH7_xtyJ574!} zpTOmp)P|1Q2nqr&B!cgTWjP;w+(Y=62le)}Hvk+{2~eUCob=KK61h;#dvbZaW%exN z+Eo{13oM4;;cwZFD)syIsdGW!jJWY`sLm5@45AxTjB#YijF9k!VLK(Udr^0QhkcD$ zmjR`704S4z=p5DnpLUu-g?dV~L94K>gj8`hD{8Jxe)&o~=;ARMGih`f|Nin`eI6(qYJAIn24Tk*W6ts3|OCNoK06L0q~aEwI*xl^&VsqgId z$$RJteb=?uJszM?FIZTTXu=I>BU`3ToaIgewAztO0)@oYtR6<7osA;wPu=0hj{Dry z6n{UiLfsywYCi|&#_j?GZOzpfKm`3=3k*LD{PHXRh>}faS$s9tPsGrc^4_bZT!;Mo@95)M<9QSRXFoiq#B00Punu?!pkMvUBZ^MU^rKksC zz+-vP5`0uv8G4d~*Sj|UGBH8FBbkxo9%v&XH|%}CLL8W*QOObC$lJVrBN7XB_eIs# z9WBsS45_KLP}-z=lW*Mn{<3B6h!t5Z${*fGgg}mRTZcNEvn#H0+hbWmZF$W>*&POp zA?YlD+jvlP8G2BJ2i+@h*=OF4ja_+khli?XEQ1d`-OmuR1asG2Bv5bxdB?Mzzxn^C z)yz?JkaY(-0Knl8007DV{h$6{HSK@x;CZd>wP*Arab92G#l16V)+{~P=SCKu zIy|uDmPn-SoZt9#$t)AXC3z6b6iLntWQv)RFM6_N?@rhcR7NwhBUO2lE5^^1x_P_i z_2q{kAvoBr^}2*`4sV!x?N5=7xnKth*A4q?iJ3 zQ}?qDJqT-8rg<;0ALa8xpamT0%ou#|=#H1j+bkOq-n}5d2$ti^?!9RALYI7CJf_e8 zrP!jxj%*o3!pDt#k`_Yub-tYpU0tR9K7X9-&F+5lprtYT@S{!i$P|&JAEdAhnG}lm z>Gca0U1bp@pR%8Ee`6%@^nv+hmmUzsAdVRS+_0rA$n<&A9<2~9-2(hP#!He|7PN`Z z%jNPR-qlTCRbfD|a-R~8R=v^5s!2bJj@Efv6F4vxFCpPs?Xn#F+0GYF3<%|-wPdu;)?50SYJadrSp-j|345Nf0L*qf1gYfmjoA;;p zuK{)oBFj2>;oPN}gvxLCFRmUEMmQ&u192j1(rEACAjk94Gtf{pLjlb!J?1=P(UEA z7zm64sz2Hvtgl9i6LJu;95Z9mgNl5b33;j}3i&Cswho=fd~J=KBs|ZczJY>q!Tet6 z>z4lwm-`|bYJoEfaDra!ZT`F?qmJH3moh{bP^%U~Qyt7*9nDf5%33|7wQ6Bl^TA&$ zG!WnX0j(Zk)X>k@w^%I5KO@F&?B&RPcF*klvg?eTpf;IqXenRF@JpnMLyXg6a864F zHt{JO`B3-M42vhCFSpM>TqnvnToC1FG)O!pi=z&yXnF2pMg#iUUC=8nr+)C~rb{1x zdhG1*jeod{1T0&ng2w|J!aF;#P&yuv#Zw$=Y=Gs*>B-0Fv?${*$((NJnRQ4}BN$FJ z5Pz?O$b@RBRu1Z)+=VEMqWwD4ATw;)f1DXfRy}6}13Z_fNT(SM-syo$Tq$n^UXUwU zE+$7_0dZlyUGFlzS?%(H4~uGCG8J|Lri}>*o#cTd1~7h2DL_mrJj#Tzhk3*CA3F8- zR;jC}udlyfhfh19(Mgs_XGoYa^@I5H9*9@eu!l3|dV!QX1q!S>^1&379xPup=gf6F z$Z%-6BKwF*Vt{i|$21`4>YUYZ3OzbNh@?r1gn-qWVcV!@F@V8lPGHWW^3QiD4ycmH zwbOSb1{yO_W*BG=*t<1K4~tOJ&S?mMlKd^}0cmb@EIITCGjpU_{ZEQ<>*TgvG@N{G zSH8<25c`o3w}&KuwATaG^lA@{LKk&CJCdSfh1kA|d6iX4!6=WJ@jO%O{wW6{=rCvU z&*A;CblH{dpE?{5@iaPzr=iAr8eH;9J5pIJ^0Lp|MBACS4ZdHEz7;L>Q(Wa^wFQPV z$q`K1NBN6ksSa~t9FP>(;ec)(=tl(dtu89kiDV4`)ePX`saq@uiNA&yyifppdwnAN zd;-%Dc$|!LBJk1di)dK+D+U275ULBacl1N{!C9X~AF5&mcjyPRjjKQ?@`5yu&s!X% z0{lqh0`i~1{6b$@LF}gWpV);G-s@~&CIkt0!1YzBt?*&3fX4pZRsX@l;~36)LW9Vg zsZ+)@k(^F`+^cTPEM3$m%=UCN%*8E_>V7bZOjIK|>hg*6r@RKtWSOLdVh%*Vic)$z z3EU-wYm$D8-2IlQ>pWNRT5+cfWMB53`N_N4>BFHkV=3z-IlG zqu(}m$qzT1{H%v++U&$?C=$DBXU<`JuBveZ8pU}o64t zjz(M0KpZGBu>ydyAQO~XQaH87;vM%hrLG*&I)1R8l>!W9iCHk2PvP>zv-C}%wE9HD zDWJh#!!*#VK12uzfloIE5R~P%5|0f8yW*l2ZC6I1#7MK9uuU(-#tTY69x&3(RIka~ z&b7qb4G$oAxkkj>+hPQWoiP{Xh@k>FLP}ttns3Quir*XWVu)j`D~y10`cWM>1ro&b zdHjAQ-}9$8c)%alA6WZ1*!z9({nnZp{Hbt9Cv(dhXeb%i>Gt|SKI+sYG;l;)HQ@f& zi*!({v85F&=EUOS;rp^Imh3y4Qq4EoC_!uU78lZyD0pu&Q?t?B>fA zizH@SMN(_`SBFVgVW`j=#KSqn<2mq#TRyo+Rm~5b$V4GcaCL20vDIHd(qfY?Pz(;h zd>Vl;`0%n>4NPskmaz0Tbk@fuBkqu${qt)w7}a~<4I{U0`O(;;8d5~_+c)kIdUO^| z4feBg`vVTTP=`GoWvFxFGoXXSW5mhbt10M!z@?|&W6@<-Z|He8rKabaY;j%9#IX?W zR=5WW%~@1z;=Os5^4Jd%k9Z(pBFzb!#f%F*{m)`gd*q9nSLTO)C9Xa@MF!#e8JJHM z411)UA;u6oV%ba*r)J_xY`Q*VN!?BUui1<#a5F3$ol5N;8jw$Ju*{JkCRV5u=OEt8 zo(FU=(#5#cBm$uy+2IKlC_jPtv#9j@gJ>O&il&87oKfmNsx{3BP<7k>MxtL!ilGq% z&zv%U&6k%jJBcEjyxIcHTC`*c8T?q>qVLl9QD@#V0_j-zz^b-{o99dxYR}=ifjZ&m zq`(208V%AV(l4vDolL6>nPeWD>1PSdW_S4v`{F#EDVeN~J-@5^Ri;S1M$fI_^`T7l z)*XEfQtOH{Po`o4oO`-{rimvt!bgfV@CiX_xLco&PY@38{CJ>CTS1GhK zBMMX@&4Lik>O|DV^a%o7duK0bVf}{HWbgy~t6>0DI25G=G|UxwwiAw@#qV=r?6Hu= z*i5_*09juox8=h|CVhK)czs|8fIhDKoxK8yR`(e072k}7>@)w{{P>>Pm3>3^G~Y^< z=1RUEewvqP3=S)wV&&79ck1xk1Z-~4oi%SXO@vLjFgjbLgej4683DXrY&r;eq?J%0 z;t-~CH2EZ6$LdZN-lqoPDtW2e9N`Fa7UC(r6{t=FqS!DUWmgsJ+^-wBWwn+`jjDD_ zdw5A_U7qA45T!JF{`Q3O9o1 zIVw^iV08Ft_N=m_ma&Jh(@GIW>5 zEwafL>U-IxzqJVAmDR_8|710hTCi6tR*W}nIpWDC`I0>nfb`ACgR~%+w;gxQ{t!;3 zpr}jR3UXWiy$H@pdj3YRzOw0wE*j1Lnnm#e`Rud3!e9O_k~}V|^bd7`(SCfL&iPP0 zBXMKIuWNc)5@57t_}hYKQ@2u(rbg50RBq7Y-3XAHyos~Ex1wh4>ABOY+SdP*>#jwu z#zb*6L}gre*Ee!@vj|80M;UW>%MGJ6*EUOe>j9BH;@oe!v)9j!!=-1W;A*mnK8l4F zG_$K|Q?7>Z)TO@E$1BzA#oWy`6%LU=n{V zgJWC}#b@_(oE37GP5uy=DlZdxOLJ3rk>*uyvW+n>9D?mSt zVt{=-UYlyu%lDp-*S=*S0BnaS>{P{8uy{cGov0xt-lo)oaYYa6l)AaRU;SwGdO1Ju zwmW_D`4;NX{D1Dn371f0x~yKO>}QcOM&_KBpaK0A$;p+Y%aR5OD5_AxbXAj~7a{dm zyD0aI8|pTTgmvmZgTdNrJ1a$I5tQ*Y{98KsP69SraFV?co;oGTM*xUAMg+0Utc>SW zu})$6a-xee>Rg!Qxu0p^I&;nHh&iy6z z;F=VSnsiatO5LM4cf8?q5!0>s%XBBfc}M@6HGB&-jJm9bdz7!ant#-@YX%3;z3&KQ z2ci(ye$WBbs5bR1dAtYf89Qoe&$bFp`MJDJYLxsBVcA)RwVvMxpWoLAfesXtx2-rV zRC8Z)aucIXwMr?xE1(`q8VRIUa|n>snD6bjR7#p4$eBgmlOcAnBke8h4OmCp1;|^S zNWCP(K=2UFhiR&a8JHwF387RY*G=VGvWQjIz$3CNa^fFejvNW8n{`oxDRks<9FXH8 zo{*39biVJm{d5F%Rj7vzb(5o7xNbHzfP9vkwKuFJ)JGpte**}3?Fs6^sU zXfHsHm5(TuV+;1=3GuYqWA@Q@ViK(vNOWYwjmVRf8_MJb+k^3(_;qLHrm9IbERwCe z#7*XbJ)}uLJt6&y-XY>V^8>i^&7W++b?>s{FGu}&$!WO3R^Cx;AMsO`Pv3$v_q7@@ zoV!T0CTlzHX{pcLbgxJEZPQXf%3xxcso@#bh*EA(n-RS-+mT92WoFd#N5Wecm?GBR zUvU`WWWe49V495OWwn8STOdE%b|O5I{4~AX&b$}=dtn|&afk7U)2}IONk1mpW{vpI zY~?6`peFebZABP_2_5=?$QOIuBwbvWN`eZLT)gUImCzP77xxi7F$tiO{O!0WomF` z1*9`Cg3I1$VWQlwt+Ff!Myox%k=0jcZIMuH+FEF^+fkjmrHakS!D{uz7Lm*WmLG)B zrM_L1no@;wUw92x(>KNRWOgYEtE&do!V6Bxh*Vi{%Bdp>+f|&#DUnpEh`8@go*rkE zS8C|G=mhN%#u8cd#_m#P#C&vXcAUepCB|4rYBVk%g6j|1Urt+m?TFDs*SG8 z!-~!8K_coR#ICYKGL zk)7yw4w#yiFbuBa!(^(z0xHys7q$`Pf0MRww!RcgkP>8SiZdK`LsTKX;|Fz}8L;bB z8Z3kl8l+q?r(JK`8flCEXimR9r|N1fe0GoSd2OHmTQl{;Tsdd6;*C3peo9(Ptm$1e zf?{8jlij6PK1q|~QS_*aO&Bcpc1Uv1DPsz#_?p+%cj_FjE`yE5sY&lnNoCeTm;I&8 z;SEU#fNwB9BH``85)wVq;dGO00REz%9l7$(ygL8-YT?Ub(jns0A?jTrJ-owNJ^763@gp7L)1mW=m>NN)oN?NMTuVXw8++g-`*wZ5c~3jf{ssX4 z0+=1fk;MtrD$?%?acM_{&+ZK}iM+l}i($uxZ^!m39|psorM)}3zKkrZwSTf!!?oh&tPZ7}a(K z&a#DFU7y#{K=;G*y6)UDZ4p4$#NQ74Co%K;?ydrCcvs4pBgSsJSKThyGVGwk4?K|; z+5FF5K5zJTC;0vjcT40qFT*Z<^_65fCInchi+Xi;W0=msUkT4;x7&r|G*0E}A#Ay~ za=1b{wJ`ezpKUsVpmGz$pUb~LC9RcU=vSm+NI=54Z2x9mE}&j=vy-CR{x9q~gDA5zI6WO5B#&afz5o78x{i}{fLnoDMB-Et$U zJ%2-il2+KOThPol0lTq^MdSx#77_Kiu!-rumDpHLx(jeTlY=?hX0`A($|!ozy5L0B{7Ae*kW&s!=4s z?Tc^T4(~qVmUsW$%`CB7b(AY5y7bVX$#CvOv5M9V>^42LsuQs)-a%&>6JiG%Wz~a9 z$}|nAx0{>hUMVTOF($}>V@a&m1bYyz2webVf~*SFx>AaSmHS!bB$MlyifUsXRmQf( zko3@LrO6?yK5E81aw|*eeDYZQJ8Zn#2cv({Qr6hWCXMP32WXgkDkbbai9)vCh{orw> z{!_Mbho~CFOV71UsQM9UreK%sd3}|<4W@JVNm<6BrQ-K2cGo)}q)=s584}9%VPN-_ zFtL4(_Q7H*w{Fb_@x;+&sm?5JF4R)6NW)Bd)Gs51(7zmJ;NV3QH*mpufc!cUHoaZI zBEzSd8r^INi^V49?>BH_0K-3qxKIm1>18hTF-O^TA~^95J2!Gkjy;C?4p{?Ml7vk9 z5kOzmPQn>u%h^mdE z8Y4(;MAcol9iMdrCD2MTk_!#}ybf&3q^|A%n8)ij$P7^OC&F;$NN$Q3Pcht zGC$uh$gAK5+@P2xNnHagva=r^t42e|48aOxmccDr-Krfth4fQ0ZiOLi-`u$i#T!}a zROGvy=&6XQ5yDi&lS>@e%l(NVV9DDSNRF-H?Pio?lA^AK$SM_88$NXXD4A-TC$#y_@m&i&=Rf>3T8MXLi$c0dZtCb;4o0SB=wy}OD zxtPkcF>bxBqjSodBdif1>S2;X1*P<~pAJ5iVFg^cay2s`X?|%h-2Hp_K0-4gAk~kV z-0NOabV1C63t_i6gk-M=Lg(>;-LYZ-PM#oS_Kzpf2>~yyw5nV`IMFLIXfV>GXlkR* zKs9~+)HL_O{Djvca9W6MLQv$CCW8>KPjh~Ek!bOCfih#J?@z`GPqsJ&@PP$NNst}L zpN!jYPK*{20(!$Up8N-iWxT%Up@$uP+LimQ)Ris+;5I-$VFFi(Un?J;W`8b+Z_@cr z27+a%?D;I2t+2BQ7DG2_-S_+SfiM!^Mb&L^<(aVZjcN${=dkj9ot}6QzAuyohkkw+Jf3n%Mg&FLc z2BbG{jkq=`M&j2k<4#sIG0IJ?1Y@zsBbH!W@zLUxWN=lh6%cK9M`h?Kp$LJ>XJ?jZZbC9aB#qd)EU!Qw${?p=uN2z{>cY{!Y=-xMLM`Qz_G0)4o;jmST zV~HwBr?ZFH28&g?BuqIbK`2dDh+yh-(j5u&ipXQuFWj(6L>@?e3l;&WlH+jj8$SrH zlJ|Vs1pW>O+j}nhT(;(Uf+KdZgD>lVp|G6@_Tu}Lu`RqXe$&AV0o7aUaL^Z%cHmk5 zu;4t(l(`9|@a_REjOpM{nF^6XKaMjtMji^>b5yXT4NM&5#@EG=j>`ETU+w{_#xh<^ z#xs_zxYag)9)c!j0W& zd0;-SKo)-2uTDMt0vxwfUlBPo8(OLncN0j>!)5x$&{E~K)<{;%8CqZd*rE$v_>Y!( ztGG9^qX?L>$Xj zP!rT4nV*BXvg^A8&lc0QwOzw(L>OEE4)3uv<$`WT%HNuc(;;Q395s+q7at_(h_&+M z#mZ!Fzi{sS;qNEsF}~vQf*T_fZ7OqO*cZl}V$U7+`rTq8PgeE6TcT4e@r_Utn=vjy9Nu0)2UAP-0Es13_>bm>Ky0=0?7>Ye{&& z!8ji^s&rJkJZdC-LhSO z{oD!)7qs7BXqD~G(+*)hD7QS`B&;;Ln-F|!CWmpJ~K(`aK5wDeFHkx#`@5AQALUuhOwaPw6M65$rOs~ZZ zv&l1&ayK)YlWK*50}b+i_M*pmw_>4Pu!mgqezPUy z>_K1aK0a}HxV--YPIsm87d1Kw>(nd|8P^ypl>BLYdY9p52&tLP^7b3G&_?9#gX4|fT$|YFlCqoG_~oNJ?#(iUC^}f z0{nTCQg;fT+hF=ENB9+9Lfs~r(kNpuP#=*)IS`~&Q)t+}N|Ol2%l$X@X45X?V0H4= zfPNWq#|)M8AT;1&d$YmG@`}5K(ayLx1WQ4BU8H~Ar5Um>*!4BK^Q6)exGZ_CjX<18 z(o-xpB&Ixx!HeJO!T%U-Sn_l~+xvehE)QmN%@4ZI(Lev_Ey#b)N@V~46qkdOy{&`G ze@GHyV;i7?8Bj!D1%3{KqJ^G;p>nuTsazb=SR$VlWrZGazCKG+TdVB5&hU0=6>d2w zp|X87h;8*$p3oYPUXDU09QOi4$e|MOzs z9L|1_Q2+W<%Ku}J`u|+a*xt$XADuRXrTY&ff8Z7P0WR1MUjE~{#fLR+6um>OkWU+B zZKn?-Y(T=bDuxD{D0d0_uxB5Jk0iNJyS0mV2^9M;n!sl+;RRJQ`@W;Qov82rhk?ai zTXK<#_%_RGKggb>8lD%w+{QzlV7IH(D93sV=Q>tbjpEF%gZn9*v;teu zUc1#`s6SkE#M&)KfiSbnZj38KnKE2-hD~*+s$Jy;F%8`;7CKl@S+WXk*>LbMUYc`*rMkvh z2vo|1!i%cS*4es&f3PYrV3MF1wEG5*(~}lX_gRf{G(7tY&c=zUr_VZM_}8&uX2PEf zVUdAaigO+c$6|e_ye(Tok82R+M33#7!fVP>_lGh8^5@f4<>W!=n~*)bt#6@KS5FV& zjpaEBg7Z8r?k4>aN^ZL-_#bM|{KavX3;S>vDe02K5R*&-NhpFWA?H$GKK_?g33&Ak zyQMMs&B~G98CYhy)6k-o!vY4GNdV;MK9WX4bcxYQ z5mq+70cC3yRQzIqMvWE4(NechDgYgWazb+P+P%%DpPUQkDFFWKMP5zPrxWy-ag)?q zKC2`y8=at(MHq@u!G>*SM=wp9;8V9GN&3uqn)AsefCsQHlA;4R zcL`4BNg-4t#R+8gBD)^2MXuenv~ZU~gpR#A=)<{vR4OUdD@Wc~lrR2JLe!|Mwb zWX-9GL=k=KOMjM1a{t;m6bO+mws8{st>}z1O$pFgMZuC3Mq=2y&$#}g7rWd@(&%qC z7GM#3G72&`#!Ot=_v1%vvXY!0PR%y0fr&DmFKMJ?Dt$ySp&wWjt<~u2>2plr>Ew0s zC8I=cQKg5*#xZsdm7Q45765C{B;12M@|s;-j!cv@SEJ;g+e71#C+>9Ltg{V8Kf=Rt zY-TGLl4ET-Bf^tdmULF~$G;lE%N-2^&dK@MrEu~U2G?Z7(fT;d1C9ng*-0&6e)4lm z-c5uOD(3*1tEe|ric^qK1#?jsA=&TaCvj1qO7&I-O2rQC&BF{k-bLDtv!`3}dg+n| zgv^9A1cNgmJ27c`>e;zBX{lSnVr)JHubiF%4z8Ri4pAGCEYa&zV8=G_z#Qht!Cpq_ zs0vNA4yyOy;AO;mf}$JF3qEp9FqkZb7Y2VXsn`yVFE#QISA{-t)yrV}-9HP6TVU(; zLG>6^6q?(*bB*k#2qmPe^-3z9DvrO`FP)V?r>meO{N0oz$3BH*)z_eO`Ps3}zp=E! z(N=2Tmv3TB)7z!P(!x)gTm<;cxqWnzX+913GpJtNzRA(4r+kc9{XNyLGvGBFpy@VZ73tqZ?4J_5>wLOBE zRW8@I6J-bZf&ueWKv|_xIb8FfFmHL!Ouy3QkG^KLc_tDVZ+!KZl;2$f!1D2Qm@XH%ohg2WP5MjA8U z_#NKEZo5A8J^FI&kaURUE#A!+9U+|n9k9rHQM9YQ0cOI$=(}V+29*AVM%LMbEpxcp znxAQ~cFYPR{I$y{G;OB{uw=fg1xTJDo=7(o($>6umaOV$Q)@43WrbiKRGh-7Xnesx z*RVe2ujZ0hV;S2nFG|F@%}1^y;%Jl+FD3qWNbF`-Y)NmXyEC7Q;x?e%e*E%+Lh3gE%A~`hKVy1Ify!covL(*EfT58R43y(^8>UeCgPl9Rt>1$;xMI7 zpgR59yJPi2D7k}}T-|E9JjDz3&LJasJVWHVDC)>Olhw;tUb@&b)f!N%!6-@Os>q0M zZh$>EMRP2&fkvRaO45_1j@Rs<1c$D>xKP_9j%<#`&_}BoE0ba3RLzb&4O?po+s)(iNzS+N+9N(1-%}CkEz4z z92}q(d_0%?-vUkr&(Vqend@@ZCb1`Kh8OUr0#l6i6}mbFiS=n8*1sCtMi#-|?5BCh z{pWNodvlvJW!NsU3_C?vb=8;$4#NbuyFFuO01%<2pZyGh7Y+(qoA0ROtqSP*Usfhx zlNk0N<4381xZqj?QU^L?-9zHijw=rYwE~rucovd8Q!xaN+$I>I$E)+}BX! zq(WC%GchM4;>RAC`&4={T_C1*N_cUeye_*b<_jRFHztF8>eXq-$irj47-ax352PZhROBo27YlV<~Z2X@(@ociD0=wn!@G#+^Yg8G_rT* z_$dDRiN_|%JhAuBIv`(iPK@X>oRakvzJQpsstk5O50hUngs7cAQ5RTJIjX0^g;rj< zJv-Iv{Ihq;d!IdF$-mCa_{|U^sQq)lJxJ5CXcWS8b>JwTnvH#BH1pyK=4v?Sdn*4- zU%&fFi4F&E>yQ~s`PCZka+qPw23Ed(J_e&ROQPr>XFzBGvgA0T)7cb+T{OKDq4P7jrRD6TlgRp z?GWl>UL!pBTD%iuE7@9u8_?FnjoCJ_ZW4PYCZK<0v;5SHNXClaPeuO%{bwavOaXpD z`pYz1a_fM193qH<`a5(~I!W$4slj+ta5Gad{GNKnG zP(ZqQpoRvTWMu{7`HK4!l|(A;c32Ft$~jzk8oxK~FkY}%un{qLF~R+msERG8-i9RG zNZFZ>X&yvN8uJ+CNJB}DEc(hmBS9$J)W7?l-FJ^IZXxhffL2Z#3OQlfky%rL zaOoe)srMR#jq6K)TuS7qn@U0~WY7zUD3qN$&k8_@sAp0}E2!$XE_Pt5$8jYS6vJ@lRYZ&+Xo!HYt81K zexle@{g4&VYks?Q<;bQ2IJmV2KzU~^n?^BnF=>(|2SSO)xNJC!L9~f~9$hWTvq(UZ zY&Mg5Y|*ohmVt+@S&}NkAvUyy_ak2J%Ey(~jv(apj(GdBAd95N6NS+&01v+#}ReY~VH% zEEy!;KV+nA1{hL-=OIQA8>T%gr50`Uxa!bC9mIw#aO}zn*98raS>N5z&kWr%VV;#f z8D)uYA^Qag_X)B`5MWQgPm}uwr;J%>b?~t61~sRjkQrm2*=P*jS|wLMTb5mJ3naj@ zhI$XB#N+0&Rxh>3uOURSWCViwF4~B-%tsf`tlI0Yya}+#e7*{heYX1{sTQG;#-@93 zgpT7(USFpHD8D%UE9FStlQWE?W{1G3(<18PKLU3&r0PwN%V2%hMlQ46<;VY=U0ojF zg6GtwcJAg8sHA)&Wzc=p9<*~g{53aoT4d`0{~Kpu32EiL&SIxX@FaIFHK5Z;Wyp4J-h$j0Pzrl2Xa(_DY! z*qu1gl+@BN6o!_Yl%e<~K<^$6XQz6S7vl{_N8P?0)tc9O15=D7DEI4-vLOUon=~Hi zWC__Wa+2B#FF-;;^L5Bj`8JkN0Vhbz;6XC!9&)7I2rmgo7+U5T2r9(7vuKi{q3toiE zMxl0o{z@Z z249JJ&>z8m0J&vdIZ zND}+RupW4|I86rq4QEKj8oQ(FmaKs!5{(07$9=0FeJT zvlv@fXBR_bi~l*c;IWS1;`pDUI)@d3&E0i5r||DX+&O|Y6Q+(CXvsM^IJ`WYZoPgT@Cq!TwV$QzJi0W~)=G@O$x^-qp4z+hT^(H|!6Z?m1 zBqbXwi#oVMsVkinC0-59Tn5+B0fBi;_n2t z3%_RCVJh0uMma!w`YT0cw)%EQEnDo5T0p)s)i{})C)Wg4w3fHS3WbKRc_ZILj)vVa;($L z^Y=MR!hadVdND93&g&hBbY2Y_6e{R{Nhbgl>V00W!r|$6^=S3`ygq>#_ySAUvDTpZ0$uSR{E;}1P$lhzMM%X(N#$+2gZyw%k#=GrrKeu8MS8J<6>v?{tcxwFtBczc%{vSE6vhgqkV24E zEz!<2pyzoqAlA~=_58UYJ^(O_qwoy40i^XC&V|`2S7^tZg~^m8%WT9W=}U_QuX)17 zb~(k$1l1*Qrdk(yQ-{jO`UxlPpP&N1^jF%K`dH^*Dm);`2V@8MgQe=I$=m?BmM2Y4 zrHcf+4$*3KKHRJ^>5_5n@lrut43+$oIz?K3=9Ckp`acMJ$LLI;Fj+TFzSy>H+qP}n zwrzCOv2D9!cWm2sa(m9bXYQO?>#X^^fA6(XZ&f`&k!gtF z;-_c$K-#Vrt~-_5`vC*`^CN2BqtgCys{0Aol*~*E1aw1@VQ3(^LQV|sl8axUAZ4D@YEgXjfysXH zk3+$W{t>Y9qVns7MwarIey8Y3WywY9l7%d4J@!R7rtTybi+yG;oLP=QT}(-sd7&>8 zw|*=DIjKjqEV%~C*d*z(a5P@j-VD3<0f|`k)_7mcC-6TwmHJMW)k==y8_^ygyJ+u+ zuOQCJKj>>9VGwwL-ls$l@eD=m)`g4{FeZsK%q68R>vhTTDv5VM zi=YXztByu>J$>fjjElmxpIAkyE6{w&=?7`GLhx*Q>gFZ^!)`#_+QmC%sN@Z`<`tR) z8;O#oF@svBH4VdkM~I+2=mde%ox`ptKd>1<>J&=m3S_pr85z>7N0iE-af8wgKwJ9I zW9P4Eo%_85;7vfGU$VNfX9JO!0b|YGGZ$Mxq3)*z)^}VvtbjdwL5ek?@Spkqs9{ra z$V~IW=7Vf520(c#Ph+oRppd-_g3KiGpW>#Wf5nm(fD1qnTQSIboRs0CEg|lPUJt|L zni~%$vkQ8TAHkjqCm_%%!=HSkX_97FLskRym9 zC?09q-XS$uJK?^y-P)OhTp_e&71Y7ja8U2Vo7%iJoLrl(OhHN>C{Naj^4L&&4=T0w z1dlF54`m7OHYadbq>a8N!}cdM0W>5tXCGj`3?H&rk9K$d2TFU+FB+-#_0QyIK;jO$ z3^J*dtAGO!$y^(4EW#k_g__M#8_3GI5Yt<0Yr=j9g@!k|;caga-?(x37SK2*YG)?Z z#=Y|NFnh&jhin#drJVk)Q&I>7QdK~ZQYuP5Tp=ZZNGRN0M9c*ZkWXo|i$sQEb+L}B zl^5llf9hZ@KY{+aYF57N#%V!ted1M=Afu9F_4XJ}S9f*Wa zXqdozD_c>(OJ~D#GnZEvJ+1d8V)kQ zN2NI!)L`=wN9^tM-Cu81P0W5={L_+_^;UJ4b@|fDW5(0JzdF0_)wpv-)CRLSkA!bd z7<|GmKZHI7UoK`|acG@H?h@gjh$6O-wUUgH{m|%H6u%RdnB+^x_Hty~z!LjvepzYV z%!~o4PtO)Hmym07RkqZeW>wSMy&SEr#$(wxm2a4iz}QuLEi*PvtZQH2DvtM~PZd0tc4+>Za^v z+L!h$Z=R2>Y0}=VUEc+NX}oOC7ZR`t_lh2O&5(vJa+`tVW&DpR!UhJ?x0gqv^u32= z2?=UlEH6j-GNa$aBi>1`4oC(x_*!YFwiWDOU=rTR_`4V0yN^`}>q^-3I-xV?(u)OU z>ERpU1J=I4S1CqKd6HfdMjH)|uT+f+FSu7~3+wBQ&@DVro^ULNenbxNAnXFTMF;a5 zM_B<;BSptbzkiPJE4d3TfT{`*1&7NxvbNgBZ;r@hZr8<_@2T&zlIKzj3YX+nLlFT8 zt0K?Ec*MId8oC!l=W+uN(09eNv17^FPKe@3&9(A`sP~3*SN$ir%a3u*e+`*A#^V$| zDjE!i#`o5y;?BMD#rwHVso%dh&2)w(oR3HpR(}7z>$|$QErXNcslV=OR3zy!)H*WO z@D;(Za%~diT3DVxpFaL2>Y#&F8MRGwBdx9U{-*;v!!=7I@gY^?kXV9jrBqlpi-x-G zXFjl{^uR>xGPTxYUq2qL<)<7W8jdo4Dme?`qky+8GtcyGFM-TRUaw&U-ye5bvhS~(+ zLU9TF5%hH`h7rnwa^YV2&fJmHcsM{1SN?-f8Whk^dK*%>B>i>_sk3r!7Dk|W8!>YQ zZ`ushnuJr`>GsOIKtPTbp*QnN=oRSvMz}@rZLiBvE#DtXE?q~mfs)0q%V~KCmuWI& zjCrWHh?uap%TX9JV_qj2pym6!sv&FwMQ84&HI4>o@{OYh1Zge$%H+uXqj4QH-q6lqA5psFsciX_<% zH$my%xgGyU2^llwe{#2%bdl=hFv5m@%T zGA-#g*Bls%GF0K^X>rQuw>s`Sy6!u*yj#Z-*$Essp;rY%kWc?UevdFvFImd8w7FrQ z&EeQ?P5HB-Z9_it#Y1JzWMn`@g7!%4#1n)j(CPVsc%=(x8K1W6=*6pHAe(3Lrjah3 zPouRperkViA7&ouoCH-q&fH5F#m}jH!^JGkbzvqj41*w}UR){3}hK!W5-4&P)WcDGJ75`&8fUK~qd*Jr* zZy1=V>cE%>>>+sv)5v%FJf*t{?N<%k3ij$^r*@x+1S@Fu-4X^{rxd+XjNH(@UU$$L zcTk;J=LoS79$qG$1BQRER00j!u9f5?&SSV%oYy5SW4=XvsC8QT@VKNx2AhysT~9yA zfaXJ`O8_`9q&^xQOE=Fi=Cb69&JI7A7D0k^-dPNXZG*3s`?o3!jRpC)HXNYctC@l6 z8ja?P^1uA~UEC^aOJ!%0u@tdcHtRKQ5Qq}R5Ir_22PWm{v-(S9Oa=>^mtwl|emyJB zwsKS-x?b%tel~M=t_6B%X>EM^bwxB;1d%lq4p3;4pZkL%gSL9w11oWkwpW>3G7&^Rs2+kw@~hKk`sQLy$B66(_Mz?FPfdUMPRAyR z`7L%|98--3nV2rPBLMmJ-NRLbx-+gu4O_+C*lOyUkF=L z$#p6)(%+KXZkx7B1;K8pz?Cb;FonU>?IEdhE@pYC*Na|Tb86!B<8a7uXQF1KLbI5Q zsg_SlKcF~S$`mro)C!droRAF~!t*u2kr#4i>TjKT(b$uwp$>YIUs)I;R-!wwx#6?o zb|vg_A(WIGxf#E%XWBDFIqIU}q`s-}utA5Wv{^}{xJPXnfzCF=db1BwhrlNwgv;+MeLLIlp zvyxBQ0Y;)>{_|mwE*{dUx^Br;l8wLHEYCsfJx6lJ4xdwl%Dds}I9x|#raWh&9W1LWi%Kh%!-imtFt^szg56qEiU)`B#Zhma29Rg|{AKx(xFZ+R;j6(3v z^5Q16sxe<+uIfVOA;u0avWTLo`FA>FXW5(P#q-{F!onc?G08o9iL+7M= z!>PgfE-qtWqh1KDXgC7R`NfqeNg>*7&w|a%8ua;6+-!iGCR6@Ycx%zAv~RQ_Q|#jC z^LXJKBE+Kt9bPE-~cck921* zic3XXMlQugi0fL)-)KDgtQUsM7Mp(>smdc>`wICXX78*v7B{!OvX5i z;Ok7(3xw-tJymal`;4Ts>fKVaOQ78sd^%E2TVnntih(tc z#V-o3SNaVuksO^v??O;p(^r5aAUZTjt z3CRG21bqLlfmXx_$SS$E_3AL}ZasLYq>*kr(gt#*jWv#J9>UY)tmr(!!+1uNyi#3% zJ+^bLwunlnONKoY;|K6~jFrG%J4O+Q@;2X$=KMaO&7cVm*o@hkn#X$p_3<@E_HA}p zkr3Hvin;2bk(@ZYFXUCTEb>Q+G`7{_pVRSpNG%oLlQL7#7Vmk8G$)ELK3ri}V=uGH z6^~7rJHD{hVG*IJBVEpc-dM@8Pp# zL=jO2(u==gY9DZy{v-O`a&jcN96iw0>twKRt8xfAmAN)$+QrGNIrB1Wb*@Yqp{?}isGvx#b2=cTEc>OAAfg%fWL?Xcim>54VmJt z8Pyg1Z`D`z@&YDt+1rKd0vGoguHK<*nTZ&ftj&SG#A_<`g^JOa7c~u~>rM>T?z7n| zS63BEU)l?KoOjVMx_WzCENJ}d6)V9O4`ttqRH$u{p)FN}dauP6`7bH$5=-;B|33J{ zyD$hM_&4~(NBy4%pN>Y(E@saEQO3HYVVAJLiTK_7_d8;sYJqGnTrYI4Lc#-qNM0K- z2krDyLZ`;=v@U2Z(K@6|_p#$J;+~aJid)@|fboaD;p8au?iK3;Y-HySmms%aM$2BU zR~rW^8FBkCDp}hcVpNSv&DNQUIN2wcLf7)QFqv{~e>GQkhpz#GPSTBA$6ERZptvKx z4u=0&T8d5HbfT;p`P3d4r${_HTRQ6Qq`jPzq{dn2aPac6^mTYte8P!n*!s~vRkFY( zl)cuKUfqPg5>DdNH+4c3N6aK!ccX(@{m$HQ^9?tPaU+?4;0Q-H3V5koe>6+L$J;lR zsw0S*{erj;Lck*|&mUrGUY74p*!Ih_S+;ne2OO7LjwK^z_8#SUUBRGpR_W{BA_ucV zG3Wbh9xoQv;Aq{k<&P$t1~5(T9i`T2c-W|f6q1czmv2;vhWy+HfMQf45W!?>5(p5K zGN|M%4MH_*7^UdaqzjRSu?E#$C1uAKddJnB7VMM#cv>lHVbrYhByA)E7AGc+t~-Qk z4!dV8+Q4WFMq4E+Tq1Sj9TQ}KT0?9Z^BY_nja9G;sU0{kik87Mav>UKA)XvVReRDG zrLH|;te3&Xl?9j<4hQkOb$=jMSDUY$bZs4O+sgdZtM6DI zq&hSS-(q8dN2l+@UK_X4(fnm%>0)PKXabR1hHuQp*{MwNf+t96KbA&6MxskyEgCe=g=D zwl%C-F;>|gQq!#Q&Y?NZ$FK=~TT(+SJs{`|RZ}$@4d?c9A#=@Cq59ec z^=nHAbE`FJtD%;k0lw=))4#1Nf$RtC`!!(Cu@1X>8j}Y0yL99++FPTZL0BO?G;oXN z;y?8Vtbs%ZHy#i(Vit`l()xqD>wfjn7w{z z?qjGuVB3mNCywh?3J#-xlkKu&_TEhOq7?9>>0>rOF%fMh(yCd)(&f7rR28_?k?k>p z{8Ak~awGh#J!lS-K*c0Y@1JUs2zcnk@pj_hFDw+zROt3nfHqYk}%`CW(b zwxjUv1<9RTX%Gd4EY)ARmnTK;E-N~SJA2&AeO~!z)UF7o&XnU%UK#A-MR~nC{p9TgG$0Z_rJj1*=vKJ@V=24iu-)t|K{Uci``DhjayaJNgCM z*YJTqqAidzWAZz?LpiH8Bau-)1u&}Pe!$c>19`|j{*_G zMlD{1HKkQ8O)9YlTR2|9fA@!+;Zt1V5qO-4dN4gf4*RzQ^nqb_mdsd|Y?^=7qemj~ zu5}41WtG-T(7K(5K!&G-q`Rcl)jGn}8gV#>+a8~XdzrY=T>Mu2sv~P3skW#hx8*>) zsFBnzZfOP;2BcT*M^mvNQy+PKb>=x512C>84BS9G-((pL6i z)F%5Ma>a_+W14#A`I*x}Jzbsl8F-T}YU&hJ(p^TGjJ^~`F$VRm(lsU22vrCVTBu?U z)+TC1{GdF7082<~c{K=HNV)anrhicA^Pmdtri2#Bgb`=EHGM0HJWnMlMx1mVoy_SY zGJ*Sc#*ELV@%W6T@#D(wDeB~izZ+rAYG<&7XodZVn&xZ@MxzS{zO5^jhG=aas65Mw zI|mjb4Q0})5$U&`yfv#jN$Y6geYW0o#5~;0>wlMu8ETRSuFBVjHzQm#LW0* z$T&)wjG5Ik&E^-=4X{wQDUlU_kEz$`F>V0a#8R%4e$R{dW&4&s3|I}Ed z_63t@v6!$?8!+jcTPD`9jYL$!PnR-3_7)(T8tU5kM`u?jVF_?egBu#N^d%4cPO7t0 zM6VFt@*yHB@U@rRNv;WS9dO98!tJCEL(^4ex=&h>z4{Jc9A|{L-bs&%C5MXayqYzX&B(7 zH8iVD(-XOE(t>$1(lZ7UQ)Gr20rO0wdBU)RMP{=B20R&rZiTUtyQ&A-fjJ*^!(JdP zK%eeGLw*S}RQOaCc|~~C5+p~Nr@^(q2X{O zd2XwF#0~+<^8A`i->MT`Mgzpu5Fc&2Q+CoYp^2TIz21Q!%%gF>C6?xH6_Szz`gE(^ zgU1`Jp?ANJ?z>%-T{cV_Uu&>*I|nPdw2OTa8clt~WGHdN+4==s<0kR!O=aj0>={Vx z9;9In)rlcr!*eI7Yg^r!1&U?fgKJ?wm%Ok+UtggKXjbi6k>D1yG+M3~YM^CdQQU^8 zJtiOWO)r*T8#H{H-cSB=80E04efw9yxr|U091rq)`*1+j-Z^FG#{5fU*NeqQ-|sZf zb!8{;;@bX-oD{GjvlLRsc|!oiB}2%Im72mF#-h86V(Sy%9vt-xnFTw=HvHz>k&OaGRBdeI zSDo-?fbZn4A{`$_H5=f`DQCAqX&)$sCbMG!{=|DuQ{plTD4s7noI_Yr6bA%?Z2If0 z=V2g^uw;V=8g{}9`!S?H%jp)Mz}2#`XOx6==1&u05UAB3i4x zwx8MF3rMJwX|w$So&m894|{DgV-!-=443dsnCTc7--#fX3;qS!J$`FTPoQ2Fl=u(92Djm`m#T}Ah@n=Cu;O~e~*ZZ8ZTk+EtWA-#3qY^ ze2A&5uc=p!zJ}l2|FMbd*xNCw>!Nl0?fIk@f>rP!7fW`cVc*4gpvN=f=}NcAZa2MZZ_@c`?p$@UWWwkp`q-N;oTH-z1LX1eVRRVF(#TPULIbfP>ri z6ZHSI#5{7lW4HqT!BQB3fc`J6oB#iQ_+L3CF9SDME8GA0h+JuJIc%~c2OuQ=1eNjT zm|C`p-Pi@e)mo|$MjTonu5X7J(Y7P6RB6*dqjHS1-~Mc4`KSD?y?V9X#JeoiiXs@= z^ZhgrU!-B~8rqq}s2fA*7Kl8yrjgP|JM>cl@ZZLTy3e}^nGJPu#rv$NR^w>OJ?l+_ zCFzK7_k9hsR}p#WIeVNUz$kNo>b2R9gzg%v-(}IUaKlckwVC8jIT{97X3KXLOd^;~ zR|!Rzc4b{*W5V?Dp}BI*)BoCxv9A=t_f}tS?lKO(iO`y6ciov-lUTpjqQdOvz^k(G zWyt*H<~lmz*A|gG%g<(~r=&ESg%>HFe%6&g-M`6=GvL8sa7s@MUbC8|zQSN&$a7Y) z**cx|>)OSWjjtbXsuk~_pq2c&s@e!9g>ZXQhe!DbHn$E{OK4C`*I>c#aHaR5#{Vly zJvk->N6l&AGV${W1|;A{2<@uxS8D&L;(4nJ=GJ6Lzy;PA6V@Zl#uHr{t(7{qwjI|k zLd~3J`_fCJRfOqV`hvIH(mk79P?!CJZkmw94JI&ke7vD$sw}6rMJM#Lt}y^9?!vhi>j+s@#t%YG(m5Ot>6Kmv^nlC-W2xUrsy>!FfwC+a{qgkITZR(?yaL4W%NDh3VTG~Ax>T?UHLZvPnZAe_2T>7JhIchB`26vg6Njin zNvR}>z_kK0aS&1pGE9_al|af{?E!XjFj?ibv``wK{HsW9Mj00EEt{F{ zj7MNbby9S_C^_p+D2qAIHJ$vF`LS+jTz;}&ky4u04*V)W!0bX-PZul8fR9AR))&L{ zQm5aX$zPyVTIRNG=5BD5$!Sgw#kofruuS|qiLu`e7_>CgLzU)!lL*wkf@P+8M^i~T z^I0>!U(a2a=CU|fmYH^18_xGpF|F_`44?dgn)N8pnQDll_r3Lhfp;1c>c-GgiVN)~ z{}@1`Axgr(52_CUiDxIswqaYSkOmNVS}ZT97;(Ykcfc^#Q}a(Q5$@43(3|h*&2Y#~ zGA3tMFaui?CL4RiBkP*~e7>EyAm%|RJy=Ix4l)9x7SkdRv8rt);%_e8433(LMSCmQhM7O5%#Vn z$~t8v#moG4CC$gSoMF@dwa4AKsz;J3iHCByIkn)*fGpgu*bK~<-2&PrQ1B-hS+@f; z?vHJ0a>^Jkq03fV%`+miCPq+b@~vEbzLU5URBQ1`@wTh`vBk8{_DT5C;4ATmZi7C^ z>plXA0G=czWm;zP4&#tt$eDZZ_#(qO^|7;1Z+$lHRur2Shi$YQDRN!6C zpZDv=dSRtA;6+cT_HjUEoAQ*qPv{HXWPGxJq*VJ8lHV`PwLc@mY_Qia&VK1@RntIZ0d#82;}x=?(a2hM;wDoj2SXSU{Y^0AUNQW(anTg_ z!e4VaC*LD51CmGl%8V-bgb-b)CSwD0{A7`ap!DjiwoYfk#RLR}IzVMYsB|h+3{MJN z+OAgqA-|P&<5ZFu?;-epG1GmJ1Z|Vmk6Mp=>~aRuxUWb~sYRcvcARM$DX1>|Gg;6s zP%~C+mQJ=-h}~$XhJ7Y7iCFc3SWy{L44SsDyZX6xs&eV6@-=HK0jUdU*A%K+C3?J? z%SDuCQE*n53c4o!Yck7n);C&sQTz-OL6|Ci_hP9&_1>jRM>g8ct|dHWD`bvLR!7_M zI983c4ORF_OTO0T`?OQ#6OEOiVtosL9M)wtd?vZ&ezE;n4I)-y!krch+$uk)PeQr^ zLPibPt58ss^7<3Vofi8gh!B}PCH0O{qClX|_uH6hAQ19Ug)O{_K2TU$8B7OB@gy1;Mx8Va zfO^=m3rG8mAN$XV#EXetL0B8Q(2`_$0b~w!9t3`eieiG%I(RriYo zQ-|3JE5{S3>Y~O~?U>IY>H=G#-tOVbi2>`S)SX>DfbVtIL9hPkZHj+xo0K!MK4tn2 zTYr1E_iT29K{sZM?W)rJB)k14It80xJawvg*%}#WpW|Fgsz{@-&Cb>i+5LKMF5~07 zQq}A8vi)0-->LgH(=@z2#zO69cO(9DOw0Ws!ppJgv8E%i&Klcj46w*p870SUc4erD z19z#t^+uZ_6WX!raed0yCM_-b#sVj2C3q#L{5LGNs0dKjTLR!+Y&ms2rAFplm2Tnf zT5HPAb!K^wVrO<^H{nh=a`v7^iMLqk%lN=6smx_8cyp_LHQK>yVqP|^UInD;EAg)0 zY4Fis0#i`nvwH)H zch@w6EK+%{CB(#NO57eDxy5k(P1wbeSggl~&n-N9n04~HNUX_UpOIn%c_0o0nZY|s z4ld})n?0WquzAALuqo@7@M}MlHxtjQ>&PfLv?vcM&2J=hYV$W8AIT$&umH*9LU9(7 z_9#kE6Fr)RQVgKw%u09;|;d|u{jN+l zQT&}zYKjhq0CLd8Yp1I#E0Uj%ks1^+TwP{rgT#vJfKf+Jaqvvhi|Xr3eiwDgW5kw5 z2@aN?j?h6vHVuaXNqCREB7qjTB$_{qi9C>8eWXf%3D06eg6-f3s-$X&3Dc3N`a>mj zOo)>6hDtIca_|ct3}wK7OU{s>ZWea^3zids0Rd6|4~AxEGka4r=l@qij#H7V`d`Gm zPXhE4WRXh(L`f=CXas%ygugme;z=A)<#bU?ox`c$FST}WBv)h;M0YcnQ`L>zLU(_p zQt*78dnsJHST5b*EsDm$JO=-ism7z3!2!FZ}Ij%@7?GVQZ48hy370H2nD+KBN!LfD4PYvT)w|{VmZPVbr zlIh;nZr~O+#CA~cQ=badRO_7AJ4>8J3AcUd6=sZVsmT*tY9x9*H z>4{Q}3!?}Y8(@;nF^^3o5BP8LP9%&DA^{8#Pz%lfm3R1`&v#d6Ba{CxIc1Qr*^2Z} z-?`~OudhG6riPy@1Fw}##FPx=hO&MkTBQf8{nKM2Pg8;Fb}_xz>thjKENNBJQ+2>j zX^7REHug4}xpyletzr8VdvO#)^Q^a(liJ;}L_34>EPq^Sf6)`}zO)!^qoqOh_e<`$ z&{}Muvl21-OlM&G>vez)W!yy#Uw+zZ8hY(sk4jy*Lc8X^6LCdJBd8N?MVqdpQ|nBH zBpq_?Scc5Cta6Eufv4fnj>e%fr2Nr&N9}FGwY8K(7;d^EHSO9>_XiIQ)tG@ssrp}vjAnH;a#tKb=aRo?QNI^Q2J2B`gD!C*X+n3vuW+f<}>}G z_t2W}=)Q{#225S&SyLGPQdrfW$SFiwj%OwPMf<2 z%cD*#r<#Rr1utct$U5z-Y(A%M0V0*~!aK`hRs%ryg^>@)%7C)OxcvFPZ`Kl2*KPz| z2xw)FN;qoa$*Bjk3q}&O^_SE|3i0>2ywZvuzT4=XeE%|-!rI3%jN)gmA^0h7X+NCQ zu*WNjiXEGB;>4M5F}627!FUWfko`Cp=MZBfP8?!cqKvSK>h{%GcJUA76o*o97J63+ z>to9tTdc0ZPN1P6VjUVLRo~=7TFr5UuHb|23yYg$W&(W;*mZ>N(9bf!B{}GfsfoG) z)kyUsPD*cmpy2TmmOKXsPm0U3{}iX`K^xKh@)S*Md5Zdt|I_4ddtEsEIvXT4Jw zYtz8u8QF%=mzz_sF`ep~^4zPDhGfxpm>8V4lofm0{Sg`3tC0 z@DgN4;1PwW9V+C*hOct)Hd*rGi6s1Lk6z^r|Fo;6v~OsKy~ap~?+Mu}f+gsOuHqG&t8iMRO# z9N~5s+gu8vs(_NKNdOF4_z1a*M+)dWktGRKR`%BjNQUBO-ob?QC2s(cB%ZJMiSfo9!b62Y zhUpowF0v%5=5gbli^(MdSq3B^;HL8ZEp4PFY_-E^)bZw|#g$cs#U478)R?%~aWnkjYqk`j3>fc?t`zt2Gu7 z19$@h>ouMv!J_GE3uo@kX&IN-l2maqm@^VpE~7%(TOGwcvdBrrJX&aXHbdXfoO7?(~Hee4n_Uw!N^#p@lU->gQJ0t_^)6A^O-Go zrETj;wLX~A*{mp0R-9p3N#($@9PxiCOVUG%pU`HPJG|P(9TzVdrXD#?kqRi|yr82; zl!zoQvjka(S26pQ=(`67^XuzEDqKMTrW($ ziL<#y-rOD-jzU#T;7aFkeTc%;bS80)JPP?bDXZ8X?VJLMUDakJ@KI3|OZfOPRA^5L zfuu3)6X%rvr5BHWPvhBj#F_a%s=PyUuc$;br#)ejnJ6jC1aAvZ0&seJfFxY(^dtRp zmkqF3+syK=@4!h&7`3N1=D(J(Lp z6Vr^a4!j(cgxG3&cGJY@&uB@)qaRh^&kwkxq-(?H9ZAN!3=-~wKUHvmClagHZTGoH z!D|7uBin?~7#DY4^TbtVPt+C`Ek`L@CRfiNESyD)bpxGp2Ay&|w=y%b(<>lMy9+uo zcA#by5s!O2JSf{+i@(phCXTFfFc6D~6-~6_iG8MqAgUlxEzY$pjC{B2i+gmjq`SCw zvx1J+-a;VwgnxdsOA!^jc`@vh9`UqaG)IOs|60G!on#T-Ky_bvYlut<^&2MMd~co4 z2@bky&xZO_x=(VcGIQY~>D&%_VG_wt53)jl+N(p@THRYT8U(-3YB8J=k>V-b{RFwK zK;W=ZWP;MXnJ$NjCc=Vny_HQ z33qA(GBVU*dlK5&F~{HpkizbUl2Bc2dfO5BQDcN`XWJXA3@6UFi%q`3bqE@wHJ_Pr z=4mLU?XU3smmyZ>Dv389y{{TQVyW=8{?(|*vrWHS0pr8c8aS@sbvL3f@6QzkFtKUL z0p?+SS_8S1Ta8y{OQ2#E$gI15Q{7It*Tdmvr*Rt_zJ~`C)*Mgit{fMjaha&vpMRd| zO^cqV@#<}3RT1;-v5|LUSPNQ-IacSN(Iyxc=>?V%_E&Cn+){5(pv%l-!Tj}jSK#tZ z1l426$|8QKK40WuaBe!@Yt+`gk5LiO+zaKzJ&R{RZO(4|FkTDa%EwTlS)`rscsyZ_ z`r{b)!a1HmHcr#`kHUW3ispgY`7E-1x4AW9uLT=0xlnz>p9Deo!s>*Rf*EEJR6XrZ z#@M%-(89~2RTllo14C8P-99XEWkje~&>_N?V?X{vzaUGj~N4_Q3;i4ObcQe|7 zj5r7K95GS}@a?h7ZLktDldmrs=GDoC`ztn+t6@l$012AyM{fQp6d0FqLOb$WkwQi* zT6sVIkRc-be*6IlfU%-&)%`6F7O2L9d>js70WLe(Y0gUK=L{51>xkuqZkI^L%-y3X zD5aF(_kLc~@zo7wPJP8^bqmM?BC%nquEw5%yny6>{5yM@> z9~$E((as7=mhXJMx-JA?CG}RvgmGmr!Y%E4?hHyrFp!#s%FKOXbZsIHB$Su~wJC=C zSz^-w_oJoPeyYavz8=j_DW)eCIk;W7tX#=$Zu~{Vrt(z{GS4O#Z)xp?7#2TIPCvCK>gps zc$&K1e+*E+?fZZB@?pzU$F!6Euwpxh=j;T7S}E7<4RB}k$tKJxl0c*=me#*twvtk5 zspJfB36ni%dv1Ssk<1$2;q|>;!v3x(T`~@+M?3*^qjso^r=hR76|pu6kHmF|EttyRm2x^!<)0L?3isYJ`o4STqvMyD0J_Z zBW^*!@_gi|=p=mw(GM5v4Y%W$%miY`^`E>V2|tkFkAysm=5SlTmP`Utm@Um}O3s?JUfeZ&8Gv53ECm_#W9bHs*95Xy|Wgxzy_eWycVc@zBS`Iao8U{+J&K zw%(tCaVd}t6VI9na=vVo!Mo0+efSQq2LQYRK00@aNx5cMi8P!8V;03;CB3 z_dzg}0>6_7T)L+vFUW<}yjTpEL?6;M@G@np$<&8TC2kPuOI;uCQD5g~hM{ZaLsG`Djx_Ku@LGeZ`^Jz8ebMGeZn@K!E<=!h z?&c~yuRCD(esyAOIkP}f=7fTs2fHg7$eWY4)Fn#ruS%cvER62+tyOZHyr9ynGYanl zLNPWtI}0ApacimmwetXIH?TU{^%C6u9bR6M^3eYR;pa%zQoWMK#dGaVdLJx|2xRR?#l^CDn$YTIEtj=tWS!qO4m{+DigG*%0(X0X9Ve-I!b zv44l+e@+YyjI0c-?9Kn_OZFyabWHS&^o+)A^rluWu5|yF9T;S#M8xD(#PpP99Eunb zdr9sH#Q9p#&bMEV5z89T8JTCyT}XGq>Y(CnEsDNBa*3?E^Z5I7se)$@b%}~8@o0~Pq9>1s<4O=4-2@6k=^Hbc%WK6FvP+1H(Y#gZs8dVr>99j zUOtX?04tU#jd(%kdKC_RZ{<6E{HyV8 zDofvOX-SmO9xzrRWfsnkZTwRQbBmKn|7N4H{I<}ZK2cc+>6xmDv2l(QqF+d1M4@75 zO@@g$eiel}yVJoY~=hf+e3uRyjuApE(R z_W@N8Dt~R@<8;sHRB%N>TapEalNt6h*)Rnx>e0OEII!zQ8l-OoYXjAIUWqErAU-u} zJQo60t%xT&5ph!rCt{|RRqN{e2c-9H&|b}v)MN-pc+z*_3et3sY+%=fQH5_BS+xLq zNaxbjhKejDV!c$qg1w8Z*Bnvn|J97E(uA>gAEx;WX-@(FL;5mrAW z%}7(nG`CbeOIWM1^n{R&3U_Z*ZWK*uR>4hTfreNAgb?`%XRsJRkLG~;5ey}>01swk zW9^VT(YxE*%%&w%A|-njK;a9m%}*co8T0`Kd%q@) zPT4NW+1b$|Te4!u`4`Ol)>LsuRkgnmbT(Ivzbx4|H+9_oJ2d>zerBr|dpNI3-ZV3~ z3C^bBcI+wE<69#XI5=i37OZqMCtA3qabQ5G{=g==9$<^t< zdpZkCCdkGKSbD%wAyGIlwjjH!_utq31TcxsuEWfDWq(QsmGvJNn~s`&km zgr2|lY-dGo#+zIECfXDIFb+!@QiIoVy@USa9sJ{wZt(!=;p-T2Iy}_X?dzG5d&O|t z^Z@SXp6zEk9rgR9?7W^*+NB2NbIUNwA*y4Xuk6WRn#J?&{PFZ~`b`Sxg|lU;SGp!Bt_t|w{So%%a?ocR zhD60UCHE9?xm?1&)C~mvXy}QFc-uJVijXfPlRxK{B{-R)poVorqXN{+y`Z9(_MiiC zA#{NRV&|&(Q^`801POWWbTEA|9XA~(A#a=mfo$>znM8+(iJfD6NLW?F+wZ|WtEzBu zrK0z&eB#oiEI_G!qd<*Ycw!g@5wDe)Q$1saDmo@WN#H^{=#%j%RWvj@!h9qSsHZ~8 zHM}N14qI`ajYfCz&BbC&1LM;2H%X7wbqbnz8fuD8jK!9ycx zsJ2XEs8$#=H5K$hEm9sQm!64ZYLOY0hGp=bquw_ae$MvvF{e*tl=R@LW_kxzOvQE) zX!s5YwW$M{(co5qP66R>2V;Xi_$#ZH91l2?Mw?+x>iA6sf14LHU0g zJIkoJvgPe}Ah^40aCdhJ9xONncY?b&1QOicB{&2K?(Xgq+}&OBcJBSp%}n0R+*E(K={(hSm#Gf#hNGvZSVJd2&7tnh z1p&xQ8Ai*Zc@>wlkR4dSf+LVpIB%cn%!(VC#iSqKt_a+1n<0CY6fAuBqV@T>k8UYyPCYsxpt^z%7BO5 zVqQ*5)g9|;FtLh(E zE~aS>l5Cwrcr=g$e4yrIu;Wssw~{d~$(kW8UuA4a`od^wX4e^)!`)EA?qSbl8EJqi zrOb#`jr)E)#C_LcAHBnk7lSf!~WuPcn~ z5=y2M<%1^UnJ5lC5o;UU*u#4QIZ}2221MD$ahoDhD0U{aeK5)r_ADer2VGN}!RG?y z3H7eTOrj_)0gDOmGlFhlD8va6hA9hzOflVS5Zu0V|I=~`?3-<^Dve1bm4sJ9ah z!{bHdNR!K_p0i(lwKc|0I-D&SH639ck)~*5vns~Y*YjdXb_@kCm;x$7VKS1gJhP59 zT9d3&#BEteB9*}-9cT!Z`l6UqQ^u2bR3cN}o>fbRy%#;;L!+dBg*0Gk^-lP+@_I|0 z5NV|KnJ%@TY zInH(31bf1INSH(JSCY+G^ZHV8yB|o=8is)NW$gA1A@I;>7yCi%9FgjTeb$aO!jjGw z_H=V|wOTVsui_taiuE8(fiMr%n1@~kaC}SVvQ_$-~i9VfFZ9)rb2k*11p^rNQnUG;0^lWa+mM@4OzQ`Iho=T+3G?|aEm?kETOE4W4 zvBA-kv7NxiP_B#2WUk)P71PPcM;3_3hfi3H)UZgiq~wcdy@<<#Ed8uNn?(wTg623k z7mb4*I$jD4|QeQ zl+(Iiy|K~hDQw?rB%h+9ui>dJFt%QwMJ8`jr%Sg!8`HL|BvT(kgkGA0pQ~|}pDmC* z`2rs=F7U_%URgyiD}$!W^Ja`fbKHGQAv8o&d<^;9j0Fz<`GZCBib$1!B)WU!K3pi( zPB5|WGoJF^Q?)aX-NSt+GQPuSrkdsBOKm0)mLc9aH-)c6{Ux%&jV zdL;{`;Z_Fty-X{1p!2tMZKHnj2TpsP$80^Itf%+ln5^1ekZJg z{SGC%3L1Qy5OP2GI?JSI5#YLQtAenXn83Vqo=@79&RsKSSzlj~8!d5@RGs5c zbk4?_jK@(sVj8`m_QCZo^wK$IwKnQzYdiKK2Z^YmW$Btz(V_r(00CzfYI z=JgTuA+(3>Uf6zA(k8Wt-A7U2FggrtwZLP0Xxau&K-C7=F#Ppq3=eG}{RJNDAnJfL zwqoSKK5Q)Q`}b+O`I#rw6CaMRMT82eJ*RCMvX7KP!CY8+(FEL`+#ixCnLeb(f8s(l z#7lQ+C`#Qjat98mBqilykHv9eajnf5?Y`U&suw;%CS!0v`g}u+w-B|Yp%1y&4F+q- zA*tkO&{sza^L|PXA;t-k4$EAO7cY$MnlHgWtzFdBw#`-F85~hsPyhW#rZ05qz%_BW z`cF;+CeQFhpE-Qs^TZ(+Sd(6bQ5a3$)u9cMkfXxZ(zt~Csp?Z4w`j2jF>~!jtTVMg zFWkHv>Jq{u?W^z=$H|Yu`H209d}^wa4W#ajCI0?}`DNDz%5>?wecAXL69E&14{W%j zG_V>W{c<0x*%n_L`K^EDT)?ZeeBWjwl-GY?CANO+0Nc(r;WV8&F$wmH+Bdk1C-02% zI`xR?Rncj0LO>=3#Rv$(8OH5$*o8nT#CD-LcIk25DmWRvte>-~SDzP&n6Tr~tg^ea zjp?L3bh)jgkc5ctMDRqhDg;*E6(Qs;VE02@Sb1F{Q+&neJCwAYW_nxk9aV4`>fFuu z)TV#Q=t*Mk3`|tPY62JeA@A{%vSsf3>54ul4q5cWc)iyvJw#xg_)}`rgtg&h@CW=} zHD91w*9G5uF9h9tT`D|0jrtc%!-zh7n%BJ1*_BDR@ekp17~e0s3J#z&_b;^z{dB=< znFn||w$-heVysA)ETlq|C;9XDDabW69MG;0oi$h3!>3L+ZEC5*x| z{+WJ|TZ`6{T11|LR`qSdULTtUZ{Nwd9l@&vxdv;S%AtJLhzrhqo0W9!LkB;lR;kH? zyUEXiklA#uZmUDFCi%{WjV;%1%n$psdc@CY89qG-3s%Q0^t0Cv2s1AVs0!Wci3Gmm zL%+=K>rXM1z~Ed{Im|Ufd98MZ5{ZUaAk@psBe0FmT@{6u6c<18`6iNCF0*XIs)q&} zcWlC57QOeAB}L98AfO$;CRlmd>{ym&j*d3A28&_|XXNrD)cscINEAz#p- z0Q$O6_Z&`ERuBet(zrW8wj?g(h@c3n)cGjzDQdR9$KE_3W&Y6`_}%s(q~onU&u(yg z2TKM)#!+!6nIeOEO76S(Z6fNcJ2Yq%M@>v?%5r)Y-if@i5u~!yzPM8MA(!>f1jv9z z^-HHggmUp^@Da+&_kE#u^-5P^fhZB&E)}}A&uFy*-n~f`jpw#i$cVRN-c@x`9uuXa z1S7zG=FjkSuTe9Lofs2xh0*%f3#>39p%jN4m+NWPQ8_Tx{byK3V8?{5X>XlO6mN&W9n3H_~$y|+= zMBcBIQz&cF$nq`4+VmmC>e z-_`HP&#~0*wq|{?ZH<&V#Jj2E1FwCDcF-pB@;OdUd(rJsoQJt~MoVb_3VdHY1WDBu zUYB6g@^)SXZqHKy>Z8X!u4>r%>9Ri_tzZjjq`kzDjd)=Hk}&*v5Eop>{(^)3Oz}&p zywFDey3LhaUBlobl$8ZOvnQQzhw5u``g0b2o`t0bz68@67i>($mX(nY|H zA##LjH)6^<9+TsCb=H^N_CCi!{ivn>%=Oe1nDJ0o{ea5(ko6ec^X)hts&L}DWXOB8{(~gl2&ML$b4yN6PmBDx%cHsZ4|*F*9wX}Vpj@yj zy)*K!+tjZB0kHlX;S~e$bsTyg(p=VZCi;mH3O4kYQ&LU6MuN8`X{#f85InAaraa}$ z%pI_#5bh>>63ulO8l?fO^Q~V-b~m)|joL214<`U8J%o&4Y|BeLXSyp0={OBkzi^O)y%WqrzuMf13nmq6P=G_8=mDLf<=B^3xFAj*hMYw=_M7nZ`w7ggD$*YX-uPD=k@f0Hb=s=aB#F*!5(Q7zUCEZ@DyC+0zU-QX|)P zw!R`f+Yuyt^Cw+>d0y$i!=C!CHMtNZt0 z3-JO3Te`At{R0d-WK3C#{dKj79bLxkb3~1X^1CS;pZl#3SXaDh5~)e~ybDiqUBlbZ zujkx7VjzQ#IaY8*dTkO1c2E&C%Ey+e*SU?Cp%b3$?apT2qb1MV=`3zZ&DLfm#|X zbj2mNHjQw^sK)R~8O9_|I3i&(e>_!N+g3dpdmOI{THQAC1DWWXL#cZI8NH?UGjN2< z&%tJ`wOdaS#^g}F6@yM2$2Jg*gy%kR7fvYKoYmUqmG5Cy2()Xs(pu}lo@c2nfmQ{Q z2T;WK(%&EaInkAom9mns_0{FOH1jTCY^Ps5kM{(!19`L9HQ>tZ;2L$GrNflVp#{92 z%NcDEy|;XX4`slS5a1PD8*Xi(h-ySu718NA4GWr=REReTgzkxbk6qx2S+QaYN3820 zO=yGQd7)MRaj2hO|AIE73SyR?cm>6tutw6>fwU4`<39m%?Y2| z`S}*&^I`jFTK;Ipk$~HTiWs=(_s8z#n4>hTM?;UB{t#373?JlAyv4)V{2%L4TTU{$39Mx9G zu^UHk-W@i()>C2&&d+;2d!F2VWZIe5+GyX_Vd_aTpPgHuIuZ`Ny?+}C1$P_=L$WXb zJvY7^U1G^UF9fN46x5bwC&w#pD)Bb993-sv+Z{BXA#d2?zPiN7( zkt&!C@ILHj0N=K=U731}pUxBNK^0W@qR?bJ=Yua(@tX}7*_}Y-i7|v#cpP9i>ax5h zu2Vz3evmrZR;n_Gg_13KqgLwExOnFy9B!@zXYftUs9kEWi@em2jR+`iepMT_Le;|P z&G*c2tdU0S{DOj-tKGLj*k&0gk1~U4JU^;sKWw)wm#(3R5stdO3?2yM@V=C0Bi2Sv z_ZjT?npeLjrjl*zh_EizpeKO0PK@L$MjzghT^MrshGAGH??5ZYA{VDyg!LKFPWHNS zt8&fA;Qnaa65^9?dr}hNjA6){(cx^bcQjO(inU0qkX`_I)txkW?=EEQ(&mhrHdq!a zyk@6?lPbIiQ-`Pd6Ec{U>|;L74k?e(37rI~!r%slQQP2{0tKgk_{NNzT!+_HaX8q5kLr8Z zwwF)e%-Or5ou`U!JU13HN4K0!2P+!dJJ-7xsffco(epHgh$Lw z8M2g*&F${0*`Q{*O9Mts=V%X`$V4z;0cl#!b2D7nzEO+|F{%5eOs@t z?UMB(SqaoZ8L?60kpW2S&&P#cC_Q0DjE7nM_38$}Zq{~<6%32emaR?3bz;I9(_A)2 zSUh}%aaBt318tTh>+-ke_EuY#s&*IBR!XvG>;$xiFd%2Lnee^+zGvpGYlA9)fzn9a zELz%ehCby6Zrq??Bi(gPE%pN=eRncTq`>XPJGIWURwp%Gm_9GKz^I7vOaK9PVETDsC!gW%842~uoWXa5w>RQ!-UyHRdA}W@w=hN z2?~uUj`HRZd&NtbhlAOFhetYJaJMH5{9KtOljY95!Sv`S_2zB3fF(LwTt}8{a1WKD zI;0^w)>~&VwFbQ)ANugz{r zZJ{BRO#-@i8a>e*K0r}Rr7^vn(M0i%-Kg%L3?9C3&2o&&#u?oF5+Rv+Vw`g!GOzlW zEa%o5;fdTSiv#QG)vcPtV;Rxil~L?!hLo75kVpnC2;pDLfH){IKVSjj%X8*++V=oRGu)}r+cjy|4AvUdepcl#8(|wOCZVC%?yrhF+#sZ6nuH`2#`E;_8S9CV`o}BX=tUk%mkp__T#=jnhunw3h18yCUtfITOp=eu8!$ z7ZTOY`}?rP&NiM~9I|pO1gh`c8Fs-OL8Xqu#sOG!pGnq~S&}S^O4P^7;SaFNEcm5Y z+=h?_vK=jVM~vrU!;8XZ^iYXd@5mcdTp;oN*|t`-&rf zG`|)5gGEwE7p&2I=_Z9mD%<|TyEe9x{Zpk7c@1CTRH&T+oCyI(t+w z^g6EYrQ6xQK{FK)-FT5CV#vLzd&pdo>~O1*H#>f|&BcscL&ITOwNj1ZU4@oY)ja!A zZ|9^axyvEBFx*QpHLK5_xzkWw-kv}`CR9Q7P!lQ=k}By1T^Q>nH|B=C!a#I=^VYlo zsFiR1p+{&%)T*{iepZTz*&O)llamht;$EWn#;lOm&T5NVBE0%X&0G`hgF9tzxM_{K zjj$HrleYI;321lmR;@Y_(dviT78Z}2XM#&OU?SVue>^P_K<8AVk$;0k6iFb;5 zZ1)xC1TwU=CNd2+NjI+nK!(ORya?yBD8;FsQjeo-jwkQBw_~vOlWK%fR|ShtrhV8- zJ2>#5=+wk+vZ!R%dkV)&QLu`9 z`-8-EcdizlzZ{dlgM^)s4G6u|rHhE{&+j<3oT2s8( zQQd|0bk7y9d%6tY;Ga*s<@xh-B>P873UX8!lFbk?Jc&TUr zTUcIQZ>QnYjz=KkG_q2{Bl3>Za1*y_Y4&ZvqfT-6ddpa6=oW|G$4TJ?u-ExSOnR!(l>`V?6mvnW~Z_ymFgJSfPR{QppO)@OS6adnv8y zjckh4Br{@+MsNkA0L|kHS0!AQe0dXZd6ikcpO27o@Qid^s5rn6zi(J{ICqYG+jSq zrIMs{KOI95BUGW{7}FRl^AzjEChWi{oh;BG+d#^E0G9vNMn@Z4T`OZ}V=D$nS4Wu=8hYui zKXZThPRA#&_6UN8A_4%QdcFTG<48$dR9;D}I-x%~+YC40#)%%epO4P{1z0c`OOCZ` zqVVgawf)7=!#)<4p#5)C(ne?L8J%~KO-^PxHt(+Ki`NUniiq#G8#Lms${uFugc97L z-#qpnA3*evYVv%k^iT{Cv7rxb3%e9taCO{2dkp~GR!}nwpW4y4Is)EY&9{+6AC+f)36Is>T=hoeY-Xg zCSqffO~2ZK<2Xdi2l_z?rO5mpqRWK9AiOUrTc~w5-WQ|^tfFA9_}AIo6QE}C`H)@e zH<9v`X?>>UCH3#QuHJ1B^yU-144Sy4s18{eqOH7A<0UNj4c1twWI7?ZhciQjGZ8)n z=adCILL4I3LmN33k1_(lW=pxo2)tHNuVtKb3cYDCJGfr9%bx-Eru4YMW)~~e*J_ZrUg3)Sz*TxZy3;=Y6_@NeK zU(x1PVzt6V7!Pg~SmkTqMk%4nuNB0~B{Kc+@5-^6d6l7VkY5tBiCGJJFNq0GEWVFh z-c4Tcs%8q+;*}CNy~K6#a@N|L$Ke<6!KlgS-5U>izDhE5yx7bjdv5VoT%*-m??`bc zTi|OKj(9Cx9Y%&J+)Lh<55dC;?lf~V75V}jo@8;&BkqoUS#6Rc9`ERYdC(oLGWr$8 z$6~~?aT25l<(3=f&TMDscjo|MLoH9n;#zzQCY`j6^)OJ;krVb(;{!ee7ONC)*z6s0Oo(gA4(hW(G>z4S1Kzu1_Lq?M7w{XoDYVk2j zM+l}U{4%b~M!lm+&*T}AG-l4XLt%)aVHZNTdGBhIZIU&sXHw*h z;|6P!+Y6CsT}r9N@%mD=Ri%lXIVFqn_}`P14~ww$u5xrWPh}{G z6Om%4 zBeA|B80)CRjFN(mFb&a^m(CK z9ctR>UMB1!?{^EF(AxNd(wdvHI6!xrp_G+kq!9GPCJ$baRD&Gh~iD4V{I4{&*FL(eD7|8+3%V zSmiW-nNs$}^ichChY(q1!^nhHs4-U(uRzR?MAR353K{%f9=N|)hYNCYtwx=Fv6nTop^XIo=e?;=~$S2ipwU)$KFupEma zKnOFuq&{pK&&D#4++JYOD(WQKw}(JZ6yfAuln3@$W`qn|TIUu>5948{`e_!WVDK(y z-Rk8H6i$RY*1Jqi=W9RM=ZT=S>EquE-j3Fjn0n7k)xt)62!+&NCR{L}R2sUo(>1AG zm~PB98yP+JoB$k#Al`63J{j136nKbz^r}DpNRFa1s=me_iz)pgt6Yb&H!)v`l+HT zqi=<^Y98Gi)^o*MfE?O8l}a|4vXNB}GVF_bQ}UiVQ~tC1yJ(O3v1Y?@RiE(gldmBQ z+Bn|pK2DUC+U0B$#Xf>48xCHZ&Xtmp&A}eKxnw~puuxx_l2WW3M+s6Mbv?Bi9eg^3 zZxP)6Js;_Z8VEg?%UY$@!`0xQMagy)=2*;0hv&-nDACH=ce0CecbEl@$$e06 zde5IX@YY7fjFyeKdW;0#J}!lo9tR$rFHzT<9Mb4Ik+pyH59q*FdS@_eV?`64tnMuU zD~;+yv4QXU?tV<24MM)0r9H8G_QWk32&%>^PQYUE`4ZPHtz;3uv4d#@z`bJywpf27 z#m!kS&3Hf}@!wSH&69y;nU9ki?eN+zkv)@NYM3$ES1YYpx8ERwN4V{T8oyi8*a575 z`JtKn0t_7hlE?)>10ub3G+rKgfpks*fcM}a1IpcrQ(LsWn z=GNwpy1F3As$W?_y@7EnpjYx8NdAi84-n|P1{evt!|zyzR_4amj=w>Lz;Q#^fs_`j zK--!hN{fG7HNYa!X5zOf8*3ADQzv_UM{^tNUx+`n8~dp6PG><@Mfm~%B!A#Q-!(uT z&<^5v#P>Ev##Xup`VK$Z*8SPnAGkph8u@JyP6Fx$0RJyI2T&gW?{I$zLjIZbV+ITp zq-a~k000@j7r(d~BmH|4NV?cu-^$$mcdq^*MnB)nAAv?(12h+ZorlK|XsZ$UrA8qBRtf8(FQcGi_Y$TxUU{l$+R^dDCZaI)aH zC|w&{(J;eT?|i~c+J=RJO7GC^$JksZk78c^8?)gN5Y zcMTA_^}nP4E(*7o;co>&RCdrhK>8PIYuj(B`sOzOGyqdfxWTAU06-;Z&rk9foid1^giUO)&`Oj4YRD%9Tq_MTr`ya}Uzb;Q3A%2$iSOCC!=dbUs zd!&B^{@d2y5cvTz@xdUE6F{Xke>L%n@*j!68^#}RuX~1vo;Z-FFraXy_>adw){r*# z-va-md-MCZ{}1L9mxDJ9EXY9WUyV%S_-Ce}js5RlvA=dQ|HIB2;D*pY1Aq24|MT4Z zF!I-?wLh7%693HnQw!T)p}%$>_zC@{^Uu(qeF%PK{wg*7lPPHQ-aS`{KdFSy|4jXlHq)=jU(3&bB7K4X zjQpb*{m;bT)o=bJMg{&K@xN8U{a-cbujF4V>VA?ng8oPHAN6&=qJKR${D~ed`5)2$ zIz;?4_jgBqKe-O2|0DM=2Y-L&|L(}|4}KMJ@PFn1`v6cu1_Jbs{;`vw0ziP)Rpe^W HItciG%N;4K literal 0 HcmV?d00001 diff --git a/scenarios/projects/basic/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl b/scenarios/projects/basic/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..06dffa63c4af553f115f5d1d93b492acf2c0eb40 GIT binary patch literal 153467 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%0D4q)o$0q=ep2Zx9H_ZM-^cI~K9u&<3PgPIuS%E!- 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 z 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 RPg8`f{|fT89oR0R-vJe3KcxTw literal 0 HcmV?d00001 diff --git a/scenarios/projects/basic/project.py b/scenarios/projects/basic/project.py new file mode 100644 index 00000000..a964cae5 --- /dev/null +++ b/scenarios/projects/basic/project.py @@ -0,0 +1,8 @@ +from azure.identity import DefaultAzureCredential +from azure.ai.projects import AIProjectClient + +project_connection_string="your_connection_string" + +project = AIProjectClient.from_connection_string( + conn_str=project_connection_string, + credential=DefaultAzureCredential()) \ No newline at end of file diff --git a/scenarios/projects/basic/prompt_inline.py b/scenarios/projects/basic/prompt_inline.py new file mode 100644 index 00000000..2f5f9770 --- /dev/null +++ b/scenarios/projects/basic/prompt_inline.py @@ -0,0 +1,18 @@ +# +from azure.ai.inference.prompts import PromptTemplate + +# create a prompt template from an inline string (using mustache syntax) +prompt_template = PromptTemplate.from_string(prompt_template=""" + system: + You are a helpful writing assistant. + The user's first name is {{first_name}} and their last name is {{last_name}}. + + user: + Write me a short poem about flowers + """) + +# generate system message from the template, passing in the context as variables +messages = prompt_template.create_messages(first_name="Jessie", last_name="Irwin") +print(messages) + +# \ No newline at end of file diff --git a/scenarios/projects/basic/prompt_promptyfile.py b/scenarios/projects/basic/prompt_promptyfile.py new file mode 100644 index 00000000..cd5a5aee --- /dev/null +++ b/scenarios/projects/basic/prompt_promptyfile.py @@ -0,0 +1,29 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +from azure.ai.inference.prompts import PromptTemplate + +# load the prompty file and create messages +prompt_template = PromptTemplate.from_prompty("myprompt.prompty") +messages = prompt_template.create_messages(first_name="Jessie", last_name="Irwin") + +# run a chat completion using messages and model params from the prompty file +chat = project.inference.get_chat_completions_client() +response = chat.complete( + messages=messages, + model=prompt_template.model_name, + **prompt_template.parameters, +) + +print(response.choices[0].message.content) +# \ No newline at end of file diff --git a/scenarios/projects/basic/requirements.txt b/scenarios/projects/basic/requirements.txt new file mode 100644 index 00000000..5a7cabf9 --- /dev/null +++ b/scenarios/projects/basic/requirements.txt @@ -0,0 +1,10 @@ +./packages/azure_ai_projects-1.0.0b1-py3-none-any.whl # azure AI projects package +./packages/azure_ai_inference-1.0.0b5-py3-none-any.whl # azure AI inference package w prompts +azure-identity +azure-monitor-open-telemetry +azure-search-documents +python-dotenv +openai +pandas +pyyaml +azure-ai-evaluation diff --git a/scenarios/projects/basic/tracing_enable.py b/scenarios/projects/basic/tracing_enable.py new file mode 100644 index 00000000..bb7b052c --- /dev/null +++ b/scenarios/projects/basic/tracing_enable.py @@ -0,0 +1,31 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +# Enable instrumentation of AI packages (inference, agents, openai, langchain) +from azure.monitor.opentelemetry import configure_azure_monitor +from azure.ai.inference.tracing import AIInferenceInstrumentor + +# Enable OpenTelemetry instrumentation of the Inference SDK, add other OpenTelemetry instrumenters as needed +AIInferenceInstrumentor().instrument() + +# Construct a URL for the project's tracing page +project_url = f"https://int.ai.azure.com/tracing?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}" + +# Log telemetry to the project's application insights resource +application_insights_connection_string = project.telemetry.get_connection_string() +if application_insights_connection_string: + print(f"Enabled logging telemetry to project, view traces at:\n{project_url}") + configure_azure_monitor(connection_string=application_insights_connection_string) +else: + print(f"Application Insights is not configured for this project. Configure Application Insights at:\n{project_url}") +# \ No newline at end of file From b7fe3154e700ad416fc4812d55f4b5747e0d682c Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sun, 10 Nov 2024 17:41:43 -0800 Subject: [PATCH 07/21] update custom rag app logging and evaluation --- scenarios/rag/custom-rag-app/.env.sample | 6 ++++ scenarios/rag/custom-rag-app/README.md | 11 ++++-- .../rag/custom-rag-app/chat_with_products.py | 30 +++++++--------- scenarios/rag/custom-rag-app/config.py | 18 ++++++++-- .../rag/custom-rag-app/create_search_index.py | 25 +++++++------ .../rag/custom-rag-app/dev-requirements.txt | 10 ++++++ scenarios/rag/custom-rag-app/evaluate.py | 15 +++++--- .../custom-rag-app/get_product_documents.py | 34 +++++++++--------- ...zure_ai_inference-1.0.0b5-py3-none-any.whl | Bin 0 -> 115243 bytes ...azure_ai_projects-1.0.0b1-py3-none-any.whl | Bin 0 -> 153467 bytes scenarios/rag/custom-rag-app/requirements.txt | 3 +- 11 files changed, 91 insertions(+), 61 deletions(-) create mode 100644 scenarios/rag/custom-rag-app/.env.sample create mode 100644 scenarios/rag/custom-rag-app/dev-requirements.txt create mode 100644 scenarios/rag/custom-rag-app/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl create mode 100644 scenarios/rag/custom-rag-app/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl diff --git a/scenarios/rag/custom-rag-app/.env.sample b/scenarios/rag/custom-rag-app/.env.sample new file mode 100644 index 00000000..5ba2de80 --- /dev/null +++ b/scenarios/rag/custom-rag-app/.env.sample @@ -0,0 +1,6 @@ +AIPROJECT_CONNECTION_STRING=your_connection_string +AISEARCH_INDEX_NAME="products" +CHAT_MODEL="gpt-4o-mini" +EMBEDDINGS_MODEL="text-embedding-ada-002" +EVALUATION_MODEL="gpt-4o-mini" +INTENT_MAPPING_MODEL="gpt-4o-mini" diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md index c3bf5bb8..083d2de8 100644 --- a/scenarios/rag/custom-rag-app/README.md +++ b/scenarios/rag/custom-rag-app/README.md @@ -78,16 +78,21 @@ python3 -m venv .venv source venv/bin/activate ``` -Install the core dependencies to run the sample: +Install the full set of dependencies to run the sample: ```Python -pip install -r requirements.txt +pip install -r dev-requirements.txt ``` ## Configure project string Go back to the **Overview** page of your project, and in the upper right hand corner click the copy button beside the **Project connection string** field. -Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```PROJECT_CONNECTION_STRING=``` variable. +Create a ```.env``` file using the sample: +``` +cp .env.sample .env +``` + +Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```AIPROJECT_CONNECTION_STRING=``` variable. ### Run the sample! diff --git a/scenarios/rag/custom-rag-app/chat_with_products.py b/scenarios/rag/custom-rag-app/chat_with_products.py index 80765edf..04e61c51 100644 --- a/scenarios/rag/custom-rag-app/chat_with_products.py +++ b/scenarios/rag/custom-rag-app/chat_with_products.py @@ -1,18 +1,13 @@ -# +# import os -import logging from opentelemetry import trace from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential -from config import LOGGING_HANDLER, LOGGING_LEVEL, ASSET_PATH, enable_telemetry +from config import ASSET_PATH, get_logger, enable_telemetry from get_product_documents import get_product_documents -# use the app telemetry settings to configure logging for this module -logger = logging.getLogger(__name__) -logger.addHandler(LOGGING_HANDLER) -logger.setLevel(LOGGING_LEVEL) - -# initialize an open telemetry tracer +# initialize logging and tracing objects +logger = get_logger(__name__) tracer = trace.get_tracer(__name__) # create a project client using environment variables loaded from the .env file @@ -23,9 +18,9 @@ # create a chat client we can use for testing chat = project.inference.get_chat_completions_client() -# +# -# +# from azure.ai.inference.prompts import PromptTemplate @tracer.start_as_current_span(name="chat_with_products") @@ -37,7 +32,7 @@ def chat_with_products(messages : list, context : dict = {}) -> dict: os.path.join(ASSET_PATH, "grounded_chat.prompty") ) - system_message = grounded_chat_prompt.render(documents=documents, context=context) + system_message = grounded_chat_prompt.create_messages(documents=documents, context=context) response = chat.complete( model=os.environ["CHAT_MODEL"], messages=system_message + messages, @@ -52,12 +47,12 @@ def chat_with_products(messages : list, context : dict = {}) -> dict: } return response -# +# -# +# if __name__ == "__main__": import argparse - + # load command line arguments parser = argparse.ArgumentParser() parser.add_argument( @@ -70,12 +65,11 @@ def chat_with_products(messages : list, context : dict = {}) -> dict: help="Enable sending telemetry back to the project", ) args = parser.parse_args() - - if (enable_telemetry): + if args.enable_telemetry: enable_telemetry(True) # run chat with products response = chat_with_products(messages=[ {"role": "user", "content": args.query} ]) -# \ No newline at end of file +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/config.py b/scenarios/rag/custom-rag-app/config.py index 26c4a858..d28521e3 100644 --- a/scenarios/rag/custom-rag-app/config.py +++ b/scenarios/rag/custom-rag-app/config.py @@ -2,7 +2,6 @@ import sys import pathlib import logging - from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClient from azure.ai.inference.tracing import AIInferenceInstrumentor @@ -11,13 +10,26 @@ from dotenv import load_dotenv load_dotenv() -LOGGING_HANDLER = logging.StreamHandler(stream=sys.stdout) -LOGGING_LEVEL = logging.INFO +# Set "./assets" as the path where assets are stored, resolving the absolute path: ASSET_PATH = os.path.join(pathlib.Path(__file__).parent.resolve(), "assets") +# Configure an root app logger that prints info level logs to stdout +root_logger = logging.getLogger("app") +root_logger.setLevel(logging.INFO) +root_logger.addHandler(logging.StreamHandler(stream=sys.stdout)) + +# Returns a module-specific logger, inheriting from the root app logger +def get_logger(module_name): + logger = logging.getLogger(f"app.{module_name}") + return logger + +# Enable instrumentation and logging of telemetry to the project def enable_telemetry(log_to_project : bool = False): AIInferenceInstrumentor().instrument() + # enable logging message contents + os.environ["AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED"] = "true" + if log_to_project: from azure.monitor.opentelemetry import configure_azure_monitor diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py index 9991ac47..fc8d1244 100644 --- a/scenarios/rag/custom-rag-app/create_search_index.py +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -1,4 +1,4 @@ -# +# import os import logging from azure.ai.projects import AIProjectClient @@ -7,12 +7,11 @@ from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient from azure.search.documents.indexes import SearchIndexClient -from config import LOGGING_HANDLER, LOGGING_LEVEL +from config import get_logger +from get_product_documents import get_product_documents -# use the app telemetry settings to configure logging for this module -logger = logging.getLogger(__name__) -logger.addHandler(LOGGING_HANDLER) -logger.setLevel(LOGGING_LEVEL) +# initialize logging object +logger = get_logger(__name__) # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( @@ -34,9 +33,9 @@ endpoint=search_connection.endpoint_url, credential=AzureKeyCredential(key=search_connection.key) ) -# +# -# +# import pandas as pd from azure.search.documents.indexes.models import SemanticSearch, SearchField, SimpleField, \ SearchableField, SearchFieldDataType, SemanticConfiguration, SemanticPrioritizedFields, \ @@ -122,9 +121,9 @@ def create_index_definition(index_name : str, model : str) -> SearchIndex: semantic_search=semantic_search, vector_search=vector_search, ) -# +# -# +# # define a function for indexing a csv file, that adds each row as a document # and generates vector embeddings for the specified content_column def create_docs_from_csv(path: str, content_column : str, model: str) -> list[dict[str, any]]: @@ -147,9 +146,9 @@ def create_docs_from_csv(path: str, content_column : str, model: str) -> list[di items.append(rec) return items -# +# -# if __name__ == "__main__": import argparse parser = argparse.ArgumentParser() @@ -196,4 +195,4 @@ def create_docs_from_csv(path: str, content_column : str, model: str) -> list[di results = search_client.upload_documents(docs) logger.info(f"➕ Uploaded {len(docs)} documents to '{index_name}' index") -# \ No newline at end of file +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/dev-requirements.txt b/scenarios/rag/custom-rag-app/dev-requirements.txt new file mode 100644 index 00000000..fcef59fc --- /dev/null +++ b/scenarios/rag/custom-rag-app/dev-requirements.txt @@ -0,0 +1,10 @@ +./packages/azure_ai_projects-1.0.0b1-py3-none-any.whl # azure AI projects package +./packages/azure_ai_inference-1.0.0b5-py3-none-any.whl # azure AI inference package w prompts +azure-identity +azure-monitor-open-telemetry +azure-search-documents +python-dotenv +openai +pandas +pyyaml +azure-ai-evaluation[remote] diff --git a/scenarios/rag/custom-rag-app/evaluate.py b/scenarios/rag/custom-rag-app/evaluate.py index 4cbe8247..0ce74f18 100644 --- a/scenarios/rag/custom-rag-app/evaluate.py +++ b/scenarios/rag/custom-rag-app/evaluate.py @@ -22,7 +22,6 @@ connection_type=ConnectionType.AZURE_OPEN_AI, with_credentials=True) -# TODO: provide a better way to get this from project client evaluator_model = { "azure_endpoint": connection.endpoint_url, "azure_deployment": os.environ["EVALUATION_MODEL"], @@ -33,8 +32,8 @@ groundedness = GroundednessEvaluator(evaluator_model) # -# # create a wrapper function that implements the evaluation interface for query & response evaluation +# def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) return { @@ -44,7 +43,7 @@ def evaluate_chat_with_products(query): # # -# Evaluate must be called inside of a __name__ == "__main__" block +# Evaluate must be called inside of __main__, not on import if __name__ == "__main__": from config import ASSET_PATH @@ -54,8 +53,9 @@ def evaluate_chat_with_products(query): try: multiprocessing.set_start_method('spawn', force=True) except RuntimeError: - pass # Start method has already been set, so we can ignore this error + pass + # run evaluation with a dataset and target function, log to the project result = evaluate( data=os.path.join(ASSET_PATH, "chat_eval_data.jsonl"), target=evaluate_chat_with_products, @@ -70,6 +70,7 @@ def evaluate_chat_with_products(query): "context": {"${target.context}"}, } }, + azure_ai_project=project.scope, output_path="./myevalresults.json" ) @@ -80,4 +81,8 @@ def evaluate_chat_with_products(query): pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}") -# \ No newline at end of file +# + +# If encountering issues with uploading evaluation results, check out +# the troubleshooting guide for known issues and workarounds: +# https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/evaluation/azure-ai-evaluation/TROUBLESHOOTING.md#troubleshoot-remote-tracking-issues diff --git a/scenarios/rag/custom-rag-app/get_product_documents.py b/scenarios/rag/custom-rag-app/get_product_documents.py index cfba016f..3737bb06 100644 --- a/scenarios/rag/custom-rag-app/get_product_documents.py +++ b/scenarios/rag/custom-rag-app/get_product_documents.py @@ -1,20 +1,15 @@ -# +# import os -import logging from opentelemetry import trace from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.identity import DefaultAzureCredential from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient -from config import LOGGING_HANDLER, LOGGING_LEVEL, ASSET_PATH +from config import ASSET_PATH, get_logger -# use the app telemetry settings to configure logging for this module -logger = logging.getLogger(__name__) -logger.addHandler(LOGGING_HANDLER) -logger.setLevel(LOGGING_LEVEL) - -# initialize an open telemetry tracer +# initialize logging and tracing objects +logger = get_logger(__name__) tracer = trace.get_tracer(__name__) # create a project client using environment variables loaded from the .env file @@ -39,9 +34,9 @@ endpoint=search_connection.endpoint_url, credential=AzureKeyCredential(key=search_connection.key) ) -# +# -# +# from azure.ai.inference.prompts import PromptTemplate from azure.search.documents.models import VectorizedQuery @@ -57,12 +52,12 @@ def get_product_documents(messages : list, context : dict = {}) -> dict: intent_mapping_response = chat.complete( model=os.environ["INTENT_MAPPING_MODEL"], - messages=intent_prompty.render(conversation=messages), + messages=intent_prompty.create_messages(conversation=messages), **intent_prompty.parameters, ) search_query = intent_mapping_response.choices[0].message.content - logger.info(f"🧠 Intent mapping: {search_query}") + logger.debug(f"🧠 Intent mapping: {search_query}") # generate a vector representation of the search query embedding = embeddings.embed(model=os.environ["EMBEDDINGS_MODEL"], input=search_query) @@ -101,13 +96,16 @@ def get_product_documents(messages : list, context : dict = {}) -> dict: context["grounding_data"] = [] context["grounding_data"].append(documents) - logger.info(f"📄 {len(documents)} documents retrieved: {documents}") + logger.debug(f"📄 {len(documents)} documents retrieved: {documents}") return documents -# +# -# +# if __name__ == "__main__": - import argparse + import logging, argparse + + # set logging level to debug when running this module directly + logger.setLevel(logging.DEBUG) # load command line arguments parser = argparse.ArgumentParser() @@ -124,4 +122,4 @@ def get_product_documents(messages : list, context : dict = {}) -> dict: result = get_product_documents(messages=[ {"role": "user", "content": query} ]) -# \ No newline at end of file +# \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl b/scenarios/rag/custom-rag-app/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..7a7a671018ba36b192b82d8c513739f2d0930c23 GIT binary patch literal 115243 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 q%0Ve;6PVH^{m#bEWt-Zxy zerhWdccz(x3sS=cpJL2p=!eZG#H!M<{Ew6hZO-lYysf zf$HX=EU-IrIf&*b=zV!>_TSZC5C34iNGR-KjtBefwyapLU1W)H>&w+Z2wP5ltp3Up zmkkq?D|3M01wDySBxr6ak(i_17ffSfLw}&qjg`;%;yQC;<+Z%3JqLMOo@2XAnLVHh znqKHf*zli1UA69}FfJmI5~WSjXovo#prjI=;(&65J+sXPdfye)waRHKAk>1#BV1cg z6DWfhvVZ%gxzaS#2XPG^OS2=I%5hx?!2X^ip6 z;nu5=WgNYxDpN~8t0K15e8x)|m9xrk`d*9J1CK78)g9*xpF_i2XyODWm4U^uN=inY zHCK&~+N_Z#BuJ4vw_mF4dZP*?wjMc+ND&Cw<9;E(`SF(wdUl||0zjX#yVR$#`Q2Pp zMMY)R*>ER{oJQ@hh)1N*2|bznW5!GXA;os|%dF^5n^;Cc z=`>G?h#i35bjAnlk@L#fgW;2j5gJ|NLWa;ID$*$)^p0;Ij{v(OAeD(GwZ$R5m`5RoC}nigZ?BDeB}#Zs$;A67v#6_Tz0;c1xNhrj!d1?f zPxPgkLO0d`prvd_&BG)fiI#>hMa&H+-l7~*3qE>F~Can~pQPC22B5hE$E_K;rW1X56QsZ?5w zb5OnAlD*tTV{@O#jG~H)r2@^Sp;+D-{GH}+xcs#^Z@8M+@`E5G+D`I887R(_Bw z4OE!6P?fNzYB%n%A`$=11}hUzBaTbexN8C(@>RE+&-(2)F{$|K$+zm>*~4#n^lZDB z^7pHRPp!7J>!I+u!N<*@j&3&Abq|d6Xyyty!*4r`2gg|MPVRQRyuTi)TbIO9grXi| z2GLUP@-Bj8CxtJ+mImN2D)U+J_ncHT`8jb@&&ZK1v=hN}=#!+@59U{;4TS0{EK_po z44?NmIN#x5`g30qdWCbvOeJPtE}WF;cM{)fM<2|hZ(UqL!J?C85r`h(&~Nt-r6d9< z?|~*LlfeV?3$2>9_x1bZ|55FXO{@rCrnE2z+?zZ4s=+iC8L&InAj*65*-+@sTHOjl zn_+mC^9RvfjGV#g-?-=JOLKcVN4`8TqZamHHZNbrMdxxr;0R9Nei`Nz-DKSDlz?(_lQA_$mTk`+Su7;oL)&--h$Oo=3hrT zKYtO3-ash-DGUVAux61K&+%;W#khf-^5b>$j3(*FU7CyW8;GD54Z=}tb?5&HmmY!Q zFW;0;QqzR1SODrOWSy~*JLabV0~%NW{kquzOZra3s8Q-HwLB`II(|MozqDZV8bV!=0gAFAS=(CNtHSsfBA8 zJusWGQg&4p>84i7DPG_o9L3H6%@2Yehx*A-ZMyWdb;@Q9=i7$(UT~4r!mK>y9$$kq z9>)On(|;*avft2DiJ+vO9VeMZEV`SnO{i1}pR)7qLL0 z;blke1L{nTGo279YJ7__zmd#nn9|1 zPumvxF6znET>62O3iNMQ{0|)Dbo5G`kG873Yn2H$%0>}8+;~x<1*n#C4tChwgPIly zVn*#aNxc6l3ZJ;L=j4d8(?S{%2Kt(mq(B_Y!SB;thSKTyOJ`=b>BLv!-|d&*!8+)p z(w47BPbW20TjzVSx8P<41LIW0Pr-Fert9aRw>1q-vVX_Xaa^ZT zq}km>bCbbEDnau+S!kWM^7gI9$qs;7%-Ad zApDdz8e126;ku67dbk7;VVt&-M!hv){M`~pBpRasYzL|L;H3*ec7>XsU~L*)S5s@Y z(t~eTW}CnLGhY=uYrEC65wraugq@DNrhA%#avi3X%`i)4n47eX2u1$IgWGj`o3x+7 ztFKed-mztQ@<-nr3_T?y%^U7?AGLvcVomu~UkWmTqEzYV4#j^>WW)Z+meBncfRhhR zpWQ1V5D0VZ41I#S8|yHDWhYp~b*(ovkS$TEo;^K{A<5Ty7{;&6e|j=+jZ@16c#2hT zzQWJ!T3)SIw;4KK?yE2uM1+@qPprr%K>uRtqgHfj&s;q1pP2+jsAF0LTYY4L8Yf6q z0iQW_G11-*cq9JGztD-dJxVCjcj=9VFvbw)4sIYG#c`UXamYFK#k&q!F*SPU)b5%} z7d*5pnemI0EXMW9@_Yh|U zQ`ZxE5k|WjSHd>F)ir=aRTr{In`1gp56Zq3a2{}%0E2{^7<1>x(W&CA;4iGRRZ6t# zlEY8}*OCVl4L&*p(j=y#EnACBbVKZ`2K=Tiy1&VNCT;~ETc<$?^J$N)|HqAVl=f0 zPrg%Q&HFDno#o}IYI&;rKsg}Q02nym+Z=@TB0`6C^}Hdy7E`P}n3c>HQkc5*YyIqS zt53tsyFDwj?=J#d-Sr$vCNPo+p;ownPD6UrHUT)^x-hOD#gfrO>pj*NX$nq^BdTX)li3^ zhI$)Q4V^xyLu0iiJUp_7SNR}2IZvZ;eXc9$Vw_Z~)mSLdMd$ua{GTcy$Yec%R=pOu z!&VPlXcO2I`a9S#>zBh#2RtiKvySisRj4k?gjJn@ly!7dL(JXhN)!3vnr2BR#z?mW zz~R*CBE{oG5?aw_`R01N|Hbieg;M^sx^h5uobuKY<2n)(-NF&xSMq+Y?*JPTZL6F< zcIe20GYL2Hx9|XMbS!B}&BE<_Ky#{GICdfdjP0`$oZs*06O}=?R~cs5NUqO5zulF8 zFv{21@1+vQhAteSX6Y0Ju2x(Cdw#S|ps19{YYxGoA1y;d~>*mzi^yIQC+3VE=1LMb~Z zmEdodZYDw_*4m_b@8GK|#%hTl;o{|E(#w9oD!SVr>A2(LLIIMhrQ)|!h1Dm3CBJ8A z8E4MoGVA4!(%rUaD5!ga{2?o|=it-mfFN9zJFmjS#QWd$6d|x8SOp{Ff?84)K2*lU ztmpe3&LbfZ{VEK*y)2+jhju1jq!|#Rmq4Z<(_Y635CTb+Eqr*};cR_IrCTcJRwn5^ zQ=034#8KCv{e#=9xxI%2Oh_NpKAIUrK8|0{VSMkQ+dmvWmFpk~+G|eNYF!ch5zCr4 z^dys!@ddq>MQN#Be%@7<&g4a9=3+1Hc9Uig z9oaNIT&|rM{89^eu|x0sM}+TK;aKViu`51{9PD6QO1SCv>|4jZ=;LYi*6F>?hRh8j zW@GQK-O_fSt0;%*ah^D+t}miXa#0~y>#LMX$i=Cg(`iMxQBfSt$ML;RCCL6DH{$BZ zEO~vNX5^Tnb9Y1N&!oUz;7b|Pwbr$edVC8O-O&tnZ0h(!ErvzD#W4tfYwgo!?htP^T2O2|BgPp+AXB{B$b5HuYy$ z&|^Y_)TTno=P+}Kb~BSqKueiXV|R=q!=^X>Oxz50j; zE@EKPHb*};g)w6Ko&4Ljc85sJ-g6&y&2ktRU>>(k!&gg(Uf=R|-AxU@=?_o2=SU!* z115g*HF(5)o;lfPd(YGEDyR2X*jXfZON3tHrew?S)5CQ(Tzvn5S8Jom zGpSb!MjUPahG%g8-`N}TuWMDsmNyMWz(Yl5D~wG$q5M};r-JpT(={T}X55do=8P9Z z`ceYnK;RjbsJ)Qrj%_$L*Fwl*G23VOfv*vPf7kb?bG}}Myd+a=d8g`6qvnjdx(Oaj zkK-Gs^%!UfIUq?{LQ#Wh>}9|>4btI?){IeiA>`6Vf<8*9mr;BpSvtwI1KzsO+|Xs! z{Sk3+HbYmZ5Z|22iCCFxUdl?tr@A8~(bmGE86aW#^a2mby>P?&ldKSp3fo)SAuVFC zG)3I>h_jEFhmhL4dz4CnDN(qCs_-O8>@c6Sd@%aO0Z+A-c4RM&NIW@<94>TU>iCS( z4@spfP5@%xT5%R8>Rb_{Uv)kY&O76yI71H6-w&SV5O5Q{-3_~ZD6vQMI}Z4b(8+E7 zCm@Yq=NykE_aDl(H887+9%M zZaC9C7+ZgHCcb&FaBWbrCVY~-j9jyAN&$iq>U#@`Xxy#hTNy7;M?P;3_qJ1F#h8X9!GMmh2WvG&H&oqaoCvGMl|bjx8>>8()HB+lBMOh~VVN z(JUvEG$h^k!Q3G!*EXzNF_vli2xeDQ*eEtAcD!BZ$d}O>W}Jcq*f~OjBcrEjXMYp3 z%kVB$5@+=Xh)v2y3t+`f+tXVP)Kbs5Eq}qIIS$6Sn1$fcEeX4t#=B_CQVJ)urI5&5D{L|z7h5}8eD$*&sWpA~QlMDp5R-is5(<7#F z^2!g_>=^e}0*cV6WI3X(nS3qkh{8KkK#-pip7kpNLqrn+tDQ62CYf9jRqkDO5er3; zE5)?HwboQ(Hjjr12?`8JtoMMQ()0TZ}`gINxbH)~7_V?{|+2MY+^8PE7^TB!zDCnl=6WtYA6B}=5@l?alEadGz8pIWjBT9o&7va3xSky=!_Oe@Qv_0 z#6$TX{sPIn{=~qV>>ZT7O;}|FViITtu_6}9XGc~!$y*l0cOky158OLIM|mvK7M7k~c>(`W#NKG5s&XyEC63~pA@BoEISHQ}Z8m-n zl>`0rKInlY@X|yJMEV<9=KBRwg*Qixt-{fqwrviLEZJ64K~31{-eC`D&Q@@1)XVoc zV@JPm1rwj06s7bWx@>7{LYotGApI0yTQfpXOD=$m!w3xayH zgoKr_RmesA`-EOFMSfLcwU`QZKAr?VW}lBmx_@CPY59kOX)R6|_Uhxe1cB!>i&u=z zKT_1G%4^0nFIxSmZt57El|R{{MevAhq7t(bS!2Ij*el{&{)z}sOszm)rVbBu)s;40 zv|JkNvyE1E@BIt@b}K){(}$h|BOq?lngKI=71*E){g9ESC~uI9*N)n{yLc20oVYds zf9U5CG>T{RC4-uHsI@8YWhW@#B_j;9wADy)xf|`Y9ENd-sVRN(F^;^+F9H&rE9{14 zMO8~4!Uvj+5t1d33zKggEQ3qTB{ZQmQ|m5TCj|>{ohLDluEYpUr2E=J#JCT}I>(Ia zUgUIq!>`q_qWiS1F#ibnZ*TF&=X}O!cw|Lvb%01@sNlO7*uYFq6L~Y3n*6$IK`_C! zB5xCoD}NAlP|fI~;*2bd?Y;V}LzfWz+DtD3&0nErVt$$?M8+?e7A$o)c@@n743}#a zTnnn^lNP!aBuP0vbvw$kLT+3Nl5hsGS({us%qrabKXl0S*>GstD&~B~#`P;pvVfsT>$SHC z3jLWc71-2Wg3<&-l&-N3(POASaHjBFT8wP;FV>Z^r8Ebt2j8e7@+nyzkXD4wZ_dDK z&CY>$jH>Q0)u@!imh(O$@}L0by>U@)%s$#|Ivm%$%WiQ<%AVj-yP^ZB`nEBrZABG* z>0=NFFH$?(NNtsRlThW-xUlTe)z;CNXV7wlmMTd4P*73(OxYR$p(sad6IGpEdqza) zDjLNSLQb;?#$FO2G!dL6178fFuW-pNqx!tZQ&(fN$LuL#v}x(fpi} zUuPZ>j98B{)V_eMyRO4A3eV$~?2t`O-W$5tiSxWS zWR)?Y03qIVP*vNksY!gHK6(Jhd3x82LB3Bso+2o5-!?oLtO=eIag&aFEl?k1BX%7@ zfd_M7o0w%PW1Vd6+~n9gb=uJ`SDrk^ku{ZP6hFB>yc}$i#7fN~x+brG9&kfrXp5Y0 z?~Z1FsPIU`e$rT z2q(ekc_n_tIP+Wh97@+VS>|95QuTrfo!N3~(}; z)0Fh+f5?*^Z>ug5axIm@TjF~~3RuJ%O(n5>;e{n6g4D`NP5Z5Il7;4WjB7Vxj{*>n z4JKWJ$HKVo>aQ7hLcmz|szdF+kDezp-BC8z~eq-%hZqYwRcT4fJfX z{pUjZctO44E45Iyz%GqTw7OF{LTCq3A?iAi#0Jr)~_bIG?Y1ev=Vd@`B@4(bnz zL(w4laVYHH7q+{jtx|*StG=C?VFTKRVF!4)xVTG^NM*(zg{0=*&+}=OJOl{*l3h9- z?>;omlc=3B-QZX;CkFoB4Yu!fXGgWFMO~9Om|C&9IG9yq{$>TCg2f`b*XqiuX#Sw* z&;aphZbFv9W#H-qy57Enov%{upjTU2=LKxFch!i21}uV$n26KqnZIi$xUTA*7iWh@ z&M;a#8O1)Y$}l_Hi2>wJiHKQ$aD()X(ToEJ62AT%HIfk3zn}RYN{&_YGm_L)JVuIR zT>neuhSdxM)F#qXMP4KQ&zGF+#BQztRSq{0{Wh~EV~14xIY?2H)1O=n#DR7D8=XR; zw78^L$bNCW(;yOo#Cct?_2+#1V9Dmz@js;h!t%P5$@L2p*rR9`i&HA!o)2dhg4K%!V&<+62_VSb%@IH==_ z_zE|1p)%G6O=Z~|i*U*s<&&>>hZWfvKK9Nu(v55Fk+S4PsGSaQn4{|oOOfT$)cGZz zUXG^!(82NlKd`y_qW=fZ2!k=M2B*W*z(1GS3JG?T+%2(6- z6_*J3Tn3?eJm|>>uA%4pTi=p+$>47F`xs=UjnxseM#t0B7L(;YwDR5~DV@|O10EKx z2&TvWa)>kap)!UKqz^ZVMItu1}*yN4R-1jA8e$~jF<#_`l0vXDP$A3 zyiCky+Kkp}m%eNZ!q(Z@>o=a`IeZhkv*Fc_FwM61m zPSD?#ofdKi_x2D-hKc8(hTUYj@y|-l`24DBaT9t)jTL`YNyacoMX5U?%{Iy+xS$YV zy~nd4v=X~lcV=M@O~Cr=d2=*vh!xssgY+k*Zj@%PL`vh$Wqp@(+*P>U@j9tZTrpPu zH}N=lu1!5|upJ1={>S%-si&|&q%LH|$^69J>I4MYd%wuN@4r539OlhVZ%#6W96V80kXv)v z7=;~FING*v*ABkMKoH4kP$_Kg(~1 zH%WoZM0$clk9=lG+m7&6qtr^Ai*^w}Kp$s+np^78r~1=_>e7xErPGMO9A2*qxG!PPk9h;5V!E0uy#!njt()&mZo;yr&HvBQ??V5 z{?0_}-hGij7x#$+s|%T6K|`%Ja06#-9)9fV*%*JC>cqb=g^&TpI1XrAKe6~>ODR8s zZO&N@dL`_=Cd1yWL??=sDv{X(gd>ZgPsU>XWq#!$DXM2ZNz(un1 z$a8$hnP+3J%v@oVz$*>WIp$fMh~qnG3DxJ2x#>thU9=656)+EKrh?cg?W7<1abYCE z&Nd%`c&%m2@~|`lAQMD|K};SCBCG>B^w~BlLe_WPxdQyNX|TeRj4y;sRekTVYnq`} zGOlJk$@!TDl6D*0J9TX;VQgsIbbiS=YMYuG+J@6{K@$d2&bX0J;rbLX6Dk5z|lop$w60 zPW7pnYE{>f`QyI0t<|^hklXJ2f_h|$18%RdJ9qClHQ{-*43qr|?;Psmn`5&75Kady z`1^GY9_zFRxh1Uz+cB=wdpk2rz2=W@E3dc`ih$QEg$0G5?<zK zr893t9bNUf(fx*e;m>-*g2I(LAmBkf(pbC1acle%C^CjaEQToW*tX^s%|B}3YuX2T zQ4UoViX)E75ff{{-ZkqLLfEZ1nQCscyG!bbuUhzAR)0JiNDT0-^XACM|}~H0%E=S{3UVC__@NX>;!CsEjQ# zh*U(RVy%plsb^&ayl|Nu!C8~kaMz*AKB#E|LLlW0*Z92tG{Y`)3O_9_mk zS7+M6B@P2o074hg+L2W2FTW}|&CDDwY2KFO)gDx3z>Qgr7FK};i0D#`TaTHLpKIde z2=H_Fpp>5lr2sAUW!fh$PQRbDh7qvGHngeys-2|P5U_2gi9@9@FT24HLMyt(PTYzh zq!_Ro84y?nf`CM=$2+qjysn&+$FG>3f3coI(}WwA{gQ@eKU@)>8&Jh`Eo6PK5vl7? zw$*!O<`wk}vMM{ou_o$tW&F%~71x*~z7a2789yS2qYed@(_kWlp-t&hXlTdXmgimu zTd+17q6wq>1VE6@Xmz=tyDi-hAs=h?(02Y!8$aCAgv(oDN$J7l5Mfe@$WYw_H))c7 zS49iw#wkG)3~CFuQ5u1TG0iPeLI3ueK0hdrz==4$)+apb*jL14Q)H3Lw76-`|>=KwzVE8aD<}H)Z z3bsAfAj9g@9xOHR%f25kUwgB?1V7HIo?l!z?qk|^|5ndvem+SFw4*}jgz9FQQ=7p9 z_E$U`;vFgEs-h}U{l7z#&H$=g!h!~_darLTA;g|S(GK>a%0tKFRC0uZyT+3~t#N0zA z;9mZ;)uiknb(Mq-nQ~dsTy_Xbhe47lw%O!W96I#Q0ZUSvR*PVS1@UhZ^Hi-hRq=g( zm&mK7ewwKhU#j=qisC~Z;yo=HE2t^iW75nS0RBRh?EdcJ9H*ompiH;Y%|AL{a@s8e zXs3e;A*o@PrVMT~Obe`HHhH!^iZ{B(+K-0UWYcbn?xpDnhyH!odKB_K5O-^jjaypB z3mCCEMg1rp!@k-#n{9JR&znq-oVp}r#h~_NsX*#K=kQx)HEQh}L^Kezn6sQv@DBe2 z6qjZ^R2~g^_nLIhocqjQp8SKvAI&2enlK3(D<))21q1d*6K1y0AT~fBhM#Ys_r$l3(<5PIdol)% z9W;fy=OP8?Lz9@yeLB(R^8IR0EprO`U;VTwItmcq?>sjwi}2#s#_6A+;#pH%Ip%KbW7RX9a&tH{JcfUSQ z&3;rcpfss{I13`U3E7*6qgzof-EFzS5fQ$`iJ~foq8$FUQ8xU>ii`ku-#JZqF{ZafhcA}ZK3p@fTCe*(NjRS;B99X7Tcjewp8KS5{i z+)$$!LC{0EMNa+VkDldL{@(|z<=Zy5ebEox15E_sx!*A%6qK|M09b2&(LrM1cmu9d zpZd{ppQ<%{(dXbF+Zo3~?tX*EJ2i?#hmU0xr7G)Xd}Vj)sz$9Jw#v?XVU+cC9nI%D z0F2<#_{EECEtB#Bd1F%$450D*&(LU7!38}UTvfrY0xjAG*L-Co4EzPknzT2TQ~(>&e=+tB(V|4nn(el2+qTcPZQHi(vu)e9ZQHhOv(CM* z@!ntK)*IExk-cnW#A>V=G3IwfSs6iG8*jK^6H7l(mb8Nuq&8yxEx#&N?q+sPh60k; zG!LzZ=UC;h32hG0Lc%kNNqp}P3od$DF!GJM@(qju%_a=Q2tp-yd5EAAq?xN02doP9 zvG`=@g2}NxMD9(SXPy-=p6$kQ>_yu&?WoYUY}h5nfO$B*^`}KJ{W@e=Jdu-4d+tRV z*B<1oWp4_b=fMBu%#ahv8Kz9w-84-_ z7KXyUtkM>?|P3xI!y`@yfMIm7ToLw(D6H>*XCwps-Jb!C&Z~#JHcX?x{mIB z(LUj5-m>_*csw+EWrnBfigm#%1Ed~`oX!T_6I0}{6g}#qwCbaercQ#7ueY=7-D>0g z{Ldw@ffb}O3q}wHgC+2hIG3-cc|&Y@2;+1~n!4PLtSx?_3F9o;rQczQg)O)%L=xH) z@Hbj2r>$Tm&)}uE{aa@stkau!4j`**7W5#Kne@QF6?-o>&Hx&8iIR~PYm7Sag>g2rky!`pCE5@|3Mkzf8yHTVX#tsqc&`?%d|hrryNtf)pNW$ zau84WHg&HzOfn+wR#x%ZCM3EFvs^eI9hhj^&7mbSe8?#Jtip=yVdJK5ipJM0^X*1$ zqeWzdF?1E&3mCvovk42d$tsfC!_3oED zR7tsa?XcxR+SM-wh`UT)>|r~^9ZjH;*po8M?_MkD5&$_NIDE#PJ?v+qhupp#NN^X{ zJJ&$U$UM`bkhj?l-%ub2EoFFADBdIA-OvUSZ}s{B4mMer&B0QsXzYz4BWDLM#tnJZ z)o95*fjDfZAgPi@Wft4w>g3^U#dD7%GV>sqJja)F!O`W;nyf3WZr&t&D(+tFQAt8v zhr0~RwlVA5HDh2@c~NS`Ay@uXUWwpgsEfVRJrVe+AYf#1rhEVzJYmnkAK>t^Vb7T+ z=vDNQ$CfcsODEp`clIVQKAxg$BjVwL<}5d&3(FL&?CwZfp`wennhdY-vrmR(2P$Zy zW`Es@c>pEa;Be{+jDf%z9p{B7q?`|)_rkgDHO&lkZ~&%g^_?^wm+-8Y(7&)^v||c| zGL?ifi3Ha8pW?8~*ISFVBxZm)?UR7IG0V*A4wE?O`kl>Jy9W@=nbW#kwz;$1JNGS% z27H=Jq3rK#JmsU26E;Q;)=GKG5{8Fa!fjm(vD@#Xi{QWg|6RSq3ogC%Yq#}-5q;V7 zL!*@+B;iYgcU}-fyO|*HraZ?`BB!I8QUfyYxcvo!j|}I#6l?vXb8-ep^89XixL+wm z)wTi+Gs==Q6%b~1JaPYQhS0e)GDJry_TcS2_1>APamq*_Ov~DBrXNj(C$6f#LwTqv zW58)NIIZ*vIgrCDwO9A|#`bS5jCTm&9n*uJ9@tJ)|>9LJjN*$WB|u6iiuwR@4PiF>_F(a0d-Sx;YE|~-V(50L;H*mK5rTr|^L^_44a@rS zjQlkr*1d_*Gujz{Hlky{-1O!V2G?=uyUMcny2Bx36UfuO&8lGiT9w5%?yIgl^8%87 z4bl_dHQ)jIK(s4RTc+8zfIx_Sa*)zEB;=%(Ueqz&nj22j?~El z3Wo%rgUq;OY4jr0c<1^KkITYq3?>}umd1$y?Ed+tfsiSWf)J~+(&hhUTL9gUdYI&iIk4B^qRbQF;!ZXi_nX)t1x#kV}fZ#)kms-vNOtBiY z?5J_);?kjL3BroawLD(lQei>m2qz?AkgV*@`iaoJZEGQl`3!$3%JOx0zuV^9Fv_hp z2;^H-BmT#iXAeL`k6f;Y@UiJ!WUB%q0=VNe6hYC(X5oUY6-v65yp@AybB-qh#oQ77 zhQ-=DtbG@yBIKa|-Y)8JK_K&(QjHZ2vY?hLnXCx0gD!l`JLqhkz|(W5N=8txe0yjK$7epdCewqi~5@JHLONW=Xow?*sP3DfM=|H)yNSU8qp$ zIFr?Xs&E!ufzXI6`1v~AmCKUd+j_K_^|lyLc%oSu4+Rd}_f8@_4G3_GV$K*@2vu|D#Hy%<7Y`WG@l5hK zZZKZ3tg%CTPWOP7W^Uy+E}nyhFK|D2iYlO~klAjY{bC?nVr}lI0%vdbn6aY<1bO9B)GLHfU*P*rlm{T$q(|mdMSSg19CXDdBsy#TNg>7tp);lCOU{4 z$_M!^1Qti~X0o{Z;+C2ohF~Def(pJljST}i6Rg3zEEK8P%oO)*rgV@EfY9Z56Eer^ zfgk}8r=Nc$%5i7W5VVibw1P2(#@SARyBrB&l5HcZ=MI-5e`04890D`9rm5V+RH*Bx|3`#l;MAZ06yp9I}b0 z(*z_c8Y0YIM5|Nc#F2)7y4;;&4zoZ%rp424<5380T2uB!H?f~;GTuWUd0SFo_pyM@ zCr$J#Cxb-1mcjME0gs5I3mS7K-Gg&FRJK8njsifja*dml=EiXQZ?jVa%KeIeM3r8eoUw#|NnzxoTfu3`zbm}8WD8lVt`3bW$D`jrf z{dnRUABA}bVqc3!6H&$?o74-a+PZ!FJ+Qej3qoET8GVUfh&t9QSHNOEhM1fw3M{RK z2zVDLmx_&C*NAqa;16P z8_-b^XpEj0`WzUt&rC1*ZL3layPUXDig6AxJLZ>I8qV_2Z&xy1{1)f_*9cDQ<~ug1 zHByC?4W|kIh>18`Gpq_w1aBOXUY^(e=%zEkhg~+@eT5!Z6~BLm_Va}Mlb_$med+ld zPs$3Ry9b0I_}8Or;z;TA{$B(c30(;%Q8k>BbrV&!qRX}X%eAvcmhIs~FbH9|`bhB@ z5TL@*0z5bfB8_P)N#S4Nue885{O)2awxUV#M@!Pe=g7{GvX;cmy*Z;yUpVIgoyO+w z(hGK$wpVBDd+}1`UiS5jb_e_%>r&IPQ@@4V!8yCQ4i-vl0lt5`tl{3Wy1bnEne(0o;3l*`8B1tmg)mU})_t@Q4>VDcK3YZ8L6nY9-T?z}p17W=_n|L<9 zFT4qu+;5}xOxe$$+}V%`U9#-2xDGGS6#pDWVb2@C{e?Wovp=QzR zu@Ymri4U~2P+yMB^qadsPP-d>V|R1@*eMO#PzUbOZmbI%+@;0|56!ixC)8Eo^CP^U zCJf1Opq0~fYSKwuZgf24wI))R8I%*dOe7F?!)F@}OXj^2hIG1l>Eb3HKQT^lq-CFa zh2}zrrY2A!aZh-$H@ zVw$3UZxcNWzCRDRwyn3yVuf5b|L38e1uwKCR3C%g_8hRoY-yW^R+2r~}Q%d3nmK06nS=Z@p| z#l`yZ`%eK%!q11?H6Q?h1{eUqznlyJ15X!66M6#+dJ9`q6GszUBNKW(R}))fJI8+s z8PiJrwwnwv-QZ(<2s5OBihlh5xLoXKfpj)?#|=sZlTFovDKHW@7rx&V)Q*Yy=HN7c zu^99fVvoFHpI~a}UZlyH$DB8@6_(*nyaBcPqgy(hQP`{5rXZ^o+ftCg;y{DYrjgOg z<$mZms3Jj~EBJwHMAvLz7_$cChVJ)ra3NUrH4E|MxfwLMDVhN>8Jy)x$yi{Ipn{=L zkq|EuUdcgD`OxYvb*feTx53ib2pdf+1fgLs0~&41rkfdiY+_iwkd{))fqbDCQi#QE z!u2@s4tsL$G)H%Y=B2p!vj5GG`W)d32upFb{ib6CR$B#C7<+!3weTD4F0X8z{J6R|d@5{(q(TiqBkLsi}o?f28;{miV@ z^7~*mbfJz_aX;}IA%0h5+~JT9dQKB*~#Tf z$lADjP2&p!zOC6I9qw&E%k2+{{q6g0-T(gtsr;8Hhid_;bQQ{K?Vfj+vErM!j}a+%Vc1rR6O|*c~Yn{ku6-WM2zAc^J|ocSC0C!H~){8 zPCGNxZhwPI@9t}(W?u?Z=qkGx(Pmt?ptg>1^$b+F83^zi!wad=fqQn33 zoH{!i7+Khw{Xa=Ic846Uz3>dbz_a~?FDr;GZ6fdtaRnA5ov`965G3Lom=kT>UWs7HQiOSVd3)@9&%&~C?7MwkhGs6OYbbASwAgfI z*ES8;mkM;7@4D8PWLD5zlJ(p1BS~vPX4hLLJO($sW_EP7FGrP+>c}El`)t;cHhjJ< zmzS(YDz7ujN1fhmCaPMN8>%lA)5!f$T}*6`avRjs$W46Q)Rf&$deADuU0VZAJK`HH z*-cJ0G)yBC0W^m+vitzAtNnweA3fwT-tt19Fwtf%E7E{t_fHxsDU*LPcCD#WK2%ZAR7*U4v)U9n=Kwb-#u0T0(rGV8wSU6T*Grt{)Zar0bM_gtInH*}c9a z7_CnTuIkHT1vZVPG8do&UAqNqz!~Ks@99wg;bNEt}jiY_ufZIcbl$g34JwMcUSv{A4|$J*9GKzW+gdm zYW0dK?_@Ft2C+39oLwChs@(@GN#Qg%tykwlIxuDQdOK8Hpmh8-_lb^C1!v5x0k5`M z3G}pvQ(5JK!3U__9NxdbEPXwA<^0n0O3cvDKYxAw{`h6;=5%KZ)hoQbl29W7n~~hB zr=%nBBbgs!jq!mQmy$Rrfj!NfJzE67lQjb9W##z2p5FdcoiSi#tB_1;SHO~GT3M~! z$qWJ-LO-hpD@q;Gt9KhF5J4)h3K?+y{nHNdLMZr{E+F#5p~O*j5nA0yC3MVRA;p+d zPK5|&JwulkkYyfRa|@kM(7(4D8#w<)$N)fNArOc9Xyk-P0FnrJYM1emKbC)5v?<c$`3FEF)~PCf=F}vZ!WlsVv`XAO0R}20?`$LI%dn=x2vkr zl~DzdjfRk1uO<7yE6KY7C2Jj$?Pn&%a1dQ>*x1z^4kvr@wKU>4K-N@jF*!&vM5+{cC`z7H-}2Mp=L4eBg6QQ>wt;(Hd0YCTungm|IB z#}pRafyVThCGlPvT9%~Ln5A+`YzVPxqv!`(m?wzSdd#3F9w1pu^Ez?nFNW%<^LzuR zJeSQS3Z)DUFwJE;UH}7+M6)RWJM&Ll)3mxY(iyYe2(l}bEkNF|m=M(+d%=e_Dt}Wd zTc8@eh?1IB1HXon{&3C0{rc~hH>+H2?aT~4o!=bY?tACt<@>RVCo7+y+cTKn6#eYa z_vm}(KZy;_^n6Dd4TERWezkBk<*Q<&ymZJOM?u+BFv%I$8VOeH3<~2_L}9oL(wW^y zT(XvPlT|#0B8gj9$cEg-+ZfY(!{3d7l^u8%!jPR4?V!G*QdZc7Y&l*yp&g?-U6^HE zp<++Jj<*?2NKi_Ud{YnwIP@ z>H!$oTX{3xC^0`5;$)v|NsujcX~s(%p(~n3({DOw+}{A$_l(xG%OI-qk#l5p9^zy1 zb<~#F<+lCv zjY1cYDyn`ZJh@tki9J;zoY4S?I1%0e4FI2*EYYK5H>B?3hZOL@dAD^eJ3&*jDf+2# zH;D)1nLWsGMskD!z4lQXz<}b>1t^`DRTa0jS|B2*8OMObc6(2k$6~FoL+z=4}GV(v2R8cs5)>}u(Eenspagzp|=xt4GH zYS@4dwI`Fk&9((>)XNDV+bzM)3*w1ZMxD;AFa_DHZQD#OjRTgXM1gBI#*c{qv!CSi zx}9tK&G(8Mal7V6{bnW<^^*j28k$B3aZsJdcB1}q7 zuM?fhe06IHw?zL?81|nAWI%=?WCy~X)zPLoZO3EM7M>aUVg!m`6$|Nx#qmaWm`fNI z0gK>@h7b`09l)JRx0eT16{eAa)t5Q`)C&dM0-NxGtJMANKAsRh8Y|h3CWKr&sJRHc zg4uBc?726wrzwmEt8zc>f{&VV5*`8<9+W*5I^3V!ZUXPTzE2WwGTNsCG(tVM)#E)7hY_DamO!>WWIKxa&N#Y)Bw|YoDfG^? zm4l;ABch&M`Gz@Gwvj@gB8=;Av=vI3Wvf~MS@7)23?t0Kf`0D-P1g;wJ5GM{NHnAE zRq+=JeWYf_?>Ll*#~y_31t0KJ(LJS8PPT_COeczc-9-fB`9|;&Jhoawh!)vCl!9 zWOk1^1PYRMz?=58swSGyNOA{GW@cib49YB8vLd;1Be5(g32Pc+;X`rk*SSM^s&m<>H-Ce$;|Tz#{?g5E zhp}vWrEN)$7Qg3|*NQfE^SK42*-}#hg}QGBa5U|;XA-RtP1&h^n^+S3e&q3bj{QvS zR*3ws4M4@yEeuP?wGg0ZlLpes7#vp3tSToO^F4UfVA#29tg#aWUAKtyd+N77}>i zYF|`wkLaGl6wVNsDY*=36NJ1CN<&rm0GUao0M~J0c}ce42zdRSwqE=gNNw2ct-Q9; zy^C`%=ewDA;I1C7V9EJS8w7Dj0=MC&qx4l%a{g0tLK zks{-}3t07T@Ld)WS>Ow@y5?ph{I@L~oD9;?2xK=h!j44y%PcHYubUUZO9|y?@{sAm z!-^s%PDa|^bzm7->19C~z>NaD!&?qgficOqiXu;xx}AZk?ZQM!4SkUb3QOGrMqFV> zzN<+Y5Hp75#ga}RLJ?AXjc3loUON-hm;mS_z;2=Q9je; zxt4_fmu`G&&|9dFdY1XN{@1YC9~P)nPwFCHlZ1gQ6>p<0_OuYCa)-2IZ z5oFmZIX(#tyyUreh|jqip(HJMu@Jez+EL{pTO=uK zL&uebjQ;wdQ6|zd`&`yi@2745X0^#^fp8Gi%8gwvnz9EYl8JwuMn14&T1XHLf!U%C z5WUorxkGUkl~leCLsgCHM+>^uwp~?G;R#nkZFb?B-$R4q_qQjel6whst%RDD-QtE! z6SoZ#&2()J4dy-9W*V;Dmg^hfZnh>;HeCU5y6m?{dfx5{qT(=mA&7bz2x(7WtSsK2 z)>Hqy^z{fQ2(AJe^z8$HXC={7xc*z8P}LTA3FhUST$0ZdLd1T2TAp0Do#5{i4k ztVX6cpG`O4{WbCt?M?E}y6Ajpn(tywg;#GSVLaE!!P@zT%*^j9kzUF!zg)lyjVEG& zHFQddl4i9LQr&Ui}rbQSPi?k+kIgB{b9l~4q+97mI~2vWBblMd5Zr->$l5a-F8(ufDQ0wJqW4VL%U zgFPXEWXXsJwtw%K1sCHQuNx<>;|l;PL8Q)MW59r&7qqsL=Kc-A8V6i3MIlAUhWr{n zos}EKeC5h!Vfu(|)_K?%{UgZsns@kecj}%2(lpjyBOJuk0<>MJ35fFbG{v+>G)2Ap{ zzI%$!d}ArOx~V!+iyR{0En0UgM4 zAOH#q*^O!Lor@gm70oaxZ_}lVw!G*00Bf-?DCh8ZHR0|~8 zXG1Ve6OykF4c~e#uW0q?-kn5AzRsH0VZlHDcyRq@UUupp#M?m4bCbq+2HAZqe&pN8 zKLEI#4&C_kLVK0;CyZ#pcHzLK!9rLeLf0H$x@v{9fcrIpZ44;FcCs1%HhfkaA~*d-p8xUJ1n z`FDK^xu0ukz5OA)l6VmPYDgaQ_Hlye-eiY{(g^{Kiq8ab07QOZFEH=v824^m0+r=i z%r8X@x1GPNm6$dO+#8dDAB-*Qa_Y48y&@Vq+}qNb;mFt0oC9tC9MKzUsECr;dpHdr zi>R}zIXl}EU|bX>RN;qy>=y=2QB>G{mbWw#e=%+po-dIpq6Y3QJen`0p;kI+){%OH zr-WJV2{X}`c?HD5b=^aaIq43Acip0uKUJ^WRWsm_q*iPEwpppb=_5Bpo&>~m* z^HnJ{XN0!-di?tWWsUNUKK-RASR^Mc{PKn*Hyx38#wDf_6k9AwewnMjeH z;=uVPi0AKpT#1Yz+7PkFowRm&$)Ff+rylWrXg~}c+YU#V+$$l7glhg`rNDs@!&X3| zj=&97N}m_?(~iAK4zI-;M-Wtl$mC_8Rf>Smyy6ZvpO4XwmKhtx7MFjwwnG#ddLNS1 z0hiNE%LMcC357~ykNVc)DLL8}7bpjb`j5yGXvHc>dHG}wtB}*isW`X}hd?}s{wBWe zb}P-1Hy|#wdCokeSVBU4djw%lID?B`;rH>T-}{T4PC#daZXbt8Z{Z?6rbd{}{R$P_ zjsIZDxXD$FXXzIs+5NooOSXqprx-RXJ~b05u}@z%ngCYkO_CYoJf(fEINmFsW=>!# z$Et16=USr&@&+F1qvc-<$K7ns2DoLmz_MYaZc2;Ja|{lVFVIubMfXdGWt!-h;wF4k z4{>DacXJs8>6=L3;+e<@|EF#_xnof{B6xLHwd}xifoIad4LkW-SAKMEd0!wygJO|Y z>v+KK=~G*<o#w8W(?b?m3%()X=BW3ybc0dg znXcD&gl{YZ+45U;IK!f<_2=Qm(A${cmIQONqxhGm`CR_ItCxyVZ5o%AdX_KA5^S8*EMST6UU(o-=vW6%5&q4o?I1C5?0M-A@diCt=O&tH*9q&Z1 zr)Obn;jE|kUx-|(UlN!Rp&R`JKB&9t;6@`DuP6)xO{6=y!8mb!+nfzKLAleQWp2Nsqf`tP{=-U~iEhHo zzAELJ02~chQ!d4WxNj0pvk)LQ?OdQ8LJGXyr!!n_n9yD;UeOKX$O5+`e9D-R2%7Rh z@FzmE1WP(H1gj;CXrSaeE=E?*)L#1|>^VrM9799+I)hGOP>M_6dP(i{_y&cR;UKR` zoQY;%Dol4WM1=O8+VhWl6}eGukgM;_c&u1*G1@~QObH`*oDD{M?9O+fW?`KieUk8X zF4&r)ZShZt?`jIg!NgbQ`&-Ffc9H%hDky!p1(B#&A$mYEeJ;}GUO+-z zYSbBaE}n$30Vjx=sxhP&_Wl}3KNjLgt8?Efq!$i=V;J_-PUNFD$H?f*q7 z|KGCyH*vqU+vG^ug?{oQ;NhrZwr8Y=R3k{@}a+Zdz@f4wm zbZhux*ZcY=9+7ayVY_I{lnj=pzHoSW_$l+C@Euycl0G)cC>0W6hMAkBctd~a-3=ex zj@7QEGD52N(4{<^>obUy9`WUdJi>`KHO=>X6fb4QQ0BPd7gmG=Sb$ik-Cx^E zePomsy|(T-eE$23jZXYx1ve`ut@}un=hVJ+4`6jyUJQN+*3oir5w#iTJBU@`w~v3r{Oq-{`rL29obn6{yBQ<+OELFO0O zo>L<-I;S|Koz`uiWIeP7&3orud4HI=Y3qdn7dR>g!OI>9BZXyY(h&7?wok{g{pe~QiQci$leA& zc^oCBVz;sIzMMb3g|Ble)fnPQuXK`41f`Ni-kz`ol$1;Vgnee_+;4glr`D?BG}&Z% zyo*IE_@9|_&_oLy6?S4#yMdrGY7U6>%WZg-u71J|^&#dHkCx>H#MXCk`+$1+baeh< z>`dUh@7Jwr><$j)EMEOCb>F>jC$>$-9ea!zQGuocoj6Dd=A>$a0RgyCYkYp2M*8@7 zqj`i0w;>_?TH+8gM2|?AQkLhT@W7)E@8aI#{3d?|=;6yqfiTvAR6(FP?uQZ(sGgw)9ZHH19G4E{XfaLDDjnanDBA(5%Ur1J1Z% zGJ!_{rtlpJDg)DgFF*BQoGOWct%Gjm<9i-aED$VP94F=wrag=R#$@&K1xO=Yyxw+j z5n#^-oihX$pzY0j;EW^_ghqmi7_d&Qw%_@IZ&z8|D2T`Q`$oCUu_R@(^83_cs!>>y zOq6bET^{W+yI0+#+t>}Fs@djZ*@B>TRYh*FuMjYr;?9llZm!QUn}Cbc@=T+|4=fMb z48+saH7)h(T9;XM9u|bvqC{o{ShFNXlY_l|;efVB&jrXB8UFC@tY$;#xLLTIP<+j%fEc>qY z-{oGFoz%pYVNLX=8o+B?y7u_Sa`DwXC ziyWbeD3IHanDr-BgCgEhzm3TG)WNFeAPkEf9cgZV$@FN*so{9it@$H)(wE3I7rwxq zt7O)vo0y)Ykv9y*{`4==a!z7ARdcj5a2H&&rliuVkM?lWg0j~A#tElD0HBG1TVAOG z?QW0VJZZb(Ltzm7oy-TTxk7&g11EM$8QWE;*9_njI5$#z@0!ed(U?%=;IY9sR*nA} z=o`n9GdZ1TL1 z#8&D|@HI1)2;5JAm963KtPu}pmBR9qnWaCLR625@EsEF`Y)R1(-qitg%<$#s>?sPj zi#rrjHzi=_4AJLpZvFN5E&vq?$9y}ah-z3W4dx{3^js2%FMD>_stPwWnkm8o5Ekl8 zdG+xO6_|#;YP;MQjqxd}U~V}WE;+R3(cSti!$V)q+lM%E>9NzSLvdb}iLlV+s=b88IM`%b!>2fFiab>5`j4LUMh_WxuGo|P1Zto6$%IMj^&WV zfS7SOIQ>Qg_tCRIw1!4W5tR%9zJ_R~pX-!C+CvC6Z_n8yUWjIz{xV?3-D8k*{90|; z#iI1@PhY`;ad{m|tTt9a^iAbU~3;aZiVS54qBs5%t`be^>OWi zcDK_U%RVT#MQypy8$$i>_^}LJN_Kwx2*xy6M;a13;eud|J=MC`@E4a7Cixafa(@j?-Kvcsv23d zxQyAo>jm|FnF*Dna@o#+uT0QY-VWre zB|%k<2-3Y^a0t6kG94({9EVgw=ktLqCI)|7+4pqRL?hIeI;o0}1{QC$YLJu5nt3l^ zxdm2*JSU*aoN4pDZ3~gFpa&Hc2B9%s71GIfSkoyYgqcbZ*#V1 zY?4mJt{E?9l(~Fc(Ck1FMq|*sRN+h5vXrpWj-N0;wA8X~+q8#Z>$)pPB}$;0%UFBie@BIijzw)YJ~Wl z^R_O5PqbYI8*!r4lV{*{j64So_%7j+9dQ_ovSrUf2+yoY5KveUe*y;;zs!g(jQZ40 z3vr7#g48UamRl1#dk;1~*LE5RN{^WfSW+C;yw-Toy8 zHmnZo6X@@vXjVu^iV0RhuQm^gu5tFVlabKPOOzH$-5r#8kp3NwZu z0`q8s>+(R-2K2qZ@Yd@$@ZmYEBW9v=W2-%qF2ph$Mdm*V{yB)lt%e%30?{eVy6#Ni zSk+?d<$k@u`cnSEGm5|q0=?t6%jLrjK(>i~5eyck{Ln=KjUgV?CiM^-aiG$4hN*=` zq0Sl40A;fe>5@o<}U7Ecf)X3^-|xNS3GxT>IFOV)pg z#8_$_neT)7FXPLybVl0D{oAH3fev1_%Wpz3EKhsUC}|lvz!OSWQZ1=OVh}m#=%^(# z2>TZ-&8rHstq+KU+{AYC-kozXFHcZgVZYp{ZAYC-RC(sf??rQ9#%?FQ>FDOS1ta2V zs^UA^1Ot)X&1qjlqxuItk7ZqLHSkzdG%iqi{Te)GhkN=%S_Pe6J@IKb-F>bo;741p zA6IFG+0jN^`xdd}#~{yCCTsMgZ!44rF#?&&*mGwc(q~KPyVBtU39GPAl4-3?voHX5S=qvZb;Q&f<->2Md!&oyXgP0Dav&?@S?*XJthH62 z9vy1JBmUXIdvhw1oGkSrYY>&j)_z?T?zN#|(EC=q>vLG*6uhdog$LVFtkd<%pfiFX zs0K~~LWiwKyX*>*wxjxLY&W?37@oXeNt|ZAyS&f-n_|_+7kkU`YF*3Mau))}b@;5M zzo*bF*^RPL;n8F;_QpkuTzd4AN}8i~`mlw+#{GCj@YvjOuU02gPbdIyhJHOtJ)l%gKL`yJt1V zf6w{_**hY_13RZZ4Grj}Bx}CE4H|F>0vK@FDbqLM52{g98j1z*(*ocNeL1(BrgJ%U zX$itdKs$^c574k|58wQ;QS0?hYu$e){H4XeO6zuq6AH+tl>W^* zLiro2*8Ki!JeqhBV`(>Pv_K(aJMey$!x9meX|H>I3(2otVWl@}3p0xOB@PZ-R(co2LjXhDBID=__goaz!Io~iII_nn6c?=VBNtnJo2 zfkb9kxeYR^3NMTbaG!Nma67NuYrUmvc}hCUixj-@@=%;MdLLVn<}M1W0B%DeD2c&M z4XOq%f-SX*ISGS}XfE*2+1GL;I{LQ0l{u8~T7x=x&c~C8`J9l=Snn7|akLrkmQ$E{ zTzT#D5^=xXguE$zBDJn-yyCz_XujRFGoSRLtB&lDgBH*YG^oRfdTsr*g zMv>veDi-TB&i-&+VQwK9Y*O>i{uyiq*fw_GZPlz*P6Eco2G7bLVgnERK))Ek22Nbh z+H!@T(nfWjL{wV!jq@`0f63s=U=AA(Y0)Z-th(Z8Foxacd8^y{9o{0Fe#x>fa`%S@ zAv>f)aD-YM;ZEYjN;*=(-yrh%nag6%&{%|Iw0z+YrGcc)xqJQvj%Vb zAGqAKuF}Pj^_@O@<#mIba)J2!B<_>WugGSd`5tA9f4ye-TTfH4W3+u7Mb}EbeI`~* zy`7&a@pbe_j-BWpBuKnog!MlkgRckuGkNvgUpe`GnqFRgA?i%0y}BzKk74G}a^414 zvFlEa*iP4t~fl6HPa7q0J}0ou2J7Rr z^ioykIkBG|s3D%k2wQ51-IWggcF(a2hc)?6;u1*EqQ!lz^AR>M?qJR-BHVRWS6F8> z(psz`kr33W^Y1T_2>1aZm}ay;qQePOG%SPh(D-G#%Wd79JD>R@F;{dRV ze=r(XYjx+fhkQkI91b zG|^*>GrRPt;}A2)&Sx$?M`jCva5tZ)QMwr)92t_sb)DCv!+$v3_Hv;&0ayNX zN7T87@(0@T`Rs+ad`9iGu>t`ZjV3Y0LR>4s5y)Ss>ZvTZ_-GIk% z;@X(tT#sdWt>#5#3f?EpHKZ!7&9CqiIeCyz%c_}|Pm7pZ?)CigDz#0O8q`l_#dSe3 z_wW94kK;MC3SCGg#D`%Cxn}GvQ!Ct+;UA9GJ=&G@s~3~azTnt^KJBV{HOr}1KF7zJ zuOFlNxZ^(aDV-lSJS%pG&ztVwY`S_)%jh=GB3j?t(*yrr*i4f>&Xu$8A6c~y&z!l3 zL&#I_If~~izrg=V8gY}_t{whC;}#$Q0E+($(r9nsY-IiqGG;4q+ifx+?0}x}dDs0V z6Dr*1|4Sqg05rWq3xSfsrBy|VH^|MY;_DNuy3KhO{raZcI(!PRylL$)>p{8CL1p_z zix)&s<1K%gIyG#u=dAYX3nC|B-j@YNH5Y&P_I=vyqw$V$Y}(kKE8+ol8%#{fgcS75 zgCI(UT4B@U5cLI?1Fd_yCs$BI0jJI1yPZTl4p(TIqO;nb*qK@6bjy_0(RDUfj_o+i z{A4w#M@bK~aU$;?NXJ=3JYX!lTotBz)8oeY@_n=5jzl~A7FcSgA6YvHfF1bSJ65T` zk7-9o`Op>HKMHztCFuMqEJk1YoRf+Gl==BtYSUP5!?o*{Hptt-P30ZH!sm0e-S#=X&t_T+R2JoBidofW&?bfF@8MW zV7OB5cAi-6HJjobH}Acab}^a!l{RoG9oUZ{xwd&JsA>26O6d2eb^3qHiaptZdE@(6 zHdbH&0HXi7Yz7u~|H1ebWu*R#@zY=VVQff2yUyx*#t|vj5nRZS{5RuI&`4+_ZhDh=OocG5`(Xt zbgVj%8L@5&BE$P(CF)0XU!LT$P&4E6-e8V{S*AW4bjF|VejR817dBnjs3Tz4JcJGB zuWlxm$p}yiLqe+f39j zbZfkgsM&9}Qz;LS{4n>1EK^U$pYQ!3F@_)8*mzg61?`7p$w2~~0V_Po{2{@`cIgn~ zjL4zCiyWbW;sL@T4_L&z48P+-(kP;Fq==Gp)WNIhjTdWwU&EfkeF_7}L1n0hdoe8I z1kKeUAnS|sU!N?Dk~I&Bf=S85L*r6BZZJ69*@GvwYlRKRb=8^vt!hM&N-5VFa0b&* z8~+uQEOd>bcAb`>mHMZ!da(Il?7dTvZNav#TefXi&9XU*vuxY8ZQHhO+qP}nHOoG= z*52!E#JxMt+r1CxC3_p$M}O#%F(Pxc_P6hkMt~N2qJetnCyv3^vDo^0j{X<`ho)dH zq@41zAz#EI8eH_G)j8uT>QteVN$>m2r^GBm`!<*HE#vyo&1Nk|lH29(TKM8PTrsxh1I3pb8}FAi^`7MA!UWfcKe zH(yU^jGhB|2?R(sp9@<1Q?11fVy-f^MTO0ugl3veRJt4p0{SCG9?oGhv;YuoP{&d* zteQ)P`^k0AwJ{;qB2c}i)3I>X5)?q5^_|VtT={YBPDxFB51n|QJNXJ?jMBR>0Zk4s zDLLh(e@)YsuaR%9oC7xPZ&Vj-fo5_HMsanQjmP`xy}P#_=Hg<~Wuhq5YapsUyVSY@ic|;zglq3N z#5kk@p3w7Psakk}Fj2(Dad`zSik0d-L#lkuIN}AcJstzWHBTTt9<-C#3TbU@hw$o)46gmzZRstv4 z_;Gf~JAX}j&7?xt<3z+YQ9JXm*W6~CMPvJe{hHW0{^H8)4<2($6Us zXP?|`yK@GfnbHcA_@F^YzDD!wXXBZL4=f!tGv0_eQnhxvK9plEK(I)&$~5z?mUdHc z=xfJofeM|7?o7w4)J0(2k^l|`3`53ju#V;`uIy#l#nUyfqQ@r@O6QFo-Bua&Jc%>w zD693iEE_E-loO5s{6nS-;10UOzoQQIcOe51DubdfFiI03 zcss+NFNQl{*m#WoX}d{0?@^XXyjnw5FVeebcMP3gPW!>f997^MK$=(dG^tm8nzx|6 znzPG7YGk3BYLm;8JEg==VnP=M9ZB+7Tvrrb>^#~aJndQ?P}40{ku4>Iey&@92*Xc*FDucU^$)fd|= zP+^}WlRZ>vB3M=biY-S6Q%8$M=TfmCf)s(yiVIPwA`Zt){p|E~7?hB(u)}w7AsT7c z4{;d*jHZ78PfA$gZ^&~J&y;kjh;n(RSrzS#VP7_Jajt*Wz*n0hxw|*L}uNj zxrO>zZC1Eod5jy~q)iwFo|RwiGkAsZF;A!MdK`OI>t)P^6-yEXR651X6bw~1Q28sw z*qeAW!)#_Vq;Pe}5}U?>q4B2Jc{Xl`12^oH_7NL?|(gpnib$h z1%d(q=urK?9z*|mo-weoHa0VH`Zo>3KlW7>D~nBGgfF~NAB;r!HfWdnj7C{FP1_nW z1~JV8c0VM4RS5@|jRfbVtt2bb!k(^%ij;&yr|QI6Rsu|zlC&%nWcziDZR~3)SrlLuSp%rZ41XrjUx5~m~DuEj%T2v;@aD?aul+1XrAgm=8vOMmO z@DXxmGTBfN)Ku91i-n0}CkPva4gBL}0CeeJDt}!fVaX|AD+~P_=LtDJ$0=vW+d%Z9 zfW{E{+bB8Vq-l$7wbP?elGg9VrOM9_gTq+NM^zyis4}lqDUI}MYzL}2`WWMSVM|u4 z5#-CpdXnzxnx9&unug$doR9H&R4LN@C>+`~cQHvfdh5tdY+pBC#Tq^B>OI}upFF{A zK#dBPOz@$D2!;5+QOL+)Ovsp{>oQML?fs_GH07T-&e4cq3M>@UWwDc7 zexch)`*1g4CFW)OM1;WmW{bq87%oy1?4@fJxhg`4yEE2MPeRox*N<+XxBq?$iX|$R zKy2|_!%wk~$j46qj8G_U>auP~RLjmkiqkdOLbr7970pde zQy}bTu?A3pNS8|k+~}%;x#qHDK%1t{6}3Ox_YfczCk4eOa)LmA5$Q`hs9hkN))P^~ zUSewK2n4;X-+G&XqC|8@)u=&D6PB{_18KH*1jXqu0~5nZsLrLlPpo84VoSbW2JX6@ zbvpK9YjySE(`xyCaG>n8z%j)ASm9EzV|z$gcIzDaD@@tGmB}{L>?0tRyiY3*=9}@1H@QzIc2(ms)M? zMLF$`ewM!Df&U9g$2kC=$@QokeUrXtw5R-I+ZV*)24xZ;5PT&&wSRtO@!db6D zdN#BCvY?gtZPNrlY`t(j4+`>N!$4jXd9?|YG}d2fkDvpt@XcJ>UrJMr;SqS;t=7Rq zhOx3bCRuQ80mZWUpG3Ef-S=7W+#7uiQlMooA}cxM;^pzEJ={>0WxQ*Efjx}+0R=-v+qOW9?fWW-Yd0MhxDta#rl}=L@y(@m}fZDj=cB}~U z!d802y*;eY)y&YW{PF5qSSy$-Bof9SEjB*(eRDbNO9VTi<+Ks=wj6R|2t_B_4IZvKakYFrf+-44Pz^w5p47!I zyd@A&JsQLJm;0DgXKIn)lU+Nj?*kuBtD}FN(3^KOSIlcJ!yM;vSjvWo~{PeHEYe8b!OgQKh-%4Hk(rycDrRtx<6Xw4M|1o8^ z^#-<5)$`w)gH<$_N)~=vjvqk)0SNwwzefK`BwTS@IAF8I?`R!;`|6uplyTc18aAl3 zR2rD$s?|Bw>8Dg}E+t8`U`_k(R|Ydpa*;5VUE1_q4;#>9$mUzhIa|_GL}UVDMG5!J zngZz5-J#`-#B}R}51DHfqerB}9&kHn4jaj#-eYB_ROCmVH;w{RKQl(TY2O91xb;gY z)3I~%{FaL;8*P@VURFzAK~64IVxD+uqz%7g9A7bTovi2@i2)1f`=hWl#Q2%i0G;j7 z3#=X;5!e7qSJyNW<4s;)*=j7LP_L8D++BHITDjIqj_HF=qk>sOW+}H)VP4;ZuO-}9 zzaHaV6+iL0)UJ*4>Rr$83ZTUus+17edmwU#1R>ktqbyYIV>mPj$7|Jbi;6CU*?bl39&ILrN%<`onAk%>8(ZpYW(6S$% zqJ~IH>|C#H_wwwcgC7h|2M6!X^>+3e%3ZbW<{8-J8;uorx&mg3f_^(gsbyDKZvNHu z@foaALA1h-#j+p&i>qdVyn=c9NQXSU{T>6|ee4ManI$v%S(#ewvQ&jr{wnRYIh}S*NQ(>o5*LwxIZ&_bMOIH_7k~6NOx5w;D zK?L&1l-`KhyHfqUmvV{Fojn-SJg6Qi+V6|2iX1qH!(IEq{y>$^Ks&-?)W`nR-!7 zs=CXCYDmMgWAxS@W!?9+hdsdZZ{%o2S@8Pkr=zHK)DHnqJ$+W3eRa~?e)verS%c#1?0Y6z&KD>RtAlCoRP@k3l zlM^YMk=?eZI8_-w;V9%ZJan0Z!y@v+B>Fosz#Tx23%8#yh)##w$NL2=TMQIm^Y)F@ z^XP~k=H7H{Aa?lvj`+_>;0)%u(bz)#nrn6?6n|i?MTiMe;-{HTLiB1ci)ugv;`@XS zZB4=7d?H7`oYfajNaJ0Ub->>GA+Q{dBQx9PIMg|w$T>0-&}arUB9BlVZT=j!!9o&f zZ$tFlbcZdsr~8Z)Ku*AK-LbxEvRo-T4pY{rob^`o;PyDpo%)Z(c z%|^Myhhk`_KvbmIRr|1G80c7Sl4O0k?A?O+nYg-YbhA!bc7B#x0;fR3s-P3!C`n~G zOqwV}kBJGYTcg$d(sKYuwigt7EI(?gD#zd!;9;CIX9Ub}W+H?pv{0rpLP{Y&ab}#_ zg77;Ok3J&6O+8m3m%fp(Oh)M%HeH+j7rGWCNE}$S`jU)uh#}-w7Puzwv6U4eNXrIs zfigF;LHtqZzko=R;L+z=QT8i&!PWGiKoaYvwog}}y`ReB_pp0UR;k3&$XaO>#)JO>e{lr-bLI3|4- z#%$`s~F_u-sX_=5Tq3uER10zq53 zV(vr`Tcdu*+A4r*K#xvu%MO%rp*YK_`x$;uoP~pOpP1{PBHbyS$`koDP{~)NmoF`r zSB0Y-JE&aLeIDG7{$JfbUcJS>F+vH+&0UliFhq z64u8H;)+#;>W-5_B8b9h6e|V!BZys#FmT#Dp1AeG<>SNw>?1846p^4WiQdjOw{FdW;BAjnXuLWbeBCYK*I26{pF)svq%HKaVIhI-d$pO) zd;Rnz==x*_*68}PYm?1!Bc+M5kVm_hFzi_=rfhb93UbN45_8fvU3TKu38%spQ|}I| zz-T5mwgmDtcH2d-12d?PHZ@OOHTGxsUXkCq;Hec$P#QgW$4s(E|~^+6cfdFtefH z73y)_&iE$NoK0$$dMjf0!!OM=1E^g-tD5xmqYo_as`=LSx!gyQ0T$!lKg_rw6llnm zP{2PJ`73OephCUKh)&uFNf@G8GRirkSeFd#us%yW78Q)fWtO+UL|uGa%h-@&g`~qc zz9?dKgR{V^8I`ThN$B@e;)<#043ugC0lJ}zzQAf^tn}>Vae=3~DLA$uZsLL7+WNX~ zTZF(v{NYNi@d;)Wp~5SPL@E0=u0R~Lq_V3rP^|O!Se3tO;zFnffv_@57@}z!;SWL> zUNu?|#zMV5@h0amoqy@*vN3RhZNjCV@EhbeseBL?uYftxKY_F!NoCrl##Z=a)B=NEH$S`827C>#YiWlG?T51D&ruCR#l?j_z~~NvD{We zVR_yjt+tygqBL9TBVV=CSLw$w*MWE@3Ge<=w&1f1;~}>79!u7}(`Bq>aq@U@7-~HP znY3?H+B^p@H;a-0z4X@>=n&=?1nFnlbyDt!CTs#kA)W)JI1ddnL}6+-i})JW4qIlb zMQ8=FUtS2+eK16rPyIr{EPzy_TwmElhSpd^U&VMpLhv&DE0M{9B1MX-UXF>E!Pcfp zzOKCqA$C6SWMB`}lzk@M`WtUJ0_d0+*_qj7DSV{y@HgX&)ae{iP6>LH_ODo=+$Cnc z5JLXkKO3K{>{o^9x+&9=qSZ^g;)Q39u};D)=!>*XaVsETu<2=j)H2~Um%KOa3cXDiXd~re z==^Ylg`iWR>D!bGR*A)BFu4N4F`=QkeLkuvQpu&dLCt>sxO{%H5Y$OpKc#rq)Se%l ztNkR%pSNWHQ0PSW;#4&xYSw<-L!1~v=5i7zICCnMctEMBQq z*gp!%h_n`DV&zC$r&Fp2R2G&{27Zb zw<`}oHv-%xX&XI;n8li{6kR^X$!%pdz=Ii0G3;jpnd0MSjFa{)`&%e)k+z<7LEz&p z{WxsZb?>nC1r*6dcOz^srRMl!Mg5n~40l>ptDohKUeE(EcvxR-sNuDAW>bG^+ct*R z^sYPT9{r$$STIk%OM2{;%Rm83r$E{#*wZ3uy7TO5zW=qWDf6uIyq}L6 zB{FDns2xS#N`Rt@$8paDmwUf-WlRpU%xLw_MbSE+L@q3=t$0@#N*$EL-=&#zG;-h?c1~rk-BNm^Dr8v>03si{V@SeODfqRz(Z$}Aw>9gBW3Ub=kl*N3Q7iWNczy)&Ha#~^RD1^JDB$A>NkcTVU@r<VWf`(0EwT3&A3OTk}Kst6!C`IFg+QYT&LN_6Eq zp{35vre=S8NCExM!k4acR3KlNO>!~`EchpNMRB&Cfv!N`pbGE> z88tL6{$$uTQMwZEW0P&TrGw%jpaPcY!lY%BV7SS1IE`yA^X7C?1KEbuLO}f zK>UkSs}~Vg6d65$3gk!~>2!B$lu#;TENz-%%erjJtMs%F55)5t(NpgSob!aSp>YbX z#o6+ntBuGQ6iOV^VMZ#EqHxB#Wx0oWieb51?cF9bCJSzKO99&I=hdF`rsO<$F0LjQr#iL zXUpB!Dh2fn#(rA$GLmd3ggJ*L*UXb6T~dRmM> zd1TjbqTG7mlVaTHAk#FA47Y<+SdYG)*9=EEdZ$Tt!N-BTLz#75@NUtkUAsJY;U>0x zq-&SDndn*r`mG%TZsKu1=-2w5lkhAN-?9|~IRzRInD?yOPbN{X3EDb5_u!>5uE!3$ zNMWDJYbOTx-p6sgLl^ftqDP|thVU}`wNeFhN)mM&pxsR`gx)ZEE7RJA7;{el+GfmK zQR_@t+=ri`ahCfY{?ISamF}wxh%E)+v>QP@kFZAgOy1?_n|+j` zwqYk7sbaC7Qwm(Z`m^!O^$o@=octHO@|uuXDs+gI`gM%2o?R?B@d2eFR=1gWntyYo zfd<@r?tl=T`}dx+9asQ{NNV4>5r8G0k@Z5D3$dOHQRGtrNq#Za3UU9`qVD`|nCocg zSbaCGgHUPNRdNf?dh>+Jj)2^g`Wfb>Er8CRjzyI zb<_OFqPR$nw24Kmzmx`Hr}-OjS#b+~wHPz+rDWEm{Gz{ho@Y9gkVG63QJpmp+QqGb z8{d{H9x?awh-l0a$J|XxP@pvdeAyA75R-BU2j&{54VletoeLacRFK3rvt)$!@nV|jN567S7G$!&A7vH zh5W?38JxQhzzrcz#Ws7`|pw=Oi3C)O$)N&y4+Z@&a0)>%UF?r|(^R)yYc$ zcf+J0;^{wWxcHrH{L+!J?ow-}`M5e9meAku_sQ9`ovD2LSn_wV)S|8!|GYjGCjdGT zxF4kal+RQP3g8n_X<8b1Dy2Gc>Kupy*EQ3{LaD3vGEH_hRc0_pa0sdDEhW`5auI-o z^G3zdXUJlbjS@B0EP-%Ff4p*{N2X~YAt)Io&>m+FybE&;tGaY51*61Jf*P;sbZF#^ zF3nd0@le402!)QW#kA|04I%WP3z zgoM^yH$^6n+@rQ4nC{F z#_D!pQmrF;qErU)|FQ-EywN0x+y&=j6d*k7d|!ZFA>RktX1^!%*j`aM4of2=c}TH?G%-!Cg%=-$=TMn{ zaU6e&ctYW^pc`|zc-wtkXt5bc_z^68etZnErYt&PA7R#6-k8doh`b+JUsM+i|C%*3 zLZtn58Lrtnf#?aCk}50n2c>)uFZwe{41A$vv^~T`zYEbV*JFQP#*6_)vJPmT#-|)A zD=M^|m10PPuR&wgYGRI)!G}NR&CNSlC(j--F+}&)qef%kABjQsn*5|!ZfqG~v}Cq0 z#k(mZ!~z1d6VC&6P^A+vGR$zFWp43(HQIWOdp5u(HmQ z?e^IQ`JFaOvn^taTYZ)*yW%1m$#j`1d}WS<%BL~}NW@miNObF21tG?ZCdZNDak>U= zs*fR^gCaujic)RS2DD~y?q{4LzjVxmC}ibI$pY%nByg!TSnw>kvwq@ZPadMR-j8MR%v zBhVJJku!!xi)MP?AC9T*WTdcjO!^VTf`#Q%S4VrR3GROwGANApf$E?Y%_i9?j~0EG zhtjoqIhi*?nH{q-BV@MM;++LQUdVA0XP(<6Dmgeau3t z{}F9PxCc+`^FGdc+{)4{P zN=zYw&^HWEqu@qx+qtSem%3V1zM+>g%U9OXva^Wc_{0ie$A0d z8`KU_4_SxiWu-=gLXJ(JEJ0+npA}u~(xA8d4j#{eeCU^iLV!jHB2{KkV!kId@xj5L z40P2FNyw;4$0SC+n2z6HG%qEh%AQcqa!-A*AMTJ2s%@)Of} zl^30<3{!fVKi*UX3A##k9|A@G*kQhqfU7dG(akAhhza;zULsPS*RvzUmCpJ1lb!n*VxErIa05et_&Xif3WR#vBL5SVCQ0yOc2 zVXZqkCT-b^!I0O6sI&d*mytX8CtzfoKlchNdRQlPGLCAd)?b^{3L%<1ngc+TuLVVh zE?}p+u+#D4Q$=BZmtqIGEsz134*_2H#IBL*OhtfF} z^U;g+^4jCu5zgX5;t_yjA~#vA(+4d)*GDc}`FomxmsU>55|^a9irtRo0zv@9nyI*h zMB52{*b>xxGO4)>_=**;{Eg;TOLwdG37E3+U+)iiN)~!@I2= zoaxQE1xMyN<n`6-7sQxaL?9?S!lk~Px2uw7uM`eCh}dlB`$0_)!a3>IBeu*Jz7gP zDvujVpUz6p&PxTP^maBg<@aS42jva9J6-24HE&xL-p}R#DV$ln>rnZ;R_gIsy3uCg z`MH^feXhLWEpYLxJC8+6{dwIw=ZT_x`yg5ws8oS0;90_#IWV*yn-eq1Je;)Jls|2# z7aje#4Q5w@%~9XJ`7q^vs*7m+raRe@0)-c45h~IxM*@$@{E4JD9!CQHvDv5GbE7v& zO23WyqIR6wGBnp@3ml#1_hzm%*2<=E1jGo~%_r``c8|cCrbJ zvdJK=MiJ6}p=zMRc0}{xDf4A8gNa!NXXk%+sREq2mVs zr+Oafz=rg#RL&-^9iI2iaV5K}}5=?;m9Iu`0XbTa=clx=D!wg;r%K_gLTvxGUsv=GY#I z==D5bW$4CTs=zB_-av(yFm}9;2JkWuNrNe3d-!Dx_@KI6qTuT@#gTluOg?fsV#qv7 zHy0w?F9X1iX%%6SRjWWu>@?H`(%+?O;F(Qc*4CAqO!YBujuqA#o}W@hTV6`sk`G1F-htz6x=UbgI71rMA zIrS?mjF_@03~&L@n=Taz;-TQX>ga=xr8UO`E_igkg_Pkz8WbcxH_Z`d^)9?CXv8bf zePzFt)a`94bru4fpnor{-rm`~ertdHH)QvJ#<D&xh)I<%w&HC5>E?Pox6QSE8sVt`J4p-SQd|+0)1?pOlfSHKANS98PXU zuW1mbN1Qk7GqTYOm3@)MhbM_ES>}l+Bf@ZnRG>2kT-4Kw@AKS-<4KW+i!HJJ6u63K5`qkCaJWdRV`+oZJ~c44VBqf z&uBYBC_IRbM`g_b@(-c&*3|i`s?T}bQ>^#{3lSHAv zGhP@DAO}Lda(kuZ=Xt0$IK3Q{>+?M}5&D@r@EKZWA!i(3B9o(f`LW|fp}!j+I%GvO zX?sPM!Q<7x>yRlnJ5hkOnyA9aknb*+TpoG)3a_NpiP-KN*WUyGtf)n{|C5<47Ld^{ zKj#E>Z`@m>Q0?OnpFU_&qIfyS5Jc~UXI`whPC%tI?$^G7P0>S_2QvPU=K!Kv~R3w8I&Jvjr808)!9VdRzCOjatjR2u8M9sOahPdi*OC-3<7f zSz-=eG<(bk+9sD0_3skxG2KS0}!zB1B4K4%`CkkOc62_g=$ zvO`?{&Emr&PcDt@IBE~d1|goWwP4Q*y{$9NUlg2#BXst<^HwdUwe7Obq}Mr}7~-e= zzAYbne+L`)$Z>#ZxK42xJU(D!0fhH^!i+CkeV=vCTqBHhq$HzVrYOPJ&bgm*EPsi^ zIJBdvOpfmxgpcZqoKqg=J5WvpFd3c0tWM|kO{9~zT6sId8BZR-k>I022)E{mE)nAI z{s?+Btr;iz@&3p)6^BjdY@W1Fh$lc>dN}&|Eeg>+nCi-uOzCMd+Y|N$SKw<-8~1CR z>sPlO&PLEp6QsF)1Jj0AnFXe>ZqcskAald-`{Gw(lJkvCbE6cvybV zOf7N?u#KeQz7DGwq zPi>1Q5|eJnw#lpM3i=Tmz-_ENCGb61Jm5CBTIDJ+P&NB%+-;~8RSW(gLU4ou8XH+T z3tSfic5+pwM|+rV|8!I22p3THPQ>C6!jC%QI}ddJAVR8CM>Y44$SiBUC?V>&Gp`&z zKo)7~XX^g^#Trtx0`Y`2k87SqzY-)YhKSpyf@X>V57NZu|NQOk>v=d;*hkUnE_`e!3ykvMkWR{EY8c z!q{{EJj^}E@sUF@jG=|V3L`4TANGhC4H!H~$(0~6diD-KhRgI6c}0t2w95TA@eH6C zsy$z^O=bF^G`1Q;xG(>BR3-NZ4*23<-JfddyA$QUlbI@9#wL6;7`O68y67stkqvBg z+u3ymE5BlcOfXNQ)aE)|boSJ{|0=&<;|4qwBVD0{QyQei)}6q__wobsVt+^E03XnA zMi->T(&q+>N$Ce}01U({Ur0}NrRJF=7M1C;l)^Y-?;P|Rr-D0^F0++Oa`$)`mmAQM z3JPaLUNKJ@K8R}sn}u(L1$80gj-N`z2uA1lp92%1+HI6A5XOptz|E&-Zc!hAX0bE| zJg{0P){zmx`rdG|t3CU7=6L`lDC;g`+^zcE0_=J17)IldGF{gP5^7;6fT7VxQt;O6Lsfoc=<5Mrn7)v! zLr$_O6g-1v7h2@^4uVK?cXar<7@^#?tgFcN!e}_lsZgV{VK7Vx`hei#j2k6DIrD!o z)uV`h&swhk5_PT;!hTNG>a}zNm4reYibd_!L8@xWRVKPqn+;zKd8Uf*uPGD zOB94~VNAiqWzg}%3JLe)NC%@<{NJpQ8Uo>evO=UO4Nay-y7k&=!Zg#_-~|nQi^JS^2^k-S_mYFvtKwi%?Ff-km=OT{2Mbc(6@PZp z?rkZ7-}XDDIEiz(M^=~iR*89XNKn&UPr8#(g-1^DVd`wY3|3pg^foldvQ0Cje|PAi zP1BRFMOVlENeclMmFoak=>@o`#^SxI4c)SsdJB?I1!W^P@ z#zV29Xxb3>rMSG<`34htIuXb}$$DHvb=+^7k>3(cV5LacL88Y*>`AI{2Q_a@kC;#3 zm_6khm%e{T2G9T^ff0ul1^4>Zvl5I}fz>MYMKPS4#i~vKn@Mw6g)&5BDuNcPc}pfN zMst?&&b@jqZ8!-a##sGN14y|W(maZyT{y1Ri&nFZQtVUv}F2MZ{^m?J=v%*C**%M4f* zLd6V2wC20m*I{w7fs;!y{@V+SG0`vxXSExwRd{}fnRodez$=&y2knEfEE*z*p=eIl z$TF*@+(=FaDL4^ep&QD`2rW0#Q`Cd9Dc`>f74=PVM6-YEn3pDUT=#Z%R#KP-15A|W zHHCZEhP6;{<9Y?`EwKKeLc%w|zSvM(5|Fb5d#i>kJz?$!s-)j9}F-ezZy-I8`rtPx$0wMdW9 z+{7CT)YW+hI^iNq03-Ky98c@&ntM+booUzpphC1295>Az$nyD?I!6ZU0=lykVlK7> zA51-VXW}S{bG#kIB2wWxnpXsUs8cX%zSvd|(cssYJI|jC_mljkuFRVEYyBR6%aNeL z)~OwO`cC3dew29V-cB{tz+Yb#Tln>Gv^L09gMKXZ;dVJ+-*@13%R1nCd&5z4RY#yi znu~{k+U13x6}qv9t@?Ox3$y_He4IZGrGUh}_q1iEI6! zMLPH&$S^)In%KW?iN!(dMV2e#aVC&HYsj5*+Fd=1b3b1Pfzk5;(r-fT;VCrcOMh|x;(7ILN8lvXBZlTopqv{Y ztZ!(3{k&2t3=Ga{pNPPqRn%i)4`;=QHOmog5kQ36m6y>tQl`d`;k`^biNGzmMdcTM zCZuQsxs)q{#(W$YKDEA%H>Re#%K<6={DxCyNZ6_i&cpIa(v?{j$1fLpQ-5&9k6;1u zB|`gS;bEgJ8F23I0W?6-Im$Rb$L<+q(HEx~XHAdBN52qfT)BnfSwtrfxn@PUWh6R6 zMvH3q4J+V46DbyTxWoC=&|a}DUZ1B+{Z?R&bf67urD|Z8JAq0IG69VoEbQ-)eTpox z3@_f0DLDU^rZI6O&mlj5?Z2orV zBZjxvGwmG3NNA6W;zA@mNpN*6C(~Ttr)cip{PWo^K+g--?&}IDg@yi=EBJFqu&n(Y zWZz3;DH|B0b)SleySDPO>a%)fy1LE00x-LF+VrR?CK~Nf3Tk}?4f-RF(ej$p#9CIw zI}OhtQ^Jric0v%;60Q(aCKehIb{T-jFdF&%0(uCB=2vZH-bDvzaV2dwCWMD}mo5qlnlfbrPf-L(am6NG@B!9t&JUs~icwgACA zgqHZnQDHH8XgRakCfKVD2G#ATJ=-^44c%*>J=>JnQ)ZlAkc!xnO)0kZ=@rDm+$nbEX2UV6i{7uBrQcetq` zw{Vi98FEq;SBO@6ozZ#)k&6=B>zP&)cW51lD_P!UE1A-*_v??K7t+K6y9AWjO@#ua46@DUqFHbQ|iu`J7>&X~@ zOlb&O4sxlN+OBDd`v+}=cHMg{CLaj+-)SQVo_rI1iloKr4cN$^PS?FX#v5?8*LO~t zkHjEIj^Eed)w$1eF+mUDs-oYM>CF1#JaRV zcRgJA148j6R)hiK7yN!`BUYl=9R=P|*QHWD8*HpXQ6f4Ab1SY7sASe$Z|mo$75MgC z;mGtLxE=Y!)unY*<)EG~W1Ga6;qA{Zxg*}C4CFWg{NGGqK{34Ko|&JreK|8XY(iVF z*zX1=i#4;DsMlf`8AW(zE+ebdkER(#tg1g^q{munYT1<57N7Bt7S@|J4j}`47vLl{ zfrUS)JvzLJ=%=a1CDsYC@2_O{21Xbv2BVbZhgx?U?~7lR=@-|z<#TY{3K}lpky%RH zf(9l_C!1=IJeH5-4L#(KzH9C#E%U2ztjz&YSGoqAtG{gh>Hig*Y{NM}`yBsf4T?JP zIe6W1{X+kF&2Q|C{^8=I(kxWh+?0bCma+9N5oI@zwircC6 zAU_J;EI9)sCAN0DujyD{OF1g4x?V2FW=uT#98?9{Xp_Zq+wfZasVK@61Itjw#o$i; z&JM~h5-;l1`2Hwn{`SsB$4plnmraIytnwi_ zeqV?Qi5axIHPY{Tvm}`)F0iqc!Q^HPV)>$xlWsk3z9Am14zfZRMqzAHO!Yu$d4)qJ zW|vS->_&9T^(G4OL(>P-F&1G0-LO_eZ4E)QcYK-9T*1r;Sn!Tohtg?EdQ~@X`umcT z$QOTM-~{iaL82~7w&&r(!C}gm@C@F}1uvp3A44rEbl(_#KbZ)9vUVH;R{rQ)_fXW6}J;H#*$+II*r6R1%Qx&Q=OBb$y4~ zV5d0MOE$(H;FX9aqB9mgbOT++OO*BjNJLn#Q=CISFBneL8klpBdAbuu_c)fK!dL5u zH?9@4JlDmv!W>WB*-O^1-geiwWyJ(*dqhwYke` zx3tCuUmB-J$~&wuc&blOtVK&{w(AnEB$` ztLM{yL-JTS%cGn8FkxtZoKcDY=ii8twUd>@PintPRqBV-j_~7Q>_adwfJ`u*M~>D9 z#LXTZZ@N;apwVY714c84#>QAiO2K(uvy(>ns5f%fZ01l-YJWVnl2OuaP&Qqt?p?l_ z@8ah95dG-AhOdr&YHxAK=yJ)-ZSc&2W_Kr=W0PB`!*|u%lwr$(CZEKfp+qP}nwaa$z+Z{aQlg_Te~C8;vJ6E>5)c zH@yxzvbgx9plxf#Y`{KM(twc7lWCy`>j+!n*IV2yb2-b&&2B)|E|$pGt@D0DWaS|(G-y9mpQ&S;@v05Q*xU8C`6(41K|4C__Vnbix7qndIXOL%z^D2FIB;cD$GWqi3Abq72gn0SZi9 zw%lz;d}lWAT&TNc~B9!hOhg;EAP1jg7JQf5dK5NDXQVZB!N`-mko-xCA= zG4ozQ3`A2c*ZcLp4eWEtl1KKVC}gzR?X9o$icA>FfNxa~H)VX*(MJ|uu1-q)2ueUJ zZ^DB|#9iZbjVB{D;h)aCQE0(Jis8!oqIIu4j!tyl>XUaFuQRZ>^-@2ip zf5LW0(1+ui&}G33KSo@VMaqo*o*@z_8YC!_*5sfwb|-XR3S^fo(aSX0Bxk_4I0vSp zYuQ3h$tx3x={zbEst5eIBp}rdH(}K-Z5HhNz(MQv5~gDkPY7K~C}kB14-Z@w+`~Qn z51EpBZAN4(f6^o{;w{6H)h=Duv)axBb@TizPyZkMPN?W(LF`S@Y3Di#-`$9B|%O) zZ|94M>9lz_*ojt+N?(TO;8PphzD?IV2vyIKkwB+0iG+z(pGT*wbN0T~gm+wwW{DBZ z79C}83`o1h?kR4`C-#$Nz>QYHVX9=x7@f6p8x*4O9$JaJ+xpM5vGFrF5e;_d@R*F+ zzfa{DxH&srolr#fu!qP&)9pv=mbAH7_xtyJ574!} zpTOmp)P|1Q2nqr&B!cgTWjP;w+(Y=62le)}Hvk+{2~eUCob=KK61h;#dvbZaW%exN z+Eo{13oM4;;cwZFD)syIsdGW!jJWY`sLm5@45AxTjB#YijF9k!VLK(Udr^0QhkcD$ zmjR`704S4z=p5DnpLUu-g?dV~L94K>gj8`hD{8Jxe)&o~=;ARMGih`f|Nin`eI6(qYJAIn24Tk*W6ts3|OCNoK06L0q~aEwI*xl^&VsqgId z$$RJteb=?uJszM?FIZTTXu=I>BU`3ToaIgewAztO0)@oYtR6<7osA;wPu=0hj{Dry z6n{UiLfsywYCi|&#_j?GZOzpfKm`3=3k*LD{PHXRh>}faS$s9tPsGrc^4_bZT!;Mo@95)M<9QSRXFoiq#B00Punu?!pkMvUBZ^MU^rKksC zz+-vP5`0uv8G4d~*Sj|UGBH8FBbkxo9%v&XH|%}CLL8W*QOObC$lJVrBN7XB_eIs# z9WBsS45_KLP}-z=lW*Mn{<3B6h!t5Z${*fGgg}mRTZcNEvn#H0+hbWmZF$W>*&POp zA?YlD+jvlP8G2BJ2i+@h*=OF4ja_+khli?XEQ1d`-OmuR1asG2Bv5bxdB?Mzzxn^C z)yz?JkaY(-0Knl8007DV{h$6{HSK@x;CZd>wP*Arab92G#l16V)+{~P=SCKu zIy|uDmPn-SoZt9#$t)AXC3z6b6iLntWQv)RFM6_N?@rhcR7NwhBUO2lE5^^1x_P_i z_2q{kAvoBr^}2*`4sV!x?N5=7xnKth*A4q?iJ3 zQ}?qDJqT-8rg<;0ALa8xpamT0%ou#|=#H1j+bkOq-n}5d2$ti^?!9RALYI7CJf_e8 zrP!jxj%*o3!pDt#k`_Yub-tYpU0tR9K7X9-&F+5lprtYT@S{!i$P|&JAEdAhnG}lm z>Gca0U1bp@pR%8Ee`6%@^nv+hmmUzsAdVRS+_0rA$n<&A9<2~9-2(hP#!He|7PN`Z z%jNPR-qlTCRbfD|a-R~8R=v^5s!2bJj@Efv6F4vxFCpPs?Xn#F+0GYF3<%|-wPdu;)?50SYJadrSp-j|345Nf0L*qf1gYfmjoA;;p zuK{)oBFj2>;oPN}gvxLCFRmUEMmQ&u192j1(rEACAjk94Gtf{pLjlb!J?1=P(UEA z7zm64sz2Hvtgl9i6LJu;95Z9mgNl5b33;j}3i&Cswho=fd~J=KBs|ZczJY>q!Tet6 z>z4lwm-`|bYJoEfaDra!ZT`F?qmJH3moh{bP^%U~Qyt7*9nDf5%33|7wQ6Bl^TA&$ zG!WnX0j(Zk)X>k@w^%I5KO@F&?B&RPcF*klvg?eTpf;IqXenRF@JpnMLyXg6a864F zHt{JO`B3-M42vhCFSpM>TqnvnToC1FG)O!pi=z&yXnF2pMg#iUUC=8nr+)C~rb{1x zdhG1*jeod{1T0&ng2w|J!aF;#P&yuv#Zw$=Y=Gs*>B-0Fv?${*$((NJnRQ4}BN$FJ z5Pz?O$b@RBRu1Z)+=VEMqWwD4ATw;)f1DXfRy}6}13Z_fNT(SM-syo$Tq$n^UXUwU zE+$7_0dZlyUGFlzS?%(H4~uGCG8J|Lri}>*o#cTd1~7h2DL_mrJj#Tzhk3*CA3F8- zR;jC}udlyfhfh19(Mgs_XGoYa^@I5H9*9@eu!l3|dV!QX1q!S>^1&379xPup=gf6F z$Z%-6BKwF*Vt{i|$21`4>YUYZ3OzbNh@?r1gn-qWVcV!@F@V8lPGHWW^3QiD4ycmH zwbOSb1{yO_W*BG=*t<1K4~tOJ&S?mMlKd^}0cmb@EIITCGjpU_{ZEQ<>*TgvG@N{G zSH8<25c`o3w}&KuwATaG^lA@{LKk&CJCdSfh1kA|d6iX4!6=WJ@jO%O{wW6{=rCvU z&*A;CblH{dpE?{5@iaPzr=iAr8eH;9J5pIJ^0Lp|MBACS4ZdHEz7;L>Q(Wa^wFQPV z$q`K1NBN6ksSa~t9FP>(;ec)(=tl(dtu89kiDV4`)ePX`saq@uiNA&yyifppdwnAN zd;-%Dc$|!LBJk1di)dK+D+U275ULBacl1N{!C9X~AF5&mcjyPRjjKQ?@`5yu&s!X% z0{lqh0`i~1{6b$@LF}gWpV);G-s@~&CIkt0!1YzBt?*&3fX4pZRsX@l;~36)LW9Vg zsZ+)@k(^F`+^cTPEM3$m%=UCN%*8E_>V7bZOjIK|>hg*6r@RKtWSOLdVh%*Vic)$z z3EU-wYm$D8-2IlQ>pWNRT5+cfWMB53`N_N4>BFHkV=3z-IlG zqu(}m$qzT1{H%v++U&$?C=$DBXU<`JuBveZ8pU}o64t zjz(M0KpZGBu>ydyAQO~XQaH87;vM%hrLG*&I)1R8l>!W9iCHk2PvP>zv-C}%wE9HD zDWJh#!!*#VK12uzfloIE5R~P%5|0f8yW*l2ZC6I1#7MK9uuU(-#tTY69x&3(RIka~ z&b7qb4G$oAxkkj>+hPQWoiP{Xh@k>FLP}ttns3Quir*XWVu)j`D~y10`cWM>1ro&b zdHjAQ-}9$8c)%alA6WZ1*!z9({nnZp{Hbt9Cv(dhXeb%i>Gt|SKI+sYG;l;)HQ@f& zi*!({v85F&=EUOS;rp^Imh3y4Qq4EoC_!uU78lZyD0pu&Q?t?B>fA zizH@SMN(_`SBFVgVW`j=#KSqn<2mq#TRyo+Rm~5b$V4GcaCL20vDIHd(qfY?Pz(;h zd>Vl;`0%n>4NPskmaz0Tbk@fuBkqu${qt)w7}a~<4I{U0`O(;;8d5~_+c)kIdUO^| z4feBg`vVTTP=`GoWvFxFGoXXSW5mhbt10M!z@?|&W6@<-Z|He8rKabaY;j%9#IX?W zR=5WW%~@1z;=Os5^4Jd%k9Z(pBFzb!#f%F*{m)`gd*q9nSLTO)C9Xa@MF!#e8JJHM z411)UA;u6oV%ba*r)J_xY`Q*VN!?BUui1<#a5F3$ol5N;8jw$Ju*{JkCRV5u=OEt8 zo(FU=(#5#cBm$uy+2IKlC_jPtv#9j@gJ>O&il&87oKfmNsx{3BP<7k>MxtL!ilGq% z&zv%U&6k%jJBcEjyxIcHTC`*c8T?q>qVLl9QD@#V0_j-zz^b-{o99dxYR}=ifjZ&m zq`(208V%AV(l4vDolL6>nPeWD>1PSdW_S4v`{F#EDVeN~J-@5^Ri;S1M$fI_^`T7l z)*XEfQtOH{Po`o4oO`-{rimvt!bgfV@CiX_xLco&PY@38{CJ>CTS1GhK zBMMX@&4Lik>O|DV^a%o7duK0bVf}{HWbgy~t6>0DI25G=G|UxwwiAw@#qV=r?6Hu= z*i5_*09juox8=h|CVhK)czs|8fIhDKoxK8yR`(e072k}7>@)w{{P>>Pm3>3^G~Y^< z=1RUEewvqP3=S)wV&&79ck1xk1Z-~4oi%SXO@vLjFgjbLgej4683DXrY&r;eq?J%0 z;t-~CH2EZ6$LdZN-lqoPDtW2e9N`Fa7UC(r6{t=FqS!DUWmgsJ+^-wBWwn+`jjDD_ zdw5A_U7qA45T!JF{`Q3O9o1 zIVw^iV08Ft_N=m_ma&Jh(@GIW>5 zEwafL>U-IxzqJVAmDR_8|710hTCi6tR*W}nIpWDC`I0>nfb`ACgR~%+w;gxQ{t!;3 zpr}jR3UXWiy$H@pdj3YRzOw0wE*j1Lnnm#e`Rud3!e9O_k~}V|^bd7`(SCfL&iPP0 zBXMKIuWNc)5@57t_}hYKQ@2u(rbg50RBq7Y-3XAHyos~Ex1wh4>ABOY+SdP*>#jwu z#zb*6L}gre*Ee!@vj|80M;UW>%MGJ6*EUOe>j9BH;@oe!v)9j!!=-1W;A*mnK8l4F zG_$K|Q?7>Z)TO@E$1BzA#oWy`6%LU=n{V zgJWC}#b@_(oE37GP5uy=DlZdxOLJ3rk>*uyvW+n>9D?mSt zVt{=-UYlyu%lDp-*S=*S0BnaS>{P{8uy{cGov0xt-lo)oaYYa6l)AaRU;SwGdO1Ju zwmW_D`4;NX{D1Dn371f0x~yKO>}QcOM&_KBpaK0A$;p+Y%aR5OD5_AxbXAj~7a{dm zyD0aI8|pTTgmvmZgTdNrJ1a$I5tQ*Y{98KsP69SraFV?co;oGTM*xUAMg+0Utc>SW zu})$6a-xee>Rg!Qxu0p^I&;nHh&iy6z z;F=VSnsiatO5LM4cf8?q5!0>s%XBBfc}M@6HGB&-jJm9bdz7!ant#-@YX%3;z3&KQ z2ci(ye$WBbs5bR1dAtYf89Qoe&$bFp`MJDJYLxsBVcA)RwVvMxpWoLAfesXtx2-rV zRC8Z)aucIXwMr?xE1(`q8VRIUa|n>snD6bjR7#p4$eBgmlOcAnBke8h4OmCp1;|^S zNWCP(K=2UFhiR&a8JHwF387RY*G=VGvWQjIz$3CNa^fFejvNW8n{`oxDRks<9FXH8 zo{*39biVJm{d5F%Rj7vzb(5o7xNbHzfP9vkwKuFJ)JGpte**}3?Fs6^sU zXfHsHm5(TuV+;1=3GuYqWA@Q@ViK(vNOWYwjmVRf8_MJb+k^3(_;qLHrm9IbERwCe z#7*XbJ)}uLJt6&y-XY>V^8>i^&7W++b?>s{FGu}&$!WO3R^Cx;AMsO`Pv3$v_q7@@ zoV!T0CTlzHX{pcLbgxJEZPQXf%3xxcso@#bh*EA(n-RS-+mT92WoFd#N5Wecm?GBR zUvU`WWWe49V495OWwn8STOdE%b|O5I{4~AX&b$}=dtn|&afk7U)2}IONk1mpW{vpI zY~?6`peFebZABP_2_5=?$QOIuBwbvWN`eZLT)gUImCzP77xxi7F$tiO{O!0WomF` z1*9`Cg3I1$VWQlwt+Ff!Myox%k=0jcZIMuH+FEF^+fkjmrHakS!D{uz7Lm*WmLG)B zrM_L1no@;wUw92x(>KNRWOgYEtE&do!V6Bxh*Vi{%Bdp>+f|&#DUnpEh`8@go*rkE zS8C|G=mhN%#u8cd#_m#P#C&vXcAUepCB|4rYBVk%g6j|1Urt+m?TFDs*SG8 z!-~!8K_coR#ICYKGL zk)7yw4w#yiFbuBa!(^(z0xHys7q$`Pf0MRww!RcgkP>8SiZdK`LsTKX;|Fz}8L;bB z8Z3kl8l+q?r(JK`8flCEXimR9r|N1fe0GoSd2OHmTQl{;Tsdd6;*C3peo9(Ptm$1e zf?{8jlij6PK1q|~QS_*aO&Bcpc1Uv1DPsz#_?p+%cj_FjE`yE5sY&lnNoCeTm;I&8 z;SEU#fNwB9BH``85)wVq;dGO00REz%9l7$(ygL8-YT?Ub(jns0A?jTrJ-owNJ^763@gp7L)1mW=m>NN)oN?NMTuVXw8++g-`*wZ5c~3jf{ssX4 z0+=1fk;MtrD$?%?acM_{&+ZK}iM+l}i($uxZ^!m39|psorM)}3zKkrZwSTf!!?oh&tPZ7}a(K z&a#DFU7y#{K=;G*y6)UDZ4p4$#NQ74Co%K;?ydrCcvs4pBgSsJSKThyGVGwk4?K|; z+5FF5K5zJTC;0vjcT40qFT*Z<^_65fCInchi+Xi;W0=msUkT4;x7&r|G*0E}A#Ay~ za=1b{wJ`ezpKUsVpmGz$pUb~LC9RcU=vSm+NI=54Z2x9mE}&j=vy-CR{x9q~gDA5zI6WO5B#&afz5o78x{i}{fLnoDMB-Et$U zJ%2-il2+KOThPol0lTq^MdSx#77_Kiu!-rumDpHLx(jeTlY=?hX0`A($|!ozy5L0B{7Ae*kW&s!=4s z?Tc^T4(~qVmUsW$%`CB7b(AY5y7bVX$#CvOv5M9V>^42LsuQs)-a%&>6JiG%Wz~a9 z$}|nAx0{>hUMVTOF($}>V@a&m1bYyz2webVf~*SFx>AaSmHS!bB$MlyifUsXRmQf( zko3@LrO6?yK5E81aw|*eeDYZQJ8Zn#2cv({Qr6hWCXMP32WXgkDkbbai9)vCh{orw> z{!_Mbho~CFOV71UsQM9UreK%sd3}|<4W@JVNm<6BrQ-K2cGo)}q)=s584}9%VPN-_ zFtL4(_Q7H*w{Fb_@x;+&sm?5JF4R)6NW)Bd)Gs51(7zmJ;NV3QH*mpufc!cUHoaZI zBEzSd8r^INi^V49?>BH_0K-3qxKIm1>18hTF-O^TA~^95J2!Gkjy;C?4p{?Ml7vk9 z5kOzmPQn>u%h^mdE z8Y4(;MAcol9iMdrCD2MTk_!#}ybf&3q^|A%n8)ij$P7^OC&F;$NN$Q3Pcht zGC$uh$gAK5+@P2xNnHagva=r^t42e|48aOxmccDr-Krfth4fQ0ZiOLi-`u$i#T!}a zROGvy=&6XQ5yDi&lS>@e%l(NVV9DDSNRF-H?Pio?lA^AK$SM_88$NXXD4A-TC$#y_@m&i&=Rf>3T8MXLi$c0dZtCb;4o0SB=wy}OD zxtPkcF>bxBqjSodBdif1>S2;X1*P<~pAJ5iVFg^cay2s`X?|%h-2Hp_K0-4gAk~kV z-0NOabV1C63t_i6gk-M=Lg(>;-LYZ-PM#oS_Kzpf2>~yyw5nV`IMFLIXfV>GXlkR* zKs9~+)HL_O{Djvca9W6MLQv$CCW8>KPjh~Ek!bOCfih#J?@z`GPqsJ&@PP$NNst}L zpN!jYPK*{20(!$Up8N-iWxT%Up@$uP+LimQ)Ris+;5I-$VFFi(Un?J;W`8b+Z_@cr z27+a%?D;I2t+2BQ7DG2_-S_+SfiM!^Mb&L^<(aVZjcN${=dkj9ot}6QzAuyohkkw+Jf3n%Mg&FLc z2BbG{jkq=`M&j2k<4#sIG0IJ?1Y@zsBbH!W@zLUxWN=lh6%cK9M`h?Kp$LJ>XJ?jZZbC9aB#qd)EU!Qw${?p=uN2z{>cY{!Y=-xMLM`Qz_G0)4o;jmST zV~HwBr?ZFH28&g?BuqIbK`2dDh+yh-(j5u&ipXQuFWj(6L>@?e3l;&WlH+jj8$SrH zlJ|Vs1pW>O+j}nhT(;(Uf+KdZgD>lVp|G6@_Tu}Lu`RqXe$&AV0o7aUaL^Z%cHmk5 zu;4t(l(`9|@a_REjOpM{nF^6XKaMjtMji^>b5yXT4NM&5#@EG=j>`ETU+w{_#xh<^ z#xs_zxYag)9)c!j0W& zd0;-SKo)-2uTDMt0vxwfUlBPo8(OLncN0j>!)5x$&{E~K)<{;%8CqZd*rE$v_>Y!( ztGG9^qX?L>$Xj zP!rT4nV*BXvg^A8&lc0QwOzw(L>OEE4)3uv<$`WT%HNuc(;;Q395s+q7at_(h_&+M z#mZ!Fzi{sS;qNEsF}~vQf*T_fZ7OqO*cZl}V$U7+`rTq8PgeE6TcT4e@r_Utn=vjy9Nu0)2UAP-0Es13_>bm>Ky0=0?7>Ye{&& z!8ji^s&rJkJZdC-LhSO z{oD!)7qs7BXqD~G(+*)hD7QS`B&;;Ln-F|!CWmpJ~K(`aK5wDeFHkx#`@5AQALUuhOwaPw6M65$rOs~ZZ zv&l1&ayK)YlWK*50}b+i_M*pmw_>4Pu!mgqezPUy z>_K1aK0a}HxV--YPIsm87d1Kw>(nd|8P^ypl>BLYdY9p52&tLP^7b3G&_?9#gX4|fT$|YFlCqoG_~oNJ?#(iUC^}f z0{nTCQg;fT+hF=ENB9+9Lfs~r(kNpuP#=*)IS`~&Q)t+}N|Ol2%l$X@X45X?V0H4= zfPNWq#|)M8AT;1&d$YmG@`}5K(ayLx1WQ4BU8H~Ar5Um>*!4BK^Q6)exGZ_CjX<18 z(o-xpB&Ixx!HeJO!T%U-Sn_l~+xvehE)QmN%@4ZI(Lev_Ey#b)N@V~46qkdOy{&`G ze@GHyV;i7?8Bj!D1%3{KqJ^G;p>nuTsazb=SR$VlWrZGazCKG+TdVB5&hU0=6>d2w zp|X87h;8*$p3oYPUXDU09QOi4$e|MOzs z9L|1_Q2+W<%Ku}J`u|+a*xt$XADuRXrTY&ff8Z7P0WR1MUjE~{#fLR+6um>OkWU+B zZKn?-Y(T=bDuxD{D0d0_uxB5Jk0iNJyS0mV2^9M;n!sl+;RRJQ`@W;Qov82rhk?ai zTXK<#_%_RGKggb>8lD%w+{QzlV7IH(D93sV=Q>tbjpEF%gZn9*v;teu zUc1#`s6SkE#M&)KfiSbnZj38KnKE2-hD~*+s$Jy;F%8`;7CKl@S+WXk*>LbMUYc`*rMkvh z2vo|1!i%cS*4es&f3PYrV3MF1wEG5*(~}lX_gRf{G(7tY&c=zUr_VZM_}8&uX2PEf zVUdAaigO+c$6|e_ye(Tok82R+M33#7!fVP>_lGh8^5@f4<>W!=n~*)bt#6@KS5FV& zjpaEBg7Z8r?k4>aN^ZL-_#bM|{KavX3;S>vDe02K5R*&-NhpFWA?H$GKK_?g33&Ak zyQMMs&B~G98CYhy)6k-o!vY4GNdV;MK9WX4bcxYQ z5mq+70cC3yRQzIqMvWE4(NechDgYgWazb+P+P%%DpPUQkDFFWKMP5zPrxWy-ag)?q zKC2`y8=at(MHq@u!G>*SM=wp9;8V9GN&3uqn)AsefCsQHlA;4R zcL`4BNg-4t#R+8gBD)^2MXuenv~ZU~gpR#A=)<{vR4OUdD@Wc~lrR2JLe!|Mwb zWX-9GL=k=KOMjM1a{t;m6bO+mws8{st>}z1O$pFgMZuC3Mq=2y&$#}g7rWd@(&%qC z7GM#3G72&`#!Ot=_v1%vvXY!0PR%y0fr&DmFKMJ?Dt$ySp&wWjt<~u2>2plr>Ew0s zC8I=cQKg5*#xZsdm7Q45765C{B;12M@|s;-j!cv@SEJ;g+e71#C+>9Ltg{V8Kf=Rt zY-TGLl4ET-Bf^tdmULF~$G;lE%N-2^&dK@MrEu~U2G?Z7(fT;d1C9ng*-0&6e)4lm z-c5uOD(3*1tEe|ric^qK1#?jsA=&TaCvj1qO7&I-O2rQC&BF{k-bLDtv!`3}dg+n| zgv^9A1cNgmJ27c`>e;zBX{lSnVr)JHubiF%4z8Ri4pAGCEYa&zV8=G_z#Qht!Cpq_ zs0vNA4yyOy;AO;mf}$JF3qEp9FqkZb7Y2VXsn`yVFE#QISA{-t)yrV}-9HP6TVU(; zLG>6^6q?(*bB*k#2qmPe^-3z9DvrO`FP)V?r>meO{N0oz$3BH*)z_eO`Ps3}zp=E! z(N=2Tmv3TB)7z!P(!x)gTm<;cxqWnzX+913GpJtNzRA(4r+kc9{XNyLGvGBFpy@VZ73tqZ?4J_5>wLOBE zRW8@I6J-bZf&ueWKv|_xIb8FfFmHL!Ouy3QkG^KLc_tDVZ+!KZl;2$f!1D2Qm@XH%ohg2WP5MjA8U z_#NKEZo5A8J^FI&kaURUE#A!+9U+|n9k9rHQM9YQ0cOI$=(}V+29*AVM%LMbEpxcp znxAQ~cFYPR{I$y{G;OB{uw=fg1xTJDo=7(o($>6umaOV$Q)@43WrbiKRGh-7Xnesx z*RVe2ujZ0hV;S2nFG|F@%}1^y;%Jl+FD3qWNbF`-Y)NmXyEC7Q;x?e%e*E%+Lh3gE%A~`hKVy1Ify!covL(*EfT58R43y(^8>UeCgPl9Rt>1$;xMI7 zpgR59yJPi2D7k}}T-|E9JjDz3&LJasJVWHVDC)>Olhw;tUb@&b)f!N%!6-@Os>q0M zZh$>EMRP2&fkvRaO45_1j@Rs<1c$D>xKP_9j%<#`&_}BoE0ba3RLzb&4O?po+s)(iNzS+N+9N(1-%}CkEz4z z92}q(d_0%?-vUkr&(Vqend@@ZCb1`Kh8OUr0#l6i6}mbFiS=n8*1sCtMi#-|?5BCh z{pWNodvlvJW!NsU3_C?vb=8;$4#NbuyFFuO01%<2pZyGh7Y+(qoA0ROtqSP*Usfhx zlNk0N<4381xZqj?QU^L?-9zHijw=rYwE~rucovd8Q!xaN+$I>I$E)+}BX! zq(WC%GchM4;>RAC`&4={T_C1*N_cUeye_*b<_jRFHztF8>eXq-$irj47-ax352PZhROBo27YlV<~Z2X@(@ociD0=wn!@G#+^Yg8G_rT* z_$dDRiN_|%JhAuBIv`(iPK@X>oRakvzJQpsstk5O50hUngs7cAQ5RTJIjX0^g;rj< zJv-Iv{Ihq;d!IdF$-mCa_{|U^sQq)lJxJ5CXcWS8b>JwTnvH#BH1pyK=4v?Sdn*4- zU%&fFi4F&E>yQ~s`PCZka+qPw23Ed(J_e&ROQPr>XFzBGvgA0T)7cb+T{OKDq4P7jrRD6TlgRp z?GWl>UL!pBTD%iuE7@9u8_?FnjoCJ_ZW4PYCZK<0v;5SHNXClaPeuO%{bwavOaXpD z`pYz1a_fM193qH<`a5(~I!W$4slj+ta5Gad{GNKnG zP(ZqQpoRvTWMu{7`HK4!l|(A;c32Ft$~jzk8oxK~FkY}%un{qLF~R+msERG8-i9RG zNZFZ>X&yvN8uJ+CNJB}DEc(hmBS9$J)W7?l-FJ^IZXxhffL2Z#3OQlfky%rL zaOoe)srMR#jq6K)TuS7qn@U0~WY7zUD3qN$&k8_@sAp0}E2!$XE_Pt5$8jYS6vJ@lRYZ&+Xo!HYt81K zexle@{g4&VYks?Q<;bQ2IJmV2KzU~^n?^BnF=>(|2SSO)xNJC!L9~f~9$hWTvq(UZ zY&Mg5Y|*ohmVt+@S&}NkAvUyy_ak2J%Ey(~jv(apj(GdBAd95N6NS+&01v+#}ReY~VH% zEEy!;KV+nA1{hL-=OIQA8>T%gr50`Uxa!bC9mIw#aO}zn*98raS>N5z&kWr%VV;#f z8D)uYA^Qag_X)B`5MWQgPm}uwr;J%>b?~t61~sRjkQrm2*=P*jS|wLMTb5mJ3naj@ zhI$XB#N+0&Rxh>3uOURSWCViwF4~B-%tsf`tlI0Yya}+#e7*{heYX1{sTQG;#-@93 zgpT7(USFpHD8D%UE9FStlQWE?W{1G3(<18PKLU3&r0PwN%V2%hMlQ46<;VY=U0ojF zg6GtwcJAg8sHA)&Wzc=p9<*~g{53aoT4d`0{~Kpu32EiL&SIxX@FaIFHK5Z;Wyp4J-h$j0Pzrl2Xa(_DY! z*qu1gl+@BN6o!_Yl%e<~K<^$6XQz6S7vl{_N8P?0)tc9O15=D7DEI4-vLOUon=~Hi zWC__Wa+2B#FF-;;^L5Bj`8JkN0Vhbz;6XC!9&)7I2rmgo7+U5T2r9(7vuKi{q3toiE zMxl0o{z@Z z249JJ&>z8m0J&vdIZ zND}+RupW4|I86rq4QEKj8oQ(FmaKs!5{(07$9=0FeJT zvlv@fXBR_bi~l*c;IWS1;`pDUI)@d3&E0i5r||DX+&O|Y6Q+(CXvsM^IJ`WYZoPgT@Cq!TwV$QzJi0W~)=G@O$x^-qp4z+hT^(H|!6Z?m1 zBqbXwi#oVMsVkinC0-59Tn5+B0fBi;_n2t z3%_RCVJh0uMma!w`YT0cw)%EQEnDo5T0p)s)i{})C)Wg4w3fHS3WbKRc_ZILj)vVa;($L z^Y=MR!hadVdND93&g&hBbY2Y_6e{R{Nhbgl>V00W!r|$6^=S3`ygq>#_ySAUvDTpZ0$uSR{E;}1P$lhzMM%X(N#$+2gZyw%k#=GrrKeu8MS8J<6>v?{tcxwFtBczc%{vSE6vhgqkV24E zEz!<2pyzoqAlA~=_58UYJ^(O_qwoy40i^XC&V|`2S7^tZg~^m8%WT9W=}U_QuX)17 zb~(k$1l1*Qrdk(yQ-{jO`UxlPpP&N1^jF%K`dH^*Dm);`2V@8MgQe=I$=m?BmM2Y4 zrHcf+4$*3KKHRJ^>5_5n@lrut43+$oIz?K3=9Ckp`acMJ$LLI;Fj+TFzSy>H+qP}n zwrzCOv2D9!cWm2sa(m9bXYQO?>#X^^fA6(XZ&f`&k!gtF z;-_c$K-#Vrt~-_5`vC*`^CN2BqtgCys{0Aol*~*E1aw1@VQ3(^LQV|sl8axUAZ4D@YEgXjfysXH zk3+$W{t>Y9qVns7MwarIey8Y3WywY9l7%d4J@!R7rtTybi+yG;oLP=QT}(-sd7&>8 zw|*=DIjKjqEV%~C*d*z(a5P@j-VD3<0f|`k)_7mcC-6TwmHJMW)k==y8_^ygyJ+u+ zuOQCJKj>>9VGwwL-ls$l@eD=m)`g4{FeZsK%q68R>vhTTDv5VM zi=YXztByu>J$>fjjElmxpIAkyE6{w&=?7`GLhx*Q>gFZ^!)`#_+QmC%sN@Z`<`tR) z8;O#oF@svBH4VdkM~I+2=mde%ox`ptKd>1<>J&=m3S_pr85z>7N0iE-af8wgKwJ9I zW9P4Eo%_85;7vfGU$VNfX9JO!0b|YGGZ$Mxq3)*z)^}VvtbjdwL5ek?@Spkqs9{ra z$V~IW=7Vf520(c#Ph+oRppd-_g3KiGpW>#Wf5nm(fD1qnTQSIboRs0CEg|lPUJt|L zni~%$vkQ8TAHkjqCm_%%!=HSkX_97FLskRym9 zC?09q-XS$uJK?^y-P)OhTp_e&71Y7ja8U2Vo7%iJoLrl(OhHN>C{Naj^4L&&4=T0w z1dlF54`m7OHYadbq>a8N!}cdM0W>5tXCGj`3?H&rk9K$d2TFU+FB+-#_0QyIK;jO$ z3^J*dtAGO!$y^(4EW#k_g__M#8_3GI5Yt<0Yr=j9g@!k|;caga-?(x37SK2*YG)?Z z#=Y|NFnh&jhin#drJVk)Q&I>7QdK~ZQYuP5Tp=ZZNGRN0M9c*ZkWXo|i$sQEb+L}B zl^5llf9hZ@KY{+aYF57N#%V!ted1M=Afu9F_4XJ}S9f*Wa zXqdozD_c>(OJ~D#GnZEvJ+1d8V)kQ zN2NI!)L`=wN9^tM-Cu81P0W5={L_+_^;UJ4b@|fDW5(0JzdF0_)wpv-)CRLSkA!bd z7<|GmKZHI7UoK`|acG@H?h@gjh$6O-wUUgH{m|%H6u%RdnB+^x_Hty~z!LjvepzYV z%!~o4PtO)Hmym07RkqZeW>wSMy&SEr#$(wxm2a4iz}QuLEi*PvtZQH2DvtM~PZd0tc4+>Za^v z+L!h$Z=R2>Y0}=VUEc+NX}oOC7ZR`t_lh2O&5(vJa+`tVW&DpR!UhJ?x0gqv^u32= z2?=UlEH6j-GNa$aBi>1`4oC(x_*!YFwiWDOU=rTR_`4V0yN^`}>q^-3I-xV?(u)OU z>ERpU1J=I4S1CqKd6HfdMjH)|uT+f+FSu7~3+wBQ&@DVro^ULNenbxNAnXFTMF;a5 zM_B<;BSptbzkiPJE4d3TfT{`*1&7NxvbNgBZ;r@hZr8<_@2T&zlIKzj3YX+nLlFT8 zt0K?Ec*MId8oC!l=W+uN(09eNv17^FPKe@3&9(A`sP~3*SN$ir%a3u*e+`*A#^V$| zDjE!i#`o5y;?BMD#rwHVso%dh&2)w(oR3HpR(}7z>$|$QErXNcslV=OR3zy!)H*WO z@D;(Za%~diT3DVxpFaL2>Y#&F8MRGwBdx9U{-*;v!!=7I@gY^?kXV9jrBqlpi-x-G zXFjl{^uR>xGPTxYUq2qL<)<7W8jdo4Dme?`qky+8GtcyGFM-TRUaw&U-ye5bvhS~(+ zLU9TF5%hH`h7rnwa^YV2&fJmHcsM{1SN?-f8Whk^dK*%>B>i>_sk3r!7Dk|W8!>YQ zZ`ushnuJr`>GsOIKtPTbp*QnN=oRSvMz}@rZLiBvE#DtXE?q~mfs)0q%V~KCmuWI& zjCrWHh?uap%TX9JV_qj2pym6!sv&FwMQ84&HI4>o@{OYh1Zge$%H+uXqj4QH-q6lqA5psFsciX_<% zH$my%xgGyU2^llwe{#2%bdl=hFv5m@%T zGA-#g*Bls%GF0K^X>rQuw>s`Sy6!u*yj#Z-*$Essp;rY%kWc?UevdFvFImd8w7FrQ z&EeQ?P5HB-Z9_it#Y1JzWMn`@g7!%4#1n)j(CPVsc%=(x8K1W6=*6pHAe(3Lrjah3 zPouRperkViA7&ouoCH-q&fH5F#m}jH!^JGkbzvqj41*w}UR){3}hK!W5-4&P)WcDGJ75`&8fUK~qd*Jr* zZy1=V>cE%>>>+sv)5v%FJf*t{?N<%k3ij$^r*@x+1S@Fu-4X^{rxd+XjNH(@UU$$L zcTk;J=LoS79$qG$1BQRER00j!u9f5?&SSV%oYy5SW4=XvsC8QT@VKNx2AhysT~9yA zfaXJ`O8_`9q&^xQOE=Fi=Cb69&JI7A7D0k^-dPNXZG*3s`?o3!jRpC)HXNYctC@l6 z8ja?P^1uA~UEC^aOJ!%0u@tdcHtRKQ5Qq}R5Ir_22PWm{v-(S9Oa=>^mtwl|emyJB zwsKS-x?b%tel~M=t_6B%X>EM^bwxB;1d%lq4p3;4pZkL%gSL9w11oWkwpW>3G7&^Rs2+kw@~hKk`sQLy$B66(_Mz?FPfdUMPRAyR z`7L%|98--3nV2rPBLMmJ-NRLbx-+gu4O_+C*lOyUkF=L z$#p6)(%+KXZkx7B1;K8pz?Cb;FonU>?IEdhE@pYC*Na|Tb86!B<8a7uXQF1KLbI5Q zsg_SlKcF~S$`mro)C!droRAF~!t*u2kr#4i>TjKT(b$uwp$>YIUs)I;R-!wwx#6?o zb|vg_A(WIGxf#E%XWBDFIqIU}q`s-}utA5Wv{^}{xJPXnfzCF=db1BwhrlNwgv;+MeLLIlp zvyxBQ0Y;)>{_|mwE*{dUx^Br;l8wLHEYCsfJx6lJ4xdwl%Dds}I9x|#raWh&9W1LWi%Kh%!-imtFt^szg56qEiU)`B#Zhma29Rg|{AKx(xFZ+R;j6(3v z^5Q16sxe<+uIfVOA;u0avWTLo`FA>FXW5(P#q-{F!onc?G08o9iL+7M= z!>PgfE-qtWqh1KDXgC7R`NfqeNg>*7&w|a%8ua;6+-!iGCR6@Ycx%zAv~RQ_Q|#jC z^LXJKBE+Kt9bPE-~cck921* zic3XXMlQugi0fL)-)KDgtQUsM7Mp(>smdc>`wICXX78*v7B{!OvX5i z;Ok7(3xw-tJymal`;4Ts>fKVaOQ78sd^%E2TVnntih(tc z#V-o3SNaVuksO^v??O;p(^r5aAUZTjt z3CRG21bqLlfmXx_$SS$E_3AL}ZasLYq>*kr(gt#*jWv#J9>UY)tmr(!!+1uNyi#3% zJ+^bLwunlnONKoY;|K6~jFrG%J4O+Q@;2X$=KMaO&7cVm*o@hkn#X$p_3<@E_HA}p zkr3Hvin;2bk(@ZYFXUCTEb>Q+G`7{_pVRSpNG%oLlQL7#7Vmk8G$)ELK3ri}V=uGH z6^~7rJHD{hVG*IJBVEpc-dM@8Pp# zL=jO2(u==gY9DZy{v-O`a&jcN96iw0>twKRt8xfAmAN)$+QrGNIrB1Wb*@Yqp{?}isGvx#b2=cTEc>OAAfg%fWL?Xcim>54VmJt z8Pyg1Z`D`z@&YDt+1rKd0vGoguHK<*nTZ&ftj&SG#A_<`g^JOa7c~u~>rM>T?z7n| zS63BEU)l?KoOjVMx_WzCENJ}d6)V9O4`ttqRH$u{p)FN}dauP6`7bH$5=-;B|33J{ zyD$hM_&4~(NBy4%pN>Y(E@saEQO3HYVVAJLiTK_7_d8;sYJqGnTrYI4Lc#-qNM0K- z2krDyLZ`;=v@U2Z(K@6|_p#$J;+~aJid)@|fboaD;p8au?iK3;Y-HySmms%aM$2BU zR~rW^8FBkCDp}hcVpNSv&DNQUIN2wcLf7)QFqv{~e>GQkhpz#GPSTBA$6ERZptvKx z4u=0&T8d5HbfT;p`P3d4r${_HTRQ6Qq`jPzq{dn2aPac6^mTYte8P!n*!s~vRkFY( zl)cuKUfqPg5>DdNH+4c3N6aK!ccX(@{m$HQ^9?tPaU+?4;0Q-H3V5koe>6+L$J;lR zsw0S*{erj;Lck*|&mUrGUY74p*!Ih_S+;ne2OO7LjwK^z_8#SUUBRGpR_W{BA_ucV zG3Wbh9xoQv;Aq{k<&P$t1~5(T9i`T2c-W|f6q1czmv2;vhWy+HfMQf45W!?>5(p5K zGN|M%4MH_*7^UdaqzjRSu?E#$C1uAKddJnB7VMM#cv>lHVbrYhByA)E7AGc+t~-Qk z4!dV8+Q4WFMq4E+Tq1Sj9TQ}KT0?9Z^BY_nja9G;sU0{kik87Mav>UKA)XvVReRDG zrLH|;te3&Xl?9j<4hQkOb$=jMSDUY$bZs4O+sgdZtM6DI zq&hSS-(q8dN2l+@UK_X4(fnm%>0)PKXabR1hHuQp*{MwNf+t96KbA&6MxskyEgCe=g=D zwl%C-F;>|gQq!#Q&Y?NZ$FK=~TT(+SJs{`|RZ}$@4d?c9A#=@Cq59ec z^=nHAbE`FJtD%;k0lw=))4#1Nf$RtC`!!(Cu@1X>8j}Y0yL99++FPTZL0BO?G;oXN z;y?8Vtbs%ZHy#i(Vit`l()xqD>wfjn7w{z z?qjGuVB3mNCywh?3J#-xlkKu&_TEhOq7?9>>0>rOF%fMh(yCd)(&f7rR28_?k?k>p z{8Ak~awGh#J!lS-K*c0Y@1JUs2zcnk@pj_hFDw+zROt3nfHqYk}%`CW(b zwxjUv1<9RTX%Gd4EY)ARmnTK;E-N~SJA2&AeO~!z)UF7o&XnU%UK#A-MR~nC{p9TgG$0Z_rJj1*=vKJ@V=24iu-)t|K{Uci``DhjayaJNgCM z*YJTqqAidzWAZz?LpiH8Bau-)1u&}Pe!$c>19`|j{*_G zMlD{1HKkQ8O)9YlTR2|9fA@!+;Zt1V5qO-4dN4gf4*RzQ^nqb_mdsd|Y?^=7qemj~ zu5}41WtG-T(7K(5K!&G-q`Rcl)jGn}8gV#>+a8~XdzrY=T>Mu2sv~P3skW#hx8*>) zsFBnzZfOP;2BcT*M^mvNQy+PKb>=x512C>84BS9G-((pL6i z)F%5Ma>a_+W14#A`I*x}Jzbsl8F-T}YU&hJ(p^TGjJ^~`F$VRm(lsU22vrCVTBu?U z)+TC1{GdF7082<~c{K=HNV)anrhicA^Pmdtri2#Bgb`=EHGM0HJWnMlMx1mVoy_SY zGJ*Sc#*ELV@%W6T@#D(wDeB~izZ+rAYG<&7XodZVn&xZ@MxzS{zO5^jhG=aas65Mw zI|mjb4Q0})5$U&`yfv#jN$Y6geYW0o#5~;0>wlMu8ETRSuFBVjHzQm#LW0* z$T&)wjG5Ik&E^-=4X{wQDUlU_kEz$`F>V0a#8R%4e$R{dW&4&s3|I}Ed z_63t@v6!$?8!+jcTPD`9jYL$!PnR-3_7)(T8tU5kM`u?jVF_?egBu#N^d%4cPO7t0 zM6VFt@*yHB@U@rRNv;WS9dO98!tJCEL(^4ex=&h>z4{Jc9A|{L-bs&%C5MXayqYzX&B(7 zH8iVD(-XOE(t>$1(lZ7UQ)Gr20rO0wdBU)RMP{=B20R&rZiTUtyQ&A-fjJ*^!(JdP zK%eeGLw*S}RQOaCc|~~C5+p~Nr@^(q2X{O zd2XwF#0~+<^8A`i->MT`Mgzpu5Fc&2Q+CoYp^2TIz21Q!%%gF>C6?xH6_Szz`gE(^ zgU1`Jp?ANJ?z>%-T{cV_Uu&>*I|nPdw2OTa8clt~WGHdN+4==s<0kR!O=aj0>={Vx z9;9In)rlcr!*eI7Yg^r!1&U?fgKJ?wm%Ok+UtggKXjbi6k>D1yG+M3~YM^CdQQU^8 zJtiOWO)r*T8#H{H-cSB=80E04efw9yxr|U091rq)`*1+j-Z^FG#{5fU*NeqQ-|sZf zb!8{;;@bX-oD{GjvlLRsc|!oiB}2%Im72mF#-h86V(Sy%9vt-xnFTw=HvHz>k&OaGRBdeI zSDo-?fbZn4A{`$_H5=f`DQCAqX&)$sCbMG!{=|DuQ{plTD4s7noI_Yr6bA%?Z2If0 z=V2g^uw;V=8g{}9`!S?H%jp)Mz}2#`XOx6==1&u05UAB3i4x zwx8MF3rMJwX|w$So&m894|{DgV-!-=443dsnCTc7--#fX3;qS!J$`FTPoQ2Fl=u(92Djm`m#T}Ah@n=Cu;O~e~*ZZ8ZTk+EtWA-#3qY^ ze2A&5uc=p!zJ}l2|FMbd*xNCw>!Nl0?fIk@f>rP!7fW`cVc*4gpvN=f=}NcAZa2MZZ_@c`?p$@UWWwkp`q-N;oTH-z1LX1eVRRVF(#TPULIbfP>ri z6ZHSI#5{7lW4HqT!BQB3fc`J6oB#iQ_+L3CF9SDME8GA0h+JuJIc%~c2OuQ=1eNjT zm|C`p-Pi@e)mo|$MjTonu5X7J(Y7P6RB6*dqjHS1-~Mc4`KSD?y?V9X#JeoiiXs@= z^ZhgrU!-B~8rqq}s2fA*7Kl8yrjgP|JM>cl@ZZLTy3e}^nGJPu#rv$NR^w>OJ?l+_ zCFzK7_k9hsR}p#WIeVNUz$kNo>b2R9gzg%v-(}IUaKlckwVC8jIT{97X3KXLOd^;~ zR|!Rzc4b{*W5V?Dp}BI*)BoCxv9A=t_f}tS?lKO(iO`y6ciov-lUTpjqQdOvz^k(G zWyt*H<~lmz*A|gG%g<(~r=&ESg%>HFe%6&g-M`6=GvL8sa7s@MUbC8|zQSN&$a7Y) z**cx|>)OSWjjtbXsuk~_pq2c&s@e!9g>ZXQhe!DbHn$E{OK4C`*I>c#aHaR5#{Vly zJvk->N6l&AGV${W1|;A{2<@uxS8D&L;(4nJ=GJ6Lzy;PA6V@Zl#uHr{t(7{qwjI|k zLd~3J`_fCJRfOqV`hvIH(mk79P?!CJZkmw94JI&ke7vD$sw}6rMJM#Lt}y^9?!vhi>j+s@#t%YG(m5Ot>6Kmv^nlC-W2xUrsy>!FfwC+a{qgkITZR(?yaL4W%NDh3VTG~Ax>T?UHLZvPnZAe_2T>7JhIchB`26vg6Njin zNvR}>z_kK0aS&1pGE9_al|af{?E!XjFj?ibv``wK{HsW9Mj00EEt{F{ zj7MNbby9S_C^_p+D2qAIHJ$vF`LS+jTz;}&ky4u04*V)W!0bX-PZul8fR9AR))&L{ zQm5aX$zPyVTIRNG=5BD5$!Sgw#kofruuS|qiLu`e7_>CgLzU)!lL*wkf@P+8M^i~T z^I0>!U(a2a=CU|fmYH^18_xGpF|F_`44?dgn)N8pnQDll_r3Lhfp;1c>c-GgiVN)~ z{}@1`Axgr(52_CUiDxIswqaYSkOmNVS}ZT97;(Ykcfc^#Q}a(Q5$@43(3|h*&2Y#~ zGA3tMFaui?CL4RiBkP*~e7>EyAm%|RJy=Ix4l)9x7SkdRv8rt);%_e8433(LMSCmQhM7O5%#Vn z$~t8v#moG4CC$gSoMF@dwa4AKsz;J3iHCByIkn)*fGpgu*bK~<-2&PrQ1B-hS+@f; z?vHJ0a>^Jkq03fV%`+miCPq+b@~vEbzLU5URBQ1`@wTh`vBk8{_DT5C;4ATmZi7C^ z>plXA0G=czWm;zP4&#tt$eDZZ_#(qO^|7;1Z+$lHRur2Shi$YQDRN!6C zpZDv=dSRtA;6+cT_HjUEoAQ*qPv{HXWPGxJq*VJ8lHV`PwLc@mY_Qia&VK1@RntIZ0d#82;}x=?(a2hM;wDoj2SXSU{Y^0AUNQW(anTg_ z!e4VaC*LD51CmGl%8V-bgb-b)CSwD0{A7`ap!DjiwoYfk#RLR}IzVMYsB|h+3{MJN z+OAgqA-|P&<5ZFu?;-epG1GmJ1Z|Vmk6Mp=>~aRuxUWb~sYRcvcARM$DX1>|Gg;6s zP%~C+mQJ=-h}~$XhJ7Y7iCFc3SWy{L44SsDyZX6xs&eV6@-=HK0jUdU*A%K+C3?J? z%SDuCQE*n53c4o!Yck7n);C&sQTz-OL6|Ci_hP9&_1>jRM>g8ct|dHWD`bvLR!7_M zI983c4ORF_OTO0T`?OQ#6OEOiVtosL9M)wtd?vZ&ezE;n4I)-y!krch+$uk)PeQr^ zLPibPt58ss^7<3Vofi8gh!B}PCH0O{qClX|_uH6hAQ19Ug)O{_K2TU$8B7OB@gy1;Mx8Va zfO^=m3rG8mAN$XV#EXetL0B8Q(2`_$0b~w!9t3`eieiG%I(RriYo zQ-|3JE5{S3>Y~O~?U>IY>H=G#-tOVbi2>`S)SX>DfbVtIL9hPkZHj+xo0K!MK4tn2 zTYr1E_iT29K{sZM?W)rJB)k14It80xJawvg*%}#WpW|Fgsz{@-&Cb>i+5LKMF5~07 zQq}A8vi)0-->LgH(=@z2#zO69cO(9DOw0Ws!ppJgv8E%i&Klcj46w*p870SUc4erD z19z#t^+uZ_6WX!raed0yCM_-b#sVj2C3q#L{5LGNs0dKjTLR!+Y&ms2rAFplm2Tnf zT5HPAb!K^wVrO<^H{nh=a`v7^iMLqk%lN=6smx_8cyp_LHQK>yVqP|^UInD;EAg)0 zY4Fis0#i`nvwH)H zch@w6EK+%{CB(#NO57eDxy5k(P1wbeSggl~&n-N9n04~HNUX_UpOIn%c_0o0nZY|s z4ld})n?0WquzAALuqo@7@M}MlHxtjQ>&PfLv?vcM&2J=hYV$W8AIT$&umH*9LU9(7 z_9#kE6Fr)RQVgKw%u09;|;d|u{jN+l zQT&}zYKjhq0CLd8Yp1I#E0Uj%ks1^+TwP{rgT#vJfKf+Jaqvvhi|Xr3eiwDgW5kw5 z2@aN?j?h6vHVuaXNqCREB7qjTB$_{qi9C>8eWXf%3D06eg6-f3s-$X&3Dc3N`a>mj zOo)>6hDtIca_|ct3}wK7OU{s>ZWea^3zids0Rd6|4~AxEGka4r=l@qij#H7V`d`Gm zPXhE4WRXh(L`f=CXas%ygugme;z=A)<#bU?ox`c$FST}WBv)h;M0YcnQ`L>zLU(_p zQt*78dnsJHST5b*EsDm$JO=-ism7z3!2!FZ}Ij%@7?GVQZ48hy370H2nD+KBN!LfD4PYvT)w|{VmZPVbr zlIh;nZr~O+#CA~cQ=badRO_7AJ4>8J3AcUd6=sZVsmT*tY9x9*H z>4{Q}3!?}Y8(@;nF^^3o5BP8LP9%&DA^{8#Pz%lfm3R1`&v#d6Ba{CxIc1Qr*^2Z} z-?`~OudhG6riPy@1Fw}##FPx=hO&MkTBQf8{nKM2Pg8;Fb}_xz>thjKENNBJQ+2>j zX^7REHug4}xpyletzr8VdvO#)^Q^a(liJ;}L_34>EPq^Sf6)`}zO)!^qoqOh_e<`$ z&{}Muvl21-OlM&G>vez)W!yy#Uw+zZ8hY(sk4jy*Lc8X^6LCdJBd8N?MVqdpQ|nBH zBpq_?Scc5Cta6Eufv4fnj>e%fr2Nr&N9}FGwY8K(7;d^EHSO9>_XiIQ)tG@ssrp}vjAnH;a#tKb=aRo?QNI^Q2J2B`gD!C*X+n3vuW+f<}>}G z_t2W}=)Q{#225S&SyLGPQdrfW$SFiwj%OwPMf<2 z%cD*#r<#Rr1utct$U5z-Y(A%M0V0*~!aK`hRs%ryg^>@)%7C)OxcvFPZ`Kl2*KPz| z2xw)FN;qoa$*Bjk3q}&O^_SE|3i0>2ywZvuzT4=XeE%|-!rI3%jN)gmA^0h7X+NCQ zu*WNjiXEGB;>4M5F}627!FUWfko`Cp=MZBfP8?!cqKvSK>h{%GcJUA76o*o97J63+ z>to9tTdc0ZPN1P6VjUVLRo~=7TFr5UuHb|23yYg$W&(W;*mZ>N(9bf!B{}GfsfoG) z)kyUsPD*cmpy2TmmOKXsPm0U3{}iX`K^xKh@)S*Md5Zdt|I_4ddtEsEIvXT4Jw zYtz8u8QF%=mzz_sF`ep~^4zPDhGfxpm>8V4lofm0{Sg`3tC0 z@DgN4;1PwW9V+C*hOct)Hd*rGi6s1Lk6z^r|Fo;6v~OsKy~ap~?+Mu}f+gsOuHqG&t8iMRO# z9N~5s+gu8vs(_NKNdOF4_z1a*M+)dWktGRKR`%BjNQUBO-ob?QC2s(cB%ZJMiSfo9!b62Y zhUpowF0v%5=5gbli^(MdSq3B^;HL8ZEp4PFY_-E^)bZw|#g$cs#U478)R?%~aWnkjYqk`j3>fc?t`zt2Gu7 z19$@h>ouMv!J_GE3uo@kX&IN-l2maqm@^VpE~7%(TOGwcvdBrrJX&aXHbdXfoO7?(~Hee4n_Uw!N^#p@lU->gQJ0t_^)6A^O-Go zrETj;wLX~A*{mp0R-9p3N#($@9PxiCOVUG%pU`HPJG|P(9TzVdrXD#?kqRi|yr82; zl!zoQvjka(S26pQ=(`67^XuzEDqKMTrW($ ziL<#y-rOD-jzU#T;7aFkeTc%;bS80)JPP?bDXZ8X?VJLMUDakJ@KI3|OZfOPRA^5L zfuu3)6X%rvr5BHWPvhBj#F_a%s=PyUuc$;br#)ejnJ6jC1aAvZ0&seJfFxY(^dtRp zmkqF3+syK=@4!h&7`3N1=D(J(Lp z6Vr^a4!j(cgxG3&cGJY@&uB@)qaRh^&kwkxq-(?H9ZAN!3=-~wKUHvmClagHZTGoH z!D|7uBin?~7#DY4^TbtVPt+C`Ek`L@CRfiNESyD)bpxGp2Ay&|w=y%b(<>lMy9+uo zcA#by5s!O2JSf{+i@(phCXTFfFc6D~6-~6_iG8MqAgUlxEzY$pjC{B2i+gmjq`SCw zvx1J+-a;VwgnxdsOA!^jc`@vh9`UqaG)IOs|60G!on#T-Ky_bvYlut<^&2MMd~co4 z2@bky&xZO_x=(VcGIQY~>D&%_VG_wt53)jl+N(p@THRYT8U(-3YB8J=k>V-b{RFwK zK;W=ZWP;MXnJ$NjCc=Vny_HQ z33qA(GBVU*dlK5&F~{HpkizbUl2Bc2dfO5BQDcN`XWJXA3@6UFi%q`3bqE@wHJ_Pr z=4mLU?XU3smmyZ>Dv389y{{TQVyW=8{?(|*vrWHS0pr8c8aS@sbvL3f@6QzkFtKUL z0p?+SS_8S1Ta8y{OQ2#E$gI15Q{7It*Tdmvr*Rt_zJ~`C)*Mgit{fMjaha&vpMRd| zO^cqV@#<}3RT1;-v5|LUSPNQ-IacSN(Iyxc=>?V%_E&Cn+){5(pv%l-!Tj}jSK#tZ z1l426$|8QKK40WuaBe!@Yt+`gk5LiO+zaKzJ&R{RZO(4|FkTDa%EwTlS)`rscsyZ_ z`r{b)!a1HmHcr#`kHUW3ispgY`7E-1x4AW9uLT=0xlnz>p9Deo!s>*Rf*EEJR6XrZ z#@M%-(89~2RTllo14C8P-99XEWkje~&>_N?V?X{vzaUGj~N4_Q3;i4ObcQe|7 zj5r7K95GS}@a?h7ZLktDldmrs=GDoC`ztn+t6@l$012AyM{fQp6d0FqLOb$WkwQi* zT6sVIkRc-be*6IlfU%-&)%`6F7O2L9d>js70WLe(Y0gUK=L{51>xkuqZkI^L%-y3X zD5aF(_kLc~@zo7wPJP8^bqmM?BC%nquEw5%yny6>{5yM@> z9~$E((as7=mhXJMx-JA?CG}RvgmGmr!Y%E4?hHyrFp!#s%FKOXbZsIHB$Su~wJC=C zSz^-w_oJoPeyYavz8=j_DW)eCIk;W7tX#=$Zu~{Vrt(z{GS4O#Z)xp?7#2TIPCvCK>gps zc$&K1e+*E+?fZZB@?pzU$F!6Euwpxh=j;T7S}E7<4RB}k$tKJxl0c*=me#*twvtk5 zspJfB36ni%dv1Ssk<1$2;q|>;!v3x(T`~@+M?3*^qjso^r=hR76|pu6kHmF|EttyRm2x^!<)0L?3isYJ`o4STqvMyD0J_Z zBW^*!@_gi|=p=mw(GM5v4Y%W$%miY`^`E>V2|tkFkAysm=5SlTmP`Utm@Um}O3s?JUfeZ&8Gv53ECm_#W9bHs*95Xy|Wgxzy_eWycVc@zBS`Iao8U{+J&K zw%(tCaVd}t6VI9na=vVo!Mo0+efSQq2LQYRK00@aNx5cMi8P!8V;03;CB3 z_dzg}0>6_7T)L+vFUW<}yjTpEL?6;M@G@np$<&8TC2kPuOI;uCQD5g~hM{ZaLsG`Djx_Ku@LGeZ`^Jz8ebMGeZn@K!E<=!h z?&c~yuRCD(esyAOIkP}f=7fTs2fHg7$eWY4)Fn#ruS%cvER62+tyOZHyr9ynGYanl zLNPWtI}0ApacimmwetXIH?TU{^%C6u9bR6M^3eYR;pa%zQoWMK#dGaVdLJx|2xRR?#l^CDn$YTIEtj=tWS!qO4m{+DigG*%0(X0X9Ve-I!b zv44l+e@+YyjI0c-?9Kn_OZFyabWHS&^o+)A^rluWu5|yF9T;S#M8xD(#PpP99Eunb zdr9sH#Q9p#&bMEV5z89T8JTCyT}XGq>Y(CnEsDNBa*3?E^Z5I7se)$@b%}~8@o0~Pq9>1s<4O=4-2@6k=^Hbc%WK6FvP+1H(Y#gZs8dVr>99j zUOtX?04tU#jd(%kdKC_RZ{<6E{HyV8 zDofvOX-SmO9xzrRWfsnkZTwRQbBmKn|7N4H{I<}ZK2cc+>6xmDv2l(QqF+d1M4@75 zO@@g$eiel}yVJoY~=hf+e3uRyjuApE(R z_W@N8Dt~R@<8;sHRB%N>TapEalNt6h*)Rnx>e0OEII!zQ8l-OoYXjAIUWqErAU-u} zJQo60t%xT&5ph!rCt{|RRqN{e2c-9H&|b}v)MN-pc+z*_3et3sY+%=fQH5_BS+xLq zNaxbjhKejDV!c$qg1w8Z*Bnvn|J97E(uA>gAEx;WX-@(FL;5mrAW z%}7(nG`CbeOIWM1^n{R&3U_Z*ZWK*uR>4hTfreNAgb?`%XRsJRkLG~;5ey}>01swk zW9^VT(YxE*%%&w%A|-njK;a9m%}*co8T0`Kd%q@) zPT4NW+1b$|Te4!u`4`Ol)>LsuRkgnmbT(Ivzbx4|H+9_oJ2d>zerBr|dpNI3-ZV3~ z3C^bBcI+wE<69#XI5=i37OZqMCtA3qabQ5G{=g==9$<^t< zdpZkCCdkGKSbD%wAyGIlwjjH!_utq31TcxsuEWfDWq(QsmGvJNn~s`&km zgr2|lY-dGo#+zIECfXDIFb+!@QiIoVy@USa9sJ{wZt(!=;p-T2Iy}_X?dzG5d&O|t z^Z@SXp6zEk9rgR9?7W^*+NB2NbIUNwA*y4Xuk6WRn#J?&{PFZ~`b`Sxg|lU;SGp!Bt_t|w{So%%a?ocR zhD60UCHE9?xm?1&)C~mvXy}QFc-uJVijXfPlRxK{B{-R)poVorqXN{+y`Z9(_MiiC zA#{NRV&|&(Q^`801POWWbTEA|9XA~(A#a=mfo$>znM8+(iJfD6NLW?F+wZ|WtEzBu zrK0z&eB#oiEI_G!qd<*Ycw!g@5wDe)Q$1saDmo@WN#H^{=#%j%RWvj@!h9qSsHZ~8 zHM}N14qI`ajYfCz&BbC&1LM;2H%X7wbqbnz8fuD8jK!9ycx zsJ2XEs8$#=H5K$hEm9sQm!64ZYLOY0hGp=bquw_ae$MvvF{e*tl=R@LW_kxzOvQE) zX!s5YwW$M{(co5qP66R>2V;Xi_$#ZH91l2?Mw?+x>iA6sf14LHU0g zJIkoJvgPe}Ah^40aCdhJ9xONncY?b&1QOicB{&2K?(Xgq+}&OBcJBSp%}n0R+*E(K={(hSm#Gf#hNGvZSVJd2&7tnh z1p&xQ8Ai*Zc@>wlkR4dSf+LVpIB%cn%!(VC#iSqKt_a+1n<0CY6fAuBqV@T>k8UYyPCYsxpt^z%7BO5 zVqQ*5)g9|;FtLh(E zE~aS>l5Cwrcr=g$e4yrIu;Wssw~{d~$(kW8UuA4a`od^wX4e^)!`)EA?qSbl8EJqi zrOb#`jr)E)#C_LcAHBnk7lSf!~WuPcn~ z5=y2M<%1^UnJ5lC5o;UU*u#4QIZ}2221MD$ahoDhD0U{aeK5)r_ADer2VGN}!RG?y z3H7eTOrj_)0gDOmGlFhlD8va6hA9hzOflVS5Zu0V|I=~`?3-<^Dve1bm4sJ9ah z!{bHdNR!K_p0i(lwKc|0I-D&SH639ck)~*5vns~Y*YjdXb_@kCm;x$7VKS1gJhP59 zT9d3&#BEteB9*}-9cT!Z`l6UqQ^u2bR3cN}o>fbRy%#;;L!+dBg*0Gk^-lP+@_I|0 z5NV|KnJ%@TY zInH(31bf1INSH(JSCY+G^ZHV8yB|o=8is)NW$gA1A@I;>7yCi%9FgjTeb$aO!jjGw z_H=V|wOTVsui_taiuE8(fiMr%n1@~kaC}SVvQ_$-~i9VfFZ9)rb2k*11p^rNQnUG;0^lWa+mM@4OzQ`Iho=T+3G?|aEm?kETOE4W4 zvBA-kv7NxiP_B#2WUk)P71PPcM;3_3hfi3H)UZgiq~wcdy@<<#Ed8uNn?(wTg623k z7mb4*I$jD4|QeQ zl+(Iiy|K~hDQw?rB%h+9ui>dJFt%QwMJ8`jr%Sg!8`HL|BvT(kgkGA0pQ~|}pDmC* z`2rs=F7U_%URgyiD}$!W^Ja`fbKHGQAv8o&d<^;9j0Fz<`GZCBib$1!B)WU!K3pi( zPB5|WGoJF^Q?)aX-NSt+GQPuSrkdsBOKm0)mLc9aH-)c6{Ux%&jV zdL;{`;Z_Fty-X{1p!2tMZKHnj2TpsP$80^Itf%+ln5^1ekZJg z{SGC%3L1Qy5OP2GI?JSI5#YLQtAenXn83Vqo=@79&RsKSSzlj~8!d5@RGs5c zbk4?_jK@(sVj8`m_QCZo^wK$IwKnQzYdiKK2Z^YmW$Btz(V_r(00CzfYI z=JgTuA+(3>Uf6zA(k8Wt-A7U2FggrtwZLP0Xxau&K-C7=F#Ppq3=eG}{RJNDAnJfL zwqoSKK5Q)Q`}b+O`I#rw6CaMRMT82eJ*RCMvX7KP!CY8+(FEL`+#ixCnLeb(f8s(l z#7lQ+C`#Qjat98mBqilykHv9eajnf5?Y`U&suw;%CS!0v`g}u+w-B|Yp%1y&4F+q- zA*tkO&{sza^L|PXA;t-k4$EAO7cY$MnlHgWtzFdBw#`-F85~hsPyhW#rZ05qz%_BW z`cF;+CeQFhpE-Qs^TZ(+Sd(6bQ5a3$)u9cMkfXxZ(zt~Csp?Z4w`j2jF>~!jtTVMg zFWkHv>Jq{u?W^z=$H|Yu`H209d}^wa4W#ajCI0?}`DNDz%5>?wecAXL69E&14{W%j zG_V>W{c<0x*%n_L`K^EDT)?ZeeBWjwl-GY?CANO+0Nc(r;WV8&F$wmH+Bdk1C-02% zI`xR?Rncj0LO>=3#Rv$(8OH5$*o8nT#CD-LcIk25DmWRvte>-~SDzP&n6Tr~tg^ea zjp?L3bh)jgkc5ctMDRqhDg;*E6(Qs;VE02@Sb1F{Q+&neJCwAYW_nxk9aV4`>fFuu z)TV#Q=t*Mk3`|tPY62JeA@A{%vSsf3>54ul4q5cWc)iyvJw#xg_)}`rgtg&h@CW=} zHD91w*9G5uF9h9tT`D|0jrtc%!-zh7n%BJ1*_BDR@ekp17~e0s3J#z&_b;^z{dB=< znFn||w$-heVysA)ETlq|C;9XDDabW69MG;0oi$h3!>3L+ZEC5*x| z{+WJ|TZ`6{T11|LR`qSdULTtUZ{Nwd9l@&vxdv;S%AtJLhzrhqo0W9!LkB;lR;kH? zyUEXiklA#uZmUDFCi%{WjV;%1%n$psdc@CY89qG-3s%Q0^t0Cv2s1AVs0!Wci3Gmm zL%+=K>rXM1z~Ed{Im|Ufd98MZ5{ZUaAk@psBe0FmT@{6u6c<18`6iNCF0*XIs)q&} zcWlC57QOeAB}L98AfO$;CRlmd>{ym&j*d3A28&_|XXNrD)cscINEAz#p- z0Q$O6_Z&`ERuBet(zrW8wj?g(h@c3n)cGjzDQdR9$KE_3W&Y6`_}%s(q~onU&u(yg z2TKM)#!+!6nIeOEO76S(Z6fNcJ2Yq%M@>v?%5r)Y-if@i5u~!yzPM8MA(!>f1jv9z z^-HHggmUp^@Da+&_kE#u^-5P^fhZB&E)}}A&uFy*-n~f`jpw#i$cVRN-c@x`9uuXa z1S7zG=FjkSuTe9Lofs2xh0*%f3#>39p%jN4m+NWPQ8_Tx{byK3V8?{5X>XlO6mN&W9n3H_~$y|+= zMBcBIQz&cF$nq`4+VmmC>e z-_`HP&#~0*wq|{?ZH<&V#Jj2E1FwCDcF-pB@;OdUd(rJsoQJt~MoVb_3VdHY1WDBu zUYB6g@^)SXZqHKy>Z8X!u4>r%>9Ri_tzZjjq`kzDjd)=Hk}&*v5Eop>{(^)3Oz}&p zywFDey3LhaUBlobl$8ZOvnQQzhw5u``g0b2o`t0bz68@67i>($mX(nY|H zA##LjH)6^<9+TsCb=H^N_CCi!{ivn>%=Oe1nDJ0o{ea5(ko6ec^X)hts&L}DWXOB8{(~gl2&ML$b4yN6PmBDx%cHsZ4|*F*9wX}Vpj@yj zy)*K!+tjZB0kHlX;S~e$bsTyg(p=VZCi;mH3O4kYQ&LU6MuN8`X{#f85InAaraa}$ z%pI_#5bh>>63ulO8l?fO^Q~V-b~m)|joL214<`U8J%o&4Y|BeLXSyp0={OBkzi^O)y%WqrzuMf13nmq6P=G_8=mDLf<=B^3xFAj*hMYw=_M7nZ`w7ggD$*YX-uPD=k@f0Hb=s=aB#F*!5(Q7zUCEZ@DyC+0zU-QX|)P zw!R`f+Yuyt^Cw+>d0y$i!=C!CHMtNZt0 z3-JO3Te`At{R0d-WK3C#{dKj79bLxkb3~1X^1CS;pZl#3SXaDh5~)e~ybDiqUBlbZ zujkx7VjzQ#IaY8*dTkO1c2E&C%Ey+e*SU?Cp%b3$?apT2qb1MV=`3zZ&DLfm#|X zbj2mNHjQw^sK)R~8O9_|I3i&(e>_!N+g3dpdmOI{THQAC1DWWXL#cZI8NH?UGjN2< z&%tJ`wOdaS#^g}F6@yM2$2Jg*gy%kR7fvYKoYmUqmG5Cy2()Xs(pu}lo@c2nfmQ{Q z2T;WK(%&EaInkAom9mns_0{FOH1jTCY^Ps5kM{(!19`L9HQ>tZ;2L$GrNflVp#{92 z%NcDEy|;XX4`slS5a1PD8*Xi(h-ySu718NA4GWr=REReTgzkxbk6qx2S+QaYN3820 zO=yGQd7)MRaj2hO|AIE73SyR?cm>6tutw6>fwU4`<39m%?Y2| z`S}*&^I`jFTK;Ipk$~HTiWs=(_s8z#n4>hTM?;UB{t#373?JlAyv4)V{2%L4TTU{$39Mx9G zu^UHk-W@i()>C2&&d+;2d!F2VWZIe5+GyX_Vd_aTpPgHuIuZ`Ny?+}C1$P_=L$WXb zJvY7^U1G^UF9fN46x5bwC&w#pD)Bb993-sv+Z{BXA#d2?zPiN7( zkt&!C@ILHj0N=K=U731}pUxBNK^0W@qR?bJ=Yua(@tX}7*_}Y-i7|v#cpP9i>ax5h zu2Vz3evmrZR;n_Gg_13KqgLwExOnFy9B!@zXYftUs9kEWi@em2jR+`iepMT_Le;|P z&G*c2tdU0S{DOj-tKGLj*k&0gk1~U4JU^;sKWw)wm#(3R5stdO3?2yM@V=C0Bi2Sv z_ZjT?npeLjrjl*zh_EizpeKO0PK@L$MjzghT^MrshGAGH??5ZYA{VDyg!LKFPWHNS zt8&fA;Qnaa65^9?dr}hNjA6){(cx^bcQjO(inU0qkX`_I)txkW?=EEQ(&mhrHdq!a zyk@6?lPbIiQ-`Pd6Ec{U>|;L74k?e(37rI~!r%slQQP2{0tKgk_{NNzT!+_HaX8q5kLr8Z zwwF)e%-Or5ou`U!JU13HN4K0!2P+!dJJ-7xsffco(epHgh$Lw z8M2g*&F${0*`Q{*O9Mts=V%X`$V4z;0cl#!b2D7nzEO+|F{%5eOs@t z?UMB(SqaoZ8L?60kpW2S&&P#cC_Q0DjE7nM_38$}Zq{~<6%32emaR?3bz;I9(_A)2 zSUh}%aaBt318tTh>+-ke_EuY#s&*IBR!XvG>;$xiFd%2Lnee^+zGvpGYlA9)fzn9a zELz%ehCby6Zrq??Bi(gPE%pN=eRncTq`>XPJGIWURwp%Gm_9GKz^I7vOaK9PVETDsC!gW%842~uoWXa5w>RQ!-UyHRdA}W@w=hN z2?~uUj`HRZd&NtbhlAOFhetYJaJMH5{9KtOljY95!Sv`S_2zB3fF(LwTt}8{a1WKD zI;0^w)>~&VwFbQ)ANugz{r zZJ{BRO#-@i8a>e*K0r}Rr7^vn(M0i%-Kg%L3?9C3&2o&&#u?oF5+Rv+Vw`g!GOzlW zEa%o5;fdTSiv#QG)vcPtV;Rxil~L?!hLo75kVpnC2;pDLfH){IKVSjj%X8*++V=oRGu)}r+cjy|4AvUdepcl#8(|wOCZVC%?yrhF+#sZ6nuH`2#`E;_8S9CV`o}BX=tUk%mkp__T#=jnhunw3h18yCUtfITOp=eu8!$ z7ZTOY`}?rP&NiM~9I|pO1gh`c8Fs-OL8Xqu#sOG!pGnq~S&}S^O4P^7;SaFNEcm5Y z+=h?_vK=jVM~vrU!;8XZ^iYXd@5mcdTp;oN*|t`-&rf zG`|)5gGEwE7p&2I=_Z9mD%<|TyEe9x{Zpk7c@1CTRH&T+oCyI(t+w z^g6EYrQ6xQK{FK)-FT5CV#vLzd&pdo>~O1*H#>f|&BcscL&ITOwNj1ZU4@oY)ja!A zZ|9^axyvEBFx*QpHLK5_xzkWw-kv}`CR9Q7P!lQ=k}By1T^Q>nH|B=C!a#I=^VYlo zsFiR1p+{&%)T*{iepZTz*&O)llamht;$EWn#;lOm&T5NVBE0%X&0G`hgF9tzxM_{K zjj$HrleYI;321lmR;@Y_(dviT78Z}2XM#&OU?SVue>^P_K<8AVk$;0k6iFb;5 zZ1)xC1TwU=CNd2+NjI+nK!(ORya?yBD8;FsQjeo-jwkQBw_~vOlWK%fR|ShtrhV8- zJ2>#5=+wk+vZ!R%dkV)&QLu`9 z`-8-EcdizlzZ{dlgM^)s4G6u|rHhE{&+j<3oT2s8( zQQd|0bk7y9d%6tY;Ga*s<@xh-B>P873UX8!lFbk?Jc&TUr zTUcIQZ>QnYjz=KkG_q2{Bl3>Za1*y_Y4&ZvqfT-6ddpa6=oW|G$4TJ?u-ExSOnR!(l>`V?6mvnW~Z_ymFgJSfPR{QppO)@OS6adnv8y zjckh4Br{@+MsNkA0L|kHS0!AQe0dXZd6ikcpO27o@Qid^s5rn6zi(J{ICqYG+jSq zrIMs{KOI95BUGW{7}FRl^AzjEChWi{oh;BG+d#^E0G9vNMn@Z4T`OZ}V=D$nS4Wu=8hYui zKXZThPRA#&_6UN8A_4%QdcFTG<48$dR9;D}I-x%~+YC40#)%%epO4P{1z0c`OOCZ` zqVVgawf)7=!#)<4p#5)C(ne?L8J%~KO-^PxHt(+Ki`NUniiq#G8#Lms${uFugc97L z-#qpnA3*evYVv%k^iT{Cv7rxb3%e9taCO{2dkp~GR!}nwpW4y4Is)EY&9{+6AC+f)36Is>T=hoeY-Xg zCSqffO~2ZK<2Xdi2l_z?rO5mpqRWK9AiOUrTc~w5-WQ|^tfFA9_}AIo6QE}C`H)@e zH<9v`X?>>UCH3#QuHJ1B^yU-144Sy4s18{eqOH7A<0UNj4c1twWI7?ZhciQjGZ8)n z=adCILL4I3LmN33k1_(lW=pxo2)tHNuVtKb3cYDCJGfr9%bx-Eru4YMW)~~e*J_ZrUg3)Sz*TxZy3;=Y6_@NeK zU(x1PVzt6V7!Pg~SmkTqMk%4nuNB0~B{Kc+@5-^6d6l7VkY5tBiCGJJFNq0GEWVFh z-c4Tcs%8q+;*}CNy~K6#a@N|L$Ke<6!KlgS-5U>izDhE5yx7bjdv5VoT%*-m??`bc zTi|OKj(9Cx9Y%&J+)Lh<55dC;?lf~V75V}jo@8;&BkqoUS#6Rc9`ERYdC(oLGWr$8 z$6~~?aT25l<(3=f&TMDscjo|MLoH9n;#zzQCY`j6^)OJ;krVb(;{!ee7ONC)*z6s0Oo(gA4(hW(G>z4S1Kzu1_Lq?M7w{XoDYVk2j zM+l}U{4%b~M!lm+&*T}AG-l4XLt%)aVHZNTdGBhIZIU&sXHw*h z;|6P!+Y6CsT}r9N@%mD=Ri%lXIVFqn_}`P14~ww$u5xrWPh}{G z6Om%4 zBeA|B80)CRjFN(mFb&a^m(CK z9ctR>UMB1!?{^EF(AxNd(wdvHI6!xrp_G+kq!9GPCJ$baRD&Gh~iD4V{I4{&*FL(eD7|8+3%V zSmiW-nNs$}^ichChY(q1!^nhHs4-U(uRzR?MAR353K{%f9=N|)hYNCYtwx=Fv6nTop^XIo=e?;=~$S2ipwU)$KFupEma zKnOFuq&{pK&&D#4++JYOD(WQKw}(JZ6yfAuln3@$W`qn|TIUu>5948{`e_!WVDK(y z-Rk8H6i$RY*1Jqi=W9RM=ZT=S>EquE-j3Fjn0n7k)xt)62!+&NCR{L}R2sUo(>1AG zm~PB98yP+JoB$k#Al`63J{j136nKbz^r}DpNRFa1s=me_iz)pgt6Yb&H!)v`l+HT zqi=<^Y98Gi)^o*MfE?O8l}a|4vXNB}GVF_bQ}UiVQ~tC1yJ(O3v1Y?@RiE(gldmBQ z+Bn|pK2DUC+U0B$#Xf>48xCHZ&Xtmp&A}eKxnw~puuxx_l2WW3M+s6Mbv?Bi9eg^3 zZxP)6Js;_Z8VEg?%UY$@!`0xQMagy)=2*;0hv&-nDACH=ce0CecbEl@$$e06 zde5IX@YY7fjFyeKdW;0#J}!lo9tR$rFHzT<9Mb4Ik+pyH59q*FdS@_eV?`64tnMuU zD~;+yv4QXU?tV<24MM)0r9H8G_QWk32&%>^PQYUE`4ZPHtz;3uv4d#@z`bJywpf27 z#m!kS&3Hf}@!wSH&69y;nU9ki?eN+zkv)@NYM3$ES1YYpx8ERwN4V{T8oyi8*a575 z`JtKn0t_7hlE?)>10ub3G+rKgfpks*fcM}a1IpcrQ(LsWn z=GNwpy1F3As$W?_y@7EnpjYx8NdAi84-n|P1{evt!|zyzR_4amj=w>Lz;Q#^fs_`j zK--!hN{fG7HNYa!X5zOf8*3ADQzv_UM{^tNUx+`n8~dp6PG><@Mfm~%B!A#Q-!(uT z&<^5v#P>Ev##Xup`VK$Z*8SPnAGkph8u@JyP6Fx$0RJyI2T&gW?{I$zLjIZbV+ITp zq-a~k000@j7r(d~BmH|4NV?cu-^$$mcdq^*MnB)nAAv?(12h+ZorlK|XsZ$UrA8qBRtf8(FQcGi_Y$TxUU{l$+R^dDCZaI)aH zC|w&{(J;eT?|i~c+J=RJO7GC^$JksZk78c^8?)gN5Y zcMTA_^}nP4E(*7o;co>&RCdrhK>8PIYuj(B`sOzOGyqdfxWTAU06-;Z&rk9foid1^giUO)&`Oj4YRD%9Tq_MTr`ya}Uzb;Q3A%2$iSOCC!=dbUs zd!&B^{@d2y5cvTz@xdUE6F{Xke>L%n@*j!68^#}RuX~1vo;Z-FFraXy_>adw){r*# z-va-md-MCZ{}1L9mxDJ9EXY9WUyV%S_-Ce}js5RlvA=dQ|HIB2;D*pY1Aq24|MT4Z zF!I-?wLh7%693HnQw!T)p}%$>_zC@{^Uu(qeF%PK{wg*7lPPHQ-aS`{KdFSy|4jXlHq)=jU(3&bB7K4X zjQpb*{m;bT)o=bJMg{&K@xN8U{a-cbujF4V>VA?ng8oPHAN6&=qJKR${D~ed`5)2$ zIz;?4_jgBqKe-O2|0DM=2Y-L&|L(}|4}KMJ@PFn1`v6cu1_Jbs{;`vw0ziP)Rpe^W HItciG%N;4K literal 0 HcmV?d00001 diff --git a/scenarios/rag/custom-rag-app/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl b/scenarios/rag/custom-rag-app/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..06dffa63c4af553f115f5d1d93b492acf2c0eb40 GIT binary patch literal 153467 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%0D4q)o$0q=ep2Zx9H_ZM-^cI~K9u&<3PgPIuS%E!- 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 z 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 RPg8`f{|fT89oR0R-vJe3KcxTw literal 0 HcmV?d00001 diff --git a/scenarios/rag/custom-rag-app/requirements.txt b/scenarios/rag/custom-rag-app/requirements.txt index 447d289c..70417395 100644 --- a/scenarios/rag/custom-rag-app/requirements.txt +++ b/scenarios/rag/custom-rag-app/requirements.txt @@ -3,4 +3,5 @@ azure-ai-inference azure-ai-identity azure-search-documents pandas -python-dotenv \ No newline at end of file +python-dotenv +open-telemetry-api From 1a9376306f3d038b528ff13549880ec1c0f88cfb Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sun, 10 Nov 2024 17:50:14 -0800 Subject: [PATCH 08/21] update basic readme --- scenarios/projects/basic/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scenarios/projects/basic/README.md b/scenarios/projects/basic/README.md index 53e5bef3..666a6f3b 100644 --- a/scenarios/projects/basic/README.md +++ b/scenarios/projects/basic/README.md @@ -83,8 +83,12 @@ pip install -r requirements.txt Go back to the **Overview** page of your project, and in the upper right hand corner click the copy button beside the **Project connection string** field. -Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```AIPROJECT_CONNECTION_STRING=``` variable. +Create a ```.env``` file using the sample: +``` +cp .env.sample .env +``` +Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```AIPROJECT_CONNECTION_STRING=``` variable. ### Try out samples! From d9cae67a32890392f4e9ed0416c53e3633696cca Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sun, 10 Nov 2024 20:14:41 -0800 Subject: [PATCH 09/21] add search to basic samples --- scenarios/projects/basic/search.py | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 scenarios/projects/basic/search.py diff --git a/scenarios/projects/basic/search.py b/scenarios/projects/basic/search.py new file mode 100644 index 00000000..ac1cb17c --- /dev/null +++ b/scenarios/projects/basic/search.py @@ -0,0 +1,36 @@ +import os +from azure.ai.projects import AIProjectClient +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +# +from azure.core.credentials import AzureKeyCredential +from azure.ai.projects.models import ConnectionType +from azure.search.documents import SearchClient +from azure.search.documents.indexes import SearchIndexClient + +# use the project client to get the default search connection +search_connection = project.connections.get_default( + connection_type=ConnectionType.AZURE_AI_SEARCH, + with_credentials=True) + +# Create a client to create and manage search indexes +index_client = SearchIndexClient( + endpoint=search_connection.endpoint_url, + credential=AzureKeyCredential(key=search_connection.key) +) + +# Create a client to run search queries +search_client = SearchClient( + index_name="your_index_name", + endpoint=search_connection.endpoint_url, + credential=AzureKeyCredential(key=search_connection.key) +) +# \ No newline at end of file From 95e8fda144205eb5e47b185e9268c41649c9f99e Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sun, 10 Nov 2024 20:15:17 -0800 Subject: [PATCH 10/21] remove unused import from create_search_index --- scenarios/rag/custom-rag-app/create_search_index.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py index fc8d1244..b2e10314 100644 --- a/scenarios/rag/custom-rag-app/create_search_index.py +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -8,7 +8,6 @@ from azure.search.documents import SearchClient from azure.search.documents.indexes import SearchIndexClient from config import get_logger -from get_product_documents import get_product_documents # initialize logging object logger = get_logger(__name__) From 44ada1da8c3f79446b1314f49aefe35f21fa4350 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Mon, 11 Nov 2024 09:14:08 -0800 Subject: [PATCH 11/21] fix requirements.txt files --- scenarios/projects/basic/requirements.txt | 2 +- scenarios/rag/custom-rag-app/dev-requirements.txt | 2 +- scenarios/rag/custom-rag-app/requirements.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scenarios/projects/basic/requirements.txt b/scenarios/projects/basic/requirements.txt index 5a7cabf9..cdaa06b3 100644 --- a/scenarios/projects/basic/requirements.txt +++ b/scenarios/projects/basic/requirements.txt @@ -1,7 +1,7 @@ ./packages/azure_ai_projects-1.0.0b1-py3-none-any.whl # azure AI projects package ./packages/azure_ai_inference-1.0.0b5-py3-none-any.whl # azure AI inference package w prompts azure-identity -azure-monitor-open-telemetry +azure-monitor-opentelemetry azure-search-documents python-dotenv openai diff --git a/scenarios/rag/custom-rag-app/dev-requirements.txt b/scenarios/rag/custom-rag-app/dev-requirements.txt index fcef59fc..91287b73 100644 --- a/scenarios/rag/custom-rag-app/dev-requirements.txt +++ b/scenarios/rag/custom-rag-app/dev-requirements.txt @@ -1,7 +1,7 @@ ./packages/azure_ai_projects-1.0.0b1-py3-none-any.whl # azure AI projects package ./packages/azure_ai_inference-1.0.0b5-py3-none-any.whl # azure AI inference package w prompts azure-identity -azure-monitor-open-telemetry +azure-monitor-opentelemetry azure-search-documents python-dotenv openai diff --git a/scenarios/rag/custom-rag-app/requirements.txt b/scenarios/rag/custom-rag-app/requirements.txt index 70417395..59a3e847 100644 --- a/scenarios/rag/custom-rag-app/requirements.txt +++ b/scenarios/rag/custom-rag-app/requirements.txt @@ -1,7 +1,7 @@ azure-ai-projects azure-ai-inference -azure-ai-identity +azure-identity azure-search-documents pandas python-dotenv -open-telemetry-api +opentelemetry-api From 4b65ab9178ae9ac06e9c736b799a0e6bc6429c34 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Wed, 13 Nov 2024 15:50:54 -0800 Subject: [PATCH 12/21] update rag sample from bug bash --- scenarios/projects/basic/inference.py | 2 + scenarios/projects/basic/prompt_inline.py | 4 +- scenarios/rag/custom-rag-app/.env.sample | 2 +- scenarios/rag/custom-rag-app/README.md | 4 +- scenarios/rag/custom-rag-app/config.py | 19 +++-- .../rag/custom-rag-app/dev-requirements.txt | 2 +- .../rag/custom-rag-app/evaluate_simulate.py | 82 +++++++++++++++++++ scenarios/rag/custom-rag-app/requirements.txt | 2 +- 8 files changed, 101 insertions(+), 16 deletions(-) create mode 100644 scenarios/rag/custom-rag-app/evaluate_simulate.py diff --git a/scenarios/projects/basic/inference.py b/scenarios/projects/basic/inference.py index e77de841..91baa115 100644 --- a/scenarios/projects/basic/inference.py +++ b/scenarios/projects/basic/inference.py @@ -22,4 +22,6 @@ {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."}, ] ) + +print(response.choices[0].message.content) # diff --git a/scenarios/projects/basic/prompt_inline.py b/scenarios/projects/basic/prompt_inline.py index 2f5f9770..093c5d28 100644 --- a/scenarios/projects/basic/prompt_inline.py +++ b/scenarios/projects/basic/prompt_inline.py @@ -2,11 +2,11 @@ from azure.ai.inference.prompts import PromptTemplate # create a prompt template from an inline string (using mustache syntax) -prompt_template = PromptTemplate.from_string(prompt_template=""" +prompt_template = PromptTemplate.from_string(prompt_template="""\ system: You are a helpful writing assistant. The user's first name is {{first_name}} and their last name is {{last_name}}. - + user: Write me a short poem about flowers """) diff --git a/scenarios/rag/custom-rag-app/.env.sample b/scenarios/rag/custom-rag-app/.env.sample index 5ba2de80..42e3448c 100644 --- a/scenarios/rag/custom-rag-app/.env.sample +++ b/scenarios/rag/custom-rag-app/.env.sample @@ -1,4 +1,4 @@ -AIPROJECT_CONNECTION_STRING=your_connection_string +AIPROJECT_CONNECTION_STRING="your_connection_string" AISEARCH_INDEX_NAME="products" CHAT_MODEL="gpt-4o-mini" EMBEDDINGS_MODEL="text-embedding-ada-002" diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md index 083d2de8..8f0ae707 100644 --- a/scenarios/rag/custom-rag-app/README.md +++ b/scenarios/rag/custom-rag-app/README.md @@ -50,9 +50,7 @@ Now we'll need to deploy a model so that we can call it from code. To start, we' - Click the **+ Deploy Model** dropdown and click **Deploy a base model** - Select **gpt-4o-mini** from the list and click **Confirm** -Repeat the above steps for the following models: - - text-embedding-3-large - - Phi-3.5-mini-instruct _coming soon: not currently available in AI Studio_ +Repeat the above steps to add a **text-embedding-ada-002**. ## Set up a local development environment diff --git a/scenarios/rag/custom-rag-app/config.py b/scenarios/rag/custom-rag-app/config.py index d28521e3..59d43839 100644 --- a/scenarios/rag/custom-rag-app/config.py +++ b/scenarios/rag/custom-rag-app/config.py @@ -14,14 +14,14 @@ ASSET_PATH = os.path.join(pathlib.Path(__file__).parent.resolve(), "assets") # Configure an root app logger that prints info level logs to stdout -root_logger = logging.getLogger("app") -root_logger.setLevel(logging.INFO) -root_logger.addHandler(logging.StreamHandler(stream=sys.stdout)) +logger = logging.getLogger("app") +logger.setLevel(logging.INFO) +logger.addHandler(logging.StreamHandler(stream=sys.stdout)) # Returns a module-specific logger, inheriting from the root app logger def get_logger(module_name): - logger = logging.getLogger(f"app.{module_name}") - return logger + module_logger = logging.getLogger(f"app.{module_name}") + return module_logger # Enable instrumentation and logging of telemetry to the project def enable_telemetry(log_to_project : bool = False): @@ -37,11 +37,14 @@ def enable_telemetry(log_to_project : bool = False): conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], credential=DefaultAzureCredential() ) + tracing_link = f"https://ai.azure.com/tracing?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}" application_insights_connection_string = project.telemetry.get_connection_string() if not application_insights_connection_string: - "No application insights connection string found. Telemetry will not be logged to project." + logger.warning("No application insights configured, telemetry will not be logged to project. Add application insights at:") + logger.warning(tracing_link) + return configure_azure_monitor(connection_string=application_insights_connection_string) - print("Enabled telemetry logging to project, view traces at:") - print(f"https://int.ai.azure.com/project-monitoring?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}") + logger.info("Enabled telemetry logging to project, view traces at:") + logger.info(tracing_link) diff --git a/scenarios/rag/custom-rag-app/dev-requirements.txt b/scenarios/rag/custom-rag-app/dev-requirements.txt index 91287b73..1cc4e55e 100644 --- a/scenarios/rag/custom-rag-app/dev-requirements.txt +++ b/scenarios/rag/custom-rag-app/dev-requirements.txt @@ -1,5 +1,5 @@ ./packages/azure_ai_projects-1.0.0b1-py3-none-any.whl # azure AI projects package -./packages/azure_ai_inference-1.0.0b5-py3-none-any.whl # azure AI inference package w prompts +azure-ai-inference[prompts] azure-identity azure-monitor-opentelemetry azure-search-documents diff --git a/scenarios/rag/custom-rag-app/evaluate_simulate.py b/scenarios/rag/custom-rag-app/evaluate_simulate.py new file mode 100644 index 00000000..7d308c30 --- /dev/null +++ b/scenarios/rag/custom-rag-app/evaluate_simulate.py @@ -0,0 +1,82 @@ +from chat_with_products import chat_with_products +import os + +from azure.ai.evaluation.simulator import Simulator +from azure.ai.evaluation import evaluate, CoherenceEvaluator, FluencyEvaluator +from typing import Any, Dict, List, Optional +import asyncio +from azure.ai.projects import AIProjectClient +from azure.ai.projects.models import ConnectionType +from azure.identity import DefaultAzureCredential + +from dotenv import load_dotenv +load_dotenv() + +project = AIProjectClient.from_connection_string( + conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], + credential=DefaultAzureCredential() +) + +connection = project.connections.get_default( + connection_type=ConnectionType.AZURE_OPEN_AI, + with_credentials=True) + +evaluator_model = { + "azure_endpoint": connection.endpoint_url, + "azure_deployment": os.environ["EVALUATION_MODEL"], + "api_version": "2024-06-01", + "api_key": connection.key, +} + +async def custom_simulator_callback( + messages: List[Dict], + stream: bool = False, + session_state: Any = None, + context: Optional[Dict[str, Any]] = None, +) -> dict: + # call your endpoint or ai application here + actual_messages = messages["messages"] + print(f"\n🗨️ {actual_messages[-1]['content']}") + response = chat_with_products(actual_messages) + message = { + "role": "assistant", + "content": response['message']['content'], + "context": response['context']['grounding_data'] + } + actual_messages.append(message) + return { "messages": actual_messages, "stream": stream, "session_state": session_state, "context": context } + +async def custom_simulator_raw_conversation_starter(): + outputs = await custom_simulator( + target=custom_simulator_callback, + conversation_turns=[ + [ + "I need a new tent, what would you recommend?", + ], + ], + max_conversation_turns=10, + ) + with open("chat_output.jsonl", "w") as f: + for output in outputs: + f.write(output.to_eval_qr_json_lines()) + +async def evaluate_custom_simulator_raw_conversation_starter(): + coherence_eval = CoherenceEvaluator(model_config=model_config) + fluency_eval = FluencyEvaluator(model_config=model_config) + eval_outputs = evaluate( + data="chat_output.jsonl", + evaluators={ + "coherence": coherence_eval, + "fluency": fluency_eval, + }, + # azure_ai_project=azure_ai_project, # optional only if you did optional installation + ) + print(eval_outputs) + + +if __name__ == "__main__": + custom_simulator = Simulator(model_config=evaluator_model) + async def main(): + await custom_simulator_raw_conversation_starter() + + asyncio.run(main()) diff --git a/scenarios/rag/custom-rag-app/requirements.txt b/scenarios/rag/custom-rag-app/requirements.txt index 59a3e847..1ef25cc9 100644 --- a/scenarios/rag/custom-rag-app/requirements.txt +++ b/scenarios/rag/custom-rag-app/requirements.txt @@ -1,5 +1,5 @@ azure-ai-projects -azure-ai-inference +azure-ai-inference[prompts] azure-identity azure-search-documents pandas From 35c7f60ba0c3a8c9e399211916814e9da1f5945e Mon Sep 17 00:00:00 2001 From: Leah Bar-On Simmons Date: Fri, 15 Nov 2024 14:40:50 -0800 Subject: [PATCH 13/21] README update and code fix for param --- scenarios/projects/basic/search.py | 2 +- scenarios/rag/custom-rag-app/README.md | 6 ++++++ scenarios/rag/custom-rag-app/create_search_index.py | 2 +- scenarios/rag/custom-rag-app/evaluate.py | 2 +- scenarios/rag/custom-rag-app/evaluate_simulate.py | 2 +- scenarios/rag/custom-rag-app/get_product_documents.py | 2 +- 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/scenarios/projects/basic/search.py b/scenarios/projects/basic/search.py index ac1cb17c..fc7738d7 100644 --- a/scenarios/projects/basic/search.py +++ b/scenarios/projects/basic/search.py @@ -19,7 +19,7 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( connection_type=ConnectionType.AZURE_AI_SEARCH, - with_credentials=True) + include_credentials=True) # Create a client to create and manage search indexes index_client = SearchIndexClient( diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md index 8f0ae707..355c5d57 100644 --- a/scenarios/rag/custom-rag-app/README.md +++ b/scenarios/rag/custom-rag-app/README.md @@ -81,6 +81,12 @@ Install the full set of dependencies to run the sample: pip install -r dev-requirements.txt ``` +### Log in to the Azure CLI +If you haven't already, you'll need to log in to the Azure CLI in your terminal. It will open a browser for you to authenticate and then log you in in the terminal. +```Python +az login +``` + ## Configure project string Go back to the **Overview** page of your project, and in the upper right hand corner click the copy button beside the **Project connection string** field. diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py index b2e10314..935a6e6e 100644 --- a/scenarios/rag/custom-rag-app/create_search_index.py +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -24,7 +24,7 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( connection_type=ConnectionType.AZURE_AI_SEARCH, - with_credentials=True) + include_credentials=True) # Create a search index client using the search connection # This client will be used to create and delete search indexes diff --git a/scenarios/rag/custom-rag-app/evaluate.py b/scenarios/rag/custom-rag-app/evaluate.py index 0ce74f18..897316d7 100644 --- a/scenarios/rag/custom-rag-app/evaluate.py +++ b/scenarios/rag/custom-rag-app/evaluate.py @@ -20,7 +20,7 @@ connection = project.connections.get_default( connection_type=ConnectionType.AZURE_OPEN_AI, - with_credentials=True) + include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, diff --git a/scenarios/rag/custom-rag-app/evaluate_simulate.py b/scenarios/rag/custom-rag-app/evaluate_simulate.py index 7d308c30..c99b024c 100644 --- a/scenarios/rag/custom-rag-app/evaluate_simulate.py +++ b/scenarios/rag/custom-rag-app/evaluate_simulate.py @@ -19,7 +19,7 @@ connection = project.connections.get_default( connection_type=ConnectionType.AZURE_OPEN_AI, - with_credentials=True) + include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, diff --git a/scenarios/rag/custom-rag-app/get_product_documents.py b/scenarios/rag/custom-rag-app/get_product_documents.py index 3737bb06..ca2652c0 100644 --- a/scenarios/rag/custom-rag-app/get_product_documents.py +++ b/scenarios/rag/custom-rag-app/get_product_documents.py @@ -25,7 +25,7 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( connection_type=ConnectionType.AZURE_AI_SEARCH, - with_credentials=True) + include_credentials=True) # Create a search index client using the search connection # This client will be used to create and delete search indexes From a25d00f651f516c975edef325178f9c412935117 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sat, 16 Nov 2024 16:29:01 -0800 Subject: [PATCH 14/21] add initial tests --- scenarios/projects/basic/prompt_inline.py | 12 ++++++++-- .../projects/basic/prompt_promptyfile.py | 7 +++++- scenarios/projects/basic/requirements.txt | 15 +++++++------ scenarios/projects/basic/search.py | 4 ++-- scenarios/projects/basic/test_basic_import.py | 22 +++++++++++++++++++ 5 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 scenarios/projects/basic/test_basic_import.py diff --git a/scenarios/projects/basic/prompt_inline.py b/scenarios/projects/basic/prompt_inline.py index 093c5d28..216a6b38 100644 --- a/scenarios/projects/basic/prompt_inline.py +++ b/scenarios/projects/basic/prompt_inline.py @@ -2,7 +2,7 @@ from azure.ai.inference.prompts import PromptTemplate # create a prompt template from an inline string (using mustache syntax) -prompt_template = PromptTemplate.from_string(prompt_template="""\ +prompt_template = PromptTemplate.from_string(prompt_template=""" system: You are a helpful writing assistant. The user's first name is {{first_name}} and their last name is {{last_name}}. @@ -13,6 +13,14 @@ # generate system message from the template, passing in the context as variables messages = prompt_template.create_messages(first_name="Jessie", last_name="Irwin") + + + print(messages) -# \ No newline at end of file +# + +assert(len(messages) == 2) +assert(messages[0]["content"] == "You are a helpful writing assistant.\nThe user's first name is Jessie and their last name is Irwin.") +assert(messages[0]["role"] == "system") +assert(messages[1]["role"] == "user") \ No newline at end of file diff --git a/scenarios/projects/basic/prompt_promptyfile.py b/scenarios/projects/basic/prompt_promptyfile.py index cd5a5aee..deee73b0 100644 --- a/scenarios/projects/basic/prompt_promptyfile.py +++ b/scenarios/projects/basic/prompt_promptyfile.py @@ -26,4 +26,9 @@ ) print(response.choices[0].message.content) -# \ No newline at end of file +# + +assert(len(messages) == 2) +assert(messages[0]["content"] == "You are a helpful writing assistant.\nThe user's first name is Jessie and their last name is Irwin.") +assert(messages[0]["role"] == "system") +assert(messages[1]["role"] == "user") \ No newline at end of file diff --git a/scenarios/projects/basic/requirements.txt b/scenarios/projects/basic/requirements.txt index cdaa06b3..f0e7884e 100644 --- a/scenarios/projects/basic/requirements.txt +++ b/scenarios/projects/basic/requirements.txt @@ -1,10 +1,11 @@ -./packages/azure_ai_projects-1.0.0b1-py3-none-any.whl # azure AI projects package -./packages/azure_ai_inference-1.0.0b5-py3-none-any.whl # azure AI inference package w prompts +# inferencing +azure-ai-projects +azure-ai-inference[prompts] azure-identity -azure-monitor-opentelemetry -azure-search-documents -python-dotenv openai -pandas -pyyaml +python-dotenv +# rag packages +azure-search-documents +# tracing and evaluation +azure-monitor-opentelemetry azure-ai-evaluation diff --git a/scenarios/projects/basic/search.py b/scenarios/projects/basic/search.py index ac1cb17c..b2ac37a2 100644 --- a/scenarios/projects/basic/search.py +++ b/scenarios/projects/basic/search.py @@ -18,8 +18,8 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( - connection_type=ConnectionType.AZURE_AI_SEARCH, - with_credentials=True) + connection_type=ConnectionType.AZURE_AI_SEARCH, + include_credentials=True) # Create a client to create and manage search indexes index_client = SearchIndexClient( diff --git a/scenarios/projects/basic/test_basic_import.py b/scenarios/projects/basic/test_basic_import.py new file mode 100644 index 00000000..ffe4a32c --- /dev/null +++ b/scenarios/projects/basic/test_basic_import.py @@ -0,0 +1,22 @@ +# Tests that the python files in this folder can be imported (and therefore run without errors) +# + +def test_inference(): + import inference + +def test_prompts(): + import prompt_inline + import prompt_promptyfile + +def test_search(): + import search + +def test_openai(): + import openai_client + +def test_evaluation(): + import evaluate_violence + +# TODO add when public: +# def test_agents(): +# import agents \ No newline at end of file From 0ec6128f2bf49074bccb275b5b89a07cab98cd3e Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sat, 16 Nov 2024 17:07:26 -0800 Subject: [PATCH 15/21] update readmes add test for rag --- scenarios/projects/basic/README.md | 11 ++-- scenarios/projects/basic/product_info_1.md | 51 +++++++++++++++++++ scenarios/projects/basic/test_basic_import.py | 3 ++ scenarios/projects/basic/tracing_enable.py | 4 +- scenarios/rag/custom-rag-app/README.md | 3 +- .../rag/custom-rag-app/create_search_index.py | 47 +++++++++-------- scenarios/rag/custom-rag-app/test_rag_e2e.py | 14 +++++ 7 files changed, 102 insertions(+), 31 deletions(-) create mode 100644 scenarios/projects/basic/product_info_1.md create mode 100644 scenarios/rag/custom-rag-app/test_rag_e2e.py diff --git a/scenarios/projects/basic/README.md b/scenarios/projects/basic/README.md index 666a6f3b..948b2c9b 100644 --- a/scenarios/projects/basic/README.md +++ b/scenarios/projects/basic/README.md @@ -9,7 +9,7 @@ products: description: Example description. --- -## Custom RAG App +## Project SDK Basic samples ### Overview @@ -26,10 +26,11 @@ To run this sample, you'll need to create an Azure AI Project with an Azure AI S ### Create an AI Project and AI Services resource First we'll create a project in Azure AI Studio: - - Go to [https://aka.ms/aistudio/ignite2024](https://aka.ms/aistudio/ignite2024) + - Navigate to [ai.azure.com](ai.azure.com) - Click **New Project** on the homepage - Enter a project name - Click **Create new hub**, provide a hub name + - In **Customize** change the location to **East US 2** or **Sweden Central** - Click **Create Project** This will take about 3 minutes to complete. @@ -41,9 +42,7 @@ Now we'll need to deploy a model so that we can call it from code. To start, we' - Click the **+ Deploy Model** dropdown and click **Deploy a base model** - Select **gpt-4o-mini** from the list and click **Confirm** -Repeat the above steps for the following models: - - text-embedding-3-large - - Phi-3.5-mini-instruct _coming soon: not currently available in AI Studio_ +Repeat the above steps for text-embedding-ada-002 ## Set up a local development environment @@ -92,7 +91,7 @@ Open the ```.env``` file and paste (ctrl-v) the value to the right of the ```AIP ### Try out samples! -Run the different python files to make sure they run: +Run the different python files to run different code samples in this folder: ``` python .py ``` diff --git a/scenarios/projects/basic/product_info_1.md b/scenarios/projects/basic/product_info_1.md new file mode 100644 index 00000000..04115583 --- /dev/null +++ b/scenarios/projects/basic/product_info_1.md @@ -0,0 +1,51 @@ +# Information about product item_number: 1 + +## Brand +Contoso Galaxy Innovations + +## Category +Smart Eyewear + +## Features +- Augmented Reality interface +- Voice-controlled AI assistant +- HD video recording with 3D audio +- UV protection and blue light filtering +- Wireless charging with extended battery life + +## User Guide + +### 1. Introduction +Introduction to your new SmartView Glasses + +### 2. Product Overview +Overview of features and controls + +### 3. Sizing and Fit +Finding your perfect fit and style adjustments + +### 4. Proper Care and Maintenance +Cleaning and caring for your SmartView Glasses + +### 5. Break-in Period +Adjusting to the augmented reality experience + +### 6. Safety Tips +Safety guidelines for public and private spaces + +### 7. Troubleshooting +Quick fixes for common issues + +## Warranty Information +Two-year limited warranty on all electronic components + +## Contact Information +Customer Support at support@contoso-galaxy-innovations.com + +## Return Policy +30-day return policy with no questions asked + +## FAQ +- How to sync your SmartView Glasses with your devices +- Troubleshooting connection issues +- Customizing your augmented reality environment diff --git a/scenarios/projects/basic/test_basic_import.py b/scenarios/projects/basic/test_basic_import.py index ffe4a32c..4e38b676 100644 --- a/scenarios/projects/basic/test_basic_import.py +++ b/scenarios/projects/basic/test_basic_import.py @@ -17,6 +17,9 @@ def test_openai(): def test_evaluation(): import evaluate_violence +def test_tracing(): + import tracing_enable + # TODO add when public: # def test_agents(): # import agents \ No newline at end of file diff --git a/scenarios/projects/basic/tracing_enable.py b/scenarios/projects/basic/tracing_enable.py index bb7b052c..f9482a1b 100644 --- a/scenarios/projects/basic/tracing_enable.py +++ b/scenarios/projects/basic/tracing_enable.py @@ -16,10 +16,10 @@ from azure.ai.inference.tracing import AIInferenceInstrumentor # Enable OpenTelemetry instrumentation of the Inference SDK, add other OpenTelemetry instrumenters as needed -AIInferenceInstrumentor().instrument() +project.telemetry.enable(destination=None) # Construct a URL for the project's tracing page -project_url = f"https://int.ai.azure.com/tracing?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}" +project_url = f"https://ai.azure.com/tracing?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}" # Log telemetry to the project's application insights resource application_insights_connection_string = project.telemetry.get_connection_string() diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md index 355c5d57..ccbfcc29 100644 --- a/scenarios/rag/custom-rag-app/README.md +++ b/scenarios/rag/custom-rag-app/README.md @@ -35,9 +35,10 @@ To run this sample, you'll need to create an Azure AI Project with an Azure AI S ### Create an AI Project and AI Services resource First we'll create a project in Azure AI Studio: - - Go to [https://aka.ms/aistudio/ignite2024](https://aka.ms/aistudio/ignite2024) + - Navigate to [ai.azure.com](ai.azure.com) - Click **New Project** on the homepage - Enter a project name + - In **Customize** change the location to **East US 2** or **Sweden Central** - Click **Create new hub**, provide a hub name - Click **Create Project** diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py index 935a6e6e..d917bbe7 100644 --- a/scenarios/rag/custom-rag-app/create_search_index.py +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -145,33 +145,13 @@ def create_docs_from_csv(path: str, content_column : str, model: str) -> list[di items.append(rec) return items -# - -# -if __name__ == "__main__": - import argparse - parser = argparse.ArgumentParser() - parser.add_argument( - "--index-name", - type=str, - help="index name to use when creating the AI Search index", - default=os.environ["AISEARCH_INDEX_NAME"] - ) - parser.add_argument( - "--csv-file", - type=str, - help="path to data for creating search index", - default="assets/products.csv" - ) - args = parser.parse_args() - index_name = args.index_name - csv_file = args.csv_file +def create_index_from_csv(index_name, csv_file): # If a search index already exists, delete it: try: index_definition = index_client.get_index(index_name) index_client.delete_index(index_name) - logger.info(f"🗑️ Found existing index named '{index_name}', and deleted it") + logger.info(f"🗑️ Found existing index named '{index_name}', and deleted it") except: pass @@ -194,4 +174,27 @@ def create_docs_from_csv(path: str, content_column : str, model: str) -> list[di results = search_client.upload_documents(docs) logger.info(f"➕ Uploaded {len(docs)} documents to '{index_name}' index") +# + +# +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser() + parser.add_argument( + "--index-name", + type=str, + help="index name to use when creating the AI Search index", + default=os.environ["AISEARCH_INDEX_NAME"] + ) + parser.add_argument( + "--csv-file", + type=str, + help="path to data for creating search index", + default="assets/products.csv" + ) + args = parser.parse_args() + index_name = args.index_name + csv_file = args.csv_file + + create_index_from_csv(index_name, csv_file) # \ No newline at end of file diff --git a/scenarios/rag/custom-rag-app/test_rag_e2e.py b/scenarios/rag/custom-rag-app/test_rag_e2e.py new file mode 100644 index 00000000..934106b2 --- /dev/null +++ b/scenarios/rag/custom-rag-app/test_rag_e2e.py @@ -0,0 +1,14 @@ +# Tests running of the custom rag app end-to-end +# + +def test_chat_with_products(): + from create_search_index import create_index_from_csv + create_index_from_csv("products", "assets/products.csv") + + from chat_with_products import chat_with_products + response = chat_with_products(messages=[ + {"role": "user", "content": "what kind of tents would you recommend for 4 people?"} + ]) + + + From 4e799a53ed45448a28ab45544d90bc2cb0677a72 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sat, 16 Nov 2024 18:29:21 -0800 Subject: [PATCH 16/21] readme tweaks --- scenarios/projects/basic/README.md | 3 ++- scenarios/rag/custom-rag-app/README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/scenarios/projects/basic/README.md b/scenarios/projects/basic/README.md index 948b2c9b..d9e4a45d 100644 --- a/scenarios/projects/basic/README.md +++ b/scenarios/projects/basic/README.md @@ -3,10 +3,11 @@ page_type: sample languages: - python products: +- ai-products - ai-model-inference - ai-search - ai-evaluation -description: Example description. +description: Hello world samples for the projects SDK client --- ## Project SDK Basic samples diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md index ccbfcc29..9573b429 100644 --- a/scenarios/rag/custom-rag-app/README.md +++ b/scenarios/rag/custom-rag-app/README.md @@ -6,7 +6,7 @@ products: - ai-model-inference - ai-search - ai-evaluation -description: Example description. +description: Custom rag app sample using Azure AI SDKs --- ## Custom RAG App From 953a054454fac0fe3dcea5e8107d47f6f5f2a771 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sat, 16 Nov 2024 19:40:54 -0800 Subject: [PATCH 17/21] run linters --- scenarios/inference/chat-app/chat-simple.py | 10 ++- scenarios/inference/chat-app/chat-template.py | 20 ++--- scenarios/projects/basic/agents.py | 46 +++++------ scenarios/projects/basic/evaluate_violence.py | 10 +-- scenarios/projects/basic/inference.py | 11 ++- scenarios/projects/basic/openai_client.py | 8 +- scenarios/projects/basic/project.py | 8 +- scenarios/projects/basic/prompt_inline.py | 20 +++-- .../projects/basic/prompt_promptyfile.py | 15 ++-- scenarios/projects/basic/search.py | 15 ++-- scenarios/projects/basic/test_basic_import.py | 24 +++--- scenarios/projects/basic/tracing_enable.py | 7 +- .../rag/custom-rag-app/chat_with_products.py | 35 ++++---- scenarios/rag/custom-rag-app/config.py | 14 ++-- .../rag/custom-rag-app/create_search_index.py | 79 ++++++++++-------- scenarios/rag/custom-rag-app/evaluate.py | 23 +++--- .../rag/custom-rag-app/evaluate_simulate.py | 22 ++--- .../custom-rag-app/get_product_documents.py | 80 +++++++++---------- scenarios/rag/custom-rag-app/test_rag_e2e.py | 12 +-- 19 files changed, 244 insertions(+), 215 deletions(-) diff --git a/scenarios/inference/chat-app/chat-simple.py b/scenarios/inference/chat-app/chat-simple.py index 6ca1f376..2525d641 100644 --- a/scenarios/inference/chat-app/chat-simple.py +++ b/scenarios/inference/chat-app/chat-simple.py @@ -4,17 +4,19 @@ project_connection_string = "" project = AIProjectClient.from_connection_string( - conn_str=project_connection_string, - credential=DefaultAzureCredential() + conn_str=project_connection_string, credential=DefaultAzureCredential() ) chat = project.inference.get_chat_completions_client() response = chat.complete( model="gpt-4o-mini", messages=[ - {"role": "system", "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?"}, + { + "role": "system", + "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?", + }, {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."}, - ] + ], ) print(response.choices[0].message.content) diff --git a/scenarios/inference/chat-app/chat-template.py b/scenarios/inference/chat-app/chat-template.py index 2cd88ec5..b091e3a3 100644 --- a/scenarios/inference/chat-app/chat-template.py +++ b/scenarios/inference/chat-app/chat-template.py @@ -1,38 +1,40 @@ - # from azure.ai.inference.prompts import PromptTemplate + def get_chat_response(messages, context): # create a prompt template from an inline string (using mustache syntax) - prompt_template = PromptTemplate.from_message(prompt_template=""" + prompt_template = PromptTemplate.from_message( + prompt_template=""" system: You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig? Refer to the user by their first name, try to work their last name into a pun. The user's first name is {{first_name}} and their last name is {{last_name}}. - """) + """ + ) # generate system message from the template, passing in the context as variables system_message = prompt_template.render(data=context) # add the prompt messages to the user messages response = chat.complete( - model="gpt-4o-mini", + model="gpt-4o-mini", messages=system_message + messages, temperature=1, frequency_penalty=0.5, - presence_penalty=0.5) + presence_penalty=0.5, + ) return response + + # # if __name__ == "__main__": response = get_chat_response( messages=[{"role": "user", "content": "what city has the best food in the world?"}], - context = { - "first_name": "Jessie", - "last_name": "Irwin" - } + context={"first_name": "Jessie", "last_name": "Irwin"}, ) print(response.choices[0].message.content) # diff --git a/scenarios/projects/basic/agents.py b/scenarios/projects/basic/agents.py index 4729dae6..05dd12b9 100644 --- a/scenarios/projects/basic/agents.py +++ b/scenarios/projects/basic/agents.py @@ -3,44 +3,44 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # from azure.ai.projects.models import FileSearchTool -file = project.agents.upload_file_and_poll(file_path="product_info_1.md", purpose="assistants") -vector_store = project.agents.create_vector_store_and_poll(file_ids=[file.id], name="my_vectorstore") -file_search = FileSearchTool(vector_store_ids=[vector_store.id]) - -# Create agent with file search tool and process the agent run -agent = project.agents.create_agent( - model="gpt-4o-mini", - name="my-agent", - instructions="Hello, you are helpful agent and can search information from uploaded files", - tools=file_search.definitions, - tool_resources=file_search.resources, +file = project.agents.upload_file_and_poll(file_path="product_info_1.md", purpose="assistants") +vector_store = project.agents.create_vector_store_and_poll(file_ids=[file.id], name="my_vectorstore") +file_search = FileSearchTool(vector_store_ids=[vector_store.id]) + +# Create agent with file search tool and process the agent run +agent = project.agents.create_agent( + model="gpt-4o-mini", + name="my-agent", + instructions="Hello, you are helpful agent and can search information from uploaded files", + tools=file_search.definitions, + tool_resources=file_search.resources, ) # # # create and run a thread with a message -thread = project.agents.create_thread() -message = project.agents.create_message( - thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?" -) -run = project.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id) -if run.status == "failed": - print(f"Run failed: {run.last_error}") +thread = project.agents.create_thread() +message = project.agents.create_message( + thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?" +) +run = project.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id) +if run.status == "failed": + print(f"Run failed: {run.last_error}") exit() # get messages from the thread and print the response (last message) -messages = project.agents.list_messages(thread_id=thread.id) -print(f"Response: {messages[-1]}") +messages = project.agents.list_messages(thread_id=thread.id) +print(f"Response: {messages[-1]}") -# \ No newline at end of file +# diff --git a/scenarios/projects/basic/evaluate_violence.py b/scenarios/projects/basic/evaluate_violence.py index 1e88b816..48ccb33a 100644 --- a/scenarios/projects/basic/evaluate_violence.py +++ b/scenarios/projects/basic/evaluate_violence.py @@ -3,11 +3,11 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # @@ -15,11 +15,9 @@ from azure.identity import DefaultAzureCredential # Initializing Violence Evaluator with project information -violence_eval = ViolenceEvaluator( - azure_ai_project=project.scope, - credential=DefaultAzureCredential()) +violence_eval = ViolenceEvaluator(azure_ai_project=project.scope, credential=DefaultAzureCredential()) # Running Violence Evaluator on single input row violence_score = violence_eval(query="what's the capital of france", response="Paris") print(violence_score) -# \ No newline at end of file +# diff --git a/scenarios/projects/basic/inference.py b/scenarios/projects/basic/inference.py index 91baa115..e292761a 100644 --- a/scenarios/projects/basic/inference.py +++ b/scenarios/projects/basic/inference.py @@ -3,11 +3,11 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # @@ -18,9 +18,12 @@ response = chat.complete( model="gpt-4o-mini", messages=[ - {"role": "system", "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?"}, + { + "role": "system", + "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?", + }, {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."}, - ] + ], ) print(response.choices[0].message.content) diff --git a/scenarios/projects/basic/openai_client.py b/scenarios/projects/basic/openai_client.py index 2b33952c..cbc2ab3c 100644 --- a/scenarios/projects/basic/openai_client.py +++ b/scenarios/projects/basic/openai_client.py @@ -3,11 +3,11 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # @@ -17,8 +17,8 @@ messages=[ {"role": "system", "content": "You are a helpful writing assistant"}, {"role": "user", "content": "Write me a poem about flowers"}, - ] + ], ) print(response.choices[0].message.content) -# \ No newline at end of file +# diff --git a/scenarios/projects/basic/project.py b/scenarios/projects/basic/project.py index a964cae5..733ef030 100644 --- a/scenarios/projects/basic/project.py +++ b/scenarios/projects/basic/project.py @@ -1,8 +1,8 @@ from azure.identity import DefaultAzureCredential from azure.ai.projects import AIProjectClient - -project_connection_string="your_connection_string" + +project_connection_string = "your_connection_string" project = AIProjectClient.from_connection_string( - conn_str=project_connection_string, - credential=DefaultAzureCredential()) \ No newline at end of file + conn_str=project_connection_string, credential=DefaultAzureCredential() +) diff --git a/scenarios/projects/basic/prompt_inline.py b/scenarios/projects/basic/prompt_inline.py index 216a6b38..450d3980 100644 --- a/scenarios/projects/basic/prompt_inline.py +++ b/scenarios/projects/basic/prompt_inline.py @@ -2,25 +2,29 @@ from azure.ai.inference.prompts import PromptTemplate # create a prompt template from an inline string (using mustache syntax) -prompt_template = PromptTemplate.from_string(prompt_template=""" +prompt_template = PromptTemplate.from_string( + prompt_template=""" system: You are a helpful writing assistant. The user's first name is {{first_name}} and their last name is {{last_name}}. user: Write me a short poem about flowers - """) - + """ +) + # generate system message from the template, passing in the context as variables messages = prompt_template.create_messages(first_name="Jessie", last_name="Irwin") - print(messages) # -assert(len(messages) == 2) -assert(messages[0]["content"] == "You are a helpful writing assistant.\nThe user's first name is Jessie and their last name is Irwin.") -assert(messages[0]["role"] == "system") -assert(messages[1]["role"] == "user") \ No newline at end of file +assert len(messages) == 2 +assert ( + messages[0]["content"] + == "You are a helpful writing assistant.\nThe user's first name is Jessie and their last name is Irwin." +) +assert messages[0]["role"] == "system" +assert messages[1]["role"] == "user" diff --git a/scenarios/projects/basic/prompt_promptyfile.py b/scenarios/projects/basic/prompt_promptyfile.py index deee73b0..84dd490b 100644 --- a/scenarios/projects/basic/prompt_promptyfile.py +++ b/scenarios/projects/basic/prompt_promptyfile.py @@ -3,11 +3,11 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # @@ -28,7 +28,10 @@ print(response.choices[0].message.content) # -assert(len(messages) == 2) -assert(messages[0]["content"] == "You are a helpful writing assistant.\nThe user's first name is Jessie and their last name is Irwin.") -assert(messages[0]["role"] == "system") -assert(messages[1]["role"] == "user") \ No newline at end of file +assert len(messages) == 2 +assert ( + messages[0]["content"] + == "You are a helpful writing assistant.\nThe user's first name is Jessie and their last name is Irwin." +) +assert messages[0]["role"] == "system" +assert messages[1]["role"] == "user" diff --git a/scenarios/projects/basic/search.py b/scenarios/projects/basic/search.py index fc7738d7..90582291 100644 --- a/scenarios/projects/basic/search.py +++ b/scenarios/projects/basic/search.py @@ -3,11 +3,11 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # @@ -18,19 +18,18 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( - connection_type=ConnectionType.AZURE_AI_SEARCH, - include_credentials=True) + connection_type=ConnectionType.AZURE_AI_SEARCH, include_credentials=True +) # Create a client to create and manage search indexes index_client = SearchIndexClient( - endpoint=search_connection.endpoint_url, - credential=AzureKeyCredential(key=search_connection.key) + endpoint=search_connection.endpoint_url, credential=AzureKeyCredential(key=search_connection.key) ) # Create a client to run search queries search_client = SearchClient( index_name="your_index_name", endpoint=search_connection.endpoint_url, - credential=AzureKeyCredential(key=search_connection.key) + credential=AzureKeyCredential(key=search_connection.key), ) -# \ No newline at end of file +# diff --git a/scenarios/projects/basic/test_basic_import.py b/scenarios/projects/basic/test_basic_import.py index 4e38b676..a51a2419 100644 --- a/scenarios/projects/basic/test_basic_import.py +++ b/scenarios/projects/basic/test_basic_import.py @@ -1,25 +1,31 @@ # Tests that the python files in this folder can be imported (and therefore run without errors) # + def test_inference(): - import inference + pass + def test_prompts(): - import prompt_inline - import prompt_promptyfile + pass + def test_search(): - import search + pass + def test_openai(): - import openai_client + pass + def test_evaluation(): - import evaluate_violence + pass + def test_tracing(): - import tracing_enable + pass + -# TODO add when public: +# TODO add when public: # def test_agents(): -# import agents \ No newline at end of file +# import agents diff --git a/scenarios/projects/basic/tracing_enable.py b/scenarios/projects/basic/tracing_enable.py index f9482a1b..865bebd6 100644 --- a/scenarios/projects/basic/tracing_enable.py +++ b/scenarios/projects/basic/tracing_enable.py @@ -3,17 +3,16 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # # Enable instrumentation of AI packages (inference, agents, openai, langchain) from azure.monitor.opentelemetry import configure_azure_monitor -from azure.ai.inference.tracing import AIInferenceInstrumentor # Enable OpenTelemetry instrumentation of the Inference SDK, add other OpenTelemetry instrumenters as needed project.telemetry.enable(destination=None) @@ -28,4 +27,4 @@ configure_azure_monitor(connection_string=application_insights_connection_string) else: print(f"Application Insights is not configured for this project. Configure Application Insights at:\n{project_url}") -# \ No newline at end of file +# diff --git a/scenarios/rag/custom-rag-app/chat_with_products.py b/scenarios/rag/custom-rag-app/chat_with_products.py index 04e61c51..22f59fde 100644 --- a/scenarios/rag/custom-rag-app/chat_with_products.py +++ b/scenarios/rag/custom-rag-app/chat_with_products.py @@ -12,8 +12,7 @@ # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # create a chat client we can use for testing @@ -23,14 +22,13 @@ # from azure.ai.inference.prompts import PromptTemplate + @tracer.start_as_current_span(name="chat_with_products") -def chat_with_products(messages : list, context : dict = {}) -> dict: +def chat_with_products(messages: list, context: dict = {}) -> dict: documents = get_product_documents(messages, context) # do a grounded chat call using the search results - grounded_chat_prompt = PromptTemplate.from_prompty( - os.path.join(ASSET_PATH, "grounded_chat.prompty") - ) + grounded_chat_prompt = PromptTemplate.from_prompty(os.path.join(ASSET_PATH, "grounded_chat.prompty")) system_message = grounded_chat_prompt.create_messages(documents=documents, context=context) response = chat.complete( @@ -41,12 +39,11 @@ def chat_with_products(messages : list, context : dict = {}) -> dict: logger.info(f"💬 Response: {response.choices[0].message}") # Return a chat protocol compliant response - response = { - "message": response.choices[0].message, - "context": context - } + response = {"message": response.choices[0].message, "context": context} return response + + # # @@ -56,20 +53,20 @@ def chat_with_products(messages : list, context : dict = {}) -> dict: # load command line arguments parser = argparse.ArgumentParser() parser.add_argument( - "--query", type=str, - help="Query to use to search product", - default="I need a new tent for 4 people, what would you recommend?" + "--query", + type=str, + help="Query to use to search product", + default="I need a new tent for 4 people, what would you recommend?", ) parser.add_argument( - "--enable-telemetry", action="store_true", - help="Enable sending telemetry back to the project", + "--enable-telemetry", + action="store_true", + help="Enable sending telemetry back to the project", ) args = parser.parse_args() if args.enable_telemetry: enable_telemetry(True) # run chat with products - response = chat_with_products(messages=[ - {"role": "user", "content": args.query} - ]) -# \ No newline at end of file + response = chat_with_products(messages=[{"role": "user", "content": args.query}]) +# diff --git a/scenarios/rag/custom-rag-app/config.py b/scenarios/rag/custom-rag-app/config.py index 59d43839..0b4fdc41 100644 --- a/scenarios/rag/custom-rag-app/config.py +++ b/scenarios/rag/custom-rag-app/config.py @@ -8,6 +8,7 @@ # load environment variables from the .env file from dotenv import load_dotenv + load_dotenv() # Set "./assets" as the path where assets are stored, resolving the absolute path: @@ -18,13 +19,15 @@ logger.setLevel(logging.INFO) logger.addHandler(logging.StreamHandler(stream=sys.stdout)) + # Returns a module-specific logger, inheriting from the root app logger def get_logger(module_name): module_logger = logging.getLogger(f"app.{module_name}") return module_logger + # Enable instrumentation and logging of telemetry to the project -def enable_telemetry(log_to_project : bool = False): +def enable_telemetry(log_to_project: bool = False): AIInferenceInstrumentor().instrument() # enable logging message contents @@ -34,17 +37,18 @@ def enable_telemetry(log_to_project : bool = False): from azure.monitor.opentelemetry import configure_azure_monitor project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) tracing_link = f"https://ai.azure.com/tracing?wsid=/subscriptions/{project.scope['subscription_id']}/resourceGroups/{project.scope['resource_group_name']}/providers/Microsoft.MachineLearningServices/workspaces/{project.scope['project_name']}" application_insights_connection_string = project.telemetry.get_connection_string() if not application_insights_connection_string: - logger.warning("No application insights configured, telemetry will not be logged to project. Add application insights at:") + logger.warning( + "No application insights configured, telemetry will not be logged to project. Add application insights at:" + ) logger.warning(tracing_link) return - + configure_azure_monitor(connection_string=application_insights_connection_string) logger.info("Enabled telemetry logging to project, view traces at:") logger.info(tracing_link) diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py index d917bbe7..40ba29d0 100644 --- a/scenarios/rag/custom-rag-app/create_search_index.py +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -1,6 +1,5 @@ # import os -import logging from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.identity import DefaultAzureCredential @@ -14,8 +13,7 @@ # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # create a vector embeddings client that will be used to generate vector embeddings @@ -23,30 +21,44 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( - connection_type=ConnectionType.AZURE_AI_SEARCH, - include_credentials=True) + connection_type=ConnectionType.AZURE_AI_SEARCH, include_credentials=True +) # Create a search index client using the search connection # This client will be used to create and delete search indexes index_client = SearchIndexClient( - endpoint=search_connection.endpoint_url, - credential=AzureKeyCredential(key=search_connection.key) + endpoint=search_connection.endpoint_url, credential=AzureKeyCredential(key=search_connection.key) ) # # import pandas as pd -from azure.search.documents.indexes.models import SemanticSearch, SearchField, SimpleField, \ - SearchableField, SearchFieldDataType, SemanticConfiguration, SemanticPrioritizedFields, \ - SemanticField, VectorSearch, HnswAlgorithmConfiguration, VectorSearchAlgorithmKind, \ - HnswParameters, VectorSearchAlgorithmMetric, ExhaustiveKnnAlgorithmConfiguration, \ - ExhaustiveKnnParameters, VectorSearchProfile, SearchIndex - -def create_index_definition(index_name : str, model : str) -> SearchIndex: - dimensions = 1536 # text-embedding-ada-002 +from azure.search.documents.indexes.models import ( + SemanticSearch, + SearchField, + SimpleField, + SearchableField, + SearchFieldDataType, + SemanticConfiguration, + SemanticPrioritizedFields, + SemanticField, + VectorSearch, + HnswAlgorithmConfiguration, + VectorSearchAlgorithmKind, + HnswParameters, + VectorSearchAlgorithmMetric, + ExhaustiveKnnAlgorithmConfiguration, + ExhaustiveKnnParameters, + VectorSearchProfile, + SearchIndex, +) + + +def create_index_definition(index_name: str, model: str) -> SearchIndex: + dimensions = 1536 # text-embedding-ada-002 if model == "text-embedding-3-large": dimensions = 3072 - + # The fields we want to index. The "embedding" field is a vector field that will # be used for vector search. fields = [ @@ -93,9 +105,7 @@ def create_index_definition(index_name : str, model : str) -> SearchIndex: ExhaustiveKnnAlgorithmConfiguration( name="myExhaustiveKnn", kind=VectorSearchAlgorithmKind.EXHAUSTIVE_KNN, - parameters=ExhaustiveKnnParameters( - metric=VectorSearchAlgorithmMetric.COSINE - ), + parameters=ExhaustiveKnnParameters(metric=VectorSearchAlgorithmMetric.COSINE), ), ], profiles=[ @@ -120,12 +130,15 @@ def create_index_definition(index_name : str, model : str) -> SearchIndex: semantic_search=semantic_search, vector_search=vector_search, ) + + # + # # define a function for indexing a csv file, that adds each row as a document # and generates vector embeddings for the specified content_column -def create_docs_from_csv(path: str, content_column : str, model: str) -> list[dict[str, any]]: +def create_docs_from_csv(path: str, content_column: str, model: str) -> list[dict[str, any]]: products = pd.read_csv(path) items = [] for product in products.to_dict("records"): @@ -146,6 +159,7 @@ def create_docs_from_csv(path: str, content_column : str, model: str) -> list[di return items + def create_index_from_csv(index_name, csv_file): # If a search index already exists, delete it: try: @@ -160,12 +174,9 @@ def create_index_from_csv(index_name, csv_file): index = index_client.create_index(index_definition) # create documents from the products.csv file, generating vector embeddings for the "description" column - docs = create_docs_from_csv( - path=csv_file, - content_column="description", - model=os.environ["EMBEDDINGS_MODEL"]) + docs = create_docs_from_csv(path=csv_file, content_column="description", model=os.environ["EMBEDDINGS_MODEL"]) - # Add the documents to the index using the Azure AI Search client + # Add the documents to the index using the Azure AI Search client search_client = SearchClient( endpoint=search_connection.endpoint_url, index_name=index_name, @@ -174,27 +185,27 @@ def create_index_from_csv(index_name, csv_file): results = search_client.upload_documents(docs) logger.info(f"➕ Uploaded {len(docs)} documents to '{index_name}' index") + + # # if __name__ == "__main__": import argparse + parser = argparse.ArgumentParser() parser.add_argument( - "--index-name", - type=str, - help="index name to use when creating the AI Search index", - default=os.environ["AISEARCH_INDEX_NAME"] + "--index-name", + type=str, + help="index name to use when creating the AI Search index", + default=os.environ["AISEARCH_INDEX_NAME"], ) parser.add_argument( - "--csv-file", - type=str, - help="path to data for creating search index", - default="assets/products.csv" + "--csv-file", type=str, help="path to data for creating search index", default="assets/products.csv" ) args = parser.parse_args() index_name = args.index_name csv_file = args.csv_file create_index_from_csv(index_name, csv_file) -# \ No newline at end of file +# diff --git a/scenarios/rag/custom-rag-app/evaluate.py b/scenarios/rag/custom-rag-app/evaluate.py index 897316d7..5dff7d0a 100644 --- a/scenarios/rag/custom-rag-app/evaluate.py +++ b/scenarios/rag/custom-rag-app/evaluate.py @@ -3,24 +3,22 @@ import pandas as pd from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType -from azure.ai.evaluation import evaluate, GroundednessEvaluator, F1ScoreEvaluator, RelevanceEvaluator +from azure.ai.evaluation import evaluate, GroundednessEvaluator from azure.identity import DefaultAzureCredential from chat_with_products import chat_with_products # load environment variables from the .env file at the root of this repo from dotenv import load_dotenv + load_dotenv() # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) -connection = project.connections.get_default( - connection_type=ConnectionType.AZURE_OPEN_AI, - include_credentials=True) +connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, @@ -32,14 +30,14 @@ groundedness = GroundednessEvaluator(evaluator_model) # + # create a wrapper function that implements the evaluation interface for query & response evaluation # def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) - return { - "response": response["message"].content, - "context": response["context"]["grounding_data"] - } + return {"response": response["message"].content, "context": response["context"]["grounding_data"]} + + # # @@ -50,8 +48,9 @@ def evaluate_chat_with_products(query): # workaround for multiprocessing issue on linux from pprint import pprint import multiprocessing + try: - multiprocessing.set_start_method('spawn', force=True) + multiprocessing.set_start_method("spawn", force=True) except RuntimeError: pass @@ -71,7 +70,7 @@ def evaluate_chat_with_products(query): } }, azure_ai_project=project.scope, - output_path="./myevalresults.json" + output_path="./myevalresults.json", ) tabular_result = pd.DataFrame(result.get("rows")) diff --git a/scenarios/rag/custom-rag-app/evaluate_simulate.py b/scenarios/rag/custom-rag-app/evaluate_simulate.py index c99b024c..e517b124 100644 --- a/scenarios/rag/custom-rag-app/evaluate_simulate.py +++ b/scenarios/rag/custom-rag-app/evaluate_simulate.py @@ -10,16 +10,14 @@ from azure.identity import DefaultAzureCredential from dotenv import load_dotenv + load_dotenv() project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) -connection = project.connections.get_default( - connection_type=ConnectionType.AZURE_OPEN_AI, - include_credentials=True) +connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, @@ -28,10 +26,11 @@ "api_key": connection.key, } + async def custom_simulator_callback( messages: List[Dict], stream: bool = False, - session_state: Any = None, + session_state: Any = None, context: Optional[Dict[str, Any]] = None, ) -> dict: # call your endpoint or ai application here @@ -40,11 +39,12 @@ async def custom_simulator_callback( response = chat_with_products(actual_messages) message = { "role": "assistant", - "content": response['message']['content'], - "context": response['context']['grounding_data'] + "content": response["message"]["content"], + "context": response["context"]["grounding_data"], } actual_messages.append(message) - return { "messages": actual_messages, "stream": stream, "session_state": session_state, "context": context } + return {"messages": actual_messages, "stream": stream, "session_state": session_state, "context": context} + async def custom_simulator_raw_conversation_starter(): outputs = await custom_simulator( @@ -60,6 +60,7 @@ async def custom_simulator_raw_conversation_starter(): for output in outputs: f.write(output.to_eval_qr_json_lines()) + async def evaluate_custom_simulator_raw_conversation_starter(): coherence_eval = CoherenceEvaluator(model_config=model_config) fluency_eval = FluencyEvaluator(model_config=model_config) @@ -76,7 +77,8 @@ async def evaluate_custom_simulator_raw_conversation_starter(): if __name__ == "__main__": custom_simulator = Simulator(model_config=evaluator_model) + async def main(): await custom_simulator_raw_conversation_starter() - + asyncio.run(main()) diff --git a/scenarios/rag/custom-rag-app/get_product_documents.py b/scenarios/rag/custom-rag-app/get_product_documents.py index ca2652c0..93fc7da5 100644 --- a/scenarios/rag/custom-rag-app/get_product_documents.py +++ b/scenarios/rag/custom-rag-app/get_product_documents.py @@ -14,8 +14,7 @@ # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( - conn_str=os.environ['AIPROJECT_CONNECTION_STRING'], - credential=DefaultAzureCredential() + conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) # create a vector embeddings client that will be used to generate vector embeddings @@ -24,15 +23,15 @@ # use the project client to get the default search connection search_connection = project.connections.get_default( - connection_type=ConnectionType.AZURE_AI_SEARCH, - include_credentials=True) + connection_type=ConnectionType.AZURE_AI_SEARCH, include_credentials=True +) # Create a search index client using the search connection # This client will be used to create and delete search indexes search_client = SearchClient( - index_name=os.environ['AISEARCH_INDEX_NAME'], + index_name=os.environ["AISEARCH_INDEX_NAME"], endpoint=search_connection.endpoint_url, - credential=AzureKeyCredential(key=search_connection.key) + credential=AzureKeyCredential(key=search_connection.key), ) # @@ -40,15 +39,14 @@ from azure.ai.inference.prompts import PromptTemplate from azure.search.documents.models import VectorizedQuery + @tracer.start_as_current_span(name="get_product_documents") -def get_product_documents(messages : list, context : dict = {}) -> dict: +def get_product_documents(messages: list, context: dict = {}) -> dict: overrides = context.get("overrides", {}) top = overrides.get("top", 5) # generate a search query from the chat messages - intent_prompty = PromptTemplate.from_prompty( - os.path.join(ASSET_PATH, "intent_mapping.prompty") - ) + intent_prompty = PromptTemplate.from_prompty(os.path.join(ASSET_PATH, "intent_mapping.prompty")) intent_mapping_response = chat.complete( model=os.environ["INTENT_MAPPING_MODEL"], @@ -58,39 +56,40 @@ def get_product_documents(messages : list, context : dict = {}) -> dict: search_query = intent_mapping_response.choices[0].message.content logger.debug(f"🧠 Intent mapping: {search_query}") - + # generate a vector representation of the search query embedding = embeddings.embed(model=os.environ["EMBEDDINGS_MODEL"], input=search_query) search_vector = embedding.data[0].embedding # search the index for products matching the search query - vector_query = VectorizedQuery( - vector=search_vector, - k_nearest_neighbors=top, - fields="contentVector") - + vector_query = VectorizedQuery(vector=search_vector, k_nearest_neighbors=top, fields="contentVector") + search_results = search_client.search( - search_text=search_query, - vector_queries=[vector_query], - select=["id", "content", "filepath", "title", "url"]) - - documents = [{ - "id": result["id"], - "content": result["content"], - "filepath": result["filepath"], - "title": result["title"], - "url": result["url"], - } for result in search_results] + search_text=search_query, vector_queries=[vector_query], select=["id", "content", "filepath", "title", "url"] + ) + + documents = [ + { + "id": result["id"], + "content": result["content"], + "filepath": result["filepath"], + "title": result["title"], + "url": result["url"], + } + for result in search_results + ] # add results to the provided context if "thoughts" not in context: context["thoughts"] = [] # add thoughts and documents to the context object so it can be returned to the caller - context["thoughts"].append({ - "title": "Generated search query", - "description": search_query, - }) + context["thoughts"].append( + { + "title": "Generated search query", + "description": search_query, + } + ) if "grounding_data" not in context: context["grounding_data"] = [] @@ -98,11 +97,14 @@ def get_product_documents(messages : list, context : dict = {}) -> dict: logger.debug(f"📄 {len(documents)} documents retrieved: {documents}") return documents + + # # if __name__ == "__main__": - import logging, argparse + import logging + import argparse # set logging level to debug when running this module directly logger.setLevel(logging.DEBUG) @@ -110,16 +112,14 @@ def get_product_documents(messages : list, context : dict = {}) -> dict: # load command line arguments parser = argparse.ArgumentParser() parser.add_argument( - "--query", - type=str, - help="Query to use to search product", - default="I need a new tent for 4 people, what would you recommend?" + "--query", + type=str, + help="Query to use to search product", + default="I need a new tent for 4 people, what would you recommend?", ) args = parser.parse_args() query = args.query - result = get_product_documents(messages=[ - {"role": "user", "content": query} - ]) -# \ No newline at end of file + result = get_product_documents(messages=[{"role": "user", "content": query}]) +# diff --git a/scenarios/rag/custom-rag-app/test_rag_e2e.py b/scenarios/rag/custom-rag-app/test_rag_e2e.py index 934106b2..c087ad40 100644 --- a/scenarios/rag/custom-rag-app/test_rag_e2e.py +++ b/scenarios/rag/custom-rag-app/test_rag_e2e.py @@ -1,14 +1,14 @@ # Tests running of the custom rag app end-to-end -# +# + def test_chat_with_products(): from create_search_index import create_index_from_csv + create_index_from_csv("products", "assets/products.csv") from chat_with_products import chat_with_products - response = chat_with_products(messages=[ - {"role": "user", "content": "what kind of tents would you recommend for 4 people?"} - ]) - - + response = chat_with_products( + messages=[{"role": "user", "content": "what kind of tents would you recommend for 4 people?"}] + ) From 03a9c6bd4335e9da8511ba7303c96e780c28287b Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Sat, 16 Nov 2024 20:22:57 -0800 Subject: [PATCH 18/21] fix linter and formatting errors --- scenarios/inference/chat-app/chat-template.py | 8 ++++-- scenarios/projects/basic/agents.py | 2 ++ scenarios/projects/basic/evaluate_violence.py | 2 ++ .../projects/basic/prompt_promptyfile.py | 2 ++ scenarios/projects/basic/search.py | 2 ++ scenarios/projects/basic/test_basic_import.py | 28 +++++++++++++++---- scenarios/projects/basic/tracing_enable.py | 2 ++ .../rag/custom-rag-app/chat_with_products.py | 15 ++++++---- scenarios/rag/custom-rag-app/config.py | 7 +++-- .../rag/custom-rag-app/create_search_index.py | 8 ++++-- scenarios/rag/custom-rag-app/evaluate.py | 10 ++++--- .../rag/custom-rag-app/evaluate_simulate.py | 3 ++ .../custom-rag-app/get_product_documents.py | 10 +++++-- scenarios/rag/custom-rag-app/test_rag_e2e.py | 3 ++ 14 files changed, 76 insertions(+), 26 deletions(-) diff --git a/scenarios/inference/chat-app/chat-template.py b/scenarios/inference/chat-app/chat-template.py index b091e3a3..156fbbcd 100644 --- a/scenarios/inference/chat-app/chat-template.py +++ b/scenarios/inference/chat-app/chat-template.py @@ -1,3 +1,7 @@ +# ruff: noqa: E402, ANN201, ANN001 + +chat = None + # from azure.ai.inference.prompts import PromptTemplate @@ -17,7 +21,7 @@ def get_chat_response(messages, context): system_message = prompt_template.render(data=context) # add the prompt messages to the user messages - response = chat.complete( + return chat.complete( model="gpt-4o-mini", messages=system_message + messages, temperature=1, @@ -25,8 +29,6 @@ def get_chat_response(messages, context): presence_penalty=0.5, ) - return response - # diff --git a/scenarios/projects/basic/agents.py b/scenarios/projects/basic/agents.py index 05dd12b9..a0fa52e1 100644 --- a/scenarios/projects/basic/agents.py +++ b/scenarios/projects/basic/agents.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402 + import os from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential diff --git a/scenarios/projects/basic/evaluate_violence.py b/scenarios/projects/basic/evaluate_violence.py index 48ccb33a..5be40bc3 100644 --- a/scenarios/projects/basic/evaluate_violence.py +++ b/scenarios/projects/basic/evaluate_violence.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402 + import os from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential diff --git a/scenarios/projects/basic/prompt_promptyfile.py b/scenarios/projects/basic/prompt_promptyfile.py index 84dd490b..a1cb17bc 100644 --- a/scenarios/projects/basic/prompt_promptyfile.py +++ b/scenarios/projects/basic/prompt_promptyfile.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402 + import os from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential diff --git a/scenarios/projects/basic/search.py b/scenarios/projects/basic/search.py index 90582291..4a645884 100644 --- a/scenarios/projects/basic/search.py +++ b/scenarios/projects/basic/search.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402 + import os from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential diff --git a/scenarios/projects/basic/test_basic_import.py b/scenarios/projects/basic/test_basic_import.py index a51a2419..dc12a4cc 100644 --- a/scenarios/projects/basic/test_basic_import.py +++ b/scenarios/projects/basic/test_basic_import.py @@ -1,29 +1,45 @@ +# ruff: noqa: ANN201, ANN001 + # Tests that the python files in this folder can be imported (and therefore run without errors) # def test_inference(): - pass + import inference + + print(inference) def test_prompts(): - pass + import prompt_inline + import prompt_promptyfile + + print(prompt_inline) + print(prompt_promptyfile) def test_search(): - pass + import search + + print(search) def test_openai(): - pass + import openai_client + + print(openai_client) def test_evaluation(): - pass + import evaluate_violence + + print(evaluate_violence) def test_tracing(): - pass + import tracing_enable + + print(tracing_enable) # TODO add when public: diff --git a/scenarios/projects/basic/tracing_enable.py b/scenarios/projects/basic/tracing_enable.py index 865bebd6..f67ea1ea 100644 --- a/scenarios/projects/basic/tracing_enable.py +++ b/scenarios/projects/basic/tracing_enable.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402 + import os from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential diff --git a/scenarios/rag/custom-rag-app/chat_with_products.py b/scenarios/rag/custom-rag-app/chat_with_products.py index 22f59fde..9cbcc584 100644 --- a/scenarios/rag/custom-rag-app/chat_with_products.py +++ b/scenarios/rag/custom-rag-app/chat_with_products.py @@ -1,11 +1,15 @@ +# ruff: noqa: E402, RUF013 + # import os +from pathlib import Path from opentelemetry import trace from azure.ai.projects import AIProjectClient from azure.identity import DefaultAzureCredential from config import ASSET_PATH, get_logger, enable_telemetry from get_product_documents import get_product_documents + # initialize logging and tracing objects logger = get_logger(__name__) tracer = trace.get_tracer(__name__) @@ -24,11 +28,14 @@ @tracer.start_as_current_span(name="chat_with_products") -def chat_with_products(messages: list, context: dict = {}) -> dict: +def chat_with_products(messages: list, context: dict = None) -> dict: + if context is None: + context = {} + documents = get_product_documents(messages, context) # do a grounded chat call using the search results - grounded_chat_prompt = PromptTemplate.from_prompty(os.path.join(ASSET_PATH, "grounded_chat.prompty")) + grounded_chat_prompt = PromptTemplate.from_prompty(Path(ASSET_PATH) / "grounded_chat.prompty") system_message = grounded_chat_prompt.create_messages(documents=documents, context=context) response = chat.complete( @@ -39,9 +46,7 @@ def chat_with_products(messages: list, context: dict = {}) -> dict: logger.info(f"💬 Response: {response.choices[0].message}") # Return a chat protocol compliant response - response = {"message": response.choices[0].message, "context": context} - - return response + return {"message": response.choices[0].message, "context": context} # diff --git a/scenarios/rag/custom-rag-app/config.py b/scenarios/rag/custom-rag-app/config.py index 0b4fdc41..c1855009 100644 --- a/scenarios/rag/custom-rag-app/config.py +++ b/scenarios/rag/custom-rag-app/config.py @@ -1,3 +1,5 @@ +# ruff: noqa: ANN201, ANN001 + import os import sys import pathlib @@ -12,7 +14,7 @@ load_dotenv() # Set "./assets" as the path where assets are stored, resolving the absolute path: -ASSET_PATH = os.path.join(pathlib.Path(__file__).parent.resolve(), "assets") +ASSET_PATH = pathlib.Path(__file__).parent.resolve() / "assets" # Configure an root app logger that prints info level logs to stdout logger = logging.getLogger("app") @@ -22,8 +24,7 @@ # Returns a module-specific logger, inheriting from the root app logger def get_logger(module_name): - module_logger = logging.getLogger(f"app.{module_name}") - return module_logger + return logging.getLogger(f"app.{module_name}") # Enable instrumentation and logging of telemetry to the project diff --git a/scenarios/rag/custom-rag-app/create_search_index.py b/scenarios/rag/custom-rag-app/create_search_index.py index 40ba29d0..31924bd5 100644 --- a/scenarios/rag/custom-rag-app/create_search_index.py +++ b/scenarios/rag/custom-rag-app/create_search_index.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402, ANN201, ANN001, RUF001 + # import os from azure.ai.projects import AIProjectClient @@ -166,12 +168,12 @@ def create_index_from_csv(index_name, csv_file): index_definition = index_client.get_index(index_name) index_client.delete_index(index_name) logger.info(f"🗑️ Found existing index named '{index_name}', and deleted it") - except: + except Exception: pass # create an empty search index index_definition = create_index_definition(index_name, model=os.environ["EMBEDDINGS_MODEL"]) - index = index_client.create_index(index_definition) + index_client.create_index(index_definition) # create documents from the products.csv file, generating vector embeddings for the "description" column docs = create_docs_from_csv(path=csv_file, content_column="description", model=os.environ["EMBEDDINGS_MODEL"]) @@ -183,7 +185,7 @@ def create_index_from_csv(index_name, csv_file): credential=AzureKeyCredential(key=search_connection.key), ) - results = search_client.upload_documents(docs) + search_client.upload_documents(docs) logger.info(f"➕ Uploaded {len(docs)} documents to '{index_name}' index") diff --git a/scenarios/rag/custom-rag-app/evaluate.py b/scenarios/rag/custom-rag-app/evaluate.py index 5dff7d0a..9a64007c 100644 --- a/scenarios/rag/custom-rag-app/evaluate.py +++ b/scenarios/rag/custom-rag-app/evaluate.py @@ -1,3 +1,5 @@ +# ruff: noqa: E402, ANN201, ANN001 + # import os import pandas as pd @@ -47,16 +49,16 @@ def evaluate_chat_with_products(query): # workaround for multiprocessing issue on linux from pprint import pprint + from pathlib import Path import multiprocessing + import contextlib - try: + with contextlib.suppress(RuntimeError): multiprocessing.set_start_method("spawn", force=True) - except RuntimeError: - pass # run evaluation with a dataset and target function, log to the project result = evaluate( - data=os.path.join(ASSET_PATH, "chat_eval_data.jsonl"), + data=Path(ASSET_PATH) / "chat_eval_data.jsonl", target=evaluate_chat_with_products, evaluation_name="evaluate_chat_with_products", evaluators={ diff --git a/scenarios/rag/custom-rag-app/evaluate_simulate.py b/scenarios/rag/custom-rag-app/evaluate_simulate.py index e517b124..2ffaff40 100644 --- a/scenarios/rag/custom-rag-app/evaluate_simulate.py +++ b/scenarios/rag/custom-rag-app/evaluate_simulate.py @@ -1,3 +1,6 @@ +# ruff: noqa +# File is WIP + from chat_with_products import chat_with_products import os diff --git a/scenarios/rag/custom-rag-app/get_product_documents.py b/scenarios/rag/custom-rag-app/get_product_documents.py index 93fc7da5..29b1b790 100644 --- a/scenarios/rag/custom-rag-app/get_product_documents.py +++ b/scenarios/rag/custom-rag-app/get_product_documents.py @@ -1,5 +1,8 @@ +# ruff: noqa: E402, RUF013 + # import os +from pathlib import Path from opentelemetry import trace from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType @@ -41,12 +44,15 @@ @tracer.start_as_current_span(name="get_product_documents") -def get_product_documents(messages: list, context: dict = {}) -> dict: +def get_product_documents(messages: list, context: dict = None) -> dict: + if context is None: + context = {} + overrides = context.get("overrides", {}) top = overrides.get("top", 5) # generate a search query from the chat messages - intent_prompty = PromptTemplate.from_prompty(os.path.join(ASSET_PATH, "intent_mapping.prompty")) + intent_prompty = PromptTemplate.from_prompty(Path(ASSET_PATH) / "intent_mapping.prompty") intent_mapping_response = chat.complete( model=os.environ["INTENT_MAPPING_MODEL"], diff --git a/scenarios/rag/custom-rag-app/test_rag_e2e.py b/scenarios/rag/custom-rag-app/test_rag_e2e.py index c087ad40..2075f025 100644 --- a/scenarios/rag/custom-rag-app/test_rag_e2e.py +++ b/scenarios/rag/custom-rag-app/test_rag_e2e.py @@ -1,3 +1,5 @@ +# ruff: noqa: ANN201 + # Tests running of the custom rag app end-to-end # @@ -12,3 +14,4 @@ def test_chat_with_products(): response = chat_with_products( messages=[{"role": "user", "content": "what kind of tents would you recommend for 4 people?"}] ) + print(response) From 2667f6bd47b561d93434e252338a1b556d23d871 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Mon, 18 Nov 2024 14:03:27 -0600 Subject: [PATCH 19/21] remove packages --- ...azure_ai_inference-1.0.0b5-py3-none-any.whl | Bin 115243 -> 0 bytes .../azure_ai_projects-1.0.0b1-py3-none-any.whl | Bin 153467 -> 0 bytes ...azure_ai_inference-1.0.0b5-py3-none-any.whl | Bin 115243 -> 0 bytes .../azure_ai_projects-1.0.0b1-py3-none-any.whl | Bin 153467 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 scenarios/projects/basic/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl delete mode 100644 scenarios/projects/basic/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl delete mode 100644 scenarios/rag/custom-rag-app/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl delete mode 100644 scenarios/rag/custom-rag-app/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl diff --git a/scenarios/projects/basic/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl b/scenarios/projects/basic/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl deleted file mode 100644 index 7a7a671018ba36b192b82d8c513739f2d0930c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115243 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 q%0Ve;6PVH^{m#bEWt-Zxy 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 HItciG%N;4K diff --git a/scenarios/projects/basic/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl b/scenarios/projects/basic/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl deleted file mode 100644 index 06dffa63c4af553f115f5d1d93b492acf2c0eb40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153467 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%0D4q)o$0q=ep2Zx9H_ZM-^cI~K9u&<3PgPIuS%E!- zDwx-}&+=*v8Fjg#!7j_56t_e2^K-;EB|_P|D^5gV;trh_lhzV7x-ZTBV)#FMTK@~* zSb7(hLBjw5SIhvwfBBpLTL#O)(8bu|e=Azr+y7;6kbN2Ee*I7RvbLR%B&Z$y5cqWB zns`CZ?dD5b5k&Ktk&PdTBe~+84(LC6ccVz9mO|+!$F>Ix)Os?d|AZ{pxB0RwkC25f>+QMjyI#2i_Nns?g!DxxBrpH2$qw!}X zVo*4-qv@5)heCYKO@@iVh5V`+fW=m51=aq$48@QVKU@OkAvft0L1|tj-ZLKYMTFgP z>?o@$IpWysPa(q6#u(N&ePF0&m$Eg|bO7c%kUQ_5b$mK7gZ>?yMyW)`!`^Y^r-)5h zToLA%#PUZ5f1MF=NG(w>i+LngbEHSp0?MjR1yy^PoALu$fNf?1%}phC`DhNR4Ten0 z0AJ%>PhS46GUG1BoA>}QI+fgD!krjT-B|;!eKpndArp+p5WO&blI@BkQ|-Ail2a~= zrh--uLxE?H)MMkS3dUq?_#6A9>debR5tX`Bil5n+r|mJ?;vj8$K>J6d9+^=}BNbh@ zpR@AAs*@M=45la{PH)irM!2ki&4O4Yb17#Rk>{6CQ zGUg$3ccRaLankL59%nWqRQ?f*eR3G<3vq{`YyyXRqjSx}2qzZXmxIY%x6k*TL?YS{ zxtJgyACb8)MQ>QxG);&4(aCD1{^^na9u$xb$i8Bh*?xDvRDyWTO5Q^RZ@g^Fvawlp zRYtUl2V42uy(co1s;wMbB9?r+2_=oGeWD2IVLUmhP5`b1qrr69bZvXNw++ryo^h;S zjqy3kLVbz2)V0ayTILY17hLVxp;r4OP!0*Uv;8EpOe~25loE$B!J|HCmP!^F32+bq z9SVVwi9|xzO9y$niKv#jFOd(l&5N%b&0480=S*NUS7(G%6E&BRWwi6YNYdaHiNhPz zF0&7I&^_-xf-2Zbf9M`L4~iNH%Ao3z&I~wfS`hYik#MocVp+%&0qOnW99y11_ml`Z z7AYT^V?Y8u68$|oK1`4-5A;H$jX8+e%e#%da98Ak&=`7aX3Voh>}YXwmVF)TlNFY( zK_!lNAg<~>C0&XLMTS9jxh@|`7f8m>1TH2s9jo8zg*zIk$(f}~%;7i9vUA56_fHsi zz|$zKko9D~TS8-WO#^MW5%_|!M1r5ECxwO^goOS zFg1X=R9K^eNF~?S88m>CAmH1PSENY@=G#y!*WPBY;J#aMyFM^7rhbH)#glG|0j`6Z z2V;2@JUTuao#b?jlb_pt?{{8LO%z$vi`NUg6%HJmbvF85EA3y0Q02pLJ6a@Wf-4hK zh8d)`y!{AsSUos!>zhyYtZAmEjCL-eK1+E@zc}uCv~)DZ;!8yagr>FF{GqdAr``jq zlxVEcyZaS1$5H9F&%pxtolaTTGTNYLzXSJP98mpN;j&cS7f(uBNnB1}@E2`WjBfI- zMOQN-!YDn|uvKtt+|PB#LE7uB5~ZR&^2K0*@k^D?4;BMwg#9{y<6|!@R`f#KF!1)% z9v=!i@KwR>izoI_mit`ardr0N6ZSvf?-|yf!UPXXWcmtPZn|h~6-SopfL0KVU369NCj6tOLho>l%9+t>$AX$;%iK>1y@9frn#VsFAiZ1xhMr(uQr$> z>vUmO*N^l6;qZztOo*oLf=Rl9N!vh*@6wt6@^}shCJqmsKOe>^oV{7LwwGTB0MZ$G zLQY81W$W!!4$sQXI-oUVe19rAgc6ll+!;g}#}CF~P9){59-S-LK~!_b5{}sbs{gSo zXAz|xWCc;pILJ8WpeX;3y@Z2K#_~V*|L_>98K$%Y7sCi;!-z$Hs?>Z5kVkcv?7N4E zw_L%$91Kd&nnO8DSk#L^f_5kYcbsmQzlwxo-%x_T?2uOX$nmp#tPPE1KN(^)jN$IaXzu)lButbaKv>Bm~u&{i-as?Ql>&P zO&9jmC6f-<^cyPXb~^%~aJ*{L^sexAl7mp82Cufl#)1r>hdG65CZL5xj z=|Dyi`v>apx^Bx_AGB{hJWt6iALQ0dP$l0C5z^PU3?z9?6uFgu!g`Gq1n>%q_$S_U z-R=tI?0~3m1-Zsu`8|Oh!lgwF zm6I)-QL$)fcM}`^mH5(L08G`S#nQ#h1o!&JG*n8u$SITT*~lE~Cz6)*TvA#i;c5FI z-(V!!d)0y;jP90}C+gBQgO*TXjvae%QwG(`Q=i|7X2D_>9agALw79P|YfTU>ws{lE zLn)ZYVr3umghOd%CCOzQ^LlEvB8*bX9LYnfPHXKcIV*cdHab|ew{?g{r>5j0C%A6) zr36Y_YqbU#1#W6HRb8WQpr-OBsaYG}CK!F}S0s7?@ROIY>NB|_HBnfob z#KS~BO>lkj&ZaOi*~uE^0(}Z$wPW=eu{n4&rk8~dN4dO!SDMhMj$TRCnmWS`Bm+kt zD^5$ZYK*yXOsIy1IQm@-DK*^=mu|f;I^V5jT@Wa?O80^4wMfuTSwlNDK%U2zfQt`FvhNq%&IL_<&q8b2aMWyAOZ)_GCF#wk*>Z zqj=Oseeq+b<+i^-&h5>k*u(n5Q^Qg>qf<{!>-6N9sI@Gr$pKRqK>I9mP`qwEiYabg z89AiIR9{EbQ-%=17pR+z*La#-(J=`A%EQt}(E5nJxqCUn#%&`0DCoJq{JCK?-#grl zzq<0ltNlY_fAPWtNi~~kKK*0yZu?BSSm9vsPRI2o3P1$JQ{Ffz8MO=I6II4>bO*v% zwUM~M1Y_}Gp!?^HRd6PJAUJ>l&+RrasskesUkbjO+%e{$Zo-d0N}<{g@6aWAK z2mrN=URkSfA)qTr000_N0RSTa003cnb#i4dVQDXLa&Ky7V{~&bUvp)0X<=+>dSP^F zZ*DGddF_2|cN@2r@b{jR|A3C49Fq-2+etRtYNKQoTTay4l8-DmZ5b_hM2@7X$r$!{KroqPKLGz9pxT&$}6@~RQNNngCoCskRO7Y#hG7G;$-d07m_{%j_wP%Wyg z&Z>9WbSUeeUS;Ct;i-6$PqL!UL=S%S<-1o|HP7oBK#05+S6P*vuf%1Q7ELxCh>I%A zM0p`5S7~*b4MbB4=&D#`RSgx&^Cr!Uytovpm;jCl4+=L|00|MiPOA*cPeoeSE|%xByuKRX`~vjzWdjdu zd`M$A!2UccD+E_(FysIvhb~aJ4USX{8(QG-HgdqI>FcX6?YYh0AGS$U0poRq~h$F9}8)*Pqj<-3f!#ne)i4Pecv;G8VXT+3JWRSJDL z&*bny<9UJ5QmbbbqERTYPmd7t^Wzh-FJA4RoE|=X^J4!*yn1u;>iG2mAn^t=uI8gQIfC1siyAuRO@b{b72O6e$cCh~fz`dsN zKXS^eNxn}Ghwvo9?!uBr`g&6o*(9s$v|6367TMutQC8X0a*ljs?;@Sm8CJWfU?H8S zb@tVlBA;VDasJhp(`-^sVg13^tiZ3I{6@Zp$1%}k*b5jE9=JRx>e`oVF zpUH-@VmVjM9Kd&7=)1dQ}@#0Ix|cAvdc9E@}Cy_sMSre4YVc z8}QftVkN&#(po({Uf?QBXY%Kp0-2yL|GKH3SX5_D@u)uNml0R{j|D38i zFP9Czb8BD``SnFkX!LOsnrgMnPpL1 zIHW=cRaI6Yh~XlwV5hPH>CwBH&xTn8JJaxBmLW}?;x3ie;@}iflBM#x#0d_Ym&2a^ zyacW_fk#6|h`5@p{0w(cV0Zb?w1E(k1Mxa|7Q%AsDR4(`fNubTuwiFM%h?Q(7=L&C zQtU}m7{ZV7o73mNA2R*+h<0K0_mX9EvGe-Q!1C z<&Upn)$e%|I)Z&|fK+mZFhBXtWCq)_I7zQfr!$-po)chn6Pm81$!?ki_KHagyQjF$ z9>UgDF0w+*^8$B{MOH3m*>E`IirDt}d7hYB|SYX|P(1w3+^9WaxuC@GE1~x1sLB@&zP$1P_bFvca)h&ZdYRRVBHC zyV6r=Gwn}Ff)ltJ`dG@$H9W*&MICYA+5%tRM4nscyx&?{$JLrcvuBKT9+gSA$`?|n04$L4l&D6QB zlk(SahQ${>r-3AzZ#*hvlL`fPUp!J+xTfaGo}ktDX(gp9r&cMp{4)IK*XK z_blxDZh5(p{yCj3Gun=j8)Q`#1Doc+v}4;^FQHum`kNQ;;MH_j+}9xNb?(H!U_<4YQ?(pGU zyjlVKFU04=f2CuQ1SS6R@&$9fdO|D-nmt6UU{NO6Z>F&X7^#04C<3HQ9n>HMo@#jp;F6JuPsV_^E(d_hC&F9G#wCwXh8PAeQC zj~Ddg)dFU)9{h7WN)3q5VUM4c#X~$MRisG(ae|Zv@G?eA^>TtoG{$ZW+;}-_fX>7I zhgD$)WbGCdEgmQ#N2v@Z5>_;-tOh)#D2(82TR(wJ268HSX~!TD2@-?EnFcAbQ8Fg$ zo?sNtXXWHAE2@xJXex+wk99E@%YrmhKa4!sAVWw~Hsr-P~FF!fY%bt5>Yf1J)Jk+ldX?Z&@Iq}E zQWk1vtL(p)S>4o+(!50MaUZ_Ef^#r1UIVILWRv_NpWykFkI<|{HYI+L;AvBYHc@qp z$A`oo=p-WYGlupk;cCF&N@Hks&Z|4kL2A_FhV@i0JE}4f)%PT{!{UWagEhqNhC{QX z@Bvy+-@#hKW3{R52ta)Nb7Vw!@Q}Bt&bsTugCh%#-0Ek;8qUy7FZs8mKY9$mNUrU} zMsb~0y}sS0 zpOLmY$K&SyvMEtBFRo#m2aM|+kf+lvwgLM->v;zp)MRNA^oX? zuDj_+&LrO8C6=n;5$-67C%9Xr8s$zX*vFLwrlzY1u*P1(IFg&_C%=(=8W5AJ!r^7s zynwGTXX9}Jg57xRDb~ibvba>;!SAgaHD4}tYUV{_>wDguKJ6(5=&<=YFD^>Oo?$_p z!c*}#lnd|$t^6zCI=FXWOI*=VYg?;p<7=NA2-mymCH$FYGd#LQ*S^_~yz;%reY?BO&p1zQeZ`@Jt#7_S zWj3Eu6?47E&NeNrgxz;`)mVR%zd4gRty`z@s06%LGZO9V^c@m|oX-30oZpCF_TJ|8 zs$5p}-jhBr3{RJ>(UwYF{Qfg83E)KI=lM-GJ!X>LM8S=P%-K_o7B58`ShyzJPleD) zs;QP%PO8`??!Otzu+$5l990Exk{`kGkhXJtEpeKbllJ-3<0Tu~wHh?N#MBP1&TgF`Spn z0uE<=@ko5})#Jzgu-~{yWxrd1Ctuqnb$j=XmSCw#i6Lo}1Nd!Awww54c*16cQ?4O<<9Qij6y>Gw%?N2}T ze;OtdQ|vCPX6b@|+*D~%<8Z?+{5D$+=+zi@{mB5Olcm%(`KBMs0QVxUz$r%}v&Pmh4hNi+b(K~XmVdclT!FsI zGMW){Czdstcf=6z_ZQ7`6^YPD^6;5KzgW&@c&KmEMLvcS|A4Va6vPRju>b0iN-xsp z>SLUMSq@wrjy`}#EoVZZU9VunzZtqyf#toqpsIU9tqXZ((D;rLD3F}>-H98G`9@%D zR>(YE;B58Y_G!z1i@YCUpM^7w`jc&Ec$?`X{fsqzAK%QK#PHDrCsj&epZpF^hgEh73n{C{ z8i^j4#-ZtJ2u?MlT9+;MlG{Xl28G~Ha))1GSlmgn3iCU2I-?u>9+R6j4=?i@Sa-Mp z$v|tC;}w`x`Orc3kIuPI% zRk_HjCU<;M=O?j7VeJ9(4MYgeKIQhH0um|RJz?#Q((d!cEx zzU(ER)_9&q7^!$$l-HJELDri@Q=hWpP+hjO&@@d3;_X05$5fCM5O#B<+I?%#Gm}IB z{fDEsXQ6lOk&D7PGx-OEsSX<9`7~x99e<s+TU>btm$Sxvx4ByD@cX)q9G>(2af|X<-*UI%c^lkg7bo3uGRf%r=mF0{RO_ zO%2%IJ&vD&X|`)?1cULB<$3c!*$aq3LEC(8&x zFeRz&Khv64bg%0?;B{h;_uBvTt^8KyQe3A6-v~R>-hkdspkXu|p{{VhnP=^r&WX$Noz>o=&}xk>|v(M`NB1j zoxVe{1q-E@nKVEur8GZV@eMgT0nE9VST{mfQ$Ihlf7 zCmtfjK4g;<@`+L)<~3c}(p4eK^bY|)Q%>tK*m7-Z=`-*{CPxbW3AZXW8OnTym#)X} zv|+I}|59Q;bvoc4ZmWmNB!Ky^wAoBa2_`SQb8`U=@UHT#N~_5gn#b6SoGh1c_#E_J zXWVFWh0X=pO^TKhweAo)t~q406JHBFSeS=_AmPG%dZpcc^_gpsDHKx!|P%w~{oKI>u?W z)vDTya#+er=xP`klQ1)i{o_{EC{F0#>RF?XS?Ll zG}7KoXUhKu-QPC#v(dF(*@CQ=*}p=H5ca0VS1FbqGL#I(b4y1p@v^{aP))U*H0TS) z9O`_9T}@$w360%C&lIl;s$Lpln=b*|MoLA~=O}M1gralphD{x@3nRrs*_dG^8RnKa zPvl08yZCig+BWWrt?F@Z;jPx(B6qbN%X&mbo3YnvP)|}H(}qhHdyWZK>~grB7Rjc| zlcl3HX?0N(rz=WlH^8GOumo*g^2Q>yqGk)|deR?Qg7umeK$|Di>}CEgqy1QDl)LEv zJ585breYyh6)+taJ>)+mxlGbJgUN?V)xy!5T2Xg2?7dpO z)=&h?w_AR(r+D8R!I<#!f9rkSdbjHj-5~~Wfk5T%Q=|2MGn*aLyTCV$l7k@Y-J2E{PMCR(w&#EmXF#r=v)Y} zl=_8`%Tb9I4tK#}P^crw@jbd^owGx}10c&jGP96wR54}kaTM{fLIVS&e{*y(vuF$l z;uf9*(L&(3E!jCZB48>DcS2CTE?ha4lF%Z4; zB{}<}0SXY3KCu})4RNzGuXlhaOsagI7bz6jL6C88I_K!Rx3{(vOeM;@A$+g6)|@?; zlm`Jd<8w4;;1zobLAJX)N<~GJ&ttm$im#M?fa~84*SRom8^_a0BO`xq3;vh zL6L7a!i@^>s+C=H^GP7*%evt(TEgKwEjmnP*r~Ac+6&A%WoH~Irx_FGlDT^Zo)HeH zP(O2RKCQv;GW(Q+Ev-N0FYK<1$(dzn*aggXHNvTosa3%Bfrn~$%UU?AZ=gYZY_$C53UM>y~B)C)^Fb;HMu=y}_75A`SpiEO0eqj{wt4xN9fi3d}CDY-Xqr<1i&kp)FfMt=x zdTwd#w|n#rouF>|PPI9l6!XO_sCXkj6)UXw*pP{}$GYaU^2lfD9-Tm9bkcRS@G)y! z<3B5fNs9;x)x0iue*e|uCxEJ9fmStm?+HLjburm_^5pX`+N!{NzY2`w%?^4Swbj7_ zex>P>W30B-QSXC#uzR%Dfp>oSF1+wv0H4DZwl=}9{aWY~+*SqO`Q_2UIjyR6)mBLt z2x?Mn#@1@|*000+71Z&lhM)VTM`vM4SeCw8ExEl5%T03!-knFV_QjZOi%#Tj)JwE9 z`g{nZ@2rix^}%_Uw`*KHyvp)c4aJ(V!^v$UL|VD-C3LIMP*6aJ9SUkvW2{~I{2Wl2 zTxIqnz^@@ygZ&WdrS`#*83noxf^-g3#hOG`AhJ)1dmZfw>6$(`+8N+n@@*ZN^V;F@ zg0Oh5MX$j?I~u1_|1 zI(k$%y>i<3B3d{{f{?;^#91}vy-fyDvh3U7EOUYYnDtIu_dBXwGZWpB)O^(!ol;17 z;>XY6%LDn!fH$V;`n2fWy8+?vM7!umtWlRrNh~_@mfDQ+7occqE%Rk>V<0-0MqFnb~K zrS1C=;4^S0RDJrJ`!nGOugvmd8L0GSzpTz0R|NHY%po3=QR_$jOWl4uiX<5GHP+3X1)v^2QQ0<=G5A*lo4LBHOi z0x7ZgOCon3XynZt3rsA%l7;5s6w?zXv69N8Jz@uazF5@ikU*(TecBD+?-i|s+WCj*=EIo4In zR%CzPck;0YF)s^$Uhljq+}?GJEU{_kV+xMrzS81o-v&xLCHuf!N0&9&)FCeQ`l>K` zZY84WHH^-yT(re=v_EnGYSa0F1l577(_J3?$rmB`XJf9eDnHLNbNnl2Beq9MS_mR_-H7;Te9Gy z3{5qe`xds5v1Z1hOkdRgXR*da`Q|Ze+F-@e!V2W`L2r4Zv|{v_p!0S^$QF4?`2-}MmG4-<1@2>yLhMiwA^rRfPiXcV}ec>i}xmI zDH5DsrD(LB@(m2tUQ5PBlU?Gilp!h-l~uZw?)pTdbgaM|!q{u5nk)) zvDtP|4Y&=5bwepj2W_Y@9BQ3SN&eX;jyQfSF$TR5)X%#%!2~~JtCITKQQA2jnjahV z3_G-Cf9&`ZR?8c#qj7jt7{BL!X%CS8K6<->sYeS!2*>;aNMX$_!sp9zvbG^87fT4! z#gIuQXj6$qpyzr~542umK=$VhH;&u9ChlpB5pM5r8l^fEeoQ!2va107sjvhk>+EY( zYy(=rmO9E?!|eDHcE1M*#iB#|{!&w0YmK35RQx(JK#ggj)@h70%0WX)2`3^>hqjn4 z!GA?P@x7{uWo3(crEV}Z5^mKe+XLmPm2G|BAJMu6Egn+}kuLqzz3$)~RHzrwBV?yO zkP*Q#L~$}YyLAMPu%*YBurwGaewx^G=iuYDs zhOLAuOuL~LNvX4aFAzq1?>)oS*a%<>wapTubomwpL=p|h|C-`blY?AYxa&%03P@-3 z5=gvWRvEjVGjCK1Gjh~8Ie2{4m9Sn@NOjv3-lZL6QuW?n| znDy(?39%<;TTMu}2gU|27V7g0TrKbu+os!v`ZZX0Y{l>8)p1XK#Ls&=h;$5-Ocdn| z$=G(Xv{oM_=Gb0cF1caUmuOAqp@^uEyeZU*IbWi0fpk0D6&NiK;a4 z-7a=tU{TEAY9_@E7Ip4N=y-GT!VM&fA3L%kv}Ix&s*DDzmI+1?iXHzbam9%o-YP?= z9zYL+b&X!X z%@<=zZJG43lW5J+)c`ID4Y{=xe=%mJw;&x*Blxx7H!tqY3lPUPlMi$&T+zY^P7LWq zwwFY_+#~WWa*LaZe<4qtLK6+(d#4SnX&P?thWglImaa_gBKgG4B;XQ^q0Iq6>aA8E zhzAht?U(>n`A9jyz%xVt;ETJJ(Rib@F*`t)oh)TH05ZH!(U3}|D?yV5y7p7Hr5Ovj->B(I~L;pyIJ3j{ZJ+vK#fgnwHESP-%ph;c?y(+TVEeA2E=V zY%nI7t48L0~Hc~~}PoW8BuD50nm$yw}_&Zm!2l2A2;6dM)rlu{ToEEkv; ze1u%#<6d;$5WTPNRA#n|q@hMP)LAYqPS;u8{))>{|i zr$L5Ohn7Nt#QgY7d}jR&#AnL#t18~dgllMLKH0JK-a-NDiqEXXjW6|#dQ79DGLPK; zwz|W*%t7$iFo~`I_ywKXhrE9DJ1_2HingG~9X{I=*bU3M?GMU++tK|hrkaG)8pfTf zDFY^>WjUu9jDv!_!%NQ$z~CJ}yw6?Qm~&}K_cwXYYQzrHXjb2>ALRw?F?td74W0O=T4b5!Wh zEm}B`s;g4GIeotKdmJiRXJC?tGkjVEpq(qrX1N#tjCmR!32i>5?Aqnuaxnw9F0+} z#0`{Ggwjf)zl)Py+CXze0ywq7cww0D<->=HHd;lSsS{DFC2z1-2M?j~MPt2*Q9NlH z?Zc@SqVRn4&T|cI-EJ(dXKgSXC<()Fg!@G3pTJSWWF#;tY{UN*MT2o&q0py7)Tm8j zImx-F4GiuL>7=sJC zAbWwJP_|V@G5#qYu5bNpxow3_b^330`)q}Z54?I)bt05xfs1So?DiGvgmgyD>ndGP zW+%svU-Z^q;=@DkyhrTU z*5XygmS?ho$XH$Ec-g2!w61YMXmfz`-#V$D?B-go-#jcvXa3~u!`4P4tTr;-aT4Q| z;OSa$6=gGb8Lj74vrQbBGVQKm`_ZrIpIb2)WIe<8G|E>0a1<;bV;sw4eeTFHymXF! z=n1|}#O}@_4$10(?N5@;A}!mKsra?5>)Wie%xYJN=(%DB>eeoXQD0c1Wp^wJ|GJ^t zge|7gqLal=sTgUEiHj|4t3gocw268KgAMG{L%GRRZ;_ntL5gv z{t^s9VX zF_!r9L5AP;0E`s$vo=MtX}%T|v2OF=PFT9LL$#M+w;hz?q}|ZaClW*V4b_*8VCQwY z4ctxRT5XK%#)x9UZGcX*S)fm7L0869TnC+F91frHzng*PvI?@PLfU8c2a*AEVF@2n zLUq=A>Fe{Ar>{%dqpN$BIG69r;(-sv-inR7hqc_q2EDMG-s3ohUHSn(-qBV<7Jk|z zyT7-vCHE&OZnel*_zC2!UyMm;ywbX-Mg|){+mV7gk7iyD zzHqSI60wmo2cs>AOP>?&iMa5VL#rTR01jUtQ=E5sx!#z&-^d73?R#JN*v0lEcOZ>N zE`DX88aSsRtlKS_Nrn7AO;;gvX*Qlm zeKfnDc|6VMzhEAnL*V^SC_?=J6B;|+stNu4ZrA$jPUuy+)DxN)OZ1?lA2sY8#ne5_ z%2Jc62nNuivrxusval+K zY94DwH)qk+#pIqjbmOn?ljlzm@Vkzh}5xUtpa|;90GObaQK8o2w zApn2Qi;FUH018v1sjiaOMo|i`s`c3_H8RFUIDIV{5dFl#hvD(RDSK;wg$H_yW)JVIH-n%v$E1hE~AB1Suy2-u$Z{^hCWN-l1izGx$> zN6_72Gap~WkF!BADEMkV4Kj#WKsbGq0t3HVpwMO-eM4M1-g54zZjmp5y;?6eU!Y2V z`vDi|)?(B>F3|9(zV%9l5&A$9Saj3=r&;|HH;b6XH{uWQ!NZ3A^lR~?HP+7YyR3qf z(zWCYKjgp)(i?;@XOlk9-w!{QI8h6u9dg8sVfA<5D7~-X#QGS|u=0e9-)HpZ3w{%H z#|9q3+G{%*V*DTbp<4wz5EZLW+vT#bQJY@~!&U|kJ92o3%`Pks;ew9aoDj-xpWtWm zH(TKlaTIeVa(id7sn78@)VsCBaBSb1+K|#rYO@Wgdw27&+K?4vKCchXi;ISiM}fKc zsSK4^Ws54q{Hc7?Eh*q$Idxua9$C`m)a{HKu*Koqf>Gxi-Z6h93|R^0Mbn$4v#gk= z6`fEo`3Az{(*1jq(%!(B3Y&qx`_5Oi4%J6hfu6JmbpK|QOx}0Nb*0hG%5eWtSPH>qZCDQ`I zYczD{6aOvtie{2n zel&6~ov|9Q_k`$;xBZh$k}U9Yo}HdL)#KJ9bl07tG4V<)O4L;HL|&9L*l@`Ej1zIQ zrxJyztFuh7%MMBuSy}{6>SU*!&YWnM%K{c4xiyjbIZW?$Hk(BkqI>zuV+WMQHs@xj zp6s4!`9;VNH0@p^0Z(%Pdp8sYYlRSV7yZ+d^56i6Tk42-jZ>$vBzC@|k@n$Wf06a)QI zyf-xNqg3TGGL)Gj%*7qa2+o4nsRJCN!f~rkacvq%eeo;dGdLd^U87wq44ESvpuJv} zm!h3*Bj^T~k#(}EX;u%@dS;>kL zK)YvvkhBne@_#h;9yHcLCz}vm8^JP-ja>(P+kYH|2d$2e!CFhe9`K72*t*;U4c8{4 z8@aRp@AwY_N^K0~Y-bG<8acb}B%2|9rSp`EGosO|K<$#N& zY~<3xk+kyKFi=S5k*mGLttAf!&KOl}N$J+=dBSs?I9a^}ad z)wQD$aoo@Y5& zKM*_OM@f0;xn-UnI-5vds~9n&XDR!PUy!mI5370^0Ig;mFJ`-f z#%6H{svmS(cBrj0@kOwu-0&X5q4Ma#!a-A9)i1|4+D=x(f&e<3#l5U7JBRro<$w8;7A=#|JGKB zgKjM?SbhZsr@GEK{CcbR#psMfaWz8LMP+gg!U0Fp^x~v?E$(wky&ljb9U7gdD-5Lx zXSapS(L)aBE_3u3g@b}RxXflOYx{d{>#&(67aukizsvzAk;3pXh>6BR#vP()5R3-) zo4o%iYkCjqm%>cANwR`j|81xYfAH~R$IyBV+;D`b$LNWqx@@H#&wmId?rXs`9NxWItq8X0vJ}7v@K>DB@Eqqf+qfqGJWN(z24j zai+9mI+N$QH5n)Y<5bA48r^48#xT2CP=X*=q(N@to(QZl;X?t3t982{Sj!q?|e#a&|AV=AFEnr65@6E9E8Vpewtk@U~oC(fbbFO*w=iNuKZ>{w5r~aaYDLmmbaVlm1O~ zrct^u97}tMDjQ$lalAorxU*3&&&fwqA^}na|ch~y+)9~A$roa2!x1*iU&b}Sd zqqA>!^*3WCLJ9!b#qwr6mVV=U(2phi9KD3q2&2n^ILU=qdDQjA&NselUHU{?7R!8O zxOJCYlGh~}5hS|~@iR2LJnVC<>}W&CP*;k|>`uU+-9kY7<*b#~QLWrDhB zlG9ZW-urdd;fU{pcG$BEomHuXUynIQvK!JD zzwyhD&SGVe3;QME7#Ar?Q3g!OyAA?ZtkbOib{gs_%eH5VW+I-{eIG?@t@Hxd^L{6q z#y1&;T!+)8RV>(xxF=V9pQ5?)caA1@>w^nZ@r7#fL8v0KZu&uLi{?(GJr6IPYF681 zu+l?~JDv+=U_u*YX59{;{ul)fyuHHx4H!9sg$)me>m7#Z<3fhn(;YxriurPKWka<> zoeZ=gN`*NfYjxlaGd{v;xTN%u(0Ym&h?I6g$}BB;BX#P>A>T<*Egf~zhE08k@c{{{ zk~=m>|8aMIZ1U*%6nl`dkx6QDU5a{DH0h0lvkvAoP!6*wlr0NI*&Z3J&tQp}b=*A$ zgEZ?s#v~x721zy;v)T<#`*;aYYbkILhW+*_O66{!aZ*bhP}BuMSE-i@Y@6GmL19;% z(svW@+81@3GK|V3)7aEQE!#L9*>$l9!=+fL*j?Tgudma~OXyMp9hxqoOBClXeV695 zAVjn@2a6_d#1MiWS+u0IaCq@Ff@76h~su5(GQJ zrA;kCR9dHGNL}r^=uP9!x6&L8sEjA!(AYB^h$73TI;q2qbU zqDe70AZ%}i3>PdjV8OeK{1O{c`fCM~M0VcfIpKf|tU-G!)net2f}ZrfkP-2K5Tx>_ z`xQXdv`&g2w;wu^$M)%8t)ZgJM;t>n2rbbAO=M9u+!0)v#!y!bi zbvAFA<2lMxhaNU{A=1)#ERUZ7)Ry7g!#@H=Dv1MO%!?1RX)5i_N1+bJeGp--ri(H# zOe~N{G{iW5HVMFC0Jz>ryd%itrU|r)2-2hcVl`%-*Utadu$yr-aARSetqsOIhN*O9 zs(ycc1GIbjN#V`w*zC0-U?tA65O7ei?bwiZ)bEzGP0=X}S&Zf&H7OdT#N;v-KO)K2 z>}5*u>Xw*9-tDmpnZsChgeQ6+o?c~>w^9|S!i=kXFVbjnE+(`}#zEt|6q4T)Bf!4W z@@q02Ml!c6o`?x4qGE4CB;a4&Qu$btI{dUR+$y~uE5;e>%(>eK#T8PbHDq))A>-@m z3Ko(~{1(zwv5V+V78+-tG1l2K zs#c56b+nE{Wy2VSZ3RIm@gwbZ#@1o6h#iGnaAJEKHKUuDO|a8I^fxR@BPR(=!PJP|+g zI&u@8&4xip+x9?v*CwGsZHnf6!X_=z>Lx`S?VfaF8SI|-zu|Az%G z*h-;jf-a^jaUowGqzJC&m^TM64S`^pHEOj|U#6q82OIVRXSCk z{~T`lW_gpQF}=t((EF~xOdugOtH}k7qEglr=5L9I1CCAZu>k9;jVxW#*$mch%IpIN zz_mv}CL&j_I00rppW_T!*D1)*mNka}CEcpu9y^P%6;)H}5xlaN$`4JmP?r#_poM|} zl%x!4+C-KnPzyu-!G4G*Myn?QqvHsjn`ol{5lrVkZcgq`Jsk^LtA)WpcjeJ!%T)+3 zz^E$sJgu@Fe(y;O@~|?^&X<=lE3OlE)hJu%Tj()7zc?fQg;25*na<;w1l(z|x$#McsXP&tb^}r$VLq0Dn%~~p6<%O8>_A%L&+P61`qu+ z9Io>f?Gku;H?&p&583fy3zyQ?vT9LhMY+7Z;)!oaN;A}`ue5QWD3=ZOs%qGx z!oZ{^DWi$H`0nNJWde$O5A-K%Th9 z`U4Z3rG@`pRE3k7q`7(xuKXkh9A~Id0F5#xh!&YJB73H z6>RClr?VU;bi=u@t~sqqI4`HG;DS>QmOn_g`iN}X5s9%(_fl)9bfWF`2YM|Hud;Ls zXm|8C*4fa0BG$p-x*n=s0{_JZryrubYdY)Q5NYH%bq%fVJ~@s=@W%`7_ePnfBECI# z#IIMe>t#LX>>R4DShO|@tS6y1o?=p^>P*XV+M0@~*TXg@kIWS|Ta**E$}z}U zx;&RxG@5DaxlP9Mt?$#SKJgDkE@EvZ6S>s)IOzQ$KbhA zZnvC&$@foB5*~^dvEFQSQ+2bj_v7G7k9T9~2(NCge^G9~SJG^jjzy6pvH-qSR%FkN zl&ee*+mu5QZ4Mu^4KQjW}w5lt0U$<@M;S?Nx;iE0K2*IbzN2 zr8HiPb>56_U+a+daj1Kg<915~4=68Ytbomoj2%v|#Sq4tMTF$fq#XuB0~h?x?Tue`0*p-ev$LIXA2gF8RF)99K!=- z<6!&h^6Gw?7VdQ;g_RuL-knk81D*#Ae}^+;5w@PVft3ZgA6hbv;wELOO?fgPk(B<= zS_RkK%So;Ctas6_o6$b1ig{#F@H68U9-(2eKdVcWWP#z>XT4Orep{(g7inHals_b! zD$JSe?JG|iYLHGqY5_Q1=w1RXMY$~#sVue#0+OQC*zx6Xdn3(yVjizJ!SJ3&Avv?> ziDvpn&GcQn@-tjgE*cNSX_Xc=5~KL~Puc1lYV7Mr_?6GWw+Vbtc7;UaF1o-vEUYAg ze!t(gb@*M-Pg~WZPPBJz#QmXCuDfgDmnB{A&VJs#a^CxxiikVzV^Khco`46qIl*vC$sJ(ZIzG4vAgEIaH(EehLCpMyJFJz z8g$R&ti?q$GHZ{G-Uyp@+F}#o`fw0gb>w8~++{dua&q;gB*Gw|Hh4-XS2;d;I);#Y zDZFcHLxU?fd(clcJq0O3{!=l*zb^({o?pOfiro~H8Hl4>DjEQ76xr5}&&SJ$DA zhC}SnRX@*FR~)78fie7kiHRJI_n+Z9;E9zurmzr6ea)=|InYdJOzhYGVAhsmKO^vJz+)XNAO+CBe^9G?%zo}#60 zL3}4(F!V}wu3}e;Xa&T^KY~8K1hEudm76d%ra3?nTr)v}nz;v23WE^}L$sg#ja@9s zQe{{~CVz{N$h=@iW9uwtF7r<)0B$%r@ZD>*4rpk-cYyG~hR9|^=CZ{lVhBhE0NK26 z;t*CF0)#BQmH`sGBt_O5R{rA4s>7!J!(lx`HARqUKb-Tkh1QmptBh!{=Eh+GX;xfI zG2wK+hqTRP2}g%vjx5mzsOoBeIFr>SqY;Hj7lm$tn)p-fRQgzAe47{-Os^*3n2)a2-w`B4SGsbMV;kRnU>gLPtI#E}abET;*G zmgX3fD2A5dx<19RQ7Kw?(Odxu*lkdp)sQrVz8s*#MtaTSW$Q=Y#|r@lLyGXFBZc$_WF2rA($$lyE3p`0H*4J9bh_N##f#g{SLjDam+3 zN8mB>e!kP#If06@hd9GvzSRBW{OJMr!5`;+9E$N2ISG7a9ZywVU8Dpzn#821s9;3U z&*ZFn)^$tiB*>$62Ut*wVm{vF&d;W3(44y)M)KXm zed~g?G_qW58yFFiZoK-mM$atO-}rZyYO&z~u*c&gZX)~&t1k7zgidmm<~6GfgfdHx z(1SaktUNQ+_q}rLeZDQ;VccxEC=1tx1iZM&O5nvSyDDx!#6t*wR5y-ZbrQ1q=8L{H zi~jcd`6R28Wh;D`7N-eK-f6CZX#bir>7{^%Wis=|I4IIm8u%tO`R8Yt3ropQ#K8?> z`p>y#7E%Qy8{D~03tcJja1+7nR3S^^TIL@pLfBP4-vOAIR>bB^4UeE;#ESWL{u&!! zaN-Bbj(1OH)SLv>CN=Tz)xiFXU;GA|&B%sJ$p?@ANL)l^Nqo1co{c>X%s>mwb7@zSghsn8>K!sCF$aMaS&THInmc7^7aqSY$HOmKJfmIuEWcPt?J@O~ zzTy|8JMQ@pq04Z*k<8yh>H3Khmz_5KNeJcl6C8QiGttrJ*p~j$-##x4+ zW>2OO^0-9#A!ZS>0GmN5W0Fl9jDF_Y#u3DiZ3rntjDj>aQT|b^GI!&|7JWGo9DJelo9+%#|5h|l2&8D^tY{V=y^qzI9c`q8* zwzs3`U+{7cx~Ucxo&jSFScr-&K=b^b4~#ETVkdXGTCq@zUA8mMK+f0p2R1zEte==* zj^9fhp+nr+A~6%Zj!AkE7UgmVKrEOnSvZ{C8c^yXM)IzobX9Z$zskzLIr}wnVinXa zUtX&r8E+fe$_6~Xgc*Fo*spp~LJMTj6%QFNk47Xi&e$`dtYh{`Rk|tB-v?#*ewnee zNG_D%^zee$0e;)n3mz_*&hy6dBkuoj6BlM!dWZf}mIJI803ewsv26`Ip^O>hJxwyS zg8&8j6_Fu@lj+Q4dT6ky#T~{`W}6LRJ9ZL-{!v|&P6-fwr!3l6w5cETSMMG!KegX& zZhcYz2?cw>vm-7rkpIw=SclkOA+oWiCbC>p`1*+(xd|I7LNOmRfySz$BfF5eJbY7{ zVENb2>nFN__+sTay0s%1k$Hf zb|uIPAbPvM3cM~;%BRB#H73cmzT`E7r7rcU#ItGX}$KE=pfy9bY$MZ7rOH? zU+V@{gZ7=E;s>i*6@e4KL(P^+I&|oNT5fcbeXfq6tT-XHl6I`cFSN_R66ue8t|5rQ zS94}QtV=w`II=7ZL_@P6gWr@c@#m=E$}*w8;f6W>)0GEi21@vEp4tog!&9PTvq3~Fe^FvEYe0P3k((*?}eWUQ|t`5XQ|V!#}$t6;J{+(8Wyo-X3=237OA zKe;&HXE5a$nbE%yiYxXAGB~w1O(yES?7rXGJIOSn8J*OzHsZCJqWP+`luyRf%&}9G zB!Ob8DQjvPCpD&v*#IlljZ|+R3Kme{YUP;T#I$wFeDQg3IX9QRd4iYOnmj@Y^t!Nu z1ui34fc64ZK7-hnz~7!HPPBP$sB%)shRcwSnDv5nN$Q%Oo12hy(xEE`Y- zCHdc#^La5}+EX3#bbKF257ma}0-?HL(6tMrXzJTL+59s-IkP>pb#!riWh-If@=q;F zT+_^RtgaNgV>unR!07;SXHM9Uh?bR*t$gQ~acnXJWrd%CA_``1a^aNZ_dGT(KLyZCEK(M+LSR1u^-a3CQRctmJU*{x@Dst=6Kmi!JRDZMm({?yP84!_ zCNx;XlEJ)KB!tQ)8*m_GJ4&z1??J4LS4uKXbVTq2mkptc&GO-7_UOx;be+RN?uyE) z7?Av^PpzVJtzdKx<{Q`n^GAn@c6`3{ z|H_U+T-%hf=vqF7?`FjDm^T|6u|bAKQzWYts8_ktimYaqj&gVczeKx~-qLS}`!r8~AM*?%# zsQ^2|DojYTXrrpcDpt(dnpbqkHXuuWAlYU_M7rGRgI98jbn^@(RQ zapqY5V))G&$vZL#vTXEg;=tzO?O_HM?=fLNS!Uz!gi$v1w75Fd&-X&Vg{YX&Tik8P z^Y%L*N;MIktA49^UbMUgJXhXJI1zB}n|)W=i0P|L7DduhdKOqF*qu8aJHm0$M0v$C z#rLcfi$LvT;~d1)O5;my9`OanZ^-5R&C*;o-^*rM|1f9Tcz{aWK4s54TrP`S6`p3S z7Dvt}=zpINHlp^FSHJV%=GV31{!jD4(dmDQr`5#w+YT@wh}=lLg&}J1`h&LVawwx# z#!G1lE_E8&A*uCa*Wj*y`sApKegSxIY_%~r>GsvT^lU#hX!4^pfiAmw6|Ez?1^w-a zP|rk-oq+(aH9VIdEi5vsyIpNf&j%6Z|Ja2y^9YGeA3M*-n8 zS~%-D>Dy=lHmK$X})W}_u z;lAyL)%pz}#`~^GTiRc7bm)BdL1rX;>)fW9CGZArsjj|lHzR zI&>s4r((v9KEs7Y{hW2D(Z1MhI z(U-QJXbP#tK}j?%zX*vLuh0j5-3E0sA}v~|rtI(6`(bLfFI)aXSE`3@q^cH!BKN87 zD0NBNG_V&HI#hNcQ$lV@B~>7cQh}h3FcOkOJyDp9&|p*zpvVl?`j<3zTW;eOfTsZ- z46;TfGPV0Z;jl`ISgpyCC1_x?4lOM*HTID8sK)+*1Zkb!kZ10tK0pVJJ80HO~F?n=dR#1DOg8ZsrSPof8uLdZ*IM`zK^0x z619v|ZZcL2D`2Go95vO%P4kL&w)P}j^Xiju(L;Ai7!25dy1C-yc5?E*9pCl}LlFCe z1g#2TTZDT;oi&;c^`Jlrv4AbtJ@bauh{BYO?K7dqWZ>DRs+_`-r5`f^w!(%G7-|3A zM33_a&L|KiZ`OXR5h&9tVTfU<2A1thpZSFOg4tp(f-KqZz|lsUw4ziAwbaYe)maB? z=*anCgi$)xW49#8&8><3sNVcxsBMI)m>byP>pijP_u62OA3%#TO#KZ?5$2xIGN3ndcaMeJAp?+dUCjvcSfKSbP$gKgMywqr71_ewqg6R z1aS72$Y+h__f*GO?^&peEg0kO0iJuRGPMe=R2EzWE)@&?Glu|rdG~s8CinInA!*5M z^*fR&4AEDocql4Y69{T))$0Tf3PvK0K71KW8doDr2Nf?Om01*3YTwXq7W z6T5<<5vzSAAVw1&T!b&2kiS` z+H_zkipsLFamAR0R}{mX&aR)J6hf1~uerFS^xdnaM_f&lyH~7M%Yt;EnZJ$z*S7$?Wff>3Xc9PB4tGY}P0TSJ9_{K*& zoeLpra~z1(Q<319Ibprzns(7G-!S@4J3HQEhVDXWk>|$Kbz03m2MnhNbLmq5iJ|@) z1*eS+A9dUWd@zu|hU+!s#>=!m78ue#B_6N=M`rTZ9b=V-O~Rd?dw!Ahy~0PCN-ZZ; zCCVp5dw$0EkOcS7yF?HFAgetT>7>~Y3JVz-YRdel3<%5X;5UOcEx#CIEaNdu`Tn;K z?wn4bX}8%#ak;1$S+yD?1zBDg3i|q(O>?T_gG{t?tt!hDuT42~fQ8H^YI>d>N*v-D z=5l32orN;XKHheUEx&Alndo+jK)_pi0A{gzK80ppG~MM(p?J#2<|MOgJtmeC<=dm1 zxSO`Ha=9}i>sRH1yMkW6q>tBVEf1^AMLV(vi_?kuW{7lO*yG6(pS2H~W(rY^B=R`@QSY!!fln8wbCSS?m)<$S0Us$<5Ss zR(kx-uE^soC!0;|$ZAw&YU9TFUsb2;-cWrWxpGp#o}4CbN+opoq@XRaFM`L4m%013 zD(qE%pCPtdYfEN^MIa7Hd-#h(OB?(isctbw^a0?VW6EH~8q^jUNB5jdMp~%i?7+2KlYv(prjj@Wt=0<&}`9IB$7^r&dYLn=)RGSOlS z%9AQlV>~j6a3iMW$zY{P1{=V1>PG^2OZLEI^@up2XyJ-q{eLMSZPy7mK@;W*Z{eNg zJ9gj$%b#T z>MrZIbfdOuzWxq&j+}j+J3`GRnC5q#NU*Yis+DYaxzXDak2I6755j8U%hvO4<88tX zBGwEXpPDGD{lY-bf)zY4V5_U-e^x4F9Vw1dM08L!SNV1GM3@V^*$h)8JzbkfqC;p6@+8I6Ye-T;jPra48-7%f`V(N?RE)ADsBHt z*!269lELEU0ZHBcKTax?7YlRDK!3NlNB{uj{~v1%J6lr=GZ)AITN$}VO~-D74aEmO z{>Q$6Z;{TB^a9M9;TR|byLe=MN@4+Mkc%SPnbs*)GNw4&bMSe?t%6>uSsPyP%lJ$; zckshSf;UK=OuIN~fJTfzJC`SDUhPApxnimE{$Q|Owy}CFRTKML7p~0*ji9pu` zBSj7i#aanVR-p5lI!eJpCLa!hnoc^v;AW!sgMEajyMQe;X?^(NY(YKjJCc4YFf9~7G^)sMtMhA(<~*2fI7-GFuLJqm}}o0 zJ<$brwS_!0_LUmqk1BZ#MF@;zp3!J%Yt^H~`%#6q9s>*;d5a0dgZsPl=da5&>~`*SP0BxmtM{E%YcaPb4!LtH0UPRrhkta?2Gc(79+T zR}~a+`YZUnOuu6I-=}W#UJs|>{K_|*WBC) zR(_GT?_)!mh`edX{0k(n8z5%LYtt#h<3N3wssH>A@QCL>D$&sL>=*-MrkdDrS1 zVs+u^UynXZUc-D-k9*E_;ox5Zy{~i$<_FUWX;&78ih|x9X=8!XuQc4kx@vzlFQDk_ zzaskmBCUx0Y$X%XJaAQ{%u>o}CsHdncKJQw6sFgu6s(rkQV^ZhPA34<*Y7&C_ z)`1$7hECs$t>ew#@oJh(y=m_aBP1?OB1mluzYoQD*0-t@dTypS7mY52-o7LyWBGVI z1i2-X#(5SzpBe~Kmw-hSNUw@*suFB?q;zMb4$&k*ENGpB4Rs+9eKr8j~Ls^BgC)Dv9lY#&MSuovo&WBj${jqs%7Y%R*!Rbb8{v7 zE@kS`cGROr8il$sJrb)2dnZvm-}qWGmBcIaiW4gQYdt}uthBh>@m~wTyrx?2YHjZ9P9AN)IVX8T}ek#oo6FY$p6%e z?`s8IvUTS03P>@}(zbJYoEa%*e*U*3fdA|V0Vj5$;C>-c5X=Ao`2Vx7{x1-eo!v$k zqMu&=PJol%)HM!gA{5N+u7Th`SFnF&qFL7-3LsR(jBMx{iy{*hT92JKu}q}re~8w` zp7#Z}h!VyQwi3EJcM^KK2*`o?X7joUPKdTl{=O4xZSSA@1i4`k)(57nG+riXm2o6Bd$Bqn7V4aL#dN8vS!HM!B zx{v-OKiSJsW>Gp+H4gSE%3?8flv|c6apcRI=RUVSjP^~N-=f*7Xpt~gi2U^Lw19|_ zsOft!^9F8GBANAg{9LmkV-t~RwEGlTdQaSG@DYcqW9)74df~N9yEiuBqH9-Ha!kD} zJ#+$^WFtlAQT9@N=MAd}Au&;C+$j!p`HYg?$waJcl#elSG~Xk86{w~de4bzq1A=t zM#D*;C60DCndbJwq7|@E;DLUH?0D~XpCz%{Rp=#HyRFxim*f{fC|ZveOm0#8 zzZSjznMu7d+A0Xo^$c;kp2bIqYvftH*xDA?ExS3m!W6?-o6^oR;3T4iXRQ&6XbD0l z_&l;W`pFK+onjd`G)C_)Izk-%H=NH5KXr(~W~_<~VGN;5n=fZEl69>q7sGD!58**F z&GR3G;e{>te1w{D#x`wvI7uuzVe1yt@V&@8d=6?}li46Ykr1IngDWoU`*IT5&AhJg848>hn zp=~BsB78l+j(=V_|2SO76a^o{jT%d}OsPX;7`l|t`a;Q^LDc~hVdHI0TfryS;4^`2 z(H0=EX1<(EkDt)K>IFCViuuiUHMQU*6S8e&-Vf6end5VX;z4e`{F9CqWGNXKVPZ~Q zA6Kiz{sNrQEw3UvNZJ{;_F3=+nxJT2>1 zwpi)bwUOv$a#V^C%OA1x%EZ>ZT^fUZqgW7|`yVCSW#~>jSKh(y)5V%%`1L02bga2D z8%36Aht-&(QS>5Lp5snqEWnYRyK{*3<2$bK$Z1XhlOcy{It((e@Oj|YOa!VN>NPM< za|J^zVYeV;D3)zlT$LP^AXbFep>PquC@AoN@1u@gj2An{F{L^ttbu$&D^<9k;1ihP zw#z)vpIIZZBp#av0cIcP9LOj@*Ll|uT3By7cjv&B8iq2XOgN`2;pNv*DYQe4u5zKP z=Ip&f$6Sk}e%#Y{PkvRTi+W~L$)0&T|7z6bfwy7*yRxP~{z38Plak_7ZeB*d$m5># zRp1R1z`YN#p;qd}(qc^@EFlNGXfw}_u6FU5>1zouCk?j;-+}npzPdTt-%p2&ypqhn z9H?(UFkxHVP^k^(XWgUXYeIs<=YV)G5{P!6{taH3;LRYxF&`uZEQYv2fiYf?;LW1n z0w;L045VO&mHW3H4Web)g8`y_G$@`MBY2Yz!I2ulkz1hruSyd_Ij|B>3?={6#caki z0Ov->%o#p_Y?q$-Jw>K+nq!`l4{4hLIDiZffO;36e#JFYm$3iv1u)u;g#O(-P@@}0 zy*oH?)C)-;lRjP;V3Zp~y}S5t!BOx22a+bo%JsLMR^OuLL0|ta797ovq267mZ(pTv z-vwaOgXVtho9@^l`YsD2Xr*%FHZG9yn?Cxj*FYvJO+pB)v*0B)*ebI+orJ}xo`GfE zML2N>SaRvA-4BA~%_sg4A5zj+kKzSBh~!6K;yw=~5p3#!LE;`hfaHhbw+JKop(Lzu znuZG^=>?UnalwO;{Jx7ngbyX@g--m0O8mqkL1miI1dUf*qFUXFMs-GPqP)TiW3yR1 zL1Bg<(U+;G?dcw&A4fZc4GHyw!tcUnTZZhpl6N?+QB+zOKl>z$S?M3Up@kCj^eRg^8P%r%ZP-Lno`3#Eo#yD z-6i9jk*S>$;urfgOsJ`A(TJiWu;Lrs5MO_^ir{BYaJb&@bbt)P&09xAICPR4H@vwOm3efq7}ZW~p2d<8kGvRg=Ebcg2RBnp zJ67EHa=A~02GjEYB0(+vlAz|zS5zOEN|xVM}%POIf#D5w%7vSMHB2Xv|SI@6)diK=}-> zc0F|$y?y)7=PdS+OQRn(vAwsj`po&PO!b?_fUS%sJk!OeVfob5wUjulET|7l_(XE# zeH$b6h&r*WdxE?PV>K3!KvU08!CsA<8L&_vT7qYn=uEC8(-vCDY+$L_$`ODKz@+_& zh^8D1ivWeSq(TjyjXnCN3DzvtTU9uu+nXX}DNj13l{7yvT7oue3BYNkjeb#3!hJ>z z*h(r9)N)r)EN!+D1gnk82_>a-bSq~Gs(!>Si%M;+sn)yoiW^$p3Vp(A+FQpFu7+XW z{z-u}E;br|D`jyUuXoJ?Z}t7!S@YznRyt?72Q*}owo;O7HChQk zA65kI@V(F^x~66Rqfe93pwL2W<_P}%7@S}*Y-8A9K z+;>jXHD$I{{gK|GMy8eZJAm{@10_s27IjpRVZ{%^pSiczHc0af4yIQOm_G^ts1JD< z)>TS|eT-KGHSw6;o+j2U*p^UbFl(Z_$gHulu6Pd@rwib*jfO6{FJ`XgG9dbTBM@l;Jlgd(81zT7nQb;MYL@V(CEs5MZp{O@0SXRs|I z!6`kBRrKLi?0<)|0(gdu##2Y0_)!Q}D9|gAqgIRzM4P+V5EeX?BX}R=cpsene$RUU z{c6Rb6qa-H_cm<`1OR~Me_Tr2*_-^Y6A!2VcCn_cW3|EXd-n0luf3jDJmrfQz>|!y z-snQDr7K1$mQZVB(^wmS*!=yHR6S(D-6T}8b3NLAvPnFC(kCgQQ^%!ul-IPzd5Hf! zY+=RJo#Jv}FoSMS-A*c=0`Flp#zZfPZeM`{BMV2v)$D~L3gVZ7(;^I*gJ#~(4$;QG zVbtND7jCqh$0Nb}h#}pZ;8ibzN7b0G_@_LqT((#;TcBLQ2mwjm^@};+0U!GBg^w^- zi%tn!Bjg%`PEk#Ro~{N{$plh*kaGB)^Tn_;S3&mc zgSA*V(VoLA)b+w!PB+`z2SSv{IpZJC493C#=Ubn`-zsj26|o?$$@Uz9DLvckkkI6*V9v8XBi zVa-m(g?)`Ai>M;)i2^W!v~fpA=c`Iw?PolL)|+0UHoF16Q&{gYiJ>dKqkkU=FY0xY z{`)X`paFgJX$_u917kcJ-qxPp z(CnNpJAu2bQQQE39R8gRB^G~Vt_QNkF8Ih}b*1@wyHwm4DMV=$ z8rKeLFq?zDZKu8A^&a}^0p9_mn15fi`X6}|W_;j`6E021j7t}U7&~M$QhC`$m!prK zuh&&fB3<%E2xj=+#uZH1(o^Tm$Ir|2^zPEmcGvseaoR6j%aH7QGNxn34v^&ZH*-7u za}KxcX_k2BCA2#O+W=ZcY4aynybxTN%9D=GfWhfzy0yYocBkXTusSmWmeLG8PdsoP z?PAJI&v&oyB;_W8pgngm86<+8sL>r+)L=2?<|mb;Nl%m~D0{#gZg#+f1<8(2*r(xY zn%>~v2ZBZG?%GV<0r}6NZm%@ao}3z}Ax+W_f?aOOL)a6617I2Bine4o0cKr| zKyMv7vs`yyu2EuwmjG~BctiR-ykUKq$4o`Fx|Ib;a3%GaZ~aq4{4=l1zYU%^W@jJ}s9i66@v3!&?_6KSflEwQ5vJw{MteWO_#G>(9GO?Z4Td z1M-Fx@I#!8Tf@yJ*2gNJG&vCG*8F2t$EPxB^1P_<;}e!pm+h*51;!xU{0I+h+ObLE z_ZS}}KtLZ?_UPZEiVT5L9xOzneXL6vNd&ziIj#fT@7CVu1G7lMLYuIx?y7 zwj6y!?m<_Jb;IuqRJ$67lrz;J(;oH)kVbUp`Vwl#2cUFQu>A;UMG^JeO?oikiR{8W zYKI7;AoY72-evb6kB7S#jJQ9;jGp&;EeURGn)!g^@i-cN1<19sxCugo;Pg6>!e7G2iKFkuc(cXfUKt{=RXX)DxzMa!N}moRxYPrHDMD6d5V^stTSSC02A1)w}F{4-22lpvtsLv zKbTj?&%4*=bh6K%qcz%d3w`wsm&j$;Adf&s z^mPxU_nfVEkKXXdER{@%7QaEHdbE7ggO-eLYz591zu1{NPP}dvovM>1Rg9_+?t$WO zVpqjUSJ;!BUc;vXM~>iLUkXkzR*4T0wMeS9#{02$I;J*#sK+aQm2H*UKh-0%23(gT z$ZjhJ=>u-oq|g!f)p(F57{IArmDW6g*tmGmjD!RTRj4bi_)<1nraN;!#Vk=-!=ZUo zDrG|7xu`wfE|7P@8Av;RRby~{LRK$RPE$n92lNdn1f_L6eX*EL0_g~3EvlXll^CNG~x8ZX}Vr|>0A z_~j~AwZ`uIPoU9tz_CH0iSB&JF;?P|D72b!H50p7L&BT!`XW(KED-O2mPi0Mf5#|I zR#BB8iA&+9Tm^j%)M-|YW!CyvkgP1eAhC{!12LemsA|JiOUpa82J5iRhkrO=9!9P1 zWMbPx*aka{)Gd0j60?AE2jR2V&Y`L#-ac+&?@j>a^|q#nwYi<#MIuv2B964gMtz8V z|K!yGtnl?O7l3_JL=(UW(QH{f|8`bQQMb^Fkruo4|I?g};7px7Ia;~5H)%4w2JSt0 z9pwfoid(OQ7mbYB^>CLy((2{ z&MlX{Hhv|HcJtltZSkPk?j!~D9AkLp+>Aco{Vy<4+S>JvOO0n11Sq%qkg`Lu^Mpx{yI}%5hvpccOlmxGJ>S zB{N1lAQ$6b$^F7axTFE(3aaye&6qLS@_xcZTy8wiB-$)F^f+!1I1*^I(1I(lD+yV& z&UV%2#V4N>X#XaGD$CfgP`{3}%pL)R`K9bbgdlq$t_>K8$Q8XOr_Me14M0h_HIvGTJtT)^sZ4jk zd|9up4R(R6cGAxQzQ9pG>Ei-l=B%Fy_)nEN?b{i?bG`wCi$M;$cIo>}Z!}`yY+D+A zt>vt}aYS#orY8@v^eeuaw4D3tY%l6W6Yg2xEPiV3Q}NGw#u-#%&!uyY-Jz*7oyX-jPK4G}DhT1MsW`BK5Cl7>!~l6UjUssY9g{02R}Dt%sSM0*YTtnbDcm znYPmYiWps^{H-e?Uto%8xvNZ=5CBZ+7~`oNVGfKw*Mcf&IgLbs`QTCje$bHL^?!EC zs814HQ~&6^0##?RxZ$zz@e!ZYijxozF-e5^t)fHMsy&dSs4d@MS}BpLaz)^n5UUG= z4<~R8raI>^dsM^Mb4GrjoPcVwO$0et($L&Dg}&SinvIqH8I+<(|^)a5w>c9LEjtbTHfH<9L3QG8@dg&$pm$t$fjU zsZLeZwX5&79A@|o%g3aF3H!so2+~Fe9Ai6Va61EV%nBh$1c*V~Ms<4}77-WD7qB?2 zH1L5_Ky?*5>6+V-KLLa${KaIioS0&|9T~=guB)P2j(Q2B$e#60fEiJ3GdVi0TsVTc zZpa60s1%B#kyNg_4@p}uXP8M`KH4b!r-g0M(-b|9f8-K?3ZRj0+rlf#rrwePV?(Oi zI6)kmJ`;<^CijMr`Oyun-B+x1)XO`!`B~{~iW2FVr;RY+6oYe`-EEGSy|&q8z<`7S z!`Ks#_YZWri1z_^t+mI}-4t=6rmC?KBU8oF`v#D}?7a#A@t;VaY!YWZ0Z)94H;(&f zSXx>d{$#me%XlDKqPc-bBtECAg~=GzY`Ew*N{0~=1*s~eerImzd|+@mA|7CAngho> zNuuLCk{Y*JYf=A^)6lRiVUBGZ2mD#UKC_YfduzjaX^xbh8?*PupI%h`gdr7DjooTx zb;N&b;5+ttc)*awupzKqSaY%NrYwDpC#X;iTkW%syUZ7M@a&^a4~D>qZD{XOiWof{ z)bpn7YE2-U(rj`n%C#-1<5`(A(Lp}b-abBd=NZcw^z|Bc0yF3d2@`YCr*|UEOPvf- zwu}|ikNa|o+L*2vEAjvrRc$>>YYw(%M1OnwF@VO(>TTMPqijyV6VfxaIqelwZi6km zG)VBe?eRXKO_Hao#uahHv4*YQh9OPB_3Qo~Z6unj^-RExrV5E1YeY0C< zG8Y@lqn-kR#6pX===o5%as5m(CcXr+yvZ=V>1UoZae}WX=CV;yBy$0cT*)!PRdQ9e zmD`Jz6OP7Kn5d#HD>LSJ!v!oaljQ_(ptbS=auk@Y6idbhqOlMb(P${A3qbWz!eM|h zf(ik$@c<=^!q7lEhkWip5sL?rBCK;Gj1fZ;`I%S}!m~j2mYl`qKuoAUgMI+{5S@*X z;TQGU1caiL3VG-Vr)gWKRgbG2k`Mx|$O+MS$-`$(fj%o}f<;7YF=$Q2Vk@@L3)T6y zmnI#9_}*)Ane!_+lCuJW30t0Ej|3YzGE{5j%KWN5t>q*!p|!Qy)z$H+sk4Rk)e5q; z6&cNEFw~U!1$Yfo8U_*J@(3Ch50?u+A(Z(h>t#Ptp3wVckA8bGnwR&p@9S`?X7yY_ zOPJL&`Yt08mCRHx!$nFC#r-9V3Lg3JafRFfYHG3AHL?9aRQalR6cXMD;Z0*J`4h9u zdRx;N^LV>864FBx3&sCBn-;a9FHNES=oo>ISpgo%`Wz^8wE(}~y80t;*C;L(Z zXn{BG!vd}t*Uu{9)G`CGq{FCb5nPc0^J!cep}$pL%}8If_&t(yqZ10~)j;}jT+Rvf zf3O~Nzi5zspJ$pC+u-<0;98f|6W;R4@gJwmJ$Eqn3L2Zx%9OM)sIc)=a;PkHb2XOA zNYwb6*3LIAHQPM=U9QNgox@peCa}shV7b-~+n1Xyrs4jo;@GlcxfzaX$3&}u>#pz} zTmJsz-ITcYdqy?BUo10xc^i+#Vgi)_uEe6{I$*snB*u{r$i1z zIfyrW4uWXCs8!>M>MIz1l>o-K*d>PbE(YZHE*A8Cl^C2jaV)SZw2yN6C~B{3K-hi1 z31_%x!t72mO+Vq!$+9aaTs+pZ795&Z>jS!>%sH5z{mLx!oCci)_re5ahB8H|=8F!* z1ib+PJz;Mi>>pxvD<^{&Nz_<7Cav7yT>Qwb)OK|#utpJ5`NURwqN7dV07F2S6eY6J z?z5W%p-dQ~_dzE*xCjRI)B<=*48;yPbh;2B~B6r9@vN^K8dDo8s<^*$$F~yk99j_z* zqpwBI{h|q5leo)vxxX=wjmEh(QK!>MZCj&9-C4l*Gu`UQd{Skz)_9G=XRTp2+0kCx zi2t9LcR891q<)-O(eB|ZdMR8|l`2bQ+jD(OrI9(>dJ~Hon3sY>*Qk!+^4?3^%Hc05 zROy~48gtGv8gt$xB@1c|vo%yk={tL=v#&>N?gXYqlk!RVv;y0=LHQT=0$bVSIVk)< zqPeXW<_cCAU1II*ICOG7mdHT0h}bpoCxN2?7gd4hrh1e{bSus>yj1XhKH5=X9cAkm zvrhhvuRmkgy`TWCMrAWTh98&Eo+woXI=jy)4QpI-g)q}>4PtH=$P@XIf~Y~2$N(zu z;2W>28IEN$$(L*vlvZ(DWKIx{Cd`c7s*NofHPhBMrdG_ptLrrU);8NRuQRAV)JOR& z(c5pIx+$&4QuC9~rcF%gHDG8XazlIn*xs@r55{NGV8Srrm~m9`LkD5P+F-+Mvex!? z_cJBr&i$XA+6|6{QfZ=ai`LJAjfoOm>6`m6u{85)rA=)sWhjMs*F#_PBe%0R>z511 zeA(`&qJ{LdGt!hT3)Q;cQMa?y6e}eu(AL)bm9QuvVU$I)6lwp;DXrrGx9-W<+h6c@ zA10F}$=u$`rbRuGKwAuo-jC9qdg+vTmS`Vrl@PUzcmiT#)z-t0tbeVycV>;6hyQ%+ z;GPOIjJ%;XXrL`45)1c@sWUJX8DGDfd&EMp55ezk;wM$0->8bpBaV1H`nz&MDWgVU zTJx!+nfAt~jRWyW6T3b_*+|!kmRsqoCVON!&%VVlz>>soLazHi_fzcju%s@NK$U6O zN@zMdVb=uaJ{TeJfqKU4bp81oq;oMh=lt*3?NV8P^IVDgEld9HAMif9LUyi6|Mrwi}cC;`<3kf!Pq-?XBMu_qOomsY}>Xv))U*d zZQHh;j-8He+qTg=YrXsIvCoGy#`$uMd)_}_&YD$MRc!$>XfL2zxVNrQsGG7O|vzPu(3OIk;=3cHr#UuFnKp1-2hJDI5V77lQqlyE;nv{qQE zcnoFEF91Ps+-PTXbzhu%oE4X-KgMoHOJD!C;dj@P%EQTj({f(52}u54sL)!JDv!na4~$m zP;gnH5*vSw%Aito1nlGDTXQ)0GO ztdx_9Kq!R;SX|NqopZ4eaAsFXr6dPd$qYlxHL7A}uo?$+Unk98$WPF7k|$t6-zXAV zoND;z$Rbdk=R`~IvhCK@(`5NGVogA!RQQRVE1LqZ#q>zW#Uup-8S@~IN$M58aP{|C z@dPU-T#Dnyl>gHCD4hSS{lCCWp4k2z>`6l|a8YSB1D&ZLV&fK)cBi@|p1Dn9m+qqZ zLnhArdZdPxC-KOpC6&PxiyhZzd!wghVR+A{vb#i!_;oML&9cc zWI@g|gy5X}h=s-5^f&{{NIALj;oya0YVD|uCy_^ zW>PELD&d2QUZFTgkSdY8f{WzS&2&Mk4`)GQszTfkfw?8LFzV_VxVk;VLGda%be)GU zLC#cIWbi~yHNs3edm85+*P`!WQ2nlw{Lp4W8bQv=FAqSJZrnlG@B$H=gzIrTMhMzu z_u}cL?fQuzQiN?wz!}>N(Y$AEB^9<(I%-VUL31LfF_Q+TNPLwWxCa**VJx?iN@J{e zGK!vQN`y`t4xSpm@>Eq(o4L9kH!n$#pRTbUghAaNH8Lx*PN;YX$QwH9bq=2Gqv^5w z>e4AoiSqmYL_u*~Ouu8j&-0_n!su|t*!)O~=f4+Pokfy5o#Y>`MUwCPV+b4~L{pF*WP*l7f zvS{4g86S_fkvMB1v1q(#h}T7!nF%CN8HALmn*bbG9ImhR8^OUHuc@(VQq?F`a`o*9q>LoCyb1T+h94wl zv*(!pj?xbo$Ljy3r_64iv^>wqU#1d^>>Gtc6mBG&god6o-91O^2?A*ySfg)Nvdt#Y z-TA&hKG@PRb<&PVOOXI^NQpuEt^LGfBTJu;d+zfLW9BIbV}s6koal_r;5EI|<)xiE zj&$Oc7wok5Q8l+pG4o=g4I8<`EN|-6#GtHAg^Y$F*U6}lFNu#O*ag^^Df-2b&`!P= zF6=iU$lwT=i{#aGm~<2o3ZLt+htkjmrP6;T$Uc+6$#q^e7mjJ{K=S}y$DWkvNguJ0 zzN`xu4Hyq!joGR97{<@Y3XciLdPgsF57{lNM9~Trst>!KePB}hKm!t)@xUB-?FRC6 zBqAFcpLRSx&zL4=SpI~OcGA`UZdbt%9hcf5y@#53(r34`cQ#PBSk(hBBd?3k(AI8&xcWJjy7Gy z2_HpZA%&x1AYMYB47928n;dIbvX%hn`&SiO3cM5p{weo0C5*vg86zV;6n?C+f$0;+ zncF;mq{C)Ms&HsC3ul0+o{|7m^f+uX5ZG_@QJL_~CSY2zl?Nkz1ILFE1+IQlZS>@n zvN?RYN@2#P8IM%^vo6fx;;*hOaAP!u^aMvE&FOBFb2RirE9&a!aqf-jUPW6PX>;y> zsTO}0{8cB1spfkhX%!^vDU-k9s3M(=*rtHD=xz`DYah{0+#iYvyI@hQWP**X)=JQyfV)rlcyM zHW2#1?PvB7-K0}PVMsRE@vdHUS;l>DAba4}x6E5JzijaAo)a}UQvF_Xue1rZCRk;kw;ZH9x-ks$3aEe|o@Wz+>{~tUPcf1^AqO#~%-uaM|i1(dxbN_vO#L)w3-mci%jp=++W9Ow_WTmH) zIkFhj?FhmB+OMu|%s}w%Mk&@23!laHOs1Lz0Nn|D!C{xCtl`F? z{*$d;QvEh%#Wcc%(?A&9;G1n^5Gt>luIk#1v;eSEj*0xsBghA;R%KYn?yD$b-su{0 zm{lOID-PjJ8y8C02G1?}^0nogtZ?L4m(q9e3d0WO3_zcNE9JZ26oY@O^J<~nTi{da z>9A=Bv6qhL7lFF56MojiYWB!6?`J)iyzgrE%5*klw&%IQ@0eMF(NO@?=c?PoHjkxC zwV}t*{DxfUyo-^Kg2a&iV7ayXB6;dSAzJ$hH@*QOVaBgu(U5~F%lRSYTFX@or2uONxkvD0`%%uXu#fRMBuwkj3I@+S|CFBaSRdNp`rT1aL;5dw!vXJ?* z(^2wuMOz66!3vWl2I#}0o@xK(8DLeJzSK6c%{@OzOB<^a?{I`3k!TkToE_^H3h_2R7JnrI+|GHnbvsXp{Y@7h=ZEF2 ziEo$NXL`*nsW`P?J@k)a<2WU=<64r0#hxKmg@7rCP!9LJ~o1eew>owQjpwUh8 zsx^SIZPRS!=%x$^dsX~IhrhSSrSfewKlqY;q7U5ZAU{M%B#zsH0JF=tiQj)!%8N-2fosn5jl|LTb8*n5J4}Rr{Jow0cIDG z0c@aF?~L`fCtX$aUrIa_vzbe{My<8&b>*^9y`Xo8NN}@eb`DJL%K6raO0TfZJ)#j1 z=MMlJk5Rd|X0Vc`s59XHPgx}U=Y{6YtTZ(YJ`hc>&~XT?;p9#98At8#`nwMMHMgjM zy!%Dn2qWD*jjZ&`4)MywumP*Coxo}74TRaGT?v)z1j@}2(V>K45;|bXa^T!9Ua3@{* zPjBX@%h#`15_V`|=%O*17+1A3J4$h48reNPlpks;TrLs4P)1*9R>q z@i!$99gW&hA=zhOe?=F-PL^(=P&IdWf>jdvn=n>yYrDCf&bYX}y!7(WaJpcN5N&l@ z%juABt#5Yv*0|ox=SI4@IVOGFzW=P$5Zqk{heDJNcd-KN;ne*U&(P35H0QAzdqIy!}wj?1sNUmx;8 zJOmT)rcQaCryP+nu9e~>Zeg&yP8y8dOBSbz)v%?6+R|9TE$Fi%1ShEco8eo$ClwY$ zzSzZ*ke)9-y4<&j3s_Hvj`C!V5_(H*lSYevow)4*4P6(l5r4}uZiFi~1@%1ffN!`U!JrQRcDMpQ;L_Sql4->zm&mkl4KF(=?l?}Kpn zp(tV6qJ~i6024%tO$$Ejaygi)oC`zOSA~y(*;OZBgoO&Ujzx@z7O#YYh+~TpMSr3} z41*H&C(uq-f0KX7t#dQQYON@Z#=AmL#GlHvYwc`#1fZz-SAcjxCwQ?d#KQrwY+0I> zn535@qvn}oodXfbt1;P)3EKrq_(kYw<{EIqDb+==O!wm_iu=2{_|=dzWtFo~Lx%U~M-=E;eI9D53u^J< z+wnN`X>4g&imXwy{$p5$u2r*YIiyC@qWS-IacxiWbI6_YtC8WjJ0Iq2Ow zHX-a^M)&s%!ltpaFVV>F)yG$ny9B><h308u`aGqPd@{9|Shwak_yF)U#Z0^$p_O3{bWY6|*yVx+MyT z83=$fqxI3#m1d{XzqPU;YwvV{O9pkpZ@BVkkk6Qp=)qqc6eXEA-)YId{`n02?(|q8 zw1|(L)8|EtET6miqL7YFy&Z+W7CQ%e2f;3EDF3g1CqaIg!T>)(xZKrceMC`|Y2kLG zco=?2-fP8yaa1B8=m%p5vysA+b0(yWchUcjlb{Op4T2(45i-vBPKYO^`X8R_f=d8m zPdQ)ql3vLQa{OGO1%dpg`MmO6wkA&0Hbg^QjIQ3wj5Tgw0slgTfFe5NW;=<&5z1L) ztX`}F78HMv&@7nAGhHMP186Ec<0keVUyC)mP04fmMWKb=)H&ggFviuhxRn$v=6_i) z=UDLh*``^S#rVQ-D;1DBV1^K#HL&0s0D?#L2mg!<% z+70g0`Z_ae+ni3u*6}P>(yq3(I^i59@Y+bgRwNMhw+M6Eh!0d;Rzpv7@;``_+XQ+f zjXISKn${AtsG*8RKUHN+Is;X4oVFl<4V}%yxeZ+v{%XMI2ZM$#d;O4J)b`;_KS~}) zq}8ZE^|Qer#3~=a)u3hGeb^Fz%p$)`%kqH=xGb+;@}eLXm>GMVsR3=Om3dFtrk%;a zZvo{hseWzF=1khuN_p197tCqzPzT@H6g*rT#H}25+`IPof+3g5pH?A7=?=+b;KrxR zkq~Yq3y3$4YydIb~;X!xpFoL z)eKsm?Xs&jZO%~&YJz$sYA-ZV2tY8zzYs%8@5`jYe+UEv7C@`tkpF4Wke>ih*z8A; zz$lN5rD|ZcDKbl?*{0^>Eb$LMNPslxRrG+`Y#3bxFlloZ@UqHL#6V5kobtDHrG9%2 zJZC83``Kaim>$_8w6&y@MumsYkR?mBnS@)jC1y@WcqxS_b`{WhJE`QCaI6)*NUJ%W zlH%nw4!CGz?#P<9{3gur(ElaQ$EW0CSQJ*~qcBZ78prk4bn=N|}JQ?(;__(5_{ zpV#YRqLma*>TqDZ-`WL|AL7GEW0?_ho9`hnVls!Kmi)zP$iFO_GSx({bzV9-nc5oK zjV-&*lt%-$HaTFQ9Ar03S?el7<)nCAI4R~fDE5S?#&=zE&XjdO6|$I4Ij|{72~S&% zB@B8#%j=}PRDNF>=;B@ZMOKKWTXEg`k#3=0}m6{N)Nr@!K86X#fP`bPgW z5G)os=hF%03RVansfB@7+;nFPxlz$W-Hz5R~O;)XViH{@f*r)(!)wCQ+MMMll zQWefvpN~UYQbfXT2BPvy{6{D2z^&+mXH_cz)f1YK?LMuVMsp^e?fLFQSq)}8sKz#% z;kGyA7!ynU#Y zO_FBjCzjcq6FQf?-d3s#Ax6~}W;U`b5K@;rf zrKcl;1;hem3N#7S_GtjLxynY`8-a(1G*2RitG&`O!1mUyM50YxxbjB{I#$SyjA0CATfPYcqCwK_4 zI$PNxXbGTaqXEqXq6hJ%zvh!gG94usl%Xsv?WfP{OT`Pjawg1g#A$U?mKs6!N70es z-Ckrx5yyopV93BBsY?)PcmaF;FoX!!6PV}neCszW`BZh~1nE>sY5^u~%D zZs^U)XdkIje=dqPR4P$)6|)pl^ed6r(Pt&2q<%W#!es7hdKPthyZU|>_);1P#*_Y8 z5GPkr`hw*Yvz4}!N+gGk(5ohgE)#1dABIb380bhD&?xo4Kbo)fvlWli1~oAg#C6C$oE|L+0sE$N%fk-(*NldzB{hD^vPM z{h}(98-%0Is6wG1Z|kxbRUp{O zFWM6uW|}$UWAT|3?h9-D)mZuyiwT@MJOo$K9i19kl@LX~LU78)C}b4kBlDPUs}YiX zOx7q%+NNL1Sv4f(0f%z&fyp`U;gL{b2aN1wSl+~Z$zPZ(hEvZWXT7|oOU_~P(MUpI zcnrTtGjh9Fj?C=NW2QX=31kRJrmw|kC;h7(B>4JQ<9Va!w9PK4aWZT4q;AM$pGHam zK_Dzs4q22MiSe0qkz(a8Uuyrj`wZJNMua8*ppeHMCgi*~2`-mYH|6xHH&nMgirXXM z2*Z-PtA%7tLnh^WpMl$mk-Q^E6e2HrO>(Y(pU$t_B8akLb65;M8U#IuuTi-av498f58c)%k;NHhn)=!Tv3 zg$BFJX|)N;#?jP-tKL9;S4Ed`3>^R4?+=->BEuMWreF7&e%kRTF;k{ML0coE5mGKc zJ1Me}?SOOw^Ng)+uhU$hi2G%ixhu=~_{engYDskSYT>p!f6h=P4q?G}=N-jgKRb}- zA>cUh=@4H9P*%p!df=BG38#iddzGVRg9HWYF7`=>%PfKAmv)7crzggG8Hi5f|Bge= zQF?5Oi$sU`YfL&}prgkirGT7`c-&yHO1@&n`A^CUr$|iV*()r`tNVP`$MfSqvK6Y9 zOH)`wIHSmGOUxoWt$@y=(x=@Izxy-QM+FLyP;sp$nsYT@c$(Z;;xKZ)JC6Rq#q z+S0D)Zw)Urp9(8fULMW&_xdB?uG*_t-wkMnSF1y=H|>lcFZe@_7Uf+#r0<#|Uupd- z_;epz@1M-phO2+;Bk0^NZ#=-hbJ^rFUCk!4?Z|kP`HNUez!82r#wKgitmRF;m^YHv za-#`aC?*g$k~o~;-%Pt1F6<}-K=giZxE!a{(aq-yk>MtMyk%;ax;fL!xGFt)q9Ayw;7>X-{y-D31Ss2KHmzF-a-DeWVx!FiA`s6cd#%7U! zfXF|WIk{>Ds>m1o*u^Td5R{|RT@z_YFeDoU*e=}#0$=`msTW1!cU1@%(ho-}W^o{T zSbg+Qez}QOsJJ?)YDtJs6mPwyEl`rldut)7@ZuoQ&N>hX~(Jc&82A>}-q5D0Pe&Or46cnzBpL|+2JkPscrw^WQRb?d_Z&g)*vG%hzYtEzi`>6{SYlhK=QoZ{A zwo7s#;O+Z*y1a7k23`}!$!?z)uUk~o9L*bh3U!y-fM66#vTyOjPi4GnU!u5OVnEb% zG&QV+D5XfX7_SQ z{nJ6rA2`AOyTzapKFKECdXQHT_qczZM!gGI%#ts)0>kM!$#lfA#`hwD0$(QWO*-S{ zjSZMa>SzMYF;)D|sbl`MDR*YeKddN4-g>+@L8+qm(rq+7hl$6?b@=iK@jvrqC?N@<9 zkiq`#OMz!P#;h#7>N$8y<;xZ-3WudIWJ=N{p|?W25{9Cjvgn#87E!7Oz|Jtq3lINlnBaIesaC-()pNC*6jf1u ztbHe=(c{vR?W>yiJ4#I`uWsG0TX@~7^Cu(W6vZX*rD7~m4UyX8Idvewb&;F1|6VTf3C2=ydgWN!MT4PTn3X?r~ZEq9}Wzi z>lx7Lb=PhgNnDL5-Yy^8+FP-3qkO(z@OmgSX@4Kc?!tWJx&C|R@s{GfSVB;#d)7|- zo2B4OQP~2$Loov*p!V7@5Qpwteak}`veU3h@$U$eguwJyTs!2fcW~V7pYZq`TOAl| zFFwd+9iZ3Sar4&|z1|)d-*%sWPb<>*lDugkxrGH8Fa%zN7NpFik$!P z_6YqZV<$}EEVv1iC)Fss3c&2^xRC{AQMGq5>tCwHeAW*=l!w;7>0v(b=#WCu*@|h5 z-6?<#Tnu`S&Yh?$2f~Bv>XU&0b)gtq84Y5#6{Y4B)gNAU@3)ro#&UB7(=khCt|MRi zh5BRQiJ;M&Ut=#qDqaS;9?Z^hjA-7fRv|v3O-rAj``^YLh=^LH=7by=yRrpxJ+=4+ zfgu*jB8rxKV&tzE$b`>Y7K_pp%tk`7>MwPFe^kW3Y$Z04W`?5su=Q$PVQ7asL}@8W zEu?jZOM%rjnpExU+t$kqMj9&`%zVgW&e+J+)QLF1ID2tuL=`Yr0NO14w6zUw!~2@g z1`bn5E8{`S#uPMCwpZ$d{6E(BW+r-a_=W~H^-kAxejF0GD_|@A_Eu4HYvQ*0b{R^e z`MxKgqH+VQ_td}8jF<`4S8N9Fj#&Hkc-zXPlorEs+A|c^ajA@rtY#TGEMsx?98kJ@ ze=rNEGP5!KUGh!>d~sl?@kZ3ovoP?LoQ+kC*m(3vfYK}@vv-6}a>5xs3mld6jd$Mm z>PciDaxQRx?*dD;vZ$KL*8WjDIoX;2+I-vrGXi^@Z772j66#GooQV_lmV_ zcBS!m!I{_fhmP6K($I9KUm+wFktt%s?kVe?IH?j_>Hu_FGz9`m6aaUQJdOrpKN;n@ z>E-|-$gFsTsGt8u|8g!xJwK}7(GBSz!!N?r?bq-3h+1$OU?#}PVhR{S69gDSD`-MA zuD?@-OI*k|Zc{wSy##+ZJU_dMEY5_s&s!=dp8w+Yy3Bg*mPzNzrYI#fbBbj6!&6p{#~@M7W0boO5S%^Y%EmScc;~%;n0q>`{>zy^qIJ96q^&{5 zPQ@d|ZTs}aLb_+{n9H_NqmZ4s^)==+UfeqkzN!#_K2%AmCdO4AIZvP_cJ+CC?zIJSUK%0bTnQ zMGE&*ow6v;%7@{V6Tuu?yE4aDUs0CojE+tt{(yJyCJ*c68}*s%lys{4xto|d0#`@Y zA3b)_^FAz^cE|CL+J8!*XRKdZQorBV&l{BF_LRu;pXqr_AtM5Xl)T$MuF6|qB-m~8 zQK_|FhWeDcWq;~Sw+@|2#-R#>iAO8jP;v?V^6#8nnuriMwI?zuj&YQQYFm46V35*-v+iPFY+W@F!vq+WgHmh4w<^+&;v z)(L1N?=--eZh_IdcwL55Zm3mgHgTnSiU%llQRfq5+gNLg>65;8YW|bsCI)w+!9&*L z>gaIrax#SlIyjHRK0Tz-M?9%FfF7f_>E*VdgqueZqYY-a()|m>oEgl8SK;~N5aJrx zT`huzAyvAOIc_#l)+^4i+uF*_2bgp3ZNSJHf9FyB@X+1Py92lfg~FI)YJVUN?Cf^A znHQOF9;Dc#jnJj32)uqyFhczdnf=z}3W`!0a-}2aEgo}T>neEw2UJBG=DfO=M})N9 zwMHgX4&j)57B3-uB^9^?HKMf`RONp0uMFNsem1*Lz|_M6gKNaugXF0b&q!Eqo@82% z$QoP;LU$kd>PYi?tQzk5A=+6gv>N`u#(?1cg!+_b_bkHMtW{{x1l`yS>IR2JBbG4B zCLzAHimDhPXbGpK$OVlNL9KVl3;4I!g>~tPtGo|n2uO3^cL@N7+yRTAX^Iv%wDGws z*+(t^WL0nB+5%ZNRG-nIC!ToLz)t{DhJ$fkR5M3zF++a|vQRa41Xs z#BE<*_o$P);TvbD5jP!D`$%5C-nk^E)-8ix!%*7g{`VcI;1mQDdKv+j*{P4yeB*Qk`vd$(LY4c;uTtOg<8zpdG0Z%(& zemWmo+BH6(b^F~y>OKcvV&~|j7+)30vX5m-qH}o<_eG(^QQw!M&Qdg1qywuD^~(QPTJX^F_U#8Hn+ZYY`}A;J&f!|q`iuecOvJ`7EB)5Q%~vMZP8tpG z_91ttQXYs_D*dK~jCs6xDJH5f@A~`V>73X1xeL42^w3GXAl)?KBBICCbTlQ>&bhBUfnEEZ| z%s}st8jJs(_L$EEqq&qKUbSkBnRoCvftDGUQKh)Vfxp?*N-9EQTEr=WR`yh?^RZdW zdyS~m`a8=@Dm4wIj*u^~OE}gor1^2-(8N%W-0K`;yvhU|bM83G%p`BFNSl1aMcxMT ze3dJOF6=V9gY0B+zSa;+%FA>Y0e>psh47c(Aiusl8lila3EVYAz^0nA>rQir zONW*#Ytza1a}70rrg76#<7X)nrxFLjkYNLW0Yk6hj90eNGH*x{?}btOP9pM*G=7r? z#zUa0dUm$}zjEA1mD}2xGlH2(ihQB~SLY#im|XsvBEFOB5Uln2$IbSUMdnVuw_3g5 zWa8XPV`OAx%tPRv-JEgeyQeKj-xv2g&J)Ga#pw+5_q!)|UG4p)3-8c#zRQz- zaR(_-&p%u3L)7J)m#`JysDd?PkfNH^PSPW@2dd;m#Bq-`BdKj8MXnifsan0_wZU)aw8|F$+MmMt0 zk}^RNzGq*xy|kBE{N_0$3NV%A=hYi*@3RKQVDx({-C_^4172*Ah{W&a(SJ#C)O^uI zf66#Y8zO?nd)D?=#>U(R}N{FTq6SP%{$WOt}Yb=?_y$OZ_)A}{3 zU2B=IdTc9S-#id`dhV(mAj#|@Lbti@VWbAT+a9oNh@}e$)uO(89&Zx5-gISi;kb3K zR^@2FP^bmV!0PFhy=PvwZ&DDWBhGDmr(^-Dtm z$x$nkLv5)6W$=rI*LwHo9G=T~2uk6q;dRZF~kbv5r336W(A}uW{f2j#19Y`57k2r ze$bX(s}L9PlOQ~3^BXJYF>uvOu`%7k_%@j=$W-9dA`Q(YJ_3CMSNlmh4+r=S4QMaq z8lcne_~^D71pgzaT|e5Haz;gZR;+$}rYzzRA-+!&!eCkb6$8xG6V|DdQDT)cDF~OO z`P1F%&|c%8WTtFTTSNDR!?wGeixvxr1vLL04Cq)UNdBDCHdqD3dd=GVwmNbwfe-LH zQ?by+6a7vm5T+7S)x)!o%U;%n6(H)`gB;SP5K1b8@P9{Jz#o1={Z!9F8@aM1Pl!S~ zJ^(RC@y;A*2KqN7PKD*Oh9<*dw<*P5Ljh3Fm;GPy&Ztw!igQqB9EpWua*AY_6=Az~}wy z^wHVf{eEw7Zg1^w3{r3qGJi#f9jjgr9O?{!B{h7-hiyI*2Rz^}#-XU>@h06%FR=^1 zw7FWdMwgh*SkKYo%a@DaDOFjuSH8=HVws!@n!S-ZxN38=E?^L?q1&(=uqQzaDXjX1 zBAFq;ih}TcbCVYv3OT~sIT9xE5)<{#cG)Ipp!HbQE~o-qF2flBc)Ik#pHb3UBwOn{ zi(3t?tB0(?n_76HAD7$tre4-oZJOl&2>-3aq6oplO_Shq{X40`ciniHCkLXCLsKo^ z`?nJkmVYiBL_scsnOH|WVa)kK?0ncav!?LgQQnu5tu?1&Z{aG z{&z7|$}=KAKB6DrJ0c`Eky-$+D^usA?7UfA_<|lGz}p}UJj{@h&sRwBHy+Sn&plUD zznvTamT4i>n3j<)`d~xv?NgzbnJJ6_m~1ixlN%9Y@ezIzQ=!56BFHpM$H-AXxU)uN z|7@7W<90b?Nd3|WEr+^*Z`uNUsvW~?RT08*|4wV*rHBv+BwQ+7t;C;BJ~!aALha>U z^*hB3;-x1DnwO8$=J)Q}*am6~B=1%xXS@#mG3kfo_pF)3PO0$qmtLLUJHeL(QwC$M z&Gf-|)3MyrwXirXds(l<*>9*C!Xy(tp{|Kvt8@GZPzH{Js)5h%mRNb(x112#bSizZ z&K2-346OkpMXsu!T0@q!UB7E4a&q(Se=_sF!9uLKP;%P_mZrf1YtfzQ>YSJ3@!{I5 z8;%4pz$d`1BLJ=1NuJ^z3lONDJRucK*h1ropXGq@gt`87o3*&sx;_ zoxNHWRs2b|55=rWpu8Fc{ad~6=~`em7$fhn=c5S$ze2F=^+r(AVULo7M!(rBiP>dI z`aX2&gq#7uh1?ZZ*$F4fVi45MmynWZV#|5u<>>2H9xWV$_DDcaY@^7QBEEEt4;{OW zaq67@C>RcFW+O%c@LY~X6ja0d?Z(-+Z6n8Tzx6R$i2@N-0>P3Gp{FlhR7kPm6ezwS6J7)9R>S7OKDA;H?w8#e66;DOtAIOwHd(nB5jm#w5H!me{tS z9QZMbKUpIVhg#KEO_Aw!?{qjF2cT&HH4D_2EaW0(hk5$hD(Y3^+30)sVhZ$k%MOVD zuqN>NsU(<9} zsqZDTQ*^Nzx&e_1kVAE=oUQ;!*tOZYIUwC$f0M%)C|fU{=acYUa|qk$I4E{PZ1*FI z*cO+|%>h@$_Kfb7-b==^e&rq+DZ{dch`XaUAfrVI3NYuY<4A_$qrVb}o_1te@aL2m z8gQYSz>O_~N^w~1gR=>h?eKs6{l_E&Gf~kfPg|te?P^%z?m(g2Zb#Astl)(I-3CIJ zn&e0mHWu=%A!3oAs?ZDs$#0?>JtPl|FLqU3^MF4+#kGz(tq4^+dIMe!(c)ATnESK# z2t&(o4@ECgitVP``ar0uClZCy+z`F+8K%|^&EVAB#+htx3q_bfdK!xaAg6=qOoN0$B4yoIZ*0%de{eh(1(}yG=3lBwqyUpKE|zE!56vL1@4bBc9#U?}8p=3oWv?UDr%CVOGY6*tFGmfk+DvOYt z@uEqqwO3u%7Q#aZ@C;Gj?C8#RYzI`c^T~&fx$Ki1Hk^RQ=Tv$|rt}Te#*x8ubWyb% z;|8VP=r#Ct4^20!!TazEuwnL$Ir3M4ye~ZU>da5UX^L$}a} zP6%~++}FLP^7(vId&cY2ko8@_R--V}x*ZSB^(YTuSs$S`9`xLuJL<=1RpH!1&DWvR zS)*lN7$wFJDn|rw&VsS;4gFzDZB1Tpl^@7JVR?<4Qw0?1@Qz6Y_teD1f>mx1AM__z z)ac6!O;*cDbF1egeUvDw(~6O)&g0J?(1pYEG2>aCBfN6|s0m!B(L2FR^}nE!Y8Wl@LmSTjyS=p#1Xx7KuP?FvuRPQsU?+ zuBVwk9aT0`o>z{op^VnMZ%>G(?~9dT-G`A{7p5l9BrOPtTpKa-*l!tb!%$R-$x6aUvv*CTug0 z)M@0lqb9={D1~xSDUrR$xUu=&^J#ma#kC&!gMrn}I`50a8>bFgHc}8{F4$acYW#}; zjczeuXD_76`D#hXti6e4Mw-dLRFbIPzd}a~^)1i5>2=e^hLzof-2)^G}r&mC6 zPuc%Ew@C3AagJEH7lKjPuNs(J62IX1w(@J}H!4mLiqY!k-Mzfem3#U0%j=}rh4)tCq^ z)79rm z9&(PaPq@Ps@BV0(1(vSb>kVBL(O};c5K(+a#yzS}sYvq@*5O0zm3%N()`6mmSK>7g zC>4KK^MsMgmJl#RCGhRA*qtxaLSYtlXY)1rD@Cqs{%eIS!q;`U!X^51@$k8M%%yyy zA!Sj(kFf_eec;Qa!mKJ@Uq`4dz*{<85lStyQIwu8s!*N@m3U@;0R5EFlxm)E$&fQB zO;Dg*w{L@iZt1Dkrp1W8pxU^k4w#=v7l_4j5q}U&b^E$>@C@cCxt=lDgeii$NL=FZ z3AI@j|2L`_^G$g%<;oo^^aO2W5jFGr!0%w@K}MijUvfv*{2W)c<+2l~{T!t}B6dEVK|;G~a*;f7X*!ZuGU4}2ogA1J z3IwGbqha+~ZvCy_u-belC*n~6*p9+K(a}O{P9sv0Rs^iqSu~&2nFD2mi4sGn=bv4F zuGz+7#VN=>i(Lqq+;`Az?IFP%1`p8cak2Y}?A%t+^nX_ceJ!HusI&MS&R`_x;po^qoVDt=2AF z5Sna}hWP<*%J7z|mGt$(A>c)0J6>*0JDN&~%PRIP%O>5kEQu#xgA4KhqD5tWflG`lR zv*7(5@SG}#`uQFn{u4|It7Ps>m$fcjl*TMc1 z{mOC1h|+0ajd3mgG_6*RaS2jZNbpN{B3|;&9>mHyRwd6qhECF$d?E=w*cfKp2*u)U zw>uOUMlfEhCi-TE1#x@fVfTcKo{6khgmY%Xd&3_9eJw}IEeG;2YscuyEVdLGHZY> zc3YK|k`{S;W~C9b%+v&Xp{@ps!S)FgzQ9nASoYN1C4j%1oXi*+*Zu7|K|>EA;S=mOq^fgxb0ZUsl) z;r3lSEn@q_8G-;w;pe#UpYj#$u~0=IL<7$>CX@u1X**}iN61Sc$383$*+NsUCv*jE zt)bWz1bD(+s@0*?zq)?$fywr_1@Vbk^p~y@T=4#0xci2SYBb3G)zW z@4^S~lF4}nMkzI}D)_O1=*ZLTu~y5ub07&C%fj^9(Pv_o>SgjVHVMcK5FeY=h82Bf za$5>~8{(5ji_2>W=kyoXP@*$v8@%jE&6v_Vl9|>%4obP`&zI>)@vf_~ugy!{w^mAT z%U*83b>HMzB6X2lm zkH4-Y`eCSpKv`ifGg>&a$MXWglk)G>?MI6{7%=7r>Jb_hy5)Jdhm(mwwK8Jo=@fsM z@Kj?N4OcfsFRRkMIgP%HgfOEWT_r;{pG=P-uJWl%Pl)N*CJ0CBjFv*U`>(Ux6_uYm zHiPAc&iYcNcj`FJl#be5YY0a}Z=maSMqw~li6hT^y%1F#h(Hb|qI+Rfyv0}C5cE>L zsfw=|{o{Iy`=PQ-Xng$r#Qn&0>+;$3C>Cndv3o7q-ji0{b$Ck&=vI5CQF|80UfW@C z3OQAyi&ogvn?bt8Yt#Oqz6-@;o%B5nBU8RKrTuCX43WJe61b1%9qdezqO2TK5 zf!J!KTMC>uIu_#{pXihrn5aB4C;*!*vB6p1-lgfJrG7aovLvF)qaE~KcsX6gp?T^L zIZ_y>I0B3mlJ#0dwwR3-S-*{BDwk@F-0DTd{I+3mT#Ap9UIGo@pojc~&I7VQ2+zzt z|8iVMP1nJSiFy1up2cTxjfs5$&&>IW7uPZGJ|(!b=uYB=7E0^vnTZ;G`NIe8U#AvCp+OMyb&Xbzo<7?3PFPf~>&fT?` zh)J?cKtZ-7<}YLKJR&)9V@H4n_a#4$)On=!|P~>wnHn>@dp8n)*nwy{6_T~`haIt3g8PRBw~hf8mBHzAZ!V5sxA%gD>s-7+`RE2g%4zF{(><&IxvaC zbh4*FNz7M z;D?v!e~~8$O+AdzQ4W~wdL37+`{QB=%u&UYi(EBgcSkQQ@R{jg*!uMVob-SdHWKs( zJ80Swuobke*@k-pUn&p^OOx4dd2I%2lBpm@JrpLM;z$^mO`mc-m6!5Uo zqJSkW-$YZBblT5)m>Pj7O>IwqjVvAmo&QQ72$P=|gWL`hV0mRR_#@CH%as>}a@CJF z?hX{Xy_q(a1m@C_UIIeNi?i_*%r8@SXnvjd@g&X7p0t|+t3UC-i|>T~1ej@CQ}ukS=oK!x=T^fgE6RAWa9^N}>$+ltw0SWesO5sHZ;$gw{^+ z$X$shHV%lFI0BpaJ}F}z(o2t4sX2*kowM1H`~(+F&5{_>yI{#pXQ-xujqE;kdC2qE z&OYB7PX}ly=^NzXecf_J70E6*l!A3+04C84n(WDZn_ zpa<`pZ(}jDo-s3Bq#_{(Ame1;svH@xMG5uIU0i{IFHeyOZg%#E@1L7TpA3} zO4#(Wd4DOp$j@0}5b6)N67%3lNp2mCJJ+Z@*1m4hQJ9cF13z0c;n`TLT$C1M8$)pZ z!z2EnK%KQ3PfTyPYMOrZzSDYwXLZ-CR3VY97sQb@8DFc5>N)*A;0WZ#Y3PBNY||8%h~+N*`g}S{16>4297xy z2i9ZJ)bk+COcnUtAp|t?jc_ylfz$ss`|Eqvlyio!Z4=zN-{{BAq zd#6)x9Sff#-iKG)BJZ+hW;Y-u0}6~-;}T%7nD~tE6DDFyBybue%%st0p;b^GBM@xK zpauht(Ym^=TwuO~Q@$YS>^r-pWP3{Wn&^H`ADox?W~)~j40~!k@O@2Q^u}ZHHa!Po zUqCiJXHC0cu)2dq7&sq;{->zlkp0)Q+2Z2eIT-k!|CAzjgScQ|0U|FiNqzgLch|(U z;MZnC53i|>Kb^eA^a0tlXYeX%7gDm0!60|w?i`!?aYqVAtXRJpRn_%&x^k16H$BpQ z0(B}kfC?xcKqBaTPPtmQn>e1fN}MQR;(B@X@5B|OIKczjASZN?MWabkOQd1?NBc#J z1F=-qWLXBLq^VupwjmR#q>O_gN=UPu@MTC<7bNvwiZdzPeyBT-Ns|&A5lEX44(HdD z@cB8WLvLHKs1M^HFL*o-e^i>5w0F`+(NFfKxR<_%9ah%|rRxG(NBh!k`uyL6afSjzI zz!~zHFu$!AvQ;4T%g@H1O+gW$ZhhOQJ7M^(v^mq>Yc_D-v9W4EtK)MGVqU)^Q2h1% z)@1bwhVoOydZ+TY&+VVr_($5ysUDf~e!t<3n-VDMlJM3+yc11b#i(HAFAzPWD`oN#O(jIws zh9%OXyxOrs|JbP3;u<0#nPjI_#+p9|2!D7C7OlCjCG*g7G12VF&QUiKNKeq9v>^fP z9hA4w!%@1SFZ{- zElu;-JW1%f`*L#pOmPD;)9X`d{vyjKD%;_aK>V9+P&CtE$)H#v__dg^%5SbCTpFc; z6*JZ1I?mjmci6_C(7Jf4DW4IPbtl7jhso+c zHw5}CTlbfXVHmK|GIOzyBTd63+G7G2spJ2vAHARK7}nf0^|?O$G|T;Yt%&L{s}?vQpW%|U*gT4o0fIn|H%`wG2alDRIUbdx@oe8 zf=&qiP48bO=_FknvtB%cZ>b1;e_#GL(Ciz0K{)M(+jZXluokO+?dL-2d3_8O`zQ)l ztX3}0o)tE*97V`&h4~CNkTGnLSB|eWhxy2tTXqfuW^Q7$jnT^?H*8(vjO6-X+&k1X z-h9$uusF>A9APu*x}NP*gl%vifA16^jw)Wt5Kphomu5gkS z(Sb&xx+AWw(!1u1F|9!_y}MF?8EN$C3wQiak$`1_1g=Y zImCWta#N-h*U(M3fHYh3iM5kB?_gY1hLd2oAcJVFut3Kg276Ir#|Hkpl-g-Mca2<0 zSm0u<=0Is4WP%GjD{}lYX(SB@{#vA^cU}NBdltW~@NL&`BWBXKJSVVDRT9B2VJKiZ z`z3BPz0F`R^}iocZ5ajyk0#X^AnDAmvG?Rfi(boh=kq}S44!lZpQh%@!&Fqg^2p^U zcewyHdL{0`4W-SgudmNFt;=Vgt~H-71P$KoutwXOniCdB&ZQl_$Eh{ZnGjJ4>nwP* z()F9vkI!;y=8@h&-;=lv z{4QU*?Y}nQ?efUc70UHh^kRP92g&PD;dg=I*m_={IfmzpH$9hWBp{vnICelda_%z0 zdO4bmVhCl~A7fl+U|PlbTi;4I`Ijl$t8C2ig0?R3q3fiM!EowLCRVyt{HB8v?UPh z19P5NgCU+%X)?e1w+Sbfj+#xO(7Hy=O~m@uRCyfP3mY4_@tyO) zyIs$ORAiKOrjVjgiVhNjUM|@+zVN6}Rp*R4kOR5Rgio{sZVIa_VXxsQ>XCDn9R08) zxbtag1Pr~?FB5Pg>}Zo}IV7{+=P>$Pj=K>Kh^wRYcgJG{BOQLW?5T>N-2z|jD}U&LeVjBj0LIbZyJNcOLk#8} zy$oa^&C5vZ(Dj}cH3gINwA0uoblM2&hnakaMOsReO*iFyq*z(vY4^{W{EJRF+>+8L zc(NLa1L?-fGp>l@%vxdgkXdlOcL`_rj(!R zduwW@h4TrRqu5QP4HpKgQAqSdJ zTC*KSLj?451tw^1A8CCkb(HKIdqRnYx}>ypTTAzAKNHagCjJRA4t9* zta#+0Ci*Zu%ADKqh`T|-Zvc(TSb8oG=omWHWd_`@ZDZ6x=pj{{R!Am{2eGNzzHOXz z$R9|k5~muCT;e(^hUGTY%4cqqR0MmVYvL}NsIY{jR~EghMCoP|0_N&T(hZiBzi2AK z#VM|&><-!EOzh`5e3@32F`3PQH&%j2A})ef{l+ETw&JyyN`!G3M?mgiyAx%N$pN;1 z{_-D%MI>#h%AH$s)c8hp{{5?sj3tJ7Yg)&@1Y zGRP!kt1NHa z%!t#zyw+TWJPFCF@(+pOA!Ly)EK`p_JOsMVt5E0Vkw!nXP%=Ivs`gQowbr8$)5xdL zE6lYkDk)OZJ^!cC0O6tTvB_&4oh%5MtGyw~-sjwo#8&xmlYPSSgh9HZ`=FrApJn5j z#vR*?5h1`Ev3z2tR(TSd88}wfOD}+c_flyb3mXw1OqdML0Gn^RC2n4~g)xWVel)7*PvpVj9!|Q^`kR19w+a8>Mbr}3#NUU+ zEzc-p!qic)YbOlPFb!zR<8&E6Nwy<_>sGH7&hc)M|A6lbqGCwX9)4i@pi7Wv5T^V} zTS?SCN5VbW4VezW>hZk;^pw}W;z=m)v1pil?ocex7>&;B8Ud23T)6Lzi!kJhCz;q0 zYA*nZ)#-{iP|w`_k%V;8+OJ)70$oNu%1pwGy~khy4D)h&K=_L%n43$ zMW4?NGl zU<&xz`honPG}!}gc8qUGARsO}ARyBJb^gN6!PLz5f1-u8c4Y1Vk`=cpUAW>Uy3POLKai+ zEwptfNAoJPSLo;@H87Gdo;{qwUsO=1+00hkx*-a@~4vvYqI={0hyU zb%olr^!^Z_b#I`M`K$>0Zt(Z&zE>S~o%b>X_#I~*^j41WD685%H<#T6II7>!SArJn z>9SVWm}1K-$SbsF<3(_?Gr~j!O&s5RT#OyvtWF82=Ltx|i`uVm=j0;3US#R>vuBJ? zHC*8cf6jDaJFDsnvPbbAj39iH7wfSugWBORE@t_cYM!243P!`3e3(uA!xd^S z_J5x1)tmGxuW9UM#kK~8k=F1aK;X*D<7})i*C%u=sP>tWpnaF_?^uh2Ni1u z4t`yB;H$=w^CuEF*THJToTn3!cxq~>86JYiRMt~mGHs)mgKnz!J8nH#ULEq4JSjoG z!za-UlgR#5p`qM{{O`OQ)Sf>qD?p4ux`aF93Z7#2y>C`D<8XuA*#7`)rJRpX0@XcF z1XKnz+yn~YSQ|vhfvUsJOUa@^G!u7hqTOJ}RH1uvzQt{I&buM;if)LHGu0=F7S}_^ z#bn?%99|mUju^J33l?eizTY6^fkGC3boG|uc)}3N;olG;JUp?Rd=7vc*uBO-|HmDz zY=oF2ksW)wvgPmd2i6*XPQnrU^?6BV&D?!-0zFVImxZr4t1~~Zmru!+rgHc6LK!EI zQD6HtH!!$I?u%esvw}(Td*l@|F1Z+nqr*mTYyYX(oKS=)zNLk$?8W(nN_ zary(6bLCGzkl~UlKEF1fN{;}@+DW+Jg%g%ozU0Ln5F@Vb3Dy9rIQKjXj9s*>tSQ;- z5%G5|ON)3yHiz6E*a}Ny%PUjORLo-7fF9)7fjSTOMp|2JO;?%7vWRtOt9s9~;@C?= zXo(dr`7(V-ZfQg8-^O(g3J(F1;5-l(*aI&OpT^b_xbVB@vWv9R-!LwR{i# zCfZKxU;!%Zw9)eQy{dz$P3ZUXeLRy_@vX!uwp)6z?u{F+X{YTtuTQh3{~*9V5NR7l zvyAY#aZkahppKSMKFr7-xB4fJf1`{A8>LdZ7zl8AvhiiDBWhKA>@6{yui>STAzlmC z_uki)SbTx^(aAff(n)_kCE|}EQL`fsMTCRJ$tTY_&oRY7EavPm>NjL&HoSnEV80J} zkKvf_j1Z-~XH12xdRxn3V3w1*UnPcbv5`K;VRUka)bb&)+H7qMfi9}J)oUinZfqi* zMYjmCzO)=A-#bwVmILS21Iu~kU|O@+>z2~YH|+iPhqc}3Pp>Oq)m zG$lwt#<8hk`l7HZBDhZVQGWTS;OVp|GWFcwA-V65NhG$20^ehm^$tu|s_FQ0`1U7N z!xTNd99Bi0sPzdO^swb!0xV3d$qm^h#+s@8iJTnEL}gE7GP#hL_)sLSPy&xdS>>i9 zD>Io=F_3C)iR%&M&P!Y2-b?*+!Q_Tnw}mw`d9o zi7Hbp5QUAd3PaqKd4PSZJbGqI&DxH>&iv8d`#s6wl&X2MgrzsM62PGDALNT^6_H?C z-6kI*z5)cDNgrUe7rrzX4Xh`}mp{A6`@x74eFcAv6}5XosjVW=73d3-<&)FZE47le z&(jfmSSK;#xRv7EYGe(AW+|sQ!He&!Ii6Znz?@$|bOfIM*4i@3IF3!LDN*z|Oas7@cnX!?EKkGK6= z^+%G|u+;0}!Im`BjxQSMO=hk~v6RgyKx(JLoa!KJrmay*XSnmbtc;;+Kr_26cFjr| z>5|k%DXN;FI<0FUl%KTAgj5^c+SAResMZn)<=W)Rcsv@sn8;(X-Eq>fkSZV!G$jaR zd!Yh*;&4DtOcu`(AjFq9A0ZM%$I$e)2A8eufHbWA;7gaeX+>*tFpaRrRBYKyZCU}< zY8z7FbDcGAUj)fII>>(jSEg9YItP>27j4+hsGI8-84HejnW|2DSu7*IWUKV|=<8}O zJvm?{kbX3BtF3RU3aeu0C!9nEit^R9D9c;Pg$0jWmXVU0N9yiMWE^qSIULQ2u`5L@ zG;ll3&)!fP#@ZMb23g;2{jr}Zx1^7gJBRFGwTnGkEwApi{)2!YQm^;fEU9%q9s$0$ z|2DsQ)1|K^JtbSni3|jkqyYp({QuoQnAyA8x%>x!URUQo0QCL@hTkGX501!$NYA?X z@F0Id=@uj1U2!6%%`rgdP?sCq3nb~ftaQ58etOlGG1#fjuenY}fD_kLJ)TzGF3u|p z{f(V^B^$@`WI8@y`vkskQ9fR+1O8}p?AS&hI+3k+z4GCZIweH=Qtf#)OhikPd#xDh zXEI}xY7T%i96a!;IZTb>DZV*+@J~ zrgID~vyAzQ>#tKKhSm;l5zl)71g4(hfcN``{AS&gM#HN#%ujvjUU*tpY@Gzd7SB!# zH${|ZCK@Cy=Rxf;xxZ1V)o>Q-(r!j86Q;k7)R$>N#<9-*YR1OpdyF7etk;~EW|dY8 zw2JIu&*F>oT|(;?9_aXZ$ez>_!818hlw1LK48A?)&s@B~uoWrT15gd>HhG3)!-UZ# zACn7EmluWUT_E~v{|aL)`Db_d@rQ!IcmM9}^z?LygW|4WDrOV;sOhCw$}r6bshTWU z9D}mF0u22Wv59m#twCeN1h0Y+vK0WhF#=2D)_fr1>#u#G@-c_|JWp@Tq-tXsC7n>@ zyDqoPm5x|~81&HmoJ65k?p@SrvJ8~DC`u$Fp)mpi=jq+Rx{i z!X>+Qe^XzYt|X{$_!h8jP1mGQxCD;smJKHV)-9(Nd45OLXGTBuD3VuIb^a_&TKts` z{Q3Pv|C%CDeUn+nNJKI%;Y7$`y6lOEe0@ZDKAP-)!{0>_DW#*l#T6Mmsc<5Ot_m}3Q|_cz>s(`czs-d>oPThgFiTr zok{bqt^^@3+gHV_VnH?sB|~Pc42kVIrY^}MuJ0pRuLnqsh!c@&s<(3RvQ`wTe%F6) zzqzws3szk)#r4@@5`$%JU>8tv&bd;+<5#{>K0Pbc-;vrC<4}{^3QSsFBWBe3(Ek-4 zcJKR1S$>Ph6X1_q6X2sK#Oz{l%5rr7*-#L7;KAeW=bu^R{r;Zd4-;VhLGeT*>^dF3 zWyrRDRw;go{CXhQ+VnN%uvUD{`+3^oAXt;*9|P_3hM(omndyVQa>%}OGjwh(3 zsjrF=U}3{TQ0+N{B#(~Z1T8~-H)4~Qe7yzbhQj1N$v2PcGzOJW7-3fehUo@PBO$r# z9omgB`6SbJP)>iVHsa+yr9(F}Z-vSh*7T-&6`Xe$S}r@1Y+^^kXL-={C8UbTHu8Op zg)o)onA185f@uM|l&9Nm9}v@`#Q23uv!n#x-);aGYc;UQghtiLW0FJ*rsf#}Dhp(q z2@H*8wy{+(%*P^mW13;Qo6+Vo(e;_{g(vZfX(kp8{!LaOUZE6NZAM%L@jQxeSHSP%@;j{8 z^T_~a$=D0Tg~*?aYDi9zSqM;gZCE%IO|}^9y#b}+*o?ZEP9E%-5C3R*Y#RPBRJOU8 z9&Nx2J{Y|mrOdC%xPyMB)heA;9QQAOgK!>tfkN72)IYgIoz@FBGI9f(DVf^0tQ8pz z8Z6U4cCb-9!-EFw`K@Jy|Gu(OCb-W#{4{8cwCRjE{DHk@7C&0UtikG@*JmEqLC-J^ z634nDK-@s@!$;sMM7nTDQhui9bePpiP}fjNCrt#%vrIrdkIKEka+y{`-oaX&Q~h!q zQtcuxZXoyi6rM=aY%ryG&bc^k(aas$Sbj?v3W)o^KK=R`M_M02xPIB5S^sDaE79$- z?5N072BuY}7EBq2NfI!InuFsa@*{}Ojl?pu`c_E(;nfdYOE>xN~^!P@XWiF%( z@W2J7bsXQCLJpYL{j3MF(pUqW0)dPe%IJ}3Vg`6eh-)X#pd%+;bjJ=;84#ZS2A=g{bMDUt-)T+^;sMe^j%%aL zbjkBW7di*b*FL2c>HB{~MsN)4S3FvIijfg&hQ&~+V`XmTlML|NGb)8VN->~SkHE74 zM0he0I}p5yZ!d1_u%Zot4?XQ$2jW@boQj5v8L$N}Pe=Z0K}CH|ImVCQ*|chjt=iCh z;<+U{SygB}mvlzP>6fPHp$7<$Tr71$42sTUVO^9vLPnwWV6h&G)C`~Q%3ei z{55Krqdm76KMdpeb0G$=t^2T(Nci>Tt&S-IkK-Ku0denUjS-qR_B+`X61~{pF3j=-*8AZFgusPQqg4@pIV~ zCKl({2*Uc^OhKg$oA)wST{tC;l@!)hnfmra1>VjT-rrv{6GzHg4l2FH*_TQ488@FL z+7Ja}$agX5{%o-3aTx8gu%~$KdDBrq@xB2r-a|$%&Pqg+#9QE;DC0M$30U@@n-e75 z%jY27oVEjfI;qWYZ;f--4zb%K!OvoAtpkh1&~#F7y;>F3IF4}iCVEp1p5{G%gu0j} z9LW>GSIdSUpbM>Hp+?(v-urknsUbE&bDgwoot;w5?Ef|hi%IRWL0XuLMwK^$udK#e z#9^YlS({aE&mjb7B%U)*yh>HDr+H}6bfD?1Rr3plu363fLPPw z3r(Zh_Xu(Ydy(p4I3jOCU_nwSb)gdbfGEIkq9c<3_rnYdY7SCd`h4+y> z4ER+U=Fl;GkL4|ghD{;NkW~&`In*C1w1oUVJk$uaDduAOCo1t?7_Q$Fhm%ENLDZh7 znxcXqz9E<2KPiARH}PNq>^5oJfsB;XTh0qz-Db(mC?NIilB+RIL2XuJO>Gh%oc&~( zUJhoaahPy8urx3)2I2ZiBo^WNcpcc65-eSJT#q$et0|l*2`T$Ph0I6hYg#fUyNW8~XUsx_`q1^J=g$jX4-9=fH(n!_rqN(U>w26BuIB zB~F-zaz;(i=F$dZM?cw7>;;sLzdhBZgG2yU`Uo9MmCa5GtV&ceNuCvZOn(VkuE=UF z8r!wke6BQE-_o;2r%_%AfjI9snk znsj26O&lzvSs=Vqi`th_CA`v+Ompi(O&UNZ8oeuEM7YafAXTuXwXKpc!4Wg$qun z{4>8?*Md)VGjFhPTrJB$2`gILeeeUN9d7F0EY9i5uAyf7HP(>f zJ-<4KuK8PMB9ULo=RKAH=WGc6^WG(!0y#^DuwECXOjB57lPFA`()oj;o)RpznhQ%6 zuK4OH19c@T%26l4n`EHd=s)JHcCvC^WIwc#4Blag+=kZJN)@$myJi!#t0@^ZI9R43uX0dpD);50Wr(%=B9$FSVIFl$$c4BHRv`A; zZ+lVpF3_US2ooHSUVz>WDz|Ih#!wa&nuLBR&u8cu8JCNilheA{n$k_@vXWvC^pf`T zo$Xa0Eun1!qUyY#pdC_*YeGtFc%MCGLw5Hhu*)-v}Sif z*{Fitf3TExXZ@EYLsM*eP1$GKx#a7f{60XUU@|^Tn3QO&7OWt-> zUI~E(9ZF+4y>fySZ~}I*Ae9=S_V8!vicz)eO#d!5v4u^Iyx`@ic|D_C0rHePZKP_H zXZ27uma&rqr=kfPVe>u41kZ6T>}xw8L$G=C$u9?cbTvb`b1M8fbwheZH7uJL zwfvLWi#B0eQoICgcV-gCzV5Hj>qj_Gqq@2Np-Xw0G+D3q*33G)B$$+xO^8r_Ax+KOe-+L$JG5*47YVh77|a za&XW5v~*IYU<EPpZ-{S>#MR%J6(;G_tWBJpQ)V|xzu?K zi6y)~$uuodxw1Pk%AtsU4%q3uv^ga80a%%xnmy`AwN-6$>!_q3x4%)~>>1BF8Cdiv z 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 RPg8`f{|fT89oR0R-vJe3KcxTw diff --git a/scenarios/rag/custom-rag-app/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl b/scenarios/rag/custom-rag-app/packages/azure_ai_inference-1.0.0b5-py3-none-any.whl deleted file mode 100644 index 7a7a671018ba36b192b82d8c513739f2d0930c23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115243 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 q%0Ve;6PVH^{m#bEWt-Zxy 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 HItciG%N;4K diff --git a/scenarios/rag/custom-rag-app/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl b/scenarios/rag/custom-rag-app/packages/azure_ai_projects-1.0.0b1-py3-none-any.whl deleted file mode 100644 index 06dffa63c4af553f115f5d1d93b492acf2c0eb40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153467 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%0D4q)o$0q=ep2Zx9H_ZM-^cI~K9u&<3PgPIuS%E!- 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 z zcT88L<0`u%SW-PFY#U=-JcX`Nd$odwa*I`HJ#X4-&ykANI4z78M>F}<}~n#%9i;JSXr6lB0VlkS?x@VVL&~5qxiT3t1nc@@ZM60 z)ESf%P0IjJhcusbGwgONDK4dl?JTq6g75M9&nJF$meQu}A@_+^%!mesUe2E4-0ixQ z?JZ}?-qB>yR?DdpK9f_+NGyZ6&Qij=J57ffbnoGfv*12L_+x&W$)@x(s~A+b{#rGx zBf`I?OMc=&S|6~L8-)vw|MkKR`rSz)gg2&dSXWxpbDpA@(NanAW(vAx$Kr6q%D8M5eNma;^QjYTQDGZ^s z+ZoO&btW4_8ePv~lV>|yPH;)o7qz@L zK64!{q-zi)GrC;s4UV`~9youaqdN-bEvmf-x`uxo;^-ZJj320^T~c@v6aG=S>(O{p ziG0AOJL$~Qoo9Xd$PiebeZqbZcKF_!^EcIK(F$B2mS1FyQIq$62MwJReb8sjIz@n$ zeVG4Cs8YUn*9ZJR>sEU1fosl&KtS46pg<)5U*GBf*027Kgi8e^fbUTN6NwG7%Kj8x;8gUKgz;;;|+Ff;Gz%dh+`o|Ft0 zZV|Qxr)p+q#+Q0&S?=!3N)>CiW zx$ers_zB4~kbM@gy;AGxa+uucqW9^2r~W9=WpmTnalQ3xs>Ji_4;4m-~*z)jj8^QlT@u{|7%kuDY(`jC3 z@0(SB%LV8!%LQ-gV|cuMAa_nzxjh$zH0WWhm)ZyR;uJcBUZrrVufME6X17`3M{J_n zeH3opL>-S{^KT+k_I-CY=Lu|Bb1Tze2=Vg1~7cM44Fr&V2} zdTuZD@eumEWPbg*xgA)%{O7bq81#It=Jo3IzMtIaf4%M31#nOM*Y18SR{I;UW^o&s zq%94tXIT1mfS1~)u6pT=?=;^Gn-Jn}A&WO#Pugkixn?)s*iRZap*zq=Tld+G@XQ8$ zRl$CH^g?cH=yen-_4Vwam0gB&e4IDZxC1zTKo&JQ(ry**&g~6)f(P{6IThMo9HIht zL;@-h+Pbj8;sw6Y8s0}uXJl5Qrr~$}=5x)51KFo^X7bUqUZ3jJv%2k?ToCiFJ4Q>I z2ySQVJd-FWC>)~j=*ywe)%DG|_z{rPJqVl7K0ym3?G#3(r3flr$E<@8*4lgIeSf!wRgSPvpv}=TKO8k`uOmz?>!|FbO3T&fNNHal{<-&-E*in*Z5CKF^6PWX zh2#Zdrlc(Z_t&D^(R5&!sZ2cgY}%EioCeGHB_|3zR8b|2lT z>Z40heqZAx!uO_eO*U|6#|#%`!xG=Wj&Q;>8(UOy4Rq>mE%r)tZ??oRk$GEqa}yOm zK*EDM2YxS&A~%nH!-fBlK?VsLM;k#%VF6}rpp3}H{`O62)q%Azy3JsS)k0U%!|t)< z)yGm{T0 zHRsc%no={n2!u!N?a_zzdrvLF8>m87Ni>DZcFvoE=S8Kt`7+T`;)$vX9;|_CvAP_PZM1nL0acC z3Pyv9;NZ0g@UL68z$=H@#sG*fC|6RDVswc6+VNig4+?%TkORB#IH!Vbk1jt*XM`)Z zTkjq|v{|Gw_9w`)k{xTiU7OL^OiQYk7ymWOt_g0ze)6NNC)0qGI3%JU!qMfwZ^0G`sgZEqBB!fO;ue2zn$q&F0zo`0>sx}_&6A2|SjfKyve zo8kYdOsn(GY+^u7K9DI?+XmaaE%Fj=}c+E1h0xN?zrcF?((bhKLk zt<|LK0)$60yEfD8ps8~E@3lDD&(-3bV=KBr=sWPMzP=|naBGj-y^>Sf8cYaU7xlP;Uas4Im@P5=<(dv0Uf?8Jo`Sv+3Ms zDELOupl=F2w{a?@Tv+Cmh-Q&8R(Zdgz+aleQ10PnqRJ6}d90VG4k6+XMU`DotN{tb zmQ`dl>yn0qZNXfoHS>up#jth{F{a|#_r}*g3`nE2u5>fH!!5GG?z!-e7YbB$k$->B zlP-I-P6DYCz{*i}T2@MY$K=e&JzYjD*?$D`E+ki$7CTGHvO*KpVM7(ZeMA+t_V%Vz zV&0k02$4Xj4^?gBzY62S5YL2ql@tT!ik_aX_&)%EK!3mb_#5qSuH>C&nd{Yt zzHp-})-SI2FlD25;`GieXf5X`@jOG-e z>ci*}Z0(UL(BQAIczKgwWiS30eSVppot>pf2gwA89vv^d6z2?#*7NHA7uBL7TCQCD z-^(2c=~lJSbj}T47n=fS>9Pa4X@jQ-q@&Vf2yF5oVa;2} zY7#znsP?$021-E}>qn@D98d+#gN_R5rDBcNIycFH9y~^3rcj6alw<~)LhXJ9E401Y zZ$i#&-sm-~>QM(1&y?}V8+$hBh(f#-KdKmJaF3Y;&A`*x(!a?bFb@d^z2wYz!+zZ4 zEL<9d!T-2>sWB}xoT@lOlj0++T|{esYM?tnKs&zy z`}g14x>~Zg!Tu$X2cvjjkvb%7YGVJ@6)8jT6mADO>hetay+-Z0ZP^EG|INPQlSf^2 z#Yb#gGuB`m0-Jr`R2lx3QMkoDUr$v5lB^u+{BQvXfO+4y7@;9-3fVHeZw&<0<*NQr z2?aPu-RcCNKEa(zpsDtXgQKj+xWC!&D%Ql1H6*n!ujAaYV1DTZufuq-ASNt`3-CdE zeqyK^Kk8ZOoEW5RZ22pgOlvepUftE@st6*>CExqe7e=1Cthuj5z_tSIqsqOJYR(tYO@7^!D}1&E`?{dhh!dt7pAdj7^HMZ87H)hq z_*Obh89T+m+}IDvFg`Oj73$4?629lpAQ3%a*MB(Zp}b#DOBaZ!JlK-JC(ndN@%rKf zolv$&ux~Y?U|*PGv5<1Ha0G)ruS8?PWn*Crhki_?W<;~!Ju?y3c7rl7J?syhf9?H2 z!<~1E?|2~gYSYcMz7=j8^aL)aL`u_6l|FV*1>vg)X3jYCcuc?T(Hjfxg_;`l)E zYjaG?=MdAv5#j*9R|*gN~RAH#k*$FReXJtIe$vqFD- z|FpJWh`)PmfLAC6uuhm!7C&%Y!{nACCIszF5+hhpRq;V)G7$utx;X%T3qSKr3eI%- zEv;~2PVhJ$G;X0y*&4N_c5TsIER}*@|A9Tu2RS;S;)wdHcz$@kMe0T%DT>6#2{^SP z4nPLyXl;)pC%|6)UdAvkU@95#!cquP)|#e9X-wt}i^SR(AZwn5vb<7o$fP zlk7J4-&rg3uDL07u>;nj=JFi7gsdi#1Y-8I9?#Rd+g(&G)lc}T!C*}Vw-CNOg z|61>PZ20Cr`;g0g5a!O_U%#NXa2Ehb!tid|idYBh5^GXy?#1z?@pvOdPMdi#@vn4J zPBR=GfVcnH^{vJ>97oXkgOc8Rbm`3Ua>-ZTa;ckn4xbTX{`3EFtw0`xe(Nb1!G!`J z(p^S_hcNw_mkJx65pr^b49fR&xq?qKLs-5&fx$oz?41*BHRHqCB@1uFRqO-LM?0Wm z@)SA>GKLjdjxtA>M!Q5m&|m7?bJ*wa0Xeh3)y=zhm#>t@d-2*iv-8YA>?p|S&>{wg z-Q2&-{xANA!bXa2b>~~WR-61it2N|!2_3OafJ^p?PQ3eDGT*U}&fL98Z9*B_g~+MF zzQjNK88mcbWV5G22=$r%B?^hB+556BSr*c_e?MXFov+a6$J%9*C_4>jt!iECzJ7aV zeVewFrL~6AlZc(iy{yEd&vc1PnrzIG4BznhLllUhdg&28bx7h$fK<6%cR1^5)vx`G zk;y5yJzEa6pVW+;>P=ak)qYE0&1`~9vB4rO*0$KU>!N$^{Nj=v4#I*AtH{DZP*&^W zqvnj!vw^R!tY9bZ%di~5)Wj0q8NwC3F3BgVxfS$8!?%~o?~IHr5>Z-Xuc?la1X+qNspsO@ngn- zqbb>DN@FbBAQ#rKJdDpp5dx4hW)qW#axI(WE?JR(hSG?k!w+aC>wsns_cZ$>Ovj%@ z5U2ekmXN$q{#)y3*82D5rtmi{!WQlCWwpxhDLT~K>ZJ@8HGl50}5n8_Jz<3TyO3gd55(V!dbQ7a41U!BegsQFE6*26>KW4)6^VzMaLo2- z`5;rrJf#^NW5(=+JDP>8j&zXY!`8GG@uHUZYTq=li*D}a`YuYUw8P}mR2x`gJ!|>u z%FbTqY4=oSLgg@XNp3A<(9Uy|4_|#b%2myIs#@V+40Gu_ltujdYD)T@`%arZ9&NX+ z9yh{ou2f`xA-BHso}P61;T1$zdXM@WZ-mcwa(6|fM0eA<}8&rZL{al@K-T@ zv^mfJiZny@m;*6hdFyAE_`$dHLc`XMJCF#Ar*E6`_7=qN6AdkX)zlRq!YPcAsgtXM ze-)1>?%0E$;z{I~QOu{2pAynb(S9yP-12$iGrFG>KZ_-uDPQRmjufU5Bt-}pA2E`n zrP@n0PW6SnO2S15M}1lo((UHzUC`epV8@9$4V1 zGJ%|eHG9HNCqOq0RxMUZ1qF)TyUrD+Z6y@x?lb!tFOG((I(Zsnp)0+_u}$;Hk9 zOhvzrJOT1GVh@E(KUi`q`yo>${pr}{*3eLxW!IqL>455Yzji7|IvQ*hsT|S*j15w7 zD8j1hJp_3}i^v=Vy0UK_#nLE9T%uEAvj>&AL<($HP6!Pl)i9*|`2o?E#bHAng6C5j zHNB9kyFJFSL+>Ssp;iT)AYj=AcVbd+J)bD4^U?Ov{Jd&OU*d7?eiJ_0)=W3?{8O;u zm>~aEE92jC>O?eXzG-XL6JAVBkFcFtt2Zo`xwA9&D{p>-XL=(rR^(&0x2CkW;3?cL zYV3V^B;(85$83pxHkKHlL3RN0QXY#9p+~+PC0Zv!F0Bp($@tQEq3~_Th^OVYG5v> zLK%5WIcubE4Cuss`>;!M()g#2@b&R|78J@{Pj#iT`-$GuJm~}YY-oUL@M)VJ_vXW! ze1V);%3ieRiNJW|O(CgVx1DdPteWBPXz+)%i(d1q*O{srOF3iuXv1&s&2E}{3%V2K zLCQPaaZ`KT=qGX0-455Si=ix$*}9>vN=VW!n8qQlfAb8dPMKtI7VQau<_NqJ>|*+?~}e4lo8 z(TK7^glxyJ+NTkjR4hmzR8sW3_JXi(ntZ{FAm=pbIIAD$@FTirxaAsq9x|9HYB?JuUz?1|P zxVgt3g`-^=g+@$C06KwY@5u?cvE_s&}f{qef!J`|uje#2h;n)gyx ztIfVG->WjvFg0Dls#19g#>?6mwb@PafeP6G@Lye7%(%J|<37tSi$b==JJDNQ*Q@lP<;-Yu%1)CP)vRgHm6!5?*q?wK{P%uu>NT2JGeXckjrEkaa>?tjc;`Ml zpz__pqaHclDOYhS1Lnniyv58fMo7GNBGp>tt@eb_Vk?yv2PPipaTTk4vq9rySU9X6 z9B{6G#9ltgtx$A@xiqH+_|UM)p1rH2{c0{>wvJg$)?RW zVVqBL+Eh%G#vxczAwEnoU&ry?`7ZRb1~wv+W=7lNpe+W$MsZfkJgq*`m&8#3%KvFr z-oPJt2*6b*{=BX?4Z~hsD#@@r6^2-y9&=I5;(Q!&9_WbXZ;kOnE4ewI3!3*4JH8jA zNOL>$r(X)+fEc5?Dtm=hskIS0Tc7S}phXke`Bk3*2eqUAIg8u&NsDnG*&&@Y3kyk( z;fj_6SN>XOoc)2f(@oHEP%UkEGvrO=c^2~CgMoi4y7S#mgh(fa547Tm%@@cI?j!26|zpNV6UzE4kn<`7Zo2PIX3j+Whab2 z%t(geoUn*+x*@?vD~$-m0oeBfgJp`40LHeSkrFE$;`srf%=kNaY3qU9B>Zq6c)l=-CnNriP(F!eE_<^0ladh~W2}j^UIKAn( z`R~2+>xly?6O+dRQ@_}MwpeP&ljB(Nicha=Y)YWOZLiW>y(bjjK%WQR8&0M(5v z-?+HQi{HF=*d2iQ(AtdlkAwEoq<+d!4@5o|%=cV<$X0;YCY!eaE>oWq{$o76nz1o) z2IBZNa4tpDheuQFIpaQa`l@9|xBW|vw-8C)7gOdvQTF6Xutv?q^k5tP(mZ5r))f2z za+}{4=j0&AT&G9`Crqn|2BwOEEXIj$Y8MIBcX+Vbm<-@o&bm(nplf5T0 zG`5Vw{^^me*(HFHDAos~51U@AGXQ)qfUoTB=q2v!f;5yJ#!)q9kYFZrPlhK`y8@#R zGcA86m7i+qvoUj-L^iZ%j)0hShATd#@O|@S$C7;a|9}`4~^d4{wW) z9se#Vj`vf%+<52+rd<7!;CbmDbLqY=HeDXk(fDFz8AUj-b@ptH?>)7?SQ&YB53rY4w`fMA#I_mUXP_S4H;9uGF(17EYUvbE z=A?@37oM2k6gNdvR0sul0pL#;02Aw7T~;Bx+hfxu*Z;e^V(Q?TKpo=p)s;sh;WMwY zpnPv8*9pXjMMBiZyaIyRWHhUUj(7R{LQXd&-xNZgf^}TO_wwix>EL^U{W$HEN+fWq z!FjnnzMA2H3AYQbExfcCRSy}{y$Bo0xtc@KKW- z*6MlLR=+qo5sgb9y58F(`vcS%g4@S%UMc_MNRPur+?zZIoR~E`C>})_x7Yo15BfRr z17zPVsg8D^)-GX=o@G9EL(E6|HJ%>axH^``pR*IEcTYV5jh{&s1=RDL6Y?|Fadw8O zJ)Wiz+fwl(ZLbbITIB(>VH{c@U?k@kI_noF3092$hOWx$JabFH#(5Q1(d`L4I;2iA zoVhsAbfpEfwK4*w*`y3{EhEj5rgVec>)}v@IXqTMhHIecA;?k@%skV?iTiJ@TBwwVy65cOX&ETGF}=GRbwjcy&>Pp#$RakQhW_!%}VpV z%TEz`(qD_ems?Y!NDoV_t9+*z;|wqlrl*QF*I^o1@TI44R#I1#dQ&-P+8X-P#lX2@Cc zC1E4vTlT1lTXKJcMf~VS%=9v2sWW~tupSD|p7m^i@3Y!7@qLXF9}iN7`t2=WSRP{T zi>|I;Z0hQEfI(*IMeQ)v$kGDbe9d-Otje2m#S;zhbogs2KQ}d1^WXP%$F(8ZD19dp zpzQc~>?ZlE(;T-A8k>}KPC{}o(IGzcNnT(OGk!d%*<_w+4K|r}@Oq-TgpcZ5?H6P< z;n36k;EJi~))GFhSxUs`n3crd8D=4wqT*UdpP%LO5LRErIwDzkOv{L5cZgMlFE|zv zleaX@)+c8PmXIU&UxZyka`RwT-qEd~N#x|{hD|@yXYFNT>xb}fv_3P*DU)A&NwRHN zFEIm0#N3HP4%SSl(MEH5K5tznp6h#?*f1nm* zn~+dBP24{ljSRr>mv^D+F99oJNQQu%o!2a0BBl{em=-Vz_mg7&?LFKcbTFND{Jc!6 zuM8Q^3}_D=*Kf~2ti%(ODVa@vihH@lHjv0j%fC zOD)UfOwJo>z**O#-9RCpo~FWHktvwp!*s@J}XkI_|HBYGoZd=bFeTbVWH20 zx?yG#XgY+~Gn5?@$_6ALManc*x}AJsBh^?jc0W80}{hN zE61(tCwoXMYnU2nOh?l3+u?~mQ_M7{#)za9>nT2uC)zxoSo6rIFzmM!rd_OU+D6`h%SHw zgX_i#^Fi@-qvUydGsjeAMheiJw(~T#q~U2hJu@8ke|vpH*y{^?UerY>g|?Nq?4CS| z&(R*!vt`1SUalEV`}WgjzOJBKII z%ec`V`7qxke@2amu&w-gI%86F1}YgO-J5#FoI9PaU{GqnCuY_l&FLo1s7#!5x}Vet z!9lJ*YqQ&c7PjUA{%crm>V8K~jZnr!1AJa0K$@83ql?&Vh)kP#GlfJZB-ZrljoOq3 zjE?EV)g!1}f_*y_Vd88)9BMwKi@WkOP zNVvY2x&V7(p!#p;vFDvXnf>T7u%qdjLt&rlI`OZHa@EvrebarPUpM8-yjA(R`O(pk zx8mjH4ZVG0op6@bZja?GKLn0JaB;)7SoJ@nO;$yZ1|izi&2cvIYZu7-5)%skR1nb-GS(Q@}3N~Y!* zJH?ji_x=|7>y{OWZzGVfcJVL0-LU?^-m|D&H3iP>GUs#gb5(xKx)QXVF5m8m(6#`u zUW4dL2P=z~C+i2;&!-Q=<#}sPdV)ob-syj>;ZN-FO#Gpfx7#ZLKL1v^ zcq5lg<7J93x_wnhWnX>u0)_UqCo@49Nvfg*F<>8mtdAGWgf2bdDDV)47Ti;Qy z97Hrpf;3q6wB>E+_N}ZR(pi)K7H5GJK3X^LLHWfMOyY|@aTKA&+@G>=vfm+gvs92B zTfjUkq~d=9xhqhE*&{{M)Ra{MlouU)g1A7RJ*gsM6iHmT#9_KTSn?v;yu1mLpz<}) z;^e>M*jIQ92PYXNR#cE+iIbFLAp~_02ff2mg!xnk=l)1DU3Ks^s|ldU{3AyG>5yAz z54&bofmhIvp8|`9XGcO-sp)SVEYNNppWyV*zQ_l?7h3M?>@U}p`w12s3MfYC z{&;hKn{xXzEa6>UwY&}wbFgr`3LsrXB;z6BCt%MZxnXM#pGdXlkRzcC#MNaIiSg=kROS}c zgTAdY=`iEyNf^Rp#HCQvXSMl{pX;T`fNWi#{pbnaz_!iV>pw!BP`XT-Z1=*HN=0De z4Rt}AJneg(?b_ES$L9U`!S-Vb9PF>ye*9)%U3SH8-jSc~j?AZM-jnA&SrdnOSN`&L zWjXcpzWllG%Wo<8o`?F(yYtiCosEf__vm?#c7$TyslU9P+7f_yzy31zYf#YUz51!| z)i6o(K0WW#hCs}F^q0Cv)8xD01|P)lE=_(`t3hf^HtE0tdpo07 zdU^{@@01{K&${-LJ8jyJhj86W`-yXIPW(AqaTNvOZ=3S=7GC84btvvt7$3L?rFV-fEwWESK8=F<*Mw|I~b(_-+Q+Kb+P1)Ul`}Y$(Ryz5mzvNBO z#8Mp_MgG)edNU@)&tYrp0C`+6fn>?LD2(hc5Jx>t8pV=l@ZuXJm_|arKI?syP9be7 zSy)Pk+%!};ts@mNW7QSLDRb(ZRBvcm^HZ=lnaJJRr@cTZ)qdcHdJrc2u3 zu&FFxsfuKkdBsw*uXq)*4whvh=k)kjUS966w`GSF*nXt42Q3?MQt`7xZ?e?p`)S`R zIT3_Ng6DO7Bt@9bB}((Fe6tz5Y;(ND5uJf$^&X3A<9Ah2td)MtN|$LX7T5W{dcbun z#`-D8`=gwZDd2LrObGF9K5tKI{k1 zeWdFOgoS{jcN&9M)se>tW^O?{e-afJRoE{TenaDttyak2bga zZ4oS3sfY>r3H;)kcw?~S&V&VV51v(P7y{1wCHAo-=)jY0PG-YqcE?7Q>MN93FR zDL0pqWw%Cfa8}zVDxxn|;=p|=^~&S5Poi1$k(6eo+EZD5z?%0Z--TS09Up#2?rL-O z@eRxr|4ys|Z^Vbj9Pn;OVWTE4yVa8dRVqLYtl(m>_yByK~qAkMId* zB9@)YCh;IZMO?spIg`$Hy`m==huXV(zgZ)Q0JxQFeiQXN1KGwZ>@Y#ReYMvIu69<# z^C|tqD|5PBmMhTgE7am7T=w#pvt|k|`}sR1B>O5CnoOLb^f(&*zIs(}cUY~nu6~YI zC!i;&W@FiQ<*Eh2X2*COsZhygiZfG3#8KYWRkh!2uCB83Mm&eA3OX|I{z9&P6%DFZ z8(!M?m7<@?1zIXu-dnJ@9Hk!$RFS0 zr>v4B=zTxu^!yKPOkV}AZ8IA7UBKmMO&=UiGdptWx?G8OJa$54rw&hgvHyU1m=bvX zQ>530b=au8Y3$+7D19uH{tl}hCn~ZnzYL01NQQmCs6cx0WRdHu?qQM#KG))IR;th| zy_3{v2oBe-YRQWcP-kHY}2RBNh)F$v;zZEQC?b4q4vfO zY})m_b`&X{{&|5OYk@}VE(Y8td4@I0Hz<JkFfOHU;c3J07uOtkF8*Uu=tD8VhJeLwv}^N~ro+=Cmv}Nw@otHr>Z`S4wGXd( z8mF)cc3WWC${~Y=D>=bd0&lCFW8ppAD}~q-bj=R&sD{gN?6dmuM$OnBHBO zFe%@MkR}_6n(b*ciKTc5O*D<7q3A>!J%*`c*l-AG;yRSxvo_U3n3O%!GZVZ-95q6& zBG_H&Zdc*S6mLCi1cQgmL6umt#04onTjdF`qIEUwN+Eu5L*EQkj50P=jVU8lbxjF@3*cnStzC z*j5TqjJEkbcFpMf!|!+>tGgV7mWqZh#@Q6rEo|YqckoTfcEUsp8wY(iV^grl*DFVU!xW(DhK3 z4N4#dV!7u=p- zTo!q=x>M2n{MSDMU4Lpo#l<5c=hs)jrVG@5fg|v5`Mc2p-Tvxt-Hz6jKm1Uxn!2rT zy6^Mrrd;_OzJy()AP>NxOr|H0u5=HR%aR8^<#eSdkdxHM$T=tJv)>IIAol{O<|e>i2_*bah_TXPdd4`Cn*V`t(UMc48=mMc~T9UGq|G$j<4+&BJOP~ zd&s7G!X%<;_`0x3G#t0~;L~i@IFp}%H5VD%thG;*v|}%TFn)Vg%_x3fquO&TUQ2-Q z4ByD)8%G9jHga})VRrnfLTvQ#3DW*LS$Ur{LL+@PX+e7SZ6YeTU1xlNX|BaB9X7mSDjtf9la-D%Ggi1EGI+#K z{0W5KZ&QQf+*y7jG|!mo#72BvjVXci3r2`hwUQ0rJ;Vu&wl`vA%4wQZwHhAgDOVTj#NuI7$G)zd=J%eV6 z@8+-rw=Yq{zJ+Zm2Sn>}b%Qv^7DR@w8A$qrv9$;CY)TxG1kWHe&CX4NIm*=$bycHC zEH#lxaaMZ~=TLVw`>cG{@G3fs$rr*M$5=|S-EVmzpqOlb;;w9aVv?NM&TJ+jul<&p zRcSLz1gH9aUBLwNW2&>}Zlq3`o)<3IbVbz9^~LLzsurWiM#{7O0aV2b78Ojl`^Vm#)BktyUy zGBBr`Bz=1Lgjtg`DZ0AKBiCiZVUcfnQVdI(VNb2@_SL&H z6J7hu6!|f8d}$(}fa%T-oS04ZCW>iIg!P}k5lp$NM$$YdwmrxSdWDjnx{PvrolxoI zyt>ES+UgeL`B2C}o{TiK^`2_a$kq0QN(|bP|JWr5udb|Q!ZTv@)s@Hj#Aja}&3Io; zEkH;Q3tS@%tSeZIl_(F-XO;qy@ACJBoN`oAl9V*wLmB|OR_BnaK9fvqa+M#>=<&6F zhRk}j<_~*U_d9aNdl5I{Q=CQ+o`7#L$b)&Gd8`C#ZRzy<)Vpz+?hK|mTy(|uN9xkI zrTIh#4+~y&b^T&fi>ei_>WF=17q&Zyyz7|K-=|DIYt@78S;RdFRMnBr4)8)!ICG?R z_cw$~e((%pz^AruKosS@A6P!8J>{3o5JX@(>gS6EfEu21(%lJP;Y$=K)AFC_1N-eP z`z{AGWQg4s+MOcu?2t!B@UPe94GV@d;(rfwf%-%$;{TMIY$(xT*!;QAtsP>>4=b_4G!(^ve%XO{Tb;Y%;^J=dFKQdaBYquAWwPoa);&?uRrIFMOl`{B@) zH%)#YI-w&HY)`OLWqkx8eSzLw zEX+AVPXW(8i9-FbAI}ofJz!RHP_CUFOFhatIHubcTSK2!*O7Vc24;CH>j8}L&8G0* z&iDzSZP5F{7=Cs#b!yXFnHNJwnn;xi7;|zHHV2oO#}tu7W|ums|M2-tJXh$1S* zN>kW}ALBsSPc~}8j*jKi4SZJcA2$CfX=WyM7D?IdaR~*)S>IYLf02N>(;(hJeu=-tFua&?YPYpZAs!_Q=}v5;iKh z6iu3}>`b`f66`fKoW?k9qnx*POi|2ydDsMHH`h2~&u~@@%~2lY^t4$PcJ`)D@>AVs zj=`+i7<;rlW-SFFJtCf4Us_;%nxds8qdbz;^#i+O^A*2h^VDmf3gk(ie zCQ5iAf?t92rlsJZgD`qfqk+Gd^g z7&@y&u_T36%vzeZ%Ae*jWya1Hb+oFN(_E`U45K=&7{aj?TEW=3Hp`zhR9QLtu*2_r zXEff>x(Mr^td2W|3p4CbsPGELChP;2x9_>@^K>?WEqi6T;_vis2K>QHJQ&&vm~uR} zLb*dz8ZbH|NdidwEk>U+SX{Msd+w`gFlo(F+PRZ6x+7z!GY5(1PWF2`qPh$VV~Uqi zVVLz#+?3!t-5_R^oDLyJ*M~=a`2hOw$%bo;hGQ(PIX~dhEJ^c7Fhzk-W?3MeQq^;&(vLD;A9DjhdixUV zM{5v@s5IR{8$^=Upq^*csJsJffR3WCpB=lUMpdf=N}7l{i=HKDqdcxDQ`FOUeQ-!^yG+4TQrs9xN=x z(t7ydWMGJMUq=D}>kFJwK+BtT?lH`03`v-aMTDXt_!gdapzjG>QR}k8XC4tVd?+{- z-pny151~DM*EAp^u|%H&pEB>juIGH>L{}tBr}JLI zXphWq{rF8EM)c1WaGc4Gz1K=Q!|sKV9A6kLU+6qv_?Yf-nnY7mM)Pq>uo=Q<*YKNR z>gX`lALTYQz^(6|IXl*E=oNG9CB7kJ{aJOp9Q(5PSgiIP)uEO>ed_ndX*^E4GVVB0 zYvGG_pLqOQG7l4j*UT`kp&@HesxES1Tr=7}bXZzntj3@)jb8B8BQ_>PURDi;?)GHA zs|!AZ_j|UxVui)p*Lu9$r;XHn9FZH84~fzU+?8j9r6G%~*$qH=dMt-6p@~;_K1@_c z;snG(I&8hPXUqw=aUMEPPho!;%$9lEc+lXEo@qGb*3GDd+Bh8vW9|i>VFAsw@2JhH zVU4mYW8^)PJRT2QUfY4xy>uKF`)plT!?Zn(d-`1&`39}&A*4cnJQ?Cd|;7>>Iy0=Xk|CMn$2>8hJwV!*`dL=YRTc`RdJg z=Wj25{HwF9`f|EpO<> z6z8MtD`TCFazgT*l->*<|2W;%z#eMQlXmuLIT>y4C!Gm7Qr}v5zJjUL>fo*4g)@;!=u>XX8fKggTY<}VPLosUwszvtr(pI+}gY(K{h?Vq!&h@wej{apw(2qgP)T zpB6X=20G*NG`Oq@M;MXq!ucQAN-9)feoWL{--?(d zrgPG(24?aLy5!6JnxU3edqJ0XUEP$oxU=Vgu(z;iM#JaPbiPkq9UHl@=Vf_xwdIm* zB3yawg0J?RRmu|+e7^FpMS5*XNXtzrzXHQhp9co4^<+!hjD)!+kJ{OCthEoEk z;DB%J4`dcOW1ZLdQO;v8@4@WdzRtTmxN?7hRZC@splMjY6@@`63=iu*`WZZC7sLp?teDh|4~J0VZQAoD#))BmV`QD6o|?@rSRw>w8{LbPemO z?C!a*gZE(Z#oHIQV5x8Fr=?OcRS$$l!@F5}RYjc7C7Vw#_h5D<^W3?A{`1>cU)f!{ zP4@9pPmPdq0J ztM`eE)r>p_HD+U0U?)^y^*K9Bkwp7D7t48cZn&HlzjEy~D?Wm~f-6TvtBQJ?rlauD z!JKW?uml^i&Q?I88IA&EpZ|1`L7U{54fyXoxIP$ZIm3n^Eq^7Bw0?#E=c@ducKcHt zZ(D$Ay9Sw(;XfP&D|Q~pN1|zZvACRc1Az_76Nk-J0-nMKR0!F+E;e;_i>KKECxmL% zcKMRl!8%hKh!$xbDa%w=%Ux670-L0#4ZmE~+a0c@6DFr8;{WcaH^nJmtx9`Vec zEAjk__IoasY6K*eqM4{%8vTVOQyc9;#BKBD9c3nr<8++RrrvPd7yt4k;#lsi6hRk~ zy$AH=r2wH_K>6Hr7|IAp73eqcv?&8sS5%$ps^ni%WzTlZkerFV7u=wFPl~b=8&qO4-LLydn3P_1~7or-*$}G zFs_o>_TKb9p7@z$5(mKPN{bR3DpoN7Ly&c^Gzy3L~zDfO}lPnmWT5L#4d z!Xi7JUIy}sDw$QCRB8^7?vqkSoS5>h=B>r;eh2%{PnAkMIYjwC{M}KaV5N3&ZkDaFL7lUxk|z8}_#F9h zEV$x@sSY!8h^jI*c68RGYE<}f+yPdZkGUQsX1J3~B)H`TTrh}%`t84D%S_=Z?who; zLlEWc!m@s>4jTby6Q#PEyig!W3}TFD4Ml(J4V9oPqO#B%e5AR0Q&#qua+Hfh-)^C< zKuxa?d#}8yLrtorlu!l{$}p(h^bHVv(qhb~#8Y?=u*G$OGQb8!r(pG}q`Wl)7i1Io z`qL7?88mU>WTm}qHv4<-ho{Od){%f&k`_ylxfr`^gAL}Z$3J*`X_Y*JIy~r4&;tAf zjXel>oSMpZeH|2aW$Y!O?X=9`_=c6l0pe))|~!4f4Rg07;Jw3>g|8bq&%(T6As z4wB$#CE9G`Mx`rr%WZYFHRYBA;y8&f`rktTQ>EbnqOz2T7qRQgxMbYdid7HX6Pc)Ebvu74XeSiEfmDp!^y9@ zr$q8Ukl?FS1W3f1r94i z_fCGoikzr7HJd-f$@1!{Ewj}l=1Zm4+_WLV1{O~jtAzCd-vXaCZw-_zn;NqG-J8dj zJRuwsY>b$qn7_s;v?Pmr)|`v{nY>>rNJ_}}%VhIHBaFcDb(I26K+Z%t6h@dNgYRS0 zCl!3{5_hs;u*wEGgppASo-+Qr#oq*$hucG~Q#%@@jmmMSBvfy{z(3pt$u%JnN#D{+ zqd)CpkFgO(9o%VXF&sS65>Z&jqYn{3c#-YIbdvMD$R9itFvmxQhZHE9KB1SySmTGr zjc7t>2NijU!!9J5$<+?$D2@X_ZZTHvh4|X=qNOAwMX;<&RMx;zwwf^v3AT?7_qF8bKf_6x)`0#8n+z2MB9H*$-6?9 z95_g2$Ujy)gZT-Lbead?Q@lk-o=Wva(-6m zfw5orci$%)v%$=-iAT_o#9w3ipw0)_H6U7Dp#7yH;MLxmYYHrm-DfX?O%%JtGUJ-} zYy-@!WnydCb{M@qSg&OTJ@ZKb8aWR9FsP z&_x7_i1zvtQxvpn{@dPBIf*jHi0jN&W*#ogjt&?>qS0q8u80G=^%BrpVuEJK?_7Mt zUNNsHa|u7vcRPRY5ip}r|994vWSIwlBhBmt{Ls?yWlit?gYY>|>@jihunZG)RsT1g zdpV3{uQV!C_!>58&v4w!?Q1H@cO1u4mSJ1fV~2;7sSZ1xW{o%F*p?k(7YT+pgbR+t zG>xUD-^$ejeh~Bi!)t;?;mbpFst8ZtdqwuNB-Vel&k>c$P3;L!t`N3Q~E^L;Ewsg2 z?3Q8a;E9G!$8H<%i2mPK2EAUkdz@Lv38A=C-Rs?=)X6-LL#%MwKK~Pu=HpnGlXiG) zoH)})c^Nq~wo9yV{<-0kd^yJhZn*I1GWyi{gLM-xnHJxR^uG7iE7yb0YO9LpHYy|U z`2Fx%CY5XRxo7IJ#^v^Ki7QP44>7hZMUBW}CFB5A7bf~ zh)Y(XoG16|ldfKhho2+LMI6Hz|BYM63pFxQ`^smoC6Gay)(q^VRW1^-5F1Kc1eyDc zGWD$-bjSsQo5mq>WxWgHr)NVb)|W^b7$O8Sq;&>G22UkwA&S889o*~ax>Er-o8%cl zqRfScyK2iNg-U@xAtz5}kNHd!hvZF${X`)F-%h!*x7@CKum;VkU^9+mA4bN1 zA`=n68xgK)=_14Q5Cw`)s)Kg7+JFLdpa8X?G`J2pf!CHaj5|vF6-$UKQY2qfV)PGz z@G<}&IsfR1t82Ek2h{~dK`R;m_rq0{v1-ac4ECE_QFp6JTE0PSv8bXgFlQLLNbmh{M(Rf{A z%|w}xN)61n=BPIVnf{K$L~EF~+eM#KWXuj77ZMHx_xi&*woXa9LC1?}XW1@2a82@) z0bCvyrvE-yox2PgnO++a3Q*3_hdL=s7;<9R?5P>-d^7PAEl_Eu7TS*-sjrtR!d zZbSMzXbwiXCEtC>-_q=nWmEJul~7xQ8r0wpO~eIE+-V<-Nx7 zyTe>kQK5f(j{b)De&%y~*Hg}tv z0kDQ#RDLLk1FkLked$XbA6Pe8w5WT>Tk-*7ORkmbR4&WNwAj?nuRu?ZLLM;+J`jY?es~%;6 zmVsTQM#0g?s1~fQI2Eq6)6fWyERv8i_88Bjcod&WE`|rlc-b6L^Sj#Lm`l5mAjDZI z-o_3Hbe*s-76j#eljaB9dktaTL(w7F)V2J=2L3P+!4Pg;-bjFSm*USu^Squ$R9CBg z^7&ANM>70lIqfkt;$ue5Y5hFha??MdTX+1DgaXQ;k#%ZrWX>_Lh<`uP+j6NMRehVP zb8yx`owkw&YHiim@zc41--M<+LY_3;+1u^)-SH*7X;)?UB^ZJ7_BG+iH0m83E?lhk zYo0q!%Ty||_i4P#au_P@L?A10_>YpL=tRG}f?~RYzCyPBD@PCa&$Za6RvU@+V!QpU z_~zb%k6spf^R~>yXsUq2avl7OV@!3;#dOVk_7VUuFR3#x_F_Fhxl4VCgWXO>aoy7b zdwam1hS~S_}1SRH&5z59$wws`^5*Q$^07EKSqsUyCSco)U=&Qk$QcxRoQ zoeoBE6;w0ez6v`Gtrc0ta$?tsx(+2y*e{-BVUoLwJ>23W+DW7ya1;l$iJ^m0JCK_vTY zmEUGDV7O_;j#=+z2>>w>ROCtf#)}E1no+qvIiRSf*5NtMZGTZ|UfUb5xyY;i%VBq0 zMF1pL{vE{y#8(~M8-yo!+nW1)rSrEcDXFEa=XQv~PR;dQluNuY7n;K4K&wM22H72@ zTOEZ};^_Pi$>%eN28I(-q;I$0#@(5!IVevm#W24IQ6vdnBcBUF93Ck2Dp$8dG75>ml|J5(pKD-0kSTPl70k;`7*Qf zdCHbBhCVvu_6~W4Q>oCY(aP=Rhn2o3{hdgI& zQb*b;cX@*uGDWI|HH}fVNbH7kGpItfL)ex=R9mdZQ%^T?*FAk`DK8^7Do%?}OL{QN zgy`)jneb|*4f3AshSszR<4kY9u=H+H zt0$?sBKlABPGO28Oyw7@U&n=T8Yjo|%PL)%lMf1~>ah`uu?6?vxG|O1cC^f{f6%P9 zs^|}|-DMskzUiuCjT(;}Fkd^DlwzVA75I671lqj93 zFs&V+8n+pBuHJj`)! zv^D&)+?TGC#Dt^ov$noYcK+Q|E#=I1`6)i(fk2jFRo*T`i8o&MqFxY$Q&c`r5n`G> zIQYo+QFdDTB(FW<$ssU25~T*QFJx0Ce+gMU{9|e(=mYpjbb`>CsEBeQn4^_M+1H50 zYYJoPoQ=+is^;vKoIXns0ilx?5BT9%glcy3=ln+;da3Hcw!bL?k>7ru>nA{; zoZx~w>wRV4dbV<#+4&;5U{TnLkNq9fFq z@o$H+%lzYiOx=1>H|Rq8YhP08e+@wrhklfN@{oRO^#X#a6;drfZM|L7_PS$Ksu`ud zLVPPSSTOs@vJ;K~=XG>O7@M{u1$WvS;|KQZcF1_iOuBL@v#>*jeP)LqP_GqMlK(IyDxl3^|X%XKt(v_+q$}E?{zM zflEH{9&Mb_Bz}5F%!HrwTv(UIGA^VJ3e~WXN}|O$T;+Hv$1EOoOlI{T1S};mN|L2L?eOxj=i^ZB^x`{&z%yI1t4HM^( z?PFE?&NLL77rWMJ_jH0=!ye$_4$728Jz>8I>v#(aXm@rv3A>raT6pG=qPGMx*dCen z?+%C=A|!}vh(a44UU;V}=RzOn?@*E1ILy#n8+@h$+i$X{`$V%24T!!_pZ_v>F;c0s zw6Mz67xNfE3LLealxYWjLBUf44KtsjA^I9ors$qvtKxCOP2AUAu4|~r7A}bb2FA}RjrzqSL8s; zKS=DN!OLRGK*GjLnBxEQT{yKqkim@WtS^oAIg`eItokUOePgt^zSz49of}Mn;4wvw z@!YfoZiWfRlY$yKf-c|2+mJcLuLayPu@O~+)ew)RM zyD9_U6A?P<2G|4Z?0bcYvzV&!f#pd8Zj;JbOSu#5uNFOZ;J2-#P%HAMDEyy$r;vlk zo2N$7qI6uw`F)C$Es1P%rnm{V17^C(GIySfDA_-c--%Y>RPXHUM4yNFpMc37ZWtIu z4`JS+CbUbWbvON=9sb^)1sYTll~_n#Ve^$?u;DdqU?hIut4~59Fcgd= z5gnv`UjDm3xNv$maQs?Od5M;(sr+x)Hp!HNizU_kz`~R^qyJ&zUrzMJWB$?F;l6tF zpmMLIB=nD;6toS8H}rVcc}&;F!dds#9|8O8ch}O@Js4K{$aB|x@%Ham&8@1Vq~`9* zZ>ZpM6xDZ=x7Fk}u}4d)Ih5|LQS<9qd?7sT7w*5xf*B+|4d+VGY8PApfR?iVOO+Ej~&tPb9|3%xyy=jQ<|;XRF&)&ca@Q~8x>v?lfeda z71OGi4UR}%yxhvo`x|1sFkP!_f6W&`F;V9#F5Ao{O>hmHt(7YK5UcRBBK#O#ZmdX4caS z!}By>*Z~<6h;N`Y*|n+CLNs}=AGH|Dr z528DKS~@fjFI^Q8t(7kAmYIJ-Q{-k(`y^dD6j$#qt4yRW%ZIF5@6NvJC`IV}7Nl4w zC$r)d;JU&4SKN?1z*~SHl+hmovg@02W(Gm3Mj_RCxj{5=Q)wzwSpt0nA%Lv0sY{`u zF`8t!Jkn5uy}n$=C&uspKtPT@R(4tJ&Imq0Z6~UoUIAaUigecDV$<#6T^Zg{1l)(Z zPl|mOQB&PhZQT%CpQ>j1GrU!nw=D5t!|r!jTsm#gqDS>hvs$i7p$o-W$l9G@xBi<< zYc6DW$@!DSg(NVDM`{;D9nGe`D}QGt{UxD5htq5uv#c<_p5xG?VOd}*f!AqdE$?GE zk%YdLT+n#}*#jM&AQ_tbLg`(VOJLNgBi_Hx;T>P2mNaz-WKJ~E93*;MetHLxDG}N5 zBRi}TJvk41Jp&428-mq=EkOG{-opG-(ng1L(p+YP;W`O6OHWzJ2$X2Wf4R3oC`+eV zQxoBZIqjfoJnbv2Utie~mEk_&eS=IIRF)w^Ax*obxacwM&6wc+^Ch#~F#mWuPf%dE zXDDg6!Qo+-ucPnxN|Q0O{sdODxUx?v`L`quQQe=(O3_c0i(nX-{ znmIPr`I(7*QnX_cWZU}-({}{uGR&2-!THbB9|j@0AmRtQopU0JmIrBYt18!WcTT7A%?u^664!o6;}Pp+?%0)LeMA_T$ZY2B9z}C zjzp|CwW7#M>S*4mHfg>guL+yDQXjf=m^R8&i@=HE6+E&(E(8*^yxOpZxyc%swIdR7@1fG_K4auCFjh!=vq$}G`9F|{$xxjX6q2jW@m?5WamFz;+$us!f za(=Br6^{%^+TJqYpper+$NB*z!?5xDpU4@r27^jWoo6Ph)E~9R#!a<>=K51=03hDd zAJY6|?ftiW@Sy={Xgf4*^O1z#U3Xn0#nnZI?uUSo7#jB%Jd^&}^1$ z*Z~yisMI$|Dm&nhmb1^c&#BZ6nU|SQp-4II?0Xj1uxG4{V`TddC2*)8(d-09JfCol zk&C@}0vaz(W$c7uA5hg8!Zn^DBxe#%caXiWeBo-F4MPd{6b3a=hR5XZ^J4J0-<0a)csrMY7ncq}2JiNVfjo?`26-6( z+Xgl1S2R1Js4Emq!8e6a4{Lrt!)}0LXHnq?wQ?gTkKN87K!v-`+G#I=G~d#4VsBCb zvUjK-KuLi1^1q<&O*teonk>+y1Bjz@3OVCLgrLLJpU^1l<4Y~#>&Xwkq7yx6f$hi? zIjm0v3Mc!0y?G*c_jGt7O~;Pys8X<>JB%R$R7kO?*#;`c!Zrk8*EsP73g$pA>!UAv zX{MmSWOxzHk><)@(g#Mjy$jBBW9D)A#2K<}f&e(GsASN*B+q!}m2h=&<)69($mNW4 zJwY73s1>v$nEb>(N5EK{C%$dvq3S=2PegQvT&@sl{C-keZ?yd}#h%U);Xwwj!(R?i zbM4-jJ8slJ$F<@YNH*I$*FjTF{g%OgqC*#l3A| zt_mZD=;Nh!)F&vHC+Cq>m2 z6~lXEjs2ar8((MTu(KBsGB(LPiGEUt9Q5&=S;lrFGF$lbIv-gE@bS=(|FL@Z zDS+&aCesiV__*~+4U}!5nJfB;F_@u|qFv4K$eFTSjow8uYohb-r9EF@>&S4&5GKDd zfF`xJQ<2^M_NogI7MAaShw97b9T4xw?m*T=j3_<&>NyvMm=Gglfxp5hZ~aziu{hjt zi;ss1@O4U51$Usrg`@81JZ-Aa;%L~I@4O3(`j-Hxb2tI|n+q{_&{e z_MqhJkNA|uCG94&oYAVqKdM%S^JsU2rCt(rh6#OE-@(j-!$iSr6xmH>gSyx%ir%JL z+tI0%7a}xsH^eHF_8q+w0CnYrnRO64LXiedsvjW@%W#^SpBOlJWRr9)2AF@nBrr9- zJ-ggr1+^LF;Qg!PT*FN7(bAZ}p4D@QzTy}zojPEt?8`OR-lAu}irAyPkr-NuttGoo zSMCS)v-VJKU*V;VsM$-D#;^~^jhADxrk|1$09XF|@I4sM-dAS7Lu?G^5O#_U*O(^& zJxnG2sLH%}$QwRjo64%4*TJ6gKTyfmig?GLA`3`rM?LC>hjc2MpPgZ9!x(Z2q>)bH zg)P;K4HR=?xp&^^gn=0s5B7o4Kc83EnP*m>_ZwVbPK9Y?)_K@dDZ|G*PX7TbZpH!)%w$~ zPvbb{%KmBZ0hP8(12S0hQAy8%G8v_5KXISN2S_SAVe5wLHQ$602Ot=Lz!GXAm6zNg zByE=>GmgCxMdUq!fN7H4$8mO~S_8hhbwS)mTEI6zRYlI(HN{2h2114~=3|a(1Y;MF zJhY%H;XH$gs&ppTy=Y~m6p1Ii8~nqNrez{5_{QSH5sHGwxl%&>;7d=yYhNl6!=Dpd zqmJm)u-ci+OqtNe&5}ltHSSB(zeSMQLCcB?R9JqbHXHX@A2W*P+3d?L@U_? zy(CX2dLhbD{A=|t)Yf}Kfi`;uk<_1kC6y`T#IyxcbFI;J6IaTaG~4^T@qR2(X9Y}8 z@2s6Ba!;z*<;IA4_h=eepeCZyGEQdS}o=ux>aM1x0WuUm5jl-3^f*|dnKad1f$B#u&BHahfeLrCM#;>-=LVbrX0vo zQSFrylhhKImm|5`oh>+#ZNRQQx_c=aqq}Xq@uXfX59&PjtfT-$RMI2N`y(IqN>Ebr!e+&xK8#-;8( zb@JMZc`YuL3Wjt#f+FG#`5!IGP}vQ|ZgK=8C}&bRe~x+jk1MnY9YkEHTO%G=+6XF7 z+Ut--=gC}J1F;9kNSek>7)K$$bUaeHzq&p0Wo4ZBP%BG@pM@#i;9(7pj^>th0Mg=Ze5GX_n4qe%~Ea$M|Q|SWS2-EXa5L zn%!LgvCQSiAdLVDreI&2#?84@?Q-iqn9(f1OE`-DN>DkeRpx~6fbRk#6&0R9u)Xcf zwSJ=(_@rKul<$~UtX$^TB*%xzQ*)Nt{Vh&Zsp?<)M#}7=$U4-!iWu{ta8B5)nqEj8zaDw6l4+Hx#i0*9F14S}41ex%dF)%1G8@mg^Cz45d6040i_bodzz9!7wGKC++c$HPW{ViAzH z0T$RVTkpkwd}CS-e2Z+GE8_q<7shtcZl7r(@`1`Fs-$6*6wIV%_h*tru&{*`9JqP4 zNWae|2O4>-M1sF{ef^ya{$j!L<*o0;8xN1}`0T?aA4jakhf{C9aT|UVV=l53>%k>v zG=~KErv6xD%wSgyY(tKU!R_Z=0AzkY^fe{Gsiy|Nr|9_k1Y#vi~>F2fI9{e&uyzv4Z@lgtp1peC0|5 zlYPdj!WF%Nk2r;JcEKP8H8q(aH!sc<&7CRS;w}U#-7>~tFh|hVirmXv^wD<1X zT^u>Et-ZcNt6o82Ln?|a{VqF!5GNmLLdYlaFhSZvZ}98eubX9zlCkJ5tx+rr+-ER z1GR_BVw+6#9|-T5B@~6rmN<($HjJB<1d8{nWkdW{`x%<+X?$e zl8p9VsQd#<`J4-qa7MlbMot<3jrKvRH(FBBV5gMNFGm~2$k1*rlh6eTBKYKCj_u0jOC7ZZSM(rSr_Tat=%yNlzV9yiw982yhB(xrd=?Ik^OWrEs zv@`z-y#HD$yUvi79tifDXJedsb^(KGG0=t z)?&38=tc*14{@-OyXB*EefhT$!K_*6C=N@-kQP}MO~cf{+9bosEu9y+ZYw58FLsJqP? zH4ZhGysR|oN}pG`&SF-LpH&qxpbER0^z1}{6q)RUR|_*J48kQ7^HRnNk4RucQN)qQ zoMz=6eb!ZPl$7$1DAOFE2nal{zhI<{k>uMS$P%-i&H&W3J{W)lF|ozY>aF!m&|#j| z7h2L@q948~dQeinug8|TVt0ZI5NYcVwGg!QiMQ+=s6hK#!^KTc0yHS^ci+at0|vNe zBisu|C3&qzIb}I}$Gw9^}9ZNDJI@^sZ-Q@ZImtcJwP-W?dMDZvy<^n`^U4q z@0l-6?513*?StZB)&eoT@98&7X_80akzWX+cKzn#(n>~+Frs{ecEzT0UNmT**n%9_ z1h?8j6{xNFA(B0!5M{QmT~ZA5cZRhHxN-k3AlxdYhSoW>GG?q#2KidaW*^<;jJxxS zt!Q$9Yf1PF(mm@`k3wjzgL(b~_Gg-4Z3T zL=Ukq4E=NNvcQW!mzi($d0@6q2?&Q<&V&##Zyr zda8W`y>C8n-th%=`aZaaXw+lX<>uG)%E-}AuD}$ zXKU)L%3oEjMo$7dZo&yphpZ*?-Pxr^UVv?MGEgQjK9s(co}9Tm6cO3O`nnn5U4v(> z*<3&`=R^#SKR&XCn(B`ksC7A=ozWWncW|i|rDc0YUgN&&cymYq+T!mY-QNS90z^2) z*%ShnUbUh5*Q>O5EzcN8J08f~g`0*V0FW_a+AnCm-O4)lArc6LLxp}YPR6}0bM@RL zq#xo_^(2mKTnhxj;s_T}>D0&(alr3(J1*B=r5X>?x@N52>(|~V(QYt|6VtBqzsk=t znvXbCWo}={lDsDK%NLk>2Zy&Ad`hPo#n((zC1aP+wKN!*?;0D33_j2dwp(FmTkFRB z?8Te#9w9bzxNP|u&aTe|W^I?_w+m%v_YIma6f6ETk*g2#tUvSMTM3GZaO31QTpm+! z;|=W&y`pHjzxPk(4~!h%ucRD7dZ%J^p`Ais@7wd8-2gGW#AKzmzT7;VT${ibPiM2Y zF@XPuKsk85-i_c#`8M;jc18h&f11O*h#ZdAT>vAWrEFJ_~^b*HC| zMKpIg-0ygR*GJ=+llaJ-ujLt{@w4;F|W3?M{vz z!M^6aV;4c`=r(KC3;`BuFtrckOmX2ra9Ddj(9#<$e+LrK`XAl zru6ea>rvw1j(Dt22jBT=Z`_IY4G*0R&BKv+**QHt-QaYD48Qo)U0$CjXSmpRMc$(^ z02!>qQ)%jVOKijjvBA&OZnQfg(;Jy@_DY}IHNXCnKZd>ylG?(QsoYA-v1jXKgTNg1 zM~x@{;Fz1kD*@r{@aeQ(xvsEKw}0p(CzDlhTM7^Y~fwi_Ee(U_IjQr=HF)0jEO^D0AMse|y1a1g!D4n}L6Ztl}jVr^U3 z?$uA+s2#aeIB+MiV@+a48Nq)&|5xpM$2e-_f0#;T_Z67L+LK){!lpR$HVlQaEB)ti zlU(;J!6eeQRR4Zft>P^u5?QZxtxuoxkg?7lb--_~zg+_&pfiQxyR;e{9K7+<_usdzOqEg@M2_k* zZFmtrG&|krq!v<95L1%ji$c-aJ66Z*eAP-&o>oMW7F%fSGSdC+rIiYnGa3S=+OjaM zo)tz-Y&4ZOwo%kg+MMZ@4Bxx`=||_-8Q7{OP${kcJid8l;%Z^w-A_ZK9Gm#fUjFk*7bfafqibNZRJ*iX zF|ye4RV1Twq=;}Yi4~mIZ7^jPzaOZ zSIDY|`{kBQ&ljVCN?>>nS>V1YNXcD$HPrv;O6c1%slA<}WlM?Bh-$>yqOoS4&DUbv zs?3h~n<8vkQBF2x-`bFp&3U*Y32eol+@nkls!sNlPyIJjxTfi=aCy-I2+p= zI1qav4bdXe@ZI9p{cXMkK9F9QfQRsj5>6OdtEhqWW{wY;yB;1DgD&ka{F-?+7~#J~ zVR9ZC%YHdaC7p+GHybrtCgKZ7;S6rc$q}h%&eO-txT-nM4n(cC{F~;B^s$p(xSf0x zc}!)|vuWZ?9qsz6v*{}CHZxz}UMiOWB8MY+WUumOf^^vA`9pOo^dWppz|=ZOSMeFk z#eeQE{etAak=ldtW(nl3nqny9Y{*+)iMv5X>b?0>7t@YocxL6`@}Eet&J<&iyTjeM znTT8O;2}L%7*46?tHZsiMs@xZ`O2`pgYvK8`xF@MMh0Vi{>HLiFc@U5xF-qP4+z;*_|oW=j>5!-AVVv zS4*IYrYFg3*p&fd?f*|)A+m6&SFgJ$;TlM8xB&(g*pTf-Q@Z|lYJE|ot6^UP!!Zd6 z05Amt06-1^0AS$Z>|jD?U_oc+U~6e&<#zEr@fI{H06Wq&z%In(cny_r7KDy8ed~=-B1&E)b#V3ST$t9)hJlLdo$X8 zxOs+~kE8P5Ih7$cnonq4_EvJHrcsAqZkW+tF1I+()4%gL-m^{^m$D&GQLZesOr}U8 zi@!|42p&=0<(tX>5f7^E(p!kLS*Mt_;mP}+?EWzY=e)?_xm|5(X&H-CHp*h@Nkh%l_9-D2J)PE5DuL;013)_099lG-ZG%+3P<^p|!L6 zwf)w!lRUmg0zC{6Hb9c*;hp!(;WSL-|ywzECu$LfX*N4cAjsjA6}hxa4An5*<8Zg8(w=^(b=rr zE(PR~eQTiELJRcva5ONU(}7nUNo210Fp($x5uT~9LN-JJ>X8|0^vE%Zo8ZUAWAN{` zQ*EgDAMqaI7&Q3|3*;Z6C`2;I!J&2-qR~`~J)WlZnnAKcf3jX~ z#~nVBR|EV+Z@R?b_$l{WFjqns(wjsk2Q%dt@+iV87xJ5JaJUNR!1~8Cf!&aS`$6;# zSE*|(19#jPmg>&di}>E?f$+oN7&dD!4jib+VE?0-)N z&Ry*x3pg?a8^j>q2`hQBMh;d`>-i;+DCrGzgX9Q)$Ic0EG$-Ei@lP3TVdD!O?}R_A zKG>G4)3o7<_w>#d9?0$rp=jX^Wt}2@XG3!3gui%gbZ9NT$!36~-%5PF$wt>g^icAL z(jfD$^|`D`b?p0)bh6|S|IPZ7CG0pfv7Ru7BarA}!~ki5a>nRaOB~OZ1qcI2A5U^i zegEb3Bg!8F40i!xNOzArqz`SJEbCocx(GvBC;rtBpWuq~fy-r6g*$5DK$Je?&hzuN zyQ;?53uBiKcnvc$rpUee`a{y-^?{%uo1sz~*$@Orh;Fv+efkbm-T@^o3a}p0Z+t?A z>m>y?rUhoiW?#=$w`8F6?6+rBrtgI>y^o|Szol-~`h?5;H7hzT1H{;$FJ)Y7cP!QbUx?9H)ky3U&Yz^1zGv%zjl{#ly#w7R56wq8jD8sWiB`*gv~$al+{a%2lD( z!YfhoU9D7YIc(pk_qIJC8Bqk-3FR47P@x!rxL{O-KZ&Onzt-dll3MLEtEE3L74&&! z9Y0o!oEB$5t{YZgDU2r`wFJ<*0&X-=t)r)szswG6w9LQ6q)<@Nc`#8+0XYVC$2vx` zU`v(@ub4=s>ue}e{0x7}oG2AeHWK-N<-5Z^vkJbF%5vV0i;96`;~@ek%tk04p2CfqTt9bljJS>I_D_| zVUVOO=Lt3u4kjN9ONI3b+_te*Hm>B?P9hD!*k9{ercCn&tvd_4)k`Z*+DIJmdSeYl zgOWP$l0HTi&m0iMSa#{0A?!eo5!k*kHd|k>&;9ENwQ5Cu($_oJDaTmKGPm#OJ zt=G38}H^I%m5dZe=T)U=VPI7~F zOa(WWJ_!D_%)ixh#ukg5*m$)hK3jd_YZT^G!x~$DPUjHL2py%-`H-o6j|6L5;MXO| z8(^~o)Odzb>7FmZy3PL&UGEf}+4qGF#zx1sZJQn2w*AI-(y?vZNyoNr+qQc0`+rk2 zH5YTU&U4n?sXDuA@3kK^rj6N{=B~j+R$R4d@#28w;E@`hBKB)CXZJOdPC9aFXEgwo zyrC8vyb}$p4!F+Dz`clCnYgyX@pv2N)0)Lk62HWX#cUdoeu_Z&LQaJpJ~Cabv0tn$ z4CV5S-9Q}R5|rtm13*f*_Q9h(kN4T7zbKg<}buSHj z@gXXAMC|x_ob4XDlK3M_3~A3j__rJG^~fhV`5(??A1pKa=|Y>;o93JDRT?VZA1{)g z5xnlEO56v~>3aAOc1ADE1i%xXLg>elSicO|hSA49hHhRkMt!a%ZWZuKX3A zpD~WK0@3oX<5x&)CG`?{KtAWe%d2ra8Qts*yA=Qfu#Zp}l;vXhgOt#PLU8{y7fGr( z%=MI}q@9`uR^S`@UllkDom836ykcF{FTq+K~8p2$jj`17d8bE2Thi>jq z*uJewX+}+(BuPWoLfJ8L>Vg{r`*^G|^a)%}6^S zxR;HjX)VQJw~Yb#zZ+^kI<3&gWiwby{U#_8@aAezIMRo1D2)|k$1}9de5=#-&j|); z9USqRbVg;l)zT{}*q>S|VT}1WF4{P1Pp02yX&dLR$WqNMvtHt}gXd`zYkOhpxVO~~ z2AU|cu4mt7iKoM8%q3K)y=3rU^ctw%(n=ZS4Rf4mc}=rlXj9k5XJy4-Xrt;GTL=dd zzy_JICQNwf6RYFq#tNP@Zt$ShJ@0sY*1$Q7v5jct7nCVTst@)Yyr_!HDH|tE(5CI@rf)Bv`twIO0N?~LLv3;X$h!ZDA38~*Ce zfDlg63L0U2$Cclj<0lx}w4Uw>GADUSEr4dvK-3Bpjea-4AJWC-TRNy)u@o!wq6J}M zz4{?uu=^8yw@P0v6%^Wn87P!!xG-F@pt_XSeN!Tqa?U*3T+W^R z*#A;V%?cC59j&iGR|8b2C;26-Io^e4 zUtor3WE-1er)x`FwN4&?-;tv{Vz*N&o6Jcp{?zD2$9zC@z`wb{u=_tZ~E0Ktfs7Bmj4NPly*vu!DtOOgUH- zoogCxu%CkRu#6#j#r4c(jM$XYeU9mn&lnJtE<%`n<5};gXc}4-fOXdTnV^HbBnGMvSE46mM=f)W&^Vt(FrNC`q2Oub!-|zc){O#?0 z;Nb*;ws8<18F7$?q78DICX?}*m`UohH0PSbm!61@wex~EgoUCT(fm8@$MKlrrN0f{ zN5DI{B8$!{%l(D*P7qS-8##MJ znmrhf2Ro}=bsQi*up3g8@LuGR6WLQB%*_Tp;6a@ z5)q1CWX~X^W~c;{Gt0SLzC?4>dEsD!$WB~wE}kRgf!*Z}?K07EO?oEu_>=e60D1+B z3@&O6UUX?RTN4iS`F{w8&>#6c(`K@gZ>%F$$Dw<#XPa*~7nQjkP#F*VwI=eWcGk+v zXN`(YEm3cf{T{MQ!!Z|N`*Zp0024pC33WDb48E#p#~F8dBgJK*4>S6~4EvVMvXae2l8pdsLn z@}5%GSWDj4)=Aky0uCqGzNG&Yj^K&;6^J3gDNee7V;@NaUzrK3Ly;NJVJu-Nc$XHz|xnK;J&WA?GfgNy8Vc=w!yk2#td=uI4J<1=$o zFVtu6snL*6yAq>pR?C3qNc(iSOrmDat5LJ8Gxj|G0E=rKn+pVxbz-mpahj4iD-g53 zS6$02)PQO+2HTa(DbEw?#n7mPihD`bUaX+1z!udfsC0`2nW(U+8Ec^TAEH>@e8gg% zm&N5k=F~AZe-*7RLH9$Ma2?&EpE8W&FpDfTI^6Okx#Te`ey#*Q7M}y26##DQlQygIN1%zo@7aALvpM6G)vpPnfa*?|ge8QuS7cpMd*wkNGNZh6RN|!ccNnQmTA%wAPb6Ubs}eA&Qf!*k|7# zKnBzGlyCD(W?)RTH)-~DG%z3~9vtftte?mdDa_DmC*j`mv$CWVOc1prFD%A84W6V* zF)MR*mqVe=C_a@_Ym{FmB@U$sdXCaG3+XgJF$l}F>H($m%A5JDo7gbZk;(-Zi4m^- zeF5m0_p()l=_#Er6B5pb9_I>#vQi=rxL z-9qK@#6EkD5AF+U$y6hdA&^HSYV;544l{uJ-`#yO+dyCxHO`PD0yIHbxJ3m%eJwvi zE>Mf#I^vhe`erlHzkH0=Ih0DG3=11LL7@uDksz?;VvEYyI27u(ZWaIHMCtYm{d{1_ z!tef+geT;x)KSV7v=87>VuNO228UtNBpU(5>}gj0drSo{A(zd=AVv=kP|SKMYFiYh~Zv zHWI%GQd7GiRk=a1R_g!z16={WcWf;%yg~rzY*L9NxcD?G5h)&yxEK|LvSH*8412p`GyifbMY9} zT#ihWEgI8+RF$8(Cy{0FGou_kT5_W|1fYK9^3lvTD595eXv7mlo;R%)Y`e3k4_9Do zSbtsInX9mM!YkMX%0i~`fPY0BxR5kl`h}Yn%=;x%T~-wETAIV`1~MWDMrgiMm?=-sOd#tNiXf4X50S2H;7d zxZzy@CS>tdBzbX4aKq@IENaFli5Wi1ymVFT^*VQc@7YusDXgEjRBh_GSf;h|&`N|= z*hm#L#x#uU;&$c9PnuX@)$_!ipyR4g zZ%P^-Bq8Rv-RSIskY{@;12<67TaHc5WWSuphuRGt!#n5bvBFkCk{DnjV?r?TC*x0p zmlVE>Vxns;smo5&3bdiAs-cJkNljgEfv(E@WA4vd0?Q91Ir z02P{Au;a5KM^@elhmF6KoD9eBC7=1VpCvG7)!o@_l0f{_aq-J|J8b)+ad( zdv{3k4|PXd2H9xM8m+2g+p-#IEld2|o@Cq1^hy1OcL0`eO4lHqz!XOMo_Wl~WEm{{ zb4F!36g~aUfCQm>e~a#xmJR1lF%hw&@YkXhPCh^8R(Z{-=H|LaxX|fBMfkvZ zrwKw!`CwEvN$c`GCb8DWQUxD07NXNd+yNX8n62aUo}5 zTAhRepn7o@xR;(}tm{@|6hNzaj!57^<@a-{GX7kQV(SJ6GoL9JPB? z^|Z+%1tZ+hj*q%dHa&yQk?dGV5hx^Hi$-rO5?`@+=ysZ~_vSPQlA~*cFz{uE%F|FkV>L`I)F2JiP^=7^IQx^vV zXHh#NH+eiC`9!{PG|7D2mkb8_2ELYe9@OPIB}D3O$+kAB1udahwHP#mSJG+NI*M9F zj(6P>s$e;HMD3{~u4Pnj;)DHx2Dw9hLr{6MJ^qQtA*le>L9-lF z_lQyPv`)#e4p_0NpCL0d=mcZb1Ba4J)d2@%w`{lnHUOFcN&%(?)p#=eLC-)}c1H)X z=NaG^e^_x0bj38tBbz4zUD4Jxp)QYS;EPYR$TbcZ0^?GRg|5Iy^~2{Ib4?Rww$s&4 zmWlEg1DYTz83|?&K{K$}Zm?lD)y0?hRV-l#4zhmBP)J#&n#(?&4TsEVwQ$>KEZgGq z>b66};_=I7HVjg!1j(s+;IrATdqXPIAQWRq^E4ckiw{=>RY()avz?dmmW_`nzqwNr z$R8b)d-Ep8mg0ZiEuvX_tNntv7BIy}=xYvB(Kk-g*Mn~gyw#}!H=>&rav02xgc*Lv zS>CDp4t?UN>M{I+zp&Tv8~CqvSxj2#SJ%iKhM{fl&V=x(IzAZC!+D$fuZ(aa2Cq3DOS`r2wRLY1 z_&v6NM(_nT-5}^Tv1h1uzSpU|iPrQQ{3#O_sdMy&y5b#Ct}D^551Fgq20Pi`COrbd#!#e1vDw@fz6!}|+ z>(uH9;D9wHkJNE^F*=QFioR8z-D%IhS6SOSK{qNE6yw<94v^DB@cKIN<$i7?<*HAM z!9nz&LV7rpLR5~yG`mNoV{Pcma@CG#)Of(FD`Q)_O}j;PakcDCIof<2zsnz767Tcu z2C;d`_fGxY;vniRo?c)C(i!pGysbwFwS(KjY-e)bNX(Z1X8=pyajZ2}ny{;OnYS^A zgWfhdUaQ+dVq2(A%@c3;?^&ZQ{o$$JhQSSnpe41jYtzt+Yh&WBk;|)1l}4`=&Db6ecU1&Z5v2Tqr*~N!P=s|O~HXbG}D_& z-K1TLb`rnHE8-iY@axjt5Xpog#fffg%m&v7v~_A7!2Riuo>U*R26`+614sjw#Q^3j6IIxHLi z$BWJIfT2UI0Y2S!)J851?Esg-jhd&YA*C#N`r=+DJ;sG(PLV7+G(kt+jYRe- zn^VAxf5c+@Ik*WY=LkP$<#QVVz!EuE_x;ktGaF_Q^+03PNLxiBuIBGpVPGIWHu*G{ zfQzISelw6RK)yh?tsEgp9Q6QF~J=}XOE2F{o=JadY+o}$M$yVzSr z`CxRM^FXtQDM9##+ys2(quA|ZX;QgCnPt*OWI1LUpav0P)&%1@tsivDG#hleztxF% zsTCGllE~g;Tncg!s*-Wmdd9C}jHKS^Cdu^YRT!n1PA0+~X0FqJZl(Zg`$OKJvVV_u z*zSOCG{MNJYT=ID@{^eZC`k%51}*+6r{)Hn+h1J3-MENvhK+e30(o^$bhfKyyg_$9XT7_Zy>%QTY!oEBR z!+w!6c@ICqLA!%GQX$lB$Q5t|mV&YhALO&6{n~vZVJEhIW6>?Ps`P{}Fuxft8*er| zJs8A?BB6-K58_&5b9ADjaiUp{(A8I6fvu`nU$U6GvwNHkNc`)D$H$P}lr-)?vWT@t z@%*sk>tGxLy81KV$XPx3!+&{a;+p**v^?R>@tyC#=x*g+IyF?JUG8w`tco3>&HK6I z*Hut?-yW2XQt3sfEf?HIkB=WOs21xwcfll6Pg^WOcCk;?!Fqm%180oK(vSI@FvO3 zv;^LpDoTzKUoo-|B2I>V1BVQ*dCZUvZ75ZO7Uq`gY>G+&dt7>pPbhpQa|+_wt@__N zSC3ekE#+{cu~7z`O|3fgxtrU133^F}&_tR5m53yN{KgZE3=Bdvi}MfUKxS)Vc@FPPlK9LCp zU6aW;@aMlX!nFc)g}Z5@Mx>pP0Y&-dz^*J@MP>TT)B!90jr}z?ApN?u6cR-_Xyx+d z|4cdFsrlIDkU`?EswKqV3)&f=pLI8Iq9RN<)-CvtPS-J#kKJUA85XYo?N0czMt!p) zBkFNRKEYwKnfh2VfqKSWiEj^g37>Q0BpyBGif5)S2D7V8uFsKh6)j6ZOXp}z?9GHM z2_lO<9_9A)tY>{Z`t8Bj2k?LCt6(7Yl>CGJneE2=y>8-K$7@6mYLPw}(ji;NAI}l9 zU6(`VYxeVaH+ki5-KpaE9mh~97D_M?OIoC&-&3z!g+pt$u1z_em5V5t-h~)8gri)N z_XYNv6{uE0JmORt8jj{xNBBM`19O2oK^(%3E`|M|drMkxic26wP~fDOHHp~tSFXMjiQCS^z|)XWo@@Y)LfFSZy&|X zI`Vr>Wp=3s#f0dDGsOQJJcKTd46PMCYgc~VrD`f*JR=~o&P#R(h7fHWt)@a+A_PM- zA1S`JA!wpTZ25P0WSpMNmZodfv8H5`>3V?@B8VPHnkS(syakBNrg1J*z@bl-#{N?Y znVf`mPHCWY*DGIbf%7+`P)?h>Z5)L!_=@8_?tLP%H%RBekWnIp2K&oFxX?jCBF}ASSwW)|sT%cR z;7s620>I=JjXhTzd^I}XgX=6&VU`_HO4?3GO{=1jV;FTyYG@yQI*WDlrI3`@JV}FW zSf1c$civ*GHIcXs5D|TP?U$&{5axPf29AysZuzV{< z0-d3pM0g9Zdg(15Y6DuoYksoR!RPDo`N`j0J3Ho$ec{e3UgYpfn_z?eiX97UC*UoG zn?`lc1r{Zp$~t=Uq8|4pfbZ?KgC=!Q=8X^fwB`+ixG@3WPU;*5<@h*l`t)SCj6<=g zf(GYVzrP0|z<~3{=ud5wQ>W;0JN$3daP3gz_<@M!{kcHn6dV}gsO1om(R&aH;GoA{ z8G+f`q5*LftE8pkSIpUI1NQqNS~+DSKQU4m74bp4&(JBB=g}%r8_~hpTFxOFFag!% zRc1IzKIgEUSjPnlAWY9`7pQ|5&>x z-x|~Q!r{SWq z3?Ajf=~Z&(6M#S`=kSBGK-mn93~cxb{0!n(g))2Qnn7Nk_A-=NpXtyP6bBB$qT(ny z+SD$QQxxhh>9?w_YP|ZyIcg~g_Bh#Lu6D()i&*0ndr!>)huK66nYSkrbF`}};mVWv z7mI%>73&zoApq6iL0I1+%Gr{#B$ypYo(IxboB@P-L_BC!SNKaN^qWX|s2Yh~HL4YC zO!6}Qkbt`<|z!$uS49VZ*V#XVs z(wpdXC4B0JbJ&H2OYE~rVi~YhtXs?+WJ}}CS~~UEYTg-pR#ZoFx8g8=VxzFAZ1`X& zCGlDgJjyn$JF z$p5A_+hP$sB_MC61XSDExENP%>}hYcxP=>SxbnB8)^|l+nc6TIdtq%%tm+LvGyi{E z5yoTxPs^GGlA#u;=?3rWhU6{3X z93wARizO3&=4BwIb9TI>MDva`biab<9r26~`a3?46G6_+n;4;|3GW~Gh(SNod$ZXu(a!6@)$<>$uvYx|nI%d;3gd_R*&XZ=*{+`+v> zPU{of2ZNC4(0U#ly+NV7XK!0J{fllXp!&>}HiEm1qmK2TOpwsTiD+;2$~9#5RW^^_QZT1*={|-=v@bMa6ctUI$Z4~nbRjij) zYiuZ6HOp81@rn;5t8^G?_xJX=q^c8>53u4K%K?2foCy#fy5#E30sX&A-PtQA2^him zy6|CV$-Z&Mf%g7TnA_}4TF^lqYr1^v$Nb?p#K_n(_sEDLPnZJ$99Ev(;`2#irG`;YL)SowG~R>l^`#7)7b@}p%tzZdbSCY>XV|WT=Y-q5sS+L zuOJTq2_&L~;mW_JwR8|(;|uOr zQ66Zf#zqYb*yU3AkoLC-(A;x2JjZgL_R$GO(*JzPpuu40nPqggdYo4_1NIwt?rxr5$4RN@DA~$6+OcwZx(Cl znb0R}$&?#6@snAD&t6^2AbJeOnk zqqx`Ta%k;7@GCvqZ!N_g5%$LRj*$_acN$>#3)Yarjs(31S8I$)szO;zr4ZnLF zPEZ18okz~T0i3P@`&EiW{?ZbO0z5Enkm1vGdz;X|s?5xue_NWpk`tIPXEmmPdFHd_ zf?k6(^s&Km7W<2!aEz+z`O>N93Hwevvbl#_>>UAp<2}V1K_P#tUEEug}~1 z|6MjR#JAZEAl3VL@Z{jC!FjT3IZQf<2%S#1Z$p9W0a3jwkWD{=!pn2pu;w3s9UKn8 zT)~-<=uhsml0B=776_V(z6{&1A{ocBo}0KJF+I}AP4R%C{kN6bTnoLPeds!b7N-d{ z^}y?Y?E>?3A|iXQ#N+}z$&|!nTqGkDb1}?(SF7N^>7TRz;T`|6fJV5*I{k~-ED92l z1(k-2O{K{w19Xoc)DYSjjH*8{i>_Ig5;iNNBAWyrO0p6*vTef7M4y)Q=TQL}W7aS( zuH7M%Qf3b7Re{ziv<`8ciltBqL&{%QY;$|RI?m~9_V$FG>%YB>m0T}nA!TrUZf~zU zAt`4^ez~(57o_<%qdk=VH4R0J-f+3fc;`#Szb9gNtohE#mUZK207Uz&%YGQ z<^_LM(qXFko=5Llz6wQ3*%qtPVo)fj48zLr1i@NEb+ua?#CH(KE;NFErE88DtSH+>v>fUAzl2{$)8hM=8+)S;(dbkk6s1N%n1-XA(; zmrqVjXIZvsdSPb<=$nrqYE{#EOQ~Bs6G2g;KEFm5e;N z7$%Q5OCpw$l?@|rzDkb{;vz`Mk%Luy+>Ib(uOb1?7RZt3-BtVt@R1G_Xxr-l7=png z1I`a%6G3-vp+z2RFJ405l$0v3O3+b5W0_z&SAs}*qdqTZ5}L5ZD{N$$2R4enWqZjL zh)>4N5s0dkm3%RzAh{VgWCu6tmnL*buZ!)cl|8t*u}r+i?!&j|1DH8XpS+lQwyux? zyK`eKTY!UR9sdh26b4J@XT(CsYtbM>j^%@xFov1|%C`O@_FDHBc0cNV-x6a=e>yE0 z7CPO_+7jZ{R&T^va4xKttMe8)ySbQ7?CudriZ%=5mW@2|erxA#V?tF{q zs__e7|8JyiFm?(z=B1z#?q$HHyQr4$D{MGyF$(p-X^=CV>ey{$ddJi2^WNzXhtz=MlZ=l;0S!F*tVVjyDCxhgG3yp7 z5OpaYsi{p6!^a%s`+@|o`yTBwi@{>jQ}GbosZdL$tQBXsO7S9T zU732+Fnx_hd3i!I!|wv`^85fYG-eOyR`g`JtA3yNp4-r6uiS42YO8Rjg?}L&5!Ryu zRojM72$gOcU4{Jr!D-&}?2M~N2NnLmISf+g_;4C5*^O3$K7%7R*Qx)CHO}V%DmN*`!2D$7ltgv%ff1A+e?u zK0_a@a?oI^(V`6 zfwx|#Rqf1=N{kTq5AWf7^0-J^j93YI_+BE)c;S{aet7Rjgx&9ni|rkxgc+5qSFdIR zHX1hJ(nAFWMGtdN!^(in{Pf$K=0=u~8eQrFI zJ`}5<1Nb+}H>O3W`)_%lndZ3A)jbsHCJF3eIdyNFm`0Tr@fg%M%UR-2;m zI)|qhv%(dJ*7DR6U#jPZpfTF}6*%kaVr2KZj1UIM)deDLpSZ@wl$QOnXXA2a^Y-te zr)j~Z@6!%z6`Wa$s23~BZcF`al1CtfJ{+PTA6*ox!y!=5FuPk-1ZwsxK`oDOR~X@J z$ucc%!1l0Br`Rg>U#^FXQ33rf^WWXx=>0LGP&D#i3EOzX5!L=ZR!EOa`mQ$yc@u)E z0X6T8v!;1GwO+q{54fRvBl7|1f*q>Eb^43CqDQ~>YPzEhi=rX&<1z$JB@h2Vf?KOj zPJqw;Om`f4Cx;=2yE=@#%OYKd3{v~(gLEM};9RjT8`S<{9hzm92&V!Hbg`$Ad&%O; zYv`Q`*bKy2wFX-^dg~UCnK9}3%$hv>EtGZRyRiMs8Q2W+#sm`s$U$WxGT>O%!C9&N zptW6>Oas0UxF5dWHm3OlWx4IXfoPD(p&8_9!zM<3@hw{ydge}b4t7_UMl?AQx#D7Q zB|i2T5pc#0MYwDz!{GTs>+&H^su1w3NXIv-qn>L9164KYXs{7<<`_?|yCX*VxF}Wg zqjnAQ9u0>eXxKIC`y$}gY!=}^mIDK@aSp!Imd5AI7wN{1yLBRj6JaqH={9X+oeX!J zo}2;R=~6>|KPL!k1euV&ia=<~e9E2Z8waHBm6e=})Y8|6lTI}?ArAxr*`7d+RnWj^xgLfX4JLBDdbXH<7liSbuWWT{W| z{kD6d=s7OUd(W~n^+x~~cajfD$VId_ubN*&N zXc2)>X8z0sK5_a07^6LL)Z<_&QPnU}d1_3jjWoQ5zU~qa>A#o2!cGgTB}&?HzjRd% zk2-;2p1k4m4|oGx5ub#|+U}IGwAk_##&mdVTjgw3wDn3k&ED$^2@XtR6~9F7l_=s9 zUo~giI)7rg0%H6PKf0MdSinKHuuPUrpRy`@A=4-=G1od_bORcxK^ehHjhJO~w4&pR zX#mkm;5YSfYQtXib$=yP8mSP*Cj@xnjzeq?7oQ3^3m=Fc`6V~!x^R0`7}ko3*oM#5 z<{%L|c<{XvIyAjk$}NgF!4|Lfd#An#oQa=G@q5d4lFhtTDBh&Gu{kdE$ql zM(D)st7|ISr6#C0-NgDS1x=IfVhz@5RK+)3-w|L83k($Udk;kSk3=#anr}(s#b`5E z*l7gT1t&0xf_Pq(AXWe~h^f~T`_&Q&2LuF=2-cwBJEE}on{}NLPWxNPPUJ%MXJ5cc%@P${Rm~ZV9aQZZ@G%z+WW|S zK45Zw@3<>n{iIDtX9!KBP4MZf-~O4;Oky%Fji~;ekV(J*W% z^O=8oKHAgi@^gKA1#Mgpr@E7U z6)6A@iM<)H*k1w9GkVSY&-7+9NQ07%`c2iS+BC}z%j#-YX{Tz0K8O@T5-wpCe`GrY za<_VI*T~W>dD26?f#wihmx#{6f$Uh&K0rB1 zEi}C}`r1X@LCk8zJ9kUF_khmr)QeW4tSu%i3m&*8EQ<@YA;HXm=g@#>U_C;;h&j2` zk)=(Kg?=n}DX9#*4kmGoo601Tj~M3lsKgPE3Arb+tLIEtmGB&02kQk^!cx@Qp?nFk z`UF*4jurPlpyxk48t70cJd{<0K%!-HZ7xI)tB?9gZktgGl2-?nEslQ@+U(lP^OdA? z-^59}=fdq-_i>_QF2zX>qX1i0!O#!WaFq`%X@yqH5_o^atq`;{p5T8Y^VNz9ko8IG ze^YfHz$Ts!XfZD*)Tcx>n^cii;ymlNGD5$sf6b*%q50>uyk~RG>8K%%VJ?UKT2}f1 zDd==gCs((4gVQa=Db&5$FV7m_yUT)BG2OG|t68f=i%rp!jkLb^T*+8@>5IrPjl`*ALH~usW+mXX>&)cIhS{RAdlB$ zJ8iLPmZKn~&q|aHCK2v0f(3z9&%si4>#TC^wDJtOIrMFAtPqV0N?yM4?v zCZ)-Vx$%d`@i;l5ko277>>K>VNA!eCWMqDl4&#-O+0I)b%@&yk(*(Lin{<{S>6~tuket<0|3@yqspw?B6-=l)6zgrW;q%pRkfUE`c1<*{@uB<$%gk3-#Sx zizAfEd$}T&a|SPXW_EL%=~W#c%uE(`0W}-DNcFk?Zhg>2Q(zZ|F0Sopv^LNz@Y{%G zLd;;vS3;%H%T4jUB3xo~2}LDUWQM+P6Bk9U*7-1D_|QLp1%l5FwFEiXc*`+VDz^1w zC8{i-4wdB^0u1<%q%={v&S=o%XAc;kq;{tAnjHvXdGLT#~+Q{8FG(U~|eyXBtH~=bP*& z+IP1qOF%E;VB(tA-Q^(lDf?DXJb`5VzY^0CYry1f4mB3K9SQh5oKLN-0t#iM1EbJz zEtrMI=yR>tPma2i2c$2;IN(qaQj5&FW#Q4u3ObVsY$MctTB!7v_DVQ;woo7L zN_2U*MLPrtoQ#Z%2Zp8C)f(y(qLV)?e?p6z1=z=1D6-cr(Jkfm7YpYL_-0GIUXGo&ZdHJo^F zy-n-5#mJ2Cd4Is_S50G7J`A0I`26MgALj9{=f0SER`F}8j$D$Z>_JLir`ze9j^I8iXH?|9a3V)m*3Vy&Wr5}965`n#-UT@7D4?dUEvQe83ZcYCx869jW0TD z;=2V|eag1vErFS~r`5nV`|X=7_;ifJl2MXLI`=k3dGQF}jxM2VK6C0)a*GSs*((hJ z>hdrEION4bWL8hakTD;$cZB@y;37G1VgvWGr2~UDzPyx zOr|vL^oQz-R_TAL6q~psVlkYx@>??>wzup+xNokUegNN}WOcx4&rakaN46wOX(tdk zmC;oYNN|QbVFZ<|5-%DFvaEl|K70=01WcQERuh@WQ#rbl?UGda;&SH;{q8_=?uL>2)Gb{9uu)2U94kVI&TxHa>q zpx?zwrPxxtMu$g3phoen`kfQsy}pHW)YZrdEHmjy( zC^erMbQ0i$QtAec6V^DGv}%KJS)5|_#M27B_?oc6ZTa^$=_4t_eY|$r?0`yr2W~!XV*424>(@Dap?gzp7`HokDUcxK5IG#`t7k2ZPy58n{LgDQdr5t zbiBE^-`OYz_}8E&q9qSDjr(WM^n;S-M7QUBBz z=(vte8ZoDhIQ3B)J@I;RUxvy|TN^HnR6LUZ4xPSON_B&p;kflKQU*=Z`I2SiBkh0; zz>upk)(1-dGXO`SNz>?SN=2zxZs>jTNJv6jx7#kD*9*n# z9zLlr^M6b&<`=Tv1I}@O4FF-9woz?x92Z|CW7oX5{jJQRP0TvaqPJlnm1r1cB!_v^q{#Q&!+QnS^-hEEz+RpY{8y!6FMqPjddZ&ux~t6bHTcUD zU$9DFh0!&GeygyU_Y~7o_?t)OW5Vh~*N)!(WFFrlGw;Y&Avf?L_=tP3Z6hzOxOK5L z6y~LU=~X+VB~JwI#zO_JB{5JxV(BCg@^=)SM1Ockqfgk;cGO=EH)wMYeGqq?g$=8j zUW*T{5b)^BQQVamjVp_(l=fEg7o%#^70#`*4l-OFhQ`%YY?`Avw{21Ot!=j-8}ts{ z=^yL?d$`GsL8Juu17NH4%4a;tv~t14s%-mC%tYWZvx5=pCb1ptj;*2d7AO_kfL{^T zroC(udox`ZCzQ_=tG&63XP#JPgKHuVWo3OMAi9!3ekDV;5Kk&QDj~?cTNE5HKhe9D znT}AR@eCxjVkBvdD6Rn9%|8w`-H1)tSh*iTFa+_GEqSP`=c-hhCph z^@imz!ylbSRgR)a@G`knGT|e}rg^L3h&eOD)Uu+v!93>$G(JYcVpG)kYW^)oGjjHR zn%f7P?oIlDj8r+vo;b+BSDWlC{kD7k1%Kh9Sv%pW`=*(y_d<5z;wD_{MfyHB70gGv z6I+0Zc<+fU2X6vC!5(dPGnm^o?xwo`K_&xS^A?+Z&*{pq>dvU(|3r=$%KFH~{wi|a z?S`q@o{twRp2#UCvP^%^m15OXu8Sbz6P;F~>eDdm9imm#4pnD>3FjZ({i0cfVQM_( z%0)@R7mq8d?z;12z)$|e)_*PxnJxr@-g4cE3wV-RHnd>>RuZ`OET`z+9ci@Um14ZCzgPl?i* zcB;~r$AC6=z!kc!07y;sp?-E76pbNtKwc)?Z9{cKm2PnIPiVN1ZPDPDH&QUozy@#* zIo&xz1z33J=)ZcAsK$qKg$C6`gL33%m}8R2_g-dyGuWaI?1o%|06G__2I)3@@EPyD zA>iK(R+DQ$yYQh}e?FxF*;F)=44Mj!_IhlVt|s_Tq`naqwINAK5xDEzdHd#92~=2}ZSUP_PP8ML7gE~`uK*yT9Ozn|uE%kz)4ad%wN zRUdX|Lc>@5mc;6znAV15jA6!Xu?qb$8(cA0yddsF$6vE$+rD%aC97!UpG$)YxRU=g zB~pKY!Ex$>DZ$~^EJxRxLE*~ar&%M!f29Q^BzClp*8`##92aGBDPQBmIvR-7YqUD-oYy|t4z9v@sK?K^x@ z_T%VK(sJHaLqQg!D}=2#^1%~m8F6vpusZ4&lCec-z7Osp zb0VOF?wM@#b!p4MPW*k0_)sMf`FRI0}H)*JW89#!e|kWc=mwo;txYnrvI^AMK)4vrdYV zUq{{pfG64~softlbR@m27iJS`MC@3H&<$X+vGa3%wnc2aEF*OT#Lf?yU#Xn`=KpWn ztN&2%3X!Tnwr2(a0Q>|5Ap3vPUj1JMFW)ccgO}88{Z(tw zKNJO(-EX#@>BZjjzcay=<><)sM1bGSJirR6H668KG_qhd5_NTk&V~a_Zwq3~73?z1 znbE%M0sfF-eh&7^yyDy`GH8Af(*q1Z`sXIwGxtp@{_dexVVGAe-Hpc^_Jd!>_*2Hq z`^^r%WmPI2UEz4ClKRI+JN3m$3qZ=82YjUn+28J)^uaA`0(v9M?|wi6B9Z}Iu+ILa ziOIX__2Bnp`ri#s^j_$h=;iRNQ+_WOlPJYf6XAR z%$KiDzC2oY>;Eb_eVB*_Zy+R9%J`z2={DmrVBR%le^tU$Yh4Y>oEKdLA;zOSMb(EU zFl&h^U$(M-h4V*07Ae>IY4}GK_{+Z6@b)7zRh2a_jx(SSd>>n`CXn-ldWk1(HhvK( zwczC7M$=DqY7mm0@5&-iOhEjf;6p!;n(2<&8x0NU))E+y31fTJ>{~d_o!-cpY)byM zZPqP3^e(DsXyH7oJh4Wl7$S7|dGHXSOtwgAiMa84vL{C%E0Ty$BBEmDM&HK-51)SD zWn3M?=*At&stW*gVSr%FzDq`ZFP!F&Kg^o{5`%f&k6CjH06&9DY$uBAca8hXw z8(13Yat2y{3x*I{M@DiZqX=NL-GFHWc+-=$6P|IqgwhJR1C;ZT(E0v!z@Ik0fO@+a zGq4n+p<~aO;0c3SDI^`aB@%|mNgAl7p*?&4lOrPegm;{n6#=wGFq6NHcitEmY5iK# zjb=20v|!zGj@X3&N@0{lN$$rM4kf@zAE8AA}6eih(? zo`6++oKIidF(>FgAf3V+z>);|x46jKwQKPV@STca9Bq*Hi2ZvYVmb(4CXyhH4w!nx z*Y*nEMm!;30*fO2(+j#9nP>fXaK9YxrfLKgfbwSegjKzs5!$pDgmQumfplJAS_xzT zjko$xiMVqLGnNZ5G{DZ-s2%rXX^FmWIi`>_Cw^)K;(KSVy)T<*^QVue2Rm_m-(D_W zTwFY!Ki{Xfm#>Gsd4S~J;jrOV>OewXXkq~%Sl&!?as0p``Kf~-s*pf7MP|cxqju36 z_j70rK~^NdZpf*rg_1MGBv%ZSVH}mHJN28}_4tu}(kmP!pOK&<5*2({+FR-v-~B&d zR|oT_yJ=>RueYc9^$NaVfD4p15hTYGt3r$S$@FTR-l?L|Lu#lJ_m1yGYaC? zXnFS4_TFv^e~k~}e1jx0pzEFTU??oItM~_KRcPa{a9?8o1t$JyiGw81mNOpAK10)E zbTe?PQcj{MMtz!M?HPevOhAs;OX$N71w;^#7E(qFYU6nib2!^PfRVJ0Di1s33y*Z7y6+y?!%oz;<`GHWNXiug^qFRo`QRNxce+y5=Mzc5V(W0vit{;8^6xw$b3 zF?#yU-mn2dh-%E>3^l^J9GJVjzh#b;eKYbO&StrxkK0Tk#BHMrAooJ?#)Y0;_GqD7 z@~8B8MIgU!wKeV4cy_#;<2g#Hmv;94V--s2vFOg3O!mxSa)T98Aff*9^W$g%MSDOs z!mOIL$gBkThQaTg<8_IwaM2Ub>7Gr^Wkp9sUTl<*E?DlGB?gz)yl=phC$VSB7i_xj zN4%3R5BTSVN@$29WNcjwoGFT$MO|x7Lx4r?eMo9coYiE!I*hAeqca)`sOyGok{FwI zEgBTaXDeC1UUkhuQ9wR{3&e7tVkiI@SJsd&QW=;;<82>BCvUU8?XWy^7H#Bp^^jW@^q;L&gmqX6^~iHq zxo19Wt*U_o%f?19Pra!OQn2>Ft+aRDW_!3-CMUn5{vbotYyn%(|b z)1CoCtZ=gMwt~(CCc6pSR@f|v)`eJD{`?VV-~G3}3A>v5qOZ&-F=;D4o|S4SLT+%I z;B`2J?Ey)iu%S+!$xka7-z$oLAsyj-tf+T1XVu^V3dp4Ga4o8+HSx5K&&oNHBl zWx?=mh~w}3w&U!t7A##|yruUnVw7uc#SvFdh0U9tfnY)erPJcm02hA!T{~S+l9!b4 znTGQ6x%34BAINo(sL;G~j2mfKlCY({A3?U7j&$<}QKFRuX3mj6Hpy{IFA&F9IbkYUmN<)O%JxNUn|Z~{-BuU|+gN^)KmIArKiCZNTET0-+k zIIoX#jA;Cz9xgSFB{SI$qlsC{eR>SH^K-gOkJhkC2A=7gcC1X(b$1on;7_~d`>anA zb0bvO_wLoA$a;43cKZqi<3EA`k@MjMbuv;=Zq(=r=9ZyGm@^HSzl$e*(il<_$5Rp? zKotwoHlG)ZJUSL`o!gWnT9 z?g}u;RxDem%0#aLkv0F`DN=maV8%;t`2R)^7HW0UXYd%mI=gwzewzUFqGTLp>TDIZ z7^R+lJfq++q+6`~lelgQ4S^Xh8Zr?Bb^{C&hw2DG)zFxwWoR~!kA4fO|H@Sed2lzpm*-JK)T*&U%|bDqJ>ou1sx*&2jGJ81>N zDB=EDXS59}f@rh?Skms#?`_b?RgH3`fTI*0%y}(rg~LW^0l#@06}t$gcM&3*y-^xO zZOkDZI~^5|92sF{Nl&g6g$13-A7kl(=!zpA5NcpNbv;7$pOiZmjAaICT;Gb}cPA0x ze~N+yQ4R^6BU7rAhgs1^(konos@n1E9>tHQTpvFqO))P`! zTvf^sD9qZw(XhExmA+Y`$!T>yK?Dm_ItSEr1BKZgfXj*q2EPWc zz@4h>a)F&%IUb4lo{A51|Cf;*gTW9Xs5w!@xSw?*Gq%3aZU?X=PNMJ|i)O+a-u6;p zO#;x7(f|&Ps`C)i$9z$gYSnSXL&^~3UgH~JkeXuSln2sFxihgm8H@CZ+HZcYZ+iP>X$lm|c*Gcc-M zmHL)2bDE>Zhxa_&3F60;fSuU^W75XtWm9CL2xeW~xxhDH6#P5Tr)Z+xnVc|@ z`vFNkqVa5|7=Q-OlrBJX(U&S?dp7%Ae!&2=T}-(@-zMxS$PmV;ApiEvE{9xV0cRO>F8Tz36w7lc;-e<{g@i!G zAAXd^39|O+;(XJ=`lE;Uf>hhpG1+XB;^Hbv#vL}cqn5c-bx%ZCAj&S}qbzx&>F_$E zB_!no5}qF?cP{9me`VvgE`*jY$RUU!MxwvU(FFIHTRv{3*8mB?@--=6c@*WaGcrdb zXV}o@WW*q!G#NcLpKfwHFw3Z!GJ*C_rZB^y06ALUEq3~czNxPxfvwfitQrMXZfHzH zQ2s33*YgPgObt3oeO7aX&zV^s+`vt0|CtAq?yB%8HN8%M`JS2SU<4w!bh4JVY)f=? z={gEQ2EvJwF^;Bf?C~YkA4qqpV48aFLKWKAgL4z@Vw3WqzTkP=Z z(-85}<8?NE7^+}Tu%3^rL9G{&MOOJa5Ag4$&{^*u$(er7BD|^i3-}T=OCm#0mTEDg zB#E{hO;+Uv%|l|e2{4D$?Dbe#Uujgxqlxk{$waN@s8|v#b=%`>dq2qHoLj7`oZ_aV zRWM>9)VIEUPWranBitEaNT`vGAg9%Kyxz6b$e)47yGCWPxUkiZo6g`VE(Fkl2AyHI zxLu-i4*uX-pfmU@gkZ^&=nW~Oz!rHH66&(;!~(agci(Z#UeE}P;X|D4NE~6a`OO7g z>jAhqBQI_qgkeZ-6(Y|n8wO3`K?trKym|WJ;;47)PvfvT{0z;UW{M<7M~Q0F-7&i1 zb$l`I>Rw7sFdF=Jcu&TyR0Pi{S>%Nzn(FlOz-425?)C&B3p#q)q$A>3^4^N` zHozt&SV3(LY(Plgb1*4dW~V|muSgf$_^}OBXdBlXQw8?H`h#?gE+_cAn4gj_0%lO1 z1Mf{2z(&esWoP_jLBnsej0qROwfVv+cXxV$y2G`%$_*63LIPwG=`a7TKB;S_W;3V$ zuO+nBIe~m|n&C)Q{+zzqdx^{~V4GcIviNePUKXWt1@SR}FDN6h6EII|Wkk90;}Yy4 zCFDe4JCCvtCW=_o93LJoe&>hfJyOoh&?%;|@Ws3^UOb!}e`hzm@CBUz+w0LR;*D|S z$C6z#or|m~`!5thi;8Db!WRVZmO+;6dxuHto~x>mCqV$Pgb{kU4sds~dS|Q#Ub6gM zjhf3RZwM)_KfHnLP6cPS!S+-U-Mkhr&67V2?L`u)DMkO(bkdf+Otx)EMJ37}>Klao z8bwzb99FLR{1xBeW8Z|N?!aim_RXA*!EJc=57qA&^FfZ4FFI}=!939sdyLl$ zXCf#??4B2D5ne{a-Zx@Y1N<6=xO4qy8#T{-_`amYm$NQ}WqbpPF@H(pTWrh$sXuPi zf~(IfWl5NH?q=E_!WqVc+!&8B8@SkmC=$WhX=z>7h6!(3S-V-qe{nT7bao(JKIWgY z08tLAlMfqVuN6>4HjAa^7@-EP<+u6CrlD}8AX&+w(hAB`N{2XVle;i{Ku39CfcpIG zDy!Vh>v8KLQ1+BQu(z1i{%O*M&nP7&k8bSv)7nYOKm!(1=?Ae`ya{qV8X3ktCzeQP z8W^Fb7EPh6m=TW$5!&*&(fwmD?#Ikg+7jo3s_vg+SIA6+*rc!;&6p~OA21#XLE2Sh zB2dF!QcWslRWEVQ$2YU+3bvO&%RxMa!V>SpTVBmt&+c}$4wtwf2pWt#pW3G)cSwJHt} zLb3?GbRalJor|n6_aj#K5(^@fh9JEn5`Eiht9>vcHHnPd&p;VqRhgb~mF7HbT0>fM zsMV$>FjNxOSmbTbf{i`xL;Rx3uWl;047oaSqp_~P6t*l}lu})HfLhw#axyw}xvBB4 zE~<@2b|AgVVv<7$k)zAxk^=g-2vw1~;tAuIL7-STKJK#T)7`w7C zQj8hlBJaXTqk-T;nVc*M(^F+?fwLr?<;}0?h1nV_xn{@($RQ*H>zRO0fh;`bg$t*~ zkV>*Db7&{UMjKF!j*>$CavmyZ^M&(dFgB{%z+}xcE{u||1#_g}Oh1LyVG-3J%jl2( zk!u);_9gP$iXJsQctW>%cpi8;qmX#5xq)-`rp4m`{``GnSVk%&TFNnO3VKrqLZ+>O zD{JsOKho8_TDnkVcIK;wy_FwnNEX~DbB8g;6zKcnrALBjCUc9N2!Pp9V-u6Cl)1M% zEWE6cA`Q@n=!o>xECX1mBSTR;0w;;0c<4!XteF`!fblc)xXLUHD3*uql=;iQ+!NBj zOjq1DyVf_2k}t5JtNqfpyA(jc3r9a{V{d*0un_E)1LQoGmU7NN!#L`*@IP^wQqMyI zCx%&*(*{T-CWw^Mh6ku*AbX&wj3Houl(Fo|Xtotmpgj}zO!*+-uj2-6gk__}7`hT+ zfa}%=Ziys`0Y5@_&;&kO*LeFaTpn+JqQg{9dD5 z2f|`128>K12eRW{KV3xh*eu*j|5cW|dg+#~x_WIbu3oey>B8}5WOGc`CYAIMN5qxS zrAfuwiuNzrQEc!<>)VqDZ# zN~fn&$?!SZ2PEot)g{F(s!iA2R(OIe!~1F1(A@~s*y-Lz5U_Uf)rjywlc9-n51q-p z^A<$63fH!WZ#f1WB{AXdBDSUJzF{snEiMrpztwJO=u z;B3Wp$Dq2UTTMQ-Yy=i|?CGQOF%XiJZNa)l)z=yDqPb&8{uCSt{f>B{>_Q+z=U}Py z(Fi&*O|qzHIBzY;eQii{o7+pTS#-5>DQ!wzTs{A6Au1~Tl2!U`I3ZVEdhlt*#>{ve zGw~jGTxewxr}SJLegkNuEkR(DMajp8-fMHDspL=5shZhUfZxx9u zo>>D(0u5h^4F+;^3qF?PZOe6stG*DNP@NI0IyoMzPyiF?GBxKChCP-tOmoFgy?#P()g6hJ-)nX|)|o z@-6k8v_bG#iu}Rp7&WTQPIQMIM*8P>7PH;EG?y{iQG-BJhPp-(uy}+ zZD$nZi!s{+k5LwqXv?2wtH}Z0m=$2Y4CSkBp6yO&E5MBWHWJh@rXOkL2F* zJ?XshdC9)%dD!ap*y;83tQZb{Lb4M{(}6@`ZQOkraAk?rCIh?Rb!^BTjQu9 zyLX29AWh~7+iVys>nF`j7^_Cmt+`c^@IyZ@{Bky-vHk%J<`#LgS29%Qv(__>yKHTf zKBxL0E)+_3xtA4TqM`Q*ONyG5U{6ucP-y$nz19c$W+LkkGo~& z^Wy^|-INN5-NJSNMYWBYvXt32>wql_x#sW{gH~TnaMdRkh;?;-JN577X*+qa?SLj& z^(fhcF!+LE^{X5s_tkqJ)r?JxMK5MOl)Ac%BiMmOZpDgmUpMrd&2El9vpw{#Pfxbd zY>;YpG2FEXEGvR$a-8VqYETOKBUQHmOM;GQ?OcEo>Fhs5TZbW8I%anv^bae9eDLKe zjiuL&V!R(n9K2M|wP_yE;Dnfd^k>JsA#o-!fJ;#>v-Bi=SZ|Ja;)r8`0|L@Df6UBR5A^e(6@K; zg1ul(dM_q)BmrqnTo|V=33KdwaO!3^&VHDBqbs2-7StwvL+*&QCxi%`kkA&qNfITK zXXA)=&s}IOSd8^Zj>~ZF0)E9%&gao?Kno-T2&JdYgp@+C*a?j`w9P(bHn%_ke%Pp?pn_g3wh@5LNC!HM|DO_t+emSX? z)5LK~7GkfYIkaXBn2pYPOnrqEMGBJC>Yn1ixY25EWtMR?&-{mtBdO>?S6xL*2wDK^ zU1b9ss`rpN`)coPh=`b!-T8pfzdVD{VStQxIKo(CC`NAnRX=8B(|2VWo#>@OcrbDV z^XL(ZqzX5`MXF?Ra=`cp{bZ#Rk!F}dF6vI>+JuuFeYFHh%oppR$+CxcBE)~DGD!Ml ztAG6c!H!KqF@Txa)nFyddv-~Zs?OU<&D%KlVy1WgS}SSJ?VES;ycDq3Dnhv^XNiV@ zM=>Wsv=~WpKuC^xY+IkfllD@IJ#;v;mJ`xG&$PN-_k%#Y!Jd1=I+&xNS$#>`35CZ% zoG=}JgxqEo(XQgJv}GvWk{(H6YguRY2vXaIlQK)cw}L`J#qGwPs@0+ODB>%CNs3K( z1tPf1?7yWcz)~kiRHSMYzWh*;{Dy>a{W0;87!GZD^sRYOcb@dqxKxuPJBQtWvk7J5 zrX${W;kh|n>9sxcM$EM{y1!_l%a$IfZ1>WKYnSb8@;X|c%lxX^EBW(JrfmI^he;Q| z^cniaH&d?O7;eREeY0*ou3njw)U*Exj}#UCSM1m0neK=A`6f5G-{$^|={@WRmPIav zEAkVI5y>u)x*iU-rl2Q*sdL+~!_5B#hF2g zn2APl(&un6*Gx*#t1;!E33kzEn>wt|n)u$@GHP_U>cf(9+;#-0e!gsvgvr*Wza50c z6PDwilQ9i$a|fP%@4&WTSFyLrK>5$PQMG?$_6lwn$|D1A4{1iX-&ezXQK6FT8n)Zs z7h$=$D*r?m*sfTHk>&e2N#`bjG1hXJ(D>664(p({hbA?9+FmCWc3bMXDNRX{yF-V2 z$t!C?(B_}6!&KA709);wqHC<%tkox~)tr&x?l_|01c?ZX?Xa(eIf=OdZWrq z2)=Qr-mLjq@V}|`hdMrqQK5x50&aYhli*9AKiTjN4}xxdV>96E|K;=<=Nn_iiOgod zr}iLT&CKO$bGIpYkoM#4EfQ+8CK9^V8Daj1X#f=PBvypA9YSzKZE6fxRCBlhbWYeS zu(Xdy>P9-+phvuh|LNd;sfwpgrMNgM>Lt~362M9CgSTvKkx=8`2T6hUz&QpaYI>+g z-I>3&`HWM2zK4oD!Wxv!BI;9S0zgt2<<=ZOnFm9|j-rW-tsAwG!Diz`v(39|r)|E! zg%g>{iI{3~+HJhD^_1`Rr8v|OXxNq# z6u9+$>0>mA-Xr9@okKK4A7BiWuVPY6Y)>R@bxWkD?-t02&o>ja-LBip(C}VuGS$3_ zm?qpFp@*X(EV9?bN{A0q_Zto zzHLnpKw!1D!Y`;*asIh+*ZLGkO1~YsNP(0oKl-xKtU*s+TQ%+p3?_|&^*%qETVJHY zCa~Y{sk9V7{zUx?YXM7Lb7#7}F_XSsOC>uexZ2*wqUKe=YUx_6QwXs}F zgD>wY#oy8vV^{J=Qu@;Zz|f zGuLMRN;XZlT`)KG85*Zr3CW!JeLj z)Az3Xe$UbIwo1Xez+PP2MfcGZpU!=qW_8y(ST;7Mh;BcxY~5+!1LJZRqcssWv1N2U zZHCY1kND^{=GBjU(jeoK6`#cYc3VfYsW*4^Q(I8EB^(R?%D&`7d>b&BN~#!G9Vq zA)JM_WxTD7q>9^9u&ODw1^tjtz)NP%wGR712rh#TqWK1Rd9Wi|_3dr?9J$-8q4|3L z{&81W!#g#*t!+?GU&8*O@ZWXr6lTKApMTjY|At!X@AAjdjV-U&wjYeWvk^Ply3nnL zu3G}RqtfAX>-XE4w#0`C^}CusJek9uZ1=R$P;%=zKS}RvPUsliQl4uqE&W%zF#NM| zzZEz3D66)k>TjxU;q62DVWO3ez!3(4uMfgplot?x`Rq7pwox<^EyMf^822dt(3Yzy zuNe@%T=>299|y$~?(81;A<&B-rj7c_7$7iQb?M5HP;y>gsd9 z$;|_Jkz)5u(986GPuZR~XB?ZpKCy1gl!w#Q_w`6=?n$o2g)#wmDc@RZFTas@*7G$K^p*$!`N?uYf8VZzdqf8ujjD5BRP?faBW@JmQ>WQsEId`iUy z)112VWQj%IMz7p*dQ7*9ERN5b^7L}}M5|Z_8na)*lR91_aa2e;6L>->PiEqx7b}Pn zN81@PFFI_8B0}U+;5gN#Qjk*i<*DyOqBO2Dk(<=pcAonbNDiChPlX&v`m9E z#8z|JIW17DUhdPvt2TqVu5i7PJZQ#dJk3F-_;HPK{#RTGmtX8zT++pMi4YkzLt_D7XZ zChdX*15vV;ygVNpHngy;g8lC6PzBhlAkMI8pt2-Eo>Z|+FCCl+@kiANyyf1PkK1#g zqYn$CA+35EX%5d?1u7(;|gXH)wj#q9Po_u5fxljT7k=X4AG{y*@2s0 z!jG~-x|V5kMmy(1o37mlmckAd$nblZDrPNILj=Pd2p4>rNqMlE5ET3DP>m%v18IDk zmmVXZ#3yjkFc^oq1lW&nal(kxBPUT?QCmG&rhR-Qa}??z6p7MKk2Z#qTjU;z#R#71jZxmvq6n&(NT>~Lsw=7c}QmYQ(j%c$MD|Q2IDw4H`z-`23MZ3w+ zSh*lQ9wbLF(tE6@ARP1Xeqa63<0s|#O+_tYUwL$I*2YU4`yVH=B+q6QJ3%Ttn2mVJ zdVcgHRdF{wxIND7z&e|-4UN;hfOvDXtE1*(HiYzD4Bq?QQsmjw^^Kf-P1ARf^*b{> z?*zw+tnp32Wf;ZFVoIvn`&jHv<~5gI&Xs1cU9!~~)doc);bFY>v6NM^0VZ2CD+5-= zt#=u3QetJjBkMk}GUJOpcvXS2;oT!CddP`-lZpbczyHpbDUmpAwa7Re*ONo%1(=dK zOmn@?q3@-;bm7!MzticJV5Bd6-H3q$%|VAm-`VKbEg3^GLc|};gOSC1{>W8Molj=h z3RXXOMZ_D4Q~x zXzAYy-FG3=eMi*`*kA(hYY^qs-{xG4BR+SX9-);z;BchRx z@tFV|RF^i79}#s2S!%l-)y?nc)A&(I`=gvpwzy2+sIin>F;tY!*ilVz&!yTept*gH zwAn8TiMU>w_4!rOsiT@h-Wf>(KQor27Y2pD9Xj#U&;dY^pY9gato-hk0C6Z%4>8m9 z7Bqw~)7`kF%dTmf+YepYcqCWx#6Zw$zy3vC0qQ#|LalUBZ;rRRsKjzC(Njn7n&0xR zgPupP7JZDy?I1xM*5bLA66cFuFU{1v>sSHZKBU})T7%SEA-7Be`Y!cS3;mOIeZSt- zr3)>blixI;1YCMgP}zBU9!TGDE|OnL0<}d+J*uq4k)ys6X;<%?J=`*+-H;B{KvFAO z7+;{QrB}3Y|Kud)axPYC_g`itIyC?Sm6|ua1fl3372eyJ3qgxCQ2|$3mU{-i#18J1 zN$y(v#av@s;oCB=-yGU&M|71Z%u@r@YySJ7a#&W{VPBPhV;FN&4o|UljJ<|;e zW&1`6yK{P4ccl75^FZ&dVUL)L^lWkH65F>lGR093P7n`XsmI$DXp`zA+oQ^R1QKpC znyA*-$5*mh0;?=U2nAwQgH~<56WlvnF6^RJ`%kZE0OXS=eQ}dN6)87x3;p|Jwq3PcnGV&H3AuN) zMh&l%2dmE9Hu);o{|TNX2>YfVbHCl^dv2^cviJ{W@dBw`T->=gqU?EgjJkGc7#uZleFV+ttdvk)Sv7 zcI(ABh%O{8yVGcl?XW!rbDa<;r98*Bgm_F=eY)h5>v<_L?!<@WL+r?776}C%)H=Ub zPr{_%x6Y}M!$yWA;2G8ZfT^wU07I@sZ8?fdL1_A@12%oD zC#G1#aa=*y1{FWGYG&jjJV~Im1ak;dB@Fd$E>?bj0LKKn$*FSj`_{B2MWy9)Lt0W8 zd>=kWtH8!Qdc7T^TmWt>&|!uY&ajH$+{iJ;VSErp!FOg78}9QOe5kp9%m4M;+wmGV zGnQlt;6}ek-x>i)CeL9OgCvv~G`bfRZ1@{5mLUq3O?pku+?mza$pEnK8uHHiwU@(} zYJ*`UU{_oRZIFM;DUiMxplKPo^sC;(zB+$mzG|w;h*k?;?J$Ga;IF9OSmOc3!6;>B zIQso|a==*{ByL7gBwPu#oS{tXI+6K^92g|_JwP96xf>KaX#P<289 z6lyCvwBvxGy~u(>BZC1_F-0MEcHhZ7%On_3h>@e70k@?jx--Jl@EM7whz^V~#U!yq z5JG@WDNZPE!r+Z`q_O&4fS9-uhV@k9P>sJLrC1x(%fiCrVFLX~J*u$%oUVq>R2zVgI>@>-v1dOA^4;)BK z_~VU04G1D_k(t=%Y-#$EDB%y?zuZY*w~$*n)UIlhLZYtYV_nh~f?xUDKDRz800fb8 z3OfWX2L6~7MW0qgO$h#OS@KlR6rerQR**>Ic4|g!;0(&=h34%t9hTuN`CHJ-bj&IM zFo47;r%t67{h~X5G_}7IB|3kfw549f$fq$44s&9S?G$i*45yXu8OZ=QSAvK0j7(p(nX-M$HSYVbYcFi4v2TtGCNPn;$>py zilmg8o-6Ub)Td`^fW3|&YB|IHv$EMxg*+10vipj{aT6HM6qc^bBzypZ+<#-Ps9*A{)T@^}GkjyMWG8;1CeOOMRmOT8leA_IK zMJ}6pvy;fD@PlH!*$k=Y?OM6nbV*h;e8}gB5iG$0zdqAXT*2?-xhfMCTxSD~T z>B*1J6=pTb92N7Ng2GS^{E4f|7u-dC9Jx+T-J9-uv1FRV2Q&q+=Z#n~ZanhNloAC^ z`t?B*X$Og4Y}3T z+{3yf7M?<-wL#{6bO99KL%fpDm@yDvg^E{d93SHy_4XUWnLIMR=0t|Yi`yVb=(t=N zbVxk@NP71Nkc^)ru^zH2-Dbg`GMMR)exJlJ27Gef$?H3J9mF6whKS7qmi>w6hs9d;TlX^VbqqZPc|L7 zLS^yCCcd9B(T4>=D#%WOClmrEMr9!;je0ob_aTk6^hqdcphmFsq#fz3@Z@R~uq6Tj zNsVkM7-q%;bVSrMh6mYR$cVoa9yG!JNomplPH*Lrk48Gq)0U`GLW%%TEwBMpc|hh* zm{6!70RRKc*@4V-hWqrK zq96eOtyHgXXsPeuWN&3^?BYzzNXJ0OV8lpgV(IKcYiVa@PcI`WEGnlgs;eYzU&w&a zLwtuX#@mc~zWs8HP+E`1z%*m#OtK473lV2yUikfyO=#Jv3kf-W;XTFSe!^}aFB~#@ z4JozhiT;mJ==yX0jZKTayGSx4Nl4g`n;BHt(DrjYEI_pm5bR+38#b;dyWotO!^5}_ zHxFCOp9NC{{OS?R`~VoP&DZA2q?EX6j?g#5z#0c3Jgv5xeQiq^JLtkDI$*Bz+KEXy z>!`0kj;zlZ2Zo2`B{IA;y_o$fjm!;*s%LfA>R^`+u?up3Gfsf1PMKZLOX*Gz?`nLT z(!yt3N&-2g8-ztriJ7B)8}HQK%=~21ugP#MuQjB*S40L(YNm2xY@GdsFby%3FhumM zaZBFU8M&N)QR%=}HjrtxKfA}PzU?cUInN2Vlie!k+ z3OA|VD%MJahLa2(hm~=3&`#T&x*mg~S)B=~_t8U=2u72*FMD8}uJZ&U@gV)GklG8nD9p!y?H-c6g%vXKnSThXb>w4 zPp8j~-y8J*EaR5Wi>_!e001mR005f*gFO3xl(DR+ilB&~ir}!izx{?7#y5WCjf3*H z1d-w2rsbx5GHhZOQBq6v1zByBgh9Sttj&|HY(kq2_nn9BbpxRey6g&4q=uXA+}V%C zlY#p*ZM;vKrUa^sI`cipM#p~TdBe|mq3D1~g4Ofjh$>6A6_e3DMGqFhvoZ46PMXzLn%l-SJVcNR)I_Vb1wHQ|03I&gAUMs&$WQCB#D?FkfeD=S9m_^Mzkv z5Jq{^l}K|pAz2S}ALe0Pqir+7RnlZtY_wUS_O8n6^eJUF^>j4}>o*sIfy7v&4`@xh z#Qn`;R3Hi)wlHSoRA0tJKPt6;Ml8EgvkDg*DFyAzWY)gkKx~3CW!|R@jYz?LQWmbJ z9rPd>|kcie2=$L2il1!r+wS(N zSP@GCPWY^13O9>eGH@Wkc|L+0=AWJb7KQhpZgDHNd)7=IrAGQ*D4>=lBr{VYq!9$c zuDi@~N@gMYT>|JJVZ1HaX#>sfG4G zR8emcL3oT;@ko?qR&us=xP?bJI^W7->_&!ofdpr6_AhxRh=^QEUYhbe=;uKsEyocw z+Yv5dTEx@lvR z7TnjFu`?8@zf;{LJP{k{CnI!T|JbAp$>)Iq?+2Dr;yr zB+{0sW@0}?(~;(r3<(_Bytcog|2WuonCorBf}gR|uHxx9*LT6kNmeQJyJ_%0I)CoI z!xQk#XFl0>>+qYhZI!L&;A$1^! z55R*XGk6BR( zp-3*IG-LJ8|fp~&Z{*VIso`UF)^suT}-#S6%5;ELc+a4m5HeTm>6nW z3nIJsnhyVVuzquk{Xt)9Z3H7`1!Xn&49t<+28u=VWWNMM2E8P?0(3w!6cBa*gL-tf z@m}f%g;~PGW$!aQ^eRb!Il)rMlLy(6-quyBT!iW$MI0h*Ype^kH6%ic5lNE(zzeep zNs_l9mqKcG>0X%Y3P|7ko zDSg()11LB4c8%vxpPs9KfoN1g?4tqHgv9als!H=vpDx~LqDVn(rvO)07C?BpV^2E} z9vt0vjL-0OTKk(AN$3b?Yqqehk>X-vzAW~bxLa0im4@hXAj;|~fpv&>+AYo6F=W=e6|0v|^sD^Nz?GDVw>RuYrRAEcJoUVo zZ5(}=!kK30R1_0Bb|7BBCmk?>?l9Xvxq9|ionVy`L zUY4DzJlqEY_@622;SVxF{HFHXdI1>!mnpi~JLub(x|!P0xp=rpS5eVQ9sU20Wsa0u zr3M86(1HR0p!#1Pt0XEcuO!l(GM-T=h7fY&hjyC3#`(+a4Fn<~L_p}cXN*ixABmf@ zy~VuP!ee&X{wk9FT{aOjHl+Vf_PuYee_qltYPjlm*HtyeHS1kzUL@(xW^k?=mh#%4hr-biOODcf!!}v^$2>?0?2(^6PQ2!$#ZsA z^zvD56(vY_B37}FBRWOVh$-6?G4cOv?A*hlPWJ%*8<$f@bdip`rKO}8DMI9y#--yJ z(itlEVJFNC!!T?Za!thS=}}?HK`xWC;@7qmVpHx}B$<>=G30vaYzF&|nxmQhvEJvI z=bdN%_{{hAe&6@|eSY)KP@*msYZ*8p8Yy2JtrD)~)y*!bSIEmj8$`-#l3xwyhqUI5 zB;k~HXSe@PCVP8^JK6v8*@bhN4@_w?iANVqCub8<#5`SsdNjkte4dlkeX#~fc4k#` zZ^f@~R@RPjjfDdlztLb0F8NOOtLx*vF_Xrr)QnJzr8g%MhMm>WV>Bg;;&e^6f}G^T zE-A~~_0{)MUr67g3Ne04``N0f?5fKfymEp3cDbKp&Gs}^kF-8{YFGGTJee$hH(p^# zr{ubHp>je`nWM%_jgDX1Dsv*c!@T<3hV=}#7!gfhnp(r%`nymHcfvbVi2b!DgSrJ& zHY_eTtCVkPTAzJZRdLDx4#Y6&rGd|ZQgU7`DxAwLniL;3j=zu=X~5c zr}9W}{QJRCbMFfWA4QZ!Wa_Y8iyUmWf6H`=Jk5+N>lb@i$ogg;`wgmzMb4yE_2U*? zvqD9{GrvYZu#d~u&l!8mEFGFLiGiiyqqD}|1M%lk2c?S7Cu$a#CQmnZ#@^K)GN2oV z%bdE1>T?ONrAJA^1;hlcPA9uGo$2{2;zO;;(pMD5rpSKf7>Q$gMUSgZoWxZ|ojybk zFUx@c7f@@Tmkq%Bxi>cqbHd#7BVt}F@3ppO?|oPkeXQx8A}3Mw{@cWDWT&RVi5kNf zBQ@`;qxa-!QyF#7!pG|Z}wWypGP_&ef& z<^|#Z9PXN6bcw}L%T>)Z95LZh;=+Bp>E*Gcs?*74XOpCC%pEW;v)_Kl5*2bjF=t%d z@Vq==ta(R8OZqF;&1lcesJte;TTL&fP(JWXoAlP~l6{lerI<^;*QgS>r}72Y#QfTQ z4&>T)94BXq_*o1y7T+%j?X_sYwoP0eP3lEq>;lcj!!l9|Oew6F_9bOCY>yAew(iJk zeB3iSW4-*t$hCp5UWaMRcF%b(zKxrytolOi;xa3L zd9))xO#Q%I*FUyZ-N9w*7OU5ykD#l6WZD)uHyhc8d~m<@x7{Mvj7AsXrM4Rw9o$xN zN~iKu=c)yLr9~N=IL}^eh{MtD%Q5LBuj{sbY5HDoLQx%2-^UJ$+E2yb_dtbRs(>x- z%$&aP)XA*hxvQwzLbdM6kUnnnkw;lpc@rn(PpMyatPVCYsw}&rRZ^ol@#})r;s9qk z&%;VjDo?`1Qf_f6*Eh4BqGITfI`c@AX5N1|^a-<7auEE&_r>IaOV-Dhg!{80_m1VgTVctTbGziek<&0LWyuPY*0c{ zkQ7L-o1v-{S7*^Yjf1Ty2-*!=0gB*L-hk=ccOKy(L3p$W0nKX+pxxXEL_)Ben--b& zC2HihtMh*kQS_EJL6C|(1S#-1V20_NK(7G-<>gPn6N3dvT%m@SEaK0ConRUic3<<6 zOu*iNL?RJ=2)-df9>D|>5dk;`HK&|cgP_MH5Twip9N2~k3?O;q{oOo0D0l%HS5d-+ z{99sMAZT0%f`G37A29u*E+UP0>B*NC|FO1qxUPlz^U1ridU4K8WDqPY7R2 z&s{~#A5(!he-Rdx>`)RSFqlRL*Lv{#k}H{gU%N>!@EQ#K$?waL$%r5-p6E>qLLdcL zlJ~s_CYl6d@dub#>KddV${)R00fhS4CfvvsM(*!cx}$TTgke%^v+uhMW) zt_0$+ft6Hv5HQ2^ctnl|fwW%Sr?}Tg?*ZqbMi2|id^lP*} z5VV(%#=5pPZJqe%Ml7oNmDpAgv75m?Jzw!blfGXQiWIe6SYV-qK?^WnD@YmKwhM2- z^lq@c{$sAmve>K#T=B7OZO$buuL05!6@-+&<94o11O*2eZ zyE@ynoV=+I+|T$Y$jf}h(EaNX@x+h-!Nts#@En!i7vv7iS}H7%W+si-<9(7;z?9r8 zpF&DSnN%gm0wi=H~|em&uL`7HpEPg8NN3 z2IjR)1<8Vy>MFS$voZ2Y-71I`tS(ov4ptk(^3|Gxc)==@hp(g;ZxH{f=CrpJ<<`Go RPg8`f{|fT89oR0R-vJe3KcxTw From 9d76c26d69855889c61a30162317d791a14283f4 Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Mon, 18 Nov 2024 14:05:10 -0600 Subject: [PATCH 20/21] move scripts from chat-app into projects --- scenarios/{inference/chat-app => projects/basic}/chat-simple.py | 0 .../{inference/chat-app => projects/basic}/chat-template.py | 2 ++ 2 files changed, 2 insertions(+) rename scenarios/{inference/chat-app => projects/basic}/chat-simple.py (100%) rename scenarios/{inference/chat-app => projects/basic}/chat-template.py (97%) diff --git a/scenarios/inference/chat-app/chat-simple.py b/scenarios/projects/basic/chat-simple.py similarity index 100% rename from scenarios/inference/chat-app/chat-simple.py rename to scenarios/projects/basic/chat-simple.py diff --git a/scenarios/inference/chat-app/chat-template.py b/scenarios/projects/basic/chat-template.py similarity index 97% rename from scenarios/inference/chat-app/chat-template.py rename to scenarios/projects/basic/chat-template.py index 156fbbcd..e496e99a 100644 --- a/scenarios/inference/chat-app/chat-template.py +++ b/scenarios/projects/basic/chat-template.py @@ -1,3 +1,5 @@ +# This file is not meant to be run + # ruff: noqa: E402, ANN201, ANN001 chat = None From 08224110ce49e1a8ca0f2e3d77ff7b82d33c929e Mon Sep 17 00:00:00 2001 From: Dan Taylor Date: Mon, 18 Nov 2024 14:10:54 -0600 Subject: [PATCH 21/21] Add services to rag readme --- scenarios/rag/custom-rag-app/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scenarios/rag/custom-rag-app/README.md b/scenarios/rag/custom-rag-app/README.md index 9573b429..49fc251f 100644 --- a/scenarios/rag/custom-rag-app/README.md +++ b/scenarios/rag/custom-rag-app/README.md @@ -28,6 +28,12 @@ Check out the following files for implementation details: The main objective of this sample is for you to understand how to build a custom knowledge retrieval (RAG) app using the Azure AI Inferencing SDK. We'll be putting together inferencing, tracing, evaluation, prompts and search to build a fully custom rag app! +This tutorial uses the following services: + - Azure Model inference + - Azure AI Search + - Application Insights + - Azure AI projects + ## Create resources To run this sample, you'll need to create an Azure AI Project with an Azure AI Services resource connected to it. If you have an existing one, you can skip these steps and move to the next section.