From 40685f6eb4bb5aa4fa7a6d26b42c84f5f9d4b704 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Tue, 28 May 2024 14:52:12 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20refactor:=20Enhance=20Custom=20E?= =?UTF-8?q?ndpoints,=20Message=20Logic,=20and=20Payload=20Handling=20(#289?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: use node-fetch for OpenAIClient fetch key for non-crashing usage of AbortController in Bun runtime * chore: variable order * fix(useSSE): prevent finalHandler call in abortConversation to update messages/conversation after user navigated away * chore: params order * refactor: organize intermediate message logic and ensure correct variables are passed * fix: Add stt and tts routes before upload limiters, prevent bans * fix(abortRun): temp fix to delete unfinished messages to avoid message thread parent relationship issues * refactor: Update AnthropicClient to use node-fetch for fetch key and add proxy support * fix(gptPlugins): ensure parentMessageId/messageId relationship is maintained * feat(BaseClient): custom fetch function to analyze/edit payloads just before sending (also prevents abortController crash on Bun runtime) * feat: `directEndpoint` and `titleMessageRole` custom endpoint options * chore: Bump version to 0.6.6 in data-provider package.json --- api/app/clients/AnthropicClient.js | 6 ++ api/app/clients/BaseClient.js | 18 ++++++ api/app/clients/OpenAIClient.js | 5 +- api/app/clients/PluginsClient.js | 2 +- api/models/Message.js | 8 +++ api/server/controllers/assistants/chatV2.js | 2 +- api/server/middleware/abortRun.js | 11 +++- api/server/routes/ask/gptPlugins.js | 18 +++++- api/server/routes/edit/gptPlugins.js | 12 +++- api/server/routes/files/index.js | 4 ++ .../Endpoints/custom/initializeClient.js | 2 + api/server/services/Runs/StreamRunManager.js | 54 +++++++++++++----- bun.lockb | Bin 908466 -> 911212 bytes client/src/hooks/Audio/usePauseGlobalAudio.ts | 2 +- client/src/hooks/SSE/useSSE.ts | 16 +++++- packages/data-provider/package.json | 2 +- packages/data-provider/src/config.ts | 4 +- 17 files changed, 137 insertions(+), 29 deletions(-) diff --git a/api/app/clients/AnthropicClient.js b/api/app/clients/AnthropicClient.js index aa5f913367..2373a321f5 100644 --- a/api/app/clients/AnthropicClient.js +++ b/api/app/clients/AnthropicClient.js @@ -1,4 +1,5 @@ const Anthropic = require('@anthropic-ai/sdk'); +const { HttpsProxyAgent } = require('https-proxy-agent'); const { encoding_for_model: encodingForModel, get_encoding: getEncoding } = require('tiktoken'); const { getResponseSender, @@ -123,9 +124,14 @@ class AnthropicClient extends BaseClient { getClient() { /** @type {Anthropic.default.RequestOptions} */ const options = { + fetch: this.fetch, apiKey: this.apiKey, }; + if (this.options.proxy) { + options.httpAgent = new HttpsProxyAgent(this.options.proxy); + } + if (this.options.reverseProxyUrl) { options.baseURL = this.options.reverseProxyUrl; } diff --git a/api/app/clients/BaseClient.js b/api/app/clients/BaseClient.js index 39215d917b..f2b3e7c59b 100644 --- a/api/app/clients/BaseClient.js +++ b/api/app/clients/BaseClient.js @@ -1,4 +1,5 @@ const crypto = require('crypto'); +const fetch = require('node-fetch'); const { supportsBalanceCheck, Constants } = require('librechat-data-provider'); const { getConvo, getMessages, saveMessage, updateMessage, saveConvo } = require('~/models'); const { addSpaceIfNeeded, isEnabled } = require('~/server/utils'); @@ -17,6 +18,7 @@ class BaseClient { month: 'long', day: 'numeric', }); + this.fetch = this.fetch.bind(this); } setOptions() { @@ -54,6 +56,22 @@ class BaseClient { }); } + /** + * Makes an HTTP request and logs the process. + * + * @param {RequestInfo} url - The URL to make the request to. Can be a string or a Request object. + * @param {RequestInit} [init] - Optional init options for the request. + * @returns {Promise} - A promise that resolves to the response of the fetch request. + */ + async fetch(_url, init) { + let url = _url; + if (this.options.directEndpoint) { + url = this.options.reverseProxyUrl; + } + logger.debug(`Making request to ${url}`); + return await fetch(url, init); + } + getBuildMessagesOptions() { throw new Error('Subclasses must implement getBuildMessagesOptions'); } diff --git a/api/app/clients/OpenAIClient.js b/api/app/clients/OpenAIClient.js index 1635e600ca..ced2387bd5 100644 --- a/api/app/clients/OpenAIClient.js +++ b/api/app/clients/OpenAIClient.js @@ -589,7 +589,7 @@ class OpenAIClient extends BaseClient { let streamResult = null; this.modelOptions.user = this.user; const invalidBaseUrl = this.completionsUrl && extractBaseURL(this.completionsUrl) === null; - const useOldMethod = !!(invalidBaseUrl || !this.isChatCompletion || typeof Bun !== 'undefined'); + const useOldMethod = !!(invalidBaseUrl || !this.isChatCompletion); if (typeof opts.onProgress === 'function' && useOldMethod) { const completionResult = await this.getCompletion( payload, @@ -829,7 +829,7 @@ class OpenAIClient extends BaseClient { const instructionsPayload = [ { - role: 'system', + role: this.options.titleMessageRole ?? 'system', content: `Please generate ${titleInstruction} ${convo} @@ -1134,6 +1134,7 @@ ${convo} let chatCompletion; /** @type {OpenAI} */ const openai = new OpenAI({ + fetch: this.fetch, apiKey: this.apiKey, ...opts, }); diff --git a/api/app/clients/PluginsClient.js b/api/app/clients/PluginsClient.js index da1ee1eb46..e321cb351e 100644 --- a/api/app/clients/PluginsClient.js +++ b/api/app/clients/PluginsClient.js @@ -268,7 +268,7 @@ class PluginsClient extends OpenAIClient { if (opts.progressCallback) { opts.onProgress = opts.progressCallback.call(null, { ...(opts.progressOptions ?? {}), - parentMessageId: opts.progressOptions?.parentMessageId ?? userMessage.messageId, + parentMessageId: userMessage.messageId, messageId: responseMessageId, }); } diff --git a/api/models/Message.js b/api/models/Message.js index 0df0a7c2da..6435fa6fe8 100644 --- a/api/models/Message.js +++ b/api/models/Message.js @@ -129,6 +129,14 @@ module.exports = { throw new Error('Failed to save message.'); } }, + async updateMessageText({ messageId, text }) { + try { + await Message.updateOne({ messageId }, { text }); + } catch (err) { + logger.error('Error updating message text:', err); + throw new Error('Failed to update message text.'); + } + }, async updateMessage(message) { try { const { messageId, ...update } = message; diff --git a/api/server/controllers/assistants/chatV2.js b/api/server/controllers/assistants/chatV2.js index 664037d762..3b73d1520f 100644 --- a/api/server/controllers/assistants/chatV2.js +++ b/api/server/controllers/assistants/chatV2.js @@ -496,7 +496,7 @@ const chatV2 = async (req, res) => { handlers, thread_id, attachedFileIds, - parentMessageId, + parentMessageId: userMessageId, responseMessage: openai.responseMessage, // streamOptions: { diff --git a/api/server/middleware/abortRun.js b/api/server/middleware/abortRun.js index 6522d6746d..512554aec9 100644 --- a/api/server/middleware/abortRun.js +++ b/api/server/middleware/abortRun.js @@ -1,6 +1,7 @@ const { CacheKeys, RunStatus, isUUID } = require('librechat-data-provider'); const { initializeClient } = require('~/server/services/Endpoints/assistants'); const { checkMessageGaps, recordUsage } = require('~/server/services/Threads'); +const { deleteMessages } = require('~/models/Message'); const { getConvo } = require('~/models/Conversation'); const getLogStores = require('~/cache/getLogStores'); const { sendMessage } = require('~/server/utils'); @@ -66,13 +67,19 @@ async function abortRun(req, res) { logger.error('[abortRun] Error fetching or processing run', error); } + /* TODO: a reconciling strategy between the existing intermediate message would be more optimal than deleting it */ + await deleteMessages({ + user: req.user.id, + unfinished: true, + conversationId, + }); runMessages = await checkMessageGaps({ openai, + run_id, endpoint, thread_id, - run_id, - latestMessageId, conversationId, + latestMessageId, }); const finalEvent = { diff --git a/api/server/routes/ask/gptPlugins.js b/api/server/routes/ask/gptPlugins.js index 2fab6188af..2acf4ce592 100644 --- a/api/server/routes/ask/gptPlugins.js +++ b/api/server/routes/ask/gptPlugins.js @@ -106,7 +106,11 @@ router.post( const pluginMap = new Map(); const onAgentAction = async (action, runId) => { pluginMap.set(runId, action.tool); - sendIntermediateMessage(res, { plugins }); + sendIntermediateMessage(res, { + plugins, + parentMessageId: userMessage.messageId, + messageId: responseMessageId, + }); }; const onToolStart = async (tool, input, runId, parentRunId) => { @@ -124,7 +128,11 @@ router.post( } const extraTokens = ':::plugin:::\n'; plugins.push(latestPlugin); - sendIntermediateMessage(res, { plugins }, extraTokens); + sendIntermediateMessage( + res, + { plugins, parentMessageId: userMessage.messageId, messageId: responseMessageId }, + extraTokens, + ); }; const onToolEnd = async (output, runId) => { @@ -142,7 +150,11 @@ router.post( const onChainEnd = () => { saveMessage({ ...userMessage, user }); - sendIntermediateMessage(res, { plugins }); + sendIntermediateMessage(res, { + plugins, + parentMessageId: userMessage.messageId, + messageId: responseMessageId, + }); }; const getAbortData = () => ({ diff --git a/api/server/routes/edit/gptPlugins.js b/api/server/routes/edit/gptPlugins.js index f1b0cba248..cf71d487dc 100644 --- a/api/server/routes/edit/gptPlugins.js +++ b/api/server/routes/edit/gptPlugins.js @@ -110,7 +110,11 @@ router.post( if (!start) { saveMessage({ ...userMessage, user }); } - sendIntermediateMessage(res, { plugin }); + sendIntermediateMessage(res, { + plugin, + parentMessageId: userMessage.messageId, + messageId: responseMessageId, + }); // logger.debug('PLUGIN ACTION', formattedAction); }; @@ -119,7 +123,11 @@ router.post( plugin.outputs = steps && steps[0].action ? formatSteps(steps) : 'An error occurred.'; plugin.loading = false; saveMessage({ ...userMessage, user }); - sendIntermediateMessage(res, { plugin }); + sendIntermediateMessage(res, { + plugin, + parentMessageId: userMessage.messageId, + messageId: responseMessageId, + }); // logger.debug('CHAIN END', plugin.outputs); }; diff --git a/api/server/routes/files/index.js b/api/server/routes/files/index.js index e74b167d45..1490b4ec90 100644 --- a/api/server/routes/files/index.js +++ b/api/server/routes/files/index.js @@ -14,6 +14,10 @@ const initialize = async () => { router.use(checkBan); router.use(uaParser); + /* Important: stt/tts routes must be added before the upload limiters */ + router.use('/stt', stt); + router.use('/tts', tts); + const upload = await createMulterInstance(); const { fileUploadIpLimiter, fileUploadUserLimiter } = createFileLimiters(); router.post('*', fileUploadIpLimiter, fileUploadUserLimiter); diff --git a/api/server/services/Endpoints/custom/initializeClient.js b/api/server/services/Endpoints/custom/initializeClient.js index a5da778282..9fb6bfd1af 100644 --- a/api/server/services/Endpoints/custom/initializeClient.js +++ b/api/server/services/Endpoints/custom/initializeClient.js @@ -112,6 +112,8 @@ const initializeClient = async ({ req, res, endpointOption }) => { modelDisplayLabel: endpointConfig.modelDisplayLabel, titleMethod: endpointConfig.titleMethod ?? 'completion', contextStrategy: endpointConfig.summarize ? 'summarize' : null, + directEndpoint: endpointConfig.directEndpoint, + titleMessageRole: endpointConfig.titleMessageRole, endpointTokenConfig, }; diff --git a/api/server/services/Runs/StreamRunManager.js b/api/server/services/Runs/StreamRunManager.js index bcae609c7b..bea8042aef 100644 --- a/api/server/services/Runs/StreamRunManager.js +++ b/api/server/services/Runs/StreamRunManager.js @@ -9,9 +9,9 @@ const { } = require('librechat-data-provider'); const { retrieveAndProcessFile } = require('~/server/services/Files/process'); const { processRequiredActions } = require('~/server/services/ToolService'); +const { saveMessage, updateMessageText } = require('~/models/Message'); const { createOnProgress, sendMessage } = require('~/server/utils'); const { processMessages } = require('~/server/services/Threads'); -const { saveMessage } = require('~/models'); const { logger } = require('~/config'); /** @@ -68,6 +68,8 @@ class StreamRunManager { this.attachedFileIds = fields.attachedFileIds; /** @type {undefined | Promise} */ this.visionPromise = fields.visionPromise; + /** @type {boolean} */ + this.savedInitialMessage = false; /** * @type {Object. Promise>} @@ -129,6 +131,33 @@ class StreamRunManager { sendMessage(this.res, contentData); } + /* <------------------ Misc. Helpers ------------------> */ + /** Returns the latest intermediate text + * @returns {string} + */ + getText() { + return this.intermediateText; + } + + /** Saves the initial intermediate message + * @returns {Promise} + */ + async saveInitialMessage() { + return saveMessage({ + conversationId: this.finalMessage.conversationId, + messageId: this.finalMessage.messageId, + parentMessageId: this.parentMessageId, + model: this.req.body.assistant_id, + endpoint: this.req.body.endpoint, + isCreatedByUser: false, + user: this.req.user.id, + text: this.getText(), + sender: 'Assistant', + unfinished: true, + error: false, + }); + } + /* <------------------ Main Event Handlers ------------------> */ /** @@ -530,23 +559,20 @@ class StreamRunManager { const stepKey = message_creation.message_id; const index = this.getStepIndex(stepKey); this.orderedRunSteps.set(index, message_creation); - const getText = () => this.intermediateText; + // Create the Factory Function to stream the message const { onProgress: progressCallback } = createOnProgress({ onProgress: throttle( () => { - const text = getText(); - saveMessage({ - messageId: this.finalMessage.messageId, - conversationId: this.finalMessage.conversationId, - parentMessageId: this.parentMessageId, - model: this.req.body.model, - user: this.req.user.id, - sender: 'Assistant', - unfinished: true, - error: false, - text, - }); + if (!this.savedInitialMessage) { + this.saveInitialMessage(); + this.savedInitialMessage = true; + } else { + updateMessageText({ + messageId: this.finalMessage.messageId, + text: this.getText(), + }); + } }, 2000, { trailing: false }, diff --git a/bun.lockb b/bun.lockb index 3f37e7a782e83a83ba77e5165be1eb289b5d9cb1..1351a980682531762c56bc988ac4ca114d7abdf4 100755 GIT binary patch delta 107792 zcmeFadzj5t|Np=DHk-Xk4kaX~%BdQM7<gLr~@0tF}XTQBPDSO)P^jR;4w{Ki>uxH?vfjic%`RI$v zKK)wH=~qAS<@xKz{dj&+-AnzxYChk@ir_imiN=0kB`~jGaBf;&hVRaJzwcc5=t8fm z@BHRAKYw^eR_4(0zABCn8ql!QExmOD)4eXFQY75>L1 z*3$35D)5B1R$mU*f-eAN_$=@&@KAK!1vSId60JHiy7z(>{;#9{x{=yHCt1@z0c%k5 zWl$}wjrOTqv*VFuq{p5G>`_6+Gj?K&;Jly9CcJ%u$fPVot0JA#zebvE@@K)ea z%4^_zsIPWDfy;qIL3#cF_RE3Kb+$8d@(RDNA$;-$iJQu)$?K0M><%0ULoY zboKkr2bX}V*auyPbnWi<)d6>a8rDVNMPNm+HaO-gTdyyu0km^?A*j%(+PVNI$Qy&qv>FMut#)n zy_!XDUSj<*>smWgZLhPnE&}DZoV47$j0B&r8eD$!6>wjH zazpkFw!I8cem@1u>W^%HNfTed0GVCBzYV+sP!-caHGHI>-&YUZIKcYvF;Irw7hO`n zX6;zGtfv))>8R|nqcVpL&;KU6w|>p^gB7i@xfz4AGe`M+4F_6RJw#~*RS8_iPKL`h zIk#9NH-U25AW*H2CSOJm1jXYAS(`5y6isT-JabW+jnxh5w!8b_S_}OKTT}Og8p>`^ zKG+1R`$?43&~rfLpHK6enUW0KUM0BJ+KFbioiCz$8??AKJlvK(In3t1Pp<+kAS(O66 zw|WZU^6-ant*Rk#x#((#J;&NGY7MGf9g9U1<0znx%Ofake!R_AtT^5pG89y}^aZuA zwWqvz9Z(%TQ0Vtv2=2o$#r5}1Z9B1nEWh1)>jQKR;ORT;03HNu`-*%MUm`=6K0m=` zJn8rycUlAH!R3J>r!OzE9bGZe#@+EjNB>p3he_-A-#> zK1admalYUT%XgwH4AR@ADGGc!1*28n_Zj&LhcV>K>@R6gVX^ZbPfwn>o`f8kKGPO> zj{+Lk|LpLISvEZX0@cvNv!V+xuIE1*-Ewi0qSt2IQDkKg$%s!&&#XrwHBt#wbC$j`}LfD7O46s?zioI4XWIGj&B3c zS6Hngp@LCR0e?3r59EL{`njOyu^ze% zxGgh3L-Xt1M4|&5pHp=HqqgM=pnCjyiEZg1s2<;Nd@HE@6;8k3>34!!7$Y3N4pacA zIQ8D4SKl|zm5=eaoncvT+4AYR*|}->WS#3cW7Me3oczqeMSJZQavP{98J?Cmym=8F zJxW2jY7VFo|Ma#U>5z;(ugAxnM`nYX?g^mcI}7w&oHjCBVR5VDX*`tV=KFj-_LW8( zk0Cx^dcn}48M$1&nR2ba{Ji)PMHzYdzB~8Zkr#lnEcUeYB~MN2Xwb*D<10Xgb7P0K zK`q1zpvrysk&U!>9KHm~z#5;rtDoabKn>)>_x(k_79?&y=(ZG47pIFrg{<#0+wfP1 zZ2nx=z&KF(>7W+w)vm!LhmAmuFb>q^;M))Ff_~TGqhHuN{j(o(_-b2!oD5m??w7X0 zOt^O80#G}^^`IK+25Q8OK;1TY*7Np~%5d!%e|=!5?gvmo{bwT^6HC6ao_GLMP`*vR zJh`%nL^Be1f|r7^k@j_ZD^N?jBG?3c_I#(*05@assZ!bM<9@YH+uLiawXj<@`usVyu3dzvfVkJ;{U>bTO@J%%$AI3Y=A;e8mqEFEGpJ5i zzh*bMoV-z9qeFj-Zf#z#M^~yfAUnY|)Ay8Zwh>&meFj(aRpAPY3ZUZr_g`&yM?u|v zjzk-_XwvyZm^xkK3wY{7u2j4~;OzsCxe zgVB>MZV22Tj9%NaajV}d*(!%X8FBzr$Gt0CoCnH3UxNy}SE4Ih)-QUXO2G5VAyB3J zJM0c>c!P(hjT(tRVy!hrmpj(%u$QGf2toz-EA%Ee+yd8>FRyN``5M#!IF-f@Ps{hs zfa@-_c%MrGz-?(@ZNyKT^AUo%kS@X@Wt)&4@O|8kz~roW_JG;~Kc)j2c&f2&_ogPcpMuOG znCtUprxkE#Df0QQB}3u*1{KuNbD&1B+VMr849ns8$jQ#l&q*ubMVZfcAG)IB>`QF^ zh-^>x-HEPn{}kPu$sDFA)8~8T1$!ysE|WGIn-5)zC-lN4p9*sM2!{n(Lox?bA-y0k zJ)7&)hWO|Qt?OMrw7Kmk-7az8O>ni}4V1&$f%0@bsF_SSFM3Iv#AWmzu^bAJ1nb1u z#zk=F4#~*(T|qfHw~Z_RQ!C4FrG1QyR!ImK{muq0tX4d%lQMm=T zwX+j53iLLIB->V3hdG&9*_zo{NXJ4s7LqqpPZNB0d)v<7Y+ey&5CVP3kSD((Lzs)< z`h5sjg(p(%+U`I(Eg=~eUyz$Qp@S_y64Z=0AzvYvcH3>4vLr2c@Niv+Yr2kqN(^{! z*ggm4)IDGg-L!^eb6MmHTZ@rvWZH1FlkZElBUD2&C_Q^zMiw}$v+X!`ubu>#mn*ci zb6W^kJI5{yc(3U8gStMIf>HU}j`GLnWW;CY`9AAr^GA==yH}s@5xD9<+T9u!+b#5L+*l3t z;fAgTlX}=-&dlT0ZQ6KWbGTw5+AW$CXSi=MuJmqjnbYzbiyh!NxM*T#c5cQH z2KdZ%){s@8Dn8eNgfNe<~-wpQ+xz;-V zKXWzWP_wPsPc_&w)F?V)x3RZxXwOp=9vlVAM z{F(;TVNN{0#@oZwEnnrZYI~m-eX&1QG(p#hKB1mG7u%`#xprOxHA&fS=iUg{WO@VP z#F&^>!_NK=P#q5)#qEG!9k?ov9F?7=Q)zg<{i8;GH`|Ylu;s^Q=MEX0o0ju{<3rh) z<*Aa<*0Ya;I>R0xY5SR!WuqY9>utJ5vw1 zZaD9ZvFqY;xOS}bK;3M<&JB3idp}$*|B8CLzWk(~9U& zt{(-;vT_(A%NtCz6_4T>RoDgBDydU!D;9$~rt?7QA5l&nj=9U~Z^EUYMXV^MCf{v? z^i5D5^Zt^B-P)JdXOcBw1Q~i1J4MhbI@v+u^U{W9n8`M(y+3RehPK zLo(6}bO3+?L{O`m4XnE+~yJx z%Eeaj?E9iWr8F+;{VyAqCTg?q1U0$0fDORa_uI)0%(LNrA6!AO3$C!fhH{$3CSWtL zf~$9(vB5EXm>tZ63oS4Apj}tp-~>(4#MKCTx@?M|6MMycTfn!-;^z<94$G6T=j`05za#=)yM_+aT(=MD4S;cEmze*hGfb!43@2 zLe8Orcr3ra#QSct+x)2otCjfXLLbcei~?^j~rDt~rrgoDPcsTX`^gkq{Fm2SZY+qVlT8@w3W8}+_g`gUk4k~o? zHWUFZ8()WxPIuY zC*FE1Dej@+(Lrgc6)rgM(DuKEy}w~`TBmBE3UNIqY`(Ys>l;4J&8$*kOFsRb7FwMqko`jccZ^!c*doEUm~sgqs3Dq;TK?6!2;3LMUmiHm-&5HM^pZ4 zA0p8Kxm?u0FXHcJ#@|E(bIleY{8_x;cbToSJrZuz+?Mo5Qy+;0vtezc6P6{1mzC-z zlOo~IU@fUrA)5MWBz#T_`%Wt^T0A2X?gi^dUiqm1K&0II7XIk7(^5h{zO!h9YDyC0 zT1J1|84e*_=@l!U6!DKU<8SeI3_ge0Il66Ha`>!PwtP90+S(rpcY{s6}B3tk_>KUBzy#BThWkewf6h2Q7h5Z z$&t`-m>g!!ed_Lzf1MehhPMupVVm$rBjI{&tnD=HvyVCDS6|OjxRzDQOZ&48dfw-=y|rY9!nr){eYD)c;^4JO`%n1idK=B>H_3SVgtsZ)e75FtT}wa$LD+ z@zhB0Jy?45)b!+FyLQZOG-Y9OIFFR((2nSFSSJ_`V|-t_ymH=%>LkTnTl`vL2qG)7 zWLhLpA=zvl=I;gHFw(&wq>gB=|XT<+po2Mb*LPlQaO22Oe%y0Z# z$b(%k=GFTFmT%d@NN{i$N_y+*4N~b=-x3M8=<4@zN~;d+BiPMiruYEub#twI?L7+f zM(PDzT6e$i7F&zAUem)IqcYyU~_pH1}NPda$tqbFQS7ZaqsGB_D^` z$&wdNm9mnpiE;n(Lh@ky5Q%YKPyVOqsaI^BY3k0pT7|TOWRcQ>wqx84^Fkt8yetxq z?;V>5X2qXp#^71gfUa{xFva!Q0ALCWw$s^>@P3$r zo_doa!HU-tY9^&cpnc$ae>8bgO89dWO}`Dk#J+aW<)bC^ISpp>WamdPt@?l|F3-kt z&JA|C8n4&Mv+c_@1(XJ(L8xD?zUG2^0PEv9M4okpc zutcv;@tjDo)lJN%N$KfN4v!?M{jt2aTW)}<7`}Nc68;UQZMKrm#&F`zcBA18!N3tP zHSg0Lh98FY_E_=Ki2pmYGb=>~zt~mPlZAnmJkQ@8JK^w7bjSG0-gC6yD|UP;PWOov%*`znpFZ z%ID4BxqJ+D1>IHj)?y~C7wjz0l&@iSp5&CIA*FlJt@s?KQFFX7gx6qlW<_t-DrJ<` zJC+!N*ww)mB77XC^UJ#&1Ud{gg_GI+7Y=2bqbZY;gFlh#WVTKAw+{`ovt{RC1Web6 zs>ZKP38vGms!7deg$$1!5_mk&d$>uO>hBPqg{p%y&XjyZ4Vc2z9{0d>U{~4uFr98;Z)smJnl5zcg!+@xDPdZDUan=7%SU)F zic0!D-@gD;7lhBkNVt5KHO&k8&;Xc*R(f#>uSL<4pzg|u|2K1Drh+*eUwaq3k)(7n z@ves9oiJNCbxI^yIY(#osVT|f6jItgnHxMd52i3-{A>@0VLf1>sQ>LqxbqmluUjdb z4%5+SH{m*YcGs&OE#bN}5T=EXVQeH@V75(IFr3dUcniNbDZBA1B$vUwqtBbi76q~6 zNO`kh+Bf~Cq%$!Bvnx({H{WJQ$z_2(b$Kb%b~IqDbvJpGjKaKDJa+IuSc`G7(WvC@ zFy~n8e-Wl}+Z)9B+ZM(wPGwp*!_vJx zdFTAwV^gl4Z-LpKbxC?2rUhL+>fad&m%Af&D9ew1VO`CHMXWAT&X0JY@dW2>ld7c+ zQw-Rd_y~5|xIz6_X>wrrGFPmER84)P4l zMsX@b`W9LKiak+NCzUm9G0a_gwnTzI!TLv2rX&Y%nJho2%nY;- zk+QzjEPfAj{VF$S1>^iy414e_{n#OW5gs^MB*&4KCR*4uCc+wL`6mvZ`?L~W~mE!c84L-y9`2vTjldOZGwABL$OTkPGD z@IIIq$C`z}MfaJc<#@W!eX+Tbr)R@-LgDGj{zz~aw7WL2VAVNPHhT{RTYFpiEl}A` zz!DKlVG39qYlmR+1)gCfjpxQrxnhEO2+SLo@pr@B>!B)Y56fR+YKAaj=GsIp<9NG2 zkzLuFMhY^n#W3}5BdE>;wxGv?1H{aPwFCkwdE1tH2c{UdtckH5TQ(A=nYC;U%xm4G zmSb0eDZXu9kNIVK4$g*kGN)G27pc>IRa#(IK?RdK)Snm!<8H8;Qlw7z^D#_=w=FkZ zShj_Mu+w=j10-FyACq()G+tiX?MRYNeVU}J z=6}4jT6dB?ZDUcAuIxu7UD;+UO4VGFZoJQsywbZx)>%oUC>6emlx`!uq~OtZDa@O3 zlbT69ts+vq@{34y^-`aerkbse-AM~b+1zJiTDZa*dqz}<@+caDXm7OJR59#kud$Cw zUGJq@JsHzxk>ZfRw8Nyl1!0PFF=lN{kCM8a*6ej^r(@m*9*TR)4xsc<4c&;MgThlx z&N6>Egrcji&y-B`M?#08dg`$So@y2dht}Efw9h(eFzvBCZ?MbkgV{}A`(>5&rMn<` zSHQAtN#5M7TW?P8AmDyM^}HBP*Z};urU@c(wPT6i_Z2v9cbrQroD7_8-Jy<3M8QQ&(K&MTH z?_@g!?%QMvLH~ZUYs(mZ06u#qJNu7dX+A^Y%8rcb(`6W6nKR!9!P@0?c6zSKN%$Z+s3zTH(Ot$RLvdc zr116~Ch2uLdv%AsX$DMj1$Lmbo;O>O1GhYHP70SjZ<2P?Xt@%MFe$rv9`8Z&I_&Y; z*SPDU+GX((FEf4=i*DobqWKFpE_iLRKQRPRM0!tWffX;9lW%CCFWNbz>dHvq(HBkO zn@sTgX3LvQaJ83gfY=o@dS`65xMv2|?lgsaXy98^dokc@5x(qYyCm$zDhH-VK%$8E za<9PL6@qJ4g;%W2L;_cj0Wigk_plhc2j;Cs@2xgZYM~ENbp1PhPinNwPKnR>C;Afu zyLfFgGbOylsor7pCM3q1^L z>)EAeqn}}#1a3x~5<`1p^DD0u!&;NYOK^tzG)x_MSG@3XnC8d61i$1hn+KzV889_z zFQu=+)E)NIrf;tu4KC6j7+~6&h(}%(&4=CSl`L8AWw}c-A$-}}G-CacPEtz`t9XU9 z0_GkARwV}B@%{)BzVe;e?y4@w!K`N#kk7$RZ)<10Yd0h7-2N~%?TePIN{oZFicWYh zIkd;gcB60kZ%%@JwgV17I=B|*Oyx0grpqHFxFbIAn0<@)3ryA$5=4B5{q{v+UGII- z0+=^Rb_wr;s!@(7?vqvCvuUGX#J_3DjYz3&4S5q z`TAzCRkVelxguyY`AQ)q#Uf(134T|k= z156i`uxCs7E89Ck!D#Yenj^xS!x}OQ!ur7IhF{w?hhh8$@j95y44Kq{bPiLHTPOSg z(|%@Iw{L8d6{E%PM#4|QY>=~Shku3Xq+r_h_rEsZ+D5S&TV}#?$P5_&N6aKFU(7qk zbG|E`N!I6cupI9R^0M#kTS@OpD>xT6%6q@`C#hS!+B(E<{=xoX#P;(hOhfVNgd6|p z_sxY_A8&@)O+oj}>POulKfH}*B1~;k5^Fz!$y&><{>l2EeVRYBJqf$U`}@+Lq|_dx zVEgF*v)^|oj6;WYwI8N9uy%C%CH8(*o7!^NY5U`jS;pF#mKcJ__q@v77YUcZI>18q zrtlZk9xb#I?DnhPET?Qw4zD1k&GlSwB-?+p-n6T>;&H$CZ9*u@d+~5@nBHaaKAjak z6Q-5G1Juk&=m4xGtn?TRg-+P%J*`|FQ%YZRK8&KRhG*3mcrOdnreynWb27Gh^TsAH z;iNhFGiTL1sESJVNo=U`yB)Ay{R3dy?tP}@Elw_2bG=0mzd}lmu-CreA2xXH+lUBE z8^3KK8>T}Izw=JxG1zdJoySV2Vq2!>_*R%K_ZCF(L0EVF4Jh;rDf!6Tuk`#MYW1gG z;iY~EKZ&9p)o$8HVD^yGh?@Ro>+`anO*;dolHMO#gO9*k>g`i_4=K-T<8Q!{^98&k zkUQ6MmQK4E)eGtHNSGXEH|1wwGMf#XZSQB8nm^YI+fM#~x3O~5;nEFJv=E(7^TrpZ zg7!?WAFxgGuH@y!3J`_C>ES(xqIFGSUe*N41-!pE)bVcFyNW1u6+LrT8lWa+cUecE4)7e1v-~ECr=R?)5-_Dmp1H5 z-0t_o^mh*LwSMrT3XI#kQwMIXU{3zY<@L!5Ch0G*LC6$>!Tuq}XimN6PY%otnUj*f zM(SiH{KZZDlCT<3Zg40`-UleTg5;In#W(n^RVf>2UeOf#108~+Dh71dR`uN^x!#iu zCsnd$p6#8P(_ngA%wEk|<2#E{!RmNmc^D;I}ZQ{VQHlR1f%WGAaG>_uA^FFhs@QkQD0dp$j8{ zcITLrQghC+BWDl$C=z@bc4hR``s856a|6D#=!9MT4Utqj_1J|zi15OuUBy6AxOGkY zSr#v~a6@fiWr}rL-CE1~jDh0ol`!o$xP!g?OPH>mtak25Eouk6 zy9JE(T?~^;i0MOk9_D=rqU}3)9OnIbDBR|J>jLcijB^>LwQpx~73}n-_8`nogqBg= zI(A-(hZ&L3NSNpT*zOxzgrd5odsX-y6gQE&>s?T`r*1IS_s+5Kc$mg$_swTudS8l# zb0dLZU30QZphF<3u1Ts2-d@)ff|WPawejrt@r(KwT&n#s@GYgu4R7Wj>}d7^rnpid zF%HK2oyn}1`qn09l`-80Q}Ef*Z-QM9v-hQn4Q#}7OGv|;uxrTU!pr%(80O-i-TPOV zf|`?tZSazYwqBgKMdiR0|9FjS$yS&>J4&c`9Hy0Gd+&9jEoqs7$uexA_Uo7LSH z*;bh6XR!?C-5O1?-lAM=?Zg)T0@n}LRiEL67m?Bq?2RpWSj^Mo8^vmu9Hcf(FQ%9k zM!Cc>FY6ZZ!2RV7+d_}S11cd{!H{Y zF(+#=SrwYv&4_CUMN(mU1?P*V{uv3)fXRWS>pb`_O84jlz7n{gS*)XCt}^K`g);S+ z+J!I$n9mgR2aym=;lO27p?rz0XP@f^!&;HYV!Vo1@ApIh72S4sa`+ok)^hG>m784} z@Fl1i;nspXtru_MTTm4jHjbZ!DH3=sz+Z2_HzzJ&TWxWf4LJ_?ha-WJmzl!4jQOf~ z+Z>M*ud?QgpsI<_FmMOV#U&2;3+7%I!U~$(JR*^sG(`IuuclaHzrgGrIF*7)Edt&j zA%e!g0uR767<(OG3X|F1Cj_BiU{}KI6#n=HU)R|_xVgL)366vDR}NOsdQx&Rv5mvO zcBPn0V*8R-u{_;8(qWosj{ilG&|KIcbr5^e5&j)Trx7pjb`m3(+W_Fe=Ign|j-4+3 z0g61p3Bw*3YVCF@;~&SsV0H)7Q_gKLO*=6QTLIIcSq(Vk3z!B?fWX?eDZBa#VcM(M z7r6ItQl8n?k*fqL7XvdRv@>lk4pHo&JLPwmxqx4FncA?pNN8U zMZHHQF-z)I$Ly~BJIvl=iy7V(odVv=V`3b( z8fK?S>`R!2&UA2ww@kH*o$p7ux@5olbwC&Rp0x8KIV2GXM4eCu5q@b&dr zDx;VWbNdjU`5flG;YS?4muP@U^-tEKIPZ*mIDjw{uJFg+D|+imzu zn0Mjv^5XkC`@BEVgh)yf-Q>yR|m>s0P zef|rk9fgyMSRT;N?nJnmH89n&({A2~B6r!9_LXC7N) zOwo5-Te>h$ci$B7zO}Ox{}oJ)*=tejn{7vI^Hd)TlezXy-$s~X+?$Zlcdq1VFSHsM ztIPC;i(o2U-jvj5;4s?@dBHzmN#35^_7+>p?zCAjJ#d#ZB@qszXQ6y@!S@iSNVSfh zdM!EJ@>aXeaVWgaCzvo9XfMnk!Q5!^Zo(kjG#e^^41jc|Am;@STcNekYoVu&_ov17 z5B=+e-Y|I)vtSQ8=4}drZ_~`yo@_;zr`zSr4DpU)3{2ZM&LMW6cFYdzdzd;Wd^mAi z4z@=IZ!mGwNSK}i2|}(ekHXZi-M0?GY_t%P!3IO-q;z*w3cD#Gl?OHVm@e6+wg=0tzM@Pc%t`sCa3y zDFlP_im9k4(!k+jb5csPyXYu-YD02(GAaFm$?j6SVKy3cIcRaWUH{d+2j%-<8Xo5^ zF8KteSHIr%CR}Hd-C?|qI(Q4Lvv-YHOzIX&d9QT+f12@w10936PG&hqCoD(~KSs)q zUWd$Q(kaX!cq3G23Ns+ThWe3eiC($|2BuCiCx>v8+(OQOULy{pcn7R0DP-4}%7Np( z|4Jj(i$6iLpr7R9!=bp-Op9$D{%MJEkVG?~C!tMBOMsc590^`Aog+GWYJPHH(sWZe z4A*T$>EwMie2kPF!ZXr)+|p;ntk+#_BuqBb$|I4`gD{mW9YOdoiXA!53^uxlEzO&b zexz)@lC_B;h^l$B8r%u<9^b-$kWi(P@|P4IV zgk=1E1AO7Uwshm+1JqQQZ8kigWJ}z@akxDa*tM2__rvFb9>KwWbraizrsDt;w zxQD-+94;ZHTcUj?`x&O4l$QwHK3c8gj;=b!e;!-p5NIDL`w?5+ZkVp-?4NuE7H+xT zMj+?ofk^mHn7j7#RZ`&f^(JXDCY`e(wh^(B26}EVTTug3HkhOf$bFVvuf=Hbdwg*9 zv<+YySRGm9sU-~%x455d8gNnPzdjGg;jY!BxpP55eGKFA5&r z{>;gH1A#i3Lw!Eq$&k+%0RI5>N1juleq~YmpXld-=Z1a03Sb>jKVdnr9;kBl9X4?J z!t!Rq6M>pVD&Ew|LUnrysOs@fFN<;Lt(-1Y`PPmLmCxT_y>1ho{$J4R-=_i^VkcKI z)nRAXz<)!H?+VJv;I5zy>h9|IaP@^UtQROhUGI4RF#W5-jR7HB=Tg!fbSTYOKo_YGk*A8o(V+7m81Cc&Ecyf5om`krHZP zGN^`Ufih?|s0Qu>gWx>JA8`CZusr$_r#}kHz-6G?S>yOqpngKNw+^fdmVoqI;DbP(1T7t44wr)3i3Y|;R{r>9hL+2D~qZZL@!7Gz7Pp@ ze3rwiu0mOq0q3CezeeG!=kkRbQGLhDqCC^c>3@f+*O>eYivM^LvZw_pSGNIGAOX}* zs0Nck8QKw4`BaBjIK7+WJskD~)!sFr+Uo=AR~Cy@;07`@!U3*;P!(=;yez8Yo1HF{ zVdI5)!@CL zg6{#RmqoR+0A2Wy%YUdM{#V7tP7tc$C7|?WjxTrlLghaWs-Y(wU*&K$s9#wm9(@~K z{w9|%l;@s{BN1m#tz{?Hz+ZIvLiO{K!<`Oa24&Z4pngKt+wFK+RQ)%c{@+mL-qcL! zN1_y!u?H@E3)Fz$arr{c(C04yFsK22g#=`Rak{xIUw)~A?-KrBO)wQa z2fQBC0MjfM`LamRmTx?$ic>*#Gy~L6C>PHJW$_$P1}y;9;X+X57dc!Es{Es%et(C` zUrN4T@wdzs6sn;WjtkYnO2>stZsh;TLt8)@v>jBv5>Vw|0QD0}-wCS2SDgMIsQ8zl z248mt{tngfZkPX0P#wNWdEr~2>hE>+h2n36VI|%nQP<2m7T8lHT9Nq?R&sb2sDV@g zHQ;kW{e+6KI-q8-F{pCQT)t3K-^uZRfOb3h2L);N|J3k5EN}b&4~yl&&Ta%{u@U+( zrwdgs6O`vhI2;LTaf|`wnS4;?ZUglbs{B}oT9m!Lh%P2FM~y1#zHdGz=N)U zQ2ZfK6&E|c#N`WR&{CJb!s%sEakds+@%J>SE$Bs1^W` zcPP(3?(&7=D~6Dei`Ia$XsyF_4mW`6;2BWS@)D?@Pz~$^^>F?n$e#gy=dx1N&Uv8n zYl@qJf4G^h=j8gJ#&x0N7pWM$5h!ymar`n+KcSk72W3txm*3ju3zgr->1`d4I83bK zF5yY8KzmRIbaXrwRL5N%@9uanhu1p&dWSbS><_A)n;akL@K#Vip$r>Tg_)M+LtKHO zpk{isD_9m)Aq!pQb3t`b;K~W5j|b(k+d&yV(cxsLPjxsQRQXv&uE1QEalgX{Ky_$9 zb+pjoB2X2Vfa+j5s18>+zQ*BtQ1v!CzSZFlQ0+bsDrAdZC85pYb5K8_8vMfH5vL1P z@hiuL;$J)b#^JZ14EzyPJ3oQ?{V!Pb9~o-!XIJ6xPz@dqgozj96}i|Q!obfGGS92Y9TBB%~4IbA4zmg7PhQWaGB>Y&=G0jk`2 zps#^TDCp`UXdk;s84iPH(RTN$>{3_nGEnU`2Q{`7Q0;aC^%LsgyUKB)?6?|Ky=y>~ zzs}(ept`-;<=+CzzFR@vv4>UVPf4mU0ztpOLsb|_esypHsMwkUN}uZL2^F(5m2WEh z%h^|e^IdjXl${IFRsBJS4}sDj24&ZBP(PvUUk$4K8i!B1e4+HUjtk}PO;z1Fv&9wI z3U(&r4^SQb3CiAbJf!I$I~$ZAs_CK4p*pVV_&-4zQp=UERn46<64Y=Vmr)jFNL{B3 z#p^pRRD%s1|8J-PT%C4(b4eagk8i##AHG4g%pHNGtzvE?5^#`B} zZ>&ZLDHhXRL7_4RJ6;yGGzwh)Z4Sq}azZVciJ%O*+v!5JH_7Q!LHS|2%by+#q0@qG zV5X}u+Z7b5q5B-p0TsIj)F!eVRL3hp{e&`TJ*avc96s&xg)(H5LP)<&Wl$BKaRs(G zU8oArg6e2HsB$}8zEJ#m$Nw9uT!|}Jq=XuN(KYar!<`@t*tZYVuPmzkdrmKlS|o>D z{m&eJ?#c;e_?M15Eb;_peC;ZH;|d66>9>vxx_iI=!>QD_p)%1M1>m|@A%W84A}_kCzPSvLDefNaRpv* z1%ztgWl$aLa=K7+xX0;xK{fog%NMHNeozg+@9-l~1|I_T6KdoC5~O~S?}*C~s==>7 zb^MLf%c2_o-sS)3^8XIi&QbD(Ke=*3b^IHs_D^{E%>PMO;Gdux{N0roszJRMl}p2* zwxM%Dm8${rPXl}-K>f<1%I8T}{41df`Jfsc?<)Kq>g90MmA@a_tA-$;nAEQGs1U4sE^gJ!(q^vW z{{_|HrLNvTL6whp<%Ke=^|@|aNkGtu+k+Zm3aA+F1nO57RjwPl8tegzU*pPO=k&gy zenOS&=eSVq_Xp*%K}AkTa|Qkzs$#k;_jjoL!Q|Hm?{ek-4(0kOX20Et(%TXOKaKb`|4?27ZY)Jk#P$PH&)K2~esE42TKpFO-%l{O- z7#_!)I?YfeQ0<=ss$5M_hMf;K0y`FwkR_c!{e&ubrPI4O?CP)^sGm^vx;yLv%9A}^ zzR;TjP#s?5@H$ZSt_QUkiUyI;PpH@!3d-UvPz~g`eBogDJD|4Ik3co_F{lncb^IWx zkskq7|7)jz1FGIHpvwPd^&;PK5_0V+EBO8dRnhwk)Biv<5ausW%C7`!3To&tQ4Zy~ z+KvlVu8!k>k9@nP3^mlq6%=Y@jU6^|x=?yk$D2O0dY5bI(hi%ODk=R|Lw~vl~caTo%zD*%okQ?zOXv;g_ZlR zq?7*pxB8Lz{|IgW|6zcx-(|n7l4at0@;UQ`6;3$wh1HoatlVclWxv4E8-_DqSpD6X zRXE1`;!0PbGhbNoQc+v%nJ=u)d|~x>Ush?cNLP%U`NGP50CeUHD}}|GFRXlLzOedl zUsfqZl&^#K%okQ?zOd4lRys$@ep#g$5kK>Vl{}#@ue4f1?jsPP{vLJa3oCi&Kfkn6 zB%S%f>dY5bXTGpH^Mw`Pu;`~Rv9vAxlP{}OUgcE&%okSr;z|e2nJ=u)d|`Fw3#&6< zSpEO#3#+NMtCxGGcJ;XX2Xrc!ez0EMCXMf||8Un)M>3aB8qmZyWMqqWZ$7)=qhDV5 zv+6@#w?9`{|Jhr%eDn1Ui=Rw+@wLBBeRB5J&pOv!GVtaJx#P=^HQ$Ylt7X=VjO*$D z!JHTw*UzjN6<65|9EEVytQ>{Ve>6hn(Fi}A0izK@SqR%C95dl8gv|*5s&@UVPp7vx zAFe8S=g_4iemU;@rbUAnpKO`G;@p9K25*0HaQ){yjhy{hR@YG*Yo#3hwnoQ(YY%2_ zYi3^fe%V*Q>GbRUN+!%y?68XWkwYcY`?~B_Wq0{Evs{Qe;{l!eI$P z(<%=kF&|-G9zq3kP{I)jUGfpaW==lB`~rky5-OS00)+0jAuKCEsBDf(I4+^@Z3tD& zlG_kgj712JMW|-_j78`_4q>B&bNJ6pAcV#vWQ;?oVb)35ETP7DgqkL8Ji_oogq;#< zn`(s!wQff!C`72k|6D4S8r4upLY>YIjlAT*tTF!>IIhGwsX0}>J@ zAY5dMCm>9_6XCFgMyA!B2#G}q^X^1wVh&0;BB4tWLNha`2x0z2gkuseHK`L3x)&oX zn}`r^j!HN#p>Hul3$vscVZ~ht!MhMznLc+R^uHTnqlDJRe>XyC5<~tB;yi?T_ah852PGVl z&}AM%rkOJjVg3UM$0Uq2sShA@HweofKp1U~N;oc|uR+K*OANw_`3S-J2xCm2`3U_N zAZ(P7XZ#BgLJJWx79bRubrLp9sId@XtVvslF#JJ;of5{IY7ZjRdI+K5L4?~)iG*De z8a;$C!HjtbVca5weG-aH!$k;9A4ZtG2%*^Qm2f~p!ovu6o8pHNragjiSi)q}>Jfy* z#R&5rL6~X|N;o2+%VLD-X3k=S`AZOvNw~+PELm0jsVW)%zrrL6Z zT8|?XEJt|Ilt|bmq0!?Ai_DnE5yq`R*eBr;({Kes)0GI5S0F4gdnFu@kgyWrF;lz} zVcHW2hb1gCt)4(gT!k?2353VZK?z4BbXkS4(#%S~1UYY>*LMp$Ex zN;oc|?;3=)X2}|a6;C1rpF~(^`aFrye=WjB2^)-mEkfuigp9Qa8_hZin*M+bj^g zVU7ykG(9#0d(0BSTjqpduj#V|c-yQLykq=Zfp^US!9KH2u-}BA1>Q4hfEoUr#`-K> zzHh2Mr?GC+Sf4}q(3D8nC85zagpbXbZ3yGGBkYs#Z_{u)Lem`xleZ%rGE}VWWhfjejRX=w*bAoe0OwItiO4 z)OZ=;HjM4PQlQ z`WnLIS9Q4vnzvuo_G_bL8xZ>>_O=N7Q#je z=NSK62%)_Q8E+xfFzY02mQZ6aLQRvl7h(9@2sT?|Hx1uKXu1z!^1BEP&0YxyBqZ!ZxX2XmLzuQ7;jn~8rqzCg#P<;9 z?MG;04oWy8q04&+&CHzl5au61I40pzlX?K5`}+vX4j{yvqY{ow==(lG3$x^XgcTnk z1V2D%W%_)8(Eme(jS^ZL|Az>nj}S6GL`X2}By5&Y<0FKKN&5(4_{Ru4CA2fuK1QhZ z2|~fg2+5{I!Y&DoK0!z^V?IF`_iu!K5;~fO|3+x~DZ=D`Bcz(W5)Md6_!Qv^Q~W8y zw1WtTC3G>Z4k9ETLYQ|Dp_@4<;fRDThY)(0IfoGDe}-^OLQj+W8AA8Z5te<1(90Z^ za9l#)&k=f?C7&a#IE)ZHjL^sQIgHT%3xtglt~35G5JF!fWPE|p*Q}GUSwf935&D_5 zFA;_xLD(r_fT?x_q1IOj1xFBWG9?mrNoe#H!ay_TD}-@hBkYrKt7-T(Lep;$CV!2P zX7)-rAR*x!gu$lx8-!`!A{>^GVOo8QkoX7x3vhNW_o1+qrOX&LpLbh4*1Hy_Q5rRJ=j4^$FMCgAMVWWgR<3EZJ`UxT9 zC_;f*Ct59J_$Qa!%7HE&qA1738BR7m2f~p!dVC}n&Pt% zrd38bEMccP8e|27TJLugtPVe)wh z2hCmy2P7oaMEH#VGAY8eS_p?F95$_LAtcsDm{$woOLI`d5eZ#tBYb7%)JB+pKEg2x z-^d1C81FRgi~fr1B7u6 z5%x*=%QW;>%Y_J&8wR<2ls9iT408F9l5inK%9-K|sWa^&gu@borqx9Vi5DZxy9l9z zIVjVM-$`g@+O{JA>J%#iEv!PDG4o1k5&jPE=O3?3Za!b zA)$Y3gn^eMv^Fa*M+mh+sN5PM!3=1Puvx-32@w-+gD^ZHSovR1U3%%N-**qVa?(xN zoiE-nw8OD=^KQKTwYqB_=ycK21*020vGVf^ANlR&Ud!H_+I3K)ls*}?x_ggYV(?}RYABf3 z@TiLa4>ySC%;6MFl|x zK}0}B?)%Ap4+MnY@AtpYeeOQbo0;>TnK^T2=9E1<*^R7#=wA^rqypkqw@V_=3y1<0 z5v|;Siil$przP6Bye}X|Rzi$<0nyGKmndDC&TP_l#fU}0qmn(DZ|9h* zS>8|i#^}h5`Qo2>tHab+f+}PyKmGU7-HMega`9-}k>4(>);=V@=+oO4%{=8hsPDk_ z9<_FGqbgDCMT&KoE3utUu1sab)GCPh%7`xRl0>zth}u;U-Q2V)h+7hOBzm~&RS}D- zA(mG~^mMl+8dpcOsD|k67FR>~Y9LZnNAz_~sw37)Y?SEd{523AYa+VUKn!r}BqC}d zVrn7=xlT0^J0L3c#MhtZWY9o$GoR%2w^439&tcw^^ z2l1vmE>ZeLMA^ECx810^h>H@JB}Tb2FCwPaL&U#`c*k9ms8%0QyB=bUn^q5TOX7~i zI9I(sV$n;8<@FI0+--@*4G=9}LQHgvUqbjAB2qL!OmOU!q9 zn;=FuMT}{Jc;6kDDBTQEwkhHRH>xS(qQqs1#jZ><#MI`9_-2Tu?vg~c7Kqx-5zF1Q z=7?JocO*V?)mtDIy@FWY0#L1x;>(7JH!q*svY8@#AS(Hu1tHx)DDRF_K4l?l0>zR zh}s4Sh+7hOB=)=N9TAHvl=x>47NF z9dXVL=#Drhaa!Vgm$wIElo_(-SeZ7b3nV z;%9eBqFQf6?Ouq>ZdxzIEr~l4zq;zZ5sUgDmiI(mdiQ(~{g9T(Xj(SHD9NPom# zw@V_=KtzE7y0J>?1`g1TmCR`jH&%HEl4Rr{#F&AIPJUWyU_>%^Nut^th}uICDcrOnh+7hOBvQHRZy*-MB9^~_NaJoxG>${Gh()Az zi(?VKp@sIt@eYl-Mf~<06M6 z`j0>i8IH)}c1h%U6H#CUBAXj90&z^@v_uY<_f5pew-96AL_Fn=OO$>aQT8oFZa3;J z#6^kA5_w&jw-HlEBI4ghXoT-wM2dG1C0vtt5NjniN|bW`cM%=OAiBMaDC5>iM2tnmj6po>I*mc> zl-Mg#)35YS{5tZF>iPG;O z%1%I3b)zOAE=pXMsP4+VhnPAM5&s^drn@9jZ4#pPL_}>jZ6e~9#2tycuKFazqREKm zlMwaXZHdNH5G^JnUUG{kBYX~#VhW<6Ycd6~R$`;X%g*l*9j79?IYbk;P9kC&B4#S0 znd>wau~TBNL<<)=4bgu(V#qYat8SM>o*9S&(-E!Qfa!>15~n5FxV$qEBWEJU%s{kr z$0bU~Bg)Q1ba10)A}&f?mgwZl#3QE8Ld3@-y0}Xc)n+4V&q8!_(`F%VN!*d>;i}I@ zESiH@J{!@~-Ii!P7tvx4qPJT-2jQECNHG`D*EN}oSSztnqM!56Lv);v=r#{Az^#*r zSb&I`j~L`S%}4B%*efx_MJ_<}e;+Yq0V3AzlE||VQQ&>VP&eRx#4(A}62o2Ig@}sdPsxLt-T8db{1Tn$gmT0^T(PAlLqFcNa;aiSKu?#WUHCcvOE3r|+IsbA*#}5(R zmLsOQbrKODA!0s6%y6APMC_Em(vRL&U5@taqK(A$CgamDuPaKST6ij~Mb9;tRJ+BF_dyf%S;Z zZoqoPF^SU>TU_1^h>;r+V>TeRx#JS0KSz|^h}hvqZA4s@xGb^DmH8Yo^$SG&=ZM|z zl0>ylh}vHu_PS|bAZ|(Ak=XC5Z$d2Ej99)2anRkCX#6Fj#b(4eZt-S>Zwn&Dmx#lz z$(M+=5*sCsI{y|#$E}ENTM)F55~p3{HbnpJh#}h$XWcG| zJUb8twj<8D0oxJBBu-0w@AB?IjNFMBvjcJ79hWG*3sH6_;zu`XC*q>SWr<6!%r3;# zuMqLO5I?(164iDiYJY{e?52H%xFvB%;#XIFH)7Eq#PZ#UYwos04UC zE=pXM@VhdH5K|8$;twH`xl0n&jv#6uW-}>#u4pATb4%uZ40j;c4wGcjQAEQdh%|2Q z5k%u-h|r^mw65M!gzq?Fl|*_MdMz=zu;|WCiNq0eBx0LHluL60 zu~VY&2}F$BEYbfI;;EB}EUxECM4r=#!xGtCwo`~>5^tVDSgejNF7uCN`U3yTE@C0o<8bJ+L6{BCKI zHFNTY#XUJOZg?Io`HqeZ)>rk$xsT6>9*|jGHtf_BAx&qyGv&i_MgCJbSU(CBrzyPc zdbjS|scYMyEOS)ggkE8#o>)`9c3Am@V%?ndVOtZ*Z&@Ym#V10W&bF|yZ z6x|O5>#NM-1`?)LeLe`(=RlpX{!fIK`dRi~p%KAuPMR<(+bC>PaA2i7_+4lR7q=p5 zk~Ie!hjk22aWh$nzN##4aPp9#@WfdYsxi2ISdtLcZ*ZV~8+wMd43ycmby!4L=-~?F zUNhnE(4&EBwCx;LK1t}LCLuwQDyvwCN=fn4i-B#NY!woeMm5+i?I>(fzEqt<^i_!o zZIdMfbs$~~=e1Yg4qZF7AJDn?qRwl^_6mFci4-3U3<=^})8aM~<_J{SQNf)F^^NNq zmM2*CefJT6m8?&~mX{3;^M$VC=T1|up*DpA`}WH)WKw<jz7t zFPaOK78G=zXXn1OWiPNwT3l@T$3b(yn^P4JnfoJ9UTngb zNuD%$GawVb7W=fhTR7F5|IG^e-rQYFr~ghmZ%&ESl={}yi{^sOX`e5d3o*x+8wO4C z*%y60VUmFtG}#(C2~K;bZ^)ZwF3i$J;HH~Pic=>VJ-ts70d=J%|%*yvDuNIn#^P} z2X2+QD04Y+tIb85(^sEtG#6to7jBEW%;s|AcACp#E)Q;(&%Wp-tI52`uPk9UbNO&* z%w;#1A9vPV4s%cAel(ZUTmjtA=AJTF5ci9@T>6bk4Vpqwn?a>lZcA90cpY@|i1!t7k61x#GCS=AJfJLgTNw$pT3Adr4@8Q@oHREJeJEr7LWXUkeU8 zs(+T?Rm7ZrOy`)nqUN5#oix99py1ClKgU!`2R|gj+r}nRDvM%wXIs@^lW$s1d`VvvSYMZM^-1{ce zI_B!*dRn@==G4D^%)Mx?0dAGKdbosdux^O#fz-LZK2qJ&2sYZaqM>De8Q0ESBb=JB zF?7c18qnC%H6h-^(ls&H6gS9RQ_I^-``;9)i$!xw*qr!aoy2*yFxP_k5Oc4Xdj%I~ z?p1TI;)a=PX|5%1q`6k+TH*9v_4*;Npw>to9j#%yt|+|P=EnNp(Lv!8a)c+lYE^oZLBUPDB!dx%Q+!@!!TyJw-l*e2j z%i9&#!(4xycBC8hGB?oDb;p&+Ve$D- zZKF5wmF7lRaeZ(a0(!kksD0}T>RG);S-RJWtFC&DHrJ21*6a0-x&Fk*2HYz_@0uKd zoNEckm>Y;&WKJ10rUyY)a}zAxV4U|uJ@1(tf}7=nvvGSg+xBOYtx|uzkJGU`8K<_5 z1N~%>ZVH^G8%lhP<(+D77;c=Un`Uk}PCq-On}_M*nqxI;L-HdwmJ#E-ah+3D32w(4_Msc{{w!(}7fWXY#0Zs|5# zx@ou=PFC3ow^+LA#Py4ZdTli~gLo2i+sw_xr6+Gro%FVwj7Mff>a_!>>(DG1Xh-0F zOE()g*xUhgb8th<9W*x=_lCKz&CSEbn)@cf(W~>3aV8I0!UedY<_?>CA2-b05pxT1 zeasy-_W@2nmirXpF>{NEx3hG|%`L`t^lEd$JzpRTHue0VpBEHyM?6)RAMy@e=&fE&zdUM~ITZz+e8RsVa-rOg|^?S#8 z2!Am5DRKQaa$dso=2j8k%u$$+@It`F2CZg6zjK|R@JCCyhWHwsUKh=+CBDwwC7cH9 zI{4V!&z9~poPJ@v0O2p@))UvSkQXGpY;FVb7W!dty{?$tNW6>{_^Y|kacRt5HTMOs zrk_8&u9@3JJUMZ_elxe3cq-zB39p;`l6V;LB80zt*Oe_S{KWZ7uN#(dEAid9;)H*g z+eZ8YOLx=UcHAO!x6JLpy@e}5cpInI+6fmpXO$-W%hJW}VnKbc*WV_;BCgT-9NaOt zoA_wZ>mMs{5Aj|)7wN_E8ceVkdYcP2w-49XT!^{-xc&)0iA3ZHlLv?ov4ly?9mKt1 zE)=Id`5F>_I+rl1rTd0>oTc-bJA@l%&TsB8ZiKmTz3EkfN8nA9$!#M?ac`MRY3>+q zq`A~q;Bnk2b7{<-z`cX3Ncg0=lf>Iuy0qp_Y5cV}na<>CTnE~+5@C9rR-b|TYF}Ov zmhLR^BIY8^eTyq@E|cXwhbw6=#@u%}wRUV3{$xcmE`q)X^BOk2s&D%WLi;uD1==e0tNXJeQ!W$^4e^C){rt_`~aIb3YTm zj;l*pz}zpyx1{3_uY%?-6K`gD3z@ru`x956u&}vbb zo4ZLoJx;GO=57&RNM%|PK4b1S@pxQo!e?9E4AzeqpN;r)Ljg2Ihw~D1xpZ=95aOYkXr?C}`)6cx=RnyXi z=r=ugo2+H>2@>wZbtYkLoc1IMF5c3;Xz4WA=HR-pz8+2+3B%1d*AS-)CdKI&^tuv% z+45>o_Q!Qo|2H4$jl|j>DTqTk+-?I6u1Jo?zk4_ zQsP!{iPq~CIrV=kL2TxLtx%Um{G z6!CtP*E_+{{@Ibb{_EAp66V0^4t4;pueqGKXEdUCy>9L)+;g~rIJFRqLAm%-*3$Ji zmm62!+yI=Sd2khCE%P8tm>1cA4G$v0U~_t;qxq|P4YADmS^gM?;9|`^&9Z)gbtrDA zxdOOpxM8^AR$f6|d)x@+9bpLzA%6%Dyt#VITwz>ptMy3BtP4&dGQUmcQI@VKu86sJ za5@zE5Gkmrxp9_P7p9Wt#^V@-u|Xw}rA$t=gt}Vg!s#{1Tq#^rDl-Z<*<5KkN_hu2 z#atQO-c-uTn;CP@;P#oDYVKLwVg07`1QJd&`5f}3CDcQ0?R;6>8FMo&-SfC_ampKS zt{hH3>8#f*bLDZx{Q)=ITm@VP+!XX2^&QJW75TG0l%EqMJ{PCs^99@va|>{4)=IdY zIK38G-paTPDFbe?xhl99QcyYc5?nIEs<$Jps{lergh)u_JS3vM=7 z57!Jg8~3F--5uRv0MEf~G4~QKH|gf$wwh~zi^a{uZPWc9%RvqKQxZ9!_;yR!2=_Au zF2Lo@VEye9M*8*1#r`JAnui(DNEyL|M_bM)pr8{7*B`%}6gXUV{B5~|Lx6>wDBYPr0 z#C>C~4Q?*(Bitc#ZE=6IcOT;pn`?(Vk6VE|Vy-=I6K)Oes5#x(ZosX@9rN!0IwD&m z^`7jwCG3QY;7qs~cfwp}+#b76JZY{AZXa$d=}wvJiaTKGPUAGFyWu`Fch+2YU4NID zJZG7EkZ_r~?{GR4U&Fm;?!2YzsdQS&>w*>73%A1DMRUDz6L1Ge_Y+QsaUa}dIH>l& zVg>d^%mBT9wal-xJk#7YOV^L(_u(Mvelypf}Uf0bH!2Jq(XY{+dfh=DGy>8$% z{(=VaXRFCSEa705Q&8Yh*55QY1ee}6a?9KsxF}0^+nfrO*Sn=Z&Bd|Ykyg;Vpufxw z)%{-&Yp%ad4kMxZUhjhLm>bTr`cLj3oa!)wWu1T$UYt(l-eg%PptHn7%)P~OIrtWr z1V=RJZT^%`aI}A@$&m=1hLteP+$ffHK{kx}eDU%)P_%A(r*>n|l|hH=Ex< zxVbU7eJph}kW0C3M2ja;s;W(CcD<+r1+<2B#!FgOtoc4GE%PHUj@zj>?J(j)S zy-j0oBCZOz>A#TfNpq8Mv0IS8BGa1GsN96Ric4p13ND&AAqj6raOyFK)0+^z@rbZ= zQ*rvb%saS9oGLgCr>mvjJ49K!=`4ql?yk;1(Uwpnf4WL0%xnoY^7Yfn!Gu}N#S_1U z(<`gFS-8u%5W;NcW)t^*=sLT(Ik+XH3nk2v;AsE3Ea-CSgPfLd9`WHM3@3cb+gv%85(em(S8IB(6JRz4Dv;0GD6SfAo6VTgt0|Ue#k;Y zWLCmr<~|~>CtleJbr(aBaMRh0bU9flVQvNS_PAVxCC#lQUJsX>u#~w^h_8lxP#VYT z*q~2YPyzYj8B4f|_)MDhX~Ji5I%O(jyt#6gZVfIgr4%MCZ*DE|x}+;YsGqN6bP}Yoe09uyNqoI>@T!YbD{R3r^Csaw@Fh#9 zQ}^eVu7SC2xOy6myc*&Z-HxkZ_lb=yUF;5IC6i4|?!;9!*VNoD+$x$-M@lnuUlCtz zt~pM1*o|9b?iHLWy$83}Tx%RVAG8;@LHB|zD($9;^eO4!ZZ0pg2r z)d+jw2!amsXD+Tf;cJ%eYvLnuwF!Hf`-b>I?lJ2U_VLsIgh7Y+Q;EBr7KDARz{AAz z;a(+t-P{r4IdClr`q!`AnNJbd-t>Z@=1vpW8M8OxFmq>!*TD559F9}-pCw*e1Ay1tmhM|zIb3XC zA|p+nBc2;Mh;Wp-?}+E5V}}rqHupX8{kS;7cg+1jTt|a0!S9+oPh8#mHjFWMfp|t3 z2V?#8KVi_1{LyK3JdCr17m4c-n<#JY5^?<$t6me#{e(Mb?mcrqHFJ~9 zUDoyYy2;5%jo>RJylKu^!e4QnUDlms|mbn|mHS%?lnr-e6;xS~_1!<1Co5c0WmtJ$t-NNaq$wI<; z=57-&O}Y;V=i{{fpg;Mu0zQESmhdm)x>Na-@O^WC6MutYtJCvBb9acxnft)pKRA`A zQ}H5mcZsVzbv9jWj^>UH3S+>1fm~uTm_FDEI{Pg(7sB#a=9Zazg5`$f)tPR&xg@wo z=03!+7!=B%sdh5^*wTgJh9x-qe}&1U$Wxpwbf#NrnSHoJIGyP}wRC=*E+#tDt-`Ur zpm5xEb89UfvrU6`;dG{3XXP>TG-xzVhw^%*WBY;IY|a5XL2R(hDM@(D+(w)>k_va+ z+$Kwx8h6UvW*mz_Y51dSiOvOEEZvj1s<^Ybt>)6=Vh{31$MZIm>6DOV9lP7j>7HL> zLC5Y6bIf1mXO@w?cACqGn`myAxd_}Ob6=T@wDK5tJpVPB$)pC)9&>tQkwUvpxYt}X zah-fLPWG9LAzt75c)z*KxU)31y7d5#ASere4&u}`U*i%!f6B_jETmqCEps+pKPsZ; zJz|-&6IW}g0>>;}4&oZ=+SqY(I$JgdZR~`(r-$JH%I5odEcE(&@;vchNZR{+LASfSyR2i*1XX)}2S6;3A&fEb#r{~q2$E>bvIbWQ+ z#UHW$#7HBBn|z6p-ie6JYD0@)xtcFaQRErg;s9A@ByoLL4-QSK&pd2ldmr zS(SbDW5@7$(pVS=<6#242bzr4hp;ca4*j4%XhPOF){TevU?NO{$uI>R45h0}ak(fB zW#Acj7M_E$@H~_QehecvXf%i(I zLOz(l9o>5{5j1CO3OJYwPq01-ghCi-{+18?kPMPT3iyYS{tQT%SN=u9r=q zS<;|2?^N}b4US!i{QwrhEYQ@bIWQOI!vfHhr|~cWCV?iXYmU3-u%Cy_xGbRANZB9* zWP}KagiH_x=|QuTl7SEWshKLF8AqC7q!~q;L8KW&JK#GC&c!Ju53FK&bt?Bpbzgn| zubdpO!Zmliy01rUDpsY2G_Vc59d^P2&|IOza0HIRG0-HTHLw;wgAMRGXi`uVo5~ED z_@jwFp^$-P&E<)Ja0m{=k>o*cM-5-Y*k4$<3|C+@yaR88Cj4lEk0$hJ0*|K1 zXnv07<7obk=G$m4O-ImF8BL9;44Mv86{K0DXv;#*-GY==g;rl8NpTf%CN)-|ve^fCBnppU-mu&z4P zfGSWK1~asVz#DLiG^gPVoQ0F{3FXgA$0=kXkwvf+mcvw-2>Pj+Ban^6Em>{|ji3Q6 z;5_y|EQAUymxeO%3>1X4kPh@wcrplvze)Q$9EUyd1$>m28>-1fX0VajkP~u41vWee z#=_4m{{olc68r?O<1-RQfFJa6xIX?4Ce+8o&Q=FZz0PTgIv6BSukY!s##tbeE#L65WJ6#j-wv z%MF?Usrin}A)MtbT>QcacX9gI4SPTzx#=Ue{cr#d!Z&aPj=IhDd}&`fO;jJGorUjU z18jtqpbySIgpXhhjE7!O8}#T&&#v^)EgfWp2#ADCpwGj0g}S2kInkBnZ1X&nb3^O< zN)<`3lM!Tu2#ADC5Czc?16d#|WP|MPT76%}GzEzk0{y71J~6A|VqWrjiC}$hANN_(nAKw2$2vCF`(O2-InS$RCk@a%RJ+X zH1I`5>b<<)yX!Ga3()hMSE1FK77ct8gLCELER!BGKp##6eW5%2K_}^f^9xYvNmsCu zFMI5Mj?e>e5Wa?Q;1Ef`_H5+3F0(cMA@png5JJm|4qMR)=9w5|&130-w44W*zc+-5ZD$A>5BeZ^RK z6W)TiVJHlTVhqLNa1g$RUGO6nxCocvC-@nDf$@x(3Gg0FgeFiO@`E4rkW23?dVwAj z%m6*)NDkdV-@THb205xBx%GMR&QeFMsUsL~p9QFx3P!*n%DD!&;SLm`3-k;_&n)ze zLeC`DL3`L77UbGA^+m?&t-9Wt>#g_{aFCS7^26)I^T3PH6`DasCRazz!(?{dKcau^oBZwif!l6-V(;N{IrbrWE7MfQbKCjM{A^Y>6`fq z#YQtW^q&OX(fa=z{U1$#XbeqZ8h!B&bw(qe@qw)<3RstpnojT{}J$i1FaMOQ9u*^)4*1G>ns&N2byB9DfI{88#oS{ zAFsLZPY`MzyJmZ9;`Ia$B+Y}?yl2gG*0ko=LDP|&yKK#UZ^u4Er##7i4y5RwpxKOH zvVRQ-H9N5tXriH?)1W37rUgwX)C9sM&X}a{iBhpJhJp{% z*_z684mvc_Nw?qG=$S;vuh@8JdZqnHT3R zt-RP`%bIPW*%cdMl{u|%O}q;`5JA|?rFqr&bEli^tA0he3Y~ou+B3@ZVX!{@{Qxv5 zs%buXlzBGsD8weMZ13+-Cl}|nZcH(!#LPayNYkvvK~PXaxv|F8H4Az6779ivPW{1 zYOS9Au7rJ-dL++x^~$r`buQ=29-Mj2wD!Kb*<+(PbNxvvH{cSaXIcNR><1s*;S9GI zubtQlHF>M@6YdgRgdgDooQEIaJNTLHoF!ZfYhWw+Hj-}@@!rr2dcbhbdqEpm@iYtT z3D?35=mFiJD|CU*&xEJbb*y>9w<3zfv7sZ{YQ-ciREul(aL`ZbaNU++M~o5LI`oC z_m)Fh{*>h;gipW$;*{mSAMcB)?MJ9E)k|S=mQ@kYrC>P~q=hFTHKYMOOVDx#(E5_p zA-$_T!58Jv#9|~w@Jm0wEU_^}qd_@TYF6SoAUo&-y==CucrN1kK|QXtg)LO=wAJcR z63RnWr~=Qyvrq<#LkTDa#h_>sD(1D93Q=4=r-ZD0V4b`&CwMnuB3I1)!YRgdJ5vZBT`lgXf_vJgWZMh|(pltkNc4P8@$! zC0-zXpwb+2m074{JY0C<9`Pz!jkJ%d*uyR6<*h~f#66n0C;9!aKv!yy)Scd0&1+IE zt5RM8s>Hn>e5mO)bTn-0f`*MZTVdlP zQ5#K^H#X=c5Y7)e z5j?!17PzLclJi3o!k59@!^Y;lWu-|RZ?67tmMDWh6ILP>m^h*KMq@w~ROS9tvnp-k zE>V|0JQnKV)IG5e@6E%R?>E(hE#(#Hor@mVIvTvH^ura_0B2jV57bl}d-!Dcr~&wJ zCDnx;KpXl`=^q~GRn`B2f$-?P)1l*y2X7A_-jjzb^KgqLKHeX0t)l9Gub&@v2}pb# zdjs;}E>jaH?r*Pal)fIQpC4E0SntH5yBTlvKQ3`6(mdRRs-V~G4_B-^>%0@$YsB?0 zBw`wI`+lw1yFFQ$3=?4z#6c$#4JPajz2FE(#UR1~&@W>x2WLAo;`_79T>W z7FOBs!33ynWsN63PW`V!-vMoKC}@MD!Q0?4;%|XA@Fo;y1H&yGLD-4rR|Vfrv~Cpf zkuVm z%pQ9ESdmKR=MFg^oM7EiP+x8!`~o(*JJWr+pZuI?J?{9ssd0!OPT~sA@HL7(PW%|; zCVL9d-M$W>*)SNI7o!H;kez6WjR z99)3&@U2caKM*+!r{N5of|H>APzHI0B5@&PzL&>Kr~KbpS}%`6RpQZU*qu$Z$`uk^ zhM(aVxDLO;HMjw{;3oV5_1WXjTC5oBgVlnBA%saF z3~I1Gl<>)%L@too$AS{78N&(vFq(B*KIbM3^JOeMfn+r)M@iMe>MgB)85c=BJ!FL# zh=wO23erGIH#D9p5vhr$f>MdH{7$jyaC)MIQ~_nwzG-737d!>opf&{+g`C85 zKz6u8{=9^FK>wb6#|@d~%NW_6#cog-3PAzT@len$pXJM4Ao20gnN^*j1L&mDp0FLX zg%_ZryFJSnRYIjSrxl(h)cNKa!cw4fP6@)|py!B135$TvOT}Eh*))7f7R#7Y*3yaM zIY`!u<(AM4YC%nC3@V~3VP!bXepa$jr?-a08-dbSN#yGje-Y|}@{%_8UZK?kBB&an z3RgijEbg60C|4ybEY*t$O+p;Zg8H?@Du=^yAN#X_+{2qyQUigIgYi`I~ zU$fwX?)Y3^matDr@kyxrW3KO+e5&#Sm=E({4$OvGFazpR!gRuEp|0sXU*;6!iI0OZ z@UDAvo-a!Z&A%N2gJ7UrG0zv}4$bowuRWM${eM+gQ24sVhvA1p9BA`e@2!&?0mH#d zlMuRw^L@GbHt>Vc23ZY{+Vx3XH( zD=_g!l`iq}!>#_Pb;Cllc#U+wn-XtqH9vssD;0a1Z3Z()CPOH!V_BDtql9G{dM61_ zz%e)ihv5)>0|ObZUlSgHeXtkyzz3bG{u{2rFYq%IfL}qEzN>^+;Ib`yUhA4rj`HhD ze2efVWQD)rPxu3L3B5shJv7J-kN2f-^}7~mXI+cEOo^|>nw_AGWVm-NR$QNSya2lX z-ey_XSe4^lYwvByo%_I-v6JfM)$bqTDM_yPCrNpF`vmAtB!n;+?y{Z_CldZqFNozN z5JJ&9wS^KtNLY+C`X_+9a2@oY1NzT{F0R!gK9SdI&EwYmZp{nVsxY#iAk=16g`%8! zy}MVrG^|ezsURh!098r1mf?g$2$K;ehuXwz!W8m7$#N;SGl8_R(A|~VDhWQC`YOKRFa-2P6}MTZf5Xtf z@ae0ABiL|tLQS&k5Bhphea&#f!)Uf2r0*vF1@!gBCqe)5+yy#AM`#aip%uIeuRsfE z4$Yt;RD&u|272m#g|HNqglv!%vOrsQ$~(sOeW$U-_>%*&gAx{iry-1f-$b+JB%Tj+ z^?iykFL>#-PF~A-AUEWKm)MBX%IAl|PzVY_Q78gE*>T>(@f{H?l!eMr2`WH&C0f|~(2tFEqp}sC5a{NvDqc;lP~T7cBGiRCpzpt}1vQ~Y811jx>Rn}h zgzh045WZw_EjJ?G6q7i_-DeD?yaAv}>%-{o?)Fk& zve*u+?gV?`E7%2J!e&?xYhX1@gQ+kDG*@#7c*Cj(@vflLc{jrD@Do)y4E>0|4w}@Z z$z8qRHQ3EMK3$4Un699O-bgj3?x)nVDnOYk5)L37L8!M-gNSRIgW|<;lZd|qIzdk) zT!B*s--9eTl{1p~1b7#eR%eURghSN{aYU5qDscQIOdHdw!&}zlgBmQW5be#|@D{uY zNaVLB5Il5Yl~M$&Y`Sr8B2(4I&9aYH+HE-UAN#=0`R4=Q*8=w0e!!Vh2(EP)R} z@9mcpYW*@oRX}b9aqUDSP-VSzO7j_Pq&wCUu7geRMHv0B{`s7Ry@VSHH^5iKwX81K z$?^`^0vd!GBmLOecH-M$D`>pPX<4BLs#;Qccf%ey0UDfN!$HvJIs4WBr77?LVh}=) zdLpQ$2H_#xH*g%Ze2nlY9D&1-@aTx}68r>b;S8Jx9oVM`E0Ry^FTnTkEqLd^gwUnz z;7i)=9Qr#r4?n<p~z1{$cqpJbcbm8m*(O*n~5UE(6+et#|^G zfWFPcD>NC)eh3GB`Jpm*X1!ceTh{0Fs+?|4z4EkP<)wuuAtj`N)Sw%|6#Ck7NiFD` z7KNAS0#2Dc=Y{ea@#!I5qV+0RUd}5cgE{p`6!A=u4YEQEWU0iT%#a;&Kt9L|Pl4B^ zd5GtN+@KcGu+UH_1c9y|veK8MRtFkI->2{y%mgLzMo8k~l%*MwQ7cR8D(R0}^l4tLWp(Q7hDb zR33c+gf^^^6YZ_Ic zX`+?h9;xqDPzz{o>%DdID)3c!#nvURh}O3@--^)7r!utztdG6d?7a{@p$#N1T{SG0KXLE|D6Y>l6b=PlE#D=4 z2S&k2cpKgVRbT|+n=l&2!ctfQAHYI*UvOwA&L5AP2{T|m#7^hWRG0^IVKQg~b3ivO zvk51GHaL;+J(vLFVL$6%hH=Ebf|Xb4yb8}sv`!oKw&#d*^^Hx~pf;car-1fSmvL_+ z(^%fmNl68I8}TZsJPSaTTTG}uPP}35m~Q2iUOTb~RB7c=`l-5nD1n6TE0z)JhC_Qa z99DuJoaox7i{%QIlW;Q`0u`yGZY=NOR>42u-9M}*u6u|ZgulX{@HYPT7@6^S$djK2s!!UZ@F zKY-GH58uH#*a^qrTR016;53|qlW-ig1K)r)egd?e13LayGwsoS*av%IH|&6I@Fl1v zwph5;Lb>f0R|V91iCanQwXE{Lf?Xiz5oiVaf6qfJybY<=%6!n)YY(*ta;mJ-eGOg( zRq#=kkH8^NIyr@hE$%Jf3)%hy8C0-V-b-KwXjyxs!nM~bRC}Zr(z@*oP&Ku@TGQKG zrB7TDuUu7L6;C+-t3SP_QUaZwiGX(5_%i*npG#3hn?3Vf3i*|n8b(eA1puW(2f1S9J~K-TSxhBf-3I~%v;1clmo}V z4kNA5Vd5Q5w}~r*)@f{b;~{b1KfITBNc*@wee{mf|EI|G@LB5rvZsGp1^>26^^MA*sFqR1qJ9vQlx~!}|$!AOGzz zi?J;DW4*h`Qe1UU{Qgv@5WPoLs8@B1>xqt*^(Nf){Mc71Ha$f}LMF%v5s((11ogWf z+9{M*+H~d>DxbXaWdJXamqz)#bcxgGlCE`p7E&zX{iYJB07;=%c$!^O)2SQOwA!6j zxXeEH#!CLhQLUysrtGZC2YI0)dGioz133w`Uf))%dj~!C$wgdWqptZga{Bu8Lc|9W zuTP$$EI-L|5kjReOqiORp8|wWLqRA6tVixe(cIOxrM!TQ&#xICxIjw|)zk2_gYx?piu@X=eUrT${B{4sw-Op&0K zq)Sb@n{}QlTk_7z$)qb;Pz3~i$&c>(Bct|_Ae;nkdc_WC+9UJl2?>f6EW*X#O&~$= zcW$ZDT_#;B(#1FXIn$L-Z%!dykw8IzyR%9Vo%Id;Uj<1;7snBg?`cMSg1-CW@>7ChGV ztQDTlm0Rf#4W8#Juk^19Zsh)2>7NnxZSmlsG*q|kyQ>>@IyLJG#T5-SN(r~(6B=)f z%eItmFQABSU;Z^ zSA5v`Y|rlBoQv%i3v72JYf`XgM8k0%ZzRq8<^45*vZ5ZJ)haUIJ-eDsf8=_o=G$G* zjRa@h!Sw{!-R3p^NH=GLKa;z<+CS_;?P1vLMF4bDH_Hi4x5SX-W*}5}s zf|6WwO9?_k%ehlq{So|Hx|-14TI~y=t=ioUQeZOi2GVk%>SfM) z!InOBMLr|j23PYlb~mq!WvN6xKCsJ5^Bu0(=IX#fGrHUO;Be{5nx|N^HeK}cjF}cy zzQ1OQ+e_A{Pe_oB1TV$qZeQ;5`FHOpIOKxWcz?R6`)$Z?Y}ZY+WR?GKjcy(AUpvPu zeXd*n1zY~o{kq|P3nl7Aue?X~a!7bJw`n8&@L;8KxN|D9iktoAql*lb74-$*}4f|lDJ&@p`27Pedqk1CYc=LAVk;xy`8~on%{@xoGpu1!dj+bicYDO3;V@ z{L4UsXPX`VYx(Cj6E(LTQ4b#CpSx=+Jy45BAO3a#UvpzPs-tr9X|12~t1KPX_3i%K zw^0E*sRa)EdnX3#rw3c2i+f=k$8iVOkHE%mdiB?XJz+g&$6}!1|1ee`91_;d|I5f& z=8EiK?;qJR)=pM-Ac?!MgYi_|1@9!64FX$JXD4d{=dP%QC4==@L)<61GNylbMw?}{ zQHj8bf0%o94_U{!H9KjBz*5wy`hlxK@|Z#Wi(c3;p5%7*zvQy)@<&GhLjqlslg`*% zbpG4j29Tgspu99Mxdywqn&xmn>$+6J&D}-0CEd_{oRhEYqDpoSw+%0FWxpcbXD*GZ zvCs9?(!Y{>XXJaeO}IR^b18P;%j?STrtluFnN*+v@7mXyYoF~}aA12;cNzs6B>&rBr|LFKC!S%^GKBj!4xIGP-}&+7>p8znO>W)3aQU#tvP;l|nFC8v zU~(?S1}uKWpqXlUtzg`-=#SHAW~gcNA$Qh)8Q6%tsk z6q>RX&Fos8^QZSGMA@rAJ>8kF?+>j&ABViw$`$;EmjBGP`o>=@dIWjZc~^gXxzW^l z6V9uhXk%J=d@J|yH&iGv`ac;ub-_bSa-rprZ=C2cC3nA4yxz~^RYem1xe*x=lL)}%uLkE{Fsf%B+ zg2f7Q|ND9;cjlOXdi0>qfkD=Ocl(oFvge*i3LO9xJh}6lNyq&m!69?HxTz=nl|p)T zb!Sfap9%4IbD2*1i-tVe&DA+cCs*w5W}c+eSM_kKwOp{LOLEHJKKQUZcYz(c=vD-W zM}{Qn<>s6sRa7r`;3DC3z1-kG3G4K7SLECFavy7XV6Vw7!y`i8>*dOyVR30M*YY~y z7roqTr|HP^?%Z|GNKMcCtAr%!?dB*=lHOB(qF#Y4uO!kg>v?}xuL$@1nFsPDthCy> z@n`){E2A>FGl>>LQuTF(f24i?`SCF+tO#!9vwTm@M&A7QRvs+zG4+hT`g&meMZVei zg_zJ+4$&3%?jo$8oAn(#|4>tUZDdun8bn9+3!Ec2+$JFT z%)y!OeZ4+moE6tNYd^p}eSu0@=w7+-=t?{^o*vrykSPOQjUWHLPmk`ugdGix&ya2*zgOP5$g`9@P)Ci)?fFJiJaa+nKUkN zaBiJZc-yUEzNZq-G+Y>XE*9rj{_ZatU5pfZj#O%6(lzU&>+VQ6T)Eis@qXNt8=U0d zjdOKwa8Z~Z=bpa7IWz1g&j{jf_*1)N5YqzReoyO8?=H3!(7O2)!f0 z+ckFSwVU^A`N-4oV+M~mIRCE)Lhu8f9^snb{&&AVW|RNN{(G=y-nGa(Z9J~0yf%3F zniiVSgD%TafBKM7BN89JUZZ-4l~>J&$J0ag`A@ROiTQi%01@F z;cePlC(#i2KWzHZR{(EVCAx;EcIAEHB_F;gddv<=#%{G-bfPH@fTPr+m5uHo!c&rz;ritwT#v7_9E@bIEM z0{@jH(c4A^o_`EK(kR#WeJiC&IK^_O#%D;Q-Sf%9BZ9woFDDDH9kTKrw=h|F(URNV z3B0@C^L=!w22a!sWJq|o+4|kUWA62TFHKXf_<{}zyOB`T=ObOp}awvu3~a(7pP_WP+bJZxbexu+Xwa~gG-SjJSMP1#S-t!B=#x#`_X|q zm_4chLqt&qwbEeI(~hj^`hRNzHPh94d4RTCS`aB zC5#)wUSD%*7KdkWf2CxrU%ALs;WI)Szvot`qO1k)xt~%|u?wzVYMT5{*M%TD!=%6) z=^UA>o+=W$I(JC0o@wwwL{Q#IZcgg(h?12^!6!0tIrsM2lJ8P^9xZw)8nH(2v5#cW zGbE3H*r5AsUYq2uDDQAm=t_8Jx*IX|qm=RYQ%q!y9?skjsWLeAvLwy!uUR_DJ(ngt zB5I?RUg!5NLz?GWQ15<Eem}u&)}&?4rj--J`W~O! z>;9VL{Ns>z=JPZYV=oqrDRX~KX4a%(&5{<&^Oyd$SGxOa3b7`VHBY`2-=yS}>5Xj- zpUMSQo9vQ5$q0GbGADU8^p}@QCSi1WZPanHD^H4&gGr$$sS(etdH-0UQ+w{Gn93SG zOKexY<@%WipIC5z&9cdEEP10oCxv$BTC0c-NrLFVNT=2g zu2H|_x69M}kgjY(G$>(KqSC9KLxg;6GGX>vuSu%!4mP|G~P|TUjopYV672JxU zs#Baa|0DSIlO(9B2!LmzMmo=Yt)7F7QfN?itnkf@2@F4*FBwyA@mX{ z^t9pN+|)5!^IWQXKSk%ct|ci-zCjA@T-TQK?jD)2uEPBklWe=KGyLsOl_lLD_tz|% z>pmoJ)MvK+kx7&|6j2%U3(5kz0Nl6L+Pmu2vRh7<3nOFGXLj-nQs z<^_(RlC}1%p8MXX1MjE!Yf)hD|5@7VhOctAXX#(v)Nqzhwb*@|m9x_Y=b|`S1udBp z9o{}9-4fR^n%=$ZVq(H8hnHRw7&w)exUMl=JQ^->Z^eYy3Td;%70jlK$r5)3AN?Nb zbk=$8ox)>Jv<`b(qdehs?QJGx*%J3$W*s-A)H&u>mdK{jAHBloxn9a6u198e`l?Hn zm7NY*8fe%XL;pPAxcFby@287c>OQBW=-i~xspdq=)Jd0jxOU@yijqs+VAZbLQkOi7 z&IF{?W3H#Wem|w&$Sn!SYM^!zvt4;ogji$zhcYe2y_Em+9(z0V->duID-qbSqFyB) z8+zUI|GGr?UAFK#!8cuz>>T1%K6bUT(@2X~xc1q(-0yMIvWFK7Dg24smz@*CqEFq6 zIl`xhH@kub*~AB%UA2PY`$~px37ipbxL-%E_@l}UhOM4latX}O8uj|^kMAVe zKI^r7A;Fn2x=1{;#nmdr8L>9YIbD3l@DlE;LgCdOec~z>^6FNXwFsN+zSTWbgiG;| zt*$%ECC64aX#Y!9?q0adOuY8%Y+2T8u?icYbYjm8PI90gT;oE1qvU?9F|8!-G($-10xyD5~ z4l`_Xn~G99?jc^B$`F2PTVN+!d^tW-o#$tjBcna3ExFC5EJnQ_c{`F&?+TW8Lh99B zQlCgao4h&)@EE23HrKouhjYtqZb>nE_FH$lSonr5w9!S-4-xd!qo^V4{g4?+XUs)Zq#m8R%dBFtBM$64(jXKS(>w3NEgiDD&R#@?s zd!q#Vx#25!pd>B0!>uU6N#JX@yF_?x>JwR#d(SJbcFFJ#(fxM^+CSH*-&X(C@6c|_ zw+|;QcgS12-A^UCo!aB-m7L>K|r~RLBs}X zP>LlQ#Hd6-1)^d>Py}qm7(`SCl%N=6LlFyN#S#-uEU}>|s90i;-H`aRJl{D*j7sv$ zQ{K<>zHjo!dd|%3&dkov%+BsTDE-q_SG<=geN;GEbr9>(E;q5h0v*ryItspCv2dI$!9M$*_a2hqw114xLi->o;v|3NN$4^``yTSsw}A`0!mzl9z} z)XWo+r6L=)CS4~nLKuIVVmiT(#GR&Roy1fj=`^Ku7W-;nzh={&V!Mdh|Mj~zZS)yu zw9*BMu=6gP*3>lRGbmn2Sj5}Tkb5^osI$Om1O*r+&p93@E>O?cq0i^^c{gMu4U4sW z7d(De{inZXdw;;^H{1m@)CUkgeCtrPW_ZgpMclcIBmT$ji()E7=dQDX!Ivy1KA&hA zdCsSXMC-!C=K#_ikk!@^&ogIk;VUuhcK|s>Ixj@T$3SQXguvp9Axm~N<|K|0z?c3k zd3wPGv_GrWv;|JEPo|Tr5K3~3j$0rqC^*cvq-jFd47#{#5 zbVy(8vcyHrl&-+WYCu@V_;q`IzW=1!JqaRt&=VBojRk*?a=anxOW?7m{cua;fk{_d zaS!bNp+}PvD)YuRt#OG~(*PK|od-87@1M;6kPn7|;ax(G-Jy)Wz+g?+Z0f(lA?g+q zZ^@1^apM8utgct#tz+(K#n_1qc9Uu6l+a|*>Q@4zE-)75`R-ZS`*arx!$SkZNh4#l2ZYDH+hIe5m+wskH#9{p!TQh3>#` zhENE8CrR5Ai~LuzMWe5NUd}hKz3lo;tDSiU;PDE;4BMP1zn)Z^tLq}lyY(I#Lnj0uCZpa^*B3eq^okRg@%{N zV<5s(hfB1_2Z|YVNhTQ6>!)u!?kVR0hDFPZvxJ=cBSa~5gD%maUYMqvmu38W!4vw` z{>6h+92V-@Nvu?(8wmy$OV#`Kf+?KaNX=u5+=DlYy#aev8o}&#`5Twk$P04)_o0Dm8AEX?ZWwX8& z_QTWsv@dE#@30HDqgQIGj8K*29~Br7zzx@G5iR&b=OU=Ik;fp3af{tVz&&+-;?XF%< zc7qW{&C2CaG}CKO?5x(|qZK~|H8(D&@WJq8uE3~`K9+y>>6B$YpZ5U9H-wpdi$6-taZVnz>0pXg76 zxlLE)S4u~MG0r-nK=@4Tu5Hv2e+HJTd+&5BtvR8ra4Xrv;Z_z@rTfF7 zmhDwZ41u?~OdUdSZT()sh!C+)HEf=Cg(C_SQ->&oq{}oW3Qy(qC7x(NgxFi~HKA1z zQ1e0)`Yl4*?=_D^HM&Pp!4Hw5UW@(KmCvyQxkbZAi$B{ot0hP&Vb{stqnaP8$tj_$ zBT9OFv)*?Me0p~vn1TPi7TrAd`Fno_1SJ_6P>Zt0z?n)sSkjR(qQ8(WZ3iCqEthDqvJ9F;KsbXO)4E;p+Fre`D-aYrGc4%v1Tk9N1PnIR z-4@h)B7{Cjp%cXf*CM>;^sO+kq5h|>>$pqaAb_3QfS3cae&ET%cBj5y4u}ED2IM)_ zkA@{0TT;7dEDZ}w3Xg_v-m|2c(O4SIE$J@5ceNz5By7psPr@G6!;<<>!bE#p((*|F z23S(@B(ZCw!Im;xBhj+YIKIFT78RJyX(aNzwpg^|EXgxQ>?&d=+aROW#92~u42Daw zq*XEK>1#_W#j}1bdf>Sq{Apr@q3qsMNd?Zl>UV;XSZo81C>RsQ4Zre7q^+!aARR;|8 ztiEf@)mGUvCFa>|G~bi|4E$7L?qsp5aKws^;`~M^wxYbraF+J?+!VXQhPzH5(QjVG zB6D5|cjk=SRFkoVRZe__j`+34d?=|eDA>k^y9YO&YWn;=F5f#jMuYX&`o1v*qA8V! zS7V|_zc`Ft--brUVIq|tRXE*>!z>TArD{`Aal>iSvZ?5#z8#q+fT+10-JgoKjU6pb z1smP)mw;K{8@_qJPeB_S_~8kd2ez$2cH|Kc%+YpqmocXTlkIc*l1oi$?T*2*inOBP zJr~;19L7``$+n|C{G4M)qamuG!c`t1P_qPak^Y@!Dc(_N+#Arb>7bMi7#Btwka;51 zY=u85%o~{eM|t-b?6Bk$xHi%rMAM`p4N1hpGysEbFURD|#95a<<}DWc9oU|iLK|aq ztz+w&dfuFJ-VOfyHKbh7>PILT%`@_vw`!;5Wv_0a8q(!NOybXtY0paVb+a+WO%r{z z&naO#Y%-uJU7H3aD{Pa?bj(0tQ|b*F6r74?F;l1l%B>3{8_ht6l8xC2rY$IZ2F59C zLC3Pthg2A;OPgkhMTX1x6Upp8?w(7&mRIm%t0afP(Zxx#s-+-Bv5_sFSvMKIHj2jD zhxGNA2z+f^=+2j7h`x)9AYHMyTrki$YSy^J=#DcA4CLcNk#oROpbPDsgV6S{;NBdR zshCC6lf(>Mvg5xtJ6iz9~Q+{qI2c~=GUd4vrhVd-5MxKIEuL8n(O8Ut|i5Vjz zd7IAp6d(`jPzvnI%8jn2px)ZlOfAg4adm`$ z#0M_isP{Z*eUKZ4&4Vad_?i41?nYbqd4e0=nkV`gyxPm6#XdgmHZ^B790BCw4m7?B zSdrq@1XFix(+c z3X8t+&4Tw{JZcR}WeLP|reSHY%;}vekK3<0(~C6Na#UA&p05tF>1R z0t7Smq1;Tdg=vveB%%+Lk`_I8(IO`vSscrMm-@w`{(#c`*t% z_&sSml$P>*$mwe^Q?(cM{2F3R>qT+=9MqfAzsALw4ZY<)o9wHq{ptE8#Ecf4Lf}6q zzqBk&{X26>Dcg-i4hIJ<MV@h@NEfNoP~N=k)NzxeT}ifTQ3Z8 zRVE*fKz8mf`jva-O;VMB>R+^dI+X*HvW>dnM|Mk4{8>JS!mNv z^9Wyd78h$@(639d-81u-6UE<>&osYvH1i3v8(ehc9}qMEge#s$I?TKg-DGrP1*D5V z-QNT&=&xXSJa?yg^aWPY0qY~>Hd_bgRD9JREYPkyFkf`H!9oV zH~wtQR8X=*z`{5O2xr*wp+*h*#P&M?2r?<&A>JchHWzb&fWM(0|3Uo^&A+u-?+*ke z`=}Q{p4k|zRRBHP0`}bSV`Db8U5E3%YGil?%7cJAP4@swX3V|;v?^QdDr~Z#yV+u- zFgSn)FT?wY0Lt8o9xRl+_SXlV6ISHh+RkISaADXvK7iIPgD;;GK)JPb*7`*lizBT0 zv7@J2h)x%P2}@!Rw<3The}g_Z22k2JFzX!wbQP_BKPb55Th=6I>Y+{#TZ2N`Kb8iN z&vIbi2q5Dfh~!V{rMa%PLByA2%t0_L=w71s#-UVZ2CQIPrw4@d!i6bjVc&*kTOF=K6t*Pim-#Sosqyx^m2Kn^+ol_#77-*nV zU|J4_@eQPUIp}X-AoWJ8{|p422c-=-)P7B5uZtj1uEPMca2-V1oC8rB529mCuC_`y zWLOKJ(zOE9`=U$UP`y0es*i9ZLyovo;`ti2)b)wAI5Hg{L^aldqt}4UAtkK?P-emf zzioZ64rQJP)G-&E?Ny)3#e(R)0ji`o1M7;JAf7B6Z3;gwUk zoF&;C^w4Yw?aPJWU53iG^1Q+4y|2ygBp(n-easz7X6qqq(_z$NJ<|5DVX{YCb@9>l z2V3tuqc0^1$r(mvz*N%J_i;9e^8@%Uw$l4AHV?S@l22ygyRgVxv;Q-*(m7CIp7@^P z!3q}SiS4vX+G}Bl4fkKUKJ7*nBwkREmClATH;VQ2m5pW4$bQ+9Zfrya`<5S7+k^#_ zg|8U0dwLXgGj09wn+v3+CYkuA;S|YE@dPk`vW4_QlE=4 zI8i^5^KtDZkAwEqeH9<~h0q{i{)Hbe3!xNX7@jD64qnuMLu}hG8-P#673pxnh@F(z zhc1KqefMKu3F3;=CyiAoU0~WKz~Go~*s|&1*jcHJ!TA&P(-9EXODFRo?%6F(<*+8X z(Y~S7lH*1gFnD7=+jxyhuZx4*Dzq^CNue|Z7=jXM^mBpf0L+qqUATD0;1g3J<<3yb z1*YM&GMbT%=dY`>sBs0xZ9q6LKV;L+_V;4PMzVCwh!VfFf6#lTI(*w9jGPLWv6#*oF7(sFt?>l}ZjPYC z=79e>&eDJ#;w?^FyY2*T+DMAtiFLnZr0l?KPsccYJgH4fBRRgKMzClUmF#K>&h;*b{*-ac*e4i4UQI|}<`C%F`-IXa3QcOh9T1qR#Xr;8Wg z%)4Dblrh+v@rffEx(g|7m2jF2L_r@;@rTg13a30g8+wGxU0<9~0DHebh6$l%sDBV3 zd^PCl<<=!x%NDO^NNY!MqnQv+FF>pR3K)F5;K_Fy8fkS8KXOq#h$bhTj1OXz!f^5_ z1ZFWXc|j!iDr=jx-R!wEij=M01V6wqXd`3+ii%72u0CvnUrEA{d9`UQ0pUxrfm`c8 zu)Xe|S}}@C1RZ7C9>8Ee;vEv}^gmI8>Zi&_C?Kr3VKG0Rr2JntO5;L6d`c#Q^t-{~ zf(Xjuc4Y+lal1EyJP%^pl=u3;NZAbxs?#|A)PdfV#s%Br$N<(FQPACul29u(B|(!hcQg| z$zwBtzH)h|j;2A3smiBvsm!HNnKbGMuW?bqnhI1VLO3~wp0O(47Uxfz`8UVZS8fxx z#!_$A@!t%j3Z)MCnh+903jem1o98`R@&i`Sn}n+Nc3|oLDD&Zd0CWEuo}{H^2QY!k zD0;8)vQON8eq@~8<}sZ9Dm!v@xxhAAbY&4MuE4-=5 zf0_lAcV$q0<(}ZsL~>MymDYwTy~?i2)}&|}atv0uFk0UC9bazx(&9;rGrVS`5}QWR z4^2K^p%-2_lGLheQkA%S5^X;8+JaIU1{}&(7o55vRNd>t@l`4I7lZ2*XZaqUxJFs? za3x7Glyw+{3u9>OVeBDP^KBYS_D3*K+gR$$?UY#Ba}?JT;679Fxl2xA8#nKMIXbea zs*>aavOJb{9)Yk0z~F3cQOKl|8MXGTRxscpevYO4z%Y~ngPq^YN7rU2J?ZkRgaHo) z-wX)5ryK2pqnf8atWiO0G?_e(qW8L!1u4S%ESlZkbI5P<*`2hNXf&C|9)%Dxv)1~` z`+~TSkBTj7em+%>v~ony+sDg{XGDHkBmau^O|F|suCX%Drms89{=i>PlhbmJLd^%YV;MBpQ9S zX@YbE?2zNez!B|?*Gfs0GfreXlR+H+18wJHSv3-+#KCFcp0i|5$V3mrV*Sj6|uO(e#sW=iO$|(vz6e zelzIqNo*)-2K7IM_Lo^ycnVSe;VhYjmOmBUS$C{XH=Z&VY0jS0gH!NRW=UjR1ht_f z&mwfBPonr@sH<@jMV^D2_7q_hrz9$6B=;mTI}M+oFpf5 zx(T6Ei!Q$SKw3po^hafOEu)V~qO#L$fJx+d2Hkv-MBUHe8K(+qX8?b5>}O}h#J65D zLv*+pTq)e7orPzRIkCZKHT=$EyDj(ZBAlH~)y};w)$5EWDk{KvR|)p_N~ih-IF#ok z^T+ib+du2;jvcvlApyykJk%l;lS}CnN-;){xwIcGPEcx}7ZdbzQ{?PzTMu*3dib;T zf)=TelwVDlN4e)gkT8#)orfCc&LhhUcrKAkinec72<5!59cn;IvC%1&4qpJFUn-Se zMjM=(b`f4rWQX=yY6qe8c@VC_vc_01 zZxCV}yQdYR2|I}*ALBV|IF0@n+S5dZXthr$TZ><#sPS+BBroeMVDz>zhs<0^W~8 z`vmX5OsC{$Xji4v9Dct$o${{Y`D{Av;pbau8P6z#%$}odoI$2l@ZJ;cZ+IS%L8I?N z_lQ)ZGiVTlpy&8s07}ZB6n<7D?-)ucOrZ*rok3;XqpT=t5-u=&O9uH}L;GU}wKM|x zO|<2BuC|DV@N+Y?{OrAm@?M|~3ti}^a}gFVBKzymca_C-^d%fZ_;swwwTo#PUg}q+ z%ZEH`9cMl49#CzCGO;iL*>)tR-)S5bW+P9mwf<_R9IBVZtv)in(PY@Tnh|Nfrad>{ z`6`S@h&ZcX( z;S2u!-bHvf-K+Vc?bqQI)deS+zS@Jj@RT0(YZnXB<>&L0%x{0c*7`(+22}xNO}?6A zYJZm)o!M%+Vmo(J&ymGMTf zdzCFH0s9T`o1sijCSD~3?~ZKRXLOGP-T#6B_kYHo)KO5c^+AAp6*m?4r+>5dixsMP zd?h5R9$pO>ij&oM%$9>=Qi@;hynS3rsRO4uaPV71`d(9Op}1ng%VO&2Oou zbCFMqtkSCMM*i&qlQVCxq_cG!+FD(gsGKq>M_}=Ex`wVECEl)KPCv~M3-#~3Nh<^KkI*%o5?4o4QPektkRzWc{jWH+!VlR$GKQ~Jj;Ms4n26)9y)d6L8S@M8aY9jl`Yd4*Z|s57?E(z-eeN~o)=FUSulV&zkz1qLX@0DSuERj2rH;n;5cdpYG+ zp~8yZ3Fl=z>9Hlg&Rg!8c9$?D4=Ja-gF1jA2Lo{FH^05bn6LJ9lgq}E z1n=xvDxb?8Ta#fhwuc^;$PoVKM=@~Ms$fn9w8~QFQ&~(vOp|X$AO;lRZo??8q04r; zT>LnqYToRcbK62d)Kb{0zW{^_+9Ug(FB%rqgf~CROfK3^FRZalzS&MLHfXnOF9@;G z`DumHowT(cUi`X~?r{72PO`Vf399KXinP^*h+7+@w2J?>Hl+);y3Y6;4+VC5U4Zs| zd;BtztF9&eVwZoMV{h{Tp4r9|tooV0tlQ>7Tbfs2=i77I3%S5I>B#zLiP6_xzrr)K z7#nfAYgwp^t~!4C!=J+5dbjbx`44K0$O4>auhysjR?X7APTXiJkALdgtQK~9_&kzKCmUN8oa%1;o(ttRGZv{sbK~kXwz;vMs%VYv z3m(K6&ljBErfcQUYV7c#!Q&j>2038ENn<>94GQ9>7!NHFqkuax$^jK<^3OGHP;jA* zNq9AyKTT&}F!DnaUlVN`a$axJprEw7NwXxnctKZ{>L;3*(6;U-xKaMIiFtwLag$8l Fe*mRSPgMW_ delta 106729 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

WR)@^RpHu6gAWlAZwKLp*p7)FfSy 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 KOpf6a&3^zxU; diff --git a/client/src/hooks/Audio/usePauseGlobalAudio.ts b/client/src/hooks/Audio/usePauseGlobalAudio.ts index a36f66c89f..06fc7b730b 100644 --- a/client/src/hooks/Audio/usePauseGlobalAudio.ts +++ b/client/src/hooks/Audio/usePauseGlobalAudio.ts @@ -6,9 +6,9 @@ import store from '~/store'; function usePauseGlobalAudio(index = 0) { /* Global Audio Variables */ const setAudioRunId = useSetRecoilState(store.audioRunFamily(index)); + const setGlobalIsPlaying = useSetRecoilState(store.globalAudioPlayingFamily(index)); const setIsGlobalAudioFetching = useSetRecoilState(store.globalAudioFetchingFamily(index)); const [globalAudioURL, setGlobalAudioURL] = useRecoilState(store.globalAudioURLFamily(index)); - const setGlobalIsPlaying = useSetRecoilState(store.globalAudioPlayingFamily(index)); const pauseGlobalAudio = useCallback(() => { if (globalAudioURL) { diff --git a/client/src/hooks/SSE/useSSE.ts b/client/src/hooks/SSE/useSSE.ts index 50f88c891a..4b821ba403 100644 --- a/client/src/hooks/SSE/useSSE.ts +++ b/client/src/hooks/SSE/useSSE.ts @@ -282,6 +282,12 @@ export default function useSSE(submission: TSubmission | null, index = 0) { setShowStopButton(false); setCompleted((prev) => new Set(prev.add(submission?.initialResponse?.messageId))); + const currentMessages = getMessages(); + // Early return if messages are empty; i.e., the user navigated away + if (!currentMessages?.length) { + return setIsSubmitting(false); + } + // update the messages; if assistants endpoint, client doesn't receive responseMessage if (runMessages) { setMessages([...runMessages]); @@ -323,7 +329,15 @@ export default function useSSE(submission: TSubmission | null, index = 0) { setIsSubmitting(false); }, - [genTitle, queryClient, setMessages, setConversation, setIsSubmitting, setShowStopButton], + [ + genTitle, + queryClient, + getMessages, + setMessages, + setConversation, + setIsSubmitting, + setShowStopButton, + ], ); const errorHandler = useCallback( diff --git a/packages/data-provider/package.json b/packages/data-provider/package.json index 8f638a7585..d04a592a8c 100644 --- a/packages/data-provider/package.json +++ b/packages/data-provider/package.json @@ -1,6 +1,6 @@ { "name": "librechat-data-provider", - "version": "0.6.5", + "version": "0.6.6", "description": "data services for librechat apps", "main": "dist/index.js", "module": "dist/index.es.js", diff --git a/packages/data-provider/src/config.ts b/packages/data-provider/src/config.ts index bbcd073807..c842326c5a 100644 --- a/packages/data-provider/src/config.ts +++ b/packages/data-provider/src/config.ts @@ -198,6 +198,8 @@ export const endpointSchema = z.object({ addParams: z.record(z.any()).optional(), dropParams: z.array(z.string()).optional(), customOrder: z.number().optional(), + directEndpoint: z.boolean().optional(), + titleMessageRole: z.string().optional(), }); export type TEndpoint = z.infer; @@ -747,7 +749,7 @@ export enum Constants { /** Key for the app's version. */ VERSION = 'v0.7.2', /** Key for the Custom Config's version (librechat.yaml). */ - CONFIG_VERSION = '1.1.2', + CONFIG_VERSION = '1.1.3', /** Standard value for the first message's `parentMessageId` value, to indicate no parent exists. */ NO_PARENT = '00000000-0000-0000-0000-000000000000', /** Fixed, encoded domain length for Azure OpenAI Assistants Function name parsing. */