From c69a39bbf24792244b68264f3db806f5704a586a Mon Sep 17 00:00:00 2001 From: yanxing Date: Wed, 18 Sep 2024 17:01:59 +0800 Subject: [PATCH] [feat] android demo support qwen2-vl. --- CMakeLists.txt | 113 +++--- android/.idea/compiler.xml | 2 +- android/app/build.gradle | 2 +- android/app/src/main/AndroidManifest.xml | 5 - .../app/src/main/java/com/mnn/llm/Chat.java | 2 - .../main/java/com/mnn/llm/Conversation.java | 358 ++++++++++++------ .../main/java/com/mnn/llm/DownloadModel.java | 51 --- .../main/java/com/mnn/llm/MainActivity.java | 171 ++------- .../llm/recyclerdownload/DownloadData.java | 178 --------- .../llm/recyclerdownload/DownloadHolder.java | 62 --- .../DownloadRecyclerView.java | 109 ------ .../com/mnn/llm/recylcerchat/ChatData.java | 29 -- .../ConversationRecyclerView.java | 110 ------ .../com/mnn/llm/recylcerchat/HolderDate.java | 26 -- .../com/mnn/llm/recylcerchat/HolderMe.java | 35 -- .../com/mnn/llm/recylcerchat/HolderYou.java | 26 -- android/app/src/main/jni/llm_mnn_jni.cpp | 7 +- .../app/src/main/res/drawable/ic_image.xml | 5 + .../src/main/res/layout/activity_download.xml | 50 --- .../main/res/layout/content_conversation.xml | 45 ++- .../app/src/main/res/layout/download_item.xml | 81 ---- .../src/main/res/layout/layout_holder_me.xml | 11 +- .../src/main/res/layout/layout_holder_you.xml | 2 +- .../UserInterfaceState.xcuserstate | Bin 236180 -> 236088 bytes ios/mnn-llm/model/qwen1.5-0.5b-chat/.keep | 0 src/llm.cpp | 5 +- 26 files changed, 385 insertions(+), 1100 deletions(-) delete mode 100644 android/app/src/main/java/com/mnn/llm/DownloadModel.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadData.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadHolder.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadRecyclerView.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recylcerchat/ChatData.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recylcerchat/ConversationRecyclerView.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recylcerchat/HolderDate.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recylcerchat/HolderMe.java delete mode 100644 android/app/src/main/java/com/mnn/llm/recylcerchat/HolderYou.java create mode 100644 android/app/src/main/res/drawable/ic_image.xml delete mode 100644 android/app/src/main/res/layout/activity_download.xml delete mode 100644 android/app/src/main/res/layout/download_item.xml delete mode 100644 ios/mnn-llm/model/qwen1.5-0.5b-chat/.keep diff --git a/CMakeLists.txt b/CMakeLists.txt index a5948d77..cf89adba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ if (LLM_SUPPORT_VISION) set(MNN_BUILD_OPENCV ON CACHE BOOL "Open MNN_BUILD_OPENCV" FORCE) set(MNN_IMGCODECS ON CACHE BOOL "Open MNN_IMGCODECS" FORCE) endif() + add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/MNN) # include dir @@ -63,58 +64,68 @@ endif() if (NOT (BUILD_JNI)) -add_executable(cli_demo ${CMAKE_CURRENT_LIST_DIR}/demo/cli_demo.cpp) -add_executable(tokenizer_demo ${CMAKE_CURRENT_LIST_DIR}/demo/tokenizer_demo.cpp) -add_executable(embedding_demo ${CMAKE_CURRENT_LIST_DIR}/demo/embedding_demo.cpp) -add_executable(store_demo ${CMAKE_CURRENT_LIST_DIR}/demo/store_demo.cpp) -add_executable(document_demo ${CMAKE_CURRENT_LIST_DIR}/demo/document_demo.cpp) -add_executable(memory_demo ${CMAKE_CURRENT_LIST_DIR}/demo/memory_demo.cpp) -add_executable(knowledge_demo ${CMAKE_CURRENT_LIST_DIR}/demo/knowledge_demo.cpp) -add_executable(pipeline_demo ${CMAKE_CURRENT_LIST_DIR}/demo/pipeline_demo.cpp) + add_executable(cli_demo ${CMAKE_CURRENT_LIST_DIR}/demo/cli_demo.cpp) + add_executable(tokenizer_demo ${CMAKE_CURRENT_LIST_DIR}/demo/tokenizer_demo.cpp) + add_executable(embedding_demo ${CMAKE_CURRENT_LIST_DIR}/demo/embedding_demo.cpp) + add_executable(store_demo ${CMAKE_CURRENT_LIST_DIR}/demo/store_demo.cpp) + add_executable(document_demo ${CMAKE_CURRENT_LIST_DIR}/demo/document_demo.cpp) + add_executable(memory_demo ${CMAKE_CURRENT_LIST_DIR}/demo/memory_demo.cpp) + add_executable(knowledge_demo ${CMAKE_CURRENT_LIST_DIR}/demo/knowledge_demo.cpp) + add_executable(pipeline_demo ${CMAKE_CURRENT_LIST_DIR}/demo/pipeline_demo.cpp) -if (BUILD_FOR_ANDROID) - # add_library(MNN SHARED IMPORTED) - # add_library(MNN_Express SHARED IMPORTED) - set_target_properties( - MNN - PROPERTIES IMPORTED_LOCATION - ${CMAKE_CURRENT_LIST_DIR}/libs/libMNN.so - ) - set_target_properties( - MNN_Express - PROPERTIES IMPORTED_LOCATION - ${CMAKE_CURRENT_LIST_DIR}/libs/libMNN_Express.so - ) - target_link_libraries(cli_demo llm log) - target_link_libraries(tokenizer_demo llm log) - target_link_libraries(embedding_demo llm log) - target_link_libraries(store_demo llm log) - target_link_libraries(document_demo llm log) - target_link_libraries(memory_demo llm log) - target_link_libraries(knowledge_demo llm log) - target_link_libraries(pipeline_demo llm log) -else() - target_link_libraries(cli_demo llm) - target_link_libraries(tokenizer_demo llm) - target_link_libraries(embedding_demo llm) - target_link_libraries(store_demo llm) - target_link_libraries(document_demo llm) - target_link_libraries(memory_demo llm) - target_link_libraries(knowledge_demo llm) - target_link_libraries(pipeline_demo llm) - # web demo - add_executable(web_demo ${CMAKE_CURRENT_LIST_DIR}/demo/web_demo.cpp) - if (MSVC) - target_link_libraries(web_demo llm pthreadVC2) - add_custom_command( - TARGET cli_demo POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${CMAKE_SOURCE_DIR}/build/MNN/Release/MNN.dll - $ - ) + if (BUILD_FOR_ANDROID) + # add_library(MNN SHARED IMPORTED) + # add_library(MNN_Express SHARED IMPORTED) + set_target_properties( + MNN + PROPERTIES IMPORTED_LOCATION + ${CMAKE_CURRENT_LIST_DIR}/libs/libMNN.so + ) + set_target_properties( + MNN_Express + PROPERTIES IMPORTED_LOCATION + ${CMAKE_CURRENT_LIST_DIR}/libs/libMNN_Express.so + ) + target_link_libraries(cli_demo llm log) + target_link_libraries(tokenizer_demo llm log) + target_link_libraries(embedding_demo llm log) + target_link_libraries(store_demo llm log) + target_link_libraries(document_demo llm log) + target_link_libraries(memory_demo llm log) + target_link_libraries(knowledge_demo llm log) + target_link_libraries(pipeline_demo llm log) else() - target_link_libraries(web_demo llm pthread) + target_link_libraries(cli_demo llm) + target_link_libraries(tokenizer_demo llm) + target_link_libraries(embedding_demo llm) + target_link_libraries(store_demo llm) + target_link_libraries(document_demo llm) + target_link_libraries(memory_demo llm) + target_link_libraries(knowledge_demo llm) + target_link_libraries(pipeline_demo llm) + # web demo + add_executable(web_demo ${CMAKE_CURRENT_LIST_DIR}/demo/web_demo.cpp) + if (MSVC) + target_link_libraries(web_demo llm pthreadVC2) + add_custom_command( + TARGET cli_demo POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${CMAKE_SOURCE_DIR}/build/MNN/Release/MNN.dll + $ + ) + else() + target_link_libraries(web_demo llm pthread) + endif() endif() -endif() - +else() + set(LLM_LIBS "") + list(APPEND LLM_LIBS $) + list(APPEND LLM_LIBS $) + if (LLM_SUPPORT_VISION) + list(APPEND LLM_LIBS $) + endif() + add_custom_command(TARGET llm POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${LLM_LIBS} + ${CMAKE_CURRENT_LIST_DIR}/android/app/src/main/jni/libs) endif() \ No newline at end of file diff --git a/android/.idea/compiler.xml b/android/.idea/compiler.xml index 61a9130c..b589d56e 100644 --- a/android/.idea/compiler.xml +++ b/android/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 7c3b6b9d..0e713271 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -12,7 +12,7 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { - arguments "-DBUILD_JNI=TRUE", "-DANDROID_STL=c++_shared" + arguments "-DBUILD_JNI=TRUE", "-DANDROID_STL=c++_shared", "-DLLM_SUPPORT_VISION=TRUE" abiFilters 'arm64-v8a' } } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8dab0a7b..3f218587 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -22,11 +22,6 @@ android:screenOrientation= "portrait" android:theme="@style/AppTheme.Trans"> - - diff --git a/android/app/src/main/java/com/mnn/llm/Chat.java b/android/app/src/main/java/com/mnn/llm/Chat.java index 530860e8..5491b849 100644 --- a/android/app/src/main/java/com/mnn/llm/Chat.java +++ b/android/app/src/main/java/com/mnn/llm/Chat.java @@ -4,8 +4,6 @@ public class Chat implements Serializable { public native boolean Init(String modelDir); - public native boolean Ready(); - public native float Progress(); public native String Submit(String input); public native byte[] Response(); public native void Done(); diff --git a/android/app/src/main/java/com/mnn/llm/Conversation.java b/android/app/src/main/java/com/mnn/llm/Conversation.java index 8a017513..45c7a49d 100644 --- a/android/app/src/main/java/com/mnn/llm/Conversation.java +++ b/android/app/src/main/java/com/mnn/llm/Conversation.java @@ -1,194 +1,302 @@ package com.mnn.llm; +import android.app.Notification; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; +import android.provider.MediaStore; import android.view.Menu; -import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; +import android.view.LayoutInflater; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; +import android.content.Intent; +import android.content.Context; +import android.widget.TextView; +import android.widget.ImageView; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.mnn.llm.recylcerchat.ChatData; -import com.mnn.llm.recylcerchat.ConversationRecyclerView; - +import java.io.FileNotFoundException; +import java.io.InputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; public class Conversation extends BaseActivity { private RecyclerView mRecyclerView; private ConversationRecyclerView mAdapter; + private ImageView imagePreview; + private Uri imageUri; private EditText text; private Button send; private DateFormat mDateFormat; private Chat mChat; - private boolean mHistory = true; + private String selectedImagePath; + private final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_conversation); + mChat = (Chat) getIntent().getSerializableExtra("chat"); mDateFormat = new SimpleDateFormat("hh:mm aa"); + setupToolbarWithUpNav(R.id.toolbar, "mnn-llm", R.drawable.ic_action_back); - mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); - mRecyclerView.setHasFixedSize(true); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mAdapter = new ConversationRecyclerView(this, initData()); mRecyclerView.setAdapter(mAdapter); - mRecyclerView.postDelayed(new Runnable() { - @Override - public void run() { - mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount() - 1); + + text = findViewById(R.id.et_message); + text.setOnClickListener(view -> smoothScrollToBottom()); + + findViewById(R.id.bt_select_image).setOnClickListener(view -> selectImage()); + send = findViewById(R.id.bt_send); + send.setOnClickListener(view -> handleSendClick()); + imagePreview = findViewById(R.id.image_preview); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == 1 && resultCode == RESULT_OK && data != null) { + imageUri = data.getData(); + selectedImagePath = getPathFromUri(imageUri); + imagePreview.setImageURI(imageUri); + imagePreview.setVisibility(View.VISIBLE); + } + } + + private String getPathFromUri(Uri uri) { + String[] projection = {MediaStore.Images.Media.DATA}; + Cursor cursor = getContentResolver().query(uri, projection, null, null, null); + if (cursor != null) { + int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + cursor.moveToFirst(); + String path = cursor.getString(column_index); + cursor.close(); + return path; + } + return null; + } + + private void selectImage() { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + intent.setType("image/*"); + startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1); + } + + private void smoothScrollToBottom() { + mRecyclerView.post(() -> { + int position = mAdapter.getItemCount() - 1; + mRecyclerView.scrollToPosition(position); + // 通过延迟来确保最后一个 Item 被完全展示 + mRecyclerView.post(() -> mRecyclerView.scrollToPosition(position)); + }); + } + + private void handleSendClick() { + if (imagePreview.getVisibility() == View.VISIBLE) { + imagePreview.setVisibility(View.GONE); + } else { + imageUri = null; + } + String inputString = text.getText().toString().trim(); + if (!inputString.isEmpty() || selectedImagePath != null) { + String combinedInput = inputString; + if (selectedImagePath != null) { + combinedInput = String.format("%s%s", selectedImagePath, combinedInput); } - }, 1000); - - text = (EditText) findViewById(R.id.et_message); - text.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - mRecyclerView.postDelayed(new Runnable() { - @Override - public void run() { - mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount() - 1); - } - }, 500); + addUserMessage(inputString, imageUri); + text.setText(""); + selectedImagePath = null; + + if (inputString.equals("/reset")) { + mChat.Reset(); + } else { + addBotResponsePlaceholder(); + String finalCombinedInput = combinedInput; + executor.execute(() -> handleBotResponse(finalCombinedInput)); } - }); - send = (Button) findViewById(R.id.bt_send); - send.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - String inputString = text.getText().toString(); - if (!inputString.equals("")){ - ChatData item = new ChatData(); - item.setTime(mDateFormat.format(new Date())); - item.setType("2"); - item.setText(inputString); - mAdapter.addItem(item); - mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount() -1); - text.setText(""); - - if (inputString.equals("/reset")) { - mChat.Reset(); - } else { - // response - ChatData response = new ChatData(); - response.setTime(mDateFormat.format(new Date())); - response.setType("1"); - response.setText(""); - mAdapter.addItem(response); - mRecyclerView.smoothScrollToPosition(mRecyclerView.getAdapter().getItemCount() -1); - Handler responseHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - ChatData response = new ChatData(); - response.setTime(mDateFormat.format(new Date())); - response.setType("1"); - response.setText(msg.obj.toString()); - mAdapter.updateRecentItem(response); - } - }; - ResponseThread responseT = new ResponseThread(mChat, inputString, responseHandler, mHistory); - responseT.start(); - } + } + } + + private void addUserMessage(String message, Uri image) { + ChatData userData = new ChatData(mDateFormat.format(new Date()), "2", message); + userData.setImageUri(image); + mAdapter.addItem(userData); + smoothScrollToBottom(); + } + + private void addBotResponsePlaceholder() { + mAdapter.addItem(new ChatData(mDateFormat.format(new Date()), "1", "")); + smoothScrollToBottom(); + } + + private void handleBotResponse(String input) { + mChat.Submit(input); + String lastResponse = ""; + while (!lastResponse.contains("")) { + try { + Thread.sleep(50); + String response = new String(mChat.Response()); + if (!response.equals(lastResponse)) { + lastResponse = response; + runOnUiThread(() -> updateBotResponse(response.replaceFirst("", ""))); } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); } - }); + } + mChat.Done(); } - public List initData(){ - List data = new ArrayList<>(); - // set head time: year-month-day - ChatData head = new ChatData(); - DateFormat headFormat = new SimpleDateFormat("yyyy-MM-dd"); - String headDate = headFormat.format(new Date()); - head.setTime(""); - head.setText(headDate); - head.setType("0"); - data.add(head); - // set first item - ChatData item = new ChatData(); - String itemDate = mDateFormat.format(new Date()); - item.setType("1"); - item.setTime(itemDate); - item.setText("你好,我是mnn-llm,欢迎向我提问。"); - data.add(item); + private void updateBotResponse(String responseText) { + mAdapter.updateRecentItem(new ChatData(mDateFormat.format(new Date()), "1", responseText)); + } + public List initData() { + List data = new ArrayList<>(); + data.add(new ChatData(new SimpleDateFormat("yyyy-MM-dd").format(new Date()), "0", "")); + data.add(new ChatData(mDateFormat.format(new Date()), "1", "你好,我是mnn-llm,欢迎向我提问。")); return data; } @Override public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.menu_userphoto, menu); + getMenuInflater().inflate(R.menu.menu_userphoto, menu); return true; } @Override - public boolean onOptionsItemSelected(MenuItem item) { - /* - if (mHistory) { - Toast.makeText(getBaseContext(), "关闭上下文", Toast.LENGTH_SHORT).show(); - } else { - Toast.makeText(getBaseContext(), "打开上下文", Toast.LENGTH_SHORT).show(); - } - mHistory = !mHistory; - */ + public boolean onOptionsItemSelected(@NonNull MenuItem item) { Toast.makeText(getBaseContext(), "清空记忆", Toast.LENGTH_SHORT).show(); mChat.Reset(); return true; } -} -class ResponseThread extends Thread { - private String mInput; - private Handler mHandler; - private Chat mChat; - private boolean mHistory; + @Override + protected void onDestroy() { + super.onDestroy(); + executor.shutdownNow(); + } + + private static class ChatData { + private String time, type, text; + private Uri imageUri; + + public ChatData(String time, String type, String text) { + this.time = time; + this.type = type; + this.text = text; + } - ResponseThread(Chat chat, String input, Handler handler, boolean history) { - mChat = chat; - mInput = input; - mHandler = handler; - mHistory = history; + public String getTime() { return time; } + public String getType() { return type; } + public String getText() { return text; } + public Uri getImageUri() { return imageUri; } + public void setImageUri(Uri image) { imageUri = image; } } - public void run() { - super.run(); - mChat.Submit(mInput); - String last_response = ""; - System.out.println("[MNN_DEBUG] start response\n"); - while (!last_response.contains("")) { - try { - Thread.sleep(50); - } catch (Exception e) {} - String response = new String(mChat.Response()); - if (response.equals(last_response)) { - continue; + private static class ConversationRecyclerView extends RecyclerView.Adapter { + private final List items; + private final Context mContext; + + private static final int DATE = 0, YOU = 1, ME = 2; + + public ConversationRecyclerView(Context context, List items) { + this.mContext = context; + this.items = items; + } + + @Override + public int getItemCount() { return items.size(); } + + @Override + public int getItemViewType(int position) { + switch (items.get(position).getType()) { + case "0": return DATE; + case "1": return YOU; + case "2": return ME; + default: return -1; + } + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + View view; + switch (viewType) { + case DATE: view = inflater.inflate(R.layout.layout_holder_date, parent, false); return new ViewHolder(view, true); + case YOU: view = inflater.inflate(R.layout.layout_holder_you, parent, false); return new ViewHolder(view, false); + case ME: default: view = inflater.inflate(R.layout.layout_holder_me, parent, false); return new ViewHolder(view, false); + } + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + ViewHolder viewHolder = (ViewHolder) holder; + ChatData chatData = items.get(position); + viewHolder.bind(chatData); + if (viewHolder.imageView == null) { + return; + } + if (chatData.getImageUri() != null) { + viewHolder.imageView.setVisibility(View.VISIBLE); + viewHolder.imageView.setImageURI(chatData.getImageUri()); } else { - last_response = response; + viewHolder.imageView.setVisibility(View.GONE); } - Message msg = new Message(); - System.out.println("[MNN_DEBUG] " + response); - msg.obj = response.replaceFirst("", ""); - mHandler.sendMessage(msg); } - System.out.println("[MNN_DEBUG] response end\n"); - mChat.Done(); - if (!mHistory) { - mChat.Reset(); + + public void addItem(ChatData item) { + items.add(item); + notifyItemInserted(items.size() - 1); + } + + public void updateRecentItem(ChatData item) { + items.set(items.size() - 1, item); + notifyItemChanged(items.size() - 1); + } + + private static class ViewHolder extends RecyclerView.ViewHolder { + public ImageView imageView; + private TextView time, chatText; + + ViewHolder(View view, boolean isDate) { + super(view); + if (isDate) { + time = view.findViewById(R.id.tv_date); + } else { + time = view.findViewById(R.id.tv_time); + chatText = view.findViewById(R.id.tv_chat_text); + imageView = view.findViewById(R.id.tv_chat_image); + } + } + + void bind(ChatData data) { + if (chatText != null) { + chatText.setText(data.getText()); + } + if (time != null) { + time.setText(data.getTime()); + } + } } } } \ No newline at end of file diff --git a/android/app/src/main/java/com/mnn/llm/DownloadModel.java b/android/app/src/main/java/com/mnn/llm/DownloadModel.java deleted file mode 100644 index e73bf1b3..00000000 --- a/android/app/src/main/java/com/mnn/llm/DownloadModel.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.mnn.llm; - -import android.app.AlertDialog; -import android.content.DialogInterface; -import android.graphics.Color; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import com.mnn.llm.recyclerdownload.DownloadRecyclerView; - -public class DownloadModel extends BaseActivity { - - private RecyclerView mRecyclerView; - private DownloadRecyclerView mAdapter; - private Button mDownloadAll; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_download); - mRecyclerView = (RecyclerView) findViewById(R.id.download_recycler); - mRecyclerView.setHasFixedSize(true); - mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - mDownloadAll = (Button)findViewById(R.id.download_all); - // init Data - // String[] modelArray = this.getResources().getStringArray(R.array.model_list); - String[] modelArray = {"config.json"}; - mAdapter = new DownloadRecyclerView(this, modelArray); - mRecyclerView.setAdapter(mAdapter); - } - public void downloadAll(View view) { - mDownloadAll.setClickable(false); - mDownloadAll.setBackgroundColor(Color.parseColor("#2454e4")); - mDownloadAll.setText("模型下载中 ..."); - mAdapter.onDownload(mDownloadAll); - } - public void clearAll(View view) { - new AlertDialog.Builder(this) - .setTitle("清空确认") - .setMessage("确认删除所有已下载模型?") - .setPositiveButton("确认", - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mAdapter.onClear(); - } - }).show(); - } -} \ No newline at end of file diff --git a/android/app/src/main/java/com/mnn/llm/MainActivity.java b/android/app/src/main/java/com/mnn/llm/MainActivity.java index d1f6276e..7afafdcc 100644 --- a/android/app/src/main/java/com/mnn/llm/MainActivity.java +++ b/android/app/src/main/java/com/mnn/llm/MainActivity.java @@ -2,55 +2,41 @@ import androidx.appcompat.app.AppCompatActivity; +import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; -import android.widget.ProgressBar; -import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; -import android.widget.Toast; import java.io.File; import java.io.IOException; import java.util.ArrayList; - public class MainActivity extends AppCompatActivity { private Chat mChat; private Intent mIntent; private Button mLoadButton; private TextView mModelInfo; - private RelativeLayout mProcessView; - private Handler mProcessHandler; - private ProgressBar mProcessBar; - private TextView mProcessName; - private TextView mProcessPercent; private Spinner mSpinnerModels; - // resource files - private String mSearchPath = "/data/local/tmp/mnn-llm/"; + private final String mSearchPath = "/data/local/tmp/mnn-llm/"; private String mModelName = "qwen-1.8b-int4"; - private String mModelDir = mSearchPath + mModelName; // default dir - private boolean mModelReady = true; + private String mModelDir = mSearchPath + mModelName; + + @SuppressLint("HandlerLeak") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mIntent = new Intent(this, Conversation.class); - mModelInfo = (TextView)findViewById(R.id.model_info); - mLoadButton = (Button)findViewById(R.id.load_button); - mProcessView = (RelativeLayout)findViewById(R.id.process_view); - mProcessBar = (ProgressBar)findViewById(R.id.process_bar); - mProcessName = (TextView)findViewById(R.id.process_name); - mProcessPercent = (TextView)findViewById(R.id.process_percent); - mSpinnerModels = (Spinner) findViewById(R.id.spinner_models); - // default using assert file + mModelInfo = findViewById(R.id.model_info); + mLoadButton = findViewById(R.id.load_button); + mSpinnerModels = findViewById(R.id.spinner_models); + mModelDir = this.getCacheDir() + "/" + mModelName; populateFoldersSpinner(); mSpinnerModels.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -58,76 +44,58 @@ protected void onCreate(Bundle savedInstanceState) { public void onItemSelected(AdapterView parent, View view, int position, long id) { if (position > 0) { mModelName = (String) parent.getItemAtPosition(position); - mModelInfo.setText("选择模型:" + mModelName); + mModelInfo.setText(String.format("选择模型:%s", mModelName)); mModelInfo.setVisibility(View.VISIBLE); mModelDir = mSearchPath + mModelName + "/config.json"; } } @Override - public void onNothingSelected(AdapterView parent) { - } + public void onNothingSelected(AdapterView parent) {} }); - mProcessHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - int progress = msg.arg1; - mProcessBar.setProgress((int)progress); - mProcessPercent.setText(" " + progress + "%"); - if (progress >= 100) { - mLoadButton.setClickable(true); - mLoadButton.setBackgroundColor(Color.parseColor("#3e3ddf")); - mLoadButton.setText("加载已完成"); - mIntent.putExtra("chat", mChat); - startActivity(mIntent); - } - } - }; } - @Override - protected void onResume() { - super.onResume(); + public void loadModel(View view) { + onCheckModels(); + mLoadButton.setClickable(false); + mLoadButton.setBackgroundColor(Color.parseColor("#2454e4")); + mLoadButton.setText("模型加载中 ..."); + + new Thread(() -> { + mChat = new Chat(); + mChat.Init(mModelDir); + runOnUiThread(() -> { + mIntent.putExtra("chat", mChat); + startActivity(mIntent); + }); + }).start(); } - public void onCheckModels() { - mModelReady = checkModelsReady(); - // try copy from assert file - if (!mModelReady) { + private void onCheckModels() { + boolean modelReady = checkModelsReady(); + if (!modelReady) { try { mModelDir = Common.copyAssetResource2File(this, mModelName); - } catch (IOException e) { - throw new RuntimeException(e); - } catch (InterruptedException e) { + modelReady = checkModelsReady(); + } catch (IOException | InterruptedException e) { throw new RuntimeException(e); } - mModelReady = checkModelsReady(); } - // download models - if (!mModelReady) { - mModelInfo.setVisibility(View.VISIBLE); - mModelInfo.setText("请下载模型文件"); - mLoadButton.setText("下载模型"); - } else { + if (!modelReady) { mModelInfo.setVisibility(View.VISIBLE); - mModelInfo.setText(mModelName + "模型文件就绪,模型加载中"); + mModelInfo.setText(String.format("%s模型文件就绪,模型加载中", mModelName)); mLoadButton.setText("加载模型"); } } - public boolean checkModelsReady() { - System.out.println("### Check Models!"); + + private boolean checkModelsReady() { File dir = new File(mModelDir); - if (!dir.exists()) { - return false; - } - return true; + return dir.exists(); } private ArrayList getFoldersList(String path) { File directory = new File(path); File[] files = directory.listFiles(); ArrayList foldersList = new ArrayList<>(); - if (files != null) { for (File file : files) { if (file.isDirectory()) { @@ -137,78 +105,11 @@ private ArrayList getFoldersList(String path) { } return foldersList; } + private void populateFoldersSpinner() { ArrayList folders = getFoldersList("/data/local/tmp/mnn-llm"); folders.add(0, getString(R.string.spinner_prompt)); ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, folders); mSpinnerModels.setAdapter(adapter); } - public void loadModel(View view) { - onCheckModels(); - if (!mModelReady) { - startActivity(new Intent(this, DownloadModel.class)); - return; - } - mLoadButton.setClickable(false); - mLoadButton.setBackgroundColor(Color.parseColor("#2454e4")); - mLoadButton.setText("模型加载中 ..."); - mProcessView.setVisibility(View.VISIBLE); - mChat = new Chat(); - Handler handler = new Handler() { - @Override - public void handleMessage(Message msg) { - mIntent.putExtra("chat", mChat); - startActivity(mIntent); - } - }; - // copy models - LoadThread loadT = new LoadThread(mChat, handler, mModelDir); - loadT.start(); - ProgressThread progressT = new ProgressThread(mChat, mProcessHandler); - progressT.start(); - } -} - -class LoadThread extends Thread { - private Chat mChat; - private Handler mHandler; - private String mModelDir; - LoadThread(Chat chat, Handler handler, String modelDir) { - mChat = chat; - mHandler = handler; - mModelDir = modelDir; - } - public void run() { - super.run(); - mChat.Init(mModelDir); - mHandler.sendMessage(new Message()); - } -} - -class ProgressThread extends Thread { - private Handler mHandler; - private Chat mChat; - - ProgressThread(Chat chat, Handler handler) { - mChat = chat; - mHandler = handler; - } - - public void run() { - super.run(); - float progress = 0; - while (progress < 100) { - try { - Thread.sleep(50); - } catch (Exception e) {} - float new_progress = mChat.Progress(); - if (Math.abs(new_progress - progress) < 0.01) { - continue; - } - progress = new_progress; - Message msg = new Message(); - msg.arg1 = (int)progress; - mHandler.sendMessage(msg); - } - } } \ No newline at end of file diff --git a/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadData.java b/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadData.java deleted file mode 100644 index 13822f85..00000000 --- a/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadData.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.mnn.llm.recyclerdownload; - -import android.os.Handler; -import android.os.Message; -import android.util.Log; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.Response; - -public class DownloadData { - Handler mHandler; - String mDir; - String mName; - int mIdx; - int mProcess; - int mDownload; - int mTotal; - int mSuccess; - - public DownloadData(Handler handler, String dir, String name, int idx, int total) { - mHandler = handler; - mDir = dir; - mName = name; - mIdx = idx; - mTotal = total; - mProcess = 0; - mDownload = 0; - mSuccess = 0; - } - - public String getName() { - return mName; - } - - public void setName(String name) { - this.mName = name; - } - - public int getIdx() { - return mIdx; - } - - public void setIdx(int idx) { - this.mIdx = idx; - } - - public int getProcess() { - return mProcess; - } - - public void setProcess(int process) { - this.mProcess = process; - } - - public int getDownload() { - return mDownload; - } - - public void setDownload(int process) { - this.mDownload = process; - } - - public int getTotal() { - return mTotal; - } - - public void setTotal(int process) { - this.mTotal = process; - } - - public int getSuccess() { - return mSuccess; - } - - public void setSuccess(int sucess) { this.mSuccess = sucess; } - - public void onClear() { - File file = new File(mDir, mName); - if (file.exists()) { - file.delete(); - } - } - public void onDownload(int nextDownloadIdx) { - // check has download - File file = new File(mDir, mName); - if (file.exists()) { - if (mTotal == (int) file.length()) { - mProcess = 100; - mDownload = mTotal; - mSuccess = 1; - Message msg = new Message(); - msg.what = nextDownloadIdx; - mHandler.sendMessage(msg); - return; - } - } - final String url = "https://huggingface.co/zhaode/llm-mnn/resolve/main/" + mName; - final long startTime = System.currentTimeMillis(); - OkHttpClient okHttpClient = new OkHttpClient(); - - Request request = new Request.Builder().url(url).build(); - okHttpClient.newCall(request).enqueue(new Callback() { - @Override - public void onFailure(Call call, IOException e) { - // 下载失败 - e.printStackTrace(); - Log.i("DOWNLOAD","download failed"); - mSuccess = -1; - if (nextDownloadIdx >= 0) { - Message msg = new Message(); - msg.what = nextDownloadIdx; - mHandler.sendMessage(msg); - } - } - @Override - public void onResponse(Call call, Response response) throws IOException { - InputStream is = null; - byte[] buf = new byte[2048]; - int len = 0; - FileOutputStream fos = null; - try { - is = response.body().byteStream(); - long total = response.body().contentLength(); - File file = new File(mDir, mName); - fos = new FileOutputStream(file); - long sum = 0; - while ((len = is.read(buf)) != -1) { - fos.write(buf, 0, len); - sum += len; - int progress = (int) (sum * 1.0f / total * 100); - mProcess = progress; - mDownload = (int)sum; - mTotal = (int)total; - Message msg = new Message(); - msg.what = -1; - mHandler.sendMessage(msg); - } - fos.flush(); - // 下载完成 - // listener.onDownloadSuccess(); - Log.i("DOWNLOAD","download success"); - mSuccess = 1; - if (nextDownloadIdx >= 0) { - Message msg = new Message(); - msg.what = nextDownloadIdx; - mHandler.sendMessage(msg); - } - } catch (Exception e) { - e.printStackTrace(); - // listener.onDownloadFailed(); - Log.i("DOWNLOAD","download failed"); - mSuccess = -1; - } finally { - try { - if (is != null) - is.close(); - } catch (IOException e) { - mSuccess = -1; - } - try { - if (fos != null) - fos.close(); - } catch (IOException e) { - mSuccess = -1; - } - } - } - }); - } -} diff --git a/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadHolder.java b/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadHolder.java deleted file mode 100644 index 92df8e4c..00000000 --- a/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadHolder.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.mnn.llm.recyclerdownload; - -import android.view.View; -import android.widget.Button; -import android.widget.ProgressBar; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mnn.llm.R; - -import org.w3c.dom.Text; - -import java.util.stream.StreamSupport; - -public class DownloadHolder extends RecyclerView.ViewHolder { - - private TextView mModel; - private ProgressBar mProcess; - private TextView mPercent; - private TextView mDownload; - private Button mButton; - - public DownloadHolder(View v) { - super(v); - mModel = v.findViewById(R.id.download_model); - mProcess = v.findViewById(R.id.download_progress_bar); - mPercent = v.findViewById(R.id.download_percent); - mDownload = v.findViewById(R.id.download_size); - mButton = v.findViewById(R.id.download_again); - } - - public TextView getName() { - return mModel; - } - public void setName(TextView date) { - this.mModel = date; - } - - public ProgressBar getProcessBar() { - return mProcess; - } - public void setProcessBar(ProgressBar date) { - this.mProcess = date; - } - - public TextView getPercent() { - return mPercent; - } - public void setPercent(TextView date) { - this.mPercent = date; - } - - public TextView getDownload() { - return mDownload; - } - public void setDownload(TextView date) { - this.mDownload = date; - } - - public Button getButton() { return mButton; } -} diff --git a/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadRecyclerView.java b/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadRecyclerView.java deleted file mode 100644 index 7d077187..00000000 --- a/android/app/src/main/java/com/mnn/llm/recyclerdownload/DownloadRecyclerView.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.mnn.llm.recyclerdownload; - -import android.content.Context; -import android.graphics.Color; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.Toast; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mnn.llm.R; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class DownloadRecyclerView extends RecyclerView.Adapter { - private List mItems; - private Context mContext; - private Handler mHandler; - private Button mButton; - - public DownloadRecyclerView(Context context, String[] models) { - this.mContext = context; - this.mItems = new ArrayList(); - final String modelDir = context.getCacheDir().toString() + "/model"; - File modelPath = new File(modelDir); - if (!modelPath.exists()) { - modelPath.mkdirs(); - } - mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - notifyDataSetChanged(); - if (msg.what >= 0 && msg.what < mItems.size()) { - mItems.get(msg.what).onDownload(msg.what + 1); - } - if (msg.what >= 0 && msg.what == mItems.size()) { - mButton.setText("下载结束"); - mButton.setBackgroundColor(Color.parseColor("#2454e4")); - } - } - }; - for (int i = 0; i < models.length; i++) { - this.mItems.add(new DownloadData(mHandler, modelDir, models[i], i, 25751300)); - } - } - - // Return the size of your dataset (invoked by the layout manager) - @Override - public int getItemCount() { - return this.mItems.size(); - } - - @Override - public int getItemViewType(int position) { - return mItems.get(position).getIdx(); - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { - LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); - View v = inflater.inflate(R.layout.download_item, viewGroup, false); - RecyclerView.ViewHolder viewHolder = new DownloadHolder(v); - return viewHolder; - } - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { - DownloadHolder vh = (DownloadHolder) viewHolder; - DownloadData item = mItems.get(position); - vh.getName().setText(item.getName()); - if (item.getSuccess() >= 0) { - vh.getPercent().setText(item.getProcess() + "%"); - vh.getProcessBar().setProgress(item.getProcess()); - float download = (float) (item.getDownload() / 1024.0 / 1024.0); - float total = (float) (item.getTotal() / 1024.0 / 1024.0); - vh.getDownload().setText(String.format("%.2f M / %.2f M", download, total)); - } else { - vh.getDownload().setText("下载失败, 请点击左侧logo重新下载"); - } - vh.getButton().setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - vh.getDownload().setText("尝试重新下载"); - mItems.get(position).setSuccess(0); - mItems.get(position).onDownload(-1); - } - }); - } - - public void onDownload(View view) { - mButton = (Button)view; - // download item 0 and next download 1 - mItems.get(0).onDownload(1); - } - - public void onClear() { - for (DownloadData item : mItems) { - item.onClear(); - } - Toast.makeText(this.mContext, "已清空所有模型文件", Toast.LENGTH_SHORT).show(); - } -} diff --git a/android/app/src/main/java/com/mnn/llm/recylcerchat/ChatData.java b/android/app/src/main/java/com/mnn/llm/recylcerchat/ChatData.java deleted file mode 100644 index 6048f2dd..00000000 --- a/android/app/src/main/java/com/mnn/llm/recylcerchat/ChatData.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.mnn.llm.recylcerchat; - -public class ChatData { - String type, text, time; - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getTime() { - return time; - } - - public void setTime(String time) { - this.time = time; - } -} diff --git a/android/app/src/main/java/com/mnn/llm/recylcerchat/ConversationRecyclerView.java b/android/app/src/main/java/com/mnn/llm/recylcerchat/ConversationRecyclerView.java deleted file mode 100644 index 580bb7c9..00000000 --- a/android/app/src/main/java/com/mnn/llm/recylcerchat/ConversationRecyclerView.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.mnn.llm.recylcerchat; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mnn.llm.R; - -import java.util.List; - -public class ConversationRecyclerView extends RecyclerView.Adapter { - - // The items to display in your RecyclerView - private List items; - private Context mContext; - - private final int DATE = 0, YOU = 1, ME = 2; - - // Provide a suitable constructor (depends on the kind of dataset) - public ConversationRecyclerView(Context context, List items) { - this.mContext = context; - this.items = items; - } - - // Return the size of your dataset (invoked by the layout manager) - @Override - public int getItemCount() { - return this.items.size(); - } - - @Override - public int getItemViewType(int position) { - //More to come - if (items.get(position).getType().equals("0")) { - return DATE; - } else if (items.get(position).getType().equals("1")) { - return YOU; - }else if (items.get(position).getType().equals("2")) { - return ME; - } - return -1; - } - - @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { - RecyclerView.ViewHolder viewHolder; - LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); - - switch (viewType) { - case DATE: - View v1 = inflater.inflate(R.layout.layout_holder_date, viewGroup, false); - viewHolder = new HolderDate(v1); - break; - case YOU: - View v2 = inflater.inflate(R.layout.layout_holder_you, viewGroup, false); - viewHolder = new HolderYou(v2); - break; - default: - View v = inflater.inflate(R.layout.layout_holder_me, viewGroup, false); - viewHolder = new HolderMe(v); - break; - } - return viewHolder; - } - public void addItems(List item) { - items.addAll(item); - notifyDataSetChanged(); - } - public void addItem(ChatData item) { - items.add(item); - notifyDataSetChanged(); - } - public void updateRecentItem(ChatData item) { - items.set(items.size() - 1, item); - notifyDataSetChanged(); - } - @Override - public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { - switch (viewHolder.getItemViewType()) { - case DATE: - HolderDate vh1 = (HolderDate) viewHolder; - configureViewHolder1(vh1, position); - break; - case YOU: - HolderYou vh2 = (HolderYou) viewHolder; - configureViewHolder2(vh2, position); - break; - default: - HolderMe vh = (HolderMe) viewHolder; - configureViewHolder3(vh, position); - break; - } - } - - private void configureViewHolder3(HolderMe vh1, int position) { - vh1.getTime().setText(items.get(position).getTime()); - vh1.getChatText().setText(items.get(position).getText()); - } - - private void configureViewHolder2(HolderYou vh1, int position) { - vh1.getChatText().setText(items.get(position).getText()); - } - private void configureViewHolder1(HolderDate vh1, int position) { - vh1.getDate().setText(items.get(position).getText()); - } - -} diff --git a/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderDate.java b/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderDate.java deleted file mode 100644 index e57cd3a4..00000000 --- a/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderDate.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mnn.llm.recylcerchat; - -import android.view.View; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mnn.llm.R; - -public class HolderDate extends RecyclerView.ViewHolder { - - private TextView date; - - public HolderDate(View v) { - super(v); - date = (TextView) v.findViewById(R.id.tv_date); - } - - public TextView getDate() { - return date; - } - - public void setDate(TextView date) { - this.date = date; - } -} diff --git a/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderMe.java b/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderMe.java deleted file mode 100644 index 1c6b8a11..00000000 --- a/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderMe.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.mnn.llm.recylcerchat; - -import android.view.View; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mnn.llm.R; - -public class HolderMe extends RecyclerView.ViewHolder { - - private TextView time, chatText; - - public HolderMe(View v) { - super(v); - time = (TextView) v.findViewById(R.id.tv_time); - chatText = (TextView) v.findViewById(R.id.tv_chat_text); - } - - public TextView getTime() { - return time; - } - - public void setTime(TextView time) { - this.time = time; - } - - public TextView getChatText() { - return chatText; - } - - public void setChatText(TextView chatText) { - this.chatText = chatText; - } -} diff --git a/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderYou.java b/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderYou.java deleted file mode 100644 index 44e56ebf..00000000 --- a/android/app/src/main/java/com/mnn/llm/recylcerchat/HolderYou.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mnn.llm.recylcerchat; - -import android.view.View; -import android.widget.TextView; - -import androidx.recyclerview.widget.RecyclerView; - -import com.mnn.llm.R; - -public class HolderYou extends RecyclerView.ViewHolder { - - private TextView chatText; - - public HolderYou(View v) { - super(v); - chatText = (TextView) v.findViewById(R.id.tv_chat_text); - } - - public TextView getChatText() { - return chatText; - } - - public void setChatText(TextView chatText) { - this.chatText = chatText; - } -} diff --git a/android/app/src/main/jni/llm_mnn_jni.cpp b/android/app/src/main/jni/llm_mnn_jni.cpp index 957dc15b..adc68340 100644 --- a/android/app/src/main/jni/llm_mnn_jni.cpp +++ b/android/app/src/main/jni/llm_mnn_jni.cpp @@ -40,11 +40,6 @@ JNIEXPORT jboolean JNICALL Java_com_mnn_llm_Chat_Ready(JNIEnv* env, jobject thiz return JNI_FALSE; } -JNIEXPORT jfloat JNICALL Java_com_mnn_llm_Chat_Progress(JNIEnv* env, jobject thiz) { - if (!llm.get()) return jfloat(0); - return jfloat(llm->load_progress_); -} - JNIEXPORT jstring JNICALL Java_com_mnn_llm_Chat_Submit(JNIEnv* env, jobject thiz, jstring inputStr) { if (!llm.get()) { return env->NewStringUTF("Failed, Chat is not ready!"); @@ -71,7 +66,7 @@ JNIEXPORT void JNICALL Java_com_mnn_llm_Chat_Done(JNIEnv* env, jobject thiz) { } JNIEXPORT void JNICALL Java_com_mnn_llm_Chat_Reset(JNIEnv* env, jobject thiz) { - // llm->reset(); + llm->reset(); } } // extern "C" \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_image.xml b/android/app/src/main/res/drawable/ic_image.xml new file mode 100644 index 00000000..d710d271 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_image.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/android/app/src/main/res/layout/activity_download.xml b/android/app/src/main/res/layout/activity_download.xml deleted file mode 100644 index 0b7e777c..00000000 --- a/android/app/src/main/res/layout/activity_download.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/layout/content_conversation.xml b/android/app/src/main/res/layout/content_conversation.xml index ee718c7f..19c0f19b 100644 --- a/android/app/src/main/res/layout/content_conversation.xml +++ b/android/app/src/main/res/layout/content_conversation.xml @@ -4,6 +4,17 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + + + + + - - - - - - - - - - - - - \ No newline at end of file diff --git a/android/app/src/main/res/layout/layout_holder_me.xml b/android/app/src/main/res/layout/layout_holder_me.xml index 3794c7e2..dfa5a235 100644 --- a/android/app/src/main/res/layout/layout_holder_me.xml +++ b/android/app/src/main/res/layout/layout_holder_me.xml @@ -5,7 +5,16 @@ android:gravity="center_vertical" android:padding="@dimen/space10" android:layout_marginLeft="@dimen/spaceLR"> + CO6Dpr>zSlgj#MD334yuI9i1)hZ4(0x9gQK1TEgqCk{mM|U-JH4Et7hRWv&^@1pOa@1q}} zAEDo(-=W{5KcGLNKcPRPzhD?9!K9cBlVcT_2Ge3X%!pYqALhsEFajen3gfVTSbuB) zHWuy$+_wisK2Eyb2$=V2?c z^RWxDi?BbI_wT?D|RP#7j`#xKlT8&9eWge5_<}J6?+YP9eV?N6MGB$ z0NagyjD3O~#JNrp>COU6j1N*X0il4i*?$#lsqNt>iYGGDS-vP806 zvO;pH)qONj6Dtk=!BKD!E5;ujD?-!;(iNk4YYv?36qs*(G^J@~Y$u z$(NF^BwtIuk$fxpPV&9v2g#3;pCms^4oUu!{4F^m#iVknMQWAWq;_ew)FE|BUDBX5 zBn?YRX<9l&I#fDbI$AnLI#%+VbfWZ3X`{4BIz!qjoh9v%&X+EbE|xBlE|p#@y-s?) z^akl_=^E);>5bBxr0b;XrJJR9NViJwl-?!XCVfcyuyluXr}P==v(gu(yQHs6-;jPF z-7VcC{aE^mbgy)u^h@bi(yyi8NPmzXmLakVnOdfiRmu!9v&=4Y$!cUinO_!=4Ui3# z4U(NC8!Su9GP0~JC(FwUvQuOuWus)HWoO7H%g&Tdm(7s1$j+9v$vR{UWs78sWlLmB zWh-Up%Px>zA-i67lWe1GlWeo>R@qkBJ+gac56ZU59+EvJdtUa6>3$TLn<(J7XmtP^jQht^EYWX$t zYvtF;*T^@@H_7jiZ zKgfTP|0+K$|3m(#{I3c{g|b3bp{~$WXe)FT#tK`7y`s7zP!X&MRfH=d6|sr|6$2{< zRh(2YxFTJVsVGzot+>46s)}nXZm3vWv94lc#g>X&EAFVctK!~@2Pz(_*k18?#ZwhK zE1s)(v0_)nYZY%+yi@Uh#h!|fEA~}lDs=yR7g+ifL z=oAJ;mBOm1R=5-%gPEnk$7@-)g7^j%1n5<|} zG%MN^a}>)I%M~jW7bq@NtWsR6xKeSI;yT6kinWUMip`2GirW;oD|RS$DxOh1t9VZF zyy6ALi;9;NFDrH_URS)Qcwezsu}`sI@s;9h#W#xI6u&DDDGn?CR-#I!Ql-=>jY@~o zr;I3LN@~FHjpUSVQRn@5y zs+6jqs=q3)DyU9Y4N;w@8ljr4I!D!^>Qr^9=BVbX=BehZ7N{1g7O57imZ+AhE>>Np zx?FX&>KfGzs@1BSRO?imRGU@XRgbD3Q$4PFLiMETDb>@e9jcwG7gevQURAxR+N=6h zbx`%C>MPZEs_#`ltA0@(QXN)n)jG9aU8y#xjcSv+N^Mr#)DE>%?NWQyVRb|uQ{(D{ znou+9A?nlAr>jS*N2y1v$E(j&H>jtor>PgJ7pWJkm#CMjm#GDHxB6W5dFl()7phmO zuTo#FzD|9;dae2%^}Xu*)c30&P(P^NrhZ7hUH!QF3H1*33+fluFR5Qu?^hpCf2uyH z{!IP3`U~}!>TlKGsee-cto}uPNPR?oR3p(yH42SUW6@YO4vkae(RejcO-zGp;u=cB zYBI#ZR;^8I*H&vCTBp{ftMoqs?kh)}E>z ztsSEst36XYMLSnJPdi_`K)X=8NV{0OM7vbGOe<(tXfM`YrM+5vjrKI^!gu3G2N(K<%Q>Ns6e$LmtMe!Bj;0lI;@v~GxQgl?p6lx~vl3|+Hsnr^yo zhOSjNTQ^^~KzD`iO5Ihut994tuGL+qyIyyLZnbWWZk_IC-Cer7b@%8V);*%zse4BE ztnNA8OS)He@9N&ueXsjL_oMD7-OsvTbie9;)BUbHq&uwpTQAjX^jf`6Z_!)zHoZ^p z*9Y`LeXSnXvwBWHOg~&dLO)VJNSyWO^z-!#^b7Ti z^vm?i^%v_e(XY~9s=rKso&I|LJ^Fj~_v!D~KcIh5zfJ#;{$c$i`tABB^v~*_(?73& zMgOY)UHyCd_w^s>_v!cRztDf9|5pE_{&)SK`oAiX${m%@RX$(&a^J*v|+qqf?=}Z zOhbcVs$rU8x?!fF)iB#|j$w{ru3@2JkztuZFsv|~XSmRCk>OIqWrnK^R~xQ3++euT zaFb!9VUyt&!>xv`hC2=S8tyY}GdyH?)bN<$DZ|r-XARF8UNXFFc+K#-;cde^h7Sz8 z4IdjmF&r>_YWTwNrQut{cZQz~KO25G95Vc6_}hpYF{9jAVN@G6#!92XXf|4m)kcTW zZS)ue#-Op*SZ9nI6Gqy|7c>Ws;g?CcUZBWH1>` z7E`s!XY!l+n+BK$ng*FpG7UDRO&L?xlr!Z`Lro)06HF6LlT1yfX45p&bkj^zyJ?zQ;Syc^HQ>z-QnyQ+srd6F?bxu`B)%>aj zRozwRRxPhuQFUI`s;Wz?Zmzne>ei~;s&22kqiSo_omF>L-CcE0)dN+JR_&~Mrs~E>qhH1l-x40DV5Z1YTWt9h2W&D?J8G%qxtYhG?% zVZOw?%6zH$dh-qD)#f$kb>>ax&E_rUJI!~QpEEyie!={r`6ctq=3VAj%&(eXGrw+r z+q}no!2GHCp!r+#cjiOp!{$HCf0~b4Bo?(rV+mM-mXIZEiCAhab(W|lX2C6S3uQ@J z(w2-RYdO_&n&ouMc*_LKM9U=06w6f0*_N4><(3te^DHYZ=UXnYTxhw-a5X0WI19vYOSy;tV*lFYP8l_qt=)ex5ljrD`6$Al$EwJR^ED&b+ENyJ=r?k zI>I{AI?6iQdWLnfb*^=ub-s0hb)j{Ub+L7cb*XikRj_tj&$C`)U1h!0dad<3>-E<4 z)(zH;)~(h%t#?`Pw%%`j$ojDL1?!8}m#i;acUfPtzG{8f`kwWD>j&1|);-pJ*8SE4 z)~~JK*rYa@O>V2ODQrrc%BHqyY+9SnX0+LDUYpP6x8b(9Eny>UjE%Pqwxw+u+bOnF zZH=}jTeEGNZMtoSt;Ke>ZKkc&Hp_O7ZN6=RZJ}+Et=o34?IPR7wo7cQY}eSXwcTaA z+jfubUfX@P`)v={9<*(_Lyy_?Pc38+bgzrZ139k+VR_Ov~3Kixje zKHNUuKEXcQevZAv-f8c$&#}+7&$G|BFR(APFSVa%UunO@zRG@${aX7?_I37$><`-? zv2V9OYJbfBxcv$HllG_VPurih@3OyQf5-l={XP3W`+oZY`=|CV?BCdbvHxoS&3?pw zwAx->UG1oLR=cWes@>I|YHzi#+Fu>6j#nqDlhu56sybVptIk&!s!ypNRz0qIeD#Ft z8PzS-XIIaxZmphG-BvxfdS3OC>ZR2ytIw}qSG~S^L-oe$P1T#Lw^ZL;eM|MN)wfmO zS^YruW7UsWKT-Wc^^4UnRli*QTJ>Aid#XRI{;2w3^=H*bs*gGl2kO8a5{J|wbI2VP z4uwPGFgY9!r^Dq4J0gx+N1Y??pd9@i{T%}wIY-`crelhu-f@^IT=Wyo;=Sb%$=Q!si=NZn)&L(HGbBS}QbD2|cc012? zE_beQp66WYJl}b-^GfGx=Nji)=grProVPk}bKdE^*ZGKZyYo@!PUkbu51k)5KX!iN z-0R%u-0wW#{M32S`I+-8=a0_A&Oe-gx@0c7tHPylX5KaCN(GaIJQ&ajkXT z=(@?Z&b8jP!L`w~$#skCF4s2KL#~HiPr06U?QrdKz2bV+^_uG~*L$u{Tzg%IT!&qM zxc+qg<@(!o#C5a=sX=S78hMSj#$02mvDSENd^P@>Kux43R>Rb=H3Mq~)r_kdUo)X* zV$GzQGioN+oLMuaroQH^nx>kWHRsfH)GVx7RI|8dMa_9NH`d%#v#w@+&4!wdHJfTS z*KDb|x#pIdJ8JH$*TBQ;0e zh#PfdZi!p!mbv9_mD}Jpx=n6}+v#?>!|sT?)?Me0yD4`+cYpT)_ds{vU2sov*SpVh zH@K&|8{JLrX7@DrboUH*tGm;^$i3LT#C^W|0{4aPi`2!KX-rc{=uX0C_O5V z+N1GkJvxuxQ|U2yj2?@}bcYNtmiq;^PU$x zFM3|`yzJTKdByXp=QYn;p531Po&%mwJ>Ph~_5AKRp5!*j%oc~xGu*Y6E@gWixg z?2UM9y>;HGH|E8?q?h*&@}A^9**nBL!aLI2;yv3t)7$EuAlK(wf7qD4c;5QTf8@WZ}Hyky~q24_eJkZ-j}_*ysvm)^}gnP-TQ|3 zP4BzjkGu!HpLsv`e((Lk`=j?y?_b`(y+?eQPwvzC^uDk!;;Z%5`J%p<5BJ4=2_NAj zeXMVQFXzkq3cg{!;l2^RNxn0DlYM9U8hp*ZS-v*kO5gdu3w#&)F7jRMyTrH3cd73( z-{romeQSK1e4Bk+e0Tfq@!jjY&$rFD-M7QH)Ax*Tm+uwdLEmS-&wXF`zVv;KgMwf|@TFaBTs zfBTR4j|P+hRX`ok1S$hn0cXG!U;|tr8Q=q{K)*o$z<|KOz@WfMfo$NEz^Q@JfiZ!x zfinYB0y6?FfwKcM1MPv%z@ot7z}10k0@ntv3tS(#A+S2ICa^YeW8kL1#=vcXdjt0c z?hiZ~cr5UE;Q7D{ffoZW1zruj8Q2}z6ZkpsOW@bQZ-L(fhXRKKe+2#v{1x~+hz1qG z%Ag@=3_63ZU`@~+^asPiM34xQ!Bntca8z(~a7=J)a9nVFa6)ima8mG$;N;+0!Rf&n z!M0#~a9(hJa6xcka8Yo1a7A!!@W$Xx!F9p)!41KU!A-%JP`ad_*d}n;E~|b5E4Q|SV$6*hGZdSs4`>-*+bPK zM<^Hyg~FjoC>A0@d?*#_7s`aPp)*30LuZDjgz7_Qg&IOrLye)PP;;myG&?juv>>!F zv?6p~Xl3a9(8Zz4Lf3_^58V*j5ZV~p9(pwNSm^Q46QL(VPlcWi?Fj7*JrjB%^jhe> z(EFheLiK;rZbO;f3Kv;l<%4;ichaVIkZdJ}-Ppcvbk) z@U`LV!qw{v^CNyf3^z zd?5U3_>1uO;orlD!iOW0h%_RL$RnzVE@FvTBkqVN!beh(ev$r>0g-``L6MUpgCprk zCQ^u;9vK@M7a1R^kDL{0h|G+%MrK9YA{~*rk)@Gkk?SJYM{bC$j;x8SjocWyDY7oI zKC&UQC9*a0K;*&5w#XBaCnHZqUW&XN*%f&u@e{unH`YE_yRG)2 z+J|c&soh@tXzgRQkJmm?`(*9T+LvlyuH9ApX6;+Gdul(d{iyci+D~dful=G9sYC0q zI!T?hPF5$ctEf}dDeF{qx;k^6tFETbT^Fv4)KPVG9aG2FrRoOOqb&Knk)SXwivhMu4E9$PSyQ=Q$y6fxK)@`oaQulb> z6LnA4JyrK~-Hy7Qbh{+isQbF^o2WD@i^`)FQAJc4 zRYlcNO;j7zMU7E=)Eo6h{ZTv`k0zo-l!@}u!O?VdX!Mlm)M#V0DcT&J7M&iQ5p9W{ z9i16%jn0nFi!O@_(eCKQ(MzJMqL)Umj9wePDY`CtOZ3+0Q_-iRJEA+I&qSY%J{NsH z`a<-@=u6R8qwhpNihdmZB>H9atLWF!Z=yd$e~JDT{X2RjCXZFb+%Zqg8}r5du|O;s z3&p~*NUS!7$C%iF*udDJSRry-LZ3H%VR5I z=fzgW&W~LjyE3*qwkEbVc602O*sZbKVt2;wjXe_E9@`Py8QT;4F!oXGxbZ{Y9XAK?4&{rDgFpZH(+-}n*yXdH>7 zaV##0OXG^TK5mWM;`X>V?u*Cbcsw3Y#OZi4eo}mJd_sI;d{X?3_~iJR@hS28_*wCW z_|*8c_^fzad~SSRe181g`11IQ_<8XQ%P+{#^W(_&f1;&eCjM>wyZBG>-{ME&M-$eBEn!boCmac9 z!j-5=xD%d)HxW$45=??kaEZZ*bRv_;CQeSAni!oJlbD=1GchMIH!&|UKd~UOFtI4H zII$$LG_fqPJaJLt%EVQPs}pMzHzsaM+?u#8aeLy9#NCPe6OSeyOT3+UC-H9Ly~O*8 z4-&f*dlDZeK1zI?*q`_^@qOZl#G%At0wpk_ns5+K!bQ{&Zo)%&2_NAn0z`yJ5J`e3 zQbd->5qY9OoI(sE#u4L*dg3f%KCysUNGu{26HADt#4q>E%pj!cp~nIij<{mB93Kynay5}74WAxDv;$uZ; z%j7Qdb@FZUQ}Q7B8TmQ+1^FfU75NkSGkKW&gTg2Y<)ECDi>jgAl!x+CKFUu8s328K z5fo3QsD4z2%2GLM7&V+4L5-xwQWL2LYAUsmT0||TmQYKnWt2d5Q|D64sTI@()MeCl z)b-R2)COuJwUxS)x{JD-x}SQ8dXjpIdY}4$+D+}DKBPXPKBhjQ_EP(({nTgFx74rH zZ`AM9Q5vCDw3^n?TG~LHX%}5Xb99pC=@i|M?oSV(2hxM+ljy;8jy{zhNspo@(Pz+; z=_b0FUP3RWm(c>5J(r>DBZadM$l3eG7dneH(ozeJ}k8y`6rP z-bp`0e@K5se@uTu@1^(A`{@Jpr}RPkGx{s~NBS`R2mL1_VWft0$iA@<8Y4P zXpZAj+yL$*F2m)yA>66lFm5C_h8xdK;?CsG;u^VWTnpFAwR0WZ9Bw|hh+E2ab1S&> zxr?|}+~wR=+_l^d+*)oOw~^bz-OAm;-NoI@J-|K0ZRZ~6p5k_L&v7quySUf5H@SDX z54aDxz1%n4x7>H!_uLQMkKC`^AKahZUrA|FmQ*ISNjjNK^2q_ofys0-lPn}pPM(@P zEjc1NGC4LmE;%WAMzTJ6Rfo8(W) z-;#eNkMbC=;B|ZzZ{urtFCXCR_&Cq-NxmOHm@n|B@uT>$`~-dq-^9=0+xT<%E`A{| z@GJO>_{;gL`PKXyegnUe-^6d>Z{@f0_wn2Kr}(G&9sExIMgArJRsIeBJ^p=u55JG! z&mZLfsWGXsV*_n-T3g>jw1^JTBbA5=v5X%!IzF>`LFXj+eXO%% zT%fVFp|f)%VnB=nCP+3SRft)Tc1uQfql)^<0K?@tkN|~e3Os=`Y!0GhE|tR5*&Ih@ z3fWAaqUtNFhUW6)+dF1<&TeRI&b2qrnbq9Z)${0TB!I+kLmY?`aUnH`8}T4s#E19= znIIP`1cjg!RDxR22-@3_AQD2tNCf`Z0cj8k3pznBR0;;6vRg77Xm#+%EA^E)Ja9-u z=jkoeJD~ZbXt0i&9=97b+os(Hh0wL*>sK}Vfi#eBylE{BJnhn zCUGK1QdE}UxeS@FuMG7L40mT5I>tA2j%(>`fys<->6$URrEPj^GhC^!jFdmAG`ISH zIrsWXH;|?qyPzwlm&M0Vtyg_uDQ zDGv$84+RIpL$Msx9T<}JD0*Z#04azv9Ec1;PC^DFX(WSWksOj2jDkt163l`{unIQ8 zE>w#$9D)o*PC-sZPD4%yNe&00Il9s5-RO*NbY?f&+Ksk>IMH)NK~}=_M$c%UH>_c9 z%k%~iToN(%RD1(%d<|rKxL1iEL%Fr`HhEl2 z^SoU1)H&0qgA6N8r#H`P?^tkhN5kwHec$%Xq4x=A!sGHyEyu>~;lUZm3?#l4nT(u? zOhM|AvycX4D$! zeWS*+GaA~aH^T&dy~M|lJ_c+$embzC1B}%3Z-{!WqrNiwZ%F>tEdM>13*a(9_evaW zZt7)Gk3uX*E<)lrBP)>ekd?^!$OXuSLak6IM1`1u3veNfTq3$Kmzs^?HGL6IqMgh}?v% zn^X!QZQxfYls1UgSRHe&hk>RM_xc)L|#H(Ms^{uAg>~?A+IBEAa5dX zA#Wq^AnzjYA@3s}AiI%0$cM;B$j8Vh$X;Y0vL88se2N@IK0`i7zCgZ2zCyl6zCpf4 zzC*r8en5UienNgmenEakenWmo4k3q;Kaf9>zmUI?Bgjz{K~WS#C8!jYp>nhWRiH{# zg{n~vszr6E9<4+Ts1Y@xRj3)YpjOm|+RfWK{SMh(Fj_L z)}c`}hT>=(O`rryq7+J_49cP$nnZath4w@HqXW=^0xd8CD{w+m;DwaXPv|cU5C#f^ zgp-89LR!cOSs^Fng@SOhFhm$CoFbemoF<$u3=@V6BZQH{C}FfPMi?uM6UGY@go(l= z;S6E2aHcRts29!>8ic7rqtGNY3)6(@!VIBBI9r%0v&mk6tbONGmX%Y`e1 zD}}3stA%TXYlZ8C>xCPH)xsKKt#G4oldw)$FKiGt3Y&z@!WQ9X;TGXm;WpuR;SOP| zaHnvWaJO)eaIbKmaKG??@Sw0wcu06yctqGPJSsdUJT5#TJSjXSJT2@Hb_&l3&kD~8 z&kHXIFA6USFAKW_0=z^=b7Ol)Q@><}26U55;{`xFIFkmnlg{TLw6i%nl}lxrWG353 zO)yyq_sIfIF=-BG2r7f8h%}8SIhIe7bh1Dd_&#cmN|98KOaXo>kT?S|7Ek5iDFji- zkr_6X&GBW_GzsvVPv&qsm4cZR@+_WV0d5dEjwLhsbebZ#zOjjPDwk!GDV!qn8JwYM z4u@Qr#PcaC1#`Wcd z7Eh%C^DtzA$5Y9ShyW>uO~b?iG4xTVl5~b7SPm~xxfIUuz?d{wU~!tx5rEpWB0}n; z<{&N2W`HO8B*VfgftMK;IGCkbBAd^o8IorEsEHhv%%=)ToTM{(oS{e>&!m_ z0D8h^@l3Xm!*dj$%9C^+vaIr%6tY=5mm~0GmdpZ|)1p?96rQJZ$vn++R60{Oc81_- zf}l7&$!BTc30=T>lFi{HL#HVYkUB{L812#TEUYU-6Dd$pm^_oqWpGiK@N71hW>_ZA zv00{%n$1w@Y=L6&RG|R#E~H@IOq#$s7y;N_;90878d9L790~I#Qd!`45|kyCO;K<& zOMz9TGnsUmRu!_K-c%|L+ChRf6lfYxF&P%mWgvs$h^0_3aNS?&0G+Cfv9^&YI^Ufr5@W^})XQ>?6JopkErkcaK3|&a43RFIy z&-78JAP1o!1p%!F8YT_0Oc!{NWlpTHKozRMl<}KS^My98c@6}c)zr0^F$83EepPx;z>S}%%oVTO7+c~$z>SG zzf+>d!q}jWc$x(L$`UL%G0+L{ZGF@%$>cyGk~jxngEautQ=mI|8oX;Z!xgw3pX;N} za8we?U*NwBzz&9lA1SD6;#o3T0K=vjr~&j*r&(|iNh*tHc`zV`fKZjrK{x?TCPk0T zWOHS*P?Vuvr6b?ECB~pT>NV3e*(j39(i3|gV2!ycaJkEpWKtKfb z0h{I0<*Q8P2pE7)gY6Ka*MwE_IY`QLDG)t4+Cs8i@@XQ+=Ti^?8F(^y9}1+C&E;|M zQc$AIQ+YB~HgA|MpGhU*(F`y8s)A?;5WWfUu|yu+55tzlhBTcofE#3SG7HFoDWn;Y zd_E6KMrKku61>E5u{g&=cm(Ps2dO z4_E;34-J+E{+rA|O`QX;muJf~HVZL;$0DQux#7|&u5R@}{4n#&}%E!(^2|5Elo++^4kvUGBNfMkts00ampQNZV zo9EK`WVYxvi45p>t^m?uvJ|i%d`UXZvP^m0A;CLxBxo!}LVyBg7XuX3%6RZIP!-}y zqFiIaSo3^}g3DA2B1wh?tx7|bV)F!(0@y)jsIpaN!G&bf1rE=1X>s1bLCBb(7zY3f zY^OlbbU8J6G*J5tPLdE<848w~5uJE0Q=qbd2O&2>Uz> z!IDU4vsAuJtFlZM+zF^?E|V2)2asus&WS)dn+I^1%CqJ8B$bDlPypZxyn$8b!HQEE z0@w&qlLI`KV!5)J&=gnz3DhZ?2N8k2;~5TcER^I45|~v;m&Z%+>=`}_mJS6umS!^hzISK$S@PrVp z0V0!#*1_CBuK^?xDTus%Itc2S1Q!fZk^+G;8JIku17DGXS5kDENrGjR%_JkrMywrz zHxOkB>L-RioS-OhR4GtUw#*MEvw6`cgEflA33-DUFEaop(*;oy1P=(KZzgn>=V_iI zaW2n*U9x-@JR1#4mIFKuzAcqYmqjUp&Cmb^fhT+hR+(mj9T2c_aOp|NO+eN8vQ_d) zFfN{epv?o~0YnYMWR)getHzG7ZLBNR`b5 z-kD``fMIbGWGZqHvJ4)U3N9eaLpnvJ%C(9Ga75(68o_sfPqKs7~B3}9Y1 zTOOtI@Y<0C9fx=g$^x+f=AGezMWl!>AjE+G?~_iJ000lFBSsS7AO~WEg;2n6K!Y@& zBJ$8=sn+4m2Rlgw* z*dq;K4~JZlhV&8Ch%ZCEB1nML0Mh+DU;%iCDe8A#%wVWwGA(i|NB4~lcrpWljs%#S z1$+W8V*!tec^Z(C;HnGx@_Z+sNdjcyz{nvkz$!_2>%&1BL2}6~fN7orEZR3VOOt7M zF+|`65~3sn*$+5+0Pi^-a>HCYnS$CyA2pz0o)-zhmqK&}yAsFd!HNNwrwUMVDd!;Y zHA8U#VIg&dc|)oV>IVof3oe;0WYgIcQ>ImrT4uOx7Oas4T*p8v0xALl0xBN4B%Kl; zTo%(r3;|{Wt~&+8!b?5SMyLgej*d)2Zo{O=vavyd;bkP?Iw}V)kja79%s{OHCYH_> z=wdoqW(^EScpu;iAi*RQu7JK!HWMOEu@D^?Jjp_;!4PTS zAOKy+FClG$t_es_%XE-tvuOsJ1;j}J2MbUp;M3rJ_$(xM5bOcXlu-kuhx`cA?Fq$M+~nCtMV@@fk}{aiW=2#*3+4H^rMhtER{7prMGk}G70a#X-FT$;&( zKDGeGABank)TeR<2wWKs z#M38B$QPjq2019i0PrWE?jr1gL<}4?z;ZyRTp2YWVW@c}#jubA=@dYl;x1B1;L$b2DHX7f1+Nd>^UAWN}c1(Ov~7zf@S z>V|n>XtvyT$ZQ(&NXU+eG{h#RP>egkK`;g|g#yI{%-TmyKt4EqScqLk|zP2kx)(oqzxL& zgH!>Tf~B!}D3g&)0US!-*eqnZFe(IJv4jhV8hk7bx|^qRkYS36Q@OX#@R?j8p9E}A zKzSN)1b83FFYr91BRmbxfMd&iECFoJi)D&Dq(gv8APhnn<8g4La2L2Gjw{m>$lRE8 zv8F_T3xco?)Oo-)5JxDeJ42Yrlt~AQb}5<_bN-^&6cvikW&rTPG66mkKwidgmV^on zltggI9z-82VkWSBs4Qe4=0XgI$kxXbP=gGV)uH>27PJ2h=oi!lQ;<{>bdrSl2*|dN z8WI60*FkCvP)Y(W7LXD|Cs-&) zi?OfHwsINJ8*q7%=w?RBfTQ4(WW709>0c8=KDNSSXbM!h<9h!U-hafIag# zWHsPVp=y;O%BZ1N4eSt1lH~ykf?Yxw2G5E^r8is1@C?o6%WMZ+DL{EBB|tF`yuHW{ zD3L=kAV-0o0ItcE`zk=7fYkvwLTL}|k`NO*C^m?GzW|j=s4Ha4Vj3hWQ1<~`m50J6 zNCzBk3W^@U?<6GQIf{U4dLK_19!lE9m`aMMmxJO@h6LMzQhx#HQ&7ArTO~MBXgL!r zIXO}C#bhxFs1sZ!4>fLx4Mf@4GWFWe#AK0ynj2JdNQjq^-w{yp0B>C;d5&QqF9vqxp@#=-N6h{yaEk?S z5Re8y^^GV)cr?UNDAz!Z8W1Z`L$R&MZ$Luu)+e7$0W9p}cYza&9rVH}nsA@A*@rXedzL+K6Nq?pe`G9_XN&=b%=kOjCKnkl|*Mt7ropoL@D=+ozP ziS0ePmSSH+L&t(maOp#2{p4Yz`@TE&k{8Q#{qVAPzpHt62Tw6-_S z>=gTn%HEpSSGvk5hql3MeCSsIYO&V=UclE^TH$)JD`QMYLtAGHd{=za4zKfz&**As zoSAK(H5+adPvI$cGr>){%*nkC0>_3Ddmv7Hk4`7yJvzrPS<TcN#USo6FQ4RfG3p}3CvN)qUXG|X)t+6FB;4Xv#UddA6)7+Y$z5!o@L zrM0P}x$W3JH9cb=-(Uff9a?(0*v^oh(*bvMoz^g?t#QWa5`RWDPXi9OH8w-jL$P-N zQ()?im=aS79|<1|pNyZ?)`qvX&N}nhZ%;7jq3EIxVS20*)Z~~3jc)GR1m75t^<#&P zhCfP!nK1JPtV-A?{O~Sj#cY@z(PPz^19M_7`0vI%m>0T_db-?BYj122+iRxub!m)f z5c`wNz5OVo+S|n@jONn!aObRsmbN}}v8Mw%E#?oO)-z_`H31P0!2j=s{la&^<=(cI z-X0r~Rq_1%=EgbVB=T)@TRPg?#O}M&Q%WleAgecHK`exYv54@g@P+WT@Qpycg+;L# ztPMxM#uAhIo;kKS8{r@r!RMfBgr~l~VQPCvSN%L_VXL3ru%NZQp{Wv@DWC%cqcLz3 zP7qYOcqUY-?XClaT^wXYLrcd-j78w=sQ*aQGnFL9V+r9);Va?uiDPDn8V7=_RP|g| ziZcZn!^C>NN*BNSwlr7AfF`lk%hOrX6VJ5v4$m>BvFYSGg@o} zHW7*6ijBlZVWY7z*jQ{FHXfTG{384+{3iS^91;!-e+YlxiZoznV3Uz9WExfv&1X}g z+3YXjZ|D{a2}hyn%qJRixK~Y%>!K=l3dPG>pz15V|B13_xBs@?sx(@u5iR(ih8f+} zF{iO>P6zm{f77{D8miQ7^=~@BN+d%&JE6_*_|~%rUGRm2{)h&DdOQ9yT9a z(2dHvQDrx(>PFR~=&Q<_y)p~LXi;noGo04Y+0`3Mjs=miZPWT%&dP{wr7@bD#ttod z>fTE|^AfOg5z7XwyBn2nz?OHT6~$IzF_Inkh|%rPuL;q4xB+XM+H>?Aib=m=5r#0(zTTV|91~;b^SX>HLmXr>`^^O;u*gv8Lw9?X#PqJ-EGN%!1jVedezA znayp5mgd%`QbXFYIBS45ATadOs*i=9n&vjql{IDNbal1EJz{HKpNH%e6qN{cOG^d$ zn{Z-Hby+|4dO`B0(^cdCk8N=^p5CT7xZmerFUa7gVCY0|5v=jR^@x8%E%ZstN}a$b z&ZWN8%9-!zXzzeQ@OXV?O?__Mm=Ya?;bWkpD9YlBHzx?v^N&;zmHLJmBXX{9g#UW2 z$kpQLa3r7ssfL#CS~&bK35~#~!GV9Hp=Y)c+F$3ufqtu@o$obh#(N7I@!o?bypM~G zcHcmI-Cxi;r-ep2d$A$T3vF;LG`S6e!~QaG(BCvTp6?PkR_{LaRiyY2LrcHmImi7& zzbd+4^h4}|jUp^8fvkV2nmrnQF?I=JS-&3ixaXV8uq#9zzq}jOY{0JUMz#N0$KQlF zdM$Pxc0IJuLd&kGJ0rxy7LN}j-Kf4B)eW!w;6!uK0ib9F6HPZlQ!bz?Xj*Tc*aD%w z$n!Hhi#@#1iz(uwDV>dCOZtfRPJmkNZFKs%Q*K(=t<|sJpmEPlAg&`0haO#+`<0m)F zoHb|O!X+y&yK+s59_``0x%7AM&&{R4w+34at?;0Gt?k7|{NZ!DT3gzh#a`^b2z$)C zY{G8DASC{`>FX<}){p5rIXe#C_lz6U_Y4Sikn{hmM~c?pnLPHm`f;P{p|hlyuE^lg z(0mSvrMJztzDEnzV_QTIyaC&YZNfHpqlRwO*o~UH(W=eZ&Dbs2t=P@osJR=pbfZ@I z@PEw%--F$IOke*S%Kaerkf_Srx>4H(?BQ&k1_uivOtZ&ayzH5EShsN=YalbcV_LQSv!l|Ibq5#Q6;^NF@QHVCRMVvlxHDQWr-l=)I<`7cSNxQQm))AKD_y7=6lrM!*3D+=+QZq&B{ zd#@Yy7lkO!vgma?)5lTo!9GOd>(`45Ilkvw%oU-NqBmE>_G0_{#y!xDhRS^4XV~YZ zQFqeuZIsAzIbj%!L-6;Nl!yNt_%Ks_|77_($cJVAypM=|3w!F}(7=|7GQO-Ke>JmZU%DD$7?HQXTi{6u^DUq}<~uB<913ZYtPmQD@I-NZtPrf zcjTm&&SA~4!ww+hq(-PUHgvRf!pD|g&?6`nl_>16R81b!JijL!YML~(ZCZQ0n7u)E z(XYQ)mK-;xj{=a?u>@n&fPs)z{JX1AxcwJN2@HAC;Qy3OY)r$LCnh3&$wq1IIas?E z)?TRIa59uMkFEU_nmLUVDiyGQ^!O!>&7R&cvl$*ea@2_l*T`bRH72-TFu?Wk6aFzv z+B|X688E|t$hiLN68=ZI)Y-6!a1mrum%%ovM_~ig$FO;6KWtq347MwYTaykWM_}`j z5w;h(Acu;=_8|hc4l%G$sm_5T&BX)FyWueN^Wezx8{t^; z$KZJJ-Ed6!ub2U=f`h=5SPBjSAB<(-5by$2sKolzIBWtO06r6&jV;5LV;8_N-xp(- zWA|d)u=lW^OW~$BKbu_oyXU7w|Icw-GEj1o=sduSEbStqR>;`5_#tZ-R61?T`pNVIQ*>@fY_sM-jYu zF1~mwzIY;je`Ek`s2vQOX>+i@_T=KO+0&3=#S`+!!1?$Sku!>$O&cJ2ZbqgTcan;G zNX7l5bKt~$@x1&ca8mxcum@4xe|Ryn3b`Ck%)bWC%7<-w#SMDv;l%t+u&eH7*ik3$ zrW5zli96}UeRL1Q4mxrFoVa^V+&L%in|l%V%)N44g1!fK$bAC4;|>(}#ff|3zK3M} z7f>~E51hCIPTc<{?tPQNzBh5to4DUi-0fzDeQx3|H*t@fxWi4{-xh{_ZBf|MChlhw zce9Cm*~Fb}1B!`$x_G9)c%uJMIL&_;oa8?W&hQsc@E6bT7f zB+!P=E}qms2hQoA4`=j?C-e(&Hotf>zj!YH#ZWZ36wc!pPvgG^PU08O;TKQgUx#ie zp1&`izJEKMyMGs)x_{rBP`ywhD#Um~5`7DzMl`)U=?y&@b$z9AUPD*o40zYz883eD zq-W0_efqFr<2s9bUB^#_7dy>uO=BB6X7SYMhR#`H*&Ib+i#=kQ(k#Ae5#RR|ok1y& zUt!!T5Q3ep>t;atK35s*(;KiFbTezb{7&)G>7Ix_eM>o!%Ga86Xq_MuipD*1L zM=Up&4PM(zSGr7=F86Tv#LEm~+;Z%07V(T~oO{CUJkqb6OSMR9{Cu9PpU*Ls*a@Tq z`-bu$+S0|7dbqa2_*!W`=@Qp~?IntA55>y)Kb0u*J$&sOqjX^iV%%JuYuWI}71iCF&B($Dc4%Jz^2HMva^`y0fFPba86$5W{wqhG;5LX^^u@ z6w`VrRv7n|C}xzjb42g;($_N)OS!yYSNzyn&0P(x<6zFPz54{}*@&@6cUahbe9rjB zhSrv;G$^>JmhjNhpk0WiXZgL{o!d8~FG^JN`{WOUm4*PS(#1uHQDpsMD50M-uepuF z=eFY1RJ^6Fv-tX=M7{KwF5K9*$XU8gDBadQMZ5_oj{@P_6ZRde8R;orHdt% zJ$CVyzL_3l#BDw5au!sd>yX<;A4XH9p@6zH(>ss%Vd8RbKY`?)<4KBRoj`JbpH~w# zvu{eJhivO($3x@6(Tf}YkR1drgZ6v<5_mhIl>U7%TFT{O18QK z3RWXJn&(1+)pM*b zl&D@u`jzJ7DLv%P9*R{XmzOBs?&A$xqItK6=8_-MC7Sn4Aa^M@sG zsVR-|anJQtO^Zuo?Co2!2RZhn{XJ%}!sIVeeOfZfgJAf@m&f?OvShfeMEymH`paVm z3_biO`iT8K!ubaIPV^|>PAZ-`GfzAnr&3y)>kmD1U15rr#{CJotk2qio-n<+9lT-( zbT^1T;nyDWRl)B{T0mG?|}#s942I*h3hNHderM9oq}!GgUPl2|YbR;;La?Onm%dqc68YyIARN-~qlg!04x^?M%V z$(YR9?d-kYwbtHy6*rh6lq${~%0*Q6!&yozY7$est7s+dJsJVHIp>((RM)zowxL%k zr3Zj&sa}uWDsgZg>^q^I#j0vrkB+7l_Vp0MFLQ)ZkDjel{$JA$uSmOWA6G)bhj{> zJ6z|5TD>X8FwUOUsr8Z9L-vef@^OgK)ZD9+q8^@cH#cp1J=Cx|eFjU623NVuv?1*)48+H4MKxN~ z*b3L(OG^*W*0ighM@zLwYCWy(<;E~pxofnxPY70cG&7sJFB*S0Sm=c zsY!9xi&p>a9-?AOjiR-)u4fQSwQ|tMScBRig3D=-FVu#iY0F%<4t92pwnO8fgK2A| z5`T9mT4m^7A=r;PvR8qtwE{-xK$livea|pY)|%=tWHb8dE~7otRWL@ihWgB*0qx-i zmGHP5!EQD68LDkB$;jQ*)7u$Zt&Q4SYZ4sKbyjn0)VkowzikF4zp1&gQX3F7FMa#! zKDV9QthIDk)J_%s+})7Ox(39qo8tmYYin9MkUeip2TP#W$E6C(s5f-N^7qx_sqWiv zP|m=pQ8=Z^hVjB&*Z~fK0bM+QEDpft@P1^zYv5a8fU^RJU+42z;12tGel!0d{{;Um z{|d6#ea7!Z=DNRezY>l7bR&gCWTl&`W}=&m9CQuB3CKEkHnPoiBG262!hOgt_pI=i z@R9HdGRpme401NngRF7G#8@#^94}5p#<-bcxwuFSAT!+Q;R_JsVR z{D%CN{IUGC{4;W-c}xeJ4mZUk1KLzmscD|6+SFiLYFcGF8=27BO%IzwBt_Et_VZZLT!enOn>!npd0GAvak&a+2L`-il0QFCzEY z4)c%Zzb$4 z-nD#&Y+=7!MXLju!H%#dAqUt5YpHdfwZ^&_S-+N9$-35h0rGp@V7=9PFYTIpZzIC?kV%s&gn~`yAi|sMnHrrdsuJr}- zXqoNN_58|+K%ZT2(m=OH)NmGG;JdA|q7{vQZuGj72W0@yI?^;+%`TQw`3gu;^Wbd{b8-yVNbnEcKA{N#{$>H=XY} zKSw^PACW;ycDY;!x(;!TbS1jRx^j>+YKH4LSFNiVS)o=TAJoOJc2^hjKt1ky+4YX= zQ`a}H-xNWyE78h<%1|Xi8LMO|dCDxMLRqY|D5R`aE>JF2+LbQl4&_1QfO=7RPx)N= zE;=gOf~-ylMGuRPjZTfuh@OIcO*5k#qL(5k(;8%Bx+Ho%GB0h8elYq8p((^GHyzcDrk4vV3@eEPf+N!Ab`l9G-F6bf zNkUsxT)S{GakJV5SU%2Xb2aez*6QZvMdd80C=3JxOz>#oLX9p?6V^n*G^?nAW)6Rs7m!+Lj{Lc<~$Wjpcp^=f!P?QgB< z1_3%m$jhiN!baR7bTK=zz907bzIz6=RyPWpa7hOM92F?o2)m2$A>05xwz4)KBCftYYB=sS(d0qQ|02NrQFQkcrsHVFtO29mW5SbB zaUH_r!V|mZ3B;|uNqC#v zA-pTRC%i9wAbbdQ=VK^5pAvUs8$JN7HsS!SQ%D$0!Y~rDNys6gfQ@^IVT;uhmbCq+iM)^6%M{1+SFWI51VJ>v6@V~DzrLuWKg2sM>ca3t?NSr1K0?@9^+nl2V;b~fVsN!h2yo1%ph)X6uY7r9Ys+@wN8u;X)XxY}{|i*% zf|BkT%ByZzpvKJ&`cAbSQ*ilvl7^H23ct+>dfXxW9<@IBi`j)u)eX4~2tOQ9V8E-M z9|?bpQ5qXn$ypTOJ|l{_Pj35GFCm&lCw#C(vuF{mP;KoZtZ7#fcN%f4i94M*u*Nml zi!M7j2)?zhijjR0LO>T+g9`>)Kt9ZSrswstd2PT1*yGqFm7b)5LUfj5t<2T0BM^CmxIazyye%Dm}`! zM##F;Q~`K87*7qHjab}k#;bMC+?xbl0eH3qxzK^PG^in%^_F^Q~~s-8n+uS95ae@vnd+(R@v`37-;md8as4%oCygTtM8##9i9$_Jk>&#$y36 zw2PRZ)1bV(eAv2Zj%7IwIB=|lB;B|KyY;xbDGP6TD5$; z7{JI{_(9?laVd*rUr`>Y26KvQuC9Yw(~@eYxU>_8*ZSutc7=EXTn0h;9pVZ$kwcqW zE9z=1^{Dz7Ol)N=j;#aQhh`0csP)}c%p9{c-ejyyToJ6Z0<8hVU8xERn95(plSPD? z?h@NX5>F9N6<3L;iK}r4aE7>sxa)|!p12!`+d$ln#B~vO6LB{aw~@F_UE-Nc^hb>l z*WtwAJpBKHsNuxjqUr()anM#CCGIh1_58S|UL4rdxi+{s&GSIjFb9P{1nbPNZGgaQ z0@La9aTb<6t8oe3a29|u9nxo+TsSSNA@U(V!&|9S+Tb9ftk&JcK^w#dcSsRtWdWkQH$b%rKp6;V(!YC_Fu3gMx|VWn6?;82dbwA800+wA zed7J%7UJL-a4&K9b&3y)4~bieyPvoRhUhXsqRF@tNsBW?61_hxl~V`fcKKXyEzq26mqD%d?k0p8MPt=e<7rzL#DB zezpvqP_;f-t;f0AD{LLMi!T$0DS5a$V zjg%hk_;~09v)XQyGQpVq55-Sd(;tZ+69+~8$B;}{JlqvW8R+Y5##EtNE|>Q@sc2kl0@9|#Jxz|HsZGT zNapXDPcM37PQ5d5dly&P)TGN_$-(3=aWAO?m|3XonP8R5)a!p}O38&9CfbYtZI&@ewXGbb677O9>DH(&5qwoa-JT9Vs0pjgn%eI0=)1o!48$ zy-gg{l6Q%FkGS`V`+&F)iTkKaO4Njalp>`{X;CAjF-!=2YzTqRiTjbbpO_H%dA|@) zbAH4H_Ms4vCP4^DlZpF87Xs2$M*n$IKKmgK8{f~gPY8i2N}RFYrP2)W2dPY&PTUv7 zec2(+lx7iAjlbJ>B0!oi!L+MW@=M1_<-~nO+}FhI?35~{DkcKHA@19Mfe4TmN4ccB za1OpcFyxvkZ)ME9bZPWujV~QAjfnuM5oMdg%icEP@;?TRox1pfGdGU>>aSC3QP!C0 zfV4zq@)8a$@Y3Id6H7R@0F(a#Gu?}^M{n3MbiC$)6QztYnmAcHMP=p^sm%PBew%>S zomW>sb}SU97JqXqGJDilk31rb`$}u1wfrFIEO8uuTgSNXpTtXy*Zih3U;HKXX1>z- z(goejm*>lYstQns`yqkCr@g}xt?9b@1MSEEKPtT&ch&T6Mv?tl3JtaLYJwv>OcsudVo<)0J zdI5{ZTZy-^MRP$y`70aY+P@%f5ga@e!H}FUt5TJBXrVItv~uiTT{WnN7H31-&`R%U zD+w{7Ze7dwb|s-e*TrjB#Gw|JOtc0MJa}n8)|WQMul(~J&(T+!&7J}9&!r!j^!-Bm zQraPXC4DXJl)jO^mA;d{C*DiEkN5$^A3*#-;twSLAcBg)A58qI`u-~Ym)im9 zi}*XlAEHZN{!rp$u^tNXar=euz8Ai-6~b4x5kEv1zOoa-m)oKJ!^CU<67*%3y)q2I zI%J=W)jW*&p&hsl$9fJUeuOG?``J|O#-_~Z7l#h}}5kHdnBZxn;Q;w74A*}hMh#&PY5Y}>PluJ$v7r?)Mbn->X z2Tabo|JGYK`rq943lrAzSd=|FyzD!-jUHC{)s*V%w){<3K6>prY-^_NpQ4OIXL-B~ zlQHa{r7t19*tUH}}xX>DBmg;6lo(0w|&z9%NbBRwTK9%^iZq_aPHIAGDGW={#5YO(5 zV@GDqa-GJS$LOqi-o9te!DH*$`N#pCEyF4BAMR8;36qz|1U4)$m6yrOVU}`&yiz_< zJ_+V2ZN!fw{#fG26OX0KAU>1$EaJ0?&mn$dmwbxGhUL}r>5L7_YZ)7!WU%2W#81Z} zfDO;s&xZd2Hhd{#!GLG6h0A zjPlJ{vv*v4_SE?s>ave0d&GQ;%2Xdh*{$JaOY&#V6E{v>ba%|6YcAOI5{|Kq9gzHp z{5YHGN0~q>RRz)$Odyr@DUg(op%3XBAY-MTmtWF&F-~&8i)S)k{DjJj(L`@v9L(s# zxG-;lW!anZTjDtU_OARME?W3X;;V_D118M=Dkr`wkqU!SbiX`-z`x@L=L$ z6^mn6`Ey2oUl2d9oAvTRS2o>&;kIk4uKbEylTr&R}DYp*p4Ceb9BaDTao_{GH65&syw8PzU3jLx*9NYzKBu{EHN zK>JcRaTyiTacKF{^5zBAExRmkT)P@~D#mRW&hq;jjbH0AvlU?}5&e-x>_s1D&QJyu}0!w}nBfwe7j-+RIJX=Gn-@ zI=YXU37XPfO~eswB90_}31FuQa8s-)8HNC+I9Q7&m=aA%rqRSNC4L$4%ZXn>{0YRb zyk4APN@W_lX^c1n$GpVDJOlM%ZKO|KWdi;N9>XfS0kJ(7*3d=v7FTQ zt!`Rn!nq+h#F6ZNI2HyYxNoRhxpGogmcOVtr>M9vE2pHSu-KoSGcmUyw=}n~phRnF z3h%u|$%Z*@o+;l{U@9~fnWmYFO(ihTEi+9w%`nY0%`(k4%`we|x$bEHkbfW1b z)5)eb6PZpioeHDh(@d*Pr<=|&tud`NooPA?M!@F~5A}?QKZOu1kY7doX~eH4{&eEc zAbt(;Yl%OT__K&Vn|KsnM~J${pGSzg#$Q1Eg~VS({KdqB5H2MiTEykVUqSqp#9u`` zw1;bmUr&5H@g2l>5~6hR*Aar(@HY^@fp};PUBur+{LRE~Bz_a|w-A3T@eua66MqNs zcM`vu5FCrYn-Cm}znA#?h`*osEyO=S{DZ_lL_9Qshl&3W@sIQ@&H3umq;MK}6*e(5 zyuiwp8F@1@W|jDJ@-q>`yJSZ0#8Q7rX+}YIMsc=3FE_I|qc}GQtE5`anJ!Y>7{+B+ zBU0LOW_Pl3B?3C-=MT&h+X7*Zv-0A1wesRfOuujr%c zlG5VbBEMc5!vh6nmt~b2RdB@*VjCLLbZJKMq?}Te#jtX-a{LoB@^kZM88zC~8Y4n# zcNDyobTZ+;SwF=8@ub4 z3QDrTcACq}0=V7IuEzaxtx5*QkZ=i)h9>MzLq!W4TN?9fE1F?D7OA;gcYoe=(awx8 zVY68SLz2Q~7Ij*kv4Fp}s2ncT8V%l|wwk-^K_Y;jrZ7Zqbzx%zc$wDjU23~icBkFo zRo1$|1!q+)!g9jC4@RUpOPEEL(J*eQF{?*$xM*jATZhCB(U!1o<;uKle{op>!;8Np zC!;uPawvATs5OUkOor9fu23gq7a zI+JrUvU7_2tbjXMR2ayW)GlD5(O0g_D$LIDm*h?=z$DJN=`L1$FK)hDV94ylr#Q9L!L6pPrq zFs?^YxF`b=Hd~lb{F%kM*^}6`YBXUi0d6PJ#K^EF@?g%^3dU$4tk=rn zvJuse2vu#e@-onV*36lH_DfmDB+!#CJ&o>gDT#WA^;IvYAR`l~$%jk+cws}+X! zQ$c+@unVJ$pVS(|c2#3WPR3ND3QQr`JoZ&(Mn-XgKNGBFsy{2EsI;sYOI%i3Se%oW zlTm`{G@8I&9h=9aa#L>MUm$W|eh!$$-oLFyLc$sI~hf1hsZfeo^Txe`aB}q2HKs+tu%qS3of6NH_=#{L(~Qm`ftD(M0o#)snsJBzuJFsVIf{W z4_dL&>u|N&(Gh!{R#wOe(qOF^bB_!R;bP{IYDnXsW2>qY+*EI46ra#fBM=Y!f;+jF-Qa01)nW6 z6iYLXxiNWt3{ziHjc5e7YwqcG@quKjy$WHju=k%`bDF8t!ik=V^;uA2R)vh@ob%Tarq*< zxI{=c;dCm>-H7PP}2X$$!>uHuA&%`^tTP zUuk|0C)eiZi8pLE%`f4;67E9j;xzLs%wOnBd=URBt}E>ZH+aMRHZH-;ZI+SDn?GRBe(US=6n zN0#F)2+h!GX|@C`EhJ$5qe+PAL`avV;7Nj;1kb;KCs|Gc>Q4^mGs{=!n}ciM3rpJZZIM4V&rH!OsP3{ImaCXv-1kG+(HSn(eywVVDTZaerM;VF2}4Q1p+JZRYq^23tPPeMEnOrG zA>mLG4*LgL)&rLRz-R$6fgZAKwLDA$*v{c3j38m;wU$RLkBT!akCSi&3D}2ULPC1m zb2Ia*Yg(A6{jB2J1q;>RW^2xK+NCm^m2PkRZqI#VA)Z6PKy>%KU`Oxx_ zAC|umNyPFe31iwVkkw)`gf|cGZVCSPS`RfiYJ-2`_?vFt`kz&@x1QC4`yK*pQzwsM1E2J8iS(M!Bq0 ztW%jUJVRAsv|QVr*MQUVERLEv49?f=Hf`20b`=QE^yboGEsaexhc#9()388H6t@}- zAJKUb6{ET;Lof865@SX-IeSl1#Q_HlJn$fv+HmlphYlS!{O}PYk2vzEc?Bg1E??ES zR1I>Ak(Ac9)WH!r+HX97gEI3CZbpto7OsN@V?nXp0D5D7y1BX8$c302$VW6b(I9qf7NhI4Mlv6MZnpMTlbV~<*I?m3s+J+C zh&IrI*7}O-W;IWw$!uwZ&Kre)QgoZE4T)A1zD;f$j7XM)kG@4YB$nlCVd+{jC+AMV zEz$JZbLLi7RWGcoZ@_#k)za1Aax`_!=&Z!V%$(RU+1bcto{*Uto0&N#B{nrJGa(tN zgROiov22(iMXf$K5G$n9R`Ilpw;eq&|bGlQyYx4 zHn2t`7*;AW?~Kb}bh@~Dc_1iTrk<#?bL`Q_v{~95ZA#~{<0rJa+Xl29*mm&ttnBoh ziIcG3!t$!d8rm{3-)=1|1%?s&s02&aW<@#}JEkf#F)MZAn4Hwu(V1yukgq%q3DGk$ zGGkLmrzNGNr)TA4CS=Y%fz8P%OiFUXiQA^;?B6S=t$w z+G$R5Qd(wmW=d?%m`r4*N4v4<;0&>88R-*|GCeIdJ0~HeQ`W$YnUmV0+hWuPvXU|r zkgGlkE1H%PJ0@phPHc8g%9z;E$r6z)N6Vr3%o{*R}CJCcXOiDQM<$3ed{l|?c z$Jyv12IXlJ6+C7YpSURxEfG%S149c0A+F8a=4!p z5|G%5CmPx264VF!#3mw&8fLa;K{qb6(RI`msza|GQNFlsAlg1aZ5xz3ijnSax2-nP zIHLUcwn1p*AaD#dmRlmCw_$kNM2#7f&}(%11SX8pM%TI|Bzb&CYvKHaWvL1HFF7Tx zA|)*W@jye z0pTIxQ{e~U4}>rpFU}F?!4|a~@k1{WuM}?*H;H#6dg%S)1LB)-^8Z8p3z0*4X%O7R z$4Zl=DXQFw>Q3RaO#9pTge$UuShd(oSo5s~5CVEabry7}6JHfZtp{^we;Gn>n)SG- zxJ}k#YYC!omRYA;XIN)iXIW=k=UC?=D(8HwpM+u(N=PUrp^Sv-B+MXTCJE?iHVJb` zz!r8M3G+$tZ?cwKE3B2)DsBhDc`k?=VXd_;LRil_YZW_MIF5wHq^u$3EGXN`Ii#$^ z;ev7=Dc6v)iIm6K12vl30mW+KUrlTqYzr}6AO~<-r-lI2o~hbl0BP^p!?`Tv-jeDP z77`tj?qKat-J%(0#61#54Kp>YxU~U_IgE={dm~l8wm|SAA-1X))gpw~a>!q!e+_YL z2-9kK;1CK5n+pulFsbbx;(*@o&V;f0)}EgHmjSg9LbJf+ z4A%J8lcO&0fIJ!SZ}m;S#Pr5Y~5(xL;_B&>PcuIp^=0p5{@UKnS=ldEjJ?U?`_uGt#?@Ov~ITE zWxd;a4+*U#EGOX&622kvdlG*p@i%g2eUbty$%a z8!8u;V8f1mR&jOBxU`y@B&ZH)>1j!Z>x1x&_gX|3C>Zy-jm^=0cTh&=t8 z^>q?fkg$@3lSpVI;gsvFZ(857zHNQS`Ys8pNVtrIYYDMMg~vlj`H?=#6Z*rl5iu?} zsDhEXYV+vuw+H!{pTFHpwR2Og6L4Vzb(C;&V0$=a8_DgmXzakA(9{z?tc#j4=+-oSL-s^gY^7V2;MX zjhL8KkbAXtY)-Tg$=KI58NqQi_LK(>H-km}nir^q**|QGV1wqtu`RVNBVi*6&>C)0r|VV{ zZX?8W7B>H@sr=L+Dqp=@RBo)rTHBeS(|3;TT(%bLNVvV-29VzonYb^q9R*st81`7~ z9GOL4ENz6YTTol4USQ;xH!rSkHafb@c6n$=SJ|#->vXmC58HZBR)?+AcC8JIbhpZl zpo!f}!hIy%Pr?=w9@t>J!M4G6Bi89ABwyHQ!wNk}2#hUkRo4kOJGkt6lmyl7G!i!g z7x{nBf$j-foBQ`@Z62~A`gbtndBpY@TN}LQBazo;_m<-s+q0o zwwGbj?q%bKQWrFOO`) zm>p`s2PAw*!bhFrtM-xhBXGq_!p9_h$`*|!6!2?KjXBx5FuB!jZ($CrdO7w{AZKP# z1};U60z<-Dn4Vjb3(Hv5RRW%pDmB{UVXS0NAmJ0{q>7Uk`)D<>fN>xio0P5|h$g0{ zj~bFX2FJBJdq&clqx*i9arR@?SNWWTFLkkO&tSb|lJJGmOU`cgl55ZJyO%&_mz| z-}#kg#vZY%Ho*2y^%Zr?u}2Irs|tS&OA!*jQ5;=923bZb(-RI?i>Zh7lgk4O$0a5t zj7duzGX^K^W0J=tC67)YlN?lrZ8ArXF0UCgx+XFBV9dTuC;1=z%F?|WPeocvRYG#u zc#@LSl9F(7G$th>EhQ-(qe|~JoWzvmgzEIlD#ldR;94VOIA`g@`F-z(GrFRtqB^yvqVL%mot~DE3}Q}8PEJi7(`$A{ zCsl%yD^fy+bDln&Klg4pNi~UMQd1MhgbgPZGm@O1keZ&7n3j^7l9-azdpJoIH8qt9 zNi`wExmX|0-}`ttX=75;5)%^u_0;6VwA2(F9QB%=r1J8FF^S2QA;W=iyKp#rpJoNn2#w%-WrQ2RCZ z_4amqhrQE&Ez+G`Z@>r6PBQlpbNV~HM54zqRQl+ne?JSh<{t)%-+*dm~jtdP@Z{G^zQ2WCqBA}?I zGd$W~fJCIOL&E0{`?L1vNW|(yci3OBzer*Xi3g|_Ec?VT)c%V74H(SWU$wtxf1N}( zi5?QYo%T2FZ^1BB^pOa|M$K4#&*RPSb}0K@1*W%u2o39_aAVJNZ+$&*(w({UH{G%I z>hCwsK)BZ}+w7mB>}TO+uQz#qdi2=*=T5(6OZK?)r*!rhhT6Zhf6c5qx7%Txj+Y+T zVc%)Tt;B&O9)y|h6_r?9x*xP~^ZXHpUiXXrH`OxK4%6``NIbaTHuOr4D2EM5M%rcG zAvi>bN57Uf7C$&SPOL$V{*kpS9o#5v+g97SSmha=IEL}DC?a1h;B zDJC3gj-!EON4jH-V=N)vk(fYYVyC#(G0uUV#e*cGOT^4Xf4hL&-lUe;O{i~kWJkFi zIpOFmFPh?af0=dEZS&@F^Rjc`xxQtaV=~I-hL=t6xOQdi(b59oIRoXA-=K#A${E-%XJ24gPn*QnooZ0?V7ivHZo7asNHxtgO2>z46>P zYtHozR&jqD%HAGc_TNxrSA^MPKMsE9AA@IL1JZx;~U4fBvz5Q zNJZ~H(W4zdIsVH~__N~|$FC$-lUPIIf=i;%UFBelcSnjk-ApT|FbwU|hp+nc1*}v#@<~s909nLAvsU)r>@x%^iz7z88Bof>9o#;hQ z_vsqpmZ^k$^6rQaq=7#Uh_AijT&RU>&Q8@a{+EjQdX#MlFMH3Kjo2>B_Vg)cWdHacYeg6`-byP=UdLVo$ol`b-w3( z-}!;_LlUw1xR%80NW7lJ8%V@qG#0*##G6RGxy$*n4&Bdn=zhhZyU~E|E#1()e?N5p z0qFk5p!++Cn+)jw)xX?zNiH*}!zH^+B;HEmZ5=L)3x|@olel@`f!F17#i-zQ;p7(J zy#wOIg+K(@^4^JFdL6t*b8qQ8H`hSd!N9NUK-WR8K_uQq;@u?P)9D)QI)sVddr7?S zUm$v2hex?wBf>H1Zk&2!MNuAi{TIq?+mM&A3E8sEbtK9j6<)Ud=1IAw*G}-PGi@%v zZPeKa)@CT%t~ghsieFcPir+2$&YdxFX|7D**Ol%X;~MKa+I5U;oazd@6?8=QA;hM_u`=o*2X9&4k#n;&_(i{5$ zyzc?*LT;mW7fvCb(gEz62LQX~b351%iBIFqihUrkNT#vY)vkpM!Zof1BtA>xa~-Z) z*CG<1C-G$!!uw?3>uPib7!;da$GfoKdV$0jNqni()#7Spq_mC1?f(WSt^~YJ42PF# zz@X2iC6jJHi<$;>d~hW8=YV1x%7V0eCqXVg=Bmwq+VTf(dBfgusN;;>ASkYKovyL5 z)hZi%g+XzR%El01EsTx1M-H8EnC9H4BpQo#uImB~&F8CVezV^uj7pceu4QPx+;xTP zO4n7ct6kT)*1OtW9WIFCw@G}5#CJ)2kHq&${D4G==#K~~ki}2BT-WJnzR}fXeg$aW z$k41ul_2p;5)rbBJF*I+L*1NX4z;{1KQc(6OegQlW zQ&Nrfe$w@Hl&{_O6p1_9U0}H^lvcl|&ql=;Tuj$*6m!?hieZ^WI9M#Bko zz;{C@q-z9fH1MYD9gRHSR>|`_MxFpR#01*tP2onRk6fR?tkMOF`=Q+h{`6CbIhSjP zZdCE3Updw=s!&~iSh|4)%VS|2x@T@buAQ!LLaZ-c-@ATfBlv;DU)o(ik@(-x5&Wi) z;8!?8g^ZxGsdW##{?mo9A3-L>3a6Au#odBb^Src95fw?16_a9CEQ-}!r`VBz-l@10 zMTu5o6u070yoyg5pd6qKR1Q=QQU)mpi{q6;lp)HY%3;b->ndfqa=0=={6#rJIZ`=F z8KuN3aZ0?Bpd>0u%4j87Nl{X*Ypko4G0IrwXyq7XoN}x(UYVd|D49x@lC9(@6Qu{0 z$x5#E3}vd4r{pUIN}*DuOjC-L5~WlrQ>H63l$pvbxzKvLGFO?W%*WV|BN36#1QP!w z@o$nik_3_@l1wC7SX52PMv{Xh7fI11xk>VpG=QXmBppQ3!6Y3*(xD^`C22TGBS<=e zq@zfRWzMEjJV}WpjV39Dq%`J%DvcrOXp*4eyh_q|k}^ojA}NQYNhIZxG?kFRSt=xH z8c8K2m60@qm}7J;^IMhXkTj1ZKOwQQgg>iET0l}QNsCFUC#jL7<4FpT)XFl#N=r#v z&iq`Z6G%Fdq?1V^l1?S*G?GpyX$?tdl5{pn>qt6}qzg#8h$NOyw5rOQaVf~2cR z!Yj11)vZt}l`5rLsZkav3zb@Bk+N8+Q|grlrBP{8j#rwMfYPG0Dod25$}(lSvO+mQ zS*e_;oTQx0Y;KfOlv9;e%4y1K<#go?WsR~{Ia4`HIa@hLS*M(%ALw)xnaq!q z`2#ZlK^7lbjwDMCSt`kL5?L-L%WY(NhAf|u17ts&VESa=LiSh5{w+Cd zgKt9zf2c$eBaV z6N^SC#gzn^S1V8J{r}}x7Dw#gFre_5_4MB>6L;Eg=V0eBb(Qw?trl#Omd0B6V2Y=ahJB@*E2fzqUlzDmiuo$my zu5PGA04Jmksh-gcpDKjkt*;O6_YJ*Y1@xWJf zhf~SwS5`)BGu-W9H)yS)vAMpyE{M!o5|-+!{PLFk*1BShueL!YxmwU(=zHppsuCj1 z_#=+VnB!po&^;!V;9vxb?wu+*{mO)h-9~)ztbDl5GiSpwj@FwL|IkShDZ5WH#tZL4Bb!qoUh^aeDB_v>C5u%NpIyDAx{l>@i!Z7x zZ>hl&1>$Rw8L6SVums*6+E+oPO0uU06$n%(*=q#pLoSGRvXlkQny)z&D$0K$Yv}6ct&{Q4ILKv~Q z9IY%^cPN{Rw&^V*QqE0Ai~szjY7qqD^=N$Ys*{2Wy7-BWtqq7g2Cw%x)xm*%8$Y?a z9D%z6@dYKBc#2e%!E_w0=&x{~Uttl+tD)1XnG8Z!ARN-cYhi#ZGLsGIQTJVv2KklB zh&=`^gAugj|1O@Qb?+u=uwR)GvFqO83X(2+_@=tQlQhJy938Pcqs>5bWxOHxBeI9+ zVfu0%=2s@}vdO*{sb7Q~p|?KFuVhASJ>t@2F#VypdI4Y#sDy+aiH_4-KHRTlMQphq zXs?TJYOMfQia&m7bwgrYN^C-0N=0nt!t$1QI6&9bE{IzcXlw|E^=Q56k$$Bva?@J! zSEfMq4hFLabd{{BJ@xf<6)K{t^-hoRE8`*(UT?0gE9DWX zd6C}evHekV-&8ibxys*EjwH88X@Pi_ldJ2PiWF$6@T-4^4!%+EXM$gu5^?axjP^gU+=Hr{~x-q7N9hA$}Z7gp~$byk2qz!#Ac)elZ*-k(Onj{F^|4d z@3q*kv_$N+Z@Sll)Wq+eMjUiJpk{6LXB6kBhaMS4x9ejm?N8zBV+MA;HM(AJdAeWO zY`o<^kCVt-qb$Tc?st3Ct3b$>`w zzaBZ)O9$MnH#oPyND+N-L2aOs0|`dor#Fn;Ui)P0ZfFP~l5q9uA-%KX{7ON@X))+D zSnn{t)BoSUqVcHS3!+#?US^}kKISY)RwE>5w4E%YlJjF$eFxGt&2!6kyC_Hp2WM=Wk? z==fjP$B+1zryAqmJ1A?b9f|w1<8pRTjx9%KZF!&s8Lq1t2cDju>MujEeSf%Mct;;v z-R^|*Q^{|)Pi~_>)Z0c(_sDu%AAF^cUFBzbQ%$?G-wvi&1L3^_9QOTn|498xA49WW z86R;KgAl6AD|Vn)(uC~mrH$FuO)U$1!}2@5*%rT&7qQu1vlRS>25-Rs{g}BvS=rBe zA4~ko-GxQaUm!-(TVC1UiDVxw_m4;I+Kizv40thCy~mUK+lfT% zQQe!BHIz3m??p~AFcVVesBJf?)R-ep_J&5*?FqIV5ZS;-wa2bj=myp#~h9jvUwu%C!5I5z@xfQd z>Opcjy5x{&PM5&A^)0@50ui%Pew=dE9AX$Sq<4tj7 zT~U*m8m}vjC>;EP{>+KJZv10r>!Y~ZucSmAMNpruOs>c0LK!WnZt2aM{d!~T`->BA zELAXF7~k#YIZ{lO-cd(?0rq<@Ngv0T;TKz)XMW6rm}XeO#w?7fjad}4IHoS9KBgh2 zF{UX724B~bbR9|8lXL?~8%Vm5q%M+fBI#z5Hg?4XGz-|6rCQS8m=jG;dv$Z)UE|Mc1|uN~XOOyFbgMcMnp%P#kpT=B`|i3hBkn>=9WkrOud zn83$85VKV^5RQ3>83;=cVCG^v*u=5vi(nue^LWfl482dpJQ?#;%+oQ?#5^1GT+H(^ zFT}h^(nBO+@*XA$O*}%(&Hqd@h7`tw(017RZDXl^Cm;@QwDkwJNE!B&8_t6 ze)#?a@co>@_Y0DqHsJde;M-T4TLU6L#Qe;l^<&IWBt1*ga~(0i#QaLq^CZ2v4*~qA zJBs!47X$DM48WGP_MI#>D?)iiB0{(9wgSCwliTdJkn|Es+eq5p>9&bm-7sy2s|*Ze zUr`77KMdU9c1O9~o^V9=k?nSydjQHF5MH*AEV}ygxDRpE;4!`$&euY0)raQ6uJNcR!$Bi%>2N4aC&aU{J#(wii`Mbg_Oy+hKwB)vz{`y_op z(uZB{1P#6JWKH(E(;0d{GSK@;x9t6HKX~^&c-<2LUiT!DKGwnOp3)^ivTDPT)v@L7D_-Doez@Qz`{BN;uU*e%sJjkj>%+_5w&lu|!b)Un~yUKl~gQu(R+cE%2E@%FJb8YOGmHF5%(j@PfW67KYITG^j^o%i%ren26}Gz z4)#NG6dXa>2OP)T#!}zrW+4*Xx4Z8knI~E3aBp_sMY2dT!t4RT`y_ms`+hfKDlqDO zfKjh3F)G~3s8^Qzpx(sajL|*jeu^RgarYDMCrLJwY$4g&>3-V%43IC|NJcQB|2^`z z0nOXP(VUlQI(1S>;ZLVM5m@!kz%7ea{`n`95k zUXpzz4fXn6qQv5dA(R%vp4 zA2b=$HFQFv=EJS{j3!ol)@bB;hDx4U{Wf7#TIWGNsV>jCp7T8CdoJ)?=()&qvF8%c zrJl=3&LMds$&*N)OmZ&CQ%IglavsU~Bo}mfuF%Qz8coc2IvIHu8ss^xTg=ScPo4jO zn7NHnCp>tI4C>t6-!{*)#q$soE)RGfB)OR6k`B*S&%-2_l00Kq6uKLGK!cbb_dwZ$ zlIVF-CE_whfzPN!JiQMh9&(XU??uncOenqN+2+|!@=TIvkvzN8^NQzHCY0uoJon!q zl-_}$c{g0pte39npMUI| ze?J@~ls@r%uA%oc6}|KOojYUVc6$EH(EE+&ThDi%?>#?we)Rn0`PuV}=U0-CBe|U9 z3X&^Ht|Gabj8SbUTz2bA-Rri^Y8)5V$zq|JIH$o=)-%kcQDBfBsX?=hjRXeu(!}#^e2G5CwNa{M77e368|r4K2@jpT<>|_^GRMu z^0_3R*Xg}b-0HoUWCX2(+Hiq7&fPwr-DOnkJ-u()=DiY7zA7Bb3vYhyln*}6yywi? zl20u^9Y0%z{d$yb4=;P_S7-**!9HyDJVO1{QJ5lJ;|7k>%BK>NZz0# z`I3I8(WrEb_dbT?TfMh=Z};Bez0*joNrp0gImuU$d?m?Ok$g4D*O0uP z@`MrtcTmB95`wxKg&v0-KZhrYX z|Hes=U;O;T<8q>t3mA}nQBf`*7hYEEh~Iuj{nQsa9dA81JFWJz9{KGPeI^yXKAcSB znC3R1*ZdiqHOyTkIqY-z4gh+6PM^!C_@aF=KDW=~^ZI-~9IM_z@|`4aCiyOs?F@(fiDP^zM7~`r?6JUjoSw>ge^2?oSN+ z#`?yAHhf3>jv*O4-ze~a&J9Q81&0nl?9L0bo;b^K zPw@k1K8DL7px2MG$Ay=DZuvPwHZ94oJ+XV^wntStyaWvExubxhC=Wm z$scw4Zui~6(EBmTpZpupdmj*ae>ftCUGwhHnr|mub?@-MQxB-S=n@sZ52EZt;bqUA zz37X_vnM8;)6%hUc+sd$LFoOD?=cO%04tc+XAHeJsOZJ?MMCd0zE>G~pY=WGd*1hg z??vBBzHPqkzL$MK=@%q_Nixnvz9JbnpF2tZhU9Na{*L7DyL_+d=zU8^?|TfrKN#r! zxf{K|??>-HfZneeda)uu8tDCwY0fwJeqcYu-A?jP+9%GjEQXBxukUx}E9B}G2Sg1JKw1Mh21{h&+}bffWU%}#0xXSdkpb2LYTBZY2Eft)B>4wOa)79k zB&tRr$pP*GgF%u5JOjJ~d;Wnn|L^RA{D)~#FmxFqFfxkYYG zvCHi!NlKQGB*g-i4pau(7OF_TCi7mC@=~Ztd1;{NgeK+Bp(f?e7q}>YzIbti~^@5X;qL{LQTpm0>x#?D+9$pt|qI?YmwpZsJtc$5-5_{A+JNUMWrQcE2DRY zxqRt(tRbVoap}t&%bSTqrX1Hu_5f8h*UykTwU%e5_?F0Dk++ezmA8|(mv@kNly{PM zmUoeN1qy%B56?3Rg}LF50@s9(E&o!X=ula`VD zcIeZyTQ~8aecfqx;$6xc4e;_A586tp(St0@sBHuY80?r%| zDAHZ}>7w$5=q<@VlFyef0Ll%N2Pkh;zDT|py(P*Al>aI4mgFl_(&Vd>J)p*AxqT(6 zszYWT(AFHf-P(e9OY*hYc3pDY7w4}s_jC~bf)>iF~-`+v$az=hWKI)zmN8O6K%2w)hMgAM{3VxMe zm0y!zm*0@zl;4uymfw-z1q#hZ6`-mDRSl@>K-B=MCQ!A2str_~nEdy|fct0MQB@Qm z!);w@xUDZas#L50_r}`)egIXZ;Q*>YTq4c!fpbzyVNURoE0bBsT`C2~bU=3a7$F2Eb-OHGc{QKt(VmO%cjrPp0@Vhnwm`K5sy$F0fa(ZTC!jh5)di@oF-7w@y^2l zsJ`)~R;phUgl`|jSJ79|53d10y#`b_@!lQ%pL%%4hO|(lct?SY zu33tKK=sU0ybBa=e|)TLJjGDOh`26?i@NMh^fgMIx*|dZIz#b+Vy5Cl#Vo~a#T><4#XLn8P_F~^22gJT^%hWX1N9D2 z_*)GE3V*A?F-0^X(1r4zip40Hxhwv0&0jP&@H*z zmz|0|C=SIg#crU60X00L*sItF)CizZW4R0T@f~x;LB-*?hH(!j8kCW^42FSpTm~cS z5dYM$B*Cv0-x8yALh+5_Bv7M)!uiFRsN%cSPZd7^HI`T;ilh=e_My~m((^tMKyd~Q z&Dmr_v-iz+g-Hj>7aZv}1gG9hTOb;x3)uFTI0x=0`*}`SujqovapgO=0(X6dS^-WMu1wDFfYsV>CJn3l?tR+iD8o233`

Xdq=0jN1Z%>`;6P+4eRTH?V@FQ;o0LQ&e4m@XGlI+RYJqCkBVQM#2lkDU+H z5)qO-Ny<|OmAGFasthT^N}LWZ0BRvni=xWX$}+@LTnrSZ9c=x-LHU18zWG;-k0@VC zNmG_f22HnlR_{AAE8iPVUq3MCVi^;GQdtq(R!VL=cxLk^(>m2IHSO)cx=-4bf!n1d zPf=M_SwkGnl(-g%zw}ZxsE^(~X)bU3A9Jj%uWTd&t!yX)y&~7%(#vh3?1(@sTPj~x zwoXNf*VSs}bmh#r8Zm2S4^TTEtJ6H?5~9W| zWkeZOex#hQT%cU2T%=sAi~+R^sNF!}N9_d)9f{9@+7HwhKpg<;U`)9*p~jW**n@H{ zQRA1A8jobh9)8GI;}cNhXGD!VfI1|paW_%po?<+?fWo8%UHp!EbV{;1s3g9d@=N6* zppF7{ETTN3#Q%F7sBiPouAESQN9@Ws%9F}(f%*!luYo!dRerDhf!LLAfI9g!*p;(r zE6yd`igBacd|c;Ll?7|sjJ!K5&3Z|+E5Bgdi^**-ENIU4T3x>Tw5-v>-D6|dJY-j{ zC`DKAs1jX0{H4D`7L_-|nI7)o{im0lA$v)BLwA*b#2Ln=NCfZ4T>B+DsZvxNuG**y zs0yl{QKhO1sS3+Gs$?o!#i&@Iegf)epiTpI2B@<@;V6ZxHs^u50Msu)U0kB#;~=Xt z=$fjcsW{J5l^`fzl2FECC<>r(RdWqa^<;(ean5_3RTjiqg%AC50%w&2aaK7~8>H31 zHE-$)$rVjKfh*sLvtD}d0aX~qq6(@orhgTvYY|mRRVkpZ19dm=a8^C9!hH)-)eEY! zsuzK}0Tli`x1y?Ys`3Qq+d$oU3UF3cOG#5zPe#;vZb$E%JF6|9*{bK~!_WPOC&q6+ zqN;^$YbUpTv%|Xna~@ROnB^{UufuNz@R>_)qN<(>Gw5(NO4UHb`8UK;)mX$CIZeX3 z$ZhEjwNSOi1sGLJ)yt|@s@AGkR2UGv2h@F_{sihTpdNrMMO=VUbs!5cs?PBR7+HbD z0*vgL|9>vPsCugU-~*E%QuQVaFtURGy8!b)izw2wdPDUVI!mfIL6(~HYKzqHUDXhA zj8p*`BV~nieHl`xQL4%4=cq=j-cyZHja7|PjaN-jO;k-%y$>=O$Y_u;AY(zsfs6;4 z0J1cY;b@l;Q%y+>k2B(aj%pSTjZdrpm|KbT z8guO@bvm!QLFm1p`bBk7bxCzubw%~7>ZN?2GAhUoBnY4k-4l)PGoFH?7%ndS6 zOm#Cs@7?&ES#^)l>y_yBOLJz~3;FcsJ-uoyQj(>{fz_9wSIr~6C2khDL@wgZ;D%JZ zW$%Ge7gNho9qQuh5+DnJEErKM)CgAyWY6XuziOS@g#4=YYJ=JcvM|U>f~-_jZB|Mw#->Ry7AoaWI!62&(vU(t^A5{-g z4<+z602u~j|MRf5`aJ}4Ofry#UfGm#V_TJiOZHF|K3;Vbb1@L!@z{1ka@#@818cti zv`Xih_p7bgJ+Rikhv0o*J(W;+R6RvBzKscmm|Kq&Hc6&11~#4 zKdIAv^-4nT0`)@mBK2Z*Oua1WG{oP706nH>=lr;0a;s+wF6oE zn0i%$-gOCjHxha~Nc48frnh%Ky-$GNJ%rx9AnPd6yFXWYkEo9mdXK7)fvhvgxGpH~S(VpJ|K{w#`*Zppdx+la>RaSV-yo*9 zr)YX_6Vr=nBsrMg4Ch4&#Cz($;`IJ0(%Xm7i(4U(dhGfL+p9^{q#?bULYl%FN+Z+I z8b-rvI1R7CIc`6Y;ZQvQWUqq^2Wp&pzXh_lLG}*F2F5h$ae6hyG{rR~QtTQ9p?8o( zFMwr|}>Dd|^;;X?4&ASPFH7>-LuBGvi3k#KlY;gRJA;Ag>iD*I^ zT+@wc!W#5whk$HoL{nN*24urPhNT;FUwe8C`z(D+Sxq@2#G{&*MDsHog{Y|@3UNfT z5HqHqk@{8D)I|6-)il*LH9$5BWTQd$UQ|;{Q=7m)24rF;2>Cf5yBS<{>F+(pw>lc{-C^O~lcrn{zxrl+PC$S{^Q z8DvvHHWg&kKsFs@GeGtM$Yz4Krd@x%p4rYr8g&V}dY;g{QS-P|@SF>5OElw{! zAPi(J$+e$E?=H2K`Ayb4PO*WSc=o+`Pvyw~sR&*4)?P z@fA_cpPIik4?wmBWLrVDEvhY`El3c?|F%B`2y5w-G%b^iW%1SfTZW6(EEDVWRh6{m zZ(0e$S{~a9$!&ifb@z)IyK5ZyaMFpEn+_je^f$uV3~ezHVQoB*|#A3?r8uR53$hZaEQgvv)V4J-KzZV$*&%{ zTdBiWokW1~5DRS%hght?S*T&bB9&{eto1=yqqX69DFvgoy|jJFlkQDs#6KXzxmLE3 zUeBA_cj5rQEdqQB4e-Av$!UjZ#}R;sYKLiuYe#5DYDZ~DYv0q3(T)Y#&mcPuvNIq% z3$k;7#hqk0;Qs=$iy*rc(~eI7{C)!9X$0WQ62MqO%Zm#cXn+662lxp9{1E|oKFF>} z058hTeb%nft|o$7sYOTXD#)%yv}?5JO5t+hEfL*3sf(!HsNGBycvSm|Xm`jNDq8dg zF(89=D*kDAG77hml)FQVJ2j%(o!VX6-5|RSvO6HV8`bXB?jy+m2D0Cu2IO%~SewI| z@bk;Jsp>SYG;P+JXKPv8-o|YpXtR%D+vCYLdq=?$H7-9>haP_L%;~yCo4X%E{)85{ zgb?$K*??#{@8$aJqzCtt_A;UOXYFb28SPo^IqiAv1??}|i`q*d`x9h;f$Ra$DL@wh zx**Wc0G$eSA)pJ#v{w@JUXQN>Yi}dHG?k#2rloaYx>!EFc~7tI8KhT-??RTKS4ZVW zuTIcqpf+@Ax^$o!pxKD7h^{Em9MDBXdh=xegHEB-AcZ=mPNh==%>yj}orV)%olb`- z3|oQ5Z_g0F?_c*CJ+W}r5uG(9O=n9cYxbHyI_|$-g&Fl{+2t!P-jEXtbxv&SN^ZM- z*;mtBHmd2EJ)}iACB^pT-xTV+x&V37J~X^Eah@ZEYGXCX0_Q~M`JW?Lf@;1M~QF-GR1b>3RZf6%oqC;7SVVt0T+Dx_(59Hljt{>$ogJ z+lfInp7 zbrW+t+AE-h0TB9MO^GW8G0gFRle4y-dNHLC>BX*(qW7%s8lm@`?!4}T?ibxf-6h>+-4)%hx~o7}1-cs0 z)qzICQWNM}K-UJk4$yUht{2l?Ptbc?cPF($ie2|Rp|`$7Z)2d_lG@B@`P=2=oA>zY z(eKOB%Ybf>z*o;AzIv{BaXqI`1G*uWP$PG`5yoMx>FEiP=!@w|TA;qTz68)sfNmPm zEA;3tGy}SI-eIiQ=}B6kUavRkjX*aCx&_cJ(IM1Z^k~G;A$%F=R^s>lhYq10(*pH5 zqy<(h`phd!Kdh#o(fZWE&xeibNHEr8TA)6Mw7}7o&kpO?q2j?c<@-LUFHGY8##kTL zmnKh|qy^Hi5RCO@&>^JThpgRHG8R#xRcLh2V=vRS$4QLcf_n5v> zoM(NrxO1p~neg00;<;D0bNEg^&QAd6OoB7Mj-C?E-E*_X`hNP?iMaaf2LRn0=spqs z8~Qha?hEvrd5G~KJ?;;Q>fhB5)&tP}fbI|UfT(_`ei*UFuLJ$YQ(%qtV-U@;$rkqZ zp%M)zJX>YmT=qht&Go+fNW^#oww;*V_Kl4ze)5m4`pU+GU$(IhI-`CFrme5{{B zFn&wKcsjAh7%9!cmrfrqjkB}$^WyN%72zF-##k@r6_TEhFvj`?`c(wph5AMM#rl|j ziGHbmnSQx`g?=T_?*cs-XnYMrfF26;FrbG6Jp$;FK#z*)S0~_Iuiv2mIK{5tMBp7Q z!8;D<_ko^FjPaCwdY=HjdkMY!fPPP+_X}c-59kk)3+ORGkB#5a7&lHgNFq6|$DJQp zdX&@nEd2?fCy4C+`vgz_ou0UQ`tOM-$;S4G{uB}Aq#Q+=LHo?*J&BYV>8wos1^uPC zKre~{ok|3X8%fYx#7}vYK(FiX6M^2)-_+mI-`3yJ-_`%7|6Tuw{vOcNft~^M2SCpR z`a_^+0X-Y&IY7?^dR|QbXI!9$0`a+?p%4*hmL$+<_FQj8zCQC_p9U72%_ul(v{87Wtf7>NP zH3Mbw(??G*0g~0=)_7Phy5v34YraDqW~dirvtW@Vi;!7pLU78g!c&n0@&G zKLLQTpk9`tFVI^gfCnJJg=!b7LoO0!E^t16&rX^#3^b5no?(yyJ%?>TBVJ%Y-(fq@ zB$XqtARcLWk9^B00x>#781{aHguQR(2(iTPM8g!q?Ng>56rZCBZ6-q$=| z>$S;amN_o}H6-&Pe&-t&#regd4}aayN$CF#@u}so;we42<%W%f-xY?HhE;~uhBbz@ zhINMZh7ATp^$Va60FB5fc_Tfc)Cn39^(JO{+=~l zAm4J1po^I?pGH*Qpc6?p9p^B!kreo=;RZqXs^Oa9I?z7={Ugw)qK2D>Tg3GK1T@;H z|2#lzxQ962PsXv!pb5h46ZHyz>^ob;x*?2?E}Gs4DQU)( z3j?WAj*amdV_^|pV<8dUGw3=$dc$_&!5KND9MLuMM!}e7OgCm2ix`UO8|Wi z=<`5d0Qwi8F9LlD=*vJ~0UEubt1+V@j;>J?56l=11l?;Ax;L@|Gk5aQ&3kl>K1A1u zYggA3=o&-B^3Kz9R3(SHs zRzw_uzWq2s17i(i?YJ6iiE6z2Se+UgTN5=lGB!3gF*Y?eGd4H2Ft#+lY-|Pe??C?n zG|uSm1N|q^_!~X|CIy%Rz!Z!bUrDI3ecX^3JEIzzXA){;3Q2~9$;emZ6Hp_bVVh;_ z4@|10#y4^^B*u4*q`-@Dun~YM3=9=94mAz~Mh1)^x>tFU{$U(#9EUc+_?~f$aV#)2 zFbptk)HvQa0c`@q0mDB9Ho-Uz$NA~W<9ylH+nc9dskCO~ulB%{8)g3@Ho-U(+kTkb zcK^DzMP_WOF#yiBd8@$H(RUuQ33H5DadhVqbeS}y&=@6_lu1vXj%B3wkdR+wToR`j zON8zLrbw>+q)w}hn+d(Ejcbf+jq8l-jT?*~8#fv^89xE07%;_wDFKWe7zHp&U{t`U zfzbe?jTyHj=-r;6cNd{oC(&!jrq`2C?-QW+D53WlFnWpJuXCmM2jfqK-XD#pfH4AN ziWq-3o(9GY3?_Bt)eO#f!6*g-j~X!$h|0C#M8tT7Ohg!K4$93~C5iBc@eZN>rty~X zHZXQz9Kbkn5@-C)C?;JpE?_WC5r5AAa1v)k@6MEicQ@gS%pI3{mrt27NB(V%kyE}P z)SI5cwyDX~n^v#xA3IWW`o~?)OztfFy5eu@O_Yfd={3mZ(DBPM;Y)cwL9eNFZuFX7G?hnfm|ilK1Ewr6FGfriOcjB72^dW3 z$SZnH)l6a-@TdvHfJkpSv>&G0qTRt&<9~($GYSonMA*R81nD(3G&M3c1_pnwO2AZ( znwpxL5u05Fn5s{K%{IM)M7BvLGHaBwQCCxq^XnT-T0Hu#IV7xd#MBTmbsR>LiU}^(X2bj9R)B~nIFb#ld2u!1x>For)?1Vwz{l0;UBpBmv_w zA}zTFStUU&FvSRo3r&kmi-Bng%*(*Eikg;~mJ$+M1B1yU|9M2kv`yNu3Uwz99sEX*y&&Y&v2( zYC2{*Zu-jfwdn*foq*{KOc!9f0+R{MtH8VlOgCV<1JfgBI+-B&2V7-8m|{2mObG5N z5sY~lxXL~j7eSZ-`3OG&gs%~VuLILdLiiRUtQb(@Cb@v>P7oIFe__WtpELitI-eX)a6@**|AR7M4l+QC8J19_`2|#@xvcp` zase|Om=WV8Sx*!uc7BvF+n8S^!fb19XKruqVD4z{WbSP4V(x0j zv2h|WlYl{eO$KHPFjIk<2F!F|W&ra+%=}tHm_6gpj+q=^%gmI7IXm0gS)8xSC!k9p zx*P(`hmtOblaX?p!)^jhdT}m{()lHOX$$@s2^js^lJ=WYE8qcYOMlX<;)W1QiSMTTR!K0E2bZ8LvP82;3}-Taw(hk2)YmwC5& zk9n_oA23USSq98N+y>o#9DUnTTjG5-q8MqoBY%-785D`7-9PDP%q8Jq8zeja%*ObmzOT z|EAYc+@cWawa7(!cjfx*qz9+7IFVk9-eRyAEhdZEVzF2)HjCYY(N;9$dx1fWKL=(% zFkb+30GNZod9teuYvg{?<}yTsYUbzk6O?Z zMEFji4j+A{uk@p}v2-8+x3#phvcfh zFlQ6lBV|(l{lN{ij3NLJvb<{T06Y&EsZ5F`iU6lBEOC=uq(&JA z8^n8du)z|uEF<_Xv7lRZ6_{%g%W?}kR%nI)H3Q@^f{7A|Yb_gy3XfXWi};dKDVB|* z3Cc))#&Xtz$o>foMwK1_n*wYB zU<(5K46v!d76P_#%yJT&@4%j>_m0~Swl_Q1LV%Fl;62S7n;#Z_atqQ9WDP+@u z&3FpzsMU~?W;G_0b-Bm*w>ErIQ8Tqc$BiS3D((^rtrl!+O>X<+?GxkHZ?E2RcHy6= z#Na#C-xOLMRh^D@SOA+?^xfB3v`euP;aiEA$1yVok#>a!aCAA$~xNmo^_0MtaY4qymbPw zeqaN@27wI$8wR!{u%&=44Qv@;pN(0ucrE#3of>x#tsfA9O6eeMb~*@~pAPaQ^tq7e za}lsoI*4^iuI6R6bscKMy2iQ|*s{RB7_qLmZUFWrU@MCf&68A2>t^ex#Jp^=ZnbU$ zwj8kKfvpg=Znu6$%u7XJD?JV7WgnW1&y!6?@e1E$jJsOr*Rl1Q^s9HXEH1L6c{zY> z4<@(W^85?I@gu8rUwppw^RdV*^F!w4u=N;u(noNOgsp-wN36$jOA=d^SeT@hjtoYs zsc-$(N_JhOp0?s93p6j)iFr9LnkCGIdBh5d^^El@q4%uyob|l*g7p{cMe8N&W$P6y zeq&8wYXMsu*gC-01-2fr^?_{wY(roh#jMv7^xld)ht}T+y;3>|+e}L9XFKFOhk5TD z+6p7RHVRlN9mK{Uy#=4Oapb}}Tx`?$Es*X=4AizFw&JJ{TTxpvV4DNmB4R6HlLOll zSWH>St8@^X#%4f*ZCabohMvgFz_tRmHKtYCOg0qxR$$R2#?w#!HLddhexk!;&iszp zus)tGhx&LQY~NpN+tMogrhNQr_m%TnT_*(Fyx7*4Oz^$Uzt-+GvF71ni{Gk&Q6${* zAgy!Qg0_-`#G|$_;tOm$B+*t{BoPx#{z+m+A!!B6_JZvtkzm`4BEcPV?I*p~%C>q) zu&s)%s;!!>x~+z-rmdE(wylm0k?jm@7ht;rn+Yts6t4k`E=6}>djQ)rW~(13*w#31 ze{IbP!M!90v5&Mq!VbzO_z4i)nGlR`r+30Xw7r^}{k8SB^&|B5vGoNO|LYgA^|uWG zwm-0>Ajf0GUmho!%l5VnJ;12#9os+q<1W~9hcnpdT7MQT&0@3XD-^lXY;y`F&815-ifx! zaeChu>3s*iVB1s@pkfE+KyUhb3B;MU*>QStIT-ElySet0Iz?^E3B4cL=Gzw77TOls z7TaRBCAOuuWxxWkLx3F$>@Z-513LoPk-&}ub~Lc>#cV4Q^sY(JyMfRO$G^)P?eqB(PfW9Jy0iEK_>bhipd)!G~=}fE^F)goy2! z?KrR#ft@T8oF^-swv)E+^r$ueQ*e(+Arvp3VX#oE^!h9nc=IW!y4?VNC(l^WIbr}Er`s@8f@NZ+=JIQS` zPHeefe|?RyLzU--zpuQ2v9WCMf4AL_1B@%e2=L5YA6??D+6&rw1lazJJ=I>wUf53A zWp>)m*jYOU-ev(i8`wF(&INWJuvx%HfQupJ{B zOMqRLcl_F)vzH~`@;sUSEk%SQ`dsRDNg}Lh$9%k~y^_7My$Z0)fn5RY%Ba1Xy*iAi+B5Cw zEw2X_0~{X%yAjw;zx~j>Zm0`vW4wc@o94e_%&XFlwJ^|Im&mU@x%yfc-pbpJSg(aNG|prr`YNUbKAy zK97aTIR4_=G@$b*&Qbm zF1N2DI3BgH6#bBch@*Xt=!bln?1yArYGW=R4@ak@OW|nyCi|8+(VIo0kLLOj(i`4k zKS+q)Y2RhvZQo|Z8` zKANz{UlXE#l!*Q*+a6!e2l@#BjoE=&_H)3Vl7Rjtx9PC`n*AmL`MUiEus;KPI%2=+y4aiEU@?ko{!oeI8q467l6gZ`Trbb2bGfMkR^j$ z{(8whn1JkHu`QR}_Jj7%6w_>~e1GwP7pI>p;T`lh$c{8e5fNku zuI%D3ed%%Rszc#Wi|9HqWQ~LCmB;F2ba)V5hsj}fSR7V|&0%*q98QPJ;Rg09u-AaS z4lKU!o50=z7T@+AVDAF^Tg>5&qw5I9=faLs1l`{ybni)XVUEg2H}BDPR6=wem4W>u zfv%%kZs<-;15|Fr(F%8( za4EzDCC!7eI%5Y_!h$&3J31rujt-8Fj!wW81nwE&QlpM8j;;tjR|q)V5B1+e-xERZ zl??LU!Pm=0Ua0%*mJ6SUkIme3RfN7Tw(XbP_MPpVr^@;Ae+?U2s_`qK?ZY2}{&mM& zaem(<{Bknn*U^eRI`RPj8AXsD++fET!Y??6IEFfgIfgq%I7T`~IYv9)1C9ZX1 z2TlMk4Y+jRGJq=rT+x_gY=Ym334W&_zg)2dzg&rIeoguOJ^_9sgx@G|#U*|hAiss@ zl(AWy9mLbId(X90;dH|2b@0Y*zMRu2sQv`d>RPGlQkSUoUE~- zFIV#3fC`nDEa`D?(F?1Ghy)+Ownvi*zMDFuLFJ=$Ypw2%+Y;XSq5MMxf93clPVfnl zU~{g|PI_=ZIxZ4|PdR>a{OmaGIO90$IOjO;xZwB&I3&^roE)r0ttkjg>o~&PR>bo z`8s(g4#gqh!Vzb>69?mxz?I26e4QnnN)cbDLd3TeO3;bmBEF?_z_*9AQ0+80Er_qv z=rlRazxbHF_xby}S^g6|8!m3<2Eb>gzHGlym2tKXFz{Rv;$`N>)D;H_J>iA%`N zAhr!9<173&NlWdm(Qt9!Z6nr=uZ_7ao6Y6D@p*6pNoQ&2b0WviXGM-lfs{u-M5$9b zXHDeTS>9Q}S0I!xC+2k1g;Wrm4T}QTvgzz0aqP3{HK~RXX1!8 zXT7*3c9J93xLOj&b+avTi+qfq0LJYI#_fTtEn(aVF?Mz?aEV;N)xn@NxnWGJu=J|C zJ9`n7dpLUnR}Z-Q5od2_AK)4Q*C-EBe%(p@LFXIjO>+&A=1B2!=uH=XBS&vq`q2hE zhY^m!Im9^>xW>RW0j_D(IovsdaNG>I=1&91C*w*%Kj;&&(Ecb9WFxq#~mTxR@^ z1g}chNT3{Weu+uH&V#_cmgPJI9B$ge5LPbh!BWR#PCS4k;yg~U>`t(Bo*|J|P2l!~adDkCBy> zP@&7MFZnQSkBygjmE}zR!49sZYFscBpZ!DhnKQ`SX9jo_2u?Y=Dmjd&o>`&J&$c)NN)SqijhT*XH~wnZryNZcg-2^ z{5{Wez2vGO;_Jf6A4Y1%BEJ8+?CGlJBB!jms=I2qYPxEbmN=>buZw7!TY8 z;3fh$3Ap!xn+)6(;HCmM4Y=tsSK^d4SF^Z(=pv`AaWf=*XJ-3{3-a-O0{D_s)?8@C zKalVxr>vzeEO3cjm~TXq7VwrGr*ZXjkuATj{w^GjKLl=8#Px;?2jtnn&C5f02f2V~ z@ThArk_+4%)SzpqXhP;Dn~;pcCne}dxyBNHN4ws0jR7tTxCn63sB4^SJmL2v;O0LK z{7ywCrzJD_P4k-PXDh30+q^mL>nSaN!rVaQ_XBJ@Gr8@3O&j;lQxt6bA4MoJn)*+_ zF8zC{+ZosSxE^sRK|OwwYd5LW71wV>kH5OEx~{pdyKcB{x^B5{yY9H|0=EUYt-x&q z4v|LJ_%q;k0Ec1OUBK;*xqgqkgRVd0_QYL)=y8vv$9>uMA>wx z=+TV_tv$L%k6Y!|qBh)Ww+6V+f!iN(>)d+az5ot0Kk{nP-EDC@&?>mCZkyW<+yUTl zUi4+u?R2|{RX7CP;iteVxG|*X&LN~%uzU9zmCICbK5y3_>AQ-rP9avoT?*TlPPPhj zKkaRNc}}(9rkH=p_G)!A|Mu$K&$&q!pqpd?az}|fTw)=Kw}|{E!JDAaUC~`dMAwZw z@(|tQh;9iyoe5(N*zcdjOPy-DnJOd=1pCoioXQTUTKDti;UG)62+&zH%SwgpW zuIRquewzsDO*hWP&j5Ee;(o_H5IBq{Ud}^whqy-&bcec!xrYOH9=Hp@{StMLbdMtF zUIY%E)c<@!=Eg&G-8meh``hVvri$5qyH{`%S79^R{8iBQXbR`Kqj7X2BDz-}tJ7llT7quO zy~MrLz0AGby~4fHy~@4Xy#~1Jz}*1uCUCcayA9kO;LsHR2Hfw!{SkAoOQ5^4Q0W4= za_8Pc(7h+2`zM};h?9tP;OTsHp8&f13A$)B?@Q=@iRi`)c^6~IV!Kq$J9{4I{>n{O zbKPINaXkJDxCasUN%yzFrvQ)1D0yaiPr1(!e1CHP>^=>A0pJS)|4h_<)_o4~OiE;%!%!VuiCg_ajLjJR{yFfzOJTbEYO?uSQ(% zGPw*{q?7F7ZTD~FN#8-s%TvVix_?K@%gcxzO){bx>K#(Q2cCi=!5&Ov+5wmnR7J;3;d5_M1JWJkO#wJf%Hl zfL8*qig=#$JP*7Yc&$ipE|LDn521R>c`A}`DNmHEA<9+WK;=^3=cwF-Y(3RIc=}q@ zQ^Ql!Qww+<@Ot14QBNIDU4pz3c$|>_=N8-3Bqhz$G#UAe(m0$teRZv);AyaRYA@Gjs{C?4Rw!25vr$2_=Og#7Ug zNTB-`K{p_w8_Gua#e8(10J@_Hx}$*)O6ZQw72V06X#}b%o~gixfiD^HO!v$Hz7+5; zi0J0Yh7r$fPZptYj%TiC9`L1s$ARM6s3+pV!U@1X2mJF-1BJK=#FN7&kae$b-s;^| zRTHV&vF8`-Q!woSDa1n3o*W8E7hSgfy-Uv8yJid@-{j)0xerZwJ*z#Wz)b2<4;IJ6 zU%D(QelS%mnlSLu6n^3%2XCaF_G}T+ed)0}?eu&}(B0+P?b+km>)Ge|+_T^Fh3A0h zAn@gZuK;{S;41-N8Tcx|R|UQr@YR8@5%U~MpnEJHJ@uR*=+>0btt~}Q`R4iPJ^^&k z5p>T3UrR#wBBGnxtkAsFW~qyz0A^VHCEnL$`^}!~o?8Up8=jlM*8#q6#BUec&4a-!SS;@fINXHUhr!Q-H5mmXhYBlMUmI?Z>AI1uL{2 zDV#TET(7f>;OphEEuY+W#o*T}cV{a1o7s6+>BbYk!8IhwZ}z5pi;DPqi-`C(MI-7h zF8aUClJU*p_9q+=ugXheim9i)=(3>S+#=V0QYW+5hXi{qUaQyUwR;_2r`P3mdp%w> zvM&SQ3i#H*zXE(4;M)S<4*2%KcL2U)%a(-j}^?5MggCZ)-2=rW^3xf$tIZw)M6n2=@fO*VBM-SHvfkR({ysrcYFLd@8{nAg#PisPk0*W$4wyK95#V;f3M3oDIIEUo89W(>)Lrs4I=$tVcV~h zM~bgTG;h>mZH=32-tY&GE? zPvsL`!J|GBy#hXp3jEhNjL+<|Bf36|&+4-QKOgu7z%PvY96l#O7e^?BBZ^bEv zWVn6L`d$#Nt`EZmi0+cddTWe2K=W{-yq++gvIT^;}Xh$&*BK=Yh*HCnM1xm*LYO*annZB+1~KW z-=iXn?_t|9$!*s!X!OUuwG~Q?8u{(fC1qvzA7XL5ZxVUZ6NnSN6UVWL?|rP^%kLtQ ztR(*?CKdDoeZz*9o;*0t|^3C@x@GbN$@-4={ zSpxh%;6Dd`Kk#1we*k!lZG8#+A>a=KeBCould`WPz9T-A*a_gj%|jD> z!uKsv;Zfg7lrHe!pe6B%3rIZv#Xsk78LC>65P$ZaBjlgZ@f?49r0pXwauMDlN9+gr(Pe>;40=$fJBzg|3K zW>d|!EMl>xXK>f|N1R|>_C+iFbFR-W(aE3UXOUok0e?aNGyYV6A%9^%<(K(sKLh+3 z;PGLe1O7bl7l8i-_=~__0{$}aS7LrHPOv{cPO!fiA^2B`;A`0g-^(XB?+NyskYK+V z_^Szm{kGg3XusDVKyCPaen0Tnfxi*)2mK-7Zvu~E$*cSge;Ggefl>dn{^$I-ynGAz z+rZz6`pf!XBoy8S{Vv-#>``HAXRr#iZvL#F8j%;%_dZ>&I9% zqI)0FHKGH6=Q?7)e-3+6r&s)$1l>0Nw*Geh_Wln3j{Z*m&i*d`uE75V`~whDKqvr0 zK@gq+Ar*u|AQT3HiuqqnpxYz9jO6cw=nAp~x&k9DBMBw)(R~8w4kqXV2(*OmFhn<} zP1e$j9^)TRBsJDQ4g?kiF5;iyp9lgE0#Qe<8#Nz4aOI!sCp(4x(@?mAK!of60EH{0 zi zo+-Bn1Ud5S|A0I=^7tOb?-u`F!tYl9Hvgyo?f%dFJN!HSyZpQT_z6l7R3NB9(14%? zK?i~!1Oo_05KJ-uz68Gq5~lYs;nytjYn4o|;LPXu3Gn+P;rA2>7Kz`}xtiXK{>!+5 z#(xO}TbBO{2#1wg@&@EY ziKQhaJ}V{i3YGGenDLU;g;9GnSgy$oHl7Uhn zyZ}OlymJHt&j;`zk!awBK-s{HAe03G?=M9IS42z5ZH3qrkEpnC$}-f>4T(4XL2U&6Oxwj=mTKE6)?-=PHGVIVY+ z@Ew_(Aqk8RkjP$OLI8cgMj$kf1l|u!2B8TEFXth;GXk>+x*r5)20jF#DG1F#XdVsB z4$L9wwg3T@`JcOUf%%Bzf@B;c->wMsUR&Y#to2)(-b%Z+Ohk7vwv8pXo&DUsg^h<- zn!CJBr`oQvhw#u0DUuRc79iCHQ;!B#i0HOL3InS}cdm7^JD1)*;Ry#e1jKTIrvn%O zN88&b*KSg$PXqf2yxRkx1$G2>26hE@2lfQ^2KEI$2caDZ?Lp`OLProffzTO*E+BLT zArpjGV}UOc@E(eLfq`QL-q$2}yJvfWZ{)-K1mOLdzZA)g5#OLbXb2jErl2`! z30i};pgrgS;cXD!0bw8rgFtu}gux)-tbYgyLqQl83%cU?27PgSgCTl#%@OxSZy3d%0@O?GdojmE+NGNI& z5*!KkAfc%D9}$W=C=uK*NUF^s!8o3x0iJ>c2YZNi8@oOt3=8K$s4~3=lp5VI~OZ63qf(HVAV-m}3t3{E7Q zS%Z@a$XOD|QJ`?zyjs1>+x$hBj{z{OPnhr)mh)CFzQq%I0#hS@S%HPA& z(x7k!a;NanY)Mqhg2WjNE)T8%;Uf^{M}n(@t3g-*!Xgp-JlQ-K+z=Ff$D={?9g%ZV zhDSb!NSAUxTDqSGcapJUd+@X14iFZD5CdUJG`K6cn~W7pK|lxiKljyx2k^NcOy>W! zy-P}Y=!(A%J+k&#t8J5TX$VdIVQhOOx$W>%o16Zzq5NB`PkmUZ(XKNq9~vu;2fs`4 zEeL)U{5p6d_)YL+@LLe@O|1lB6$tpA)_|~fL7~#f<&Omy1b>oaPQ)$DuNT%qf#M)+ z0P4lT2il|;X-;&MP;g&g%bq>EquBoUFB_o{o1(xg_UzxIBWh8V-8`Y@O6__KXxEqM zzfHRGpZ{2IK&L)^GCOv{j{1N8TjfrD`(^fM*DteYk9cqO|9*4*%pN^Dbxib zVQ3@ghWCPa?g$x3{}cz(O^>6-P--X*U7=8+P~i|2l7;9H6JkSLhz|)MYzAQq2wOqe z1_DZRI|vvXN6qd8VOK1a9v?$P#p13|NI^!>-O>oUH`^7;FTx{@n|U}UhH&LLD`W>@ zPhw0A;qKx`Zzc`}LnTogp-?Cc!afi_kAzBvN`tT;goAlE9)?~BVFWP}Dob2|FNg~e zA_aei139|@mSG8rhpL2X;E))q8mbnm4#Jlp90K8RG*mNGiwucJKsfpo42hwJDQTfb z$-`WO#rF&Sw7lM|!S}V(7wsQdh75_Jrr5Swa$Bg=u=jVTYh0e#d&=r2#a_WA87X`b zY8h%R(i>_e(o5>_gvyC-5I(*~xIv)~p&o?Zj-gJW&Y>=$uA$7(tD)CI-9p_#_!@*0 zAbbPDNf2;&{SJihLHGfLA3-=33-wIU+czFW482b1mFn;aScj)+-1*6`!}BEQ9Zu*S z0fJPACo~%AE%asKIpl(ZEIBztyk~nfp^2f%gsn-T_dz%V!r4e@N@yww=RmlShXl_I z%_iUSAtCrYA-M1!Ohhc$B*#QV3EyaFA;I^f(EJcOSigX95rj+8(4x>{g70Mzt~?F+ z;sS9fhXvx3Em~fhHm=qyi@H^IHrXM=;349>7Tc~%#Q_?ItVvF zxCz275YYDD0pTtPzk%>O2!F&v2NL)mPT+f-;49VQ5&o3$O_TkeD9OmP?O@o%;6g)~`{&o_)~m)+IIUi#~Vzc71%W zXLjt@^+*^ef#I}d9M7)#PP1V|o!f)629}9+@L*A+%}2sTux-)gw##2A^jQa6J$=^B znw_sbv-F`9%y5Y?sa2hNI;5!HIX+=N!8&J4dA zel6TB+&$bQ+%wz@()5sKfHWhdnIO#!X%!xPNO*d92Bi5Qt)wW+JlT^I zo*m92W?@cvZg?J~`5`R;X~AeXlKN@*BS;Gon~)Y3zb~%_`8MhQR|9h-jHPA5Ih2;! zaiw7Fhfiv1#%-KbVPN5oB<1f&7)#59b0{st6xeHMSgr1kXr~PekIg!1_}ilkuMWpc z%Y@g8^p--i@c*%QA7D|O`@{F|1!C73dp8!auTo}q7d45??xG+9(nMnS)qun)JCQeW6KpHOZ_=T*WL4efDKOogB)1Iyq)Pd#%p1*Z-6lejVJ|MhpLm4ZT23cdRxum4xO)N*(0+Sa(Y z&Gpm#z|!_JUn$CCi@p2U^yvMgzWcdB<8@(0hJ+of#;+th--=O6DrM}wJFgIcGdTRC zy>m9sU8%_#tavCDl}buwrHWEjsiss{^a_{eNKJ~;q{f;Qtw~KZsi`J?sY%T==_^fY zzEJVZID-{MQHz%ql@ycx432T0!7VhYy_TI%rZlO;|2>8O=TBk9pHo=jMEpAQ6jlN` zg_QQ52aVesoc|XDkpyQXy{H7QAxk~JwslR9ZqXHDv&NnJImn54ZY-Y{=%<{A2S-H=l}h zyUyc&SGJ29bCj*hAIdgO>ZeKlHEF;c`v;`Xk4FFdpNM|!V@p|eW^h0`oN*!@a-2x^ zzmW6c%$*0FRLdk(xA0lSXUOn7PVB<&pAOd7?>UHHoK?@tQQl{;9Rz@iDPaC@IFZOv(6k!SN|^ zVyEOczGz8^P3D8=>K}Q0L~K%E};$LH2WulAnk zF&SU;>lB~RDzt5Ea$IsomV7{-X|g6w(xi!+%a;GgW3OP|T2^}+@w{f{CRFpP`PqcoOJy&u z%9_i!nhRI&DRa~UE;-dgnlv@-lqOBH&!y}K^3T$&kC#~7USbJN;?Lta*DkG=5jAGc zWQ%9)7qy(~DQYZH%c~Vschy6!s8&)dt5wvhYBjaGs#j~M{H#4wlQ;opYtkG|;-~HJ zHEEtE{h&$nHEDq+ai#iElNM>x;w7q=>Roh;s;H`JP>rfd^;K)BwbeT6XDUA@F43f= z+$f<*%QR`ZCjF#ID>P}PCUMnTtw~(9)@sr^Ov1wtZZ3 zgSc+qH9UD^_nQy2D%^2rP-tR&hZG+B;gRZFq~gm||7^e2pg6+mHWvS$+7G7>@Dxa(v4X!S;59*WY?4 z`0Id%cLS1=V=d#`-+Ct{qs`0WX?Cn@P)W&Cv6{V%uh+G_H>LLnf1Q%@_PVbFTHg+s zadL&YSaB9I=5Q58u8}dYph1U`GqglW^aBWM*aHDFSJx!z4?VUYTGxz z@Qs@A<`)vxj&FV;SxtHK3tiN%Z+@YNn)>D!daM1os;X(KruI>Jp|nwxHfa*?Ic=V+ z_E!g}1JyyA#EZdSH0f7OF8+VsRrP(>_^eme4_rGlFaH4@S||Sd6*pt_qwE(Qo^O83 zdR-l-j?Z?-eqH@tleTCsUvpjMvKTmh@wFYzoZDlHI)lriI#r#fPS>QZn#51K+vcb< zxh!(&*>1lq?nv7mm61nO#uH79Tt3U0|7HtdFk{iO* zCF)XjnYvv4N#$C#OOtkM(w~~ddtiGtY2Q3`mAYDYjsM@m#%_%@X}=~HUMR9x>Mby?pFU)_o#c-ed>PofO=3pq#jm}s7KXf>T&gidQv^5o>u=-&!}hBbLx5Z zg8H|5QN5&IRT~sl`cnPJ zAPhQ#i^0|4X86RA&5&J_4rtOrO**7Whc)SlCLPtJW14halTK*TNljwooYo{>@14=4 zvzl~HlX$InL6iR0q>Gw#Nt1ZH?20B`)ud~hbX}8fXwpqhx}{0CHR+Bf-PNRfnsi^2 z9%#}-O?sqBk2Q%GQBO7LnI=8gq!*g>Qj`ACWTDAAO?J^_S50=)2^N8k?Jh$JiSB*{m_)jRX86V!|WL!B%saH6|#)FU%YkU<-G~;P)1Y z;jXjBbxcU?W`CiTnrgL0*@8ks8`^>+V$9*;wuqQeb42}Dhw%Fk98&y^LjrLIJzE5iC9MF9Eymy6Fd(Rj z^N13TBPzXdL_lc$kYHO#I7fsAg*0*0krBmt6mOETPCcFds#T+7LVR*cS;x6R_X2|b zLqdZB!XsiD*qX#d2ADhY{fw8M;Vt7j#5IiV5Z{{HC}ZmJKaw0TNu5!7C!VOa|C6Xe zv7I`!Y|CqpxVR4QiB!Q6sn)+o3J$k$_9ewSUUG1ECwF2xwt+Jx{z5J()%{Nbg|K_nf zbLLmuaYTu%N4)=mpJ%3%C3NN)8RHijYz<-oD_4O4{{UN58@|fH zni)DgE;gxU+p?jtDQ!8s{KI%i_H3sTX4jX&B0Q!(!?Mh4`6+V$2qcJt0d-P)Jxz)}}Xcgb(}g zh7Sm~1Vz$7`<2`r8X8~;3C?%|c(oU~(UYBT{qHW|44O4(ZWth>65b`gH7$AFidUyp z#@P|#7ifv`3k$H;v$r*4PdG==!V#kKJ0XI2`=t{Gt~I~B z(JD375@aU6B|19B{x6Z{dhDmnXHVyHZ5_vzf8TMoV6z`*O+%j5f?hw#^8Pv{R`|#P zj_SBvIG5m;i8#Xj-;QW(GdFM^@~z_#<$Z@VHirer_;G1z5MwciMnr}&;>d`QFk6t# z98No(AyOP6Dt|acNJtR7F8HlJc5xh5=7Wc^eH)scYjk%!xcWyPY=0@?*xhfh!~5Yh z#q_~LdAbj?anA5s!O_ovhM_?=`?J3}g7fv&9_F1-!qoV1m;jxN&AUw{~xcG9^g3oy&J)Cw5?%iM3Wf55bLYgH~e)llKt>V zY{8KY-!qb7j>D>butuH^0)hj00-@B%H!f%V)*lO2`pA*?3(wo5;n&_c>cg8am@7#T z>xFUk3XbIR@@|N6ju74-T=>;U11vmGhS?&_0bJ#6LH^FsOmqbB{CEIo67R0h2RI+? zv}66SkPylb;#IM8)#;AIYJYImMv)=*4e7kJlJo25z&EdAvmB8=d}f4kJ+kovAtW@$ z9BdA15+3j>2|fuX_o^RE!v2baEzL7nL`X!F(AQU{AO5B2@W^nU1_DAN!?~tKy*djP zIu85rSrBQza)w!{+Z<&M2r~Nx(Dzq+da>i^_g;4$XF+6en9Xdd@3@lMpU|DH=C`q^ z^1}m;u}1RB-F^XxX=sb6A7YJZXpXSdcOJgNad_!Bo0NIM=E4ybU~BxUp{pH_ee1N# zd~9Yj9s8kSc)f62u+_N)zf(ts9&avD&ti$OeE8X9qvM#e?;c}q!qa4cB_=o|h8Z}Q z*z9=tTTedrC3u+qa>I${xYEBW4hm>$ z-&Q<*y{eF32cqj0-|b-LijmUwk=@2-<0BTsVVA8c3JTyEqJmwul*XmWYSCo}&u zADvY&|31Ea{TaufIEV7WC`66f_77+>KAxFv)Vc5mjz`)ld%H7!$@7i8GY>RoGiHBd zn#Nql+;4s%pRuf{u~g1)l#H@5zp;R^ps|p#u(61-sIi!_xUqz>q_LE-w6Tnl5m(XV zYMQLqWwvwHI1G|0yWU&hMF9r$&s2IrOC}Sxw$5{(&TteZl}rLXmUqQ z?xe}7nyhJZA5HH6#s{KCL&is!a@82w+*RMz{^_QkA9VO!RQ2&Qn7z$rz0u3lU(a6z zv*`US{#L!!+vIEW^066w4eA#u-8#m77VG@Y?kt~)8f#|;t{x+MzZux(Y4r56dHd>p zRmG@Re7#M2Uq6#guXy=+`IvpJs=ryu8mVq(q#Ex;B0*2ptSWkcn~neTEQ8fYZ&rQ1 z^Vza5HtdVS)k@%45t(+8_w`wrjEP9*O=%rU|p1yjs!ON)k@wRz+ntc>+ zPm?Wcq`=Hb-tR;*`l%KlPn%6|GMg+^XYkegnH3+sYV}rp%w8nv>z_4JNML&Qx2Q&60^7`bKOb*zy^Zu3rOn6J zWd2Ct=9z(Oy%X5r?Mc;MzIvNcQ3-7H*ZZkvAHBs#^|Vlh;^p(P&DSzBaGiGoTYRjF z!ON`Z?H|Iit8IRIUz4}LUiG5EzFvIvr&vFdaofzmpT85>Q?Xb)P2}mVm<CNMik zZ#1YTqnD47PZLca3EVz2aNTzTb6S`@ZNC0`qo*&M+|ygto2(}L5@vtZ$K>y6wfKG{ za8hPqzjp%r`5Met#nY&_dfC`t2BSf5Qf&skC%?yQ^7l3P7*+3&1n!a<*!oUj#p=h+ zhE`v_)yLq+$z<`=o4tIEdW)y3T712I6o1RdhL@Td*#Dg~!mOGt{zh-Mo5|bW0AH)# zZ1qy~enzX8#o+I)SgdbcIke13_1{U+;HUapR6m2>V)dqWA0J=6$>?e0;^uFpC4QbZ zf8$4LACMV1@SPMbo<6F<*GJL&C?@XCH29g>2A6Vj{CkKVbP!g<(8<7oR~qcl1AzjD|FI0 z{f$CR=CZ>_B4L^w{!TOgqwBNleb)!PS^JRxJkoT%_KT@vnsJeFag1DqcQk_%+q~U~ zImRW%rDEm>zaJwPv_?g|eU!6%%Z)2uwIQ?V&Tp+Tu6y+@<9bbQ?Cj7cdxz3BIr@Da z+G70O*@PyV-1MC${6|j+uJ?`Ggya%z-0u1)MwWuZc}qK^!B*aR)Z{Pioyip-B;&4J z4J> zh%oXJH)A^(H2wtMtD-J3S-It_60YWI;HMK=D!5_1^*WW?njGhB{5|_}_cgio`<82B zeCAxvq{(eEm-}SD@r8Xk-ucVum`TtvoygKLldI{Iw>y^EOjAx1ukkXw^5*t1Nha>} z$?UU<&-oHEvosYZOH&a|ZvVb4+nRW}pV5@hHMzs9EKQ%2_P5#!oU^V-K)ipWkeG9fX@!B$D!Md89{CYvvz98=#X12v-U+@>#PqHjn z+w|G%1w2M!QQzh{TH64OjAwMxf|6q zO_PVrGR@HBq1;OPmHo3OKFthIN#b*t#+f%q@`rj%b2WLm;}UL~XZj&3I6SyhLc(m* zJTcR8{V>_@%@Fz1TwdLpVOnfjN`dyT%`z?15K$F$M3$&{|i<1~4aCQo(TDqDv1!a8-Z|F&>k*Oah0J`7Gt4sY2uF5@mU zK8Szc1A=0cQ+T_e6-Q?I<2!!cG7fayPFC@K$G!P@`)zE_jJKG!Qk&^_O&&kX^oJ&M z8;P@5`%OFP)-KcT#=+q=QsUdk+3%n!IpM(m6iuF((ZD^Xy)=;Pf81=-9x>Aybie7K zJ?H^VW&<43%k-BfPq#lK{Kru;Dmri4ol(izZy3@Z4rdygkQqseTZ?=^XzCjX$x^A`vY(_K-?bl3F2 z^w9Lk^jLVLai_%s?rN78X!1f${!x<`Y4T#es>{(dKG~KK-zL6A0=M%ON^#t{YUOW_ zwTuf*h)rponAD!v3t7J$kldKhj1%JQ_rS^--w3xhh>A^$=Z_=36~cM*5pNe{JkreP zr12?y;@l}IuF0!|W8}hFSFqoPlVIV$-dUNA$?XIwanY~lAbazY#lo+vXXLC`y?uQ= zEf#*zw_3eEBXK<}_Qb$v@5Ym3{M9{L8nXCa=)sm0E62sa5uo+h2E?Tc*T! zj!)?p7H7XTAR<1+-q&L9d?WM2*Y|xZ^Yc;O1%Br!`$vZfarV0l!aKEZ&rJ*&*OBnJ zHuk$(k|P~=$wYe@%ql+y#yhSYzNK6W&+#qoTgI37QdVp722D;+b6y&J%llU3ZZqEs zzV5yrn!HAn*J|>*IhDTkt?Vmnx%X-^dvS%mH2VqsW@&FM9hwx+ZCokbTUzbo5A@>$ z{_wbtvD{UX$loHU^6^J!tl_wArBPYuU_5=5_vHKuZ>#w73n;wk*{I2z(ss8LWj$O( zS;vb%-`cqvgyeV2-NJDnjHl;8or|m6C)u*+igxEOiP=8|Z{lwM2tS_x72%$e*fH8Y zv4#CM@ZbW7#px$_h(RH}59s-CrK*QxNC zIUuk>P{Z)X(amBa-8*m9UPunj(bb{9pue|!_6r?4YcT#5|_+{y;z!S zlkiS0TgJt;ifeVCaFKjPi zE1$1|yGO-JmHAqDeD^rkYVDs8+s3|#^NyLsB%;)hVhE zr)AHPmMyI)ySRq^PLa6qZpkTe?IQ#1Yxwau0T1M>R$X7CW{g}kW8K$rUv1bDZ+|CC zfkg_W>H4{)<*--grIwt-PqS$`({iQdo?|eY((=`H4vZtvI3LTgTh~U`Ekb-;Lm1yVu{5g`91Fa7bvQrWq6MKu4o9 z{x#0g`FO4ci5)miXNQI{k`Tw1;)saI=E30&JEg>O(KRO}#dez$5f#R)9skZ|%c#}f zbVn&1(S#q5F8j|M_(+*WWC=tyRW8oZW)M-}7~mL*y4F zguAFByoFH&h#=8Ogo{McNu-MYVwjjDrif``hFBn$iM8T4@w@m#Y!^GlZgEhY6_>>w z@luylC+mvqO6khzKGl`eRnXPZS#)3Ny6aMPny#;Ih;D>#q;9lstZt%ivTmwwx^AX! zweFbizV3N3}5waW&VKV9~@TyVMKa@*ye%VXEPu5!k{cF|@0Q?$(dXXZa#J$Q-iyr6vU zYvU$YE`oJ^&AuMK7GGY`aw*)b$v<;7)Z||@`PX@FBi$PN*7pr?+~lg;V!yjp{!Nn| z|Dto;=34&a*E0Lw;YQt$Kgj-~g-@pc{XyX=-Rw^+|MJKPULQFg>3EId8KILf0syif~Ypb?_b49$fo zcN6z{C_OKq6NOL`Wx?^~-BAVAPy@s&AB{w$;yaAO7>vUNOu`gQ!wk&AO033Otj9*A z;}`sf-|+{wv*t^2kUsSjz=5B z;~TUG{qp!0$>@X;U>y(E@fZvG<}n%c%ws0zU>+7=5td*X{=^OZBSb}#sptn{R^*t9 zzvHqHmB_D>g8HB*m0F+`TB9x6ApsrG13f`6DrxA8{uqeCVC_o3f%+?d0)8j7a$N)< z5J6y#%3p(eD^p|T&LCdpiI^osm7_S0lQ@ktIEM?k2y(7+71wbS?BObRaUT!y7*FvW zFNGilQPl-*$c7xqg*?ay83j-X^rC7plt3wzL0OcCJ1U|w2wJr|YQPiTpodirFrgOe z;B(Z4AFS|4eFTDDR1HQb!VrNdM58I1p*g-r3$#LOv_(54paVK02`T7|uIP?b^gaTB+37x(cHkMR`G@luFt0xobvHsnAq z2!7~@>DYy*LYONf3jOdC&IsX`4|UKE6R{Qdg|L)I zD0*QLjtgPU0RviLG=9cSA#9}(h_0B2gF^Vbz!S|e4C}#l(f=4&*Pm;$KRMOQj-1Gi zyx@7NUVan={i#PD_1sYr6s?R$0S*Jeh)MuUgg;5m6;RT)#>kr2gP)q$&IEM?kh|9PQVg`_Z0R0XqiE<#n z06l7gSON4U;4376z6bEU6|e%UumfvgeegCGQ>G1w!4JWmBq#t&G4AF&v$8OWM}Td@s0unWg<0@NDFb64OCAsS=@ zYc{BbFVGIj=!3x+gK?OR6`-aD#BV_S2GrDmni^13gI~bx8_>%JhjA3gaT2G&yc*Eo z2K2W9{SA_#fLeljgZM#z;HnS}%fpNq^uc_vZo_o2PQxwWu??xK;Q_E-LuzZtS`Gig zS+FmH^S}dj(GcwQ;BZ8t37Vmc5TRFa7ms);SOA}*EXu(h^uH0gHZp=fHTn$1Z1g2s zK|?Bp}L=ZnB1Yw}Yh=)Q%>fna#$OZOXB(sPti87$>Ncta1 z-y$o6+#~CtHOMD&8dl;LYyoqKWDb$LL4J|vKyHz@aR>K!X`KhfQ3~`niuh5)k0O4Q z3Ipg*lrQK_6gfwca}>RaqBl|WCW<~swLv?yM@J-qJsL$$QL903qORi!=uH&8X-sb# z)0@Whrf~&S2fc4hZyK{sG`)zW}7e(eyC7CcHt8(I(UevyYBITQK+NsaOMg z5lt_m=|wcXh^80O?9J$#cqBxVLMRH>X|e|=@i#8x8hBh2`qktqUI@`tz!lj*?oH`i zQy-9bQ~J;}1zpe`J&}gKn9h$d^rZP*EC;h{PJYeTV-tSH30x2&hP@C&{V~~vNFnc( zBRGyzID_-JC`2b7*C`h&p(^xX&Yf=IDaf}o`F1AX&g9!UC#bhG^>$|No!MKR*;}2< zp#o~56^4O)J1++Lbtb>g8r`U&8}Yh@ zAqK?iMyzgaK`q_dV-(1@+Z0U0JgflcMmK8cwh`%|$K6hYeb`pD+>w`7Bvu1bJ?9Q6qS+jcwe2WxxL3i{-8YX~Tx=+On%*OYaj~}rF?9c8i zu?FPVow|GEL`l%o9@N_-76U;&Jr;r7dz=S(r@Dbzr;=xCDR{sO2Ka$lr_%e>X7~!t z@ipR+fJBggYA*~0^GF?qu^|6c@=s;m)P-1#WuTv_^fQ%wQ#W7}wt?JJ*&96t@}N3u zfd2KY3k&?w0Ko_av+UUh^sQ%Kj0XFmC;P7F6imk~%mw?S=K}1&MIn0S0yX!l1>*H; zimvDZ>glDSALw1LAsCL4AVx3x*lQ_%0{!nr|9eqSuWPuEXLu<@Z}vcMdfYo33Ze+; zb?=g3-QIP;jCxa3Z*u5OO}*)JZ}v)W=GMCvt4>kA6j+`LBK6ycoeds|SdeDdSz7IXUm zbVfJy0QL2yzP=+d2IE1keWzd=W`KBomtX}}V;$&0-(Ro=f8eSR{m8dpA&^(UGAIXk zR0BEm=4#(Vu1 zA@~y1+Mincr+|93hL`W7e8PjmSHo_fgTQU0ksXFrU75T z56pQ$eKY{`9?%F8XpD|v?E$PifOQA-Krf_WFsOR~=hy(wu>n&s9W${QtUZ8pV!%q! zmjU!;z%J|o`)9x*kk^0R31RsPU5nVx_2Ggg(^l9*5(5J!lX)w7CrcZ zL+Hbh$3hIv4Qd}stwX7EXa!V6H4t+sF^3X!s0HlHq3p+@jnEv#AKDu6=zwpLf-V?< zsn~>{@f$dYhjLvXx)Xn59}a@LhSI~K_rUCj+Vgq_&Xr-=kQdBmSV0s)F?gUd$a9z; z%w-rk4hsb{7#0ck$gox*$6;;J4&*khJ9?rw_Jf`bJBtfo4-Thy!-+GTdWKWaaE=+y zF~d1#II|qy7t}YLnGR=m!@tLT{D{R^hM%wjzk<4lQ}=M{9=;pLaSCU^EQa3)b&qfb z^^V8^<~)M=j$j5OJmC!m)H%Y6dI$jPjaU!%%LryXg7v+{410CV zH=vheI-@7pcVqfu00vCsr~8f$+nb&aL2u{UrV_wW$ZIW8aagISJamgAV^xDqIh zPf-r;V7B8b!-iI%j&TdYY{uOeVtg?eK`!HykqTx#z7P6gIL2cVsChi|9?!hT&&52f z0QHY&M&sF=<9`FSjHeIdcj1;06Y`)q%Ax|uX+jlv!UqQUq7LFP0mPi}3&?W<{g`k8 z^kKqNAtvSpduJlGPAm@(P~${Bh&hp%6Nx#InkRC8Obi9{p4bA!pV$`d(Gk=ABNnaD2JMgl<}{f-IGJ8e zsR}E;Mm+fbltg@sK49G`-(fV^-%}>yJg$TF2_>dd$JA`d3F?_z5bU|B#lW7MS`PGo zYD2Kb)FgC5S9HffP}5ZAI(0IpVJ7B)Jv4O%R%0F5M^owf)SvMi==oH7JdO3IG2dz7 z=!Qv{jqfoZ3qhP|#F<9^)5w2%7qI^Ho=8Jq48UMe_jKx>PTkX~dpdPbpMvR_g}L|v z#GSqv%Rv0;#Gg){(>G!>*ca2uaXR~AIz6Axex1G#2XO?)aSCTZUehn)3hepa!d*PT zW3YFovv+2&cV@UDJ8~f}==+Rq`>;Bm9l@dtK*e$1f{bLhjI>QG@qbF@J_48%x` z0sCgo7I6HWbGU|^Ld<2Ix#TpLKFzI%P=teXU~X6Rz(mZ#Tu-?4fC+ma><$TszAiyyTSZ9GZIBo%TEQm(} zCSwlfVJ}!`!AT(&vey=t0=-)pfv>=E3+eU3sUW|F%xU2Pkl&B=;K$OSrXNEPjW0n? zKhlFA$6_>3G`?gy&(A#A{fO?iOo8^?RFzC_p2SWT*2-NsfQ}hD4 z{j?4AYX$pjMFmtxP0*7S3O)n-WkmoQfWE9~1p2aqzN~10HlQaf+9L^_&=ox}5gWid zE68mH=go=(Ag2{4z}!|aw-vW>Pl%QDXJvNe0)1L3qbN#%d95r9@?04NYFNp+wQ@dI zfi+g{1a+?@=F0ncB*ZE=^J%vHo(Ma)&yyh;VVSydabbMQT=V>P{8^9d?}J+S6mjKfMW%Qehy4Y{v*j(>z$s{`{}TM$K13?)IY*M5p} zr~ztNYk)64hZ$DX1N&+1K+xy4Q$Sv8XJIaW#1bqAIjmiSGeWE@0AjAI1NQ5>W{5#s zQ2RP&xQ-dFV^6MQX6u;QI_g|EAH-Zo%yqxQRPpcI#ci z-dgXDDxi+_;h^{H>HT_ozn=BicR_cgqCbX#IjkQI`ni4rsBirbScpYfhYd&vd9B}# zJ=li>Ag}f0wVu4zU&aHx6k>x8ZpaR1v7sQC#fIW21?I4!9I8UW7hoT4XodFZh-7p| zH}pY248UN}#|`YG4fJipHqeuethX^g+))X{-lzxrb)yfM^+smBu?|>oV;CY3g=nyc zH#S3ae2o?$pN;J0jr3YhgrH3#oq42ZLr&xdwWe1F zxulazI=Q5);M_@PpQHyN1mu(61muuT4(YLAjdbRh-W$v*oxPYo7wnVtwO}^sESgRZ z>GUCeCw5~m4&W4+O**qlXEy1N@eD78*sKG&ZY~OH+Ux=H+*}Rhy15q2u%aFU(FpWx zGdq0CBakj3&Y7lShMr;PxjIFmA&~ zLp%Y!*h(+{pcj9*f&KbNF62QzRDnOjk&MY$gzX^jKZv!B$8Y-#q6 z+fKag?7JQ0u!Ed;NGO1|=!7odoZrzC`*0fcV8?wt!c%ZOON*WCg`L@u6U5s2DawO= zv6FqVlYOzX2E3ra2=>U%I-oZ@sdpzm-}MRVg8A*D_Fb&GI|mA*7)qiH%7GepQ{!%G z+)a(Usc|=X@9qQk((Zm>KkXg^;_s%PyNS7*`gc?RZtCB?78{U`U$6y#fEn#RjH5UK z^7xay|1`q_=K5yFg~+XEx80Bf)VCvg?`U|*L#y!Rg= z7^~Rl0%o<38SSHo`+UJ{_A#4%)VMDQ?9Y8+V2yo^5sxI$?|ogtn)}!%`{?(+p_q&x zFdyWx??b^mg#1by4T9^|{9eX#!s$aDX3 zTmrf6C%66Nc7WUtklO)rJ3wv+@=L5A7iCCoIJCN6bW%w0) zaSW_`fEgb68y9g|h=ZIL2kF7VA}EUDsE8`4j+*cWeL3h4W_U0Z?3IJxq8EB24Sm4c z2kFN_`f-qc99)1!Sc;#p3Tr`64l=`od%z429s<2NcmmAu;8~o<3n324U|$`g)TcHiwp*=bx3B$noeVF}lm>dpM=iwW8Cd3gpF!v+O z{YV}(Km;12DcFBUk}(GK_Q)*E26Y~x&Lix#BkZ*!#6GeKo3Rhf`^YJr0lhqO6ZZ9< zgT5Z&+&#*AM+<`aA7%DOOQ8bT14r2dN2{X-YU4B1g#`mK7UMAqQ*i-za1RghM2KUY zKgYt*1k`aX1}zYe1SEp~981ACti~}gmt*YHW9-pmS3%5U_d(p_?1$r};f_k+yg1Hz zaa@5BwLq@Nzd(J^&*Q-e1$i8A3UWE#8GSJX!!Z){`1oW@1HC>z2j61}==JfHAjjjI z@iTtKNnF8m{3FB(7kq*o$c=o+k3!%aJ3+oD$oGUNd|-et>VTY2_<_EisD}tdfxJ&N z!x7Nu6BognC$0-|vNe*y`EZhR;bady6ylUC$m0}woFb1?{V^J2F#*(hnw(CTLj^GN z)6D!dHJ@IFpTN0udaV$Dd4t^kV(b#Hy za=g$5-N5WFFuM!ndx82duzxNL0`t2t3=6Og?7_cT^Kbh4cQjHl1@!0dBRB(c|C>Gg z_hsAxx&Qqf%#kmPi!N|OelWL-%A{7e`?% zCSWqyI~Q*Vafz6hK1FrVlS}mE61})YzL&m12T<>&G*IiM0T>EmULxitVqThqd02t9 zAoitn{D!UAj$Jqb>b%5k_=mXcifqV6`aDH7O_bcRnWfOkJuh@cpIE-UBiLUWuR}@+0!?Q!-PmQM=V;QHR#6; za=+0X^y3Ek-(bJp=mUCjgFSX*0w!YyX5)KM&yAh94060dZa2v7rVBXlZ{~pn_SDV7 zCi=oaFSlj*%FH@%Rx-K>u$2gq2u>_1K7X`~qfp z>vx_Gt(MG2G!^*mrc555LDK46^(oxt9D z&=chKpfBj(gK?OR1y}_7_~0k3!$xcdvwFa+9x#uG#XxT!(vydc(GINfurrAHa6Beq z9)1M-^Wk!=1~DHJ^C2-G{t0IEkoq1nn}-ka1kdr05RY8&334De@}UAMg8n_Kit4Bd zZzwRp7tHVx^*?HgZkPtvd~{xj$DEsw^Ukff+m=iwT$n`tg|DACvoIX7hLj zI7c3@!4_=CF6_ZU90B|H@hLEyC#6AtPsr^FxjkWTJ*fq9dQuk_gdq|w5RU{TA_?UD zBo)2U2mL`VPtFMOlzsa&7m9*4o>I$G>V8Vhr%`Bv)}Xeh9q=tWgP2c=`IMMXM_>x5 z?J2cAU5#~MHc#o((_g{7pKilW{0VyZ^dc_fDz4)e?&1L+f!d!kzo##ScvceB{H!_H zZ_nmp2W|@SJTIyv0QBKGeRv*?rf3Oz@tj^fC->(mAphs=-RIpg5X0~tMq>gdgBd@c ziQhnl9(@xqZB+)2?~h+vJSq074;B^hG+(6|FRb}^us_5!ElVk7>vgx zOvQ4n1T%X{jxX0^6MhD@zhrJNncK@9*o7-X{F4LK5e)X%KNGPLC-7A0L{XGQ1yn?3 zc%c?PLtR+lkNOBi5SpMFV$cF{Xp8b=N zlPfj3G7HxdC=F)fN`0;sQ3cge6W&l^LT!8wGpwiw=HuEBp$JD5n3XHDa%EPo%*r(m zZSf5{;9I1i3+SCIeREAiUkt!t48wO|wyxtq4_&8VI%Z)m=%*|FbfurJ%di5gu?`!t z8NcFpY{O3ciG4VTBRGyzI0N>A8*$x;>qcBR;<^#njks>abtA4DaovdPMqD@Ix)Iln zxNgLCBd!~9-H7W(TsPvn5!cNgmp$gj9&@{nTeu5m@5bESp5dj?eWHUKvLhGrLPkLp zL2;DArzj5(R7N$_fEN@PQ461;E-dgz0D=&LFhn96U!pl;(F$$Q4(-tq$>@x3NJVe- zL4ORwP>jGRjKu^@#x%^t9L&Q4EW%R!gjHCJ4M@i?_ziopABS*M=(3T2wos6BHge8J z&e^u&0C-F``(sWBUG{t^iP9*G3K)Pf7>9|N0*=Xk4i|62 zj+I!0^+K1^7yhV^1_;J7Yy$ftC;K8N`yy8k6h={$06FC%b}o9FD-lWPgoi?x+ZCUH zV{+#P>*uELxp_=(9+SH(R)N^Lx8M)#5V|~kJr6U;GY~^C9MqEM5uV^V{t>#oaUfRS z6m&s%9K>0i$3?I=^HqWZ1E@1!9S}d?XpF@KFxPy4fqk6sChp+A&`GsW59~3CJtnco zBxWk@#BMNCiFwH~=!N_#%EJQ@VDHJ)Ez@^79<#wdk(Xm7)(BnxTqug-;5^7rjQoA@ z9oT#M$uU1U<|n`WiP@{?bF@+-ic3VeyLz#Iy&R)Kj~0eV|tEj9>ULH19<%BTuG zJi#mq_C#;6UO{?N@F@PqCD8MNH-xSbJt#yE3ekf?^q>$uDD(r!ztC!|!$#c2KSEbn z2hR7x*%64wXo6;l!F-TgVQMeD9-D-&h#AyUBoyI@0zE21uZ#SQ->_Bail#tAUkt!t zkY~|Hc!K93hhm+ z2E;DKY)U1AUX`L(rRY^DdR2;Em2Qhp=z{L(DRgBxzKo0lD2!sD*JTpW0pEh&m7&%$ z#4586%&g32q5HH3YU4B1g$4BOQ_hc1$6^8|;|d<)G06SXmqJ&TJyA9a^r!5XpoX%` zK%QlZUG`V}E_CH`p(yBQIr>@dQ>23Vm18#LMt~lbJBYJ5kBeYU{@#zSya}~Hj^*oO zILN8|RLsC^JP^7HE@1CfV1^Y~v%-4(f$i9ZJwoT67bQR*?&RTK9`wk)2k51H8v26# z-8shnPwWG^d2ozJ6_Aq$ee>`_BB;fq7ucH~%-e(GJdWW6PJ@~%vPMPLsK^=>S)(Fr zRAdiUx=PHx5;LyU6&zEEepcE6;#Q)DO8bSbGIOdNiZDci8B`vL zX`m;S=}G19@kHpVWJ3<*Mm{j7D&K%Ss*p#O0bmwYhT%If`zqrw5mPW7E3g`CL0_wE z1U;(qE4E-O=yR2w*o~_~S2ZW}2mv)!odjyBdJ@lsu39magF7mL-d6KQZG46=UQxHAYi>g%*ed=R`H?sWu2df*h-{PPL!$8@7SGsxixI%(B`UoX2g@_iFUL+6$rM zCBCjYd#5^kr#kzjx{QLT1Ljwq-c+Y2)#+<>)~LP#)LxyK)i2-@m}PZ(Ui~@#5jwpa zh^Z&0o|yVlpicegpf`LV5a(Ta9-(~pc%eJ3Ob`Jx}ztUpPu>Y`-9r`L%q1w9dDoz)HKLIU=2?UJ)i?tBP=h|yxQNTR1A0+|UeqA>nl2#!n(UvN^r2=k zltdX+Kt)hX&FTn10=l6WH1xw@kW)>1SCf5Ja~76h73g72dRQ|Zzk{4>GN+o%sU|)3 zbcH+Uizof?Yzcbc$r_%0KupisU>=@7VGXFwli7Rz3SxQ^)03E<$H9E~n>ad8YV)Et zuTPKzxj~=2@}m%nq6BJ!-gzl7z=Yahc3ySi2OF557xjC!Mt>{-YkJ)hI`6{p1^xH# zg0Yx}nV5s`K|j37-FqGAhd23qZ^kd67v2YO7{_oLXK?}4Il0GPir5!9(L8-?1GpYa>EVmo$W5BB2_j^YM5Kb5<7QSOA_E%~TKX8CUTn|E}Un4)>EZqxpEA6IB zpT!=^q#-Lg$VDE^qm1ljWG^FonTk}VD%FWXy)sQ{MH|}FnQrvtePl1Q4*AN+RpuZ^ zIL0r?Q06=rxe|oR`fkdWL(Q^r^kod=na(2gUv?vUEvwJ6hp~^cKci+@HOs15_BQUd z?7#Sq%7rnDa^5KSIw^UBoD{*gSx#@|Y7$L78q$Pjv?P{x3}7&JS8f=?8HKFnWGy!l z`zz;8%gJ5N-pc8@+}}Z{ym^-|MQcW~nBDw_eU-n(9qwU25drZ?Kw{i(L~`Vh$Vv`! zk(d0uO%!rRw7@$NZHc1`-EjvIaz~6{0+X1-Lga~9%1TxvdxV)se2*R?t|4c{E$;9a z`igkOQ=ao*5ULO&9T~}ttQE3j-WA+fg?!}aZ3^=a=3b#Y=2pR*6;AUa2vyW$#R}-9 z;t)nN7TGIKVkWXz{G2b4zv7pyz^zo=#twGl4lBCDitezYek%SMgesY5B^fJur;=G# zGRsN@k*iWs-la0ta1)i9(~35}_HS{nT(jHO#h#+14=Is2q4NsxS5wH6Cw7nL(7^{XV!*)IpA*X4GliWz})%?uRc9n7ev{%X3(n&qf~+pJlY8q}fdal`v_mR)< zj|3?Y3!z!?6qXCWrwxyBY&+& zL8x|^ge1YfYNsYGda0e6Qna8mJ?M>GwPmV31ou>X1k-Rwwe6_39o2R}wb!tL&1_=_ zZl(6EAQY{3w7Eo^M|1o)pJMn>R?Cp+F_3MI@66le1Kimv#WaMTF-9k{fgPtHd^r6XefI_yJ=`14drjxot~IQ z!{Ll#3=^4xn`@|_hHk9kDP(N;|95V22e;Kwu7+-_q4_m(OO29|5#M4Xb8M8C{Jeu* zHL|NlcGbvS8`({x*_cfuGih`TZ#4QHy*E;`@$1-08O;g~b1w)rGplB$h`}D3&A`nzGxKI&V0O*Sx!ESR zB6~C6NHh1)O#Wu_H#^B`e&qs}FzaTof>3k0o2SA%&C`>G?3j0R^KLG8^Y^GoW$MwG zruZhBx1l|8bYUPLBV%(Jo6FdI8G35IimzG61~#*e9h~9}GB!WYZ(QaY*SX1U?&6zn z{vZgoNRAn|sE<2sF&nj7__r5f~<+fv?^^0qYJmfP9I9xer;R$=VDRT|Qh3G-`Zeyz-})mywr8LCqUd0RCihSs#D z19GuK;NzO+Ui9RYVD2IZmV@>)NEar2-Iw?R%odIbmgJqX3>CpH`Q9UDyp>^s)JV_RY0vGyHn-?83^9gO<1YR8U2 zy;yUMor4+1x`Eg)Sd00^?&k={IDxy2we#2um}l%go(G{eDS3l*WF!mb+QwYlm}?s| zXk))^3R9VC)WE*m)TS=7w=tVGO=w07^w37;Hgj+*ZM@kw9{JI4+wPc8TQg~E?`=1* znXT+W_O?Ir6Y{q`$uC^x2DiD(-#p?e`e|pT?d+_bjO}D=CtEvnZD+3SVrfT5I@66$ zF{^fJw!6>EAk^MW+M7vxvuH1G`*Ku3zwPUz*Y<9zeM{7AuV#BS+xKGtqZ!X6rs9qE zvzf~RR-@1McGF&O?N4!rbNt3-u5q1P+zCP*Lc}KliAcih$l5{H4r$3iCgko=8a;Oy z%0kSv!_6SnF&XyR(f&HR;f}rOOMeF9d+j)Z$xLGgv-k}8JI+VFj;r_@yX&}t&1^#- z9o=_FxjV|;@h=|ognu#LI2qznAa9%-iz`4O-k}7gu*0|rqG?Vq`tSjA#tmT@^2V8W z+*ss}lRNGUma&|b$QmbWoUC!O#%;p<pM$w*Gjva{@+i%^u}=%I5Y)iLMJdg$y9J2$2&Ezm>fd91)YoxkB*wjfvMoqW%6 z+(c(H?Rr%oJSws-o)Ixb;CZp*B&NN?5}$sWbZC-clo-@)!qEMf5b?}Gl{88XC~&@{eBSYp=OUv z!joj(vcB8_AJV~*jdj~$kiz$6n59MGhia=tYrV6QgIwgL z1hV#)v$xys9Zdro)07r;WdLT{+e~}gQ*V3f?Y4T)!;E_`W-0Ra{t7ehy$5sdy`O^| z!O!I0$N8CGkh}MLBeBXV%umATCaWe?@Nl0!A@eaO~J|&1i_CB)rk-bkn z+()0r#L$5*bf*{n&`Y1ee8}hQ;4mjJ%RVyoG0Q$z_?;Wv=57$`YyW-Sb6++4_Ce0R z=FxX1=Frz}``S@oJL;>~z9%`29{XNI&Aw{(RkN?2`#uXo{SuIrfVO8lbO!_R`Oc`n9GldhFMUuJoWceVM>y?5y7>%wQICn9m{>vy?Acft%_l-v@~( zKpo8N1H1lUGkW>pA71b(2=xyWpVyJQzuf)h?k{)$oaDxx^)F5-^wB?p%2dO*(Z4o! z)8Bpdm#x2@^k0HZ{a5l0-?E9VZ0C<4G$1`{4yc5j1I%JT2h3oA{SMIkfN3n?3*6HH zJq}odngi4vpymKQ4>-s#T;>0@Z}KPi@SP5L7=#9f(CfeiBqkXtNKG2@Q-h9-!h8pQ z&oNG7b_0LK9Spp}@3@13Y7bI-klKS1k_7V{loH?TAbS{8gkqGS4CSeaISz6cgJQ9# zL2i4H-UofiaO4;?hVhv1Ah$4RI?MTr)qIV4_+8tfLFO@N3)|SiF7z-+=0Pum(BL=m z=3w_W*n9`C<2Zi>p&{lmBrO@pOjhzD`;ej(NB$x2QJQMh!tRFDrwPqyiGGHR#0-bX zI7GG~vJJ8SA@)CHFZ(&fQGViS5E^P$L)9GGh_;x?P%{~77DMG7>b8b1LBB&cqSv9{ zu^TmqsyS56p=UXdI~aPG`~1WI-+0b{LFhv}`!FT?{LpSb)Z2%pD2p5auo6|MPEDez zhx_=jGhOLUPu@q?5BoEaA$-V3%;!5U1)*Wy9F_+?4(r7f)^M1UoW_j}JCFMsCi^hi zhyBeXp71OPeUyNtBqtT=$Ve8l6G<%cebg7ZJ{rVOMll9A<@aHSKAOrFZU>>^Y7S4s zo4ku%53h*chqs|Uz4-ur4%g@K;ix%W&EaYe|BSh~(c!CE%X&8BE{E^HzJ}ZR@C!WP zA$lABFE4}8h=6$Lb3|g2k%HXhBR>Tx#5)wn{zk|V@MrA?9QL>Ga zZB$80Q<2J4BZ}IX);) zG{udM?n)2rYqU2;55&Gk4`VX=9BntF^)`AVTlkKhe9t}(aF`$Qvvu?z+~5{}at~QY z|HC7m@-Huf(8uoa<5IN5n;(CH9zVVlgvPkDF$JhjJsQ%4rnE)&F?KViC-RT!LqA5~ z&c@i;m`QxXr_4q_V|H*38OO*rMz%5LIL2*_`7a2K4H2J&B*AXRn$=h}$4+HFW-``H z#+t=gdB>jTBKjSBAH9x!%yZNnr{*{{$Gt&1a`6@gDU3J9+5b5EA6JfA=yROijMLk= zzVv4hL-`0lJI8&@I41HrOIXHoR?-;EJC&k>yT@LTobml zi#`0nDbC<~obV@hHNmbX*wqAconWpL&2^%=PPD6u@6e7>*!#pecw?geCvHK_iF%%R z9yKRk$DSrWMZJmYO^Sz}CnY8sW;4m2CYjG9-_WGW=xWN%K^$7C~`JQzJpmVNRsxUb1qkbUxX{zCT2 zzNN`8kbg=*m=vTTJ(}np4%Bx|pTd{nSlt#qOtiW9mK*;Qprmiaw{> z%~ZWj3lSf?o|c5yNy!_eBO|`0X+F#N|8BRB+>1s~D%-z8MRzy79%M5+bc$*@WqY_on4u`}AiJc0XeT z-k33#3C!V3zGEl$GGiYHu$LKr&d)f`Nlx=CzRelF%^7ZF#v`8aFE4o&_~Wz0Cjp7b zLlxZMr{4V3JU>0f(;zf6Jtb*KOJZq92mCyoDf>*>XUaa)-Oe1zXvQ#u&zQ$T>}#f8 zX4>z})%?UAo(2B5EX;70OtTW>mS(*{Ix><4dzm!=HD@hG&ROO$Yaiw?%Z_K+$E^G4 zb#|E7(BtgaQFFGMv(=of=h?-0k1~|U?q_>rw%yP6P0nskC-gR3Z?p9_`(ws2ktuwF zo18tHxvXV98`#7a>~6N*&32cw_wWPuH~SFRgV1NMksoh<){B{J34327OvtOzD4bY-?5YLvHyi9v7?3hTWB{6^|tW8Ahak%d=ip` z*YQ0qdV{wpi1{rlLQ&r3JxWuS2<&iCB(V(R3%t4LW)S*3ImM`t9ezF;JNSGK^I6Dp zWdD3UcJujWwy~W<9OWl|<`>SQkHul+UM%-wxfiD#!7VK@_a)}Oq!1;MeMu!MBma`>MA3v6w5BcYWr=%P z(jEOQna)~dTq4^N*_N2+67yVglGFUk1ug}lrHL@BrD`ti!26iVQZrd<7E9$_YEMhQ zMZZgbK(Bu1cWCKx)Lg3OQZ<*}VrWh)+VBAb8O%`J+_DkKx=hw(6?1NGZ%?g?X$nhZP-gJ1g|QLa!_Ixne4Iy<#?Mu26G@nk(#n z#d^NuAU|>(ds=Z8J+HXP75@L`%OJGUd{+8~R%ReG*?5!ODm7RA&8r}^+DulP$!fD$ zE$`|GDxu%i4bkgrdtTidHCL;-TFuq{8OX;>K!2;JF_X_Qi`5HR!#4D{`e*dE`Yh+U zh*_=H=jt2W=57#L6UO}3BqT9ONlq%#kdBOGCM#u-am|Og`89qXtkL7wuk$u;?CZ|F zPd^4Qh>=WW3ZL*PvzdeZUoYS*^zijJ*xlEg*ve_Hag#r}$3Hyg883p+TDjNCy*51= z$xA^BQ2cDM2LF zsYx^qXpC=UoqpE2lXd2~PR4cKS!b5(%yQipUb9Sa%isTj%cAx%+j0Bl9{l zUH2*otq*#I$Js$8FHP@@TUd?ZllbLtW z*S94pjoo}}PT%VB+p5%{7IiSYZ{z4pSGv=SK77Cc24jEU4#Nz-^)2`v@FBkvBeWqm zX11Xxld-!Ehxi$D*x)?SuSB{{js%UcxSZHiEg zcPU9}%A)_x%^Ac3yt&ytw|54g9$Vz!;%>KW#4NTP z;4nY(GrwSGTlBNVezs;t#;xAj>aMoBtF5JwYik7Nx3wOv@N;!*C(Lnc5BlMLwhqRw zw%XNJyV(iCrgw~&3@3_{!8?RGod zUKu;sUY7{@nPV?O<|4z5ycdLhXB_$*wOCwY-9`G*zLx4yRqH-`2~IMwwv90+x;>K zeIF2y1SBRIDM(FP3Q&k56va38eMw~fzAWXbNF-Hg%W#(B&F|gs9zE`PmxlCVDxWbA zH@oL^RwDZzyV_pHGZ~m|XbNk`%AhbUf?+{HBn$eQhn8$wE_uI{W^Vl!{{(%g}EcQ=gD$|+G zT-@A#{p@#R`!6Ho{{O%8h^M%%19Ba3TL;YVfLl6{fjsyg518YDVw9j9c6Gq64%pQJ zb3I@;2Ykl|%;tcZ95{zJ4%|oY2h}{75j#1UpTZR7T}q?oK{XGmd9XhEJZLuu^>%O& zL-~l2_?`}q!}oM>3ZL*LZt|cT@H_rP2iLM5`#ZRqt!!r}yZMb5LFiBpym=@Nb3616 zKXESz9ZpIb(vyiSn8#t+56ga7_QUT{hH^wv2l)>-q8TlTr5$n~{sP$!Z$hTS+u6l_ zd^d-W;{C%v<6e#wLd_#FbYK938O1cr{D|IeM8fdNian-RMCt-lre39+mazQ0(rg zZ|kVsM?Xi;N3R8;A73Lsb?M7=)^Ut8oWrhuyu?i&@Q^3`i@W{tRS-Isj1;8C?H+Tx z$1NnY~vHbrnRCu$+*iT1?Nh3@pC5BfVXkRc4ij8DjT;xpzlpGEjy zPAo<46LR|-2%!^eF#i*`g3!;eQ;<@Wry^#3vIcrN=^H$0FDH9qrY9F-o+srxDc8xbS;q!8v!6q_i<7@`nQL6< zF8BF|$2DK$^2`Ae7- z=sP>6k{0AM9kxy?B`@ZC;PcC zS;;Ew^4vCdu?KrQ=ibig<(!{!=T73j&c8tp@*vlFx%?jg(0Q{v@2<|ftMfHzj2WIc z!}IOvh&`RRr}Or7-b~LA#9q#;ecoKoo5zJDWW^g7@}uSj`?#Rz3(aVa-CwZ#3tdq2 zf|?i9yf6ZHc|mU%^majS7gn>D^=xDd-?5YLagP^%_{c29k zE(a?O2SyT}!O=l^fq!Tzt= z|L-C6`McfxuD9Rw^EO2&MhQycE`N`p5>4HS-`5|PxXK^gpJ*JZw5jVNkUm)3ayx~$h_z3#rQf5b>WW&)G3zw0yjg0<}90EdzB`f>aWx-RQ= zv%Y=-nXk)y{R#i_g8zch4Owr-^tA$^hfraBk*n9l>g>f#xsj~EMzfXvXa&4=jPA+g^agkyCvJL#F*o)H%LcD zvXGq`nAI&cZ@KAP>oAjBW^&6cZpnMgZf^Y(gl_Bi_G{?%c2ZKJ=4~}^t9kn^3gW(Q zyNBBqsf;&n*P;&fX@fp*+s$pg-5$q8+|}(*@IBm~&0H4nIUCu+Hny{q?~(QPehzYk zANh$pLFmt<6v3N+et;hT+{Hy+2BABd$VFcAQ;>I&{f^z-iKGhEiJ}&M&fIB*9`3ZK zGu`OP`^bK09rE4z0lDrR;TXSgmh;GP=SmQ|8^)V=)w~-=U&b(==`3PB`oFsed%5dY z@9OieUEfvnu9|n%ynCCw{L8B#koBJZ-J8H<1mwo=V ziwpe0P5$IAkCFX;h(F~KFCc`%;bTYJTQv~@;>NIU-bLnWAyr9BGXXwftnB0e6WI5xX}kY z*v($N@xcBc*#CnQTt=UN+s)s4`#TXyNlq%#kRG@BcUE#xf>M;B91&DP*1xM!gIYvW zm+nktE#Cb5Q4sn^kN;GlH6JpUC49+BRUl2A;dy=v@-Ala+$^4(#q(-JQ49H>*QF(G zv9sr$(982)^uasN?dSPM_Hc-!$n@Oop8tydKflCP{s=-Z?B#{`Ua0w^D+4f(7v}N8 z99}HJ-MrBI3%$P3=L&SW-on9o8!$F5#p2txk_c=JCq{m;z) zv+MuXqL=^vB&S^a*&I>`v)W;m-$rZ09 z<{7UieHqSJCNP<4$Q;jH<1OHGmSB$Y{tLqKv-1`uFoXEsh_CPXZRy7VMx(d*ld!A! zpQ2`bHRG!pe>GbG5$5KbBjAc_%*Y8Ej|fIL=s*nC8Z~9&P;n!{i;RH!3KooKGq7NT10P{#7dji=L$ev(2Gnvg&Rw93bwQOKB+t`8p z30?-_gt8?}fm{jGl8LP3z)dAAhWRCoM2>{DsY?UwD4`uCw4;RW=*SdybA{VH3BrlI zkx2iE>^qT~iAqu$drxF1iR?X*y(hBwL~15dGm)B!>^+g0B(mp3GnmC3=CcUjQ6k?_ zq7|&-Yxc6AgB<24Kk+laa0b06y1+%A2jRqeP8>lS+(Y88IL6%|oFp0fF^44Pki@Q% zl%XWAMrE@CsQ+-TFKrZ z9T`z8nOe!zO6J>7RuX+CYf1}R)0Pf&qANYU}wpu^C|8z*<9wcki{&) z?vm}{N)UeiHN5$HE#7A)8#u{*p7DZLK{$B`Hi{xgJ+}$S6&YKjbIC@B4 zng}XUh3e=b`B>yjJ_p&7FJdXnaRbTMupKi@ejHhnpXOICbB*iV;!Y4wkruU6*nJ8; zq!`90cq7FE)J(Ah-$#lcag!ve9vLb zB9&RBGK*9fxWpCYPxS|XqlZ*(EtPL9)qg=ab%<;fH+aEue2;tckc`Y#^v53;6~HMOj% zU-BvlzY!)r2{89JB8kJBZ>+}t-gq2@)1>8H%sfqVTG57fbVK$uvZs+f&4&zUBvbhm z`P0m05nr&37093FCbFgZ7rD{~yhbAIE3I!hZB`0kcWLEF`yOR5&$Q;5)=j2$8)@A} z+Wx4W)=j6CKkX&#Dy=ut+EF?+)7eqFH}MUnv!ir&l&&;(lupfbYNk^&ogJlfOX&tO zgkg+eG-H{-WTr8LS*+q~+*P{uY+y6nu)B0S`JTP#Ki$AXA2e z9N`?lahnG`N}&F8832$d+06WW1jI} z5YD7#CN=$Sk8q}RxXDa<%cQqV5mdr%GMQ7Rn%H-ydNia7W|yfaz3D?g1~8bR3}XbN z_?R#Fo29n96i!@)`43$YM6J74yrngI)N} za{Ryn4sjGa%;DB@+zrBSCgUBv`DTCSvztrUVb09hLC$;>;B87Ed(MhPB7e?m)SxlV zX+;}4(wT1PC+8=8jf^>E%PCteb(o(}GnbmV)Xa4QJIdud%H=!C^(qMGj*mBT+kbBR&z*(*=r6b3 zeM8fdNia7&1i{R%-s+3%RP|6e8_M{GMcg2VQ%-Cdj$vhGYIGLW}c$NFoe0- zVV=|2L7uDp!42*sdmh>I$euUMYb3;t<;{rvd9#z7eArpuLdc!B2eRcIflPVFG66fu z`zf>We%=M_=V=hmr)IvK6d{tT)S(6TnNRQehG8f9>?EHa^G!j`d}`)XGvAl2WE1wD zZztd5jeLi2lm3QHIG=szGn2Oh;*o&FxY4&#keak)AT!x0PDx5phH_Lu*0=2Lt!hM3 z3;TPkE8|&%H{bFzAio~-m&Y#i+d=-%@IB>U%5qlXzVgeSe+RpeKmT6bZ+Gk>i}iT^9V6dpyAW3O?cq|MC*I`F4o-*x}pye>)FV=!`et{+d%f4Z?-eV~2$r zVh4p{X-5alqmb-{24WtCr|t!t+>xnG`mY!e&ue-oiJyjeZNiK(GELPPj-y)GVTA5jBfs$Ir?l zMR}L^D2F$SMB+Ot(g-^$qQ4?`Q$%k?K4K&vGmeQ&;S)Z^Ef!gg`4#yFcUfd3TiC{S zc43D_+-H%?yb8ka!GmN6lht7E`m>MXqoUdoT8wXLzG{2sc^Wu8P}taWg4iin2sd2{&52 zIyH%=9t~+iH+s^WKJ;S%vKE)M_(#}X@zKa#dg z-o1+N`rU^-LH2iFAb$zBTOv#f(vY4^WG5$iu(uMm=*$NUMXnMf`It%Ae~IbHP{Map z!W>JORY^5VW~Bh-sYn!hFWH6exYLru7=b=Zjz`UsYL-;9VQ25j_+BJcse!${SDU)Hr}ymcJ^OlZ zD&OMG_sq1EnU$(cJM>a&AyD6i$GKcw*~ zJj6|wF~2g;c^QPu2E^kv5|RWvEUW*r1*u6-yjgYwZoTY(LAYF2?66!j?4Vpn+-$k7 zm`6F;%MHUk%E@1DG-EJ}a&ETVJQlKqFIkCx%Gpo3JIGkhJLN;fCoyuBcU$Gnul$=7 zrUa!h$MO-lqw?;kyl<$yU6r@1@^({R?eb<*-b~70<1yZd2%~01PV!KU_b5YoB2hC! z%?LFknqx;1`iroe2)#vo%s3`8g-`gD+04Z)`Wram2=j~Bgu9IRj-Bjg4?kds5&Dm~ z9)v5rMt;0mp%*jRio2~~hZWOc2NiRWi#(V|McFILUQzan6{$>Bs?!Mjs@RfPI-r+| zc2=fqPNIuL{Xc%G@vm} zX+dk;V`P5@G8nsyw7W=IBi&`>7{+6Nk(2p~L);C*mAzTHIC`x7A@i}j%JxwC3cquM zTl|gem1VCYdzJVkBr)m8jQmyJBro}SnM2?BZ5j)!S1Tnpcc{8r8^T@i#Mx13c}URt$GDo zV+YmevV<>L$tujFy6n|=VII}xul@rEFpKKHa)C?y&JAv(pBgDCgp4(0t07yB>eQq@ zjfkN+t#B_j%&LZ(HLmhk5RNjFC^LyNizs=c3R4vQM!C}{y+%b*2Q{PAj8Zcy4)+-~ zkRc3X6yAs$kNro@!;Yf#7iBk5dW+i6A&&ABKl2M`InRCm!Th40@QfF{3c@u*#3KQA zSThOvs76=3S@RoC^KTHYl@U9v)fhXd)s_y#(F@sY$zIEDY7NJCRckb#FpD|NXE94z z&Q~1ZHuBYyt(I)H&9QbuWUBo-c2he$IVnO(N>h#s$Xwf8YuBbO4Unbw8jf*>-|MG9>NZ6mb?vV15XLc?Y0N<4yQ^n+_3|KRz4F*wy-JvMy=s_sJwF5LMN<#C z>-j$Fz0Wi@;LUpWS3d_;XwOI%u>wB>>VM5Qn0I~I>&sqW_WDO~3-yol8&{FP{!Q+3 zpMQ89gd51+pd_+2sEJGs>d}zqw4x2(ZxDz5H?Y$NYBu;2yK0z}ZpTBJ8eFGE$HV`)l+Lb?J*Y8<}ULOF_7CJaS@pjop&JZ4++Xl^*nBAhI_e z#mC6s*mu%+B5thl0zPL6cGh?mcGg%wjZg6a8Joz~M7Ad8*u)&0q$LBH$;O-5O%tdmJ8na^(Y)YN>M$=obA`H;QY+mt}|X0kVvy;*h4s99~A(Hi-ib)XB~v9o4 zWNT)I&17nJl%F`wuUx?U&8`OF=JwLOJZd)YL_fwdff?9wbNgtn_vU*!$Px6|{3L2N zSF^dA&Hv;nFN1Ikx7i{dcHhDqE$qI9n{1JTLPS!P8q}f=_3^W!g>R{aZ>dEq+VBAb z8H_t=F^mz6#_n2-V3LLu79ydn?&n zB_J_LabK;nB7dt~yhT9@Qxv&dy^n0Id@rqJYBiB5*hwq5)XFWj@_s9~)ao!Vf^cg! zTj!-X)ri8aw2s9-TkE~`NbIDwowU|t>*=W3TFusKw*HDWY{TALyUEsWvb8r_|A<>` zZC9=ByS16b>MK@XvB^k5YSN;|Soav4jW=J)Gl{8u z!VG5NPCMwKgUlUH^KTID=*^B5iDLpQIf!|5yvGCFK*z_t3c_)+$0fnd#>pR-lGJ3! zoyO&(07WQ93G@@!7`GTFW1M&5CNqth$Q3sayNg@HH<)LfoyFN%++oZ$?i6P*-#GJ) zGv7{$DT~>3GLug3p_4Z{jYIF9)a>N8I=QV*?x53t4snzdsM$%)PHJ|#g+4pmO=rDz zPDL8hlZmY4AQySbkNfCciON)^IyJGs&UL9zBbv|@x7ztrw&2aq{{`VL=GLVKofyLs z+*lVk*2Rr=*?@U;k-dxTU1aa_6F+l`D_lqZE_ZmqL!R(&5bi2}*D}b~wKj5fZ9ojo zX+;})F%-AdRgSLXnS}f4I*U2XXAy3stJ>W%BY(G|RKXkF+-)~CyY;3o!?BZYcG7Jk z_TEj+ZfbT@v)c+bV$a>|x!ZA0a++Vcz$JXA-TvSvFN1LR0N-i%_#_}P$*{ZbDS3mm z=)e2BG-LqY>~5ajuLa>A3CWAy_3&Nw@ICeD$@}!hJbK99V=U&;L;fCS-T6)$VCFJ7}<`Q}~2Wnax}l@HtCxx4pi@{Ce%;d-ieQe=XfR zxZ-F*6s)+7peSzOE`lIg4&;!8Y~&CU2{B{=l0(RPPIi_6iUKMwpcKIk6a=N!N})R7 zK3JXG>3ChY{xJEz=Y8Jy<1cLHEw*BZPn-YguR_7J?p%U*PD{f#IqenPZIT@(^~Mg8 z`ZIuw(MOW(NwO!&o-~SExQ+W5&qF-Q6HH%Jvp7T=)<}6r5}1umNj`Wmmy=ajL9-4-_97uG7h^-zMl!movi!h zY--quccvW6K-_6cGWL+t!5Y@0^OOy2LiUt*c^~;xd?zWp@NK00lmF&xe&7iHoJloL z>iG;u##Gr-WlPm(syLwwtio!XNQ5pYT^cXFmsVU*W@{VEQo} z$8YJ*Nt}YL(@*0Jdeet<7|H|W;GNUoz>G6`Fo^%+DZ-?YP9{-gpCS7U*=H=IiWqKe zMkn&mSjAe_@e&)6KkYZjmi9a3N;{LYIS=1JT7QOcH8&zh+8D+%jtS^BO|NNsP19>y z8L#tq>^<#Yp&;TN5%WjfZNxJp*DwtC85zx;*j2<$Mm#g(nGw&7q@t5Z1-_$5H8s@H zNPi$qYmf>3T@F ztMqFbg)Y){k*)+pe;`Kl?EzG8s9t z<;a#JTaIjZkX=qSHRvk4kv2NfQT8fyl>I8ct86>Y-VzFOPQafdIrf*+2m8yJgnP@$ zCXXm{c?R#vS%}@_*iB9?^}HJjasvi4fpq+AuAj;EGr4w`tEXHUa{U>SyN;LG7z*-^ zLXJE+^3LIW+)$ny%JaOu%eaE8u&+Ej$xFkX|V$?yEkWZ9v9G`0l2BzmvA{(VrR39S&)u;%>%qFHhi>qE8}2G!1tYok<3BDWr&b=rU^G(Q527+KStXw&T8{vPbPR zx*j`?>N%?4sD7in(Qj10(F5o;dWdiMo*zTO9DU4@ZO$Clu$_PM9l!qnpU_3YiRhx> zcbvwV=%HXRLvR}fLmAGE+{~@q&KU0DLGsagK?`OmSjGxA;F~CTn|FAho$O){@)yWo zAb){f7JSPO9Kp9c*Iwoh<8gc|b9FS=EOS2!1%;2H^TNqYC5cpKp!dQ|vdP0u6xu46!=6UR;&`gD|@EV(Vi>=62_#Qj>HQ&d4!e9BE z{T$>g4rA6rvlg1Q&@PI)aTLdJ94BxR?zE^Ur*js4IG4Wk;}2ZSU@qkvbXKH?BJ&rS zzsNjA<|r~pkv$aYzexYj98Gt6a3$ArJyV!YgpF*$4(G`> z<|sBt@g3ZcpDVVz;#E9{K8p2FtcUq$a2^+M3u75am|5h|%nJPe{B3;5?od$TJtZ=g z=&9s#hBBN7c$_DRV&^5LJdfR#*jC^4;(gEl7z#=Q^i->D&LMoqW%?)^z(6M9 zeP#Ah<~GZgVV7mzQ}!i(r`&tW&&KbSo1^@0?xlcdDPuj}Q~qWssBmi)$DzB5>$n-e zSE1{QLgcHkr;3-6uTlq<$780-KXC)2kf~A!mASOD8XZ?2z#Ns|hk}JNEi}tQvn+g= z$xNk~N*41PTiK4z7kS^Jqv^+BF5@2j{-VdQ%SBZzVKeXWekfS%_ZG{!SkA>)GlD-e zjRe`XJF&BBJF9lP)iPGgSp5Pov60t#3q4hD!_3ux zN6*#Y@*O{ff|%Z7|G_aFOHaHn=6$i@=p?3-*iGEZ?f6b(ccJ6h{rFyEx{m2OHW53E zO=STUETWnk>X0{*OK$uFUx=C^dG2d82;HD;=@ml}Jiv6mY8YnCE&jm$MN*VuKCeEVY-V_Of&d=3DB{mo8%^--m+QqtJJ)u4`qe)n~08*6OfUhqXGaZDuvk zVW+k0LqT1@iO5?gZ(T3stkZYhB&IM8IqO!S&$>0}vrf+X<2iwoIE5Q=hxO*I_ni9i zJcK)}&*B;8<0k9NS;%7Ks<)SVd#T^d7JL`=+xZB)ssDt1n783L;LSVJB9Y)sICnH%M3l%w%OcC(jH`Bx}tvezbiZL-%Ux7BnW z7toLX3}7JFFpTTCncEnR9W>cN)1%1OWUoz65hjgvGO?2;J87!KUYe>{f_rP~U^#19 z&&zDZewyB62lmt?d((an@)d{q7CVdUE`AJl7k4vpHxoaZGtp)I9LyFU!qxnVp$umP zW{Ka)-8_i>#wTKqxH;nHh|eO2Jf1=CadXAXXr>Lb#5-BRDqi6=HesH)J;d!H{yAoe zn(j^-7tWHn}L{*oie+9GRvsPb<&!Q zPFiQ-J+0o;>OHOA(^|8_gu&zF6CP8;4bdre$3lu z-Zt~LO=L1t$-(#07Nr1L+GJ^yrA?MLS=wZ2tH!)->)F9SLP5JdwD&~!?fPyXjegtR zX?rl@ z^|8|KS1zZEHJESZI$pw@E4T43AMhc&*~>o6*mW!yGmczz-sRa{p4}yX*D6+r{_mfo Uf`9+_s&W7R@BjZh=z8vd0g~<*f&c&j literal 236180 zcmd442YeLe);~ToTe5w#eK*^t3mJ)wLTZuG$QWcSG7cG!oQIr`%tq!QbCG$-rO0K-eB^TE3gk*e zL^_eHkn51^ku}H-$c@NN$j!)Y$U0;_dJcLnnnKfP2F;>5G>`U22cQGdLFiy~2s#uU zh7LzZpd-;yXe~M#9fOWV$D!lV^U(9r3(yJZh3G|S9eOcZk4{7z&`D?`IvJgUPDPv0 zOVDX(Gddk@L0i!o=uET?ZAUxMS?FwZ4muZ|hhB)!L|37!(QDD`(Cg7P=nd$N=uPO&=q>22=xylj=pE>t=w0Yq zbRD`L-GFXH??&%IH=&!+E$F@IR&*P>9la0Tf!>ckfbK*eL?1#QMjt^RMIS>SN1s5S zM4v+chCYoxgFcHshdz()LSH~%L|;O8qkGVo(O1w{(Y@$C^fh!pdH{VLeFHs+zKOnt z9zqYJZ=>&^e@Bm_C(x7VDfDaf8}wWBI}F2Qm>g4JN~{FaVS3DfnK3(7h54~4MqngH zVI0;6I}7WJor`6$9G1rhVMDQD*l?@?n}juDld&n-RICZR1e=C6W7Dw~tQETqn~z?YU{7MtV9#Q&Vf(QI z*z4FE*g@|N{w>_hA`>`Ux>><8>e>?iDJ>=zj#LuCq?Qf8J}WLB9?W|ui+6*7;k zO6Hf<$OsuJqhz!!DeEIUOV(GGmStr9WdmfxWW!~(veB}MvIf~CS)**SY>I5UtVPx) zn=6|yyIi(FwotZGwo0~IcCG9>*{!m>WE*6gWLst1WcSM+knNN`CVO1=lE_s=} zT<(@v$b<5bJS->WDfs~TK>2Wat$eh6jO+*bdGZV84f09ysq$v|ba|V6u6&++zWj3e z74jS9H_307-y*+New+Mu`5p2*<#)-~$~Vfl%D2h4%kPsvB7ao=nEZM9F8K@c7v(R@ z_sS2*Uzfile^>sV`~&%i@{i;n%fFN#l^>ITB|jzqS%D}@6k3H&QK~R0Yzmj6Lg7(V zDg26n0#`7KK8mvy=P1rqWEBGxLli?5BNd|*wTfwqX2of)LDYh!MDYh#fRy?A3RPn50w_=~-b;TQs zgNnn7w-xUzK2m(F_)PJ+;)vo8C89)?m{O*cD-}wmvP7v;s+D@BRq0k%C_T!MGOVmt zQc7CMC|PAv*-v@4GOz5f9H1Pj9Iw1cIZ@f5oT8kjY*o%sb|_~lS14C1S1DI3uT@^B zyk5CRd4uvsZPvey99i`LpsDy-ujK5Kb4t!FNtL8a@+AXHR+n5~a%0IYCAXK{RkFV1?vl+VTTAXMd7$K>l1EFP zDEV8-vn9JqUMhLHWN*p-k~d1;DtWu)y^;?~J}&vR@mq2%Y1UrYW_ zVJd}6rP8VlDwE2pa;VBw6)K;~uL`Lms<^5~MX6YopgK!+wkoB{s`{%2sfMaXsA^SX zRp+TDsOnXXsutBO)s?CRs)ed0s->zGs+FqiRM)F+Qr)b&UA0!VQFXU!i|St0^Qv8{ z7gR5*UQ+E=?NPm~dPViBYOm^m>aglV)kmt2RbQ%(s*b6?SN)*+QT3DRS2dzmsnu$| z+N3U1SE{SkaW$c4)PlONdbE0sdaQb!dc68P_4(=x)DzSfsxMMcR5z(FQBPC1t2@-Q z)K{uSb*K6&^ym&)oau@sBcu?slH3SR=rVuw|blULG`2RC)LlWcd2))531i( zzokB;KCJ$S`cw61>d)0j)W4~JSO1|wG^hsC$TV_|LZj5^GWG$ zG;s~CNoW`itLdZ3YI2&qW`t&>W|XE@Gfs1X<}%HE&E=XaG*@awO{eB6%>vCr%_7ZW z&DEMEnx&c>HMeSR)7+(5tJ$czTeC%TujW3@4$Xs_hcvHfUe)Z??9;ra*{?aEd0q2{ z=Ah;s&EGX2Xg<-L(tM}+Uh}i&7tQaQKeRHfT&vQmwG~>A)~oetE45Wxzc!!^YOA#| zZCs0MNiDAxw0*VxwC8Bg)n>KhwG*@#YU{NVwGG-S+UeSv+BWTM?K16h?KRpJ+LhW> z+SS@?wbyBH(B7=QMSF*KgLb2KlXkOqoAz1lbK2*%yR!&+gm)7NUdEE%zXx%v7c-=(ZWL=Z)5}l}9s9U64s#~U8savJHUbjYf zv+fq%9lASp>vbD+n{=CX+jQG?FX~>>?bhwly{vmh_o{BMZlCTo-G1Fc-MhL^bpOzO zsym@OsXL|nTKB!~XFaON^a{OFZ_pd{VSTkeqL1oh`nVp~C-gOXLQm>heP4Z6pVQ~{ zBlIKnqx7}>75bI>Rr=NXHTv818}u9X zck8$7@6+$lKdyg5|D^sY{j>TP^n3OD^q=WJ*B{Y;q5o2URDVqWmHxQ?g#M)dTm3Hv z%pfz!4F-eJP--w4YzCL1(okiH8e)cwA#2DP@`nC~0fvEwL59JGA%>xbk%sYxiw*UL ziH1uI(+sl=vkh|$a}DziqG5?)sbQUAyM&U3Zusu zGKP)SM#@MV86#^<8v7Y@#=P+&W1aD0W4&>rvB5aW*l3(=oMN16Y&NzVJB;&F=d~m}DloNo7)-^d^JJY_gafCa1}5sxVcW zs!SnM*c3CxO@xUwu_n&c$8?tI9Mid`tSM(2Xc}Z1W*Tm)HH|inH=Sp?&~%Y$qN%|& z#WdB_Y?^MGX=*dgHq9|zW}0sjO`WDirp2aZrsbwprq!l3rW;JRm~J)QX}Zg_!L-q| z*|f#9-E^O6r|Ch{qo&79PnrH^dd~E`=_S){)2pVvrURzeO>dbFncg+MXZq0ek?B*@ zXQnSrM@=V8Cr#g)zBBz~`q}iG>31_`mYGY;Dznb4H=E36v)$}4mz&*YpSjW;G>6Pl zbIe?0Cd`bPH7Ct|%x9a=F=xzK^8oWe^HB3J^C)wzd7OE?d4l;ubG><@d9rzmd78P| zJi|QGywtqRyxe?^d4+kUd6jv!`C9XJ=IhNjneQ~;W8P%mY`)+8fO)6+Df8dVPn(}H z?=tT;?>8SXe_{U8eAIl*{FV8*`GonT`IPx<^Ec)n%)eO_7Nw=cVzQVm7K_#5w74w+ zOVARsBrG+S{+0ojftEp*!ImMGp_XBm;g%7Wk(M!*36@EgM$2T&49iSQo2A_{$8wov zfn}j(k!6KtrR5&WCd+2a7R$Yst(I+;?Uws2J1qBG9<0w|r#z)bf?(xK&|QT1%`dtJu~E7>r`u#^%CneYqNE_wZ+jC#+9epRvAVea*VxdcgX&^&RWG)=#aU zSwFWPu^zLYwEk%Q$yRDJ*~~VJ&1$pR>^6tZX>-}iY#v+C7P2L5H8#T5$99&judSag zWy{%y+J@PN+s4_(+h*8i+S+XGwhr4Y+icq$+g#f`+oiTEY>R9wY%6W6Y&Y3%w%uae zVB2WB+jfubUfX@P9k%;zkJ%o#y>5HMcF^{w?Je6O+hN<=ws&mr+TOE$X#3oD!gkVj z%J!4(XS>WUw=3*QyT)#?+wBf}jh(QQcFIoM89Qs|?7UsDC++?0S^E(CQ2Q|ZSo=8p zc>6?qgME^{(cWaAZl7hJZC`0$WnXQ-)_$G+dixst4fY%DH`#Bt-)`Sv-)i4x-)?`{ z{)qii`*Zf^?YrzR*!S4?+TXOlWj}5|VLxdjvWDd1M z<1jlc4y(iMsBo|j&cQnbN7B*9ah9X6qo3n!$2pFSV~}I8W29r0<9x>jjtPzn9Tzz! zJEk}~9alLPI2Jk&m)2FF&%Hph0yqmIWM zk2{`lJneYivCDDL@uuS~$05gI$J>r~93MMAas0#aspB)p=Z>!&#~mjeKRAAL8l9z1 zlhf?9IIT{b)9!RQolcjt!WnSJowzgM6r4$CALm)lbDSCHVCN9$Q0ExuSZ9l~)j7jC z)7j>1cXl{uIcGcPIOjU&I~Oa~^UYcE0WW$oaAJnDZ;=apwu=H_jiNKRW+#AugxOWo6fuU0=4fY+Kp(vir(*l-*zUK-tc+2g@ERd${cJvS-Wo zl)YT`O4*xbZPQ+{@NzPx|=fbtRLBg>o0FDai^-dsMtyrsOgd`9`q^0xB! z@;T*KlrJv7x_n9bb>-KWuPMKw{Fd@N%I_|}r+icSj`I7<_msa}{!00)<$KHbmA_WL zzx+V?>*a5hA1eQQ`Df*ymmewry8N5+Z_B?c|Ec^}x7@98E8PaS(H(YIyCd$XJLZnN zad*O9<0jmsn|1ef_j8}^&b#}&2e?PLN4iJ3C%7+kU*xWHH@K&`r@EWmGu>_OW$xwf zYuqc`E8VNytKHYSuXA7TUgN&meV2Qad$W6s`$6|Z?uXrvxSw!8?S9F<+r7tq!2P=W zOZQRtG51&Q6z=f!gHnPYR?kSQqQ%X>pb^*wtBXC zwtMdL?C{+0dBC&N^PuM;&tslvJi9%6JTH3=dfxQBi%ER9;yrRxYeuUU_}xn#vn0@2Xr|xvp}3wDOzEZ!5p6{I&A8%HOM0Rq85DmA1-QWvME!a#t}` zY!z3brsxGa% ztm^uzHB~oM-B@)~)y-A6RNY#2Th;AVcT}yb+FW&i)dN*KtDdU*Th-H5&s6QI+FiB3 z>Oj@&Rqs^2TlG!Vw^iR&eP8uM)sIy_RsCG`OVvNCe)S{%62IPW@Z0?kztivYSNfCw zKK`@(ef|CXXZz3bpX*Qg)BcRVzkis2xPOFytbd%p&VRAL-apZQiGP}Zfq$WYk$Z}4yRZ}V^WKk9$X|G57N|I_~G{jd06_5Z{F zssA(o=l&!9FZ^HnkNS`Kzw#gVf9?M%fCSJ07SIH=0bRfza0HwISD+$L8Hfa;fpj1f z$OdwOe4u||Kww~CP+)LiNMJ-@Twr|Q;y`_1V&Ia%w7{&u?7*DB+`#;R7+4Zm8dw)t zAJ`Ds7`QudPheAEb6`v0-oVztj=&>Atcv*0MaA9y!aB=YJ;F93#;I+Xm!Fz*SgWH1J zgZBk@1n&<%5ZoDjF!*Tj>EKJj-N8M{zcA2NiDq0*2kWDeOw6(LV36bgr`LsW<=#tR1 zP;+Q{s3p`Inh}~AY75N{T^?E#S{%AMbZzLm(Dk7;p_@auhc<@p4&4*FFSH}HJG3YC za_E)NtD(K2eWBMv`$GppuZP|Wy&w8C^jYZh(23B=(5cWbp?`*c4gD5I!-}vzYzT+K z;c#_05{`yr;dmGiC&D#hBFu!(3TMLEa4tMFJS;pud|vqc@CD(za6@=nxH-HqyePal ze06w9cxiZ9czO7m@QU!t@O9x^!ncNR3vUQ-4Bs8z5xzhCKzL{Pk?<4Y=fk_gFN9wV zzZ8Bgygz&-{6+Z7@X_$G@K@pE;S=GL;ZxzS!{3L0t(I3Ss+HBH)uw85wWZooU0&_4 z4phgh@#!#3eP8v?>c^{}tA4(ESM{sad#m?V zAFh78`km@`t3Rmzr21&}v4|`pk0>I_NJ&H$QAacpZA2H*M@$iC#22ZIR7IkZSR@|d zB78)MBqRMIsYp69C^9(G5SbKdj7*M9iA;?&MJ|aV)-RTdqJF>G(_W-SPeL1Mx57 zU&fEdkHx==ACI4ipNyZ1e;xlO{zLpXT!Aa`65NEFaSLw6owyqh;6XfuC-54)KRy5- zh!4UC<3sSF_%M7pJ^~+!kHIJ47vhchWPA!f6K})Y@eX`0J|AC*FTxk&SK~|Y)%dme z7W`g(E4~fij^Bsx!0*Q&z<1&g;*a7_<1gX6@jdtf{B`_2{C)iI_y_nW_~-Zu{A8je zp-QL|nuIo?OXw4ZgfUT?FePjWcOsAoCPIlsq9&0{^hunR=$kkWr+oeg^5LpRf*M!YZKQcZcN;oSfALC*qGRs*q(SX z@ls-UVo&1b#4Cwc6MGZ;60arpCk`gwO?;C0N8;1OSBc|^6N#S^KPP@k{4?=KjjTpn zqpJzj1ZzSy;hO52NKLdRRuiwmYZ5h7O|m9cldj3s46PYfGrVR*&FGr(H5b>^*EH2! zQgc0ktaqFBZ*N&EisO`fM_5l5zWMOViB>JxSCi(EG3o^ z%ZY1<6~szn6>&XrE3ux~Kx`!LBX$t?6Aus%6OR+m5ziC5h*ycd#HYk(#OK5j;tS$S z;wW*9_=-4AoFKj-ekM^8BW0wXG>}HJl(dpg(nnU35i&}q$qbn#b7Y?EPYxgll7q;> z! zllPH3$;Zj($mhvj>z^P%Eib)N1Nl>IUj|Y9nx@{Wbj!{Vn|?{X3&% zN*EPW%9t24<7O%t594M0Oqi)*2xb5?kQu}bW`;0BnPJRuW&|^m8O4lcE@UoZCNoo* zsZ1Nw&U7%dn0d_Q%pztnb2YPySS>`2X zH?yBPz`V}9$Gp${o%w+IkU7G9!F#roL* z8)PFa&JJaVvBTLB>_~PLTg#4S$FO7BaqM{ZJobF{0`?-dj%{G4u+!L9ww;~BUdCR@ zE?}=_m$NsqH?y~}x3agfx3hP!>)3nPP3!~gPWD0eA@*VRarR~Q74}tjFT0O@jor`L zITz>Vyj&F*RQIrk-Zoco#kh5IM>EB71sJCE@tyoy)zCf>~3 z`7-`oKFjC$f&3tT7(bk^p)pUOA$)A^Zv8$X+$!(YbF=S9Ag zU&Jrwm+{N_Rs3px4SxfF8-F{$p5MT4;kWY-^N;Y4@qgoY@h|iH_=EhL{M-C{{Kxz! z{1^O}{BizU{s;bN{trPWs0E#16l_AdP$>k3n2-=iffvpaQbJbfFANoGh4X|uVWQ9| zOcQ1bvxLipD}+wrYGH+Nt#FfYhp8Xlp+?y zK5kfTVp`+8_VeN2(>)$z0}ajf?d|Ik6Ji!IQMMkjA~sRpDI491s_IGu44372o~Q71 zULbIW&8F~lHkrgznJh=8^OlVXVf<|W?LI(O>b=J=zeq=5MnYDBH56ZKn=AQD2tNHzS80%;Hliw4msmWn2^ zv{N<;XbteozPeHz9yp-BeQ48^HfTecG`7BZR%3gg>JN zHKU$O>bg=N$rC<`XMGewBz+{o(LMtHqgamckqpWDRNXS{i{vF4_CwA_&Oy#aQb-!f zAXy|QnnjCf6>XwjbcjyTC6-At9Doc&1|fryA;?gWSs*t{kD4!Jx{n09+#Wc zbb8!w9$bJ-MH1VP3CM-WMMxcTF;b6AL>iDuNFy>CnIgKy3eh8aMW0wHR*8NwAO^*d z7~Y07A(tT2kY;2$(t@-iGmx1`8`6$+h}Gh2;O_ZhqT|Ki zCGM1uZ)ly=n1JaFZt6(%EG;plbxM0(sr%nt?OGZ1ZS`+!oi(Gju^Bi7U0!g5zvqTw ztsPAbjqP2dc75y_yRNjXK-Kj#)7(01QtyN7N)tUp{CP%ckkhmotxYW*?S-L0<%c&< zsw<85+)&#(tF58&v`LK_*gI+>Gqt{DN+V3Ls)zW`qmKrgP7DQBw1JWO{tZ!&b<~x{ z{td~$n&rReavod;=w5+?jgxv<)U6N;kYz~X9%Lc12w99=jVwWyiV-m?#>BXYi*O-~ zTqC(KWEHX+yjD$@?;=G?608qI3PS7|GTqvdZ))ynZ0qt_&~67lwE-MY{fzd;NdqT= zH*K2S1l@XdUAA6)XP1!E^SW;FpE2sF#s;|a%z>-UpgQfKfViXg>6XU1GwNF={psOv zbVZU|kXzS^#2d)%$Q{U?$X(|b0!Rz^)$xUoV4=fmQ*CYa^VS2w+VR6`hj;Z8)|J{X zyNrnYaFVz@?z@bosJJi55SL$G7yFY}k&VdR$UVp=WHYh_xfj`rY(usq_aQrw z`;iBboydd8L&(F(Bgmu3W60yk6UdXuQ^?;>BXUI8kg6Cy9;XWO0f(RcsP35vPgG z;&ib^Y!zpSGsQNsUF;BNiL=Ey;#_f_c&T`qIA6S6yh6NE6va;QDsh3hP+TM~7OxhU zh)cy~;&SmCafP^2TqUj+uNAKouNT*dH;6ZiH;Ffkw}`ijw~4olcZhe2cZqAob>ez) zgSb(=Tf9fyByJYBi1&(H#ckqt@jh{fc)$37xKn&kd`Ns)d_;Uyd`x^?d_sIud`kSA z__X+p_^kMx_`JAFd_jCsd`a9b?h#)WUlCsw_lg8~iMGau*0xD~_%sdZhEL&nKsz{- z0<@FLWg)b)Svr|bW*9!5>7^!^41{|=k5f#F!x@4~<4Gb#<2=U-JW2C;Dlha>b5xR~ zvSbqQQ=Y^bh_QGw3r``4e3neJ$xK!#qNYij;{-m7)5#>vB%fpPGz)Np$Z{;1&ZSZm z!S#+!q>|YT%O`P)%%yRLra4?70GH&FR1)Tv<|#VWOPxt(XeyUw@eD^WKut1ulFZS# zkfvw=FC3jrlfBfmkYbX#R0dC`0P`?pUci%lT0(#n!=_;3fEaqIlRTYDM_nH z3eVAy{?IH(rP4)XrwM^32#UjbAwvUC=sYfvY!)XOIz@4S)JY1!Xt#c6U|ngNNP>#O zVz*0rlkOU>= zNSHT~%mBZ6P?lsSNx{u51y+?xr&C2*mCt~BQ^^!)2MN}Yr)fONq**+hhD?Sday*qQ zS|y*NX+8;p0UZQO14Y5pf*|0jJfGp1B*kXakb88mGL=auL1}3`n-gG_ER_c<7C^N5 zT$akyT$1IB#%2jhNYTK-EX@hP6Nx&Xgk=b6mdw)`A|(`!%_S)&mm#uvp34C>1?)(1 z90O|0=2%+bXgXiaZw_o7ED=v7lQ5H9mIoEdkvNqi^AyZO8ohVkX+8^&%w=(w%7V>< zFTr7|S)5DL`BXAb<#M@nFLe@f5DHQd&}yJzQXtDzUI1BUX#w<=C-Y1Zzadl2r&Ayu zmKDG*yL?rOVsMh>1yFg42Y1mswvbJyK(A7GHpzi3b7=v*76HzXr?WYlVX_=k#KAlz z@VTxL!HRH(6SBCF%1Z*3@}x87&ZmPp(0tPSa1+LmBBLt7!X51 zs7hraoPZ{il1FAT*&tS!8J`ju3K0ngK%u zLRfPS7eI3$AcFdU&2p*YRVK3p3_z#Ab_mI9!YYL*`JHyd@8hkvHXTc+LoHP?2 zoIj`p33|^{RFTbdsT`l_@|r{%^gEje=`a}z*blxWm10?@IPQ?(9XS#-mLefQfwD^h z3TkBn_!+1Q2_#Xhv0$t@AxXhyDhZJ!&4N~?AWE@0f=L4GAk$RQDl_0h(y2U$=eU$K zZ{Q$gOi+vi00p*_Cuq8u8ax`PeHtf82&@bROHE5oJe$r_8Nh=Or;Dr@^n@kAqk}F< z9ONj#RRV;4frVg6q%s*QSEN-LCIjvSR5Y8;NVWsWG)ZSApqzpC9-!)MF+NG=ASUDi zxB_orl{v8DWSRgrLe%5{k0n{IXeKlT7C-`Zk`_QjVDEUE100)SvIGgt%BPCsC3yC< zkO51Ff*i~wEuqJB1{ecAC=aWLXjr7*848$`%`!MF2RH~o4g4VJSCY!51Szm_>7v+> zPjM6gT;K^ISp!5S39W;L-OhoPZZK0=Qk8XN&wGpUFu+8LUw=r7;;c2aYyZH195iBfuo2%mnlV>#@-#dJfB*&V z1<)f$N0alab;)3l2KN0`>;HOchCo5}*K2gT*kQMKBYX zx0HoK*oQj_DM_G;_$`oGE<-_L1j(ADgMjV9QGz=M<;xODh^0)CELmW2hJmCHvISTh zU~#~MklLlwxqJ#Rn50*|t0Wl#yknZg0s6qaSwKp_K`F`0ftdlMP0~d(ffNon1sFL= z015>Am#}>v!VpX$BLz*Oc$FERWs?w2ATjI0vEbg)Sx$oNRGOxUJfu5C_?zKDJb>wN zHUqW`tAzVV2IdWEJC_FsO%+FOFi8QRJt&3%?iHwEy+T*|MQ30^EPP$$W1%F#(;PT@ zuzkSafS@5ShUtLKaB0A6X{I=)K_H=c03zVtB|J!gj}@dGEX%MQ14f?)#NNxnBmn_h z0Di;E1>gw**dqmC4~JZlhV&8CNGL+R5=em50Mh*&U;!otDX~E1qzs1Q`IN-1EZsXc z;K?)uIuc-R2Ji`;1P)4ZJ_)2GxaxeaIN!;od4Mb&7&*iRSS1N>eK<%XNRH0{m=-9& zqP=6YG?{`ILj;~DAxbik{eYtf@SYVQH_WE^B-Ac?sR0EGfjSULS(>&lhDhn=<$%5BR zL#+WOmdfVou5_}<8W@hq^59x=I+Frxpn!Rh5rWO-*nB<*Z(1O~>E#K$egzXFq>v}A zl7^fY;1R@PFdGT}q^V4iXQSzKI!!}D3D^Mi1oBnzKEM+|f;<$ifIeR|6Cy>i5FHqt zXCc*Kh!k)TfG*^hkTya01f-`$I!Lpb6hld3gp^jov4E6P;C+M)BzF+(0nHRq1Eh!i z2-58|6tZ9@P(w@R87QRjX;#X0gk*8G1)zR5l>vlDfvX0M1;-=gAcjlTv@FTx(?l^U zU>PpOWWe#jEJ05on}j?qot4Tt9E1UQ0m&Cx1LWi>kQ;CUJRWda0BAyjO7fr&kgn$; zL>F-|PZ3Z{1BXfH(_ohZC?X`vQaOi$oQwqclPuDc8~{zoy0bXcrohMMq4)!F36lC` zHV=U-&4GA&WeNEr6u}?|g%|+-1k_!EJ&=fjqXt+G=#(p>1|$qMFJ1}@S&&X1R0}E| zkobbIav&jq9Yt9kI4XkRAPEqploTvYsQyjV z359Xs?V)a%1BPabZHLUHAdiIXh)6+fV)9*a2RI1E0H%z(@4*1hPc}^cy(HO1Tu5gGfREC?t}=NFf9CbP>NnGm{w>pf|t_ zY4S9zmj?g>MH(KwBEYVEkq$x~CJ*U86na1dfZw2vU_0OfC=w7DMezWHduPItu*58w zBmt}it&%XCl(7j(KsPi@1wdHkSSOin}aeL$>hPI^p4F!mJ6do@RdrqfT+R8(xAIJDhnB=lsFZ8`?QeG z=5st?djiVSfFr>BKz@PeARQ5Ca0VP(@op@d8t03R$9;3EO# zMf_$-sK7u;1c&TF^05+T0?UWWLKQc@2vGtGiYKqU;SpgG8!xFVz^WCfW&lK9dG-3ILFV;Kwjv?rEsnLTw$=d7c1Vn<^Tc&SY6Al>ownBo@L6 zB;J5Mb2wx*;7_4yl_rX)p=S;35KNL401AR#LKp_mibJJ0lTQl_&E<-02V5yYc_<}7 zF%P`G#11HtLopyrft~=a$rk%6K%jut0XRZw5A2eV5;`b0NPa&Ll}e~9WQt-MBq~t% z0bG@X!X`)u9BmSc9>8xNlJG1=KsCLWCyW3k?XH+gN~o8E;!hg--lS509_W)$yee8H zI8rK0NtK+eB>Apnkq6WXE>nOSH^c^_Xlxq17l5J^PQhxyiY1$e0xd*W7SI|v!9U|F zfG1E&2JHY%2I&Co0dy%9(s)Y90>}lK_Rbps1>goqhj<7az(Ft|fd*UyNm>SMo(BwH z=H`+5a7X0Wm(`dLx9(UaF)lRT9*Ns3W$v&$UzSe*p8I_ zQ{Wc!;2wA(sPc zNT?x!h8F`+6^C(HiiEtkmzsvGC6i5A2k2+;k{S2KbKz8ORY0fZ_4nN=6R!LwX{I@ zPP)0ZVOqP?PgL~QysosOh;m>HyvB!q1)!FC9pD9gU8w`EcXefqZmVx;Z-Vc--n7H( z{H|wo)Hh7av`(J^w@K&mbagYqP1$t+o(6%_LrFalXTC?Ld3cY`3722qz2xuFek9^b6y2pmm=P-lH94(8wT&Gc z;2RUNcFeF^_@ywI1+%Tgtm4PwsY93pb7C&Uh?QaGm>a8rzh2CTRYLbscbD6c)`ohi zz2>6cE{zfOQh$=IrypfhYpc|R(OCE%?wnrV)Y3~X^>jd|#oXbOyT|OkCL-cL;O|NC z6Y&Iaxu>nAr^iNORU$XHv0;`piCoLefsb9nU5^cv)*v-0jE%%bVYS$3Yz#IQ8;6Y-zZ1U~e-M8Ze-eKde-Zz=8L7uEz$PFa z$YiVzn$IRev)QlWZ_q6k690gvvnt7$!#!&9r!K0lPN76m3shZc<$t2=vfF>#ZdDkq z(1;fNPs7x9w9RVhnAHY;>)&*46^1HwTm733umZ`z_I7CV{EKmV-G6S#`#0-L^mu~*UJG8gO3c7!A&HIHOsoxS$2vMuIDHK3L}i_* zd?Pj+n}f~8=5?ZqPE_5AYC2J^BzkL6vsZea6fL?M!%Rc!+dFz<$>|_6re$((%UKbz zvoJ>Eq%i}#Jax~d?s^@ z9g4~13T4Uv`QdXa_2@S6ry{yVt8Fp`C9(G~*qF zM!dt&g!e&Lqup1~UiT}s&gr31&ehcrR|#!!EHt^D4afea;mE(qa8TbhaKPS9^fjdG z4~7>0h3EX~4|=rA{i5$egY` zb)x$JtmAJ$9K8{{3A-8EXQ5?R(wz~~v5S8WBb}(R6EzGkedkPbFaV%v1`|y+KvOQD zDrj17Jg*5tdl%0yZ13vfg=Rxagx0S^ zNc0^%dd#>9_0y)$nse#pi&tHDTY(WMh{sU#M5L*6A5-Dw>$#nO8OO`G@w|gmX zVuvIlzSW6Vt-}s?qW&%+O0(?py6veyQNM@1k0jQvl@{{no@*&rgieZ{ToL;S`=oc= ze{`auA|LoUcBC*$_au&DCna+@hJA${$4+#j)tzXh6ODGFG07ah#=bdi4)IPD|G!}l z{|)8;C-$4PzF#}h#5(NvPPFDPm0yNoH_7CGt^CCB(w+ay%3pDZ?%wH=^6S=Xv^~n- z>!$Sv|GD!|bt$?3+$96LJ`~$U%gjp)7SQ9MjfLNPel9pIN?D0a2cndzWNMj4rtL(j zPL%FMnNE}iQOXQ5<7rWHohbkR4^hgTvN8~*4BVHnP6qpBl7B5qFNhM7^}hhOcs}c zF`nCrW;)SqCpzH&R*;f0GER~g+li*u$v}zH|5;wcO|m0r+SC6+ny{nP+Lb7TBG4?I zJUg8mIBfWc+Ohv1H^?sfoF$bd$Byo$03>xf!PwBZA7mB(?kW^+|3y*)L!NW)f66A-r(n!8 z6OrCzqpUotbcr>`J&s z2iJ-wxIS+DUuH=g&pZDDnBiY!T>o_m|D#;$64*p|8DvtcV4KvFuz~3V*u3-!Y+U*r zwkt_nlYT~ihs{T3*j`itIaCa`4-v3+h=I*Q{m^qDlgh)v>4V^i^a~)TnhA%SOGle` z!m;Ly;PCQ0;DGX{;Gpq$;lS|kF%xEmBf)tr3CDq-i>2W>@H|wgr25oYY&;wVJ`I}z zM}9BBmcW7E%dyqi1K1VD`of0Vb73=W7WUWn@7gsx1R2(KR{m%>DgQj=g09V` z^^iO_B2&6{l1h6>rTwF`;Ou1ih52CdHa5=I9Sq*3B-vFoP!#2IH4SH+g z?EDR|tL`4yQ77%DllIa{JL#l-bdSLfI%)r$w0ln4IVbI#dl~l3?fX-L{vPa*`w(`= z{iADNoU|wIBqZzKfvQP+;G`XJ(*8GT@0$Yly-9oCr2THvZZ{k3bCY(tNqgL+9d6S8 zwlM5#i@}~YX+N8^n@!rwChcVF+m-02x=#0(&h{S&=lV-$`j3Ls{H3$}rIY-nbNr=K z{3pT*{*&SS{w631w4gJ(&g_>??4Jv#^-E{HTcF!AAG49Girwp8#cDRYp?6LiSS~lv1QVj`nKr;Ra@UaT`HTS2yC%O>=!jk zuUe${JzdVAkjF1HKT?VoX5mE4(qpwf8~9B5&L?Hpzw7CVlE7^c=n{ibuVJx z&^2!#>@ROv+XbXgF_$7p za@<^jtDDO)rPvvy{d$M;A^O6_bGo^<(7eAepHzWs!1e+~rki5%+;0jLxo*Dpj#0QU z05NaunrqSUrx`c6@N8+7Jr{@evg&YQfZ<3VNundhk7#S11V!`q!W4k8aJ{yBZiX{1 zj77$GbIE{=8`D0uenw-dqCj+h_hVKJ=vNqKLV>!#@^NPjRfpImt5U!r&0}HCu)X^X z>KTZ+TX$I4d^~epLw$48L>d%aQcHMfVbBi5-o5-D?#}L=(H8}(xxMm-!3skFRpH`g zh*@I&d?=yMoYUAs;j^1@Y9ij$(%$v@qCkDcX2^Oi2b7Tj2u?ILT=Z*HAaH@)jr zgu;zCb`QVMa@rBy{O21>p}reL*7Q&pM!&6F_w~r_;~EMtZOOzA|D<})s@ z?-e2}_>7Bp7cLf5_VmR~y)!+{h%Mdfaxqk&qsYCI52LBVP(WRn>GnVSFljmWo9+t?khsn!=^0|ID(} z&Jl(vTz(E2U$E8ZpXY#>G9wtUrD6mF{`2KyE8M zZEvp+>lxy;ZmNZr@&eTXq)%Z^zQRM^=%!dPazTOO&0gNH1)4+MG}oL;6=>c@`gE)G z>2coeq50{wJ-=V@mb$_iA9P<|F=>8bjE{Pk>_bjJ>631=SZMJVs6H*2`T`!OE ze`U#VTY>tE0`-@t4H$a(&-4+WbPMMzo=j-TIk=FA-FbevLoVXmjT=ep1mD~$UM zvZ~kGza2lNu@$^x8+12FKH>Xr@)f}o{||fb0UlMgy$|Qq=`$yp0w`(}5JgBM4HP8} z2&9ohhcOibX{6B6EXCf%ULmny6cn+Gid|7GV8`ASd%0fw_wG|BGnq^%Km1?6=Ruzg z$(-HJ-s@d!?Y&pgivOY&*WmDDpi%ANZ=s3$`{6956*Y;efht-_d$&daZq7NT zG}X1ut!?O0O6dlmTB^rmw@MtG2m4NFXCqWKty@Ra3j4Z=;W(}9{ss`hKsbw0N}rd5 z4e6`NJkDoK*rA3((DT9J8ii^a8p>-#gb)u$1{RweQU=S7x)w#&dOOOPxbr4yWR4&Z zYH4+?xglDqZY|55qm3L|Rnv0*xcKL0sn$+M>Lo1l171T(_h1ZM^G^rIx(FFGw z#@G6w)1xlXv`J_HAj<9rkJTR7qVxx2j5k>2&evMRPA*Kn)EYrqtw?5Q5tTZ66v;6b zTx0I~Oaxk(z#XacLap9JV;JX6@6`Ip>n3|fG5I*eXlm}!Nl`b?xR;wer5v4Uky-TCf{&~Yd zoeabawW1m=YHWoI^wQeRvo-Ci`_W?Uky=k{d#N#uRqh(C?d8D=kH)UKrN$dT^9trQ zst&@PJiDQ>xxTzESbyQj81yPPSOy#PsanGt#p?~Dl=krSs0&mst&J-1HMB27SAlrv z&YoUdKbM7Ks??-7>qV=7UN=!OrAE=(xuAOxi?wpl$5?~fAcD(jk1x@Np=rxpKnFXo zM%$rr(807dQi(s%iB=i9R|xi_hV>|LomRl;9O%*ttmz)+$y!q#hHOSZfil`7T?J!Q zYpBm08qglDQwfi|1?*N+pP}0Jkc`}|-MyWu)mpE;wI;#wTxT_RL|qU(`5UKV@|&6) zE42YZ^U}Ak?hDs+AWz=?9V}H|FV`h3cV76tHfUl%)Nq`?WWy|B7A*W?VHy|DACIH0 znY^E`K|Z@ynAR-AvDU@>)wrF$iNBkFn17moo_`e?>OSMYL3X;oadQ%l9CSwsiO4)R zNzFDl3wh=mgyqOAcOEjzbt0GCy}|>?AoskmQ}{^u1X<&LL6$h1=s{+d{T4g#9+0NFQx=fo)51XDgy<~dR^r`79)6b^A%r0|(^Wn%*b}Vv} zO*YRkSDNe0t>%^H)6Ewk|JYjO9lO`O1=+@4GJlBdVn3PxMpm(C%RtKzOPnRml4+TQ zY+|!5RhD|oBIFD^({hpJDoZD_gWYX;7oDYnN_34z zKBxlMRAhsybv3(|yH>f*b6w_I>*{iCLUyNDkk9E;*SD_U6am?rqLqV`K}v!$TFFxK zl<7)^vOsB7NI6?stz4n3Rl1Z-%EQXj%1g?7%IC`W(NW0Y6cc@L^x)_b$kUX8+)O3N z%G7}TOYPBTMV}vidGs1&Sh_pcflWa~>oRuoTZEI};@zM8PTKF+eCmPkRlB+7Tc%yq4jOyb zQR=(y<27HIFcZcM!W3buFin^)%pfkGxB}t|i7O&*@{PhQX3QY?g%gP@ZdZ*N%7~k) zUibB8S+M^t8p5q6de}G^OFU1Q&z88BxRSL3B0_4hMk5$A2#rEhh#7*=BD8f^Uqsv# zP>9j=Qel~4`OrT&+FWuH4q9OQkdP9veGpC(+N0vu3MUgceXRg%#u;p`1}to=ZeChc z&H{zP=&wbOSBMaxMi-|EXGO(z3a1Na2xk&Elek&L&F&P=7S0jQC2kIJe&T9aQv;bv zS5A4$($YrFF21#TGHW~w-^0{2M(wEt0W4uRq8X9TRKH@uJ{u9}kQwD?vSVdt8q2QS z)Y`8ItA$I1OF{OR@dJe`ge#}3l}f9d>u0bid{rftuzQ@LeyR3E+==Z`#8nYjy#uwb z7OoMl6|UnGOIy+8G`wRyvydXLk~nPfT*4Y*t+R zT`z3F#ar+csjY_0XNPb*YkoJSN^3B`gT^+ERpDtY^CsbLMjdw%SG!h#@zi{_q=&=j zp&2JFa6o9TuF8U$-dw~J%~=9B4|bBDn+^RCdZ6$C?_JaWT|oIT+I(2p!rFXsxeYI-3T!uB! z=Sr)p88o|en=JK4WocdYjNpf{+0`}WZFQ|hEai0z^U4V|%>*93J;tG4%i#M#P0h9S zuwynJtEsZ9LaRgX1tsczWHToO7Lj&Ne)*Ex`r2gyH<@Vl5kk?bFUl4g)1VI%gR5;q z&|)?PMOu$}IudDRVb)mXSe->LRs3NCa{(s1&t z@Y~Fw#~s4&QEP&~m{HhN-H_XWkisnrjB?d8A>nT^N@JrcIg0{ZVnh*l#O>edB}9|x zgkP0t7A>L`O08Xlh3qQgP9yGg;?5urtnsXyM3<zYUh3k2)?bZijjR0 z!a5gMgA2B_f_#`qO!w=Fhl+;-PvT)>EOFr3=XHojh=YhbpSa5zWyY|{$Y{~K)lI?` zgIw`YT>x!rj*7bKX7Olon0Smh97=th2n(|dhH;I>tPb7W@@lUlUydfruBgJGf zCCUZWKTS**M~S1wW5wgdG2-#q3XFy9snSDdYm}^eLKT3igY(qDgNOyQX3Sb=%{^(* z)dF{wAip>;mj*Sivffh9^3fqrSwAz45tJ3@p|q8R9b~W{O#2Hh-8nj@w1tmBhi4`kMA{iMy!%Q@;`)@X-i)U(Iu=+i3!#L~|g~ zCVXPlRh{A_F;9g0vzoZeh`S=-%Y-SN%wqvCv`d-u(!jjDd>F83-eNfoI7O_UirCL^ z3y7<)SImYJkwqND{EFD>2ONuneT~F9STnzPqFBxk44$Fst+n-_uk!jP;;tg@>h>tV zGLx;-==k_}#-&=~7bCLqvU%ko)_C;@m<33W*L{-WYa3evzZ>86HDVReVzpQUWWbun za2GRN&^pAqOxpGK2y$Jl#V&Kf3}zj!31{N2Bko$ilCh6Nja$M_M6fZRuZ^ogY@Dgt z_^6(4onn)?5UeKXD|Sl(2v=7zPq-X}R$sb9Y{AG{`GMjhaWM-|Us2vt4ek`zTwMoS zrA5_Db6HCqUhAKq*k$5!_yL0QJH%ydA_q0KRn*m1>Y?&6m=TpDa2DO7eP~zw2t^;D zV&-k7F(+eX;)-B$)za2t_#jn515+8Sc(RDt(OqJ@Na88tsp2Z}H1Txo|IZZ9BJM`w zZX)hx;?@y&3vpe<-AdeT#H}Z8Lzj3Cll@Uc#S3s)a1s7p9W{iw+f`*iA?_~Xo*?c? zX3G4Ore7S?-MKcnIL)0vRWS#KKLqd0uWf+DYXZ~h^>G%KJ*#mMd~4={F&)-xnOt}x zs&VfjK*L+9Qw3Xqt1uxO-iqqx0G{7k9oJY>(^3tuuJD#xf=V$T17JS9CA?BbTkE_= z7C$@uF{9#fjdfMfU$KV_tGyTuBM&WWnw_{d>Z-LO_}(2X1~ybZ@kTgTiZ|iR<|Yw~ zwUM|x)z3}s35s8FC|+a5Zx`>x$vRGUP~>jn?&%OWiCC?BiGw3YIo5&8}@>6}$II(6_^Cw7|}=qP#h7F^k>5U3?1j z_O$p6JaOaN+G?vRmbO;66e^1M&gW)~^h`|as(vlUwP7jfdb7q_wu;Y90W!;SvpdAC zQERq~+t9!Z;SGFq<}c4*@l@`%t1o(E#se?E3jAyyG`4C@uwIWNwO83X>=0ie4pZ`I zhxnTKI&qH?_c-QdCLE`ZJ+Tm(_sCdNzu6AHmKxaX+kXu0}H_Tkz-V^7;vgzm9F^Xl)9<7Qew2C6r8U z`Ga(m4)I&Yt$KYHu5^4a{s3j$9II*vZ8Y<0;8baLnhT#60c#e1;f}0l( z2yQj`N?gl+6x`Ax2yO|-7eDBNTUy4L)^c2&;D@*$iTg?Wgy427dB%F5DxD6VF0GPI zBkn)M{n8MNiuaF!P_DT>+zoC~Nf+%`e zg;DQv>1v33T>D%pVFU69aeor`SEqE1bS)G2e-jVJ{y!J@(hX5A>Bewr{X)I-?8gU9 zc=(E^@+RaAehpaJyj@y{vbThn{VDU!K|2@ZUbHIykQZnE{47``B)fj+r`V0@*dW0# z5&~Gdg9%_>>~k8YK+A1C>gaH8e4li`^nmmrxbc0`!{Ekz0`YF*J;a+-Zj3+S2pYQ6 zl^&HI3vgrJMZCEuH-3h3<7cI<(sRUHh_@5(?B>QVNH2mL^H$<*j2pWkll+y9aL}I{ zHy>^qieSjfS5!I5JG6ioz1k`U*tQxPLyMN7?O>&MR2I!+bD-{3%lDN1*j5>09YL>3iu1 z;=RQCi0?;yf8qxae-QBp6O;=65aJK*l77-z_kX2dxm{r0h@wM0JHleuEd1fbkHC81 zx3~kGd;fE8*$U1r+lY_VIk)Tt=jL{4|6}5{{}c3Omc25}xH@E?jMY4X_(2`G`Nnz< zCVuGtKixzP1ihe1I|`A2W&Kq$v8oV;TQO|oT2jTc<^f(=dh2d^Vo9|!`WgO z>y~q+`(fXZCytSGm^{IO3C3){Q?$_hj92v0T#4y3>h=Bdl>qscvuN>0sUR z40)zJi}+;XQ;AOtux{C}apV+`;b$|0cy@0bJ2GpQ>onF3r&g6U&))y6Ie2W{dmXt& zXUlNy`-eN#j=tnYGJy@ti{&NqQkbADmsiLu<&$8F(oXys;*Tf(1mdxD8N_E2pGAB& z@j1kg>yl5=*sy%Md@&02{u7vEeI;pJ1@zYnTH4 zqI@0uf#O1ZuJ#E9`XB@0H^?x&?|_BTO~g+kKCeSwC*MMRKJg_gGu|(!Uh)PRXKS7E z?XY9oNPGeDg~S(i%A4f77*m~0eDS}5sXhosxjCFszBPTuuFKAwG-q91_R(dJn{QW{ z>LVz-CA@4&{J2aB+-kEi(~rwfv6+5?38Ye0AU(|l5^O-Qi|ENq zm5xD=Xn_QbD?j-K`DKk4n&??Sn9+rCVcr5OvbW@&;u!q)uKXTu zR`^QdtBIcpCd~dSC%!7=qDcNg{!rt=@~6c6iJxWgVB%rhigQ-^b4Gq&5I;M>dikI` znm~BB9h#~uf3NY=6Lo$%VPE;F7D}-Dt|LgJmH(@=&I-S>-`a-@HLNY-a7k5Ht@Rqm zu2_(q(XXUwR}Jdt$Rh3AlD4KM1n28{@eoqRAdx>!JR$|if60HFqD(k#s3CqX@$-nU zy}=}yM3ZEaiJwpW0^;k4f0A8=YPTCkXWH4L>S@y0)}oI<`%*V*86MJcX!+9e=DF3a zyDe_qvl^Eu#`P8s?|U1KU+Xcm4Z$T5!;!_^Y|;9_RECU(xw0Ei21Kl-Qk%&IYBNEU z)VC+RVshj14_AP&hxD3!rhd}{7bwIx5#LCB1MyGnM;aK!VmhtgHRS?*;Y& zX&~$|4<&vf@y*1ybedv$iwPQTD}z*9`?e|C%T3Yd*~q3kvX_|&n$q1(#L;Xbh7rFA zu+s#%X@n^mSO2CsScWE;5=}{_k;E@1ehKkQiC;$ia^hFqBn~pAG7a4{iruVVPCN`k zU=qT^Bt*Sq*8=@%g99PqO15<=yMflP6Eu^K0R}C^sxJ|%7gQtl4UV{iAx&sGZ$tZ0 zO(a4~1p@Dc_OvusxA9TCJS1Y5Y`7ZXWWiLz1dZjS_V09KD$@j*P{EdkT?mhWi3lzj zs#dHRpOxh=D$Xe?F3id)DJd-WXXlK|Eyyj+Ei5R}TAIjvZ&$KmdYfm;Hx-x)O+}{3 zreaeGOmWLhQ%qA$(@fJ%GfXp0vtXJ#$K*GiXeu{Vm?}+GFx0Iv%{9$4)tcs;7MSWx z^)TFRG&PwPnwm{5rdCs%X%P&0mzb8CmYJ5DR+v_rPBNWrYB!PT6w|3N@IB3Ry6Ftl znWnQ$XPeG3oeP8C^NELgM#P^&2>HjaBK|buPbdBi;?E@hEaJ~5{v6`ZCH_3(QTPHv z>@@x&LhLktHSw1ae<|^o5f4JRf_P{VR}p_T@z)T4E%DGEt|xvC@oS0iAik3jYm2{; z5Q2uknfP_YLu2S7{#N2|BYr*c8;HN1_&bP)u)mY|O~l_t{N02QSNy$%5Lf*D#6Lj% zgT!wp{vqNYCjJrPp$R-n{A0vF-n}$9W5d#tac&M)Nwt+TU8=S*n9Ht4ytAdu(qzR7gk{RfD=f;- zDJb=4l$7L@`inA3Cj_cop;j3XQYE(lUF7Ad1&yY!?xpFH(&F4Azg`-{0|jN5WtAFL zaHo$q8WhrWX-4t*oKlpB``*2cWrie^}gMQRQwlY2UEx@c!+m$1^Tf#pbHGm9Oq&RC1T zwx}GA&>9VHQd`a4{U8wrPg58ow>qz}0lZ9W_a3#~iF?v+@G5Iv;6}5m7Qr=P(Fe29 zoJGtA%V-$a(wK&0INYqW@T;*SVzni#Td^W9+h1H(!0_TP$;l|rnh=Ve&1%gd9Ft*n zwae7WSg}F_X-Hb28xTr;!ZyBq%tTo5CzD8}&BJ zii;U5#9L0x$tv|v$tf;@pfjrAk`q-94XKi!Q9LQ96pPriFm5bSxF`d0GFzE+F0X5x z3#aG$CfHpygO0kHIODrn8DOe~b7tZ5uol0Z3`+ zD9oIg<XHA>t zXTOwXj0ZjG($nY;H=?L_L~r$S3NkW*ntVvLylx@;gIZxw9~IQM1G_M~_*tzncy~3X z=44DVs^C(O&0}v>re+iu_%p#;Ci$~6ib~6hvBYJig~d5}IT-Y35dWLzE!QP8Xb14!y3(~vz%R+RTk)y z0hj$@z{l)RYxhbBYVDl-qSER9%))F#zcJ&stIs9LDJaViUlOxht#(YrcZ4`#`g)EZ zuUZz&&dffw=FmQBGRD($X$GjZA`@Q$I7uG*D+c!}ChPJ)gu$X+JA9jAznWZTCvgV5VhK|5qq6nR>%m_ zV67N)w+sy7V&14Hb zuY6ZUL0LgDGNesVIVlt9##E=N^&&5@Kf4T?J7WO;{G8GWh1vf6jMA(LMs?hs07{31 zu9VKO!8oSm=1dJt=oqzZ4`R^E>XWI`Lw?EllAMBUqYK>Zql+P-U9in^RzzuH&Qj~d zhS$lS4l$XVj0v8)6&#+4OhF)?5abK0I%nu5JDBSWJSj)2kA!J$3nm*!zp ziVY*E4aA1TBIeoVIiR$V^Sho0f}Li+`9x;=*mtqsE#mdVEOUjqQuA~PJH|HGh(DO; znQO%{<{EPyyG+~)Q%U0ABp&DDTiKs15_6~>h`G_+)P0%wD)G?uLoO4|utU1pyx6?N zywtqRyxhFPyps55iGPmxZN$Gw{L94S1pk%5DYvq+xz zn(4^%s_BT~Dz9HOn$K2ED|ze+;M$-^r8Aygpj}+P#4auoSk3tQ67B2l>}wXwE^ueL zM@|yvwc5Emj7Zgc%*lIk?vBplTN@keTH-4g#cNh~@w)4Oe9(J$-(8y5=?Cy{_?3U4 zBkj1;e5?5$+*g`!Gp{#qFyC&z!@SXar+Jh4E;CM?-XeY{@oy846WDi&e~zV6z6rTIb4Y{dLX)DYr7Hts8N7^<6%{BYpDa{u2~nz!NP+WZ3XpXm3M=9h6_ z3ICvUak5my9E4z{i9<;~aIkHD!@Lt$VCFZ?Sk}*o|GdNewiyeHODF7eV4}ZYZ2b`V zfLV!~KVlbk7{Zng^QY{h4hEyWT+~HpZ#6j8S7wB0>NJ0C{>J<*@m~`nu=C$`n!h*y zz%DtzBmVn;!6m2p*C?0yxA2S0Lz`c@(Z7EDQM^>-iUWCzjrgB& z>TAJ8qQzx_V@7{HMxAzL5@bzJ{C`L|G)x%4TK)%%$Kn;oSo(F_%@ab(^S>}*ARN+* z;k@Nw%fN17@F(%uV1@_-%Ml<+%OJ~O1i(0w_+N?tjriY*|0BTt#bCpEofU@~%ae{*ou3b0?HW|Xf2YB56=W!N4c%0=#60ACpvs5yI zs|OVlFA_qyECa)` zEVeAMEF~eDgcuUsotEX66<}C`hXn7xfMHoq1xr{J&V<&q#9lvfXU4QE7Dr#%_;UZr zjA2>MK-n|H%WfQc)gJ>#Pg=10ob^Y2_17u2K@960%lT}k&jqs=`Y~p2xd6;w=-)fD zU$<+}3A$N^GTd0K%Pm)FJP(ZUX%Ys4=UFab^;s)Dc^;JAyt?|)qnT~9zqze}d8i(R zP)<;(Eo&_uT1bTurUwtZ$^{*kPNqn+I1J$rVR&bFS^Kr8A+{Tqn=Cg6xSVh#35WOO za_bpUZm`^Lxx=!Ngd<28M8aSahWtO~a?e<{!TiDUtYxd^Im`2eTnWO_Bn%_rm>VoF zSY8wdSzab#I0@LAUrxfY?c1j1RoApKkC^GjwR7jGzs=D6?zHP^HeCTv{(#rNv2Jfz z-eKLnX?e@C)ABYU3xg0xLOclxH$)BPc8RYc0))b%Bs`|E#)GFICO^v@)xx?|LpKzc zFV-&ApnHTq)iXk=u|D8u5b{v14x13;GE4P)^o0~rTW6l+#$Z3U{16p)i{%T;mzG_Y zuPk3%zOj63`Ofk^2}vZ3Bq5oE6cSQNNFyPggi$0Q_~Q_b`Lnmte#48XHqq?8^xt4Z zGMr75;ly19zn+%Hx@s05As>-{t8jv^XT(u`J#i@%sknZ#7Fv2lq|zmA6)j5<>7hQf z{IE#ni*mC|@k~q3qYouwq?pJ@1L2WVLhd7!FKRwwW6u)3@e z4abv^9f<#6bzA#^xm!I}uhmDw34|d1LPn>xf7B4`K_q0hL#*If#ylI%b|==F#r^_$ ztDeCuiRzS6My&bexO-|vfbsy~28}&Qx*?T9Dkh|6jvYy!2d#AGZPP2m6Cy`Ll{ocn~5zaFFy~ko8nIz<~f#kD+ zU@0|TIcV$|THGh&RmNKp;3~X@JhV_iLLqCR2rV$Kt0(0}zz_zPL1SBE)mK7<3XKi< z8G|ZqRJqf3YiX3rT4tTX+~^sq3Zv!PK%N6m%ey#y+FTww-`xjZEGETh@<_+1Nb&Gx8i2xOk|-xSRfY^%WXk#%*8i1 zHygPTb6fI}A{PWwP%^HznWfQdX=+49yJnblp-@A8c?0gGs)D*oLeK!!1Wk=%fo#65 zhyasc-m(CvT1MBfJ3uXFpwS%#rkgg=TVRmd?84w|K;SD30fAh)?F=AjjdlYOb#k+{ zw;JEvq`n4=6jHSWNk+7R7PQq@R5z=6BTZ&YJJjST{4YhfyV{X>Md91!_Cpcb^3Y>% zR}LG&^0%<`EtwN?C*rdeb5zQR)U?cmWTciy&UEbAWuad{;!XUjrByuMr9%AL<4fpR;!;=kcXlg*(c(nTJTwmFzhf* zi~+3%=0SViB2Aw#PVK-NTUp{l1ky@HCY~`Fj7}F+FKr3Ro~bA9>>PdUaqX6NN4wH_ z{0U>*-R=F_4{ASTM^<)v&baZ|yJ2}%vkz^Vm|M6O(E`H=eN=)aYqugjj2%;znV6M2 zZd6X{h>@9TqmaKm4GGdSGBQV`j!a8RNl(wp$xO(cwVch#a7;>a!piNF^70FMOXP_a z4IV&8eqkV=CmZDCVwQ%+rFNQ=oRpTCoS8BrXH+IK)uY`J>EH|_(lXM=A%%KcYIaUS zNT;lUsnf={N4LkQ4P+%{CLnix5>_-VWyGkQaXBNhb5cf)7@3@ro}QkWo;of)XV&t> zv{6YIbz)M&%2#I3N%x;Pv>d0bhZ&ToO;qrhRea*kJ+wqPkq-zh5QMmPZ@aJE1I1+d z@}%^U!()@ul2;CoUCt;BBLRu6Txn#VOHd!^6Pt(#Y?#@axdB{gqwA~uFgS)92QCqj-!MFFqDGBM=rKBd0ux4Qqib6f zl1#p%t#D4llGFtJmz2xD59ZhPMe}miaH%RS8j}2kK8H`MZFaDWz>H-9=T4A zN9K|yZaFfNbY~#B8W~8g22El6hg6#opr6%k2y@ZSi6AR(QbMMyx>oJ=7f5dy1)dBQ?r ziLgvqfgpD`3U>eApFq@;!JTitXj(vb@X!a8u38hhIN{CI)s3pV4cM) z>cm$wqSk=9v%d@>ILo>qDsBU!cFwW-ttVQ`trgZvYn8PcQ9S2b=UHp5^GPTpVG0RT zNti|gI+#JiOcG|1Fq?!qB=||d#+Q{v)F0?jB4Yjsf+YkzLv9*z% zMpTl}M9TT3Am|V&t4X;8=Ml5q{U`=crYzyIFAO~>rr-l#H zo~hbl%ecm7_HY&p*SDy;goQ|lq&r0WQ@4$VL2|c*QA1P>E^cdpVh%H9)pALdudNWg zNRX}SMYRb3wG{H#=wCw|8-n&5%Ol>PNilWD!R+rKi!`-R%b7mDoN-w+5{@Y9HK~JbAcfm#<_tZ_UrlX zOc<+g?di^k*`gLgR2LYp;W*BEcGOi};xBTc{I2zU@dWFI){CqcBYx{8>^u$5TJRMR zs#s_#p@xKcB!DjJNNB*;vHKptdZl&`AYlIU_wvF)PmL4LE+6nyGOwHk_R}UUZeDOF z*Xf-gO3dCkO0kCZ%Zv&Z{HUQSUd?zCuVp-mXPcn9oVwPXYD3JM~U$_x{a# z?G)F-+4(tf^;N;0=+`I$l%S+T1jXlVG#+7NmxR{(p#)stdAlr@#EGftWR2>vOaBnhJY6; zFC_j>;@{-DfRqtzi;}F~g2oxK1A7TGHNL!UZgswz#l_$oFhbI*K{4y4hH8GMThGDx zx38i_ERnUw_+U`mXUS?c+Esy?F}=D(-F=s+(K8q^_?7f-&z7pzxcu6dO7)%8(YKW4 z#^t~qcG@U`JP6 zT{9-FrX~qWN?LkalHsm_*w^oCH{3?=A6dUZBw_2v)=#XTT0gUXP6&aE__xBTB%DUV z88=$LwC=KgW&PUv4GCwFa2*M^knkW0&xMZiM}3s-eQ^yVtX*(~7b9odkfa1PYa0HA z@o>CKk}dFgDrcshEx{9_J6Z{+z;H4mn0xEW_^yw(|I}Y&m0y`3vF$yJ-KVGE!TYEJ zq@gvw`-FjBbOiff6fjg@pVQcHy zoM`(`>>!(r5WX6FVtjon3r#k=r4p_Ru!9}}HJ}_v0$NKW7z@mWsp`uGsk z+LCPWx>{?)S?m>SZ7C#N$!5T%CK0UCXF!iWY#U`ecCBqR30IMD_2f8JFXy9e$9M42 zQETRCZ^Yi1jo#=k!3_ua>RQR%DxuWh=3j+RALu+o7?oC81MYwi`&ek%XH` zSl7Nyo0aLjZLJL&J*EjdXV#lK(xTDdu_98~>|h~;)Sv&I`%*{Va| zaGq^`_k=DW;U;5j4MEcvVY*sut)Y!Awjq}II@=Q4Qrj}ya@z{qO4~^`u+=USZYAM1 z64sNjfrQ&hxPyd^>uh8@#da#D>onWxwli#Jl5i&pn+VaS8I|8n2ska=Pr?KLYARnH zMCF(55tSQjah2`r(CNF*wuY?*Xy)FvHjvGIk%{|8+p%jv*RUaDC)O-HWN9O`>Vn!j z^{OPlym>(&R=e#MTUTgD>uoURS!de-ZghujqwP*)e7MVo`QEH@qlZX<>h=f;xSxEK zgvZv|?zP=#yC3WHAQD47WW&S9NqB;UC)IU&iV%=nc$S2%eXSF?$p3o|^i0s&JhxYC z^P=sg&?(ztdzG!tD^xrgq;zgXjg(50}?*!v>$3e%pOa^CnS7D!gnD`rhSO6oV<@X#SxX0zO}P%55*vr(mqUY_(Q*v z^M7ae zDAg?B3les*MPq3X{F)ldRyY*-6Za!Yby&8xb1 zz`IkWM*9gcv9gaP;Y;RNi!&WNoS>2Zz&Lsxk(90;y(Xrn506b9g@a*T4j`e^*z4@|$PUzKZ?Z46H``n6*#7@a!Y?HJN&*siajH&Y|M4qJj6GsiZ428w z)mPLl#U8PR8Fu(qTm{8s_Z%krB!l<;wQKN9CKPq`t zQu4_3QOQAN*d}x2$nu&|BWn_akKpWQ>f`yZUs=3Q$LXmWnNpsbnie)5b$U`0)00MFW)emvrz9ly z7!IytYHBJ{D?)~Ixjvk~_H8)o^wgw>Q%`DgLV8+S@~G7G)ReTOgx!gomXTPIvEv;_q?1{oO^+xBmbQ>&I{_)C=!;qvfQ#a_4N=wB@=V)=!OQ z7OVFEpzJTKtKt!TwqaCK90vo*j%Y`W!|m`OeWK6N z&(Ys8z;O_XgGmH9k0fy@iARxmG>OAVJch*KB#!8E4AhY9h}Dqn7|f6yXCOHtfaK#2 zAbJ1WpgWR)WXDJn<8>rEQu{)(V~k@gXv1;5;{*~DNlfZ+WH>TOL<88p>@Orc#ygmi zonwL{*D;aAWD-+IOzjl6IPx9XSv*W)8j0y@f4hO(zU05yL#S_ez+%r)7LLyHqKSU@ zms!VboIRVHot*=3`_0=O(@=JLc-i!h8&-@sHhbW0*R?KwIQCFD_!|)c9kU#M70He{ zDw0P7g^qF+$;XBxIhv0*fLPlu|A9Z0;`h4iKi9nFpwN2{aFvB*zg|p*Pn+@1y{F4@C9UCF%YQ zi|@FIq4#1ECmQIz6zG*+io{wH8&&k~ zmw3ER$!P%!owC#9#2#!ui3>=q>vUShEl%vi>Qw>Up!T=-dh~9<1$%GpPB&=l(Q9I> z?ar7em(v}NtRW}Ozk0*kf_Lw_^yM{6lkZ*3Q0VlbY`^fbH$QOJBXi%(pj9VVB>ePo zDWVh^(${&A^AMGTIk9H|>uK5(De4^Lgqs5bqC1DE&~4tMO2eILfG%=|$2sGj3C=`k zl5?ap*_q-@C9##nHWC++xR}HxBtjT3BXK#2D@a_~pV__t`lAiB%WkIw><#e za}Gdv|3lYV0O&dkNjzDHuCusr(d(SwEZV~ot4fS zjc}_~!dF@b3=+@mbS`u@Gr4;fiD&-{1&^Q_PZ%xJn?uC;>o#61MjIS zc+cIVi96eQDFg30&U2mTInQ@q;Jnazk@I5bYUd>+o=@ThBwk43MI=H+TTLRqyp+Vt zNW8qud6^F0t90;Q$H04q0p6e+L-p0VYp2RB+@ZQmv+;!gTe1JjsKIi=; zUQOaP9nJ@xn@PNu#OwDXbRTs-p+Og93D{k?N8)3v^92Uo=bXFJoz52_ ztZ_bvqao~;Z}^`J>(>FtH^Sj~#Ht|)4-Lv6bH?8pzH?4ri2zlA?oO0_JG^XSVTb9V zNAtz?_h(lRFr6|t2)ge%Kh&W6fePK5_Gschcd~p!&M%x_I(Iq0a(?an#`&%DJLmV# zA4ptB$ObBQk$5YKw~+`!*+Am$B;G;d#xAFxPssUS9l9)^ka(v7T?8}MkDj+2fbRZ> zu8ZXpa^Xr~lMY=M%O}*wme=KVv5Z14p9{y$cawNehiiZfhm!Y__`v=Huj?=u%P1u7 zaKV2b;Jpvx!!=ml^4^bLdTx2So%+trb+n6R6mku79pl1r=!1mBui`_Ut~eLVC?o>B zh<>XbTJND|{7-CoUC1cp>LsI)yK&Mj6-9a6O52Frn;uNrbi8R&1Cr9X5jZF z65l5A9e5du?;Zf~KLFrb24L(eUoZe%4*|pwNBS6*J%ujuao%3zX6Kp z0$%5Zi$_zxfuBo@#@~4^HTCQGU>J*HvfXtd%3c&+w)nVf@BY)4KVb8l_Kw3HXCgpi z0E(BmF4x%DWhxtci$U>9m5uG}g^jt78Z`C@&5uw?G!|=(t5ZXBhl=L+`fS3ebc^dQ zhUPBUt*+Z#>s=dMx4Z6eZFJq~!a3jvBz{QZM})-8;wL16JU%1wa}vKG@yjmP-8!1@ zcRj!ov$`H)Xx?R@`CAfyVo}0?=ARFs`5!>@a}3STllYZ^<`)^7Uy_bIs(R_d*}A!`pflqi1nqyDkY1?dBIea3B~Qs$3Y0>nNSUk@DXiniQE4J6 zisj*!c#=etWRlDzSxK^!;>l*Bw+rDT#)30b0FY|C+R{$E@J5tk}f0Z3PPe`xaGnXSGtCz z>quHdQU^&lu+?o=T9j6$ODW@r?D`zNY zDrYHYE9WTZD(5NZD;FpiDi%37sE z=~Qk|Zd7hkZdTSQw2q6kB99a$~OFUU7l4TxQP9@9LWVwedFOlU-viwQb{$w3VhyY`)CF@Fp z|FiWDvOY)FPszrSZ6Lw($5ueL`D8ndY-`B&0NLIo+mB>-lKp71=Maop?MujhG1=FX z{ZX>-B>T_gP{=Wi9NFaXlVc@0E+@xEa%>~V=j7zcc?dZZ$T^Xm)#N;xoL7-^3psa^ z^Jj8FhZ#h!+2^ht!S=g zc~{cM6(y$nTdEpcLx=F5J_HG_^Sd2_;bV^E$Z_+Unu1^DW4#>{_|NX!X>18N07h`4 z%*)G%#dvjdbwedWMIqHm_0(qgR3T(=eSL7hU+Dc>!0jXU+tcT;p|TD^nplqKp0DwZ z-ki;^R7GrVpI0P%X+wE^ZKX;OY&}AkLia8p2gqt&(%^8 zRab@h`YXD_spRr2DU$VZl{vBuXZC) zAnPupt+kPbVe3JP(RQ5_`}viVjPb&|(8xg560doZ0~GPh{gOq+h|jKGR9(k%(8U+k zmABSliCW@ok0y08S^9oknxrAo3V1r=ziS`gpX(j0HV96mfPt)T=J9j%XQfL|#y zM#W;Fx5O_-IFDuX%3&xO!1f+2o<4LIJuR+<<$VbPceGFM48dfpe> zjh|3mju2rj@dYKBc#8CyA#@z8zrtaDg+)=XhEA(yUkF)&a7YKQg#oU}Og5xP-FHbk z+^@jE=jPM};ckvXhdpAjg{L0jbUH1f6kaXG0H`V=}q#=Ig*ofU3ZMHO5#v5`! zGJ8nYmuskB8MoUedt0PF5i&||{b;|E8L{<*IP_PpwQjE6{8)de)MRg zSZ`ybUrF6<8wQ(hWp2aZd11_Ms@_@((v0oCwS7m;EWMw!zI4BEj?~M_8gRl2Lybm( zjH;@vnM`B*2;Xvff3DtE>MQUlS@T-4^4*q1lpB%q3G2-Bj z8S7<5H15s=DI zF^|4Y?{%tQX^q%x?{u#Psfph+jX3CdK+QDk&nV7M4?Qx9-l&gddS41(FEg4^b?Wc0Yf* zMl-Lq6{j{8p`7epy(NUITxYcOzeHO}HI5Sz6t$OQ2s~nOQ$xr9kv{%MDMAvQa{#zr8sw!EbTxw5MnU!0Pj>MvutLBiSf=lakPF?07p_S6CG@p)?W z*LvFv`_iU*$m|Gvy&v?ZTJ~fY989qW!h3`r?EUM$k@|~1hBm))Lc~=JS~FdWuw%B8 zCggE1ZOpE2YMs{;mVfBYF7_*V5u5EXOTlkw@CN+r$1b@yRu;qQeJu4W6C(CuG!*m- zp`tjV+8872?JxH$g%R8DlfdUzH-h^&FJ;HGh=tTz)>>QF(&Iof2I1C-TT9Z)zT|l? z!#8%ykzYX3TRyq3bHZL)*0^sZJZhI&425C9i}C6`QeXRnh&`%1rm}|e=A}KzDdr%( z-Bb6FN{uDfWN)O%x-p08&7QW88@=5x!C<|IGxmPV8j?AZ1x~HRL4EyP?YEv2bhO^j zS$<``L972uVbZ7C7W6P!Ws8Z^U*eoSIeTSPwA&49%t*b-^ZE*3)eAvtgrkLH*5X>L zawjaRbxgY6!3BGvW*WzKy{QE;WAp|u>g!0W7p}HPye3m`e05(l9C12&i?|&#UT^Z! zJsI!bviLl`@yq?n+5hjzI%MZwF~1VmFohNKvk+*WbM(ysi#2 z0>cjy5#UlkbUIJeo4wwz;NoD9ueN$2S%Wv@O>vN1QInV&uPcox9Q=a*%yB*L;bW@x zQLObVDG^5z)Mp!$>+!izMhmK2d$Q*FdSjh^#fdkTDwr;e@AmL?C#F&F=*GSR?Dt%f zUJez*ubZ@ReKE~3D`A%!(-PAf(-yNRW^v4tn58kxVwT6OAn9h3){%4zNnIq}O44m4 zttV*%Nw<@9M_0^Anq6wlDO&pAnA2gGDs9y5Ql(8s`e5mi17@lF-z+ue5}2jNTuRcN zx>;(>6@58)#atiL0i)2EH8D_1?;`2$j+oAv8%Vl`B<8)bpTZ)<+!Ave>!k~}tJ1y9 zb~R=_Y*(fGdbeFQlWu()vnl3Y7^cVE6?1nCM)Uwl50bRGGv>aS`(cVK zA~9Q{TrrP^8=HUf&J`zI^=5{9P5!4hY<~UtCT5r(^90I18D4g&x8&+iCXDNU!K~zd z-wYeOzS}T8=9!r1RI}Zft;}p!+5)rP7(9PWoxTWWyD=}vAYyG-%=VZaF|WkD8uMDr z>oIS{yczRW%ubR}^Kp`%An8exo+1ftK10&8ByA<>xvrRZbo71@^C7b;kNJe5_jv=o zFOY;h^31ASdg}mu{{i^^$l&`EN!twg{=%HRmP;$x4{@;6{z>}`L^g@}%gr%x{q2q- z=|z%W>TvUJfuxs7dR>L^e(@1;o85Lm(QR>C-8Pc8lLRQgg2+T}r`yFqD7{M3YifVH zjdZa0!4vk-18lq78|8BQ!r}E(=9`0dF37!TRs10@&iwgVcw24W?jC@$2Zfh?q277+ z20MPkN5p-II~FtTK9sRBxWsJfkS?~v>-skqoG8qKe$d!KA@=v~ zq3&TSkljbCK;8*wO&BP%s=tNT);XX%!F?=%>`rtixktK_-6`%=cbYrhJ<1K6>vu?c zm!$VddY_~ZNcxZ@Sb2X;(kCQ++T}h@1G0OpCWhVF49K4uKt^)-5eSb193Suw`3K?? zxe*g#t-FMz&vhKTr}QO;-Lu^%GRm6c_LKA_NxM4S(9{Vf0n0u~!0mJY- zcddIqNnexn4N2d2y6fEaOq_m45}Z-~=i=1e3S72@uy-1 zVt5J4E)6fcasG1y67w>quIlhC|NOPl6+swY;Xaw6aEJRO0GOm7Ax_<-ic>Jwp5iom zaHj#p)7@uj=siT+gUA%8q){?7fq`v>=r?w{O0 zyZ__<#rNghD*K_nkc^1v?lZ#sVe(xk74XZStD!0!=;^p)cd z;CKJy*P{Txo@kN})$!}`0KXou$A=#*)L|sYs-K6$H?u$d_lD^U?m5(RIH<&Pm|Y>EZrgDBSKn6_-gK6S8}asqr?oOXdPbq_=y zXN-r%Qx$i3PEdK-aNyAc$3gJ25xwv-d6Kb0<2@5q9DCrr4IIb!So zr;6eDSOdq$lbl6zHWSG?2Y~z!0J)g~xrOB83?MIJKwbxiDvH@BfPAH~+9!G1 z;bQGMndB4JdWd9f_xe7`GAf?tIa8y_GgO+)V6=6%N|T_>Fx@bwYtYz4ZHuS)j3zGf zT%wWZYLz_4_1T0`=_=2Sj6ARQT;sXcbDigU&l=BKPlu<|a|6i}NX{jBBFU3T&LcUW z;sNUX2dHy1qt1s&E-|QcOJAEj&(of* zpbgJ6o@YreBY8@P=Q+>wBu^!I#_lN8uk7{|#~`McJy7--W8I+=F$<&W!NCj|>-1iT zIQCMb-cHYZOenqWdB^iE$umiwMe^)U&-2f zN8NhDcIXVD1C*pUx%0d@Y1g?9`{7vA!km#_~PT=`uou!q4b^SM-9E$bwjw6 z_c?dQ#Qo|;fPya1Z=T;he|Y}%{N?%E8|CG^yjLK(lH@9qt4XdQc`nKGNUkM$KFJG6 zuIutj8hX7J4ZU6mLvOu--lhP0R~$g^{ztF(V4&AKkYps~R`UUP4+DC=vD_~9LvkZF zdF%s{#iTE_cc_;g;dzhpLPuLja&w3G81HbBA)uD32;MD7`@B#wdP(%A0Eylt??^9n zl2(%2NM6+GP4%WRBrYa-$-e-J-s7WO-V?&n^~AEnA1kOX*u1*={p(7K--a@`dAm0g zWwXM|j(zXXho62m3bul8Q!y_V#QNnTCzC7s^u#Vy{o zBwxxfFC#eB-kj3x_p6xg-kSmCb>UE+ciZcyeDHDRedpAcd}{f5AruvFqsvQ&4u$3GeHg^mt=BHhK{fA2Fr9n^YuU)#o%Cl^*au$&mb@ zceD2)@5A0lyj#4FdLQ#X?tOyfYe>etUPtovB(EVEbJ{_2C&^HnT$%QM@BNAO@&gk?w=pqf{uDQUJfijWa^q(Z z;cs39tMByw?)}62C&?Q~zMbSdI=z4UqL}>NNb;Tk0{QJTMY(+DaBv>l{K}2~_2Zwq z?1e|i&)iuJ{!u~!^?^t@jK3}pY&pL)Au-OuWyELrf(L>&yu{A$tD@ zp>v+xqM~;`$}R{myKU+Du^SfU*Phz?%*xE#ReTV78+;2j^ulNf``{O$Mf*xrEgI7o zL5ub+_MO7eyTrHDx6HTPx5Bs5cara9U%L;=^UEY}CmAd83dygMjCFXOh%?wvJ`feimU6SAH z@U8Pf0KZQ%f=TW-^ltENWWC(Z(EEXk-a8q3KkOa7lA$&F?(=PC=)K?ffDa<#W0F51 z`O{9{L%xR@dOsui^M3<+p9CVG3P)#zz^WE5M?;rAaYX7=RFIUm~EXr;TFMHvP z`CmMhJucz=){c2YiiU3pLhm-;OB#A#RMGn-LoZYgoB(3_BBA#+-vll%?I-;(?t$={Rw1Ia&<{1eGPclkcl(fg^6-Y*$?|6`!{ z*8qC|I)L7P0KNZZ=>3)CUkvpA!8GTaeSfhZ;_f8*zuG6xu`Ifb>nHY;aYNEiBKfzq z{Y)hPzB}X^6>a^TAgz9O21}M`v!kDj!Sc@tur#hk`g!}YQ1s$Q{r*4p&I3BiqWk{= z0#Ds132l4ty#&F65_<1NKstn?^eQOGrHTqj?og4F+= zXZMN7hQNDHIP(9U9NvA-@y*O`GW-3^y>sWzT)8O8yC_LHCLN$8vFigQDc8xJC`q|q zZjc-0Cb?N|kz3_9xn1r6st{0xfhq!2GEhZ~mJU%sFW;ueV|ewRg;b7&4{*+$eW@dfg+h5^5#TaRPjV@rS(ZOXOxY_ z8qx|Kl|HE z6hJ9~QURp~N&}P@C>>CGpl|?;K$(`w2gF4>SUyCKX+pw?y=&4SG#rZhNnVfKWW^*eSf@Hz?e`QtzXB!y}EZ7 zf9&gyCyO3b%Nnm+?Aog@9=g^fyahR2S*=(1PI#>mhUF7}{O`ig^6^B|6M(Wvn#Ky0 zi{z6_c92h&PXh`~UKR4BY&g%BOf^dynJu43Cd@hVxj^Bx&g%`^YlO#;EAVr2Kf*)XRQ136Ht5!~XJ)5(hqkH8`@7c1v*+aQG<;kA z{XeUc*{^@Mp5pzJ6F`**>iMwzr2KoJUH}SnbLeLM+xP8~*}qk% zZpd7>9@xKU|EAr0;hFFz-MbCUY#_bM&+=c%{QV11m9pf&0aY3M{;N}q_IUMa5B&6w zQkOsFmtwOn<{jg#TQyJFN}aANiV&~hZ}|=RP5CYPZTTJfT}6_jkOKXI>Oj>1swPmi zfT|5t9iY&h)B_65NrR{&IX2-c=$NCb;K_8`P?~NVOO7hl_W#~o``=HX3KdSE3bcid z;uEMsm)9~=VO2O#8w#5O&0rItnuZllg$t-=K(!Jl&V1QwRrnR@H~}gGil8C{)Qdnh z2dYIxQAY6;nE+b?_0khC0V>KTr6``yWm0>g(8YoljedN@Rw~OP-c3ZY01KUlg| z@l^~{yn!zOswYsr#Ak2xf9hk23~8fAF;;<_u33sVf$E#3cnhe0BEETSwMtT%pqLcX zC2pG{jQxqerii*6kc%#BwKQi`{+B^l%u>va33QGq&{y+(1L;%4iWNkl5yc|Kdy2)1 zC5rbIOBGSYGR1PB@Xvn@sMmoS3e+&5-T-PiQ257>0BU4Zu`({uHS!^fbtupcM4+Q2 zfsPTq`ANiKm|P&x#~{$XM4!l=Zb6;hvEyxVW7qW^=4RcMDZn1B-G&CO%enXgaFr)BTw;?#~W(qDy&?sHTwpS9{ zwr)Mwb@p!kuXaq~+R47#f-%Z%sYN9auPbiG=)ED*JLOS^PFYCFBfZMP$|A~SWl?1@ zC8ea5jFMGyK;bHFI#4r!nhDe_pk@O#2Pj;Y%>!zFR4I$mt4vcCC+0<2iqN}2qW3+Z zR>#fD2L<%zKfOvb(yO!pwJ=Vv(vI{h9ZILtrE~+81ymTQ2vCdAytGUeu>O%YE)-=* ziRp4-WxBEqP>X?D5>}Q~;)?BkpfD(okmQS}s4TC<^9m8=^U4>L6@Xd_R1~OX5oJYX zCE_Wfalo{L9se7Y|NA-UhhUtoteKRetd$6wZrj{Gf6cCPb2M}D;QZgpnFy51y4bc} zV%y=fn>U@FS?8(guifb}X%QxlWWNXX_iZ0^RQ70Q*$Rm#=M50q<^YnAJisKbwe`UI#?fjR)xXFweU z>JU($1N8+^hoj1kaW!s@#U7M9i5jydH6G20J^WCh#>b$>gG7z^bsUk@c$la$yQG4= zfWo8%W9*4~bV{=NR!Mv}#*`WBv0qSHv+LhDFpNU;LqdcobB)$de z7*NL}%3qYf61#E&C_Kda-`kZ7Xe%xz+KTbx+HR_Qs_NpkZO2}ln_|V(F0?CGu4>wcOmf4N7P#k4T_Cxl$(T)g9dXu6-}`f_7f>v!@~Y>7!u`j~ zVO0fH22fXkLe=G$o2aU)!gC7|RW((0RSlr70`(VA*CMJ~s@eqS>p=be1mLV{l$4@s zoQSCNr#*cx@2$RacB@{Wj{fO7rfzP_RyD)6FDAAf+;RPY`FAUA&T^N&+3|Xz-~Yi` z)l!8SbhsO(!bmOt(KiuG6&@bLfFh<0B;Z{9syRdRFHcdGsp^h9F{;k0E~>7oZmO46 zuK;xy=p>*E0bLmAB0wjLJ29$WWG6<|H?|W)7me@4(A58*J29%)RKsxO3)p(t4l`Pr}^z4bFGpCeC-; zU%!4WMP8*cgx{>eCB2O^8P1I-u!TK)Zl;1MLCY3$zbtKhS}w>TZl)b&=TOSxpgogA%>z(&Cw}P(W|~ z)2l9p^r}k(9g5SdRwBKn?-V*mUc{}zld1T~ISivVsLiM7 zA2b>{scdxR2*R)WIc!@#vF&VS>WIiYHMoTroA*9A?x6D@e$^G!mB>hEU;-rlJR%%c zSH=WL`UQe;f^U<$Jx-#!rn(Nn{jZmE7rjb*wk0bLpBDnM5Sx*E{cfvy2`O`vN5T|2676UVnh%=oH16MXAP z_}0rYzAX#zeGK^aC-@Ekx~_!pt9cn;^&9FDL{h`m0Catz8-&#()uVuJ2=t4njeLq< ztH-Iw6L{ZJzpZ`;=te*{2D(W^JwZK@z}pn)W={gV(-FuSi9i-@vnA=$&Z>o%eMD8< z^ucA!?nHQJW7|22ZHF}vto?dd)y}hTRbRD#Xzfq#fp@+-i%@t(y-+m1TQJHHR`qMb?Wu%4eE{RP3q0+E$Xd6w+6Zm z&~1Tk2XuR&I{@7g=uSXq0^K>P-X5oScbwjRgx)R^z1?!?9Z*2;W1#m4q4!ImyGrza zohQ8~)jtq=zgM3E`emSB39Elpp9Z=+(0%if-e1(`3BA9ne^Z|Wx(Cobf$kMi|E~Un z(Ayj6K2HL@SCPoS5{Vr5?#S&;EH#F2ee);F*crWNiuC@CZEqyD-8`cEj|1jbSv%v~ zvqNvq@Au_B^xnoO0gm(?VtO%&WLH>Ih?riyfGii&o96s24x)zAup+%0Mx=Kj(yPJz zC$zoT^?vH5PN^C-(yK|+6xWo{l+={cl-9^K3XM{u0{T^;2Ln9>=+}UL9q6Gz4+HuQ zpoaquQH>@>ug0J;YD`IXjfK!VLZWvJ(363lLSlnc3-HZJs#)@Ku?Tlnrm7R z{NDw7(i4Ecrd?8srhOvPKZIx8zA&y4a@F6WjLLR;NST1(nJ! zeQDmnQcvS(= zj{)du1nB8Nhb5r#yy}BPS(=5K2mv`u69#$_(C>vci!|>6y%^}_BFOoY4Wfx^RuUkW zX_jkN0KEk0_kms-(X7&}CO}4kUiKsaxe+1TlnB|_ZE5A!PpeygUeUDkpH1J7jz0pq z72D==$YTH6-wsPl z^ah|Y?70c(%|LGfdTUg3GEVQ0$?qmlLVNrZp?8}^?+z%0zwtYRbyNR)Vlrg>BV|ZU1=l+GjKO*E~39(l;%)96tK~KL~4e zTBC@t79;QYM}LetmdRg>ciWKUoBI%!2F|V}m*6Fz)?!@jBcMNhq)q`XsbirHYD3y| zZ5i!T+Opbm+NZV8XrBf8GoTLwjaver1N{Zihk?!p8l8MxgdL4)%g6ZD#_L#Us}O#_ zlK91HG_g7s^qB&D^B-R=sbisS4D{D=e6^&GMbX!^&B+Td!3X-A*c07pPEtr4ZF>T6 zTWvd_j{$u=tnHx100&Ohxa*N`0C&}PCjfWTzN~!(=NP2=G}nzz@xr(@xZqQWn~GwUe}ywNtcH zwbQiIwKKFcwdghf4D>HR{|fYPKx25~JkY-b{Rhy00(~K>of8LmLCk&Dl2R7*MG4@` zIRM`+0QfNgOiEd3(L=f<0Zd9+Ja8viyG=_9S!lOwcL03_=&NDvE-f0~zktTX6+|~* z*1_8S+E0iAk7z#@?ann+pccJBG{V>MQ|_}nX~o(~%Kbw7B|-kMHd~8=zX9}3pl?OA zN42Do1$`UnJ5K`gSja+~OCgJASMF5RZBlvq+_g{Fwzj+ag@`;Bve4#I$YM|7F*VN@ zsmqK$bmnxu63yNBAb(aHD`cVlnb6B5j1;fYbWdw+)Q8UT{dh?%N z9Vuj?O9Mt0r&mV`Sv-(lom!_uu5=om7MK)ZQo}mE&HxO)0p7ckUxrs_)j5$uolR%g zIe;k+ObK90VktPCTjwGCF{OYhEq>lZ&MQ1d*E(AlN=nhCCmPdvYj1QqaIq@;=I!z; zSN(Pg$7Nf#t}M1Km)Lgqimzt0Y+TDRZ$yjqq$C?&rz9C(-Ltyq$w)tkhL=$g!^?ES ziy@0}qVs(J3>K$QS6Nq$OnawwRYi1F=s7c;NDu6nFzrd5>gZlXbai!g^>p=h4Rj54 zjdYE5O>|9l&4AGWgWt3c7(FofJsW{B0b>Tn0*p1PYaT;a*D8)~JA$rFLf4UluD1Z) z$AE56f^IKh>=L?I%VJUCr5KZmYp&FhC=7q3suWlbO z6@bCHE8i^1r@BMLk{r-|raK5s1~3(YsT9$DuKNQ0Ii@l&Rh|HUPWLrhhi?+C!z-)# zGDBKcJg~U)R$eWO*J{V!yvLG!ultdV^eI9w zxq%_9J5A`Vo;$t8{+8(dRfk)`gx+%^y)_BFxCF%S3%fpu-b=dMgx<@#E4r(?zjW7h z*L8pEZs>06ZUIvpm^#4J1*RS_^?_*sOhaHA0n-?mCQ;p;7`^(!`Xb2j0@Jww-~7i{kA7d49{s9jaeVa(#8Cq`@3Cv4jy;W}mrWG(9@(*LZTkl7V^&Y)f?*pbaFl~Toiw>bas1Jz_ zVLM>ji=X!&I)wVClT!50B%)cpM3FYj=Tz6vY<=p`r=#BNL@?IljVt23C8*==n%%-y96B5ij_8JSpRkCL0?;6Pvlu& zSLC@1I*0ly#5u(GNO%M3`)#6ci#+R_>YM3b)Hm0+(6`jTq;I8ft;cVm8!#^e^9nHC zf$0HEPhe0Yy@BZiOy8)!U7Y7mG3QXYrF7Vmuey&P#0j>gH8H_}{74X7i!X z+ggX6QQw2{LOt0&)@Kon-w-igM6B`fT&;2H1c}3_enkx4-8J-8}*y?oAq1tTlL%Y+kqJc%xGZnJ01(no4||%<}F~}2Id`L#z*x# z`OVxmOvx5OA9(;p`2@tOJ9#<#!^=>A8wB zjq#Z?Jn@tnscfeHs{VRRpw~o!&L#rIGkYjde3u6a^p1fc0=;WUG88ftHWV==8;Tl= z87Kn=2Hafr$XK2$=Vx1~w*8gAiNm8Hy8uO4U@DoN6k}x&rHx z|JKD|Kz$l87$j9wFaUy3I=qoB8Ch@MMEWERspjbm=7X`Du$}WF0BCu z&yxS=JN1S-NhyZ9iMD3I>m4eDhtw#wyljtMtB*|>NbHiK0k&GYN{*4ATwhV&L}E$H06NG0aNdWtaoZr{ZGo zfcSZjoHX;$CE@>?Rg-PVLcGF>crEN_SWxSD#pW{yrOoPfSkX{K@jYz2II-;q_Sv^I z&(?lr%G)a(=kJW@b`Oe64a><$N6AEXkW6IEL=yT}?izgGi*2PFzht!GVC^dXxL-eYuE?OVPLX>!C&D^V2%QV?!ec;d;`q4 zz#NMjK8o{uAZ~v@C;UnkRhXQLD$Fkh_V+Q^-|q;%CxMYFsu+IA)BgTqI7bBatKm0b zu-Ert!+FE+z?=dGEkM56-%Ez8xi*F;t0%*M+q7jn;Bcg)Yx29~V2c2o3~W(givdeTjd&F%`Dg4EGbF}-s798KtC3}; zO*^)9ff^r!8iA;B1h9;x#?g5h65~5Y4B&;0a753B)LBe15Z@zXfHhvM{R6MCfrGpsd--e3W}kAYsSVVhRLFhei{2f>uu=cR=PvZq(9l&BzM}E11#;Zm#5O~Chfk0HQ6Bi=J8)PBE zl6;fjyR<{+K8<{H)uabA2+BX3m!%uQ_%qu86l~n^LiDTH*|0TC-+AG`rS}OL2P&B~5aXUQ=n2-cX)n7aus2*5p8XO*)g_WH1>`CX?A@Fgk!&KW;2iS_hRtlTynd$>u8CXo}$S-&DxqTQ*Q z3%x~0NFr=w>OkmiYieg|4{UW{YXDm_V(Mt>L~M2~U~4}CHrwac>X&Pl3Z5jhCe!UHVZ3t{5U>gJ51lXp)HUsuW zV4FuxZ^r3;Crp0U=6N&4YqNZiQwgR?w*tEj564*Atb`lBB7w_4$*0hn3xX!fRv;o+*z_tUneZ;iM zw3(3D0a#2P`Om#)(=McIcOqT$me-dbyIj>XfA>{k*f(=Kh$QaCw)+y>1|!oej2T*K z#J1|69&G0?lzb0~ADa%4k^TfjQEVnoWMR{17>Z&$=NgJibJvn!%r+g35&We{a92Vw z+H&-|vFrW5i`413=_f+)3Db9`lcw)Yr%XSXel(pnoiUvS_GMsS0k%7^J%H^AY%gGY z1KS7KzQFd2ntqNGd=7Wnk0;qpe-eWGO9T%TciBln7xuLRgdYRKw+X^`fE^G=*jxw^ zRzT@H2@v4_BGXw0PEHkcvUwxSAjf=#bVlIx#GN%$n4kn5;mmrE9 zlDi^{(NaI9StBaaj5#D|Q(i|!nsKd-io~uDP^8&p_M#%qX0yd?HQUT~v%~B(yUcDg zdey^#eFNCxzyh!%fE@|!C}2kei{@r*)a;8X(j3z7HJ3@Uo68bKz9}gZcYbC7D=M;} z#L#2dmNR1++bnZcV8=;{tbvL&*EH86FJRvS_U+h{6t*pr>XuZ}(A=2F65WLHS!Q$- zCOoPvo10%EvTQ+QIZ>2lD0w-l=z_kL+mf91|wauPDqZM3}8aVPfY83A4L- z5D{h%b5Cv$L{brp*7D(ma9aaw4!&@f`DHGE=TIPbDv)Fa(J8bI23(kFI$V;d!?cng zOTXPp^BQ!M%&W|+%^v`}6xb-R%Od8rW>T4!T@EY;-u`np$&8n#m~*)_MPKD~vCBj2 zFPiz;V*SM*S{);9k{K)0nscd4yRz|R)r*0;FGT`@V+(hD_1iygl6jALe~jUMBEzKI z&V$EJ8o1BQUlWE8nh%*jH-BM1Y|b_xF@I@3YQ}j3M{*6YYk^${?0R4~0J{;`O~7sj zc1zU!O`PEqafVM3hPO(_WqS_81^1*p4%_kvVfasAw@J3;5;FY2lb+_k&9?}>H_SJI z#o*h{u=%zbeI;aLPyW$sDPk!`6nMl^RHSz|D$qiU^yac>oTeQf7okOFNke)qf+fX* z?(tq=_W`>?+?KLPuf=2WT6`A2 zC143!LY8z(84HF9KLhq4u!n&C9M~^_Jq&C%u;>_k3GC6RrCf|&%X2Y$Efom8(lse; z&NV4)!8Iw5fnG~pq}NgpSm~M+OGBjB(x~WbcWdomvx?r0G`!6TMTk>T%9hYv3AEB$KSExifAJuE#fxG4S}*i*p% z5V7>J^d$iQ2<+)60bsl@#gfZ?Ddr9Dl$ltBdkrpE!E9S3+m0a&^wh0VDpg)O)y z<#7PKoB+H6Sm~M+%W4ETc}eLz%n3GFHd?k2d^cIpeYyhd)v#r&WgD=6 z0sGJlkVm+~Od@f&WiL_T5ewRNM2}pRV%aa6VEl#dU&y7&T1ov5SV*xA%V(B@7Bm?* zfJH~)R>bm!g%sOhZv%^e)qn0lTd>%MC6{6w!!|ZJc(`em)$?mtX|Mh@4Ra=uU@W#_ z$)(uFr7LBrI+=AYtnRme+RUG8|9TI>r!1#q1Y;iEN5GM*QXV{Z(!l*{xk3p3&2r9i z-txQU56hpH3zmzPOP0&P6$Y*daLK?G1+Exy6mT?f3~(%PT-0(kPVnEc%q`1pB$$(~ zO5t*@O5s!mi{SiU1Y0>I*vbPZU6o=@$;*MZmbNNU8&PxhZ=X*{VvTK_WNPg%*qkK`lPa%2YM z6u4_{eU@Y#aLQa}u)-JOAX+O}D~a@4D~j~0^Xw;es$p%6^jd3LYgubs>saer>sjkt z8(14!8v&;UP6r%*t^qhBa3;R@109)~{H5q+))PD%%{ZpzcV?6iJ}+OY1j z?gp+RaFxQ=J=VRzRR*qRKAM+LtOtpC`P6#A`WbLlfU62zwTShQ^>bogssmT!NiZ*8 zp~?6<(PWgW_-)$wKkNSSPW`6+>t8O96(Z5R9K*K96WeZo_POAMu~mC4{kiP3(ePaJ zJ?7=4^#?N2-{T$$R|{bdTYtpkI9%;qkK?4V(w+L&U##TRMe=DYhFsA(tV_(xkD^(^ z1>^mWwM6el>n%d>CF^DD73)>&U)F2Z>(;-mH>@{-s}EcQ;2Hvl(^X^OngG`nxMsk; z2wd~1^>&P2TcMb9Xe&zSmC`}DR#I9&*R{Yo%zx+5Rs!j@l>|;o2eHYK-oj7Yl;nl? zaB(li9)VOx{HwO-mKjRYVTZL^^>WaUhc7a zVXKRTVB53U_PIoYZ*KdePVaYX9UirGNKH#-a;1L=w!L7hNJu9StPMb zB8h25r5!9=4O?xIU>jnO1b54`pY*jhw6#KlZH;V=ZB1-VZOv>i+M3&1*jn0N0uJ4e z?!ff`t|xH4fa?uhAK>}|*AKYU)wMn5PILR4F~R3;0A|nBWxpq8v-1;kmC{JFL@q&m&Ej@4L!h!ZJg~b z+uOjs2Hfkw4UO2w+a?hEI}AAVF8}l8ooyNtIX#ic^~K%`?`>H9^)au0L1!w+{kur- zENnYFvF*jsm`!};TKi|ezx$(Y>o>i1554nj3uE*y5a|WneY{VqwP#&u+NbpMY;KoRnfOlGrxwo9(w6Y^eFpNaatXCo6x! zqg_%ywY`{~5dpU2jxYkeAkU$TkGDO=u0nwAsrEE`aeE1SNqZ@KX}jF6uq%Pf0xk?( z1h_@Oy$9T4;FbXQK5$Eci$?A07{GY*;MhXvlI(Uf0eG1N@QNGG$z~0b~Yqhn&tpjd-#NNc-l+e2YxQ$N$z4lf} zWa~sCFBd=Dp}eL3@Qv9{)ydc1KPl3SrPu7alwR9o{$gFUTD3h}OmfBnTjcl9+sWP~ zMlYsLBfXoE-iO{;X76EtmC)PM-pk(G-pAh8-p}6OKEOWEjsdu>z-n9e!1poWJCWe~E^zxL ze5WA3_Nn%1eo># zHrvtRM`MbG*X+3zUQ0h(x6#DsGMr222zQ5+nTunXV@$W&cMu$p*td&*$PvWRzDx8& z@T^0E7k#d+IU^R1PD+)+(e{t*pT>y(L?rr~Jl{h4hQF{MCqy5%XWNh1zqB8T>4=H--teWjhqu zR+-p#R)-=bHCw9OS~~Fg8K+8nhy4SxL*vkkAUkv-$QK^Pt~#s^hlsAjE~0zskvjPt z&mg)Eza!uXIzoxU5M2ju6WooX>u8b}x{j9|ZBQGIR*u%d7XrR; z*wNO}4)`L#7t23C+L7t#NwXjoD32A z;n)@u+rGY=_f-8k;1+CBOn=tnum#`qmW_~m8DucI3oIx>LwTW@LL#ye&b zekV94I^K0ma!htiaZGhgb4+*406qoyRN&KqFAjVO;7bBu3i#5%%Yj!!9kb&6&WrP# zh5YhLiC=XNzxD!t9|OOu2*0a=S4sS?MShFTFMWr+pm0r+Dkwg4Vp)zYj_ri5t&VNL zYk=2=9XlL5f!6_V%twazIzA#QJmT0-Ob@RoDnwrpRcJ_5VcP96k`NC$vI)VTJHBun z2Hpg`8F)*?am4W@AsD4)dlCr7${LPbDr;=)$CtS|uws>E%X;2?|G707b4G%{$F`>u z3BHy*vtgAZ^=hx_VJQNypUk+2;M0zuVg#QR33lW;cGAF|cU&U`|L*w1@u%a0Og|ANT<9LEuBcr$-&v;{@Mw+*aUn*qKBKE+Y|K7Whg) z^}^*aU%3F`{72X+Ai_?ZW1os6>@1#_33e)-F5 z?6isaI;|qU&!PmK4iVqya>2K!v{CK!I)jL>)93U%QDV;n{{rw8BF>OAo#2}RJm$~+ z=bKPY+!l7`vMv1Qi8AB1%BncGp7jpjv3;kwh3tF*+g3=#SGYb&OMP6k(b9f9$E=@F zr!wMe&hW<8!Eq#=m7Uc@j-6FSj>!cn4<1CRQynKMvF5DntmmxnY~XC@Y~*b0Y~pO{ zYzBNa;Hv{)1NfT2*8;va@O6N%3w%A`>qnjO5^K&@F-z=hM>uXEaojk^61OS9_%UFN zDS}zfUcfh$Fz$;OJNp$nM_#};!k{#HU`(r+^i>aW4kakR=6oIaCcrlhJBK;n03N^S z=J|;7C@1j;oui32{UXvFE>#P?>0+P<_(+IZ(A!tn&>MCZG}w*bB+@GnK2lburt z$E|>G{UmTa8`+$b$ma8kzbp28q5g$vt@p;t2Rl|0Gwhs?Z5JfA{ch;3OZ)ih6-WO) zF)Q`WJNHDTonhyDF?<(^__jrSOJR1$hvL{hz>#(?b8aB`E_beQu5_+)u6BOlT;p8p zT<2U5e0$(K0N)Y#PQYgZ-x>HWz;^|{8}Khjof~6j*tylY&AA=T@J@p7D-yn_tp31b zh6nHi3;2Bu{2nCy9s<6*#P4CkZ?^LYc>&)8_@1#R68u4`MgrxS^8_aSI*$Y2JInbU z@O>UeuGH}dCl=rcJAWit_9a+4$rZ?azg)3Qt6ImL@syPGyIgvY-<=m?3dOY|F7*Zx z19Mii()czHQs`fmvEbp^<$_=u9n5hXvuwx_GC>sd4~u5zxY zUFf>L4g5R6kB_*XbCo9sW&-dNp8x~ns+^SKs*-3l0v%t-I{AKeH#Csjw=R4Iw@J2T zyQ*W`8i{R(tQuSVXjYXg>(`HF_t%>F`akPDS8Z3U%9^XLi0>rC_o3UKt|l&0WzE&p z)y(yxtGTO%tEKBDS1VU*R~z7`06!J@X~0hh9s@Tsfu9BZY~berKR4=%S6Op)ius2w zQe};wC*ivw$3I+FfbV0#msDAE4FZ0?gfFSGmb|3UIr74MBa*a$kDNG-3tZ&LuWN*B zB=8G?&kDOnyAa|q@bBd#yl=ZE5EF95H6F!~e&7%K9+ z7~3vMYd=Q(!Lz^!$WLTj#duJx`B zu8pouuFbA3uC1`6F0x4&>Fu< z;&)4q`Q2H-?_=PX)LC<(gSJ`Xm(*D!8G};RAZ5KTYtVJd^&|R*t{;Hkn&mnT{I-X2 zD{16sS1b|G^{WWwb|Ne>5s)Xbll$&PPW?{mcF}burpL>o9(U#0P3m;RU6knYrt6mL zw(E}Tt~<$H$X(c7#GMR0Mr-!~zZdv@!0!hhUCfVx{{;9?fj95+yc?# zXObQd<=B&N3-p-(dUT`rm*v(1e=x2`Hx^oZ@EtvFyW54@a68;i;6Dfci?G}6#(*%! z*uNH4nJ?Kh?x6cAvCUa-vmOu&a;prTNu^TcZADyQ|mh_K#QRuI46LfNqin z$bUoJ;nHhJyyeGS7j|(9-Syp#M0DK^MRboLx}`BS5n~P5?|$N?PR-pN5nXo+cT4w6 z?pE&B?l$hW?so3>Zj3UV03KJPCxQPS_*1~+9P}gbI0u~p{%q9UDUNQ}IJ(^lx<5(i z{*r_4Ww~*Y{j-GbusqQn?S7L8YK(g<@V^58Ti89${TA>TRKy5%ejOii zPjpWq=)UWo=H8`H`tYE<63di9F7 z$Fi@9=q|*zS&8U=_d&X)d?`^vabN4Qqa1XkR+)D_BN8F1=yL$-_aTPO@!(WAQ z*YQCVu5ho8p}R^%_sS!6+Th+z(B0_Xw-{0LA z3BG^0|8!pfSuv1NAfqGhOYX~vuZ#g1`y}9d1ChL$h-Ac+d2Y0|?yTscWoO>5I0DNG zqvgc|Bko)djLa)L)tK{Lrj#R_ba8v=DeNhVBkd`ImRH6T%j+qImRBar z)$*pP_elMCPl`yeM<4{tQqcH%ijhvF>jSX&l=2vmU{7g}+@tU)Jt~jdqw#1xI*%S? zX&@^OvJxOG39?ckD-AL^$P^$`f=m_l7-Ix`tTE&3aT0>n62V%@_{tmw1m{1&o^nXA z=V_2>;skrJ%G!hdW=|zgRidfNo+=>IflMFvRP$5^nE_-bk=}ec`Q@qOsZTzoE>SLK z;p_@4Z=-UlQ@JWvl5JBDR$q&Fnt5LIGzXa(WEPNFBc7I?mk9DUkYNJnf45!D- z>6nOoR=*X_7R_oN-~46SQK11pkV_P@J)N;_m&CT+dKb?u-JnjNts7=u@eO^4xd-`| zJw0ORb{ElgBD%`kWYoymJqX=?o?!&t{+xs^c}B+39ZS%CN4!V^J(0vT(P9x|}2U%GO-C22} zyU-IMP-S_-AVc7v340cK-UHdQAj4#<{4%_rs0XXBMLf$q%RMVV_8iE{gY5Z;XO(9) zq3{KeRd^C8#6uvSTn>S(AGB?UcV9J4xLT)PpKVBLEK-OUNqcg+NV>#|-EW<9*4a06 z^n|9rU0HC?lGn4-LoS#}KH}Mpa~H@elFJXm;-v{A9!%lKo&zy-KNZof{79V+drlB^ zvpq*VUwV#uzVdwS`Ns3D=a}a>$f|;@8pv>Rt^u-|Agcwk+90a~vbrFv7xjD>NB4(V z^we{fpj%%;x1kh0m9;KF_c5S*nV@?GWDO*AuOYh0=Az}3&B;rl& z-a-W5yWS*_H3C`Vu(z-m{pThiYngxedTB3@_<9*H>*YY!6lBdn_F}{<^9lrCw5wRr z>OVK4-cm^^-qMMN@zU<2(}cnm+l>`|Hl|&yyN}@ORbpFJV%t^2U#ZfAtoth@di5f{FQF0jqIZM-FIH)|--xF12jUKh*X|`T#pKgor$}&{Jo`zV z0^aA4U~kYH@}_&sc%Sl?^_KHK?S00J^Kv_owFg-TkaYxECy-@=tTV{EfUGOXx<$R^ zV+4CMycNBblI-3pgy5GYf_s2$Fvy0GrEftAoX2qKn70uk>}?FPSK%}j&C&+q*y&b&x)%FJ2zlg9%@b)AK_Xio)So`l09)MU5OvJK%5APl8hD!6Mmi<0sa%Bz1nGj*TOWK>u zUDDN6`{&jiRD1O7R~M`2tzV7RU8SY3cc^zb8R=nU0Wkq;C zK{gCzZ-8t#$N*#`KsFL&qd+zqWMe=!HtLPvAn1+XAm}AG2+E}LL9(}UT5BYai;icO!LMq*44bc_Emr2$dWTf?xFu@ zuee`)+WV`B?(|0*xC`E!1l^0?OWw=gE8eT#zr5GH*S&vxZ-8tj$Yz0THpu3H3`w2` zviTre0J4Q3%Zhq$#SF18DYgpsB@=YRk|AD{gYK#Vbn_owA07|M@|6HtByNX&rSn<^ z`?Nmd-1&4qj7z=;vc+Ma(PskL5|E+aonPqs>^{*IJmN!F5V3n775LCNj4$9TgXsE# zzK|~+WKobU1KIM3?D6{>$`e5 zLDyFi+g3_!yWr!WGCJL@JmIYc=ZADGyQ9fJ==!SqYLGeaw6D5|?&?PxxO%=8h_0`` zuYs?juaU2@uZgdzubJ;fAFfx{fNU+u)`1LX_YEN12(nEe+YGWTAln-C;bqd~pRY|E z-3|oZZ4$aWbI?6dfbL^Jw>Lo-9n|d-y8X#2c&Tq7dEw$0WGHv?L?=2e?qc~~_q{;? z9_mAX3bEK7_6_%;M}@1ik41phrta=WpZ^^ZS)74wXC}7Yu(cBg@Lu zx9(waj&D90>AA#-{siZ-ux|lwy2?H!k*oy&BdtVH=^J{__kN7wB_hM0VI<49fONvH z3H_u_D}9>@!>fF&eINMN_}2Q?`PTb3_%`|w*Fzxt9AsaB>@di(L59E1mmov$20i+( zqrNS1hIhmn{*W;Ijl}S=9EN`?VE8dG`~_hczn5<%hQCCH73;7PEWSu(LsAKrJaZyh zzT>`=L{}$#-+>I{lqbTz?|r90hW~XcA5HLC-!DXkM|?k{bU}6!Es5_pasBpvq6*Vg zwIw0`>AOtGzu>#*y9BZyK=vcZPDgxKd{+tiXFzuLNg)3g(tJCS=0@96x4quI>V_4s zpXhL^b2{$&Zp-#3C8c1E=Z{;}YwQ~^pj)R7gZpRptDl;B{qW_HYe!~$y>!IvW}2N@ z#A3(Cz@O}=M1uXe?fVhPe$I33q)sxw0txmD{uF$FkDI-}g6ubt zVOZom$bJXeA0Yb^WEVho5oDL5er1eczcxm&-$)3)ED?NFB3MW&AUOXC_WO}we*k1x z;spEC^Kzj5&-$N7ZTO$_O`vg;tbBhs5M_SavTOh+-&HvmN_BTYb8YPmY>om4llT~$(P5te_-tTG!#)%X*#kS27 z+t#sGn>c1bHEs?wI>SG_*!X)WY~d$0==?2-{k==a7u~>|AeV90dNfdVQXU5RQ zo5?={p%9{LTupkAeh&y+`Csu5BWnp%;`OVCka&9{SA)@|Hx9HwGKF zJ$1Wk*PZnaEnc(vEkqPe?{;jvBeCt=b~|j}YwA_m^mqTdDIbsi>mKNL`^B1ar~P|G zel^Iie=!+2GJFr>_f!8-!tVk9Xa0l!L;lbGU-%FEv;9Z>UxJ_mK@Wlf1S1G05X>N0 zKtM=sAlRe+uj2e3i<{n)gkOimuPev&`U?1c4E&xa{QeGtQ{wkRo~HMj|8G1%MmBM79T(nIgS3Qz%7v?KvWRHFZpI;95GsKh{8pm?A} zpk$y_pmabUPz00#6$n8PLLj7rPzHpjKqw1BIS`%(;TaH~jRrI^B?b(!MBadfDDgQ- ziO)-kyh4ovCFZ{p10hsm0Kb~@aU}-Iq7w5=ojFnb2E34!L=wnbvwx)pye(1hGTW}s^f-!3A)H6N){&%j`UZ?8b_K%YS0K)*o$z<|KOz@WgZAk+q-4hVHY zs0TuQ5E_8c5QIh`GzOtbG%zHN@35F77#KnDZ7SjWVvZx&u>jx4fbY8m-$@`elklCI zmmvwv36RKMU~T|?zvdvc2nQAf7J|?cgm(Fe?t6iy1l`4fC4u)rcnO47AheDIqJd=u z-8LY!eG<@JgE+2D#4&t)RiMwhibv;e*xu|)%7qmox*M?V#>BSsp1HZC$>_=pR<_No z<0}8f*nix)z?J~HT@WoV9(Kh)x;;`D*eSYm9TMHS)DCfj9oQQXuM0dK*e}A{DbH?F zr-OlS2)u^^p9j7O91dg$js(6891VOG_!@-HAanttD+t{{co~FOKa*#%VgGGbIg1GV@2*Mx`UX28qAWHxq48o8n0N`L+QcAFR zB9yoOT+_JOjB45)znt9q8odLLo^HzyV&Y&hm&C#Cm#nX?Dp`r!I{l}y-6Ptxe*g|D zgXDg}VO%s=E{1RLxfs5|3IyM`Bz)h=!FOf>zWI-D zurA^oM4#yGIKIJ#h;J!F={w{F#d?Xy;K(y)2PD`$_!8kO~y+g-G^J#J9qm_EO~rReERi zl7;J3mQR|B`1ZrL{S(_Z?b$waY4b`~7a#mPr6bc96ZWK?jNqW)5HixQl2FuiBsd&= zjfA2wwK|s=YFgn#62TB8x6L5IBSnH|A;CfMia^r!0b!WnTfyl`zGcC;gYN{#2PXt4 z2Hy=%3Qi7A2~G`817Qvbb3s6lYd#1IKv)Pu76@SwA|NaR;k{+S8F7r~$cF^yk;AOP zg#_fq63FiZl@7vM@jR=rGFN;60^YvxpNC$9$8g+_C-VQw z$IG7bFqQronZ54IRy!wM7w3wT*!KIxwxdsNYj$H}#*j6q<`iwb?+k8@B zl^@iQ4q@F9oJd2gIFasr6g7s@LK<|1Ld8QRLM20`LZw6UkRqfEsX}THc7yOC2zx-- z3&K7S_Ji;d2p@y+2?(D?L)zFJ8ZyRQp^%l#pa-NG^k9xFRB#E8G;ikPoEXBL5Wb3pUJNxSQzEXZaY^x?Pl=(n zNhzUriPK!erMHUyu(JN#;kUFi-ajz39GMbB9kFev#I{hkQJ)j1Yo33%&(t+dOSbv$ zpD8iaCG>KP-fkkjG)IT&JG%z$M^lE5uXb1== zK==-XlOTK#!YL4b0O3avPJ?g;gtO7m>v4LA$AXBVQG{OU9v%Vj;b|6gehTj4c^vdk zCiLR6K)Qz~G#%+J`gyVW=6E!rd7*`bt@$BzXnzIaw{R#cgf8tl5Pr`` zf|rD%q8p|z868b z^d#Vm8^obpHi(b4XnAh>_}XpW?_R~(bPtVJ=^(zlvF(S6_%^QFymj)5+AnV`{_=t; zD-VBt55D_CAII?hNW@pXi{~RUYB+We#P?9>TY~TBp)W#*L)oDtp)W&6Ltlly4t)c{ zUm#oq;W`L^gKz_cn;_f*;Wh|&K)4$X9gE|8GLG+$h;NE?7f(uI3Evdi|Gl-#f4?9J z;ofmp=pv*@ckzU-tF+$T z+Yj#2m-y99dJV49tsnXC%DsB_C#%EEzHL)&dGu(M*>6Di{*C+h>Wgl-E}>yR^tn5< z@9P`XtyBN5+3D(}lyprZj%U}N&}~uZ0H6*rO`CQQtJKE~& zv-Z~Ne4)tldr~md&FSQ>>g3buR)TJd@JIvaNiT=!rhC(U>HhRUdN4hdo}OMN{i*b_ zkdg{1IGDvDr39pugp^W{QW{d^kfMMTWiR9_nT8RlHZ(SEI>E^ zLx}115Z(0pkfM(J&FOf!c#+as^fmGVDh!1#$DTQsH@!tVh7hyTTSAI9E4>w@=pF`b z+%BfKOYayX5&=Y-NF}QDOybg|7!rw0WBN$_UQUl)EtB3|6r?H7ep07?>BER1`=<{` zADBKU{nhlr=|j?AOMg9mD5O{*1vO@a6gyx|w-hI&xFE$1DIQ4iM$_Y0%cRGzmPsd9 z%cS@uK?ZUJS-wD!k3o>+YMJ!ukm8pFndj9q|Bt=<0E_Be8@>Mwh#HNqW$(rUc64B7 zO|c{yU{H`2nrMs!6_to+5RCJ7Qn5O><$vW? z5W_-)<5$ZV78w>BzLAPiDw!b=>l|&#;llzT#KQ6wqz26xlfJ$JvQ%=k1?*l=IT{ z9+hE>A^TU$7@WUaMyb!!g5f8}^QqF{6=$!P(RCvJVsQQ}@hQVj=h@rnjmNnT+GqH~ zarR~z_8Sfu4jK*_4jYabjv9^`ewWI7Qh8r0HmUeY#a}7`Qn5=VP%4e3(qy6Gc+S(w z$(*N?vyQVj$aVHM%{_aY{lByKf5F+y3%{9$TT%&joxOK?I;jxn(c3}h=Y5MC+5dd{ zbn?XL#u;oBMx9hbq!K#I=x)p-l`yG%;5?)LE5Fyx_?Gc)=W~y-p!2yWoaYcDzhsc- zo`_fMUek@7jc6=pEXA2`EN(1e!Fh(k|t`~&=_L={mp4k8T z1);H$P>hvdevvouqhGbk*Wb6V_3Th!#r)t3jx*or$z#11vQu$aa2~ue-l{O2Fjk3>Rqs{17rnabVv^&n=wyra{y;M?VzB#=6 zt#ti=r|^IO6gEb23LB%Pl9+P}8=G+o8{_hP;2@QDQuk%{Kl#zvDz0hA8(TY0;*X6? zv4d2SW*OTU+e+mVsdRCk#Q&A2VPle!7lN~mpBOtDlcmy8D*Ut4Y-5VCv*Tn;kxJ+P z9ZtsXoM4~5e1dfeU((tqF7W8|u4`j&4%s-yc{29mvAth@?BZDW6J2Z}c}EuEG3WQo7-yBLXPjgFnlpNyeFT88prv+ zRw|#n&i@UZ|JBErUgaPQZgc!ht@EF`PvOSzjX&}op^+!k0W*z1NoC-_dg6BNtnJ2~ z*_(NXb2ATeJhSX_J}Yx4({GSFQ#i^YS((7 zC8V_P)ggfoYU_1MN%2lj?o=`!T3mX6Lsep9~+-&LeoiwrwYE8n<$k@b2N7?kLID}mC9FAnJkql zQkmoU)Y?1Fk)a`i6cgK|Wq-Qh{FJzJx3159(LXt%D<3@9dBfwQ6H?nJ=EQiz!=n-J?{M?%8wOHeD*2Qkf>*e)|7C z_Nun6mE`^ChxKwcp;lI_$R^BJK3@fm-*Ek@bW4@WjM>^dZf|Lor7|<)52?&@%%#$6 z@_(jTZ!WQ#qeR|e;n(B1)~==17IkOLV2fw(7p<<=NYq`T)zkEvkLIfxG^3_zCe5r_ zG^}3tzEBdslm})Nh(i z^V9sb0L`uiYK^rfT96j3HI>RrsjT8g38}1>${ML~gVbFORBNJ(!D zu=$vuuIvBGlwKYDX-dWy*L@l=;KhL1Cs#|if-^GyjP0$jQ%T>)wbee>5}x0CZMDSb zztBNTdj1Q^TBql~&_(<7`7fkt-JbtK53T3(Ur5*bJpY9ZO+NpH0ouUlzc54_`urD$ zYh$>oY9q9f+9++bRKAxA&$T~F<)=B?SZ$m(UgJ9ZvsAW9Wt&th{_l5HebqJo*{kYn zuAMoT|Dcq1o&WU}H+%G%j*AYL&+X4%S7&Ln^Zw(wuI`Y^FVgK}uB%)YgEPOmxTB?O zd(77sb6M0DXbUwiFFU33t5kN)*1qAg$R%dC&z$+s7xBzx z^7YRW**QC2acNwS_B_2%ZqUBxhA?fTwn_U|+pKNTc&WcvD*L38C6)bB;Z@JUx!Mof zkGhNey@gftRF%phsg~y+g|p7z-aFB;2det>$x}iXE?1SDSF%d~My@ihXT#?o{$_1%hlnSo{FH7Z$RIW;e*MR>> z<+@aENadzfZb{{~RPIRSu2k+x<-SxNNadka9!ce~RGvsxNL43QH>tWyHIGz1q?%W% z`J|d(s&7fPfK&@g^=+vZl4@b8DpFOYT12WvrCLm?#id$8swJgbN~)!$T1Kj6rCKiI z+CHJU&v2hY_3IBx6fnx1Y8X=ZC46>ksqvj@aSH46%ij*p7Ag$39m z1L8x1{330ULG~zD41R8b7@oR-#4gF5dpcfdrKbnjW9=c~5ux_5=y+RHls!5=!WP{m z_Ygiy;*c`W9TF7A5+NbZ2f9L6ensf0=*Xam_?$kxh*g3wi;3mt8X zY;2F_v7{B`Z;ubOg$9K*cO6mPc|`T+jtGiq5*}s`kK%}kknrZtI^rT(7m9r!0?EWps48hruOFXF+sL2{CW0E&!{$uDT$#8DM{_PjWWJ5 z|B>o^N$QHqH}^zs@b5$oN$8f+rUS1%5))Hi5lQciRR3Q`3XAgR>`P5>zU1KUPVU5X zZUa|J24|r6|D8Y)9Xh9V4oPaA%H7nj3upTG`xe!$OP9{6ynqi%;dN8Hgf@xcT+33p zLEEuQ+k*@<@zN@<&v%C{gv zDP6jy*}IcEw{~Zrc-;3&!nJkW@7FFT>@sTlMj`Jlx%5IDFZ}R-P z!@EEn>7{c#^CTzrayBD9J^LiJhXzH*hlKlcwnhepHO@WX?9OAV>LL=_bWGsoW&8B> z#`Z9Kq%GRcndI87fk7d5SAI>LN0fc`h*v+bX-+!Ngw8o5?B zCU#qZJ@SG>|L_2Nd{j{5Fq+u>X+!uO_#{*I>EoWg#6{a}p|0XS zaz4;g7t43=?9=R+F_DpuOCePT+x?^CW9^YqLE&MpLq2vMQt`P%LT!;v?a>VJ#Rs=> zJ~+bGwQFLU;~737xpVtU{+&B@;cbId_R-UexZ}F(Z{wmG-Zq!OKL|;p0*#Xs0U#zrftl$Jd7l4-aA2g}uY_+25%a&Mx8f2*zr=rxw~Inhxfxd)biRxdAg6ZbI$Nu!P(EC(1;Mb~cW3e@yO@juY4MAGu49a~}Q5 zjo>`m9vTtdJl-!nAoumn1m_X2ABjCICiE2}`O0}%?bp`G(?L*J5KkbK8uQ%cY^w9f z>TfvGap8G!G}E0&y?*nBaU}_1y-2QJVKH1@UJfzK8N&Cq3+IkB$e-uQNPDy`h^xFk zB+xaQublz(Zw}x};^p<{I}d+-r=9CZhKEyr2(OA=t1faL*5I|Peh?Gx*pRMED>*-X z4t)M9w!|6f^=C#T*CRVG5W*wkZDF>M=21bpNi26BTI;n*I9^e(rFjO64v%gg@$|~H z>R%Kc6%)nNKu~y06xX!a+_PY<^RU;S1u>2*XJi0%+hT1&AvV7t`kuR|`H3jb<5ymH zoo7KzSft(N-^6((bv&WFTK%o_xYrLjJ|Koy?v4vUe5gITNq9hfs4d#RiRD&*YQH`VQVF9iswmJ{s zSDMHFor7ZeUfHn?T?d_T9#ro6l|rLK_@xe*SgU zy>1LSZ+e+7m@Yo|PNV6H=?3pKny#9znf@_dmue-cR+efNsaBn1x@o#)x^226RZppU zNwv0A>p0$J`d|Bb%zygMVYTcxnR4Da%z4)^`)kjBIOO_aNyD>W%5P|oZv>Mm7_n9G|hm@As!F;_BI zHdirMHG7)9%+<`*%{9z5&9%(6&2^+&SE_oc`byO(Rg+XLQmrr5hEjc3s_#qHPpSb@ z4U}pVsRm0mM5o$?j)9 z6E!!<3Cu?*zRw4?>&NtU0*?rrq(^D)@00a~EV_-v%moJfY3 zB9Wk;&!>#ufp$B8=awnJ;BC{azTQ55dVjsi*J!tEmS-bH=0wt7ie$9=Y9_PY-`gHw z_VG5_^;U12$;a$%@U{EsZ3d&S-eP|?QnQ>$d>ZpYb!I*-GwAJhZ;Q?1Pjx1%x1Y^u z@YVvjcgyBOlGeayBel$lWPK@;ug%WKZYKUhF@Hb$~9D#ntW_VZ^wsl>}tE8x7Fes=&kwCV5<)w{TTz^ zka4%1!2T}<)*Jo(^%nBEqz17>kI~!D9N^<`3iLJl2RwJ>7?~3(^raL{ zewx)^^D}w-2l!IE!C>{anDurpZh>Z6;-|LdrJzl&bF1HOi zO?Um#Pv)(;e`My9-ikXyo?0fb9R8wD-Wj9MLSC;-# z?fNv!I*u&UaE@*cw_`SQwGYdAc1V3G{sZ@Kr7Uaj;W?RB75ta|6nl9BoQq6eP(*2%p zfW~Zqm#-%MESw_Qx$%I$Pjma&kz2pq+}b!t=GY>yijg~ZVkEl;muyLSnmez2KX>Jx z>S$J1srG+W#se(8HqK5cNU8&J5^@W(q&pJg#>?!p&eD%9>-Nl+wR~sY2pb(kxd|KM55vcR&4yHPC*r8;V+WwBIwTQ&bjj?bF-G&3qKmCs$8<=h;( zS16X{QXT8Ogj-fxR>g)zg>_3#o@H4nW;m}O7RS9AqDY2Y?yVV?4VFz5==j=9%ePYf z(pBGgd|&Q-B@peI5j(p~q@A&o1KG1nPS+!Rk z_x$4>x3Rf0-fPLCHVe-WQ)XKBOLc0-E?2MiSq{^!BbKAh_{&_7C% zRHtP(@OR4}G?43m;w;PWVumZ|pOzDjpnpkq`b^77sdD>YZqV!xJuT;)Z(!8mjxoK( z$DsFi+&ae1Z6;q|gH5mZ@sCgH;`s2jbJzHU)J`VX>k-S}7T&&?X}KWPSu-t{q&nO2 zjPP$q$*$;{ zm#mefx=yO=WkF7<4UUmJUU%8rq$PDvO6wV!=(sf?Iw{T3*U~TjLC%M-ull2$&qw1` z{YytVJ~~WJblhDK)vZ$}Zeqy3jzlH4cih#|HO6_DOq`F&rtxiHlJm-8t?5=`wzZbE zwzZB_H%j$8ss5PZx-?kpSq( zpF0SjiQzS8}XVB;-GDq9`5l${Xys<}-E78N83i&5&Ni7X8E|bBqqptXHV`Q?JHUM-S=m{ z$B*+AcdYGaFE`6SAVbMeX9YISD3Vdsv1&P@yCOSo$?u#R)Rq$}sa=xe7iN^o{nKdP zwR`#}s!;Rp3k#3KE2#rDPS&iXL&6<_7iAGONa8?!!&Y*a3SVIsK_WzaAfiNP(M_a_fnvD$N=y;c#B{Mh zEEDU*kK$*sP5dHuid|yAI3do9f5cPG9v>c;CP=_c!@>N0gRbZc}+bT@VPbPsfobWhy!y1nIA(5;Z0>Q>aPxLZj# zqg$9;gj=LrGq=`m9o>4k^>!QJHq>pB+f=tXZfo2&y6tw`>vr1hZ?|i1H{9;J7jjp# z_qCfY``@BX&cAd1qp62rDnvxfK2+)t|W!cB%5o)45w4RP9 zmVfccXkH&VAL)FJVU5pzjgh%FEi0JU7_Fi^w@v6-DIu+rk57H0PxjMA8@CcOGOp34 z{3wGer~@C=$9wnyv1o}_LR7ws$2_zkilHLBz)$^E;n*s5VSom{H?7hDtg|YY&6EPW6u@vO%c@TetwY>_U66lGS z4Pjs%FV^v59WU1LVjZtf(G}hB8R(Z+Z}dSwOakk8v5r?J=$qFZ&@-=v_y)_c5^Jyy z8*mtRgsAow>LCQgtj00be#3Pks*_*!cM%DCQau?d=z>(Fp*wnDAO?e8R3C;B7=3)Ejjff4k(MiinE3)ZOd38=RQHP*-g@oLP%A|Yy?#A%$xd0fCHTmk#FCOOx< ziQBk~`*?`QLevs)LmuP>d%IQvyp6(8Q53~d5~WcV>{q20q6C48jn6f#Dd5(HM*In1D%`jH$@P49vnD%*A{x#9}PLGOWNVtid{L zz$R?QclZH6VJo&{2Y$tF?7=?l$3Yy%QT&eM_zNd-8fS4H7jOwza1GaS6Sr{}_wf*q zg{UpyhCIlN{3w98Q5Y(UqBu&TGy;(Z>aIt0zy#2bdgQIIgfOIIA*kPnJbjF4jnUW)>h&#)Cg_ei*e8U6 z`V4i^5?^2)&I)0q9-|++AQQiWzGyWNivd`Hzl1Q+2UA0Qf=Sqln?jhYAOd}{7)OP$ zj7liOD zjXG%)wmogpccrZab4&^{*8?=fw~)WO>Nv7tlOA;8n4A(5Wg|; zo4A2Bn&d@(6aaZOVVx$d(}Z=JuuhYAP#IOx06ZTynTU0umL}(L30FXWn_S0zA%ch* zME*haJBZf+L7aR+T_xKS%V;g?KBO!vxH<;&+ zU}6W;n_zkqOwPgN989l+eZU&QtP#u_!Hp1$I3$2Q63p{d@Ek11O033Oux2o81~cd2 zeb|qKIE6Ey)?l8yn&yKF)@&MpAf%xWhGQJ2VLBG$TToL|;x{FJQ)+5TO--q(=}s{F zru4GuUpR@=IE(XOUQOw5Q~KMK{)UvryP%ekp&)+9UfdKSv<{jg3B$1htQ)!=tP{E$ zJT{cNLjM5kg;HB6YlZ%ei$a94FTzTq9)i&f?DepZ@G;t;9i$KuH}H^`fjX2&P1Hhd z)CK+jfLuSYfj)iE7{vS_5h)mkkr*RHWGAo>BI#M=T>K_Plo1>o#W7K#h(HvWXH+~| zgIG}=&=JIl8h}Y)wo$+02#(?y=yB9NA)@o*ExZl(Qgl(UkD~Qp-$WBXx;a{c8e;?s zqA-e}IM{PB%p%4MH9*}l^go8a#rT5UV*=3yA z596$82y%?`gB{F1t`$HxJ|o$91FM-FD$H zj^Q{?;55#Gy1G$Uw>!9phj=1HcO6QDes=!^%&^=!okcpX?gLznwtswXA+d=-_ z>2G)X+nxS){|l!;KfB++O|Wiv*8PmWefAEjzza1{8_f5!AkfRtKElUngLdeIF6fHx z=z)n?jCI%p>ip~?ZVS6W#}VyvGMpJ zAf{m!Hees!MWMB4VAM_+vPh#~91hw>Riq0V4o;}eU126{TK@B}8 zV=Cxz&rSFR?AxAu!M^Qz1gzPUzV>A1J?UXDYUx!Ctl5h-d$DFO*6hWay+ROrx zAEFhyfn0j^LLX$HKL%kahGP`Q;!BWUFY4}f4)=uUO;3AMZ}0bz2Gjb74e>4-BN(9||MZqf0`o}kj8u?+I{BxwZu$@m z!${E2bo!Z2zUg0K3g&{`)7cy8$8kZ3J_YbL=wF|Ts0>fkL><(F59no|=4g#ik%rIE z3-qlIed|Nt`p~yNJ1rB!8vQpJ!kWcHoK-{R@G4_YXoOVi1QGpuYap*S|AT!Jg|+t^Io;9eqK( z{v$9JUt$vILH`+;jk)**J96)ad%*RG- z#x~Fc{?Y_7;CHak22kgKCqfL&j}j=03aA7x)Ie?2MSW1~Kx!Qr1?nA0y#o_Ky#u>| zItNncz}}#~f&DQELoo`O;2a-F4+owAwGE`EK^0LM%z02X)C9d9R1dz;5QYyB4bF!_ z&CwFA&>pNms4KdoC+PE_zF=<+8i~=MFM}py9v0#oEX7KE2lmV$_RJu9HHbYt=pYW` zD9+&mF5{{YgXzs+@)~Rgy&2pHtUZ`D1`}`a8n7P+Zvy*qFtG;{d+>I!9|xZXF$WWK zFfj)^VqV8h(32r~kPijGoQEhVk9SZ7^lFF&tUaVLn9Yz7(5E3E;v>W(0V!Z#3`qky z4*3PtHiX)S9K&%ThWdawL+S6(B(Q&nc19|g>rm!8l(`P2r$Z$MU@)d)I%a}>JM?SJ z$097jGSH8qtFadJb?6Ntz9Vlky z8NeKdF^6FRpbx|7!?18r%dlo>0oEDT3)8^thb_elkk_yc_!jJeVLxIY4&WsI#wA<@ z^BHyz5Aj5Z;p92o1LQLNW6+o3Utl6wWB4~<9}FkvaQZ#`2#7iSH2%SD5N|l~M(B_S z`M}IaltCrfKwTr4&4^%xA_7r}MRPEt5#7LyMlhoheUO3AF$`nzB_?4C=)nl`8$o^} zn9qn6_zCoXL>9<(1bbt|QIO||$3l!0px%+>IFgx+EDmNkk~~MU-pDU79HYQ`BdKi^ zj~}JL6V*`*-q3@&jWWTChIkKtU|yq`*Ql0g1^POw4cegtK0zmR#-|{$QPeSNFK!4i znw&;ALIUW)X!hplP52p{d!u(^7pQUcpE!Y2VBd{C2j)GR+($nEb&p{#WAfrHybbCZ zQwQN7$1$ukrY+hd8RRvFd5mEmV+LR_#)H0($;3>|!6Gcda;(By{3XQLqM$cp>B-n2 zu*TSUQ2SV7jvWGKI+mDYi8XdE7GN=mHI`Uoi8YozJ@ywI!$Uj~VjS}r$9^4`9|chu zMNk~fWgK%E$J*nV%Qy=ffL@LZL@3yIxA+d6SL3&W zI>#T!2{6m?%yK-l9Df0qaTWjICT`=d5MP#n5!CTzFEE=gf5LeoCgcOTOz=ktnDvB6 zMB^j0LlUTY0`s1biZpabe^CDfW;B7lIbj^AWdePeFcn+yJO0Ks+yFUExF^I!0e9rZ zTX-89*jp2cIdKfgb0YnixC-=P;tu=)_Rd6Vop>F$K#db02{DP7lZZKqn3Je^QYlmd z^Pc1j;!m=m5#9$iPYOf~67V_L$CKE{lbGqG5g3iJ_!2BIiF_uJ&m`tEiTO<01nQjh z19oCJ_96@9Iq4)$<1CoXB=+Z|CqjJ1{`@Kr==WDG(F)}7Ra-0tbDm5slU0;KdAx%v z@Iqbqzz8$yqam2nWcJ`>dNujJ5L1dn4=ecdDeu9CNU-jdc(exldrAka#3r!*ls%x1 zDF<-`)HCH2*mG0ZJ5$(mQ~m+{pIQN|G1U)tG(j+$ftsc=*QuYN6S|-)*h5qMV-SXd zeKeJxPaTbMpyyNR@l@8I%6z9)MG%sZif-tEULeji;!Gp|Y2=^T7_6TeiU>p@7R^E3 znbe(0-I>&#N!^(pk%CW=hR;CU%s$8f@iU2^NuHU*F$(O9OmfU*Uu4qrO!jN$Ow7SN zEW|fh2J*^WgY|Iaw*^1oXKV+1CzHLC$==D_k3%?$KS19zPk}v@`8O_sy_9(!w?O|h zAKC`iwI;K;{^i}v4-{Bmt;f4@1%Ag9o zz@D8EhY#^JmS8!^X$HB>AeWgIu+L@&U@%5w9H?g|bVl!B0HaX3vPjgD45~_l8U``V>MF%kR zIcb;zW;ch~%^`<5UEzOD{E3>bnjV7;%8;WX&eT>3hf$IY#U7_>qH*w1q(;46^R z+-=wa`a1U>sBa!Q&8vfYXot>7#Wc*t0&vW{EO0K&ryuhRqX!2v0#?- zS!ezpaLjzxS>OhaTRPwZ$k*0zF=|3)Hdbh!Bg(X)(1drk2G42t@?CpeNEX z56iF;^n5YvEj}m2Hw91(CD8yJ|4m~s%WwK11B&=u^x<;;2cNQ?o!SkC@kJ`s~K4bw3b zb1)b5X!*}zo-3$vMJP-=0PE_UsjeuInbAt^kpS| zS*Zs-SxHY;HURxt=?`jI$&6RF!%$4X6l8+DR+7`o1>oFSxfGl6J$B;&nA6H*I1c)= z@;sQ=$}9Lsh*f35{#iv|R?&}D{lOZmz5@GV6){)+0BT;f4~K9R^nDdQUq#GS#9T$p zRriHh?T);73k6Xe_23KYTOEt$Xo+~VMj|?(BT~S5u$sNOdIUHhR*wa9SrVwj%Am23}$Om#=QwsECO?lMB zyRabujS-AcL?8;(vxa)sP|uoA!9G|+AJ_CiFL2(i$pC#_GY~^SZEJ>uI@WB*B_Y-p zhA-lf4raV|1L*f!a$kE2XF;#mGPkw#dhH{@4R@f1b@Y5)eiXplV2`bV?BLX|1r9P z+SgO-dg@$13?nfP#9U9z^~7Ai2ur}s*00A_5P$t{?8QMG!SDDJSA^KW`Lm%Ayif~% zh(;%L0c&qy?G5yOLvPUc4b-)PdNzy&`)9)>(AN#qun^y1DVAe1IBzzvhc=MUhAbSw zVI0Ld{Edsa4En!;er%-w8{MFwG|GVH9`+=wW~fRy05W!q6P-n~i-j7++un zMuWa>q+c5|F$1&lHRj=GoD^b{2Uu@YZM+Ni>Ly}uVm6zY&8AR9APTWyy-mqT0e#!V z9@xa5-9+y;(YsB(kdD5{0R7qYhY;TuLVbJ!{_I=!?zhK;*jxadGn>nz0xF>@nA2uz z-OQXelgnmu*-S2*!_g9L&<;r;pUquC4x7ngb8oQ5X7=Oeudo=LCo*}`nLFqLko%T(*nuo?4sZDf_k`F=54O^S zt;}I7@wN`eNK668Y~2Xz-pbzG`V+Q+I9qpN4~Vz*AdZ0ZWh>{)R{F8^i4fbUeH;5@ z8`p(x1yKkpih*8iqZixCp(5C?+dNSXHQ>%eIHBkqjV-&_#X*oA|rEK+N5>Q5Wpz-3{>`{9s2D zG({*{pe5o#9=pkV_s^i0yLVuh5Wf`%d*QdLps&Bt*WcLRzfu2hm(G%(DhtENu z_6@->j0AgZ-&dH5>6i)Tv+sMbfA%q>eZSx@AxK?h6+&TJlBDXAZ%ObZda?2vOEON`@T*~5H%K942Fl!N( zU^&>YS!=NY^f_w_j^GUL3bDT!$ZNk5fr!ROVBP)9aDNg$K{7Zm_S1v?lQ9L;un^y1 z8CGHq=*#{cpb`7`;}C8Malj4k$b-CK?F01V0R1>XKMr_94+BiFq9N$X0cLn03e508 zbI_Xu@nD7r644$K9BhXHpx+0_VjRB2EUW~zA6$=3pw9Vb0ydtao@KnEzpBe|QGwfjw}TJ#cs# zR$vRh$4}TM#F2t1jk2hKO6Y)Y_zb<} zFqfn3)1&OsqbVTf(Hd2w_dHexf#_2`fI74-AyKI{j196b(l zIeK4+WBE`RMNk~{_*g|$2E9I39W~(#dVS0Say&+lj|CtQAEOg8Ku?bi!cYvyD2&CI zm;}zTW8`~`e2=ZdT5Q0#_zvWJY%A#7v7I=Kqag2NALMcTEtEuQlmm4hC#U0IV;-3Kac2G}HUDXZ37k8BHpCi`+n?V?*%gJ@vfK6b(oTQ$U zdys{LI0p8~$rGTSQ~BTtay&(Dr^xNpyRe}Nnj#DzfPS1}51d*GVxBsJv!ExZ=*ek% zahiNjd!YuX_jG+w>*@DFUr!VBG%-&T^Ylk(hxSN9GJ2vfBnE&vpJvXdne%D(+v%BL zpPgoAr?=u4{EFYO4+n4<)OngZPgCdV+aSl&5AX=g?hLa#L%wII{|x)*%-djoXH0{0sT4qA=-l6&$4IFCZik3{cHx9<5}`QI|xJYC79b;=6063 zo&6f~!R*db&)L1W0&+Y@Zs*ADTz(V;Jv~r z#$f`!!cy2#nt!wB|E9*jH{%aH6yib| zRDl<2pcXj4E|B{La=&0h00PkjF=&C0@G%n60UeQoVORq4yFhLi$n64sys#7Gbb;Ai z*pE{$R4^l1@plg7pdhUbzdar#dElTJD|3U zPlUL{{4eDLF)tDG5-~5mgF2wLOVoC$F@nKtF43n;QHVuzv_w4U-KEda6TQ&~8R(CJ z7>qA493!y^J8(sa%dC0X2>N!JJ$-o^HsJ_P;tbB?0_ewOa=-jo2o4oj$o~ra?MhzI zi!1E0E9FoTRZ$H!K|NQ(kqmOYLT*>c?aCkw#b}HJd+N$pm(wC`0b*Vy=2c=|{TeI4{=B*Y-{J@SjO}3lSC4`jU8TOO z%;p-kUGqSG6hvVZL2;BqS=56s=-)LHENFmt@jm=u2Q$1DgmxH+1z^o<)b|hP=08@% zff@cY9?amM8JLZ)u>|D)54r!tZ2sAT@9`t{-~bNe82-X3oW z8?Dh9X`r?nz0eQDyg|$x#Jn*PbFd!Nc7xh({D7aqY;Mq}8@s`|d1F5g;S%WGjel?h zw{RB^@CZ+YxakJ==1uCqSrvY02iCl~82fNrh+FjkmJuJI1wO*ZXbt*ti`;K@2mQE3 z{eN-g|V22g`j_TmS7oHVhz?|1HJ__yhHtWj^mLKcPoQ6 z@3sf$=H2CB-`-`0_ud9GxK|qGPyzJg9=YEm_j}Cdo*A4Y_ZpxHLJ@%|#Nk7*fA1xL z+1#56^1DZF_sH!Yd+Xk2kkh@Nunh-s1ZQy>*Kh;3LC*ID+>sY=fn4sl1^f2?NK651 z+^3fN)P0|r_mAQaTmZG*zm8iV*nMI?Am#&NJ}8QJKy44G?LmDs0<(EQpB@B)c|Qn2 zI3hvs9(;miq@WABqC0w`H>mvq^Ly|)rh}RvoD||A`|V*3gdr7UunfCEA0E<&hri=E z&VgP$q!$m#{o!4Z|3mif!^c8ADhL(DP!i=(5zP3JCmMr3J^BU_*B9uxC1F&`82@iff90xZHh z5dZOa_z~N&6T7h&e}UOQaf1i)qaX^S2#TW=%Ax`)L4yVLL5@$}g$)6q_9x8k33GcA zh6r@Ra4f?<+!i`f9`7R_eK7@dFb@l{7^|@v-{U82!w&q4-PnUa@E19YsElf;i8`oPEGFAR?XIAda%KdL#!c|p@%(;(8F*gSZ~V^&qYXaXpCZL0k{wdJxxxxE{pyAg%{-J&5Z;Tn|TF z_Lv8I%%cmsqC1$q2Xpu6htDw(Lof^@F$Uu?5tA_uGcX%-u>gy)6f3YA>#z}<@jZUR zHtfJI>_HX|;s}1npE!v#IFF0Cf`4!mcW@t%gpQ{OU0!$O#annA3W}lxN~0VqqB1;D z9kt*MJq$3xiiUU(ez2o4q7jScXbJMqyC3A7mz?vGbG~3S1CPnaWAepgET&^7=3t)C z;m+(zzy8SJ)tYu3xhEf98+)-=-#%1 z*l#yMQ-p!97h(p53ZgKIfLaRmMjvFLKmG=>3f;v6JQljbaY#gad;<1n;YC=74WQ1# z-wB;Ue5E8xqa2v4(gy5fB^BM!1DmlE>@kHsrm)9UW~zqc129vSd8y+;FVxwXiv>6g z_MS@JDt%Wk3tf?FV4oDxU_k?n#1u>e=Rpx-6wQlbVDA+r$D-s|l>Ca4Us3WaN`6Jj zuPAdW`X^3+ITU5BVzpofy)D)d?}7bOY%!K#IaYyL6xYEWtXG_#6mN+nbOb#w{we4| zae7dk9u%hs#pywb+93ZD_0b6LqdWRzAUNMk48v|5!yotyr-ZI#9gtf|YA^XNZ1@?} zQgS~I;i%A+qDQ6Zb*TU}MlkLQU1<;GLje>5d6w>tKF9z$l)f)?Wq3>(YAW+KIG4*r zBLQvD4%At;GU`GP=2F%K`dhXiBnDtGsK4xCkXKo1DN8NosK1;Y8a;0JK-mEQ~cP@XBvof=;JOQ)uHRgjJRlb4; zcqDXH1X!~Q{j3rRW>tk8tB_-rc_61MYp@=hgsv*{tXduw!3?XiX4U;Tfm1k(zlF}T zI*cF>Px9dR{OCOCk>{77m!6X`4dn01F`nmf5#;8@F<$;4ColTu)f7WPE&R?Mo!1mF zZ!eDXx`A7`3u>yy8r4{%8f#QzjcTk>?TOG;XD?PSj3OwG3^03sPmZqoSa3{r`dR%n zh|BNF(N(`BbTyb$jZct_&R_;L7Gf>vNey~ZV~fz$EQU&`0x#46bE-KI;rwRc@Xrd=I=O;zd)aBp20bx<9F)lYE?yJB!QZ0tpv63 zyI6F!OTZTm@Gfkix3xnMgJx)s4?(T9<3X*pKSdfoLpu6_bD}o&)SiW(L5{Uqr}k0& zfs-Jw+RU;xv#fm|kA$vH0nqn4^u10glm&aI4tu8#`=m}Scq10fuMWMbLr?0^*E+0G z=K!d^4l(OI7CLVon58#8_b!Pts0d6|cO0nAyA=}97VW`Iy*q*P%DXGN zV;DwaG{#~)CW85SGe7U?pmy&$V20j5f|~2*1@o>;PwS>)0+?rA=2!P0(1*J8fp5!o z_1sVp^r9ZUs7EjARRDXZUKP}X5oXlKd+>uDP0$hasNR>D3UaD93txl%RFC~skKWZ| z{d(-Ddh8uN>*^$H$6>phll)G(&SRFCTLBAxED!NCY$U z`2@*G0kiU1h}~dKU;61wzkHdqZy(Sb-}U$bKVv&~APeN~dmMj({C!V@bKds`?&1L+ z3!T9o%+~N0sK>x;3?U##1GyQ<&Cm|?(a;6#BLn?3^h7$CiGf}jh-uV;J!_;VMtWkT z7e?|mh9UygYitc_HFiKJ5YtFZBQcEw!Q73^-8dQ3FaxY%oR39Vf^R{cMrLEAHscwb z$39vY+qyfur0ELZy-* zUn$v2$yUl7OXWqTQg&0S7?r3(eVWpO*0e?DQr+lDANnIpspGhzQqO`=={NC4X}y%z zcWE_CSEUAx(OcH8{Fb{5GwN)d8myy%gn&s%DCw=&x25SMoLkU%2cBU<`FJ?xa{Gwhqot= z&UB?a>V*%(-onT75tEq8|M&#i!+$}(aJj<&;w}$x1L6N=col@ohKP?lFB^-RWj|&% zt60q@_M!i>XV7a|eU`n0eUyEKnq}22t7b$}QjnSKyoXstcq5_+#qo0`qACsWGb2K8 z5k2UQZz;mJ6fp$fXT(Ux@FDY9fZatbW(muYHA2>iud%-fcN!sgguO-Rxm;SzyIc!K zvy1~=3H)aw?5lhdl9LkqDW8K}|`(Ult0K(jw5?{GcSJ?JyduTIV&U~IjPWBh4j2b7TzT%Wr(0WvQ~)1 zyeqh|3N@)sUFy>ibFVNBbF1LZ3eSR2#jNPDVmtIwaUm=C64@)RWh=5*+|PH&U-1Wy z;8rSLf znTeaNG?#rm3__7+6KN)q`SC_%CG;MtW~6(IbZ?PEabJ<{E7E;MPDIT}H6zuG`~rPO z+D)Y1A`kN;KXH;@Ig9T)@^>!tgnxO#t03e*cZVv+!~QBKBoRqTPD%<9O&`2jc?;%N zB}6tV(2|aHrW-vlk1DcPk-f?|#`7_gn1XMm$|CeoWf@{b2=LRICfngF?~ zCM5-L;~S`&85yePz|Bc3ii-omX`(`U6bs98 z$y)74?5~>dtD4-^9t5H4diML_Le-lvl+QW9l^|3jjI87#KlW9l2xW*w_8QfwK~3~f zqZzGfiymsY-x}TNMPKw#V?Dd^P7SwJ<1ojOtHvpOKQ*p%3p1_pDhNe|h>v|m`F{Kk zxlokZMwxAt*+x~ydr`Bor>NCw_KD`w(-iH;Jjt;#2IZo?X>5*Lrs2_w9x1n@xQ)sb3s#)Q>{%_0_E37dxpxhVe{f z3Nui%zMA#btp6qYtZz5<^;Z99PH~3w{Kg+# zWHxj8j75CGGFGw+H`#a}2l$>Ju)oH~_=%I8;xrF~P?OY@!kbM-U~Wwg@@Ei=d4ufa zrw~Ocj(Nn$9wU2<>@jtyPebf7rX3y8Lrgb%(ub+oam?pJ_4I)N1&;Z6{0mJ+jS)`FqfL$l4e*=A^sb^nK?H*%LQa_<{N3| z9-7JDO#Wt%dBzJ~2chO+n052)$ld&Xywg0K3PfVw&CR>H+|8TQo;dn3m|^%Pnvdlp zK4voWS&59zWo#~E^F!#V`7uuL3#U29MK1A#f042It02@OARce>7Kuqp3VhQo(ohsL zZqXli+G0Cuwe)XW>Z@fPdf=v8&cwfIX@)IjY`K&*e8UFJwdFQ;;I3QB-_jkol((h4 zE#+-#zAb;}GS`Aot1#Zf-dmL-oN}07EAwk*eywWJoK|$D5AwDe#85^vj`7IZY6`Nn zx)Fq0>$|mHTW7@^t=(4Z@~GLmHEmI|wOXy!Xst$THCn6DdOCV;t>@NDSdP84{tEZs zdL0|_R_i0&3PQ07&`)e7>^rtM1F-K{`;HxjeaG5&tbNCNBX$Am$EqE>3iV>mF?J_r z80!XNzvE}jFZL#PdB8*5WvrdYz79fd%(G2OvQV6olp%r&m}?tzZDX!&%%F|^wy94X zUFe2=x9LS+WN%|OZH6$M570v!ncM8dt+e%K+g#K}zip>sK5fmUt-ZHB%{eY`4cXh? z=Wpb1`m1j;A@tMf4HpzT@PMlRGXI zZe%scK&<&8*W*8r!htA(}1n+b{$*-J8uFijOm4AXz7dO$xOuHl^ zDJd}1E@s-rOuLwAmmJi_dtL0j%Stw34qd#_MekkI?DCK&JPSfy-B?#Q(N%w4Q<9Dh zm_^sD6rwEp>uNV$_13i+Es4dfy6UrQXS&f7KexJ?U)KptWHQsRzpnPzbq@3RjD_sr z9It{VkG&k`G#B`t%UtIcceu~%AkMlKxyeUCicp-A zlpz8=_H0B9cGj~6GWL|QXM60eXD7PS9lPr}i7z>ZH+!YQyn3}}1ZLA~8~gZU_chG9_f7udE`BEW{)b0A zMeg1&f>56fl%^%#?BhQA=)ceHAk;T8`KV4k8sb~&+myD*-dFa%viI$W`{+BEp^RrT z)0n{=^wM_$pR=D!+~FZ+*;l5%X4x-32}ndzQegl6+;cxQ`^`eme&*3{E9TJ8Zu{9$ zKRfED*M5(Ah93KeP_w_9{nhNR=l+?B}I7GJ-LD$OQB=>}$+$n2f_@8z$SZYuMSa zd;HBKp7J~h4bO>L4OescD5hX0!_8#4SqztVxSJY&9Q_Xe1HBHv&TZ5juI6wxN5m%q z?qEa)GLaQ;jL1zs>}*5?`W#_5BlI?+1D)tf4|>y&fec|d?qkF!%;r<(u>e^|e8Eyy zu!^s6yCbd#p$`({%@69M#}DSSowGdVbr2dEh8r810QWUg_K~uW%)-0m;5~{_ig3yi zNmXi4i=IqEzLATNYveLkvX=F@sgYaR!POu%DjjN$sz@|#uxr0FJ2Xn~qb4(r&sdB; zN9l9aYSbL1<|s8s9l+0kQEqh98P4+?S8$i3Zem}f?0j@WGLsFxjm|}03Q!n*jxIrI z%2JPpG$w{-v?Lb$8!hkXI67m8qsOzH!+3LynT{z*bM!REe8$K;#y2%)FS3vMp5w?q z<{TH0f6OH=bB~8S;a}`+ti6r3x3T&eo1YrUI99f?vW;y=N4nFCz6@Y6W;xcZ#;WOe zZHN4h?a(+g8D}Qr%wn9pq=yROijMLk=Ke)>t_9NAr;XqlJ9V8r<1OcJ|R$cCm;3=;x!GL1_G& z$T(iM@v@CK$MJ4!d_D?NgyNLMZpNF{cs0lG;1Fgq-b}`u#dvuqBp?y`osbE=PRLGf z)SRH^1T`mAAdT328H7G3*v$mJO<2SiEMp~K;b-TBb!=n{M>)<3 zPI8Jf$T~sR375FSHRS#{K6>`MwL^ZdcIaa>_4}|xAD_lPC)(e{Vw9ykm8gsxo7kA9 zw4gO@X^;F9JJFvZ*xSUB=w;$~CgPomU-Bd8_?^qhHSrdAa90!m2||;?c!N}Az-%XF zB|CX3Kw;#ZR03HhO~+g&ZRa4~m~@dpQFF50PkswEC#S(pPR@mTlhvDCl=mq`I8nI6 z$=&cXb8;W_H`$IR4`l?S7|Ta|%t98kgk`Ki&y&}%7WpP`WHWAbvRzGn7=)&z$D331 zF~!WL*!2`WOp$$RJd%(c*{7z#?M{__Y98_-|I|XbwW;NZq$)LtrXCH^&s6)FIvW|M z$~INDso&rRrfz2!zMHB0`JQ`0Xqs6~Q*&A^?0=e>Of!>dW-(3PX>*u|ey6QQuhZ7E z1vRIsIZe%J$N3q%pLUh&*!{Hs-uRnGJPktA6QIxOb~9aX(+g7!yPjSew>iB$m8e2> zS`tfJ+S8HF$U0rt>AmU40OX$j33{G>nrA`ie`fl>%5=g$|7U;y+s6@(ae|Xv;2Jmh zi@QAFpTPf3h&M<`Vp5QrbhzUg5i}!?9>_GK9|IYIdzvv8@6T{gGt6*?In7jaW-{KP z5Jhn>Gxa^QIj!hQFZ!a#nL|-?rkXR=oH>IqZ2aaN2v-C2{erKKIWe}R3k=&T!Y%`oK)9g~X zrP-CJLUn3lFSD1S=IrChIomvD|BX4!vEw=RF((Upol}J3=y6V2)SRQ{95v_Yc}^QT z(wT19{Ty%1vHLl`$vG34h2G}qZI0gNY+y6n*vW3(P~nXCMX-OaJPIqq`K zeg47z<~#{PpQfQWF?jRS1?=Z~5SsfY?-5BY>QJACv_$r~o#=x6b9>N>;n>&Qag1j& z)3CF-`k8A#b59}T-2dLW#U0FXu3U57)m-zOmx!d;(Y$xbNpA9CSM%&@o?XogryOy7 zirLIFlX-SD&l~fuq4#-e&QC^4>}bB*oS%!l6hh7UYR*@4el_$t-)`pXZGKPs(4RpJ zWdy#Z`M#z3A2FYWe9jjvWd-&(e>GpTjty+$XC4Hh&(h+}&stz^pDp76SAx)jfVW6O za#CU*3uIqlHw(;Tf&2^dQxLOQP=QFQQj=)vp`QhAYr#xpTp-&5*%qw9Z7tZsc6PCc z{ag(~3+-T`nhR^t7&BRDCVt;`Xra6dKVc5~UAPLpE?mn-)Lf|MLNym2G}z_?{M3q6y6~zeTNxr5zpVL>Ibahl_eM zh1L9oH$P8D1Z^0J9e%z8JNWz{hdIhAWdHmUcJui)Zg7hy{L9NAv^XFhZ=#RIMUZ>3 z+>7O2T#?GSvBgm|MfSz!y0`~2F7C%*hVcRBym&ebSkET5BIn|7*^9i3AMvu@c)#_%B%n8Z|;u$+~AiJM!t7Fn0cx@-%+jb%HL zd)ayPygUnTWVx9xpUBtP=W_d7@fN8_OL{Wm##R)dFvTcAX~L0zMR{sb4|`kD1ih?i zO0K+0&{w(etV#B*&Yp@?$=$d_$|M5k+n4 z(tyS^MUSgmV_&Q6Yt>+eBI7DMTV-df#_=9k6M)hmTWdHIduY=H6@_!YNH%P_X*wSDVzs=hyVDE(t{#nESKIUI$*8$n&DCnIUdnPduoeBS z{+9iGk6Elf%6V>}zcm4RTk|Gwkp#0^qt7*INzXeJ!Ti>gpcG|@paPLpp*m62qBAnC z`3g6`#?OPV_4svJn&Za4p3Ne@U>Pg;hHdO*H~aXGgUJ8&5ze58uYbetzP`%!Ahb3< zDM?2LGVv}s$xS}wUMu(7s#K>D&1gw19q2??dN7=iS;%6RvI4iYb`A2bHSe{Xk$de< zd|PXMTWfzs*0txj$R#dwmFwK(uOReILULnn-+1$z|FH!%6nhEZ3Rkx<8R?-EHpi zDhRE2AL~jrICo?+!M^Cjn{D z+lEYJB`0cbP;-Nt8zP9JHTv4nflk=X26Nh=#|`}$$Pk8Ob{jrnHlH$&1$@pDma!81 z+prol*x*~(=M@iTT{cN?Dsp-lniu*r9_$-XwF#4I+M#U``Zl!IL4!8fug zoN`pezBbjsemD8~u&EDbv}rzWf0Im`R`M0=*@W3`^8Ti8xgLZzdvmjzn=4a~_QcT( zeQ%zIp97m0v6L0)akD*aR&%qOo7LQW5VyJcEEo8ltNi!IE$;9l2yJ}88xZ?WqwZgNW*BB)Ozn$VQyw4x2|u)8gt=t4Ipu!19abE|o7Ekz54GMCNlW*_co z>p^}(_O0i+i2PgK?ba*Y=MhhN9)z~p*|vDt**5)bv!88I$hgfr+uYSQceTwNx5>4w zJLb9V114df+h*}8^RcUKcD2o}w%OITuQ?rrwyW*;v4^&s$#(nR-VkqWk44SxBN>Ao zZFig7=P-{&sJUIu?P_k{!U6QR-EOw)ZTn@eaf83O%L5+rBna(rw>y$!emhc=mh`-X z+uV_r?AYNB{qJx;JKFIP-rRANzk|@ubdqBJRCF3qL-nEz|EN2yVw`&dGAos3~oZx;C`Zf*T{I)rI z|8^<+xyzRzyBd_D^6IpJ7+~zhD`5wcoDx zugC50cl-O#2B8DqJ76{k%;Z2#ym6ondOx7%fsdKYTo&R!4=iOBY93JYfSL#PqR#_% zb3ktgZgQJ@{LLeLPX~NY2VMoC??R*_1MiTTtYpXjzROKs3Q&k5MAMz=c=NkoF}Lrt zQGwPBV;tj|$Yjjpd)dFYoA1rzd-=a#&PvSU`|a#v58rVJH}}1MzIS5>lOf|l?;OlQ zF5K2ZxemImgXVY8Egh^zLwt`1&GBFx+S3)gI%ro1?dqVp9<-Z-zT<;tbI?o*gdI1^=vq$)M2iFq8B{jltZ zWk1}J&U9rE!;$~+7{)V^DNIN1!#^S0;j74W_!f6~i0|g`zj)uT77HD5FGpIS=8+GX z!7^5|j&CvZBYHpb2k!KUJ3XSuBM(sXh?+;#Jo*+%aGyu*S;@|OmXG+D$;f?d zAz$IXj@i>O_jPOs-?EnjoWxBX^X(t=?H_y2s~~hdM0^sE2w9J(AT=@`m+`oa$IbY7 zQQoH%G9Qni0+o>acpFBtgzvZ+gnmj+aT?Hvsmx&>=Ka$m%=ss?{b?gx*v>9?vk&=y zI)PjH=``oKh<<*08H7&AeZo5@QjwO7WF{Lqa2qE|AoqzXnC*$$)TI$IG^Z8r<-`!= zJn=t1VGi?Hz~|`i#Bx@#8Z$m2?cc65!p}5ep2?64QNaZ&4{BLJu&N(1JTP#-{47mIr$l8dh#gd zc~Y*Ea-F=u?_A~@4|x)VesLGSBqkXtNy9s2;azf)n|h4FTz)Z+U$)_mUygGIHGk3b zFK+HsLfqIXH+IU6ol1|Ir_?;9roS-|I#mw6ozmN>rnI0nZRtQKy3&K*e8>bQG8wx& zWp}4O!S{XYQ|4oTrxvl3^Slm1zk2i6s+ila)A$;@`_&$P{fEaq<9QG|Z62p(Kb;)& zI4%F_w7iX3oX$%D3iCdt2uDAs-Ph?6$ava2r)Mw=cXe8>)9&iD`JG+^>#KL8OTIdvhyB!$WI|EQ;izbq&9W2zq5^KLNi*>ilNM97v4M< z4|6*gO?M`-l67ok3)?V{bF!b4{haLn20-ZCY0hGo=WcL^``Ft#_jXP%=lqO2AHsc| zuS6XhBG-Aj&bzDgW_R9Qop)E~2Qn5jJa2~Qr!y0KI&V+s?diOko?ni=Tu}Rhxm+-h z3#F-rH!j4W<^}t>pyvzYnT*|Eu=@*hQ1gPC7u3A47I%3;Zx{4-L2nn%agj@0;ZJUI zn|nd%qIV{74EivT|R^F~&;k&u~7k7iu758$*tgfher5~d(lPhL&#VoGKdu2EK(C-y@ zdPT2S&ha~HUQzRknpd7+Cs*C))g&Y*72dd-5&OSt|5pp6&#QKGRc}{gXih8I(4IKl z<<;)=VjRAws~9uZ5!#=Os-!oKBKwWC_%?3He`6C{ zIKU4a0A?9B)>l3e~AeGy^fKn`+*4(>H&|Om3RVO|!Tq z?=8Ez^)C9oRUEzEDnohHyrt$XHE%Vc8Sd+rd$`q;K6vBS5Qa07sp#{T-Q3dKt<7x1 zUESJ^@8Q;W9O4MaxWb>@;1;*Jhpe|A@|b5l=VcK3D&%1VgSIxU>-c{4zNeJD2hddNS?Ys7M z*InK%i+$a-ueVcXM8W4+_JTQ|7X7NDY z2Mbw@ejjW=uMf8IEowec^MRTVe&sA~^ub@;8|H11Z^mj7!`M2Httv7!^ zA@p|{BB($lRdJht*P;&XiK8=J=}s?X{kuN{8Nx6|Fpq6q#GC)*K#%|QU@~8Eh!gz6 zY0h#P+5eIKAKCwT$P=Cgp@(klVPfQen38m4AQM@U|6we$J?w*A4+k-vk&NL(K4CUX zu&0M>_y)6mXipD!;qD*q=X>r2p-1mxE|1LPQB%6n6ZIdBV-9+Lw1U;FWj$L^^O2g5 z)O>WD3+U~U-X1;SUtR{G$G)Y<@zCdE-_qkGBqt}i$xD9R=3~2iYOL>qyNX{ zX~9t3&0}vqz8Zv{B%%<}n9q}snZYbRWgh17MD{1LKUv2{Pi1;q0keDRrk*yUE$-;489p_`r+x7KKXp4#KVURw`qW;Y zs{PDdo|(rp`+jBy&%E(W-_O*1))@PE=G%VeE}!+FHv>@fnVSA?Lg?8P^!Q9~&+O&d zCbqJJZ}A=Z`w5|EzN2S{`H{<9<2pC_i@Q9)?w&oyT|Rq`{r#JfGPGhO=K1dr+zCR@ zlVEqxeN)ftV-C+_Xhu8C;<;HoH;d=}8N?9ee?EeVOvBEe&q6QH7w|dWd2TZ#4rzX+VBbM&i^UHCJXChOW&P;rtFX!?Zi`d8( zwjtxoUAXO+`}vN89Ofv;u&Y;zD1LSc9#l#s+^BsURMAd;%opcZwgPa|Sz zPA~e>pMeZ!7#}c-F?`5)K4v-JaWe=D^JZ9K8Z(4X*}^YeZzMApXjDL>nyg*-Xgz*M;^M*OS zp~p8;l7_d*h}peSjQ1%?Y06TbibPVC>O>L8hpfVzZ`=#Q-b_mwnlgw_Sit8jVHxJ} zrtELZ{-*42?qNUQ@iV89|ILeB<{CHnD+o&?na9C78}kc5*ieOPHMWyoWau>OY};jJ^g2*MJ*LpU**Ln3oXWLJqg(+9IiBzvL{FporI&_kmCF`K#QA(7in zw3HQmi5?Q&;tBt~)JmdO619@}_LFo#pGiLAV_oWSmq+z-N%CZ{;wOge-`?B{Y2mMlaTa+8mO6vj;@ zlRcU2$;={|StN6}$)c%COWLA`WS!_vFZwb7JtW(Ne8~ocH2#NgHN`g^ z=bs=fWm?=<%2>wo1$+68>zG5zJKW=G5SGd;Qkg|6vq+VQq$EfFRH?~^9#XlrRKBrP z1t?5yn$eoJ*iWi1bf*{glS=MXa;KWYbQT~_s%5NX4YH@&z-HW+zZ(&jO3qYrrjj$& zee{*;G0%9x>mV$37;j)-sWX$6cab%}h0ABYT>!_?mCn#XjUubBG`LiIe<_{Atr6TiQIxm9`MYDT#fh z^$n-3MN{l9tsH4P(i!tiYo2M{WLme8)@`I+irQ)2v_F*?oa@>Fg+7 zU3^37>?oZbrR#(prBgGVn(5R`XGiJWQo7}=Vl``7&nC9AgKyc(0nTy(ca`oEm$}9b z>@MAH?(qQqzny}@G{l>4o9ElRxe|n>55w-#m!~>4iKZ^*kzV%nvZs&3jiv8K4~Ak_ z>BsOP6Pbd2rJsr2q(6y#>19hVTl&Aak4)(w^DGF`pK2CZjoJ z9E^Qu{D9Gn!|XDC#zH>l3zo5xFIml6*0F(~xEF-IlNxWn(+qQaX9@fGgI7UVrUWD+ zDakR9OtNQ^J(KL2@==h&L{Nc9s!{{@o2fH$XR@12etu;d#fMB_627NQehy?>gq)dV z%(M}+%(Ro;$du_jenGZO_LRv?Griz-5SBTNH%N%RWlly)(%`$#Y{r>=Uzv+w&YAU` z+3qrjBX?%GGgqQAZ5WAJWcFs}n?YC>y=N&-1NtCymO0Er_AHB7iR@X-H_ImE&$12Q zNtQ#ni7e*sZ=8f>Im3B=LqA#LW3E|c%qm+}*|NH;tmUan4a_oY9qMD2S0JyGs$Wu*~}uFyxFqz9{SBz3cY44Mv?Yr`~c7U@*h@fYFR&JQHz?IlsXCaxP~j zU-32Hu%1oWVNUm%^H&}PVee(YoA1T)A*(oq9p;LU9pp+uYSNMg*>lOBOZHqvC{797 zSgz{GpDUUMG{(+ywLtD%^N}srT4c(#iLKa4u6=xm_j4WLVGx!(7i#9NM=N^MkKufb zedgAC?$y{yZac}X$J{$nGq;+#)y(}1r@4x~=f2H7{(IvIZZfxB<+1NPW|F56MR}i6 zxY0c2s7Ph15k+m<(t$WS)0G~`n#b<)^k)!5u)jQ?vW4?_Gq0ZkdG(mL8+Mu34)T7F z?X@E3fQ%|Kbkv=Y4?t&F9AQy+J|}lL9--mk#~pD@ikC%;%kazMFh~7>Hc? z%roCed@uRzD4$!(w+y?=_Z4=P&#v;>RlXg3%k>~EzuNiDCcl~Fx1;>+@kah$sF{Bn zGq9ulZZrQ1zGN+G=2tVnn)wf6NBQ-a-){2jE&ty<;wjI06@(QC;Vug#AQM?JzXCaU zk38hZZ5Aj@G3>B_{tGmuFSGGxfeS%c!7y@B6+0|A8apUBh3U+|JPOKQa5?5tQ2v6e z@og0}i-LRD&-WbR7$?wA!6!jjp)|-?NVY<<6)J?=DpZ=Xl&2C^a5sg_s*sw6e&AQk zq>z~uGK<3U7EVig^jkO|dM#Xp5~x{N&BAIHj>gZ*!m+fYBVF-E;okU;3Xj2#3hS@1 z-4xba;Wd221~#*eo$O{GZn5w=%&+ioxXZ#<_>&vl;tqCL*nJjBMnUT1%_4Ky#UDXf zQFmL^4vR)$2Ssa8i)fl4dr{f_ZJV&7o#{pohB6ZQi+;#NreJ49XCimelgL)|Ix-c# z!+q?e=)d^(ig~|SJPObnHH%GP7AyIRjqJrfi|M`CRqUjgofOk!v4^NxOwD3y7EeNQ zGGXt{6py0|-RXrJEk1z34C4bvGmg1@#zH>l3zi{kaaoJ6 z!S0H$NABV$(DVCgC`ofhu@pD^{$*YVVI>lh7`rNw0^fCs?7WBUCGsJE3AbCK2<3>R zDm93v9u2X#5<{5H623&P65p_a?bv^bJ;+ePcT>U~OPWBm6qt<+FP;GRm^T`Bu2wTnN3u+rWvZKkEotaKlyqnFZ0ImH=d zFMSc;RB72uKj0taFa3mPL0FkLv9mIERwgCsu(vYqu8e-l_@>IlB4Zivlj2Mp{M9jp^Mtq8SM93bo8uN&dKVm%_F^dQ{ z8}S22Il(WSMn4huQ!XPimh(=z!W5$va+Pyi<;<^KU0TwfILxtJcid4qcT~QyV=Kg9KtP@zl8afzlysof0NtXHsRDa=4G7459zeC)X5d2ZmYD!QwRGF5!a z>maOB7;lh}#JrE$S5mXmbmXjL9+fs=4wdY<(gl7;uazF~5It6UftrzOMyeU9=g7CQ zm&m->eWcw-dLyzFb{}a^k+o@t-XirD*`GlSWdx%b%SU|7WZYxqQkJt4yNk5DNLeG@ zW#mS-V1JQ2IKz`5tnxc}vvOPXSotdsV|P{Tp-OU6k(Rf~hU`^juOfSuVw9j1Rft0V zDs^c@49#hU{8bhpTa~rQRb>;~*~K2*K$V|4#by4>ahrSm%`?okin&%b*Q(}PwGeF> zjlEZ$gEy+`zp9(9s%F(+Im@5?#a-;G>SNTbs%BL+t0lussujU~Rx3#vBB($lRjENO z>d>AzI@6Wz^rA0zS8X6e7{&?=w zul^5@g0LE9Q6m9~NJ=Wwk{VaZ zCQ5Hn4|&4BybQu>2E^k{-XaU{VtzH>BRBadNMVZdK6Y5MG>z%cr+BmGZ$VhC_~fBF zc35jHc2H{?Gx&rB$X-kKT6Rnj(+J;o zwBDk-U{}$7P%~Q1Xf>lhW;S|@)?4&CHexr?<`lh)J?!Uue!%Ra|KJMOxXvx^aE}K( z7y3ctPgw+e-F6yNw8+KLC zuIkxUz4BC|3e~BJ-PNp#OS)PEI(HAqYftOHu;4=Fq0-`5@QxI z^2TH%2l|aEfnH)<_%+KGy35)rQJKX0V9`Rq^e|drXZ0a7HhGPd!z1egrhq)VsHPcfw z^Jyk?vj#Lq_GZm#kL=B4Zzg-Q0hm#)NG+<3pHD0AQ$;@ zn=OiB_bt59!tPtR$rg2JL2vpokRc3bBz{)3@GZ6QEwz}$RF<%umAI1@t69r>?5@RT zwy^{IYjKWeL0HSoc(bK>w)~hi9L4ThB_t(jc$*AlNA^~-x01cp`;?*#?yFTTotktEWL&>wKu$x)E*Z&mi1N>nYf0 zYrVJr20LkOC$06^dJk&0R2 zywT3S+o{>kUfUh#0(x$D8@1Z0)lRK;YPD0VeM0owJ}G)_pPF>&x&1rnv3*_4y!`~+ zd;3G2!dEr2XLny^w2@(j`7KZH#_#^6Si`i z$3a+}dBkNRD{dezCk2r`t~72oPX4&^R3sXA8rPVnw4x2|(NEl1++v)Jao&mB!ME&3 zuDBntySVfGhIz)>S)854J;hu*h4BXF+sS-8nQy03bir&onMo)2(8(K}Hlz1WYIbs4 zo!nL@chKn}PxzPDL0D%sJFD4Q&CYM5&(3z!S#O;y5J^>PP>VX$rx7u@kIud5Lq7&E z82jryf{~1293SCUJMZJqAgqfwyA;6Ox(s9%8##d+>*B_`xUnvmF^?{?cagn|>|I_4 zVO;~lNKP8$@0yXUWamBdAb;1+$kufza&;ZWhfH7+Q(3^5xTUUgblt*s+)vj79ON)R z;zqiu-7O0FyT#HMZ*+6F-PG*1ki~qBopiI4ZriZ;ZfbT@vzwaTe&q`G+|8c5y$Zs* zhlo!C5|I?&Y4_BmBR_@kopvwA`;;OayX#(_N>oPw-P45IzDRMt>Qv) z!>v@nm5vs2Nk~XS5^}R}v$2zeCAox<8j-MVxo0 z)8~2XA13GgzTfv9|IITzi!LU-!CS27eKuid6U>ugKN&-iF~fT@F5(idM6Qfs=r7}L z9>OhUxTOp|X5>(a`^hN9t}^T@!#*-RJEEJ2P9lRj2k(fu+lXgI{>VM}E+QGY%}6%+ zcxJ>iBc2(VgB?Z87qOd&*&-`=ju%+PE4;?*yotMwe1`rayZDN4*u(ey$bRf_qWLGD zz@^-acTP;;o1FM{5N5jDOgqdRjvZv)#VGDUADOae%AP5EW-e1Gq>AaxVlH(oU^#MU z+Ha=aWUj?-GS{<_5BMCpGxzax5N3t+p+8435I2@}3PZVu>$s5-+`>riM9*2WW{u^3 zWXzH=OUA6JL@6VN-DOoX1G%$wpViG;b_d}k@0@fYqj9H`mS7K)K4d#P(D|fY>_ztM zgE$!ZvwbJo{qSvM|C)d2WKQQy{C6hXJlVGqLB?#^vSrKGXSP1G=TXl>8fn7*vp);M z9M8--mEWS19G&FoB1hhwiA=)0Inyv}P7Sm1%pA|m@ywhQ9X!ReJkLtJBj+{TSk9Yl z#hjDvX0q8PAI9Mv$uBsD;~0$lntT!$a1p=bQZDBzWSu;W>lw}nZe~0+^x&P7_XJ_C z8FQ~-3`H!Wg#_(%(2MN3vggX4`x2{p4L6p%3Hfukv4fp_$?hP`lRxjb$d>ne7Uf{bR%>Nbkp8p%XBj5b_?l#{u^B-XX z?lZrbQtT?*~WH04Z^91VAiR=<*9m}Is;uz^|Qrx;qS_X#aA*K zyD0WE#pAJy;#{JXVHd?!Ovf&Y8(2&;tt3hFGVfpy#qOur{rLMbVX-X5pR)@$RQz)g zMh9Ro(PJ6J@yHsrm*{`s#-rzOHTU7BqjnYb{^&gFS%@6|CQTTXBPvJK9Yk01Dr?bI z^ljc}6FQ1+Lr2kX@LfgiIJz$gOD@5GM@sCkWCZqCvHP^@+42=JtZ$;Hzjsc z@&<1PVd+7f%UEX6j-M^{Go^l})b2|4R4PNM|Av(Az815AtX1tISTy61bDH$61biWiPS{`O03wt(1Mk9)94T901Uc-iS^+m&g3l4=6tT?DrAUVgZIXC6dQ@2V)}`BXG}-2aZDnc9C9gV8Zj!V z!!5<;BSS2KJBp=9^CVC4SDrzaG5e0aihai3!)?Vrzjpb zddyL6j%ssMf5azzioH~u$={#}tG{J0Ke8XWYC`%TU(Mkh$uBsD;~2~doP=3x%vxjC z8oQ_&%6VMCMO?z=xYL?zxQ-hc!7YsBPX5R}jO9KaL1#63s4;(y`D@HmV~!egOt**W z`k$`<>F0APSMU%SWYRz@Np`ajJDefY3|VH#GNYUs%;s%AWJ?gvG|xw0eGcBW89j21fSVFO$7`?C%N;p{`{kN3=$X||qbKfrh* z)KJTOda?7_&+{pEH{0&!$S_BSIWo+dL?Okz!zR3M?irkmp62RxuAiIhJDA%{nl9es zW3~t3JelSl&9Ufp-nE!-o=o%dDBy9P;ctA#H|z<*TEA0!BEI8VebkO(Gz;*)TKlMV zo3)#<%R29=J08DN=RI{d;rHsyQ8$fBp5QrN;0wH`?uQ_(cWd<*p}YEtX`G+zhvALRo+LB|UQVU7i-A=3i0EHKN0*({`y6|CYF zzGXi@2jN1UFZ8~J=W{1xxt|LB{=#|K<-*mh;rk$56mT$pZ;_mf&*oBzCsw zZ9ZfRKLue!U-~fs-)qBh4CXp+=MLm(xSNOYjrhACVS^4DbkN{t8_ICA4OL8M7IToZ zL5Gbe;tm>h&^Qj+8pq>Vjm4B=XN`8&=yn@rY?QI_GrnXu-|-`QYCI5xaWlt%g`VR> zIF-}UTl~McfD5?>?~8k1Jc3T*I*I2|z*Kyv@p5z=ug3Qp*L7Ui@p|km-pJp1k(YUu zwX8$l_`AG^+;QE;KV~~S*oisf=7^gkzBdRL+t=bg9LC|?%sq_ZJ|4t-7bi&3K{wm@ z8h5#P4?hH9(>eT(OSyupv706{HQ7s(y)@ZNll)DuBXg6?O)@XB>m_G!CTBC0Nkp-i zCHAt!UY4xEd`sN)^5iawWaN1rWnwp`35T+UTY#vQhpx5aZ>rZWq7*wV$* zJd2xbS;mWd$lEG!>vdeuaBjl;Tg}{R z=2rL8x||iPXD4>m`cDo7p})BiwjDxWj^l)wn7Pf&ZEm$~E$h%{+q-PU%n3OXawHC=KSyvBzrkJ;_L{KQgxgBo%I)0A zU5sKhk1&CWESV+M(;^;C0}3z?_-waCbqJTulbg}m?vcqDSJpAgIQ8$Ntq>O zmeeWONy;oKv!u+DGE3?*ZsQK@By~4`Vhod*Odj@gP3m3jBxR1&WM=X>sd%6 zJ@`I4dwBv`I%VmUrBjwpSvqCud=>L{ei4LSefT%*q3arS-=*)aV)WbPPP2b3_Iz`Mn^sJ_Sj3$Ox$hH0vd1+{w7M;;~sj_EDOSA`dFrqWp=-8 z3m>x`^DW!SmzZ;C|SJ#@eT diff --git a/ios/mnn-llm/model/qwen1.5-0.5b-chat/.keep b/ios/mnn-llm/model/qwen1.5-0.5b-chat/.keep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/llm.cpp b/src/llm.cpp index 3920c268..9754a13c 100644 --- a/src/llm.cpp +++ b/src/llm.cpp @@ -712,7 +712,10 @@ std::vector Lvlm::tokenizer(const std::string& query) { } VARP Lvlm::embedding(const std::vector& input_ids) { - if (input_ids.size() == 1) { + // decode or input_ids not contains vision_start_ and vision_end_, using Llm::embedding + if (input_ids.size() == 1 || + std::find(input_ids.begin(), input_ids.end(), vision_start_) == input_ids.end() || + std::find(input_ids.begin(), input_ids.end(), vision_end_) == input_ids.end()) { return Llm::embedding(input_ids); } std::vector embeddings;