<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/9d5fbb95d8451b22ee026b6ba93bea273dd17b0f">https://github.com/macports/macports-ports/commit/9d5fbb95d8451b22ee026b6ba93bea273dd17b0f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 9d5fbb95d84 libsdl2: build fixes for older systems
</span>9d5fbb95d84 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 9d5fbb95d8451b22ee026b6ba93bea273dd17b0f
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Feb 5 14:42:20 2024 +1100

<span style='display:block; white-space:pre;color:#404040;'>    libsdl2: build fixes for older systems
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/69269
</span>---
 devel/libsdl2/Portfile                   |  3 ++
 devel/libsdl2/files/SDL_mfijoystick.diff | 73 +++++++++++++++++++++++++
 devel/libsdl2/files/vulkan_metal.h.diff  | 93 ++++++++++++++++++++++++++++++++
 3 files changed, 169 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libsdl2/Portfile b/devel/libsdl2/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 17a2ff72c18..03874049d48 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/libsdl2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libsdl2/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,6 +24,9 @@ distname        SDL2-${version}
</span> checksums       rmd160 eb2bab97460b4f9874e6853fb459db965d7ac1be \
                 sha256 36e2e41557e0fa4a1519315c0f5958a87ccb27e25c51776beb6f1239526447b0
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles      SDL_mfijoystick.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                vulkan_metal.h.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.args  --without-x \
                 --disable-jack \
                 --disable-esd \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libsdl2/files/SDL_mfijoystick.diff b/devel/libsdl2/files/SDL_mfijoystick.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..87513843419
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libsdl2/files/SDL_mfijoystick.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,73 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/joystick/iphoneos/SDL_mfijoystick.m b/src/joystick/iphoneos/SDL_mfijoystick.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5fac495b69bf..4e4844010c8b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/joystick/iphoneos/SDL_mfijoystick.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/joystick/iphoneos/SDL_mfijoystick.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -378,6 +378,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     NSLog(@"Product name: %@\n", controller.vendorName);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     NSLog(@"Product category: %@\n", controller.productCategory);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     NSLog(@"Elements available:\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         for (id key in controller.physicalInputProfile.buttons) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -390,6 +391,7 @@ static BOOL IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             NSLog(@"\tHat: %@\n", key);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     device->is_xbox = IsControllerXbox(controller);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1109,7 +1111,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         Uint8 hatstate = SDL_HAT_CENTERED;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         int i;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef DEBUG_CONTROLLER_STATE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(DEBUG_CONTROLLER_STATE) && defined(ENABLE_PHYSICAL_INPUT_PROFILE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (controller.physicalInputProfile) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 for (id key in controller.physicalInputProfile.buttons) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1136,6 +1138,7 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif /* DEBUG_CONTROLLER_STATE */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef ENABLE_PHYSICAL_INPUT_PROFILE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (@available(macOS 10.16, iOS 14.0, tvOS 14.0, *)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             NSDictionary<NSString *, GCControllerElement *> *elements = controller.physicalInputProfile.elements;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             NSDictionary<NSString *, GCControllerButtonInput *> *buttons = controller.physicalInputProfile.buttons;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1162,7 +1165,9 @@ static void IOS_MFIJoystickUpdate(SDL_Joystick *joystick)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 SDL_PrivateJoystickButton(joystick, button++, value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        } else if (controller.extendedGamepad) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        } else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (controller.extendedGamepad) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             SDL_bool isstack;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             GCExtendedGamepad *gamepad = controller.extendedGamepad;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/joystick/iphoneos/SDL_mfijoystick_c.h b/src/joystick/iphoneos/SDL_mfijoystick_c.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index bfb108bb1f02..84a4e71a3a52 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/joystick/iphoneos/SDL_mfijoystick_c.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/joystick/iphoneos/SDL_mfijoystick_c.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -26,7 +26,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "SDL_stdinc.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "../SDL_sysjoystick.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <CoreFoundation/CoreFoundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#import <CoreFoundation/CoreFoundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#import <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ @class GCController;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -59,8 +60,8 @@ typedef struct joystick_hwdata
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     SDL_bool is_backbone_one;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int is_siri_remote;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    NSArray *axes;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    NSArray *buttons;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    NSArray __unsafe_unretained *axes;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    NSArray __unsafe_unretained *buttons;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     SDL_bool has_dualshock_touchpad;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     SDL_bool has_xbox_paddles;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/libsdl2/files/vulkan_metal.h.diff b/devel/libsdl2/files/vulkan_metal.h.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..82d522a3cf8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/libsdl2/files/vulkan_metal.h.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,93 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/video/khronos/vulkan/vulkan_metal.h b/src/video/khronos/vulkan/vulkan_metal.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e6f7bf7a702c..badb45078add 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/video/khronos/vulkan/vulkan_metal.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/video/khronos/vulkan/vulkan_metal.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,6 +27,14 @@ extern "C" {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef void CAMetalLayer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SDL_UNSAFE_UNRETAINED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(__OBJC__) && defined(__has_feature)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if __has_feature(objc_arc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef SDL_UNSAFE_UNRETAINED
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define SDL_UNSAFE_UNRETAINED __unsafe_unretained
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define VK_EXT_METAL_SURFACE_SPEC_VERSION 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef VkFlags VkMetalSurfaceCreateFlagsEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -34,7 +42,7 @@ typedef struct VkMetalSurfaceCreateInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType                 sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*                     pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkMetalSurfaceCreateFlagsEXT    flags;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    const CAMetalLayer*             pLayer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const CAMetalLayer SDL_UNSAFE_UNRETAINED *pLayer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkMetalSurfaceCreateInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -113,27 +121,27 @@ typedef struct VkExportMetalObjectsInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkExportMetalDeviceInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType    sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*        pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLDevice_id       mtlDevice;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLDevice_id SDL_UNSAFE_UNRETAINED mtlDevice;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkExportMetalDeviceInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkExportMetalCommandQueueInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType       sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*           pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkQueue               queue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLCommandQueue_id    mtlCommandQueue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLCommandQueue_id SDL_UNSAFE_UNRETAINED mtlCommandQueue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkExportMetalCommandQueueInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkExportMetalBufferInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType    sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*        pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkDeviceMemory     memory;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLBuffer_id       mtlBuffer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLBuffer_id SDL_UNSAFE_UNRETAINED mtlBuffer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkExportMetalBufferInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkImportMetalBufferInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType    sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*        pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLBuffer_id       mtlBuffer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLBuffer_id SDL_UNSAFE_UNRETAINED mtlBuffer;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkImportMetalBufferInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkExportMetalTextureInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -143,14 +151,14 @@ typedef struct VkExportMetalTextureInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkImageView              imageView;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkBufferView             bufferView;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkImageAspectFlagBits    plane;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLTexture_id            mtlTexture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLTexture_id SDL_UNSAFE_UNRETAINED mtlTexture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkExportMetalTextureInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkImportMetalTextureInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType          sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*              pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkImageAspectFlagBits    plane;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLTexture_id            mtlTexture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLTexture_id SDL_UNSAFE_UNRETAINED mtlTexture;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkImportMetalTextureInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkExportMetalIOSurfaceInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -171,13 +179,13 @@ typedef struct VkExportMetalSharedEventInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*          pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkSemaphore          semaphore;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkEvent              event;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLSharedEvent_id    mtlSharedEvent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLSharedEvent_id SDL_UNSAFE_UNRETAINED mtlSharedEvent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkExportMetalSharedEventInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef struct VkImportMetalSharedEventInfoEXT {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     VkStructureType      sType;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const void*          pNext;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    MTLSharedEvent_id    mtlSharedEvent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    MTLSharedEvent_id SDL_UNSAFE_UNRETAINED mtlSharedEvent;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } VkImportMetalSharedEventInfoEXT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo);
</span></pre><pre style='margin:0'>

</pre>