# HG changeset patch
# User galaxyp
# Date 1752065762 0
# Node ID 4fb283cf23a517b13c0dea962adafdba0adb2918
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/iedb_netmhcpan commit 0ac7534c8d9f5bfea21b998286f822784e62da08
diff -r 000000000000 -r 4fb283cf23a5 netmhciipan.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netmhciipan.xml	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,104 @@
+
+    MHCii Binding prediction
+    
+        netmhciipan_alleles_macros.xml
+        shared_macros.xml
+    
+    
+        
+    
+
+    
+    
+        
+    
+    
+        
+            
+            
+        
+        
+        
+        
+    
+    
+        
+    
+    
+        
+        
+            
+            
+            
+            
+            
+            
+            
+            
+            
+        
+        
+        
+            
+            
+            
+            
+            
+            
+            
+            
+            
+        
+        
+        
+            
+            
+            
+            
+            
+            
+            
+            
+            
+        
+    
+    
+    
+        
+    
+
diff -r 000000000000 -r 4fb283cf23a5 netmhciipan_alleles_macros.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netmhciipan_alleles_macros.xml	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,773 @@
+
+    
+        
+            
+                
+                
+                
+                
+                
+                
+                
+                
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                
+            
+        
+    
+
diff -r 000000000000 -r 4fb283cf23a5 netmhcpan.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netmhcpan.xml	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,88 @@
+
+    MHC Binding prediction
+    
+        netmhcpan_alleles_macros.xml
+        shared_macros.xml
+    
+    
+        
+    
+
+    
+    
+        
+    
+    
+        
+            
+            
+        
+        
+    
+    
+        
+    
+    
+        
+        
+            
+            
+            
+            
+            
+            
+        
+        
+        
+            
+            
+            
+            
+            
+            
+        
+        
+        
+            
+            
+            
+            
+            
+            
+            
+        
+    
+    
+    
+        
+    
+
diff -r 000000000000 -r 4fb283cf23a5 netmhcpan_alleles_macros.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/netmhcpan_alleles_macros.xml	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,11490 @@
+
+    
+        
+            
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+                
+            
+            
+                
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+                       
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                
+            
+            
+                
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+            
+                
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                    
+                
+            
+        
+    
+
diff -r 000000000000 -r 4fb283cf23a5 nextgen_iedb_api.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nextgen_iedb_api.py	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,372 @@
+#!/usr/bin/env python
+
+"""
+This file was adapted from the iedb_apy.py file of the iedb_api tool.
+It uses the newer "Next-Generation" IEDB API, and is constrained to
+the mhci and mhcii tool groups.
+"""
+
+import argparse
+import json
+import os.path
+import re
+import sys
+import time
+import urllib.request
+from urllib.error import HTTPError
+
+# IEDB tool groups and predictor methods
+mhci_methods = ['netmhcpan_el', 'netmhcpan_ba']
+mhcii_methods = ['netmhciipan_el', 'netmhciipan_ba']
+tool_group_methods = {'mhci': mhci_methods,
+                      'mhcii': mhcii_methods}
+all_methods = set(mhci_methods + mhcii_methods)
+
+# Values for polling backoff
+max_backoff_count = 25
+init_poll_sleep = 10
+poll_retries = 50
+requests_before_backoff = 5
+
+
+def parse_alleles(allelefile):
+    """Returns a dictionary with alleles from input file."""
+    alleles = []
+    with open(allelefile, 'r') as fh:
+        for line in fh:
+            allele = line.strip()
+            alleles.append(allele)
+    return alleles
+
+
+def parse_sequence_column(sequence_file_lines, col):
+    """Sequences may come from a specific column in a TSV file.
+
+    Parse these sequences out while checking each against a regex for validity.
+    """
+    aapat = '^[ABCDEFGHIKLMNPQRSTVWY]+$'
+    sequences = []
+    for i, line in enumerate(sequence_file_lines):
+        fields = line.split('\t')
+        if len(fields) > col:
+            seq = re.sub('[_*]', '', fields[col].strip())
+            if not re.match(aapat, seq):
+                warn_err(f'Line {i}, Not a peptide: {seq}')
+            else:
+                sequences.append(seq)
+        else:
+            warn_err('Invalid value for -c/--column')
+            break
+    return sequences
+
+
+def iedb_request(req, timeout, retries, error_retry_sleep, response_fn=None, req_data=None):
+    """Handles HTTP request and exceptions. Allows for a callback to parse IEDB response."""
+    for retry in range(1, retries + 1):
+        response = None
+        try:
+            response = urllib.request.urlopen(req, req_data, timeout=timeout)
+        except HTTPError as e:
+            warn_err(f'{retry} of {retries} Error connecting to IEDB server. \
+                     HTTP status code: {e.code}')
+            time.sleep(error_retry_sleep)
+        except Exception as e:
+            warn_err(f'Error getting results from IEDB server: {e}')
+            return None
+
+        if response and response.getcode() == 200:
+            # If no callback, return results
+            if not response_fn:
+                response_string = response.read().decode('utf-8')
+                response_json = json.loads(response_string)
+                return response_json
+
+            # Retry if response_fn callback deems necessary, i.e. results from job are not ready.
+            response_json = response_fn(response, retry)
+            if response_json:
+                return response_json
+        else:
+            code = response.getcode() if response else 1
+            warn_err(f'Error connecting to IEDB server. HTTP status code: {code}')
+
+    warn_err(f'No successful response from IEDB in {retries} retries')
+    return None
+
+
+def pipeline_request(url, tool_group, sequence_text, alleles, length_range,
+                     methods, peptide_shift, timeout=300, retries=3, error_retry_sleep=300):
+    """Submits job to IEDB pipeline and polls API until results are ready.
+
+    Returns response JSON from IEDB.
+    """
+
+    # Set up input parameters for IEDB NetMHCPan or NetMHCIIPan job
+    input_parameters = {
+        'alleles': alleles,
+        'peptide_length_range': length_range,
+        'predictors': [{'type': 'binding', 'method': m} for m in methods],
+        'peptide_shift': peptide_shift
+    }
+
+    if peptide_shift:
+        input_parameters['peptide_shift'] = peptide_shift
+
+    stage = {
+        'stage_number': 1,
+        'tool_group': tool_group,
+        'input_sequence_text': sequence_text,
+        'input_parameters': input_parameters
+    }
+
+    params = {
+        'pipeline_id': "",
+        'run_stage_range': [1, 1],
+        'stages': [stage]
+    }
+
+    req = urllib.request.Request(url, method='POST')
+    req_data = json.dumps(params).encode('utf-8')
+    req.add_header('Content-Type', 'application/json; charset=utf-8')
+    req.add_header('Content-Length', len(req_data))
+
+    # Make an initial request to submit job
+    response_json = iedb_request(req, timeout, retries, error_retry_sleep, req_data=req_data)
+    if not response_json:
+        warn_err('Initial request failed.')
+        return None
+
+    # Check response from job submission
+    warnings = response_json.get('warnings')
+    if warnings and len(warnings) > 0:
+        invalid_alleles = False
+        for warning in warnings:
+            if 'cannot predict binding for allele' in warning:
+                warn_err(f"Error: Bad allelle input. {warning}")
+                invalid_alleles = True
+        if invalid_alleles:
+            return None
+
+        warn_err(f'Warnings from IEDB: {warnings}')
+
+    errors = response_json.get('errors')
+    if errors:
+        warn_err(f'Errors from IEDB: {errors}')
+        return None
+
+    results_uri = response_json.get('results_uri')
+    if not results_uri:
+        warn_err('No results URI provided from IEDB.')
+        return None
+
+    # Callback function to rate-limit poll requests
+    def poll_response_fn(response, retry):
+        response_string = response.read().decode('utf-8')
+        response_json = json.loads(response_string)
+        if response_json['status'] != 'done':
+            if retry == poll_retries:
+                warn_err('Job not finished in maximum allowed time.')
+            backoff_count = min(retry, max_backoff_count)
+
+            # Double sleep every requests_before_backoff requests
+            sleep_duration = init_poll_sleep * 2 ** (backoff_count // requests_before_backoff)
+            time.sleep(sleep_duration)
+            return None
+        return response_json
+
+    # Submit polling for results
+    response_json = iedb_request(results_uri, timeout, poll_retries,
+                                 error_retry_sleep, response_fn=poll_response_fn)
+    if not response_json:
+        warn_err('Retrieving results failed.')
+    return response_json
+
+
+def warn_err(msg, exit_code=None):
+    sys.stderr.write(f"{msg}\n")
+    sys.stderr.flush()
+    if exit_code:
+        sys.exit(exit_code)
+
+
+def add_reversed_sequences(file_lines, file_format):
+    """Adds a reversed sequence after each input sequence.
+
+    Takes a plain list of sequences, or FASTA file. Each reversed FASTA sequence has
+    the same header prefixed with 'reversed_'.
+    """
+    sequences_with_reversed = []
+    if file_format == 'fasta':
+        i = 0
+        while i < len(file_lines):
+
+            # Validate header from next sequence
+            seq_header = file_lines[i]
+            if seq_header[0] != '>':
+                print('Invalid FASTA. Exiting.', file=sys.stderr)
+                sys.exit(1)
+
+            # Aggregate sequence into a single line
+            j = i + 1
+            seq = ''
+            while j < len(file_lines):
+                next_line = file_lines[j]
+                if next_line[0] == '>':
+                    break
+                seq = seq + file_lines[j]
+                j += 1
+
+            # Add non-reversed sequence
+            sequences_with_reversed.append(seq_header)
+            sequences_with_reversed.append(seq)
+
+            # Add reversed header and sequence
+            rev_header = seq_header.replace('>', '>reversed_')
+            sequences_with_reversed.append(rev_header)
+
+            rev_seq = seq[::-1]
+            sequences_with_reversed.append(rev_seq)
+
+            # Advance index to what should be the next sequence header
+            i = j
+
+    # If not FASTA, should be a simple list of peptides to reverse sequentially
+    else:
+        for seq in file_lines:
+
+            # Reverse seq
+            rev_seq = f'{seq[::-1]}'
+
+            # Add original and reversed sequences
+            sequences_with_reversed.append(seq)
+            sequences_with_reversed.append(rev_seq)
+
+    return sequences_with_reversed
+
+
+def __main__():
+    # Parse Command Line
+    parser = argparse.ArgumentParser()
+    parser.add_argument('-T', '--tool-group',
+                        dest='tool_group',
+                        default='mhci',
+                        choices=tool_group_methods.keys(),
+                        help='IEDB API Tool Group')
+    parser.add_argument('-m', '--method',
+                        action="append",
+                        required=True,
+                        choices=all_methods,
+                        help='prediction method')
+    parser.add_argument('-A', '--allelefile',
+                        required=True,
+                        help='File of HLA alleles')
+    parser.add_argument('-l', '--lengthrange',
+                        help='length range for which to make predictions for alleles')
+    parser.add_argument('-P', '--peptide_shift',
+                        type=int,
+                        default=None,
+                        help='Peptide Shift')
+    parser.add_argument('-i', '--input',
+                        required=True,
+                        help='Input file for peptide sequences '
+                             + '(fasta or tabular)')
+    parser.add_argument('-c', '--column',
+                        default=None,
+                        help='Zero-indexed peptide column in a tabular input file')
+    parser.add_argument('-o', '--output',
+                        required=True,
+                        help='Output file for query results')
+    parser.add_argument('-t', '--timeout',
+                        type=int,
+                        default=600,
+                        help='Seconds to wait for server response')
+    parser.add_argument('-r', '--retries',
+                        type=int,
+                        default=5,
+                        help='Number of times to retry failed server query')
+    parser.add_argument('-S', '--sleep',
+                        type=int,
+                        default=300,
+                        help='Seconds to wait between failed server query retries')
+    parser.add_argument('-R', '--add-reversed',
+                        dest='add_reversed',
+                        action='store_true',
+                        help='Input has every other sequence reversed. Identify in output.')
+    args = parser.parse_args()
+
+    allele_string = ','.join(parse_alleles(args.allelefile))
+
+    length_range = [int(i) for i in args.lengthrange.split(',')]
+
+    pipeline_url = 'https://api-nextgen-tools.iedb.org/api/v1/pipeline'
+
+    # If sequences submitted as a file, parse out sequences.
+    try:
+        with open(args.input) as inf:
+            sequence_file_contents = inf.read()
+    except Exception as e:
+        warn_err(f'Unable to open input file: {e}', exit_code=1)
+
+    sequence_file_lines = sequence_file_contents.splitlines()
+
+    # Pick out sequences if input file has multiple columns,
+    # otherwise submit list of sequences as-is.
+    if not args.column:
+        # IEDB may take FASTA files directly, so input contents as-is
+        if args.add_reversed:
+            sequence_text = '\n'.join(add_reversed_sequences(sequence_file_lines, 'fasta'))
+        else:
+            sequence_text = sequence_file_contents
+    else:
+        sequences = parse_sequence_column(sequence_file_lines, int(args.column))
+        if args.add_reversed:
+            sequence_text = '\n'.join(add_reversed_sequences(sequences, 'tsv'))
+        else:
+            sequence_text = '\n'.join(sequences)
+
+    if len(sequence_text) == 0:
+        warn_err('Error parsing sequences', exit_code=1)
+
+    # Submit job and return results
+    results = pipeline_request(pipeline_url, args.tool_group, sequence_text,
+                               allele_string, length_range, args.method,
+                               peptide_shift=args.peptide_shift, timeout=args.timeout,
+                               retries=args.retries, error_retry_sleep=args.sleep)
+    if not results:
+        warn_err('Job failed. Exiting.', exit_code=1)
+
+    try:
+        peptide_table = [t for t in results['data']['results'] if t['type'] == 'peptide_table'][0]
+        peptide_table_data = peptide_table['table_data']
+        peptide_table_columns = peptide_table['table_columns']
+
+        # If we reversed peptides prior to IEDB input,
+        # find column index of sequence number so we can identify which come from reversed input.
+        if args.add_reversed:
+            for i, column in enumerate(peptide_table_columns):
+                if column['display_name'] == 'seq #':
+                    seq_num_index = i
+                    break
+    except (KeyError, IndexError) as e:
+        warn_err(f'Error parsing IEDB results: {e}', exit_code=1)
+
+    output_path = os.path.abspath(args.output)
+    with open(output_path, 'w') as output_file:
+        # Write column names
+        display_names = '\t'.join([c['display_name'] for c in peptide_table_columns] + ['reversed'])
+        print(display_names, file=output_file)
+
+        # Write data
+        for values in peptide_table_data:
+            if args.add_reversed:
+                seq_number = values[seq_num_index]
+                # Every original input sequence is followed by its reversed sequence,
+                # so we know even sequence numbers are reversed.
+                reversed_val = str(seq_number % 2 == 0).lower()
+            else:
+                reversed_val = 'false'
+            values = '\t'.join([str(v) for v in values] + [reversed_val])
+            print(values, file=output_file)
+
+
+if __name__ == "__main__":
+    __main__()
diff -r 000000000000 -r 4fb283cf23a5 shared_macros.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/shared_macros.xml	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,70 @@
+
+    
+        python
+    
+    
+        
+        
+    
+    
+        
+           
+               
+               
+           
+           
+               
+                   The dataset should have one allele per line. The allele may be followed by an optional comma-separated list of peptide lengths, e.g.: @HLALEN_EXAMPLES@
+               
+           
+           
+               
+                   Enter alleles separated by white space: @HLA_EXAMPLES@  (The peptide lengths may follow each allele: @HLALEN_EXAMPLES@)
+               
+               
+           
+        
+        
+        
+        
+           
+               
+               
+               
+           
+           
+               
+           
+           
+               
+               
+           
+           
+               
+           
+        
+    
+    
+       10.1093/nar/gku938
+       10.1093/nar/gkaa379
+    
+
diff -r 000000000000 -r 4fb283cf23a5 test-data/netmhciipan_alleles.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/netmhciipan_alleles.txt	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,2 @@
+HLA-DQA1*03:01/DQB1*06:02
+HLA-DQA1*03:01/DQB1*06:04
diff -r 000000000000 -r 4fb283cf23a5 test-data/netmhcpan_alleles.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/netmhcpan_alleles.txt	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,2 @@
+HLA-A*01:01
+HLA-A*03:01
diff -r 000000000000 -r 4fb283cf23a5 test-data/outputs/netmhciipan_output_1.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/outputs/netmhciipan_output_1.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,25 @@
+seq #	peptide	start	end	peptide length	allele	peptide index	median binding percentile	netmhciipan_ba core	netmhciipan_ba IC50	netmhciipan_ba percentile	netmhciipan_el core	netmhciipan_el score	netmhciipan_el percentile	reversed
+1	SLYNTVATLYCVH	1	13	13	HLA-DQA1*03:01/DQB1*06:02	1	18.5	YNTVATLYC	8082.94	13.0	YNTVATLYC	0.001374	24.0	false
+1	SLYNTVATLYCVH	1	13	13	HLA-DQA1*03:01/DQB1*06:04	1	32.0	YNTVATLYC	7720.59	26.0	YNTVATLYC	0.004061	38.0	false
+1	SLYNTVATLYCVHQ	1	14	14	HLA-DQA1*03:01/DQB1*06:02	3	21.0	YNTVATLYC	6032.08	16.0	YNTVATLYC	0.001854	26.0	false
+1	SLYNTVATLYCVHQ	1	14	14	HLA-DQA1*03:01/DQB1*06:04	3	34.0	YNTVATLYC	6352.6	32.0	YNTVATLYC	0.005576	36.0	false
+1	SLYNTVATLYCVHQR	1	15	15	HLA-DQA1*03:01/DQB1*06:02	4	19.5	YNTVATLYC	3830.59	14.0	YNTVATLYC	0.002354	25.0	false
+1	SLYNTVATLYCVHQR	1	15	15	HLA-DQA1*03:01/DQB1*06:04	4	31.5	VATLYCVHQ	4927.74	32.0	VATLYCVHQ	0.007091	31.0	false
+1	SLYNTVATLYCVHQRI	1	16	16	HLA-DQA1*03:01/DQB1*06:02	5	25.5	YNTVATLYC	3666.24	17.0	YNTVATLYC	0.00171	34.0	false
+1	SLYNTVATLYCVHQRI	1	16	16	HLA-DQA1*03:01/DQB1*06:04	5	44.5	VATLYCVHQ	4943.12	45.0	VATLYCVHQ	0.004566	44.0	false
+1	SLYNTVATLYCVHQRID	1	17	17	HLA-DQA1*03:01/DQB1*06:02	6	22.5	VATLYCVHQ	4336.07	20.0	VATLYCVHQ	0.001963	25.0	false
+1	SLYNTVATLYCVHQRID	1	17	17	HLA-DQA1*03:01/DQB1*06:04	6	39.0	VATLYCVHQ	5360.51	44.0	VATLYCVHQ	0.005333	34.0	false
+1	VATLYCVHQRIDV	6	18	13	HLA-DQA1*03:01/DQB1*06:02	2	72.0	LYCVHQRID	14712.63	60.0	LYCVHQRID	0.000202	84.0	false
+1	VATLYCVHQRIDV	6	18	13	HLA-DQA1*03:01/DQB1*06:04	2	65.5	LYCVHQRID	11515.73	59.0	LYCVHQRID	0.001467	72.0	false
+2	HVCYLTAVTNYLS	6	18	13	HLA-DQA1*03:01/DQB1*06:02	8	15.0	YLTAVTNYL	7853.97	12.0	YLTAVTNYL	0.001703	18.0	true
+2	HVCYLTAVTNYLS	6	18	13	HLA-DQA1*03:01/DQB1*06:04	8	11.15	YLTAVTNYL	5688.82	9.3	YLTAVTNYL	0.010944	13.0	true
+2	VDIRQHVCYLTAV	1	13	13	HLA-DQA1*03:01/DQB1*06:02	7	44.0	IRQHVCYLT	10896.32	32.0	IRQHVCYLT	0.000492	56.0	true
+2	VDIRQHVCYLTAV	1	13	13	HLA-DQA1*03:01/DQB1*06:04	7	56.0	IRQHVCYLT	10651.18	52.0	IRQHVCYLT	0.002092	60.0	true
+2	VDIRQHVCYLTAVT	1	14	14	HLA-DQA1*03:01/DQB1*06:02	9	45.5	IRQHVCYLT	8659.78	40.0	IRQHVCYLT	0.000878	51.0	true
+2	VDIRQHVCYLTAVT	1	14	14	HLA-DQA1*03:01/DQB1*06:04	9	59.0	QHVCYLTAV	9572.05	64.0	QHVCYLTAV	0.003219	54.0	true
+2	VDIRQHVCYLTAVTN	1	15	15	HLA-DQA1*03:01/DQB1*06:02	10	48.5	IRQHVCYLT	5717.95	35.0	IRQHVCYLT	0.000782	62.0	true
+2	VDIRQHVCYLTAVTN	1	15	15	HLA-DQA1*03:01/DQB1*06:04	10	59.0	QHVCYLTAV	6906.02	57.0	QHVCYLTAV	0.00294	61.0	true
+2	VDIRQHVCYLTAVTNY	1	16	16	HLA-DQA1*03:01/DQB1*06:02	11	53.5	IRQHVCYLT	5105.82	35.0	IRQHVCYLT	0.000575	72.0	true
+2	VDIRQHVCYLTAVTNY	1	16	16	HLA-DQA1*03:01/DQB1*06:04	11	59.5	QHVCYLTAV	5676.77	54.0	QHVCYLTAV	0.002639	65.0	true
+2	VDIRQHVCYLTAVTNYL	1	17	17	HLA-DQA1*03:01/DQB1*06:02	12	49.5	IRQHVCYLT	5050.71	29.0	IRQHVCYLT	0.000575	70.0	true
+2	VDIRQHVCYLTAVTNYL	1	17	17	HLA-DQA1*03:01/DQB1*06:04	12	43.5	YLTAVTNYL	4691.63	34.0	YLTAVTNYL	0.003269	53.0	true
diff -r 000000000000 -r 4fb283cf23a5 test-data/outputs/netmhciipan_output_2.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/outputs/netmhciipan_output_2.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,45 @@
+seq #	peptide	start	end	peptide length	allele	peptide index	median binding percentile	netmhciipan_el core	netmhciipan_el score	netmhciipan_el percentile	reversed
+1	GHAHKVPRRLLKA	1	13	13	HLA-DQA1*03:01/DQB1*06:02	1	90.0	HAHKVPRRL	0.000154	90.0	false
+1	GHAHKVPRRLLKA	1	13	13	HLA-DQA1*03:01/DQB1*06:04	1	92.0	AHKVPRRLL	0.000616	92.0	false
+1	GHAHKVPRRLLKAA	1	14	14	HLA-DQA1*03:01/DQB1*06:02	2	91.0	KVPRRLLKA	0.000214	91.0	false
+1	GHAHKVPRRLLKAA	1	14	14	HLA-DQA1*03:01/DQB1*06:04	2	97.0	KVPRRLLKA	0.000538	97.0	false
+1	GHAHKVPRRLLKAAR	1	15	15	HLA-DQA1*03:01/DQB1*06:02	3	90.0	KVPRRLLKA	0.000294	90.0	false
+1	GHAHKVPRRLLKAAR	1	15	15	HLA-DQA1*03:01/DQB1*06:04	3	98.0	KVPRRLLKA	0.000465	98.0	false
+2	RAAKLLRRPVKHA	1	13	13	HLA-DQA1*03:01/DQB1*06:02	4	96.0	LLRRPVKHA	0.0001	96.0	true
+2	RAAKLLRRPVKHA	1	13	13	HLA-DQA1*03:01/DQB1*06:04	4	96.0	AAKLLRRPV	0.00044	96.0	true
+2	RAAKLLRRPVKHAH	1	14	14	HLA-DQA1*03:01/DQB1*06:02	5	93.0	LLRRPVKHA	0.000194	93.0	true
+2	RAAKLLRRPVKHAH	1	14	14	HLA-DQA1*03:01/DQB1*06:04	5	97.0	LLRRPVKHA	0.000513	97.0	true
+2	RAAKLLRRPVKHAHG	1	15	15	HLA-DQA1*03:01/DQB1*06:02	6	88.0	KLLRRPVKH	0.000321	88.0	true
+2	RAAKLLRRPVKHAHG	1	15	15	HLA-DQA1*03:01/DQB1*06:04	6	98.0	LLRRPVKHA	0.000466	98.0	true
+3	ASADADGSGSGSG	6	18	13	HLA-DQA1*03:01/DQB1*06:02	8	66.0	ADGSGSGSG	0.000379	66.0	false
+3	ASADADGSGSGSG	6	18	13	HLA-DQA1*03:01/DQB1*06:04	8	87.0	ADADGSGSG	0.000808	87.0	false
+3	ASADADGSGSGSGS	6	19	14	HLA-DQA1*03:01/DQB1*06:02	10	69.0	ADGSGSGSG	0.000512	69.0	false
+3	ASADADGSGSGSGS	6	19	14	HLA-DQA1*03:01/DQB1*06:04	10	93.0	ADADGSGSG	0.000781	93.0	false
+3	ASADADGSGSGSGSG	6	20	15	HLA-DQA1*03:01/DQB1*06:02	12	76.0	ADGSGSGSG	0.00052	76.0	false
+3	ASADADGSGSGSGSG	6	20	15	HLA-DQA1*03:01/DQB1*06:04	12	94.0	ADGSGSGSG	0.000759	94.0	false
+3	LKAADASADADGS	1	13	13	HLA-DQA1*03:01/DQB1*06:02	7	18.0	AADASADAD	0.001712	18.0	false
+3	LKAADASADADGS	1	13	13	HLA-DQA1*03:01/DQB1*06:04	7	15.0	AADASADAD	0.009489	15.0	false
+3	LKAADASADADGSG	1	14	14	HLA-DQA1*03:01/DQB1*06:02	9	6.0	DASADADGS	0.005256	6.0	false
+3	LKAADASADADGSG	1	14	14	HLA-DQA1*03:01/DQB1*06:04	9	13.0	AADASADAD	0.012678	13.0	false
+3	LKAADASADADGSGS	1	15	15	HLA-DQA1*03:01/DQB1*06:02	11	6.7	DASADADGS	0.006061	6.7	false
+3	LKAADASADADGSGS	1	15	15	HLA-DQA1*03:01/DQB1*06:04	11	23.0	DASADADGS	0.009114	23.0	false
+3	LKAADASADADGSGSG	1	16	16	HLA-DQA1*03:01/DQB1*06:02	13	6.2	DASADADGS	0.005907	6.2	false
+3	LKAADASADADGSGSG	1	16	16	HLA-DQA1*03:01/DQB1*06:04	13	21.0	DASADADGS	0.009327	21.0	false
+3	LKAADASADADGSGSGS	1	17	17	HLA-DQA1*03:01/DQB1*06:02	14	14.0	DASADADGS	0.003124	14.0	false
+3	LKAADASADADGSGSGS	1	17	17	HLA-DQA1*03:01/DQB1*06:04	14	30.0	DASADADGS	0.006008	30.0	false
+4	GSGSGSGSGDADA	1	13	13	HLA-DQA1*03:01/DQB1*06:02	15	67.0	GSGSGSGDA	0.000363	67.0	true
+4	GSGSGSGSGDADA	1	13	13	HLA-DQA1*03:01/DQB1*06:04	15	57.0	GSGSGDADA	0.00229	57.0	true
+4	GSGSGSGSGDADAS	1	14	14	HLA-DQA1*03:01/DQB1*06:02	17	63.0	GSGSGDADA	0.000608	63.0	true
+4	GSGSGSGSGDADAS	1	14	14	HLA-DQA1*03:01/DQB1*06:04	17	57.0	GSGSGDADA	0.00298	57.0	true
+4	GSGSGSGSGDADASA	1	15	15	HLA-DQA1*03:01/DQB1*06:02	19	38.0	SGSGDADAS	0.001559	38.0	true
+4	GSGSGSGSGDADASA	1	15	15	HLA-DQA1*03:01/DQB1*06:04	19	49.0	SGSGDADAS	0.004142	49.0	true
+4	GSGSGSGSGDADASAD	1	16	16	HLA-DQA1*03:01/DQB1*06:02	21	24.0	SGSGDADAS	0.00233	24.0	true
+4	GSGSGSGSGDADASAD	1	16	16	HLA-DQA1*03:01/DQB1*06:04	21	39.0	SGSGDADAS	0.005232	39.0	true
+4	GSGSGSGSGDADASADA	1	17	17	HLA-DQA1*03:01/DQB1*06:02	22	23.0	SGSGDADAS	0.00208	23.0	true
+4	GSGSGSGSGDADASADA	1	17	17	HLA-DQA1*03:01/DQB1*06:04	22	39.0	SGSGDADAS	0.004697	39.0	true
+4	SGSGDADASADAA	6	18	13	HLA-DQA1*03:01/DQB1*06:02	16	36.0	DADASADAA	0.000905	36.0	true
+4	SGSGDADASADAA	6	18	13	HLA-DQA1*03:01/DQB1*06:04	16	31.0	GDADASADA	0.005035	31.0	true
+4	SGSGDADASADAAK	6	19	14	HLA-DQA1*03:01/DQB1*06:02	18	13.0	DADASADAA	0.003314	13.0	true
+4	SGSGDADASADAAK	6	19	14	HLA-DQA1*03:01/DQB1*06:04	18	22.0	DADASADAA	0.008585	22.0	true
+4	SGSGDADASADAAKL	6	20	15	HLA-DQA1*03:01/DQB1*06:02	20	17.0	DADASADAA	0.003271	17.0	true
+4	SGSGDADASADAAKL	6	20	15	HLA-DQA1*03:01/DQB1*06:04	20	24.0	DASADAAKL	0.008697	24.0	true
diff -r 000000000000 -r 4fb283cf23a5 test-data/outputs/netmhciipan_output_3.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/outputs/netmhciipan_output_3.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,41 @@
+seq #	peptide	start	end	peptide length	allele	peptide index	median binding percentile	netmhciipan_el core	netmhciipan_el score	netmhciipan_el percentile	reversed
+1	GHAHKVPRRLLKA	1	13	13	HLA-DQA1*03:01/DQB1*06:02	1	90.0	HAHKVPRRL	0.000154	90.0	false
+1	GHAHKVPRRLLKA	1	13	13	HLA-DQA1*03:01/DQB1*06:04	1	92.0	AHKVPRRLL	0.000616	92.0	false
+1	GHAHKVPRRLLKAA	1	14	14	HLA-DQA1*03:01/DQB1*06:02	2	91.0	KVPRRLLKA	0.000214	91.0	false
+1	GHAHKVPRRLLKAA	1	14	14	HLA-DQA1*03:01/DQB1*06:04	2	97.0	KVPRRLLKA	0.000538	97.0	false
+1	GHAHKVPRRLLKAAR	1	15	15	HLA-DQA1*03:01/DQB1*06:02	3	90.0	KVPRRLLKA	0.000294	90.0	false
+1	GHAHKVPRRLLKAAR	1	15	15	HLA-DQA1*03:01/DQB1*06:04	3	98.0	KVPRRLLKA	0.000465	98.0	false
+2	RAAKLLRRPVKHA	1	13	13	HLA-DQA1*03:01/DQB1*06:02	4	96.0	LLRRPVKHA	0.0001	96.0	true
+2	RAAKLLRRPVKHA	1	13	13	HLA-DQA1*03:01/DQB1*06:04	4	96.0	AAKLLRRPV	0.00044	96.0	true
+2	RAAKLLRRPVKHAH	1	14	14	HLA-DQA1*03:01/DQB1*06:02	5	93.0	LLRRPVKHA	0.000194	93.0	true
+2	RAAKLLRRPVKHAH	1	14	14	HLA-DQA1*03:01/DQB1*06:04	5	97.0	LLRRPVKHA	0.000513	97.0	true
+2	RAAKLLRRPVKHAHG	1	15	15	HLA-DQA1*03:01/DQB1*06:02	6	88.0	KLLRRPVKH	0.000321	88.0	true
+2	RAAKLLRRPVKHAHG	1	15	15	HLA-DQA1*03:01/DQB1*06:04	6	98.0	LLRRPVKHA	0.000466	98.0	true
+3	LKAADASADADGS	1	13	13	HLA-DQA1*03:01/DQB1*06:02	7	18.0	AADASADAD	0.001712	18.0	false
+3	LKAADASADADGS	1	13	13	HLA-DQA1*03:01/DQB1*06:04	7	15.0	AADASADAD	0.009489	15.0	false
+3	LKAADASADADGSG	1	14	14	HLA-DQA1*03:01/DQB1*06:02	9	6.0	DASADADGS	0.005256	6.0	false
+3	LKAADASADADGSG	1	14	14	HLA-DQA1*03:01/DQB1*06:04	9	13.0	AADASADAD	0.012678	13.0	false
+3	LKAADASADADGSGS	1	15	15	HLA-DQA1*03:01/DQB1*06:02	11	6.7	DASADADGS	0.006061	6.7	false
+3	LKAADASADADGSGS	1	15	15	HLA-DQA1*03:01/DQB1*06:04	11	23.0	DASADADGS	0.009114	23.0	false
+3	LKAADASADADGSGSG	1	16	16	HLA-DQA1*03:01/DQB1*06:02	12	6.2	DASADADGS	0.005907	6.2	false
+3	LKAADASADADGSGSG	1	16	16	HLA-DQA1*03:01/DQB1*06:04	12	21.0	DASADADGS	0.009327	21.0	false
+3	LKAADASADADGSGSGS	1	17	17	HLA-DQA1*03:01/DQB1*06:02	13	14.0	DASADADGS	0.003124	14.0	false
+3	LKAADASADADGSGSGS	1	17	17	HLA-DQA1*03:01/DQB1*06:04	13	30.0	DASADADGS	0.006008	30.0	false
+3	SADADGSGSGSGS	7	19	13	HLA-DQA1*03:01/DQB1*06:02	8	64.0	ADGSGSGSG	0.000403	64.0	false
+3	SADADGSGSGSGS	7	19	13	HLA-DQA1*03:01/DQB1*06:04	8	93.0	ADGSGSGSG	0.000582	93.0	false
+3	SADADGSGSGSGSG	7	20	14	HLA-DQA1*03:01/DQB1*06:02	10	67.0	ADGSGSGSG	0.000549	67.0	false
+3	SADADGSGSGSGSG	7	20	14	HLA-DQA1*03:01/DQB1*06:04	10	93.0	ADGSGSGSG	0.000778	93.0	false
+4	GSGDADASADAAK	7	19	13	HLA-DQA1*03:01/DQB1*06:02	15	8.0	DADASADAA	0.002983	8.0	true
+4	GSGDADASADAAK	7	19	13	HLA-DQA1*03:01/DQB1*06:04	15	25.0	DADASADAA	0.006234	25.0	true
+4	GSGDADASADAAKL	7	20	14	HLA-DQA1*03:01/DQB1*06:02	17	8.0	DADASADAA	0.004474	8.0	true
+4	GSGDADASADAAKL	7	20	14	HLA-DQA1*03:01/DQB1*06:04	17	14.0	DASADAAKL	0.012547	14.0	true
+4	GSGSGSGSGDADA	1	13	13	HLA-DQA1*03:01/DQB1*06:02	14	67.0	GSGSGSGDA	0.000363	67.0	true
+4	GSGSGSGSGDADA	1	13	13	HLA-DQA1*03:01/DQB1*06:04	14	57.0	GSGSGDADA	0.00229	57.0	true
+4	GSGSGSGSGDADAS	1	14	14	HLA-DQA1*03:01/DQB1*06:02	16	63.0	GSGSGDADA	0.000608	63.0	true
+4	GSGSGSGSGDADAS	1	14	14	HLA-DQA1*03:01/DQB1*06:04	16	57.0	GSGSGDADA	0.00298	57.0	true
+4	GSGSGSGSGDADASA	1	15	15	HLA-DQA1*03:01/DQB1*06:02	18	38.0	SGSGDADAS	0.001559	38.0	true
+4	GSGSGSGSGDADASA	1	15	15	HLA-DQA1*03:01/DQB1*06:04	18	49.0	SGSGDADAS	0.004142	49.0	true
+4	GSGSGSGSGDADASAD	1	16	16	HLA-DQA1*03:01/DQB1*06:02	19	24.0	SGSGDADAS	0.00233	24.0	true
+4	GSGSGSGSGDADASAD	1	16	16	HLA-DQA1*03:01/DQB1*06:04	19	39.0	SGSGDADAS	0.005232	39.0	true
+4	GSGSGSGSGDADASADA	1	17	17	HLA-DQA1*03:01/DQB1*06:02	20	23.0	SGSGDADAS	0.00208	23.0	true
+4	GSGSGSGSGDADASADA	1	17	17	HLA-DQA1*03:01/DQB1*06:04	20	39.0	SGSGDADAS	0.004697	39.0	true
diff -r 000000000000 -r 4fb283cf23a5 test-data/outputs/netmhcpan_output_1.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/outputs/netmhcpan_output_1.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,23 @@
+seq #	peptide	start	end	peptide length	allele	peptide index	median binding percentile	netmhcpan_ba core	netmhcpan_ba icore	netmhcpan_ba IC50	netmhcpan_ba percentile	netmhcpan_el core	netmhcpan_el icore	netmhcpan_el score	netmhcpan_el percentile	reversed
+1	ATLYCVHQ	7	14	8	HLA-A*01:01	7	54.0	ATLYCVHQ-	ATLYCVHQ	38595.18	64.0	ATLYCVHQ-	ATLYCVHQ	0.00013	44.0	false
+1	ATLYCVHQ	7	14	8	HLA-A*03:01	7	33.5	ATL-YCVHQ	ATLYCVHQ	31351.02	37.0	ATL-YCVHQ	ATLYCVHQ	8.7e-05	30.0	false
+1	CVHQRIDV	11	18	8	HLA-A*01:01	11	43.0	CVHQRID-V	CVHQRIDV	35795.47	48.0	CVHQRID-V	CVHQRIDV	0.000181	38.0	false
+1	CVHQRIDV	11	18	8	HLA-A*03:01	11	63.5	CVHQRIDV-	CVHQRIDV	37646.15	63.0	CVHQRIDV-	CVHQRIDV	9e-06	64.0	false
+1	LYCVHQRI	9	16	8	HLA-A*01:01	9	57.0	LYC-VHQRI	LYCVHQRI	37217.26	56.0	LYC-VHQRI	LYCVHQRI	6.3e-05	58.0	false
+1	LYCVHQRI	9	16	8	HLA-A*03:01	9	59.0	-LYCVHQRI	LYCVHQRI	36274.66	56.0	-LYCVHQRI	LYCVHQRI	1e-05	62.0	false
+1	LYNTVATL	2	9	8	HLA-A*01:01	2	41.5	LYN-TVATL	LYNTVATL	36724.46	53.0	LYN-TVATL	LYNTVATL	0.000283	30.0	false
+1	LYNTVATL	2	9	8	HLA-A*03:01	2	37.0	-LYNTVATL	LYNTVATL	32799.34	42.0	-LYNTVATL	LYNTVATL	7.3e-05	32.0	false
+1	NTVATLYC	4	11	8	HLA-A*01:01	4	32.5	NTVATLYC-	NTVATLYC	31263.96	29.0	NTVATLYC-	NTVATLYC	0.000198	36.0	false
+1	NTVATLYC	4	11	8	HLA-A*03:01	4	56.5	NTV-ATLYC	NTVATLYC	36752.28	58.0	NTV-ATLYC	NTVATLYC	1.5e-05	55.0	false
+1	SLYNTVAT	1	8	8	HLA-A*01:01	1	46.0	SLYNTVAT-	SLYNTVAT	37726.09	59.0	SLYNTVAT-	SLYNTVAT	0.000231	33.0	false
+1	SLYNTVAT	1	8	8	HLA-A*03:01	1	16.5	SLYNTVAT-	SLYNTVAT	22359.43	18.0	SLYNTVAT-	SLYNTVAT	0.000601	15.0	false
+1	TLYCVHQR	8	15	8	HLA-A*01:01	8	37.0	TLY-CVHQR	TLYCVHQR	34958.03	44.0	TLY-CVHQR	TLYCVHQR	0.000295	30.0	false
+1	TLYCVHQR	8	15	8	HLA-A*03:01	8	3.7	TLY-CVHQR	TLYCVHQR	5298.0	4.3	TLY-CVHQR	TLYCVHQR	0.025039	3.1	false
+1	TVATLYCV	5	12	8	HLA-A*01:01	5	22.0	TVA-TLYCV	TVATLYCV	26730.83	18.0	TVA-TLYCV	TVATLYCV	0.000376	26.0	false
+1	TVATLYCV	5	12	8	HLA-A*03:01	5	41.5	TVATL-YCV	TVATLYCV	30907.44	36.0	TVATL-YCV	TVATLYCV	2.5e-05	47.0	false
+1	VATLYCVH	6	13	8	HLA-A*01:01	6	56.5	VAT-LYCVH	VATLYCVH	37247.88	56.0	VAT-LYCVH	VATLYCVH	6.6e-05	57.0	false
+1	VATLYCVH	6	13	8	HLA-A*03:01	6	43.5	VA-TLYCVH	VATLYCVH	33868.64	46.0	VA-TLYCVH	VATLYCVH	3.7e-05	41.0	false
+1	YCVHQRID	10	17	8	HLA-A*01:01	10	94.5	YCVHQRID-	YCVHQRID	45507.15	99.0	YCVHQRID-	YCVHQRID	8e-06	90.0	false
+1	YCVHQRID	10	17	8	HLA-A*03:01	10	98.0	YCVHQRID-	YCVHQRID	46081.89	100.0	YCVHQRID-	YCVHQRID	1e-06	96.0	false
+1	YNTVATLY	3	10	8	HLA-A*01:01	3	1.9	Y-NTVATLY	YNTVATLY	8274.43	2.1	Y-NTVATLY	YNTVATLY	0.040463	1.7	false
+1	YNTVATLY	3	10	8	HLA-A*03:01	3	29.0	Y-NTVATLY	YNTVATLY	30714.42	35.0	Y-NTVATLY	YNTVATLY	0.000178	23.0	false
diff -r 000000000000 -r 4fb283cf23a5 test-data/outputs/netmhcpan_output_2.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/outputs/netmhcpan_output_2.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,45 @@
+seq #	peptide	start	end	peptide length	allele	peptide index	median binding percentile	netmhcpan_el core	netmhcpan_el icore	netmhcpan_el score	netmhcpan_el percentile	reversed
+1	AHKVPRRL	3	10	8	HLA-A*01:01	3	32.0	-AHKVPRRL	AHKVPRRL	0.000256	32.0	false
+1	AHKVPRRL	3	10	8	HLA-A*03:01	3	31.0	AHKVP-RRL	AHKVPRRL	8.1e-05	31.0	false
+1	GHAHKVPR	1	8	8	HLA-A*01:01	1	60.0	GHAHKVPR-	GHAHKVPR	5.7e-05	60.0	false
+1	GHAHKVPR	1	8	8	HLA-A*03:01	1	24.0	GHAHKVP-R	GHAHKVPR	0.00015	24.0	false
+1	HAHKVPRR	2	9	8	HLA-A*01:01	2	31.0	HAH-KVPRR	HAHKVPRR	0.000265	31.0	false
+1	HAHKVPRR	2	9	8	HLA-A*03:01	2	11.0	HAH-KVPRR	HAHKVPRR	0.001191	11.0	false
+1	HKVPRRLL	4	11	8	HLA-A*01:01	4	34.0	HKVPRR-LL	HKVPRRLL	0.000217	34.0	false
+1	HKVPRRLL	4	11	8	HLA-A*03:01	4	43.0	HKV-PRRLL	HKVPRRLL	3.3e-05	43.0	false
+1	KVPRRLLK	5	12	8	HLA-A*01:01	5	28.0	KVP-RRLLK	KVPRRLLK	0.000335	28.0	false
+1	KVPRRLLK	5	12	8	HLA-A*03:01	5	0.71	KV-PRRLLK	KVPRRLLK	0.273931	0.71	false
+1	PRRLLKAA	7	14	8	HLA-A*01:01	7	85.0	PRR-LLKAA	PRRLLKAA	1.3e-05	85.0	false
+1	PRRLLKAA	7	14	8	HLA-A*03:01	7	71.0	PRR-LLKAA	PRRLLKAA	6e-06	71.0	false
+1	RRLLKAAR	8	15	8	HLA-A*01:01	8	72.0	RRLLK-AAR	RRLLKAAR	2.9e-05	72.0	false
+1	RRLLKAAR	8	15	8	HLA-A*03:01	8	17.0	R-RLLKAAR	RRLLKAAR	0.00038	17.0	false
+1	VPRRLLKA	6	13	8	HLA-A*01:01	6	46.0	VPR-RLLKA	VPRRLLKA	0.000115	46.0	false
+1	VPRRLLKA	6	13	8	HLA-A*03:01	6	38.0	VPR-RLLKA	VPRRLLKA	4.7e-05	38.0	false
+2	AADASADA	3	10	8	HLA-A*01:01	11	28.0	AADASADA-	AADASADA	0.000318	28.0	false
+2	AADASADA	3	10	8	HLA-A*03:01	11	74.0	AADASADA-	AADASADA	5e-06	74.0	false
+2	ADADGSGS	8	15	8	HLA-A*01:01	16	72.0	ADADGSGS-	ADADGSGS	3e-05	72.0	false
+2	ADADGSGS	8	15	8	HLA-A*03:01	16	88.0	ADADGSGS-	ADADGSGS	2e-06	88.0	false
+2	ADASADAD	4	11	8	HLA-A*01:01	12	95.0	ADASADAD-	ADASADAD	5e-06	95.0	false
+2	ADASADAD	4	11	8	HLA-A*03:01	12	100.0	ADASADAD-	ADASADAD	0.0	100.0	false
+2	ADGSGSGS	10	17	8	HLA-A*01:01	18	77.0	-ADGSGSGS	ADGSGSGS	2.2e-05	77.0	false
+2	ADGSGSGS	10	17	8	HLA-A*03:01	18	96.0	ADGSGSGS-	ADGSGSGS	1e-06	96.0	false
+2	ASADADGS	6	13	8	HLA-A*01:01	14	41.0	ASADADGS-	ASADADGS	0.000149	41.0	false
+2	ASADADGS	6	13	8	HLA-A*03:01	14	78.0	ASADADGS-	ASADADGS	4e-06	78.0	false
+2	DADGSGSG	9	16	8	HLA-A*01:01	17	42.0	DADGSGSG-	DADGSGSG	0.00014	42.0	false
+2	DADGSGSG	9	16	8	HLA-A*03:01	17	88.0	DADGSGSG-	DADGSGSG	2e-06	88.0	false
+2	DASADADG	5	12	8	HLA-A*01:01	13	92.0	DASADADG-	DASADADG	7e-06	92.0	false
+2	DASADADG	5	12	8	HLA-A*03:01	13	100.0	DASADADG-	DASADADG	0.0	100.0	false
+2	DGSGSGSG	11	18	8	HLA-A*01:01	19	92.0	DGSGSGSG-	DGSGSGSG	7e-06	92.0	false
+2	DGSGSGSG	11	18	8	HLA-A*03:01	19	96.0	DGSGSGSG-	DGSGSGSG	1e-06	96.0	false
+2	GSGSGSGS	12	19	8	HLA-A*01:01	20	59.0	GSGSGSGS-	GSGSGSGS	6e-05	59.0	false
+2	GSGSGSGS	12	19	8	HLA-A*03:01	20	82.0	GSGSGSGS-	GSGSGSGS	3e-06	82.0	false
+2	KAADASAD	2	9	8	HLA-A*01:01	10	66.0	KAADASAD-	KAADASAD	4.1e-05	66.0	false
+2	KAADASAD	2	9	8	HLA-A*03:01	10	78.0	KAADASAD-	KAADASAD	4e-06	78.0	false
+2	LKAADASA	1	8	8	HLA-A*01:01	9	81.0	-LKAADASA	LKAADASA	1.7e-05	81.0	false
+2	LKAADASA	1	8	8	HLA-A*03:01	9	82.0	-LKAADASA	LKAADASA	3e-06	82.0	false
+2	SADADGSG	7	14	8	HLA-A*01:01	15	29.0	SADADGSG-	SADADGSG	0.000311	29.0	false
+2	SADADGSG	7	14	8	HLA-A*03:01	15	82.0	SADADGSG-	SADADGSG	3e-06	82.0	false
+2	SGSGSGSG	13	20	8	HLA-A*01:01	21	72.0	SGSGSGSG-	SGSGSGSG	2.9e-05	72.0	false
+2	SGSGSGSG	13	20	8	HLA-A*03:01	21	71.0	SGSGSGSG-	SGSGSGSG	6e-06	71.0	false
+3	KDLGYDYS	1	8	8	HLA-A*01:01	22	83.0	KDLGYDYS-	KDLGYDYS	1.5e-05	83.0	false
+3	KDLGYDYS	1	8	8	HLA-A*03:01	22	88.0	KDLGYDYS-	KDLGYDYS	2e-06	88.0	false
diff -r 000000000000 -r 4fb283cf23a5 test-data/outputs/netmhcpan_output_3.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/outputs/netmhcpan_output_3.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,213 @@
+seq #	peptide	start	end	peptide length	allele	peptide index	median binding percentile	netmhcpan_el core	netmhcpan_el icore	netmhcpan_el score	netmhcpan_el percentile	reversed
+1	AHKVPRRL	3	10	8	HLA-A*01:01	3	32.0	-AHKVPRRL	AHKVPRRL	0.000256	32.0	false
+1	AHKVPRRL	3	10	8	HLA-A*03:01	3	31.0	AHKVP-RRL	AHKVPRRL	8.1e-05	31.0	false
+1	AHKVPRRLL	3	11	9	HLA-A*01:01	11	19.0	AHKVPRRLL	AHKVPRRLL	0.000661	19.0	false
+1	AHKVPRRLL	3	11	9	HLA-A*03:01	11	17.0	AHKVPRRLL	AHKVPRRLL	0.000388	17.0	false
+1	AHKVPRRLLK	3	12	10	HLA-A*01:01	18	25.0	AHKVPRLLK	AHKVPRRLLK	0.000412	25.0	false
+1	AHKVPRRLLK	3	12	10	HLA-A*03:01	18	4.2	AHKVPRLLK	AHKVPRRLLK	0.012934	4.2	false
+1	AHKVPRRLLKA	3	13	11	HLA-A*01:01	24	43.0	AVPRRLLKA	AHKVPRRLLKA	0.000133	43.0	false
+1	AHKVPRRLLKA	3	13	11	HLA-A*03:01	24	21.0	AHKVPRLLK	AHKVPRRLLK	0.000241	21.0	false
+1	AHKVPRRLLKAA	3	14	12	HLA-A*01:01	29	68.0	AHKVPRRLA	AHKVPRRLLKAA	3.8e-05	68.0	false
+1	AHKVPRRLLKAA	3	14	12	HLA-A*03:01	29	46.0	AHKVPRLLK	AHKVPRRLLK	2.6e-05	46.0	false
+1	AHKVPRRLLKAAR	3	15	13	HLA-A*01:01	33	81.0	AHKVPRAAR	AHKVPRRLLKAAR	1.7e-05	81.0	false
+1	AHKVPRRLLKAAR	3	15	13	HLA-A*03:01	33	24.0	AHKVPRAAR	AHKVPRRLLKAAR	0.00015	24.0	false
+1	GHAHKVPR	1	8	8	HLA-A*01:01	1	60.0	GHAHKVPR-	GHAHKVPR	5.7e-05	60.0	false
+1	GHAHKVPR	1	8	8	HLA-A*03:01	1	24.0	GHAHKVP-R	GHAHKVPR	0.00015	24.0	false
+1	GHAHKVPRR	1	9	9	HLA-A*01:01	9	36.0	GHAHKVPRR	GHAHKVPRR	0.000197	36.0	false
+1	GHAHKVPRR	1	9	9	HLA-A*03:01	9	6.2	GHAHKVPRR	GHAHKVPRR	0.004884	6.2	false
+1	GHAHKVPRRL	1	10	10	HLA-A*01:01	16	26.0	GHAHVPRRL	GHAHKVPRRL	0.000366	26.0	false
+1	GHAHKVPRRL	1	10	10	HLA-A*03:01	16	29.0	GAHKVPRRL	GHAHKVPRRL	0.0001	29.0	false
+1	GHAHKVPRRLL	1	11	11	HLA-A*01:01	22	37.0	GHAHPRRLL	GHAHKVPRRLL	0.000185	37.0	false
+1	GHAHKVPRRLL	1	11	11	HLA-A*03:01	22	34.0	GHAHPRRLL	GHAHKVPRRLL	6.3e-05	34.0	false
+1	GHAHKVPRRLLK	1	12	12	HLA-A*01:01	27	49.0	GHAPRRLLK	GHAHKVPRRLLK	9.9e-05	49.0	false
+1	GHAHKVPRRLLK	1	12	12	HLA-A*03:01	27	11.0	GHAPRRLLK	GHAHKVPRRLLK	0.001287	11.0	false
+1	GHAHKVPRRLLKA	1	13	13	HLA-A*01:01	31	68.0	GHAHKVLKA	GHAHKVPRRLLKA	3.7e-05	68.0	false
+1	GHAHKVPRRLLKA	1	13	13	HLA-A*03:01	31	56.0	GHAPRRLLK	GHAHKVPRRLLK	1.4e-05	56.0	false
+1	GHAHKVPRRLLKAA	1	14	14	HLA-A*01:01	34	92.0	GHAHKVPRA	GHAHKVPRRLLKAA	7e-06	92.0	false
+1	GHAHKVPRRLLKAA	1	14	14	HLA-A*03:01	34	82.0	GHAHLLKAA	GHAHKVPRRLLKAA	3e-06	82.0	false
+1	HAHKVPRR	2	9	8	HLA-A*01:01	2	31.0	HAH-KVPRR	HAHKVPRR	0.000265	31.0	false
+1	HAHKVPRR	2	9	8	HLA-A*03:01	2	11.0	HAH-KVPRR	HAHKVPRR	0.001191	11.0	false
+1	HAHKVPRRL	2	10	9	HLA-A*01:01	10	7.2	HAHKVPRRL	HAHKVPRRL	0.003229	7.2	false
+1	HAHKVPRRL	2	10	9	HLA-A*03:01	10	11.0	HAHKVPRRL	HAHKVPRRL	0.001421	11.0	false
+1	HAHKVPRRLL	2	11	10	HLA-A*01:01	17	20.0	HAHKVPRLL	HAHKVPRRLL	0.000613	20.0	false
+1	HAHKVPRRLL	2	11	10	HLA-A*03:01	17	26.0	HAHKVPRLL	HAHKVPRRLL	0.000126	26.0	false
+1	HAHKVPRRLLK	2	12	11	HLA-A*01:01	23	14.0	HAHKVPLLK	HAHKVPRRLLK	0.001179	14.0	false
+1	HAHKVPRRLLK	2	12	11	HLA-A*03:01	23	1.3	HAHKVPLLK	HAHKVPRRLLK	0.135325	1.3	false
+1	HAHKVPRRLLKA	2	13	12	HLA-A*01:01	28	46.0	HAHKVPLKA	HAHKVPRRLLKA	0.000117	46.0	false
+1	HAHKVPRRLLKA	2	13	12	HLA-A*03:01	28	19.0	HAHKVPLLK	HAHKVPRRLLK	0.000299	19.0	false
+1	HAHKVPRRLLKAA	2	14	13	HLA-A*01:01	32	74.0	HAHKVPRAA	HAHKVPRRLLKAA	2.6e-05	74.0	false
+1	HAHKVPRRLLKAA	2	14	13	HLA-A*03:01	32	46.0	HAHKVPLLK	HAHKVPRRLLK	2.7e-05	46.0	false
+1	HAHKVPRRLLKAAR	2	15	14	HLA-A*01:01	35	74.0	HAHKVPAAR	HAHKVPRRLLKAAR	2.7e-05	74.0	false
+1	HAHKVPRRLLKAAR	2	15	14	HLA-A*03:01	35	30.0	HAHKVPAAR	HAHKVPRRLLKAAR	8.9e-05	30.0	false
+1	HKVPRRLL	4	11	8	HLA-A*01:01	4	34.0	HKVPRR-LL	HKVPRRLL	0.000217	34.0	false
+1	HKVPRRLL	4	11	8	HLA-A*03:01	4	43.0	HKV-PRRLL	HKVPRRLL	3.3e-05	43.0	false
+1	HKVPRRLLK	4	12	9	HLA-A*01:01	12	26.0	HKVPRRLLK	HKVPRRLLK	0.000376	26.0	false
+1	HKVPRRLLK	4	12	9	HLA-A*03:01	12	2.8	HKVPRRLLK	HKVPRRLLK	0.030755	2.8	false
+1	HKVPRRLLKA	4	13	10	HLA-A*01:01	19	34.0	HVPRRLLKA	HKVPRRLLKA	0.000226	34.0	false
+1	HKVPRRLLKA	4	13	10	HLA-A*03:01	19	25.0	HKVPRRLLK	HKVPRRLLK	0.000141	25.0	false
+1	HKVPRRLLKAA	4	14	11	HLA-A*01:01	25	55.0	HKVPRRLLA	HKVPRRLLKAA	7.4e-05	55.0	false
+1	HKVPRRLLKAA	4	14	11	HLA-A*03:01	25	50.0	HKVPRRLLK	HKVPRRLLK	2e-05	50.0	false
+1	HKVPRRLLKAAR	4	15	12	HLA-A*01:01	30	71.0	HKVPRRLLR	HKVPRRLLKAAR	3.2e-05	71.0	false
+1	HKVPRRLLKAAR	4	15	12	HLA-A*03:01	30	20.0	KVPRRLLKR	KVPRRLLKAAR	0.000259	20.0	false
+1	KVPRRLLK	5	12	8	HLA-A*01:01	5	28.0	KVP-RRLLK	KVPRRLLK	0.000335	28.0	false
+1	KVPRRLLK	5	12	8	HLA-A*03:01	5	0.71	KV-PRRLLK	KVPRRLLK	0.273931	0.71	false
+1	KVPRRLLKA	5	13	9	HLA-A*01:01	13	15.0	KVPRRLLKA	KVPRRLLKA	0.000947	15.0	false
+1	KVPRRLLKA	5	13	9	HLA-A*03:01	13	4.7	KVPRRLLKA	KVPRRLLKA	0.009838	4.7	false
+1	KVPRRLLKAA	5	14	10	HLA-A*01:01	20	45.0	KVPRRLLKA	KVPRRLLKAA	0.00012	45.0	false
+1	KVPRRLLKAA	5	14	10	HLA-A*03:01	20	16.0	KVPRRLLKA	KVPRRLLKAA	0.000437	16.0	false
+1	KVPRRLLKAAR	5	15	11	HLA-A*01:01	26	33.0	KVPRRLLKR	KVPRRLLKAAR	0.000244	33.0	false
+1	KVPRRLLKAAR	5	15	11	HLA-A*03:01	26	2.7	KVPRRLLAR	KVPRRLLKAAR	0.032122	2.7	false
+1	PRRLLKAA	7	14	8	HLA-A*01:01	7	85.0	PRR-LLKAA	PRRLLKAA	1.3e-05	85.0	false
+1	PRRLLKAA	7	14	8	HLA-A*03:01	7	71.0	PRR-LLKAA	PRRLLKAA	6e-06	71.0	false
+1	PRRLLKAAR	7	15	9	HLA-A*01:01	15	68.0	PRRLLKAAR	PRRLLKAAR	3.7e-05	68.0	false
+1	PRRLLKAAR	7	15	9	HLA-A*03:01	15	27.0	PRRLLKAAR	PRRLLKAAR	0.000112	27.0	false
+1	RRLLKAAR	8	15	8	HLA-A*01:01	8	72.0	RRLLK-AAR	RRLLKAAR	2.9e-05	72.0	false
+1	RRLLKAAR	8	15	8	HLA-A*03:01	8	17.0	R-RLLKAAR	RRLLKAAR	0.00038	17.0	false
+1	VPRRLLKA	6	13	8	HLA-A*01:01	6	46.0	VPR-RLLKA	VPRRLLKA	0.000115	46.0	false
+1	VPRRLLKA	6	13	8	HLA-A*03:01	6	38.0	VPR-RLLKA	VPRRLLKA	4.7e-05	38.0	false
+1	VPRRLLKAA	6	14	9	HLA-A*01:01	14	30.0	VPRRLLKAA	VPRRLLKAA	0.000287	30.0	false
+1	VPRRLLKAA	6	14	9	HLA-A*03:01	14	22.0	VPRRLLKAA	VPRRLLKAA	0.000195	22.0	false
+1	VPRRLLKAAR	6	15	10	HLA-A*01:01	21	62.0	VPRRLKAAR	VPRRLLKAAR	5.2e-05	62.0	false
+1	VPRRLLKAAR	6	15	10	HLA-A*03:01	21	18.0	VPRRLLAAR	VPRRLLKAAR	0.000361	18.0	false
+2	AADASADA	3	10	8	HLA-A*01:01	38	28.0	AADASADA-	AADASADA	0.000318	28.0	false
+2	AADASADA	3	10	8	HLA-A*03:01	38	74.0	AADASADA-	AADASADA	5e-06	74.0	false
+2	AADASADAD	3	11	9	HLA-A*01:01	51	30.0	AADASADAD	AADASADAD	0.000295	30.0	false
+2	AADASADAD	3	11	9	HLA-A*03:01	51	88.0	AADASADAD	AADASADAD	2e-06	88.0	false
+2	AADASADADG	3	12	10	HLA-A*01:01	63	50.0	AADASADAG	AADASADADG	9.5e-05	50.0	false
+2	AADASADADG	3	12	10	HLA-A*03:01	63	96.0	AADASADAG	AADASADADG	1e-06	96.0	false
+2	AADASADADGS	3	13	11	HLA-A*01:01	74	43.0	AADASADAS	AADASADADGS	0.000135	43.0	false
+2	AADASADADGS	3	13	11	HLA-A*03:01	74	96.0	AADASADAS	AADASADADGS	1e-06	96.0	false
+2	AADASADADGSG	3	14	12	HLA-A*01:01	84	65.0	AADASADSG	AADASADADGSG	4.4e-05	65.0	false
+2	AADASADADGSG	3	14	12	HLA-A*03:01	84	96.0	ASADADGSG	AADASADADGSG	1e-06	96.0	false
+2	AADASADADGSGS	3	15	13	HLA-A*01:01	93	45.0	AADASGSGS	AADASADADGSGS	0.00012	45.0	false
+2	AADASADADGSGS	3	15	13	HLA-A*03:01	93	96.0	AADASGSGS	AADASADADGSGS	1e-06	96.0	false
+2	AADASADADGSGSG	3	16	14	HLA-A*01:01	101	79.0	AADDGSGSG	AADASADADGSGSG	1.9e-05	79.0	false
+2	AADASADADGSGSG	3	16	14	HLA-A*03:01	101	100.0	AADDGSGSG	AADASADADGSGSG	0.0	100.0	false
+2	ADADGSGS	8	15	8	HLA-A*01:01	43	72.0	ADADGSGS-	ADADGSGS	3e-05	72.0	false
+2	ADADGSGS	8	15	8	HLA-A*03:01	43	88.0	ADADGSGS-	ADADGSGS	2e-06	88.0	false
+2	ADADGSGSG	8	16	9	HLA-A*01:01	56	48.0	ADADGSGSG	ADADGSGSG	0.000105	48.0	false
+2	ADADGSGSG	8	16	9	HLA-A*03:01	56	71.0	ADADGSGSG	ADADGSGSG	6e-06	71.0	false
+2	ADADGSGSGS	8	17	10	HLA-A*01:01	68	21.0	AADGSGSGS	ADADGSGSGS	0.000564	21.0	false
+2	ADADGSGSGS	8	17	10	HLA-A*03:01	68	62.0	AADGSGSGS	ADADGSGSGS	1e-05	62.0	false
+2	ADADGSGSGSG	8	18	11	HLA-A*01:01	79	80.0	ADADGSGSG	ADADGSGSGSG	1.8e-05	80.0	false
+2	ADADGSGSGSG	8	18	11	HLA-A*03:01	79	96.0	ADASGSGSG	ADADGSGSGSG	1e-06	96.0	false
+2	ADADGSGSGSGS	8	19	12	HLA-A*01:01	89	82.0	AGSGSGSGS	ADADGSGSGSGS	1.6e-05	82.0	false
+2	ADADGSGSGSGS	8	19	12	HLA-A*03:01	89	88.0	AGSGSGSGS	ADADGSGSGSGS	2e-06	88.0	false
+2	ADADGSGSGSGSG	8	20	13	HLA-A*01:01	98	95.0	ASGSGSGSG	ADADGSGSGSGSG	5e-06	95.0	false
+2	ADADGSGSGSGSG	8	20	13	HLA-A*03:01	98	100.0	ADADGSGSG	ADADGSGSGSGSG	0.0	100.0	false
+2	ADASADAD	4	11	8	HLA-A*01:01	39	95.0	ADASADAD-	ADASADAD	5e-06	95.0	false
+2	ADASADAD	4	11	8	HLA-A*03:01	39	100.0	ADASADAD-	ADASADAD	0.0	100.0	false
+2	ADASADADG	4	12	9	HLA-A*01:01	52	88.0	ADASADADG	ADASADADG	1e-05	88.0	false
+2	ADASADADG	4	12	9	HLA-A*03:01	52	96.0	ADASADADG	ADASADADG	1e-06	96.0	false
+2	ADASADADGS	4	13	10	HLA-A*01:01	64	78.0	AASADADGS	ADASADADGS	2.1e-05	78.0	false
+2	ADASADADGS	4	13	10	HLA-A*03:01	64	96.0	AASADADGS	ADASADADGS	1e-06	96.0	false
+2	ADASADADGSG	4	14	11	HLA-A*01:01	75	76.0	ASADADGSG	ADASADADGSG	2.3e-05	76.0	false
+2	ADASADADGSG	4	14	11	HLA-A*03:01	75	96.0	ASADADGSG	ADASADADGSG	1e-06	96.0	false
+2	ADASADADGSGS	4	15	12	HLA-A*01:01	85	51.0	AADADGSGS	ADASADADGSGS	8.7e-05	51.0	false
+2	ADASADADGSGS	4	15	12	HLA-A*03:01	85	96.0	AADADGSGS	ADASADADGSGS	1e-06	96.0	false
+2	ADASADADGSGSG	4	16	13	HLA-A*01:01	94	98.0	ADADGSGSG	ADASADADGSGSG	3e-06	98.0	false
+2	ADASADADGSGSG	4	16	13	HLA-A*03:01	94	100.0	ADADGSGSG	ADASADADGSGSG	0.0	100.0	false
+2	ADASADADGSGSGS	4	17	14	HLA-A*01:01	102	66.0	AADGSGSGS	ADASADADGSGSGS	4.2e-05	66.0	false
+2	ADASADADGSGSGS	4	17	14	HLA-A*03:01	102	96.0	AADGSGSGS	ADASADADGSGSGS	1e-06	96.0	false
+2	ADGSGSGS	10	17	8	HLA-A*01:01	45	77.0	-ADGSGSGS	ADGSGSGS	2.2e-05	77.0	false
+2	ADGSGSGS	10	17	8	HLA-A*03:01	45	96.0	ADGSGSGS-	ADGSGSGS	1e-06	96.0	false
+2	ADGSGSGSG	10	18	9	HLA-A*01:01	58	77.0	ADGSGSGSG	ADGSGSGSG	2.2e-05	77.0	false
+2	ADGSGSGSG	10	18	9	HLA-A*03:01	58	82.0	ADGSGSGSG	ADGSGSGSG	3e-06	82.0	false
+2	ADGSGSGSGS	10	19	10	HLA-A*01:01	70	66.0	AGSGSGSGS	ADGSGSGSGS	4.2e-05	66.0	false
+2	ADGSGSGSGS	10	19	10	HLA-A*03:01	70	66.0	AGSGSGSGS	ADGSGSGSGS	8e-06	66.0	false
+2	ADGSGSGSGSG	10	20	11	HLA-A*01:01	81	83.0	ASGSGSGSG	ADGSGSGSGSG	1.5e-05	83.0	false
+2	ADGSGSGSGSG	10	20	11	HLA-A*03:01	81	96.0	ASGSGSGSG	ADGSGSGSGSG	1e-06	96.0	false
+2	ASADADGS	6	13	8	HLA-A*01:01	41	41.0	ASADADGS-	ASADADGS	0.000149	41.0	false
+2	ASADADGS	6	13	8	HLA-A*03:01	41	78.0	ASADADGS-	ASADADGS	4e-06	78.0	false
+2	ASADADGSG	6	14	9	HLA-A*01:01	54	36.0	ASADADGSG	ASADADGSG	0.000204	36.0	false
+2	ASADADGSG	6	14	9	HLA-A*03:01	54	68.0	ASADADGSG	ASADADGSG	7e-06	68.0	false
+2	ASADADGSGS	6	15	10	HLA-A*01:01	66	13.0	ASDADGSGS	ASADADGSGS	0.00129	13.0	false
+2	ASADADGSGS	6	15	10	HLA-A*03:01	66	44.0	ASADAGSGS	ASADADGSGS	3e-05	44.0	false
+2	ASADADGSGSG	6	16	11	HLA-A*01:01	77	53.0	ASADGSGSG	ASADADGSGSG	7.9e-05	53.0	false
+2	ASADADGSGSG	6	16	11	HLA-A*03:01	77	78.0	ASADGSGSG	ASADADGSGSG	4e-06	78.0	false
+2	ASADADGSGSGS	6	17	12	HLA-A*01:01	87	17.0	ASDGSGSGS	ASADADGSGSGS	0.000796	17.0	false
+2	ASADADGSGSGS	6	17	12	HLA-A*03:01	87	56.0	ASAGSGSGS	ASADADGSGSGS	1.4e-05	56.0	false
+2	ASADADGSGSGSG	6	18	13	HLA-A*01:01	96	74.0	ASADGSGSG	ASADADGSGSGSG	2.6e-05	74.0	false
+2	ASADADGSGSGSG	6	18	13	HLA-A*03:01	96	96.0	ASADGSGSG	ASADADGSGSGSG	1e-06	96.0	false
+2	ASADADGSGSGSGS	6	19	14	HLA-A*01:01	104	68.0	ASADSGSGS	ASADADGSGSGSGS	3.7e-05	68.0	false
+2	ASADADGSGSGSGS	6	19	14	HLA-A*03:01	104	82.0	ASADSGSGS	ASADADGSGSGSGS	3e-06	82.0	false
+2	DADGSGSG	9	16	8	HLA-A*01:01	44	42.0	DADGSGSG-	DADGSGSG	0.00014	42.0	false
+2	DADGSGSG	9	16	8	HLA-A*03:01	44	88.0	DADGSGSG-	DADGSGSG	2e-06	88.0	false
+2	DADGSGSGS	9	17	9	HLA-A*01:01	57	16.0	DADGSGSGS	DADGSGSGS	0.000893	16.0	false
+2	DADGSGSGS	9	17	9	HLA-A*03:01	57	62.0	DADGSGSGS	DADGSGSGS	1e-05	62.0	false
+2	DADGSGSGSG	9	18	10	HLA-A*01:01	69	46.0	DADGSGSSG	DADGSGSGSG	0.000113	46.0	false
+2	DADGSGSGSG	9	18	10	HLA-A*03:01	69	88.0	DADGSGSSG	DADGSGSGSG	2e-06	88.0	false
+2	DADGSGSGSGS	9	19	11	HLA-A*01:01	80	50.0	DADGSGSGS	DADGSGSGSGS	9.5e-05	50.0	false
+2	DADGSGSGSGS	9	19	11	HLA-A*03:01	80	88.0	DADGSGSGS	DADGSGSGSGS	2e-06	88.0	false
+2	DADGSGSGSGSG	9	20	12	HLA-A*01:01	90	62.0	DADGSGSSG	DADGSGSGSGSG	5e-05	62.0	false
+2	DADGSGSGSGSG	9	20	12	HLA-A*03:01	90	96.0	DADSGSGSG	DADGSGSGSGSG	1e-06	96.0	false
+2	DASADADG	5	12	8	HLA-A*01:01	40	92.0	DASADADG-	DASADADG	7e-06	92.0	false
+2	DASADADG	5	12	8	HLA-A*03:01	40	100.0	DASADADG-	DASADADG	0.0	100.0	false
+2	DASADADGS	5	13	9	HLA-A*01:01	53	73.0	DASADADGS	DASADADGS	2.8e-05	73.0	false
+2	DASADADGS	5	13	9	HLA-A*03:01	53	88.0	DASADADGS	DASADADGS	2e-06	88.0	false
+2	DASADADGSG	5	14	10	HLA-A*01:01	65	78.0	DSADADGSG	DASADADGSG	2e-05	78.0	false
+2	DASADADGSG	5	14	10	HLA-A*03:01	65	100.0	DSADADGSG	DASADADGSG	0.0	100.0	false
+2	DASADADGSGS	5	15	11	HLA-A*01:01	76	60.0	DADADGSGS	DASADADGSGS	5.7e-05	60.0	false
+2	DASADADGSGS	5	15	11	HLA-A*03:01	76	88.0	ASADAGSGS	ASADADGSGS	2e-06	88.0	false
+2	DASADADGSGSG	5	16	12	HLA-A*01:01	86	90.0	DAADGSGSG	DASADADGSGSG	8e-06	90.0	false
+2	DASADADGSGSG	5	16	12	HLA-A*03:01	86	100.0	DAADGSGSG	DASADADGSGSG	0.0	100.0	false
+2	DASADADGSGSGS	5	17	13	HLA-A*01:01	95	71.0	DADGSGSGS	DASADADGSGSGS	3.1e-05	71.0	false
+2	DASADADGSGSGS	5	17	13	HLA-A*03:01	95	96.0	DADGSGSGS	DASADADGSGSGS	1e-06	96.0	false
+2	DASADADGSGSGSG	5	18	14	HLA-A*01:01	103	100.0	DASSGSGSG	DASADADGSGSGSG	1e-06	100.0	false
+2	DASADADGSGSGSG	5	18	14	HLA-A*03:01	103	100.0	DASSGSGSG	DASADADGSGSGSG	0.0	100.0	false
+2	DGSGSGSG	11	18	8	HLA-A*01:01	46	92.0	DGSGSGSG-	DGSGSGSG	7e-06	92.0	false
+2	DGSGSGSG	11	18	8	HLA-A*03:01	46	96.0	DGSGSGSG-	DGSGSGSG	1e-06	96.0	false
+2	DGSGSGSGS	11	19	9	HLA-A*01:01	59	56.0	DGSGSGSGS	DGSGSGSGS	6.9e-05	56.0	false
+2	DGSGSGSGS	11	19	9	HLA-A*03:01	59	74.0	DGSGSGSGS	DGSGSGSGS	5e-06	74.0	false
+2	DGSGSGSGSG	11	20	10	HLA-A*01:01	71	57.0	DGSGSGGSG	DGSGSGSGSG	6.5e-05	57.0	false
+2	DGSGSGSGSG	11	20	10	HLA-A*03:01	71	96.0	DGSGSGSSG	DGSGSGSGSG	1e-06	96.0	false
+2	GSGSGSGS	12	19	8	HLA-A*01:01	47	59.0	GSGSGSGS-	GSGSGSGS	6e-05	59.0	false
+2	GSGSGSGS	12	19	8	HLA-A*03:01	47	82.0	GSGSGSGS-	GSGSGSGS	3e-06	82.0	false
+2	GSGSGSGSG	12	20	9	HLA-A*01:01	60	53.0	GSGSGSGSG	GSGSGSGSG	7.9e-05	53.0	false
+2	GSGSGSGSG	12	20	9	HLA-A*03:01	60	71.0	GSGSGSGSG	GSGSGSGSG	6e-06	71.0	false
+2	KAADASAD	2	9	8	HLA-A*01:01	37	66.0	KAADASAD-	KAADASAD	4.1e-05	66.0	false
+2	KAADASAD	2	9	8	HLA-A*03:01	37	78.0	KAADASAD-	KAADASAD	4e-06	78.0	false
+2	KAADASADA	2	10	9	HLA-A*01:01	50	19.0	KAADASADA	KAADASADA	0.000659	19.0	false
+2	KAADASADA	2	10	9	HLA-A*03:01	50	30.0	KAADASADA	KAADASADA	8.7e-05	30.0	false
+2	KAADASADAD	2	11	10	HLA-A*01:01	62	68.0	KADASADAD	KAADASADAD	3.8e-05	68.0	false
+2	KAADASADAD	2	11	10	HLA-A*03:01	62	88.0	KAADASADA	KAADASADA	2e-06	88.0	false
+2	KAADASADADG	2	12	11	HLA-A*01:01	73	86.0	KAADASADG	KAADASADADG	1.2e-05	86.0	false
+2	KAADASADADG	2	12	11	HLA-A*03:01	73	96.0	KAADASADA	KAADASADA	1e-06	96.0	false
+2	KAADASADADGS	2	13	12	HLA-A*01:01	83	80.0	KAADASAGS	KAADASADADGS	1.8e-05	80.0	false
+2	KAADASADADGS	2	13	12	HLA-A*03:01	83	78.0	KAADASAGS	KAADASADADGS	4e-06	78.0	false
+2	KAADASADADGSG	2	14	13	HLA-A*01:01	92	88.0	KAADASASG	KAADASADADGSG	1e-05	88.0	false
+2	KAADASADADGSG	2	14	13	HLA-A*03:01	92	96.0	KAADASASG	KAADASADADGSG	1e-06	96.0	false
+2	KAADASADADGSGS	2	15	14	HLA-A*01:01	100	83.0	KADADGSGS	KAADASADADGSGS	1.5e-05	83.0	false
+2	KAADASADADGSGS	2	15	14	HLA-A*03:01	100	88.0	KAADAGSGS	KAADASADADGSGS	2e-06	88.0	false
+2	LKAADASA	1	8	8	HLA-A*01:01	36	81.0	-LKAADASA	LKAADASA	1.7e-05	81.0	false
+2	LKAADASA	1	8	8	HLA-A*03:01	36	82.0	-LKAADASA	LKAADASA	3e-06	82.0	false
+2	LKAADASAD	1	9	9	HLA-A*01:01	49	99.0	LKAADASAD	LKAADASAD	2e-06	99.0	false
+2	LKAADASAD	1	9	9	HLA-A*03:01	49	100.0	LKAADASAD	LKAADASAD	0.0	100.0	false
+2	LKAADASADA	1	10	10	HLA-A*01:01	61	49.0	LAADASADA	LKAADASADA	9.6e-05	49.0	false
+2	LKAADASADA	1	10	10	HLA-A*03:01	61	78.0	LAADASADA	LKAADASADA	4e-06	78.0	false
+2	LKAADASADAD	1	11	11	HLA-A*01:01	72	81.0	LADASADAD	LKAADASADAD	1.7e-05	81.0	false
+2	LKAADASADAD	1	11	11	HLA-A*03:01	72	100.0	LADASADAD	LKAADASADAD	0.0	100.0	false
+2	LKAADASADADG	1	12	12	HLA-A*01:01	82	100.0	LKAADASAG	LKAADASADADG	1e-06	100.0	false
+2	LKAADASADADG	1	12	12	HLA-A*03:01	82	100.0	LKAADASAG	LKAADASADADG	0.0	100.0	false
+2	LKAADASADADGS	1	13	13	HLA-A*01:01	91	99.0	LASADADGS	LKAADASADADGS	2e-06	99.0	false
+2	LKAADASADADGS	1	13	13	HLA-A*03:01	91	100.0	KAADASAGS	KAADASADADGS	0.0	100.0	false
+2	LKAADASADADGSG	1	14	14	HLA-A*01:01	99	99.0	LSADADGSG	LKAADASADADGSG	2e-06	99.0	false
+2	LKAADASADADGSG	1	14	14	HLA-A*03:01	99	100.0	LSADADGSG	LKAADASADADGSG	0.0	100.0	false
+2	SADADGSG	7	14	8	HLA-A*01:01	42	29.0	SADADGSG-	SADADGSG	0.000311	29.0	false
+2	SADADGSG	7	14	8	HLA-A*03:01	42	82.0	SADADGSG-	SADADGSG	3e-06	82.0	false
+2	SADADGSGS	7	15	9	HLA-A*01:01	55	8.0	SADADGSGS	SADADGSGS	0.002732	8.0	false
+2	SADADGSGS	7	15	9	HLA-A*03:01	55	57.0	SADADGSGS	SADADGSGS	1.3e-05	57.0	false
+2	SADADGSGSG	7	16	10	HLA-A*01:01	67	23.0	SADDGSGSG	SADADGSGSG	0.000462	23.0	false
+2	SADADGSGSG	7	16	10	HLA-A*03:01	67	78.0	SAADGSGSG	SADADGSGSG	4e-06	78.0	false
+2	SADADGSGSGS	7	17	11	HLA-A*01:01	78	19.0	SADASGSGS	SADADGSGSGS	0.00069	19.0	false
+2	SADADGSGSGS	7	17	11	HLA-A*03:01	78	78.0	SADGSGSGS	SADADGSGSGS	4e-06	78.0	false
+2	SADADGSGSGSG	7	18	12	HLA-A*01:01	88	48.0	SADSGSGSG	SADADGSGSGSG	0.000101	48.0	false
+2	SADADGSGSGSG	7	18	12	HLA-A*03:01	88	96.0	SADSGSGSG	SADADGSGSGSG	1e-06	96.0	false
+2	SADADGSGSGSGS	7	19	13	HLA-A*01:01	97	35.0	SADGSGSGS	SADADGSGSGSGS	0.000213	35.0	false
+2	SADADGSGSGSGS	7	19	13	HLA-A*03:01	97	88.0	SASGSGSGS	SADADGSGSGSGS	2e-06	88.0	false
+2	SADADGSGSGSGSG	7	20	14	HLA-A*01:01	105	78.0	SADSGSGSG	SADADGSGSGSGSG	2e-05	78.0	false
+2	SADADGSGSGSGSG	7	20	14	HLA-A*03:01	105	100.0	SADADGSSG	SADADGSGSGSGSG	0.0	100.0	false
+2	SGSGSGSG	13	20	8	HLA-A*01:01	48	72.0	SGSGSGSG-	SGSGSGSG	2.9e-05	72.0	false
+2	SGSGSGSG	13	20	8	HLA-A*03:01	48	71.0	SGSGSGSG-	SGSGSGSG	6e-06	71.0	false
+3	KDLGYDYS	1	8	8	HLA-A*01:01	106	83.0	KDLGYDYS-	KDLGYDYS	1.5e-05	83.0	false
+3	KDLGYDYS	1	8	8	HLA-A*03:01	106	88.0	KDLGYDYS-	KDLGYDYS	2e-06	88.0	false
diff -r 000000000000 -r 4fb283cf23a5 test-data/seqs.fa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/seqs.fa	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,6 @@
+>peptide1
+GHAHKVPRRLLKAAR
+>peptide2
+LKAADASADADGSGSGSGSG
+>peptide3
+KDLGYDYS
diff -r 000000000000 -r 4fb283cf23a5 test-data/seqs.tsv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/seqs.tsv	Wed Jul 09 12:56:02 2025 +0000
@@ -0,0 +1,3 @@
+peptide1	16	GHAHKVPRRLLKAAR
+peptide2	21	LKAADASADADGSGSGSGSG
+peptide3	8	KDLGYDYS