From 2a058c6cbc3fb78b8ec42a0d342d01f1fc331f55 Mon Sep 17 00:00:00 2001 From: richardbarry Date: Mon, 18 Feb 2013 11:15:35 +0000 Subject: [PATCH] Commit demos that have been updated for testing purposes before they are updated once more to test new low power features. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1827 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h | 8 +- .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 | 1 + .../CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj | 600 ++++++++++++++++++ FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c | 22 + .../settings/RTOSDemo.dbgdt | 10 +- .../settings/RTOSDemo.dni | 5 +- .../settings/RTOSDemo.wsdt | 8 +- .../src/FreeRTOSConfig.h | 2 +- FreeRTOS/Demo/WIN32-MSVC/WIN32.suo | Bin 65024 -> 65024 bytes 9 files changed, 642 insertions(+), 14 deletions(-) create mode 100644 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h index 6ab7fe32f..1b57885a7 100644 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/FreeRTOSConfig.h @@ -92,7 +92,7 @@ #define configUSE_TRACE_FACILITY 1 #define configUSE_16_BIT_TICKS 0 #define configIDLE_SHOULD_YIELD 0 -#define configUSE_CO_ROUTINES 1 +#define configUSE_CO_ROUTINES 0 #define configUSE_MUTEXES 1 #define configUSE_RECURSIVE_MUTEXES 1 #define configCHECK_FOR_STACK_OVERFLOW 2 @@ -105,7 +105,7 @@ #define configQUEUE_REGISTRY_SIZE 10 /* Timer related defines. */ -#define configUSE_TIMERS 1 +#define configUSE_TIMERS 0 #define configTIMER_TASK_PRIORITY 2 #define configTIMER_QUEUE_LENGTH 20 #define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 ) @@ -137,5 +137,9 @@ See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */ version. */ #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 +#ifdef __ICCARM__ + void vAssertCalled( const char *pcFile, unsigned long ulLine ); + #define configASSERT( x ) if( x == 0 ) vAssertCalled( __FILE__, __LINE__ ); +#endif #endif /* FREERTOS_CONFIG_H */ diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 index cbc6fdb79..ebcc32fed 100644 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.Uv2 @@ -24,6 +24,7 @@ File 1,1,<..\Common\Minimal\QPeek.c> File 1,1,<.\IntQueueTimer.c> File 1,1,<..\Common\Minimal\IntQueue.c> File 1,1,<..\Common\Minimal\recmutex.c> +File 1,1,<..\Common\Minimal\QueueSet.c> File 2,1,<.\rit128x96x4.c> File 2,1,<.\osram128x64x4.c> File 2,4,<..\Common\drivers\LuminaryMicro\Keil\driverlib.lib> diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj new file mode 100644 index 000000000..d4ec7a4e7 --- /dev/null +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/RTOSDemo.uvproj @@ -0,0 +1,600 @@ + + + + 1.1 + +
### uVision Project, (C) Keil Software
+ + + + FreeRTOS_Demo + 0x4 + ARM-ADS + + + LM3S8962 + Luminary Micro + IRAM(0x20000000-0x2000FFFF) IROM(0-0x3FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") + + "STARTUP\Luminary\Startup.s" ("Luminary Startup Code") + UL2CM3(-UU0101L5E -O14 -S0 -C0 -N00("ARM Cortex-M3") -D00(1BA00477) -L00(4) -FO7 -FD20000000 -FC800 -FN1 -FF0LM3S_256 -FS00 -FL040000) + 4285 + LM3Sxxx.H + + + + + + + + + + + 0 + + + + Luminary\ + Luminary\ + + 0 + 0 + 0 + 0 + 1 + + .\rvmdk\ + RTOSDemo + 1 + 0 + 0 + 1 + 1 + .\rvmdk\ + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + + + 1 + 0 + fromelf --bin --output .\rvmdk\RTOSDemo.bin .\rvmdk\RTOSDemo.axf + + 0 + 0 + + 0 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + + + SARMCM3.DLL + + DLM.DLL + -pLM3S8962 + SARMCM3.DLL + + TLM.DLL + -pLM3S8962 + + + + 1 + 0 + 0 + 0 + 16 + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + 1 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + + 0 + 4 + + + + + + + + + + + + + + BIN\lmidk-agdi.dll + + + + + 1 + 0 + 0 + 0 + 1 + 4099 + + BIN\lmidk-agdi.dll + "" () + + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 1 + 0x0 + 0x40000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x40000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + --diag_suppress 191,550,513,167,177,144 + RVDS_ARMCM3_LM3S102, "PACK_STRUCT_END=","ALIGN_STRUCT_END=" + + .;.\..\Common\drivers\LuminaryMicro;..\..\Source\portable\RVDS\ARM_CM3;..\..\Source\include;..\Common\include;..\Common\ethernet\uIP\uip-1.0\uip;.\webserver + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + 0x00000000 + 0x20000000 + + + + --entry Reset_Handler + + + + + + + + Demo_Source + + + BlockQ.c + 1 + ..\Common\Minimal\BlockQ.c + + + blocktim.c + 1 + ..\Common\Minimal\blocktim.c + + + death.c + 1 + ..\Common\Minimal\death.c + + + integer.c + 1 + ..\Common\Minimal\integer.c + + + main.c + 1 + .\main.c + + + ParTest.c + 1 + .\ParTest\ParTest.c + + + PollQ.c + 1 + ..\Common\Minimal\PollQ.c + + + semtest.c + 1 + ..\Common\Minimal\semtest.c + + + startup_rvmdk.S + 2 + .\startup_rvmdk.S + + + timertest.c + 1 + .\timertest.c + + + FreeRTOSConfig.h + 5 + .\FreeRTOSConfig.h + + + GenQTest.c + 1 + ..\Common\Minimal\GenQTest.c + + + QPeek.c + 1 + ..\Common\Minimal\QPeek.c + + + IntQueueTimer.c + 1 + .\IntQueueTimer.c + + + IntQueue.c + 1 + ..\Common\Minimal\IntQueue.c + + + recmutex.c + 1 + ..\Common\Minimal\recmutex.c + + + QueueSet.c + 1 + ..\Common\Minimal\QueueSet.c + + + + + Libraries + + + rit128x96x4.c + 1 + .\rit128x96x4.c + + + osram128x64x4.c + 1 + .\osram128x64x4.c + + + driverlib.lib + 4 + ..\Common\drivers\LuminaryMicro\Keil\driverlib.lib + + + formike128x128x16.c + 1 + .\formike128x128x16.c + + + grlib.lib + 4 + ..\Common\drivers\LuminaryMicro\Keil\grlib.lib + + + + + RTOS_Source + + + tasks.c + 1 + ..\..\Source\tasks.c + + + list.c + 1 + ..\..\Source\list.c + + + queue.c + 1 + ..\..\Source\queue.c + + + port.c + 1 + ..\..\Source\portable\RVDS\ARM_CM3\port.c + + + heap_2.c + 1 + ..\..\Source\portable\MemMang\heap_2.c + + + + + uIP_Source + + + uIP_Task.c + 1 + .\webserver\uIP_Task.c + + + emac.c + 1 + .\webserver\emac.c + + + httpd.c + 1 + .\webserver\httpd.c + + + httpd-cgi.c + 1 + .\webserver\httpd-cgi.c + + + httpd-fs.c + 1 + .\webserver\httpd-fs.c + + + http-strings.c + 1 + .\webserver\http-strings.c + + + uip_arp.c + 1 + ..\Common\ethernet\uIP\uip-1.0\uip\uip_arp.c + + + psock.c + 1 + ..\Common\ethernet\uIP\uip-1.0\uip\psock.c + + + timer.c + 1 + ..\Common\ethernet\uIP\uip-1.0\uip\timer.c + + + uip.c + 1 + ..\Common\ethernet\uIP\uip-1.0\uip\uip.c + + + + + + + +
diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c index 0e952d1d9..e9e77a499 100644 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/main.c @@ -118,6 +118,7 @@ and the TCP/IP stack together cannot be accommodated with the 32K size limit. */ /* Standard includes. */ #include +#include /* Scheduler includes. */ #include "FreeRTOS.h" @@ -381,6 +382,8 @@ portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; xMessage.pcMessage = "ERROR IN Q SET"; } + configASSERT( strcmp( ( const char * ) xMessage.pcMessage, "PASS" ) == 0 ); + /* Send the message to the OLED gatekeeper for display. */ xHigherPriorityTaskWoken = pdFALSE; xQueueSendFromISR( xOLEDQueue, &xMessage, &xHigherPriorityTaskWoken ); @@ -475,3 +478,22 @@ void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTask for( ;; ); } +/*-----------------------------------------------------------*/ + +void vAssertCalled( const char *pcFile, unsigned long ulLine ) +{ +volatile unsigned long ulSetTo1InDebuggerToExit = 0; + + taskENTER_CRITICAL(); + { + while( ulSetTo1InDebuggerToExit == 0 ) + { + /* Nothing do do here. Set the loop variable to a non zero value in + the debugger to step out of this function to the point that caused + the assertion. */ + ( void ) pcFile; + ( void ) ulLine; + } + } + taskEXIT_CRITICAL(); +} diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt index 91aa09183..81fb875c7 100644 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dbgdt @@ -32,7 +32,7 @@ - + TabID-10465-12018 @@ -48,7 +48,7 @@ TabID-31294-227BreakpointsBreakpoints - 2 + 0 TabID-21213-12021 @@ -60,20 +60,20 @@ - 0 + 0 - TextEditor$WS_DIR$\main.c0000022510984109840TextEditor$WS_DIR$\..\..\Source\portable\IAR\ARM_CM3\portmacro.h00000000TextEditor$WS_DIR$\FreeRTOSConfig.h000005551825187TextEditor$WS_DIR$\..\..\Source\tasks.c00000000TextEditor$WS_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c00000000TextEditor$WS_DIR$\..\..\Source\list.c00000000TextEditor$WS_DIR$\webserver\uIP_Task.c00000000TextEditor$WS_DIR$\webserver\emac.c00000000TextEditor$WS_DIR$\startup_ewarm.c00000000TextEditor$WS_DIR$\..\Common\Minimal\QueueSet.c0000054920567205670100000010000001 + TextEditor$WS_DIR$\main.c00000457110051100500100000010000001 - iaridepm.enu1debuggergui.enu1-2-2740238-2-2240200142857203666142857755601-2-21981682-2-216842001002381203666142857203666 + iaridepm.enu1debuggergui.enu1-2-2740238-2-2240200142857203666142857755601-2-21981682-2-216842001002381203666142857203666 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni index 9874f0df2..b77749e9a 100644 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.dni @@ -28,7 +28,7 @@ ByteLimit=50 [LMIFTDIDriver] LMI_ResetMode=0x00000000 [DebugChecksum] -Checksum=-42454089 +Checksum=-1311150949 [Exceptions] StopOnUncaught=_ 0 StopOnThrow=_ 0 @@ -54,7 +54,8 @@ Exclusions= [Disassemble mode] mode=1 [Breakpoints] -Count=0 +Bp0=_ "STD_CODE" "{$PROJ_DIR$\main.c}.489.3" 1 0 0 0 "" 0 "" +Count=1 [Aliases] Count=0 SuppressDialog=0 diff --git a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt index 493a5571c..c5db75fb1 100644 --- a/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt +++ b/FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/settings/RTOSDemo.wsdt @@ -17,7 +17,7 @@ 4826882619100726867 - + TabID-18883-22024 @@ -29,20 +29,20 @@ - 0TabID-29040-7360Find in FilesFind-in-FilesTabID-19024-10413BuildBuildTabID-19202-19100Debug LogDebug-Log1 + 0TabID-29040-7360Find in FilesFind-in-FilesTabID-19024-10413BuildBuildTabID-19202-19100Debug LogDebug-Log1 - TextEditor$WS_DIR$\main.c0000022510984109840TextEditor$WS_DIR$\..\..\Source\portable\IAR\ARM_CM3\portmacro.h00000000TextEditor$WS_DIR$\FreeRTOSConfig.h000005551825187TextEditor$WS_DIR$\..\..\Source\tasks.c00000000TextEditor$WS_DIR$\..\..\Source\portable\IAR\ARM_CM3\port.c00000000TextEditor$WS_DIR$\..\..\Source\list.c00000000TextEditor$WS_DIR$\webserver\uIP_Task.c00000000TextEditor$WS_DIR$\webserver\emac.c00000000TextEditor$WS_DIR$\startup_ewarm.c00000000TextEditor$WS_DIR$\..\Common\Minimal\QueueSet.c0000054920567205670100000010000001 + TextEditor$WS_DIR$\main.c00000443110051100500100000010000001 - iaridepm.enu1-2-2719315-2-2200200119048203666188690734216-2-22191682-2-216842211002381225051119048203666 + iaridepm.enu1-2-2719315-2-2200200119048203666188690734216-2-22191682-2-216842211002381225051119048203666 diff --git a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h index 2b8a2a749..0aa9979e1 100644 --- a/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h +++ b/FreeRTOS/Demo/CORTEX_LPC1768_GCC_RedSuite/src/FreeRTOSConfig.h @@ -75,7 +75,7 @@ * executed from within the IDE! Once it has been executed, re-open or refresh * the Eclipse project and remove the #error line below. */ -//#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. +#error Ensure CreateProjectDirectoryStructure.bat has been executed before building. See comment immediately above. #include "LPC17xx.h" diff --git a/FreeRTOS/Demo/WIN32-MSVC/WIN32.suo b/FreeRTOS/Demo/WIN32-MSVC/WIN32.suo index 3a7a7394625471baeaf0808291c1c9f62a586e56..c99dcb1b22c3ec12d523e10e9ba485d6b1a53b23 100644 GIT binary patch delta 2244 zcmah~3s98T6~34KcLl`F0xO{5u_7uW!txkVs=P%b$eWZjs{!Jo5>_5rQmjT+L?wm+ zc0Y=c5?r>76I(kWTsz~Wps3h%9EOL@L_1nRVy&qf($ElVW6^s|$(ToMK^Ank0D#$(r!YE5o&k);*ju7`<~Oqn&vX9WG|Q z&+)ie;`Xs*7R}PxMi$3n=^e#ZvlIs%LsS$!X-rF0vO|_klvaGVP;mH%g+MDwIPI$u zcYM|Id1<7nX9h9nFPG%=>F79&-3!FxX_bgulFa$E*c)8WdAE4Bv|i44h`lTK$#{zR zAzU|~Cy{Ej`_}w7Q+3s~`dU4-)8(#dsqwlU`VWk@bqZ{qj=_lxC1w)5M1Eqmhgm|tB_HS@oDiveBH8KJT57fcso4Hw_;+aI}%PO@G@kVeJJZ=@1pv%dU0>( zmo8AhcLuid8onP(isNh*5@v=1F;T5TX0<TMSLk8f>pp@J2fA=a{bcTCkYq zv3RCqMpna0P#?Qg1lQc+uf0oYkD$dmnvBJeF9zt0YF>pUQ*Yx&q8i<`N<1*Dp=s2? zwKhc9YP((j%S$bq{^5b)y$X>~7s>~Ik*VvbT56e%j7S&3tpIW zeTCI@gL^)CUh{B8YqTmT(-aY%)}F8ow-da@iG~sm&FL&`zV9)Qk)L*CMvd*p`W6qo z`I#Rdrr_Q}@j4$=UC$wnV$!&U#JUV_KyTAZB=v5=df(HM%c@7>YA zA{sqS3fnOWMMwM4*JQ)hk0PKkt|!-)^COO&pZiG72mkHhcbR0m1d}ZvqqL;}ww6G< zc@bf`%E2{$7;91dhq~%`7B9dy^HKDj(m`eQLYCPJruNggWA?WURiL6>4fSXpp8my) z0=JiaIc~RYb2yug&pUpPl*2W|d7M?>d+LeHz*Ju37d*S28p zS21YsGQd2ghbcZ-1ozzHDD8@drMn4dE@xu6MKw=DmW~k`doR5~>Cz(WkP>~L>IQ5> zl4on|xxYn4p4zzT{`}_T_Syg$-J)8|oD3w3)=pmTK$M|D39VJ(0IBt7YtVB_fsny4 ziZdFePr^jlZ^9G{Qpn1y(T9@$pu|e1p)OKIkA~&5N>)oKwnJCPQi(IrQ_1#_%+W=N z*02Ir!ro`^(WD{H_aAhjC^b0IAB4{SP~6+8M3x8@!=g=6Z7csle|Oc3=0DVO|HNaO zlcM;nRR%BfdOYq@LNh3dtif2$>nM$Ss4n^qoV&!`9DppN!|lBlv**XT9XoXgPH@U#|UK`(xMK}JA(QAH$KpkOS$$vse?nC!eAH{ZZb3enuoEq%^tCE0w zyUhTC5g92$@2O<8l~Gx)P!k`H6Xow<%J3TRTKL3ju}BnD`n+u z0dpsN3?&`w_=lMDUV(vye!?^}%yDI*1_OFw} z?xM({Jz)$NnnNjpu>^q{!rc;TD!WP0iG%GMkdT)mwtU|ygXKvdX8zev#hT#AdiT@C se2=5=1bm{R?YY$7R=&JwOEmGDG3k?Qd7kRVj?iJRIlU9c=gqQz0a!^m?EnA( delta 2067 zcmaJ?eNdD49e;kw6ATnmh$-Z13;|z;4ob8X(G%oNYz0HmuyY!1KthobdGW!b^)N-G z5rINJ>aMnTyuh*-rUgODXu33fiKQ;3QnQe1~IiyrT1hw^n% zX^fTf!_mhW+s+>?JEmYc{P3z*6b z$bLw2Z_;2aWij8esZvzR$aMI8T#6jp6!J$I*Jb$U2a%Y_T8w6k3hek&Ox{z4^?v33 zJUyiR^#*jl-+rm^)i3zQEtw*&Bt-@}?2dgEho31p=s@b|Q?kug-k05{)MwfcS+lC_ z_U)G39ac-#{(>@Vmc2l#uCf=!71@zGmVi-<0TT~Y?tCX&^4H?;j) zZ`Z_-;6)Q$4}(dnh@?u%%le)pIRSpC%(Uf2pv0+bv*@_Td549ib=H(`8K~^s8hhzs znseJrEBt+WyRLvK9Hi~?M|Iy7&N^}4b^>3H1jFpo;r@rkXlzqq?>ozxfX^Jy;e+j& zl;bk6hIiRcv`N`8zoC*x6IN%N--TtQ7?)3`qoc*k8vHg*ts2&dwBa~!BNa*7i0;={ zQXThV=>cD{HY2L-6bf7WX;omdBZuxRC^&N*qo?cHSxRaN>W1`O?;d9;4ADd1Yl8OY z8r(l~k(FZX^d6sonziBZJ+M{lp&isHe3Ry+JPy*Enq43xThJaJK5sq_FTQb-9mSf# za(t8TtKU|VZ}CTKdrOCesm725;Td5c-TsVL31zt(ahHNcLD(qxAj_AY`zxcehux@lmzsYBjExCyvOeZ5lrQOFhF{X)Dz-7$fys zY%g}fRIes1+Thuhi1w}k6rHj5T(AU$Y^K;Ae=uMX6r7jV8Sj+;JAVDA1H z)b;+P=khfc$n4~(n3j*XFnwi6Ar$&fL~@w!%f&Tu4Wz40xZN8A^}uNuuZKRH@M3S9DD5&2LzA!_m7* zgpd^UQ7Z<2q#?yv60DuiSA)rqLJ_}2g{FI%e#SGMQL}hzLKU7IU4@Ssi(2~6t zPD?nvE`3A+^}38I`k&9YkHOfTh={y}dLI;a3r1m&@P9~$JIDKo-Ck?QO^5Nn`9`tR z$C#M?>ILyhGClWm{9A5-udkT?IyX=_LD#R%KS7$ffq(2)qq{TVe{z)Apz}`3;GK$r zIAtVGI>5~Q`qUDU7~`|4WL$nP9Rc4OG5+t4g;LGj4W~bPRNE?;9~H6#e*RhNZ)+Yw UD9`;}Mj&gT0HlTZzH5^I0E~|f4gdfE -- 2.39.5