From 95fd91c082194470971f9522afe77ad0a1f934a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?William=20L=C3=B6vfors?= <william.lovfors@liu.se>
Date: Tue, 4 Dec 2018 15:21:49 +0100
Subject: [PATCH] Updated IQM tools to v1.2.2.2

---
 IQM Tools/IQMlite/Contents.m                  |  14 +-
 .../auxiliary/compliance/IQMoutputTable.m     |  61 +++
 .../auxiliary/graphics/ps/gs/fonts/EMPTY.txt  |   0
 .../auxiliary/graphics/ps/gs/lib/EMPTY.txt    |   0
 .../IQMlite/auxiliary/output/IQMgetcolors.m   |   2 +-
 IQM Tools/IQMlite/auxiliary/usernameIQM.m     |   2 +-
 .../text2IQMmodel/convertTextBCToModelIQM.m   |   2 +-
 .../text2IQMmodel/convertTextToModelIQM.m     |   2 +-
 IQM Tools/IQMlite/release.txt                 |   6 +
 .../IQMlite/tools/dataset/IQMloadCSVdataset.m |  18 +-
 IQM Tools/IQMlite/tools/plots/IQMplotCatCat.m | 407 +++++++++++++----
 .../tools/plots/IQMplotCovarianceCat.m        |  67 ++-
 IQM Tools/IQMlite/tools/plots/IQMplotKM.m     | 101 +++++
 .../tools/plots/IQMplotPercentStratified.m    | 200 +++++++++
 .../IQMlite/tools/plots/IQMplotfacetgrid.m    |   2 +-
 .../IQMlite/tools/plots/IQMplotpairwiseCorr.m |   6 +-
 .../tools/plots/auxiliary/plotgeneralIQM.m    |   8 +-
 IQM Tools/IQMlite/tools/survival/IQMcoxExt.m  | 202 +++++++++
 IQM Tools/IQMlite/tools/survival/IQMcoxPH.m   | 241 ++++++++++
 .../IQMlite/tools/survival/IQMcoxStratPH.m    | 265 +++++++++++
 IQM Tools/IQMlite/tools/survival/IQMhr.m      |  41 ++
 IQM Tools/IQMlite/tools/survival/IQMkm.m      |  59 +++
 IQM Tools/IQMlite/tools/survival/IQMphTest.m  | 131 ++++++
 IQM Tools/IQMlite/tools/survival/IQMxext.m    | 114 +++++
 .../tools/templates/scriptTemplateIQM.m       |  66 +--
 IQM Tools/IQMpro/Contents.m                   |   2 +-
 IQM Tools/IQMpro/SETUP_PATHS_TOOLS_IQMPRO.m   |   7 +-
 .../auxiliary/data/checkDataColumnsIQM.m      |   6 +-
 IQM Tools/IQMpro/release.txt                  |   5 +
 .../01-MEXmodels/CVODEMEX/lib/CVODEmex25.a    | Bin 0 -> 371730 bytes
 .../IQMaddNLMEinfo2data.m                     |   8 +-
 .../IQMcheckGeneralDataFormat.m               |  24 +-
 .../IQMcheckGeneralDataFormatHeader.m         |   9 +-
 .../IQMcreateGeneralDataset.m                 |   2 +-
 .../expandGeneralNR_DOSES_intervalIQM.m       |  16 +-
 .../IQMconvertGeneral2TaskDataset.m           |   6 +-
 .../04-DataExploration/IQMexploreBLLOQdata.m  |   2 +-
 .../04-DataExploration/IQMexploreIndivData.m  |  20 +
 .../IQMexploreIndivDataRelation.m             |   5 +-
 .../IQMexplorePKdataWrapper.m                 |  68 ++-
 .../IQMexploreSummaryStats.m                  |  14 +-
 .../02-BLOQhandling/IQMhandleBLOQdata.m       |   2 +-
 .../IQMconvertTask2NLMEdataset.m              |   7 +-
 .../01-MONOLIX/IQMcreateMLXTRANfile.m         |  19 +-
 .../01-MONOLIX/IQMcreateMONOLIXproject.m      |   4 +-
 .../sampleMONOLIXpopulationParametersIQM.m    |   9 +-
 ...AndChangeModelSyntax4NONMEMconversionIQM.m |   5 +-
 .../auxiliary/parseNONMEMresultsIQM.m         |   1 +
 .../IQMcreateNLMEproject.m                    |   1 +
 .../IQMgetNLMEfitIndivPopMeanParam.m          |  60 ++-
 .../IQMfitanalysisConditionNumber.m           |  78 ++++
 .../IQMfitanalysisShrinkage.m                 |  31 ++
 .../08-NLMEfitSummary/IQMfitsummaryTable.m    |   8 +-
 .../IQMfitsummaryTableSingle.m                | 420 ++++++++++++++++++
 .../tools/09-NLMEtools/IQMcompareModels.m     |   8 +-
 .../IQMcovariateAssessmentUncertainty.m       |   2 +-
 .../IQMpro/tools/09-NLMEtools/IQMcreateVPC.m  |  15 +
 .../09-NLMEtools/IQMcreateVPCstratified.m     |  15 +
 .../createGeneralLinear_NONMEMprojectIQM.m    |   4 +-
 59 files changed, 2683 insertions(+), 217 deletions(-)
 create mode 100644 IQM Tools/IQMlite/auxiliary/compliance/IQMoutputTable.m
 create mode 100644 IQM Tools/IQMlite/auxiliary/graphics/ps/gs/fonts/EMPTY.txt
 create mode 100644 IQM Tools/IQMlite/auxiliary/graphics/ps/gs/lib/EMPTY.txt
 create mode 100644 IQM Tools/IQMlite/tools/plots/IQMplotKM.m
 create mode 100644 IQM Tools/IQMlite/tools/plots/IQMplotPercentStratified.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMcoxExt.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMcoxPH.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMcoxStratPH.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMhr.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMkm.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMphTest.m
 create mode 100644 IQM Tools/IQMlite/tools/survival/IQMxext.m
 create mode 100644 IQM Tools/IQMpro/tools/01-MEXmodels/CVODEMEX/lib/CVODEmex25.a
 create mode 100644 IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisConditionNumber.m
 create mode 100644 IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisShrinkage.m
 create mode 100644 IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTableSingle.m

diff --git a/IQM Tools/IQMlite/Contents.m b/IQM Tools/IQMlite/Contents.m
index 4e9614b..ef8c539 100644
--- a/IQM Tools/IQMlite/Contents.m	
+++ b/IQM Tools/IQMlite/Contents.m	
@@ -1,5 +1,5 @@
 % IQM Tools Lite
-% Version 1.2.1 (R2015B) 30.04.2016
+% Version 1.2.2 (R2015B) 02.01.2017
 % 
 % IQMlite
 % =======
@@ -171,6 +171,7 @@
 % 	IQMplot                                 - IQMplot - plots given data.
 %   IQMplot2                                - IQMplot2 - plots bar diagrams for given data.
 %   IQMplotCatCat                           - This function plots a "bubble" plot for categorical data to assess correlations
+%   IQMplotKM                               - Kaplan-Meier plot
 % 
 % functions
 %   These functions can be used on IQMmodels but on command line as well. When used in models then these are also working when converting the IQMmodel to C-code
@@ -301,7 +302,16 @@
 % 	kin_uncomp_inihib_irr                   - Uncompetitive inhibition (irreversible) kinetics
 % 	kin_uncomp_inihib_rev                   - Uncompetitive inhibition (reversible) kinetics
 % 	kin_uni_uni_rev                         - Uni uni reversible kinetics
-%     
+% 
+% survival
+%   IQMcoxExt 								- Parameter estimation for the extended Cox model
+%   IQMcoxPH								- Parameter estimation for the Cox proportional hazards model
+%   IQMcoxStratPH 							- Parameter estimation for the Stratified Cox proportional hazards model
+%   IQMhr 									- Hazard ratio estimate for Cox models
+%   IQMkm 									- Kaplan-Meier curves estimation and plot (see also IQMplotKM)
+%   IQMphTest 								- Schoenfeld residuals test for the proportional hazards assumption
+%   IQMxext 								- Extension to time varying covariates (input to IQMcoxExt)
+%    
 % Auxiliary
 % =========
 % 	getDefaultIntegratorOptionsIQM          - Inside this function/file default values for integrator options are set. This function also retrieves them
diff --git a/IQM Tools/IQMlite/auxiliary/compliance/IQMoutputTable.m b/IQM Tools/IQMlite/auxiliary/compliance/IQMoutputTable.m
new file mode 100644
index 0000000..4fbd284
--- /dev/null
+++ b/IQM Tools/IQMlite/auxiliary/compliance/IQMoutputTable.m	
@@ -0,0 +1,61 @@
+function [text] = IQMoutputTable(xtable,xtitle,xfooter,filename)
+% This function allows to convert a MATLAB table to a report table
+% formatted to be compatible with IQReport.
+%
+% [SYNTAX]
+% [text] = IQMoutputTable(xtable,xtitle,xfooter,filename)
+%
+% [INPUT]
+% xtable:       MATLAB table
+% xtitle:       String with the table caption (default: '')
+% xfooter:      String with the table footer (default: '')
+% filename:     If a filename is provided then the table is exported to
+%               filename.txt. (default: '');
+%
+% [OUTPUT]
+% The text is written to a file.              
+
+% <<<COPYRIGHTSTATEMENT - IQM TOOLS LITE>>>
+
+% Handle variable input arguments
+if nargin<4,
+    error('Please provide all input arguments.');
+end
+
+% Check table
+if ~istable(xtable),
+    error('First input argument is not a MATLAB table.');
+end
+
+% Get info
+Ncols               = size(xtable,2)+1;
+headerNames         = xtable.Properties.VariableNames;
+
+% Generate table-content as cell-array
+tableCells          = table2cell(xtable);
+
+% Add <TR> info
+tableRows           = cell(size(tableCells,1),1); 
+tableRows(1:end)    = {'<TR>'};
+tableCells          = [tableRows tableCells];
+
+% Add <TH> info
+tableCells          = [ [{'<TH>'} headerNames]; tableCells];
+
+% Add <TT> info
+tableTitle          = cell(1,Ncols);
+tableTitle{1}       = '<TT>';
+tableTitle{2}       = xtitle;
+tableCells          = [tableTitle; tableCells];
+
+% Add <TF> info
+if ~isempty(xfooter),
+    tableFooter         = cell(1,Ncols);
+    tableFooter{1}      = '<TF>';
+    tableFooter{2}      = xfooter;
+    tableCells          = [tableCells; tableFooter];
+end
+
+% Convert to report table
+IQMconvertCellTable2ReportTable(tableCells,'report',filename);
+
diff --git a/IQM Tools/IQMlite/auxiliary/graphics/ps/gs/fonts/EMPTY.txt b/IQM Tools/IQMlite/auxiliary/graphics/ps/gs/fonts/EMPTY.txt
new file mode 100644
index 0000000..e69de29
diff --git a/IQM Tools/IQMlite/auxiliary/graphics/ps/gs/lib/EMPTY.txt b/IQM Tools/IQMlite/auxiliary/graphics/ps/gs/lib/EMPTY.txt
new file mode 100644
index 0000000..e69de29
diff --git a/IQM Tools/IQMlite/auxiliary/output/IQMgetcolors.m b/IQM Tools/IQMlite/auxiliary/output/IQMgetcolors.m
index c2923b4..c9e5d20 100644
--- a/IQM Tools/IQMlite/auxiliary/output/IQMgetcolors.m	
+++ b/IQM Tools/IQMlite/auxiliary/output/IQMgetcolors.m	
@@ -86,7 +86,7 @@ colors = [
 % 		   0.85 0.7 1
 % 		   1 0.6 0.78];
       
-lines = {'o-','x-','+-','*-','s-','d-','v-','^-','<-','>-','p-','h-',       'o--','x--','+--','*--','s--','d--','v--','^--','<--','>--','p--','h--',     'o-.','x-.','+-.','*-.','s-.','d-.','v-.','^-.','<-.','>-.','p-.','h-.',   'o:','x:','+:','*:','s:','d:','v:','^:','<:','>:','p:','h:'   };
+lines = {'-' '--' ':' '-.' 'o-','x-','+-','*-','s-','d-','v-','^-','<-','>-','p-','h-',       'o--','x--','+--','*--','s--','d--','v--','^--','<--','>--','p--','h--',     'o-.','x-.','+-.','*-.','s-.','d-.','v-.','^-.','<-.','>-.','p-.','h-.',   'o:','x:','+:','*:','s:','d:','v:','^:','<:','>:','p:','h:'   };
       
 dots = {'o','x','+','*','s','d','v','^','<','>','p','h'};      
 
diff --git a/IQM Tools/IQMlite/auxiliary/usernameIQM.m b/IQM Tools/IQMlite/auxiliary/usernameIQM.m
index fdc03d5..d1d8729 100644
--- a/IQM Tools/IQMlite/auxiliary/usernameIQM.m	
+++ b/IQM Tools/IQMlite/auxiliary/usernameIQM.m	
@@ -1,4 +1,4 @@
-function [username] = usernameIQM(text)
+function [username] = usernameIQM()
 % usernameIQM: Get the name of the current user
 
 % <<<COPYRIGHTSTATEMENT - IQM TOOLS LITE>>>
diff --git a/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextBCToModelIQM.m b/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextBCToModelIQM.m
index 54955e1..e7f0b4a 100644
--- a/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextBCToModelIQM.m	
+++ b/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextBCToModelIQM.m	
@@ -698,7 +698,7 @@ for k=1:length(stateConstraintInfo),
     highbound = stateConstraintInfo(k).highbound;
     ODE = stateConstraintInfo(k).ODE;
     % add a factor "constraints_factor_statename" to the ODE for the state
-    IQMstructure.states(k).ODE = ['constraints_factor_' statename ' * (' ODE ')'];
+    IQMstructure.states(stateindex).ODE = ['constraints_factor_' statename ' * (' ODE ')'];
     % define the "constraints_factor_statename" in the reactions
     IQMstructure.reactions(end+1).name = ['constraints_factor_' statename];
     % construct the piecewise expression
diff --git a/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextToModelIQM.m b/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextToModelIQM.m
index 74dbccf..aa5dbe8 100644
--- a/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextToModelIQM.m	
+++ b/IQM Tools/IQMlite/classeshandling/modelhandling/auxiliary/text2IQMmodel/convertTextToModelIQM.m	
@@ -132,7 +132,7 @@ for k=1:length(stateConstraintInfo),
     highbound = stateConstraintInfo(k).highbound;
     ODE = stateConstraintInfo(k).ODE;
     % add a factor "constraints_factor_statename" to the ODE for the state
-    IQMstructure.states(k).ODE = ['constraints_factor_' statename ' * (' ODE ')'];
+    IQMstructure.states(stateindex).ODE = ['constraints_factor_' statename ' * (' ODE ')'];
     % define the "constraints_factor_statename" in the reactions
     IQMstructure.reactions(end+1).name = ['constraints_factor_' statename];
     % construct the piecewise expression
diff --git a/IQM Tools/IQMlite/release.txt b/IQM Tools/IQMlite/release.txt
index 2fbaf0c..4144d8a 100644
--- a/IQM Tools/IQMlite/release.txt	
+++ b/IQM Tools/IQMlite/release.txt	
@@ -1,6 +1,12 @@
 Release Notes IQM Tools Lite
 ============================
 
+Version 1.2.2 (02.01.2017)
+--------------------------
+- Minor big fixes
+- Improved graphical output
+- Survival analysis functions
+
 Version 1.2.1 (30.04.2016)
 ------------------------
 - Minor big fixes
diff --git a/IQM Tools/IQMlite/tools/dataset/IQMloadCSVdataset.m b/IQM Tools/IQMlite/tools/dataset/IQMloadCSVdataset.m
index 9bdc843..016ff07 100644
--- a/IQM Tools/IQMlite/tools/dataset/IQMloadCSVdataset.m	
+++ b/IQM Tools/IQMlite/tools/dataset/IQMloadCSVdataset.m	
@@ -190,11 +190,25 @@ if FLAG_HANDLE_SPECIAL_COLUMNS,
     end
     
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    % NaN values in DURATION exchange to 0
+    % If DATEDAY is of class datetime it should be converted to cellarray
+    % of strings
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     try
-        data.DURATION(isnan(data.DURATION)) = 0;
+        if strcmp(class(data.DATEDAY),'datetime'),
+            data.DATEDAY = cellstr(data.DATEDAY);
+        end
+    end
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % If VISNAME is numeric, convert to cell with empty
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    try
+        if isnumeric(data.VISNAME),
+            data.VISNAME = cell(height(data),1);
+            data.VISNAME(1:end) = {''};
+        end
     end
+    
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/IQM Tools/IQMlite/tools/plots/IQMplotCatCat.m b/IQM Tools/IQMlite/tools/plots/IQMplotCatCat.m
index db88c46..7f35f30 100644
--- a/IQM Tools/IQMlite/tools/plots/IQMplotCatCat.m	
+++ b/IQM Tools/IQMlite/tools/plots/IQMplotCatCat.m	
@@ -1,10 +1,16 @@
-function [] = IQMplotCatCat(data,catNames)
+function [] = IQMplotCatCat(data,catNames,compareNames,options)
 % This function plots a "bubble" plot for categorical data. This allows to
 % at least graphically explore correlations between different categorical
 % covariates. Areas of circles are proportional to the fraction.
 %
+% There are 2 cases. Either all categorical covariates are compared to each
+% other (only catNames provided). Or categorical covariates are compared to
+% categorical covariates, defined by compareNames.
+%
 % [SYNTAX]
 % [] = IQMplotCatCat(data,catNames)
+% [] = IQMplotCatCat(data,catNames,compareNames)
+% [] = IQMplotCatCat(data,catNames,compareNames,options)
 %
 % [INPUT]
 % data:         Matlab dataset. Each column corresponds to a variable
@@ -12,7 +18,21 @@ function [] = IQMplotCatCat(data,catNames)
 %               defined in "catNames" need to be present in
 %               the dataset and contain numerical categorical data.
 % catNames:     Cell-array with names of categorical variables
-% options:      MATLAB structure with optional arguments
+% compareNames: Cell-array with names of categorical variables to compare
+%               with the categorical covariates in catNames
+% options:      Matlab structure with additional options
+%       options.percent: Show percentages instead of numbers. Percentages
+%                        are calculated relative to the number in the bins
+%                        of the catNames and only displayed if compared to
+%                        compareNames. =0 do show numbers and percent. =1 show
+%                        percent (default) =2 show numbers and percent.
+%       options.bubbleSize: Factor to change size of bubbles (default: 500)
+%       options.fontSizeText: Fontsize for the number and percent text
+%                             (default: 10)
+%       options.hideFirstRow: Hides first row with bars in case
+%                             compareNames is used. =0: not hide (default),
+%                             =1: hide (default)
+%       options.color:  Color of bubbles default: 0.4*[1 1 1]
 %
 % [OUTPUT]
 % Plot
@@ -24,74 +44,253 @@ if ~istable(data),
     error('Input data needs to be provided as MATLAB table.');
 end
 
-% Define plot color
-color = 0.4*[1 1 1];
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Check if dataset contains defined columns
+% Check which case it is and handle each case completely separately
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-for k=1:length(catNames),
-    try 
-        data.(catNames{k}); 
-    catch
-        error(sprintf('Please check if "%s" is a column in the dataset!',catNames{k}));
-    end
+if nargin==2,
+    compareNames = {};
+    options = [];
 end
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Keep only selected columns 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-data = data(:,catNames);
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% If is table then convert to double
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-if istable(data),
-    data = table2array(data);
+if nargin==3,
+    options = [];
 end
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Keep only selected columns
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-% % Default settings
-% % Flag to take log of values
-% LogFlag = 0;
-% % Coloring
-% CorrThres = 0.3; % Pearson correlation coefficient threshold for different background color
-% AxisColor = [1 .2 .2]; %color of axis when 
-% 
-% % Get optional values if defined
-% try names = OPTIONS.names; catch, end;
-% try LogFlag = OPTIONS.LogFlag; catch, end;
-% try CorrThres = OPTIONS.CorrThres; catch, end;
-% try AxisColor = OPTIONS.AxisColor; catch, end;
+try percentFlag = options.percent; catch, percentFlag = 1; end
+try bubbleSize  = options.bubbleSize; catch, bubbleSize  = 500; end
+try fontSizeText  = options.fontSizeText; catch, fontSizeText  = 10; end
+try hideFirstRow  = options.hideFirstRow; catch, hideFirstRow  = 0; end
+try color  = options.color; catch, color = 0.4*[1 1 1]; end
 
 % Subindex properties
-Spacing = 0;
-Padding = 0;
+Spacing = 0.0005;
+Padding = 0.001;
 Margin  = .1;
 
 % Define fontsize
 if length(catNames)<=6,
     FONTSIZE = 10;
 else
-    FONTSIZE = 8;
+    FONTSIZE = 10;
 end
 
-clf;
-n = length(catNames);
-for ir=1:n
-    ystr = catNames{ir};
-    y = data(:,ir);
-    for ic=1:ir
-        xstr = catNames{ic};
-        x = data(:,ic);
-        ip = (ir-1)*n+ic;
-        subaxis(n,n,ip,'Spacing',Spacing,'Padding',Padding,'Margin',Margin);
-        if ir==ic % plot "histogram"
-            
+if isempty(compareNames),
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Handle first case (compare all catNames with each other)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Check if dataset contains defined columns
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    for k=1:length(catNames),
+        try
+            data.(catNames{k});
+        catch
+            error(sprintf('Please check if "%s" is a column in the dataset!',catNames{k}));
+        end
+    end
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Keep only selected columns
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    data = data(:,catNames);
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % If is table then convert to double
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    if istable(data),
+        data = table2array(data);
+    end
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Keep only selected columns
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+       
+    clf;
+    n = length(catNames);
+    for ir=1:n
+        ystr = catNames{ir};
+        y = data(:,ir);
+        for ic=1:ir
+            xstr = catNames{ic};
+            x = data(:,ic);
+            ip = (ir-1)*n+ic;
+            subaxis(n,n,ip,'Spacing',Spacing,'Padding',Padding,'Margin',Margin);
+            if ir==ic % plot "histogram"
+                
+                xu = unique(x);
+                xu = xu(~isnan(xu));
+                b  = zeros(size(xu));
+                nu = length(xu);
+                for i=1:nu
+                    b(i) = sum(x==xu(i));
+                end
+                h = bar(1:nu,b,0.5);
+                
+                % Write out numbers
+                for knr=1:length(b),
+                    aaa = get(gca,'YLim');
+                    text(knr,b(knr)+max(aaa)*0.02,sprintf('%d',b(knr)),'VerticalAlign','bottom','HorizontalAlign','center','FontSize',fontSizeText+2);
+                end
+                
+                set(h,'FaceColor',color)
+                set(gca,'XLim',[0.5 nu+.5]);
+                title(xstr,'Interpreter','none')
+                set(gca,'YTick',[]);
+                set(gca,'XTick',[]);
+                set(gca,'YLim',[0 max(b)*1.3]);
+                set(gca,'FontSize',fontSizeText);
+                              
+                if ir==1,
+                    ylabel('#','FontSize',8);
+                end
+                
+                if ir==n
+                    xlabel(xstr,'Interpreter','none','FontSize',fontSizeText);
+                    set(gca,'XTick',1:length(xu))
+                    set(gca,'XTickLabel',xu);
+                end
+                
+            else % plot bubble plot
+                % Exchange x categories for numbers 1:N
+                xu = unique(x);
+                iu = {};
+                for k=1:length(xu),
+                    iu{k} = find(x==xu(k));
+                end
+                xn = NaN(size(x));
+                for k=1:length(iu),
+                    xn(iu{k}) = k;
+                end
+                
+                % Exchange y categories for numbers 1:N
+                yu = unique(y);
+                iu = {};
+                for k=1:length(yu),
+                    iu{k} = find(y==yu(k));
+                end
+                yn = NaN(size(y));
+                for k=1:length(iu),
+                    yn(iu{k}) = k;
+                end
+                
+                % Find unique pairs of xn and yn (these will be plotted in the
+                % bubble plot
+                [pairs,~,b] = unique([xn yn],'rows');
+                
+                % Determine number of rows in [xn yn] with these pairs
+                nr_pairs = NaN(size(pairs,1),1);
+                
+                for k=1:size(pairs,1),
+                    nr_pairs(k) = sum(b==k);
+                end
+                
+                % Determine relative number of pairs in fraction
+                nr_pairs_fraction = nr_pairs/sum(nr_pairs);
+                
+                % Determine size based on fraction
+                use_size = bubbleSize*nr_pairs_fraction;
+                
+                % Determine default color
+                color_use = color(ones(1,length(nr_pairs)),:);
+                
+                % Plot
+                scatter(pairs(:,1),pairs(:,2), use_size, color_use, 'filled', 'MarkerEdgeColor', 'none');
+                
+                % Annotate
+                set(gca,'XLim',[min(xn)-0.5 max(xn)+0.5])
+                set(gca,'YLim',[min(yn)-0.5 max(yn)+0.5])
+                
+                % Write out percentage as text
+                for knr=1:size(pairs,1),
+                    text(pairs(knr,1)+0.025,pairs(knr,2)+0.2,sprintf('%d',nr_pairs(knr)),'FontSize',FONTSIZE);
+                end
+                
+                set(gca,'XTick',1:length(xu))
+                set(gca,'YTick',1:length(yu))
+                set(gca,'FontSize',fontSizeText);
+                
+                if ic==1
+                    ylabel(ystr,'Interpreter','none','FontSize',fontSizeText);
+                    set(gca,'YTickLabel',yu);
+                else
+                    set(gca,'YTickLabel',[]);
+                end
+                
+                if ir==n
+                    xlabel(xstr,'Interpreter','none','FontSize',fontSizeText);
+                    set(gca,'XTickLabel',xu);
+                else
+                    set(gca,'XTickLabel',[]);
+                end
+                
+                grid on;
+                
+            end
+        end
+    end
+    
+else
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Handle second case (compare all catNames with compareNames)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Check if dataset contains defined columns
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    for k=1:length(catNames),
+        try
+            data.(catNames{k});
+        catch
+            error(sprintf('Please check if "%s" is a column in the dataset!',catNames{k}));
+        end
+    end
+    
+    for k=1:length(compareNames),
+        try
+            data.(compareNames{k});
+        catch
+            error(sprintf('Please check if "%s" is a column in the dataset!',compareNames{k}));
+        end
+    end
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Keep only selected columns
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    dataCompare = data(:,compareNames);
+    data        = data(:,catNames);
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % If is table then convert to double
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    if istable(data),
+        data = table2array(data);
+    end
+    if istable(dataCompare),
+        dataCompare = table2array(dataCompare);
+    end
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Options / fontsizes
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+       
+    clf;
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % First row is frequencies of catNames
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    if hideFirstRow==0,
+        ncols = length(catNames);
+        nrows = 1+length(compareNames);
+        for ir=1:ncols
+            ystr = catNames{ir};
+            y = data(:,ir);
+            xstr = catNames{ir};
+            x = data(:,ir);
+            ip = ir;
+            subaxis(nrows,ncols,ip,'Spacing',Spacing,'Padding',Padding,'Margin',Margin);
+            % Plot frequencies
             xu = unique(x);
             xu = xu(~isnan(xu));
             b  = zeros(size(xu));
@@ -100,24 +299,54 @@ for ir=1:n
                 b(i) = sum(x==xu(i));
             end
             h = bar(1:nu,b,0.5);
-            set(h,'FaceColor',0.4*[1 1 1])
+            grid on
+            set(gca,'FontSize',fontSizeText);
+            
+            % Write out numbers
+            for knr=1:length(b),
+                aaa = get(gca,'YLim');
+                text(knr,b(knr)+max(aaa)*0.02,sprintf('%d',b(knr)),'VerticalAlign','bottom','HorizontalAlign','center','FontSize',fontSizeText+2);
+            end
+            
+            set(h,'FaceColor',color)
             set(gca,'XLim',[0.5 nu+.5]);
             title(xstr,'Interpreter','none')
-            set(gca,'YTick',[]);
+%             set(gca,'YTick',[]);
+            if ir>1,
+                set(gca,'YTickLabel','');
+            end
             set(gca,'XTick',[]);
-            set(gca,'YLim',[0 length(x)]);
+            set(gca,'YLim',[0 max(b)*1.3]);
             
             if ir==1,
                 ylabel('#','FontSize',8);
             end
+        end
+        offset = 1;
+    else
+        ncols = length(catNames);
+        nrows = length(compareNames);
+        offset = 0;
+    end
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Next rows is correlation of catNames with compareNames
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Cycle through compareNames
+    for kcompare=1:length(compareNames),
+        ir = kcompare+offset;
+        ystr = compareNames{kcompare};
+        y = dataCompare(:,kcompare);
+        
+        % Cycle through covNames
+        for kcov=1:length(catNames),
+            ic = kcov;
+            xstr = catNames{ic};
+            x = data(:,ic);
+            ip = (ir-1)*ncols+ic;
+            subaxis(nrows,ncols,ip,'Spacing',Spacing,'Padding',Padding,'Margin',Margin);
             
-            if ir==n
-               xlabel(xstr,'Interpreter','none','FontSize',FONTSIZE);
-               set(gca,'XTick',1:length(xu))
-               set(gca,'XTickLabel',xu);
-            end
-            
-        else % plot bubble plot            
+            % plot bubble plot
             % Exchange x categories for numbers 1:N
             xu = unique(x);
             iu = {};
@@ -128,7 +357,7 @@ for ir=1:n
             for k=1:length(iu),
                 xn(iu{k}) = k;
             end
-
+            
             % Exchange y categories for numbers 1:N
             yu = unique(y);
             iu = {};
@@ -138,7 +367,7 @@ for ir=1:n
             yn = NaN(size(y));
             for k=1:length(iu),
                 yn(iu{k}) = k;
-            end            
+            end
             
             % Find unique pairs of xn and yn (these will be plotted in the
             % bubble plot
@@ -155,31 +384,38 @@ for ir=1:n
             nr_pairs_fraction = nr_pairs/sum(nr_pairs);
             
             % Determine size based on fraction
-            use_size = 500*nr_pairs_fraction;
+            use_size = bubbleSize*nr_pairs_fraction;
             
             % Determine default color
             color_use = color(ones(1,length(nr_pairs)),:);
             
             % Plot
             scatter(pairs(:,1),pairs(:,2), use_size, color_use, 'filled', 'MarkerEdgeColor', 'none');
-
+            
             % Annotate
             set(gca,'XLim',[min(xn)-0.5 max(xn)+0.5])
             set(gca,'YLim',[min(yn)-0.5 max(yn)+0.5])
             
+            % Write out numbers as text 
+            for knr=1:size(pairs,1),
+                textShow = sprintf('%d',nr_pairs(knr));
+                text(pairs(knr,1)+0.025,pairs(knr,2)+0.2,textShow,'FontSize',FONTSIZE);
+            end
+            
             set(gca,'XTick',1:length(xu))
-            set(gca,'YTick',1:length(yu))           
-                     
+            set(gca,'YTick',1:length(yu))
+            set(gca,'FontSize',fontSizeText);
+            
             if ic==1
-                ylabel(ystr,'Interpreter','none','FontSize',FONTSIZE);
+                ylabel(ystr,'Interpreter','none','FontSize',10);
                 set(gca,'YTickLabel',yu);
             else
                 set(gca,'YTickLabel',[]);
-            end   
-
-            if ir==n
-               xlabel(xstr,'Interpreter','none','FontSize',FONTSIZE);
-               set(gca,'XTickLabel',xu);
+            end
+            
+            if ir==nrows
+                xlabel(xstr,'Interpreter','none','FontSize',fontSizeText);
+                set(gca,'XTickLabel',xu);
             else
                 set(gca,'XTickLabel',[]);
             end
@@ -188,4 +424,21 @@ for ir=1:n
             
         end
     end
+    
+    % Adjust YLim on each row to same values
+    if length(catNames) > 1,
+        for krow=1:length(compareNames)+1,
+            YLimALL = [];
+            for kcol=1:length(catNames),
+                subaxis(length(compareNames)+1,length(catNames),(krow-1)*length(catNames)+kcol);
+                YLimALL = [YLimALL; get(gca,'YLim')];
+            end
+            YLimMin = min(YLimALL);
+            YLimMax = max(YLimALL);
+            for kcol=1:length(catNames),
+                subaxis(length(compareNames)+1,length(catNames),(krow-1)*length(catNames)+kcol);
+                set(gca,'YLim',[YLimMin(1) YLimMax(2)]);
+            end
+        end
+    end
 end
\ No newline at end of file
diff --git a/IQM Tools/IQMlite/tools/plots/IQMplotCovarianceCat.m b/IQM Tools/IQMlite/tools/plots/IQMplotCovarianceCat.m
index 9d6207b..b654e36 100644
--- a/IQM Tools/IQMlite/tools/plots/IQMplotCovarianceCat.m	
+++ b/IQM Tools/IQMlite/tools/plots/IQMplotCovarianceCat.m	
@@ -1,7 +1,7 @@
 function [] = IQMplotCovarianceCat(data,contNames,catNames,options)
-% This function plots the covariance relationship between a list of 
+% This function plots the covariance relationship between a list of
 % continuous variables (contNames) and a list of categorical variables
-% (catNames), passed in "data".  
+% (catNames), passed in "data".
 %
 % [SYNTAX]
 % [] = IQMplotCovarianceCat(data,contNames,catNames)
@@ -11,13 +11,15 @@ function [] = IQMplotCovarianceCat(data,contNames,catNames,options)
 % data:         Matlab dataset. Each column corresponds to a variable
 %               and each row to a sample. The columns with the names
 %               defined in "contNames" and "catNames" need to be present in
-%               the dataset. 
+%               the dataset.
 % contNames:    Cell-array with names of continuous variables
 % catNames:     Cell-array with names of categorical variables
 % options:      MATLAB structure with optional arguments
 %
 %                   options.LogFlag:   =1 do log transform the variables,
 %                                      =0 do not transform (default: 0)
+%                   options.fontSizeText: Fontsize for the number and percent text
+%                                         (default: 10)
 %
 % [OUTPUT]
 % Plot
@@ -26,21 +28,22 @@ function [] = IQMplotCovarianceCat(data,contNames,catNames,options)
 
 LogFlag = 0;
 try LogFlag = options.LogFlag; catch, end
+try fontSizeText = options.fontSizeText; catch, fontSizeText = 10; end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Check if dataset contains defined columns
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 for k=1:length(contNames),
-    try 
-        data.(contNames{k}); 
-    catch, 
+    try
+        data.(contNames{k});
+    catch,
         error(sprintf('Please check if "%s" is a column in the dataset!',contNames{k}));
     end
 end
 for k=1:length(catNames),
-    try 
-        data.(catNames{k}); 
-    catch, 
+    try
+        data.(catNames{k});
+    catch,
         error(sprintf('Please check if "%s" is a column in the dataset!',catNames{k}));
     end
 end
@@ -57,7 +60,7 @@ Margin  = .1;
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 ncat = length(catNames);  %rows are the categorical covariates
 ncts = length(contNames);
-for icat=1:ncat    
+for icat=1:ncat
     xstr = catNames{icat};
     x = data.(xstr);
     
@@ -70,6 +73,7 @@ for icat=1:ncat
         
         ip=icat;
         subaxis(ncts+1,ncat,ip,'Spacing',Spacing,'Padding',Padding,'Margin',Margin);
+        grid on
         
         xu = unique(x);
         xu = xu(~isnan(xu));
@@ -79,17 +83,28 @@ for icat=1:ncat
             b(i) = sum(x==xu(i));
         end
         h = bar(1:nu,b,0.5);
-        set(h,'FaceColor',0.4*[1 1 1])
+        set(h,'FaceColor',0.6*[1 1 1])
         set(gca,'XLim',[0.5 nu+.5]);
+        set(gca,'FontSize',fontSizeText);
+        
+        grid on
+        
+        % Write out numbers
+        for knr=1:length(b),
+            aaa = get(gca,'YLim');
+            text(knr,b(knr)+max(aaa)*0.02,sprintf('%d',b(knr)),'VerticalAlign','bottom','HorizontalAlign','center','FontSize',fontSizeText+2);
+        end
+        
         title(xstr,'Interpreter','none')
         if icat==1
             ylabel('#','Interpreter','none');
         else
-            set(gca,'YTick',[]);
+            %             set(gca,'YTick',[]);
+            set(gca,'YTickLabel','');
         end
         
         set(gca,'XTick',[]);
-        set(gca,'YLim',[0 length(x)]);
+        set(gca,'YLim',[0 max(b)*1.3]);
         
         for icts=1:ncts
             ystr = contNames{icts};
@@ -112,7 +127,7 @@ for icat=1:ncat
                     M(x==xx(i),i) = y(x==xx(i));
                 end
                 OPTIONSbox.NumFlag = 0;
-                OPTIONSbox.BoxColor = 0.4*[1 1 1];
+                OPTIONSbox.BoxColor = 0.6*[1 1 1];
                 OPTIONSbox.BoxWidth = .5;
                 OPTIONSbox.MedianWidth = .7;
                 OPTIONSbox.OutlierColor = 0.4*[1 1 1];
@@ -120,6 +135,8 @@ for icat=1:ncat
                 OPTIONSbox.MedianColor = [0 0 0];
                 plotboxIQM(M,1:length(xx),OPTIONSbox);
                 set(gca,'XLim',[.5 length(xx)+.5]);
+                grid on
+                set(gca,'FontSize',fontSizeText);
                 
                 set(gca,'XTick',1:length(xx));
                 if icts<ncts
@@ -132,8 +149,11 @@ for icat=1:ncat
                 end
                 if icat==1
                     ylabel(ystr,'Interpreter','none');
+                else
+                    %                     set(gca,'YTick',[]);
+                    set(gca,'YTickLabel','');
                 end
-                set(gca,'YTick',[]);
+                %                 set(gca,'YTick',[]);
                 if min(y)~=max(y),
                     set(gca,'YLim',[min(y) max(y)]);
                 else
@@ -141,6 +161,21 @@ for icat=1:ncat
                 end
             end
         end
-        set(gca,'YTick',[]);
+        %         set(gca,'YTick',[]);
+    end
+end
+
+% Adjust YLim on each row to same values
+for krow=1:ncts+1,
+    YLimALL = [];
+    for kcol=1:ncat,
+        subaxis(ncts+1,ncat,(krow-1)*ncat+kcol);
+        YLimALL = [YLimALL; get(gca,'YLim')];
     end
+    YLimMin = min(YLimALL);
+    YLimMax = max(YLimALL);
+    for kcol=1:ncat,
+        subaxis(ncts+1,ncat,(krow-1)*ncat+kcol);
+        set(gca,'YLim',[min(YLimMin) max(YLimMax)]);
+    end    
 end
diff --git a/IQM Tools/IQMlite/tools/plots/IQMplotKM.m b/IQM Tools/IQMlite/tools/plots/IQMplotKM.m
new file mode 100644
index 0000000..200b517
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/plots/IQMplotKM.m	
@@ -0,0 +1,101 @@
+function [ST50_output_cellTable,ST50_output] = IQMplotKM(TIME,CENS,color,line,type,marksFlag,CIflag)
+% Plots a Kaplan Meier curve.
+%
+% [SYNTAX]
+% [ST50_output] = IQMplotKM(TIME,CENS)
+% [ST50_output] = IQMplotKM(TIME,CENS,color)
+% [ST50_output] = IQMplotKM(TIME,CENS,color,line)
+% [ST50_output] = IQMplotKM(TIME,CENS,color,line,type)
+% [ST50_output] = IQMplotKM(TIME,CENS,color,line,type,marksFlag)
+% [ST50_output] = IQMplotKM(TIME,CENS,color,line,type,marksFlag,CIflag)
+%
+% [INPUT]
+% TIME:         vector with time information for time to event
+% CENS:         vector with censoring information (0: uncensored, 1: right censored)
+% color:        [r g b] color default: black
+% line:         Line style (default: "-")
+% type:         "Survivor" (default) or "cumulative hazard" or "cdf"
+% marksFlag:    =1: censoring marks are plotted (default). =0 not plotted
+% CIflag:       =1: plots 95% CI. =0 not plotted (default)
+%
+% [OUTPUT]
+% ST50_output: [50% survival time, 95% CI - lower and upper bound]
+
+% <<<COPYRIGHTSTATEMENT - IQM TOOLS LITE>>>
+
+if nargin<3,
+    color = [0 0 0];
+end
+if nargin<4,
+    line = '-';
+end
+if nargin<5,
+    type = 'survivor';
+end
+if nargin<6,
+    marksFlag = 1;
+end
+if nargin<7,
+    CIflag = 0;
+end
+
+% Remove NaN values from TIME and CENS (paired)
+ixNAN           = find(isnan(TIME));
+TIME(ixNAN)     = [];
+CENS(ixNAN)     = [];
+
+% Plot KM curve
+[f,x,flo,fup]   = ecdf(TIME,'censoring',CENS,'function',type);
+stairs(x,f,line,'LineWidth',1,'Color',color,'LineWidth',2); hold on;
+
+% Plot marks for censored data
+if marksFlag,
+    xi = TIME(logical(CENS));
+    [~,~,step] = histcounts(xi,x);
+    step(xi>max(TIME)) = length(x);
+    ixstep0 = find(step==0);
+    xi(ixstep0) = [];
+    step(ixstep0) = [];
+    fi = f(step);
+    plot(xi,fi, 's','MarkerEdgeColor','white','MarkerFaceColor','white','MarkerSize',8)
+    plot(xi,fi, 'b+','color',color,'MarkerSize',8,'LineWidth',1)
+end
+
+% Plot 95% confidence interval
+if CIflag,
+    IQMplotfill(x,flo,fup,color,0.1); hold on
+end
+
+% Annotate
+grid on
+set(gca,'FontSize',12);
+xlabel('Time','FontSize',14);
+ylabel('Probability','FontSize',14);
+set(gca,'YLim',[-0.05 1.05]);
+
+% Determine 50% survival time and 95% CI
+ix = find(f-0.5<0);
+if isempty(ix),
+    ST50 = NaN;
+else
+    ST50 = x(ix(1));
+end
+
+ix = find(flo-0.5<0);
+if isempty(ix),
+    ST50_CI_lo = NaN;
+else
+    ST50_CI_lo = x(ix(1));
+end
+
+ix = find(fup-0.5<0);
+if isempty(ix),
+    ST50_CI_up = NaN;
+else
+    ST50_CI_up = x(ix(1));
+end
+
+ST50_output = [ST50, ST50_CI_lo, ST50_CI_up];
+
+ST50_output_cellTable(1,1:3) = {'<TH>' '50% Survival Time' '95% CI'};
+ST50_output_cellTable(2,1:3) = {'<TR>' sprintf('%1.3g',ST50) sprintf('[%1.3g, %1.3g]',ST50_CI_lo,ST50_CI_up)};
diff --git a/IQM Tools/IQMlite/tools/plots/IQMplotPercentStratified.m b/IQM Tools/IQMlite/tools/plots/IQMplotPercentStratified.m
new file mode 100644
index 0000000..4e51adc
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/plots/IQMplotPercentStratified.m	
@@ -0,0 +1,200 @@
+function [yn_all_percent] = IQMplotPercentStratified(data,catNames,compareNames,options)
+% This function plots column plots / stacked bar plots for categorical outcomes (percent
+% of occurrence) stratified by categorical compare variables in
+% compareNames.
+%
+% Works for one catName and one compareName for now.
+%
+% [SYNTAX]
+% [] = IQMplotPercentStratified(data,catNames,compareNames)
+%
+% [INPUT]
+% data:         Matlab dataset. Each column corresponds to a variable
+%               and each row to a sample. The columns with the names
+%               defined in "catNames" need to be present in
+%               the dataset and contain numerical categorical data.
+% catNames:     Cell-array with names of categorical variables
+% compareNames: Cell-array with names of categorical variables to compare
+%               with the categorical covariates in catNames
+% options:      Matlab structure with additional options
+%       options.percent: Show percentages instead of numbers. Percentages
+%                        are calculated relative to the number in the bins
+%                        of the catNames and only displayed if compared to
+%                        compareNames. =0 do show numbers and percent. =1 show
+%                        percent (default) =2 show numbers and percent.
+%       options.fontSizeText: Fontsize for the number and percent text
+%                             (default: 10)
+%       options.color:  Color of bubbles default: 0.4*[1 1 1]
+%
+% [OUTPUT]
+% Plot
+
+% <<<COPYRIGHTSTATEMENT - IQM TOOLS LITE>>>
+
+% Check if data is table
+if ~istable(data),
+    error('Input data needs to be provided as MATLAB table.');
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check which case it is and handle each case completely separately
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+if nargin==3,
+    options = [];
+end
+
+try fontSizeText  = options.fontSizeText; catch, fontSizeText  = 10; end
+try hideFirstRow  = options.hideFirstRow; catch, hideFirstRow  = 0; end
+try color  = options.color; catch, color = 0.4*[1 1 1]; end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Check if dataset contains defined columns
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+for k=1:length(catNames),
+    try
+        data.(catNames{k});
+    catch
+        error(sprintf('Please check if "%s" is a column in the dataset!',catNames{k}));
+    end
+end
+
+for k=1:length(compareNames),
+    try
+        data.(compareNames{k});
+    catch
+        error(sprintf('Please check if "%s" is a column in the dataset!',compareNames{k}));
+    end
+end
+
+if length(catNames)>1 || length(compareNames)>1,
+    error('Only single entry in catNames and compareNames allowed.');
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Generate the plot
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Keep only selected columns
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+dataCompare = data(:,compareNames);
+data        = data(:,catNames);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% If is table then convert to double
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+if istable(data),
+    data = table2array(data);
+end
+if istable(dataCompare),
+    dataCompare = table2array(dataCompare);
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Options / fontsizes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Subindex properties
+Spacing = 0.00;
+Padding = 0.0005;
+Margin  = .1;
+
+% Define fontsize
+if length(catNames)<=6,
+    FONTSIZE = 10;
+else
+    FONTSIZE = 8;
+end
+
+% Define ncols and 
+ncols = length(catNames);
+nrows = length(compareNames);
+
+% Cycle through compareNames
+for kcompare=1:length(compareNames),
+    ir = kcompare;
+    ystr = compareNames{kcompare};
+    y = dataCompare(:,kcompare);
+    
+    % Cycle through covNames
+    for kcov=1:length(catNames),
+        ic = kcov;
+        xstr = catNames{ic};
+        x = data(:,ic);
+        ip = (ir-1)*ncols+ic;
+%         subaxis(nrows,ncols,ip,'Spacing',Spacing,'Padding',Padding,'Margin',Margin);
+        
+        % Exchange x categories for numbers 1:N
+        xu = unique(x);
+        % Find positions where the unique items are listed (to obtain
+        % number 1...N) ... stored in xn
+        iu = {};
+        for k=1:length(xu),
+            iu{k} = find(x==xu(k));
+        end
+        xn = NaN(size(x));
+        for k=1:length(iu),
+            xn(iu{k}) = k;
+        end
+        
+        % Exchange y categories for numbers 1:N
+        yu = unique(y);
+        iu = {};
+        for k=1:length(yu),
+            iu{k} = find(y==yu(k));
+        end
+        yn = NaN(size(y));
+        for k=1:length(iu),
+            yn(iu{k}) = k;
+        end
+        
+        % Find numbers of unique yn in unique xn
+        yn_all_percent = [];
+        for k=1:max(xn),
+            % Get number of xn values in bin k
+            NR_xnk = length(xn(xn==k));
+            % Get number of different yn values in bin k
+            yn_all = [];
+            for k2=1:max(yn),
+                ynk = sum(xn==k & yn==k2);
+                yn_all(k2) = ynk;
+            end
+            % Determine percent
+            yn_all_percent = [yn_all_percent; 100*yn_all/NR_xnk];
+        end
+        
+        % Plot
+        hp = bar(1:max(xn),yn_all_percent,'stacked');
+        
+%         hatch_combinations = {
+%         'fill'       0
+%         'single'     0
+%         'single'     45
+%         'single'     90
+%         'cross'      0
+%         'cross'      45
+%         };
+%     
+%         for k=1:min(length(hp),6),
+%             hatchfill2(hp(k),hatch_combinations{k,1},'HatchAngle',hatch_combinations{k,2});
+%         end
+        
+        % Annotate
+        if ic==1
+            ylabel('Percentage of x-bin','Interpreter','none','FontSize',12);
+        else
+            set(gca,'YTickLabel',[]);
+        end
+        
+        if ir==nrows
+            xlabel(xstr,'Interpreter','none','FontSize',FONTSIZE);
+            set(gca,'XTickLabel',xu);
+        else
+            set(gca,'XTickLabel',[]);
+        end
+        
+        set(gca,'YLim',[0 100]);
+        grid on;
+        
+    end
+end
diff --git a/IQM Tools/IQMlite/tools/plots/IQMplotfacetgrid.m b/IQM Tools/IQMlite/tools/plots/IQMplotfacetgrid.m
index 4604d19..0c5a883 100644
--- a/IQM Tools/IQMlite/tools/plots/IQMplotfacetgrid.m	
+++ b/IQM Tools/IQMlite/tools/plots/IQMplotfacetgrid.m	
@@ -230,7 +230,7 @@ for kX=1:length(allGroupX),
                         if dataXYC.colorgroup(1) == -1,
                             datatemp.color      = -1*ones(height(datatemp),1);
                         else
-                            datatemp.color      = find(allGROUPcolor==dataXYC.colorgroup(1))*ones(length(datatemp),1);
+                            datatemp.color      = find(allGROUPcolor==dataXYC.colorgroup(1))*ones(height(datatemp),1);
                         end
                     else
                         datatemp.color      = find(strcmp(allGROUPcolor,dataXYC.colorgroup{1}))*ones(height(datatemp),1);
diff --git a/IQM Tools/IQMlite/tools/plots/IQMplotpairwiseCorr.m b/IQM Tools/IQMlite/tools/plots/IQMplotpairwiseCorr.m
index 17eb019..ac2f85b 100644
--- a/IQM Tools/IQMlite/tools/plots/IQMplotpairwiseCorr.m	
+++ b/IQM Tools/IQMlite/tools/plots/IQMplotpairwiseCorr.m	
@@ -49,7 +49,7 @@ end
 LogFlag = 0;
 % Coloring
 CorrThres = 0.3; % Pearson correlation coefficient threshold for different background color
-AxisColor = [1 .2 .2]; %color of axis when 
+AxisColor = [1 .4 .4]; %color of axis when 
 
 % Get optional values if defined
 try names = OPTIONS.names; catch, end;
@@ -111,7 +111,7 @@ for ir=1:n
                 if abs(rho)>CorrThres
                     optcorr.Color     = AxisColor;
                 else
-                    optcorr.Color     = 0.4*[1 1 1];
+                    optcorr.Color     = 0.6*[1 1 1];
                 end
                 optcorr.LineColor = [0 0 0];
                 optcorr.TitleType = 'none';
@@ -131,7 +131,7 @@ for ir=1:n
                 else
                     str = '|corr|<0.01';
                 end
-                text(xt,yt,str,'Color',[0 0 0],'Hor','Center','Ver','Middle','FontWeight','Bold','Interpreter','none');
+                text(xt,yt,str,'Color',[0 0 0],'Hor','Right','Ver','Middle','FontWeight','Bold','Interpreter','none');
                 
                 if min(xuse)~=max(xuse),
                 set(gca,'XLim',[min(xuse) max(xuse)]);
diff --git a/IQM Tools/IQMlite/tools/plots/auxiliary/plotgeneralIQM.m b/IQM Tools/IQMlite/tools/plots/auxiliary/plotgeneralIQM.m
index 191c97d..1d65309 100644
--- a/IQM Tools/IQMlite/tools/plots/auxiliary/plotgeneralIQM.m	
+++ b/IQM Tools/IQMlite/tools/plots/auxiliary/plotgeneralIQM.m	
@@ -363,13 +363,13 @@ if showloessline,
             
             % Generate loess smoothed line
             if logX==0 && logY==0,
-                Ysmooth = smoothIQM(Xdata,Ydata,0.1,'loess');
+                Ysmooth = smoothIQM(Xdata,Ydata,0.5,'loess');
             elseif logX==1 && logY==0,
-                Ysmooth = smoothIQM(log(Xdata),Ydata,0.1,'loess');
+                Ysmooth = smoothIQM(log(Xdata),Ydata,0.5,'loess');
             elseif logX==0 && logY==1,
-                Ysmooth = exp(smoothIQM(Xdata,log(Ydata),0.1,'loess'));
+                Ysmooth = exp(smoothIQM(Xdata,log(Ydata),0.5,'loess'));
             else
-                Ysmooth = exp(smoothIQM(log(Xdata),log(Ydata),0.1,'loess'));
+                Ysmooth = exp(smoothIQM(log(Xdata),log(Ydata),0.5,'loess'));
             end
             % Handle color, etc.
             if datakkk.color(1) == -1,
diff --git a/IQM Tools/IQMlite/tools/survival/IQMcoxExt.m b/IQM Tools/IQMlite/tools/survival/IQMcoxExt.m
new file mode 100644
index 0000000..b7b77c4
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMcoxExt.m	
@@ -0,0 +1,202 @@
+function [stats,st] = IQMcoxExt(sID_ext,X_ext,d_ext,t_ext,e)
+% [stats,st] = IQMcoxExt(sID_ext,X_ext,d_ext,t_ext,e)
+%
+% Parameter estimation for the extended Cox model. This function uses as
+% input the output of IQMxext but with X_ext having new time-dependent 
+% columns added by the user (eg. the product of a column of X_ext with
+% t_ext. Survival time ties are handled using Efron's method. 
+%
+% Input
+% sID_ext: Extended subjects' IDs (nx1).
+% X_ext: Extended design matrix (nxp).
+% d_ext: Extended censorship status vector (nx1).
+% t_ext: Extended survival time vector (nx1).
+% e: Convergence epsilon (gradient's norm). Default 10^-3;
+%
+% Output
+% stats.Bhat: Estimated vector of the population regression parameters.
+% stats.CovBhat: Estimated covariance matrix of the population regression 
+% parameters.
+% stats.llh: Values of the maximum log-likelihood across the optimization 
+% process.
+% st: Termination state (1 for convergence and 0 otherwise).
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer..
+%   
+if nargin < 4
+    error('Too few inputs');
+elseif nargin < 5
+    e = 0.001;
+end;
+tic;
+[n,p] = size(X_ext);
+if (length(sID_ext)~=n) || (length(d_ext)~=n) || (length(t_ext)~=n)
+    error(['The design matrix X_ext, censorship status vector d_ext, time'...
+        ' vector t_ext and subject ID vector sID_ext must all have the same'...
+        ' number of rows.']);
+end;
+%indices of unique failure times in ft_ix (last index when ties happen)
+st_ix = find(d_ext==1);
+[~,ft_ix] = unique(t_ext(st_ix),'last');
+ft_ix = st_ix(ft_ix);
+%Starting values
+Bhat = zeros(p,1);
+
+%% Iterations
+nit = 50;
+gnorm = e+1;
+it = 1;
+display('Starting Newton-Raphson iterations');
+while (gnorm>e) && (it<=nit)    
+    gr = SStat_Gradient(X_ext,t_ext,Bhat,ft_ix);
+    He = SStat_Hessian(X_ext,t_ext,Bhat,ft_ix);
+    if (cond(He) < 1e+10)
+        invHe = He\eye(p);
+    else
+        [Vtemp,Dtemp] = eig(He);
+        invHe = Vtemp*diag(1./max(diag(Dtemp),1e-5))*Vtemp';
+    end
+    Bhat = Bhat - invHe*gr;
+    %log-likelihood
+    llh = SStat_Likelihood(X_ext,t_ext,Bhat,ft_ix);
+    display(['Likelihood at iteration ' num2str(it) ' : ' num2str(llh)]);
+    gnorm = norm(gr);
+    display(['Gradient norm: ' num2str(gnorm)]);     
+    it = it+1;
+end;  
+%% Termination
+z_sc = Bhat./sqrt(diag(-invHe));
+pval = 2*(1-normcdf(abs(z_sc),0,1));
+stats = struct('Bhat',Bhat,'zscore',z_sc,'pval',pval,'CovBhat',-invHe,'llh',llh);
+if (gnorm<=e)
+    st = 1;
+else
+    st = 0;
+    display(['Algorithm does not converge after ' num2str(nit)...
+        ' iterations!!!']);
+end;
+et = toc;
+display(['Total elapsed time is ' num2str(et) ' seconds']);
+end
+
+
+
+
+
+
+%% Likelihood, Gradient and Hessian
+
+function llk = SStat_Likelihood(X_ext,t_ext,Bhat,ft_ix)
+% 
+% Log-likelihood value.
+%
+% Input
+% X_ext: Extended design matrix.
+% t_ext: Extended survival time vector.
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X_ext (last index if any tie).
+%
+% Output
+% llk: Log-likelihood value.
+%
+llk = 0;
+nft = length(ft_ix);
+for j=1:nft
+    term = 0;
+    ties = ft_ix(t_ext(ft_ix(j))==t_ext(ft_ix));
+    nties = length(ties)-1;
+    lpr = X_ext(ties,:)*Bhat;
+    aux1 = sum(exp(lpr));
+    aux2 = sum(exp(X_ext(t_ext(ft_ix(j))==t_ext,:)*Bhat));
+    for l=0:nties
+        term = term + log(aux2-l*aux1/(nties+1));
+    end;
+    llk = llk + sum(lpr) - term;
+end;
+end
+
+
+function gr = SStat_Gradient(X_ext,t_ext,Bhat,ft_ix)
+% 
+% Gradient vector for the log-likelihood.
+%
+% Input
+% X_ext: Extended design matrix.
+% t_ext: Extended survival time vector.
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X_ext (last index if any tie).
+%
+% Output
+% gr: Gradient vector.
+%
+p = size(X_ext,2);
+gr = zeros(p,1);
+nft = length(ft_ix);
+for j=1:nft
+    ties = ft_ix(t_ext(ft_ix(j))==t_ext(ft_ix));
+    nties = length(ties)-1;
+    riskset = t_ext(ft_ix(j))==t_ext;
+    term1 = sum(X_ext(ties,:),1);
+    term2 = exp(X_ext(riskset,:)*Bhat);
+    term3 = exp(X_ext(ties,:)*Bhat);
+    term4 = term2'*X_ext(riskset,:);
+    term5 = term3'*X_ext(ties,:);
+    term = 0;  
+    for l=0:nties
+        term = term + (term4-l*term5/(nties+1))/(sum(term2)-l*sum(term3)/(nties+1));
+    end;
+    gr = gr + (term1 - term)';
+end;
+end
+
+
+function He = SStat_Hessian(X_ext,t_ext,Bhat,ft_ix)
+% 
+% Hessian matrix for the log-likelihood.
+%
+% Input
+% X_ext: Extended design matrix.
+% t_ext: Extended survival time vector.
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X_ext (last index if any tie).
+%
+% Output
+% He: Hessian matrix.
+%
+p = size(X_ext,2);
+He = zeros(p,p);
+nft = length(ft_ix);
+for j=1:nft
+    ties = ft_ix(t_ext(ft_ix(j))==t_ext(ft_ix));
+    nties = length(ties)-1;
+    rsk_ix = find(t_ext(ft_ix(j))==t_ext);  
+    m = length(rsk_ix);
+    term1 = 0;
+    for i=1:m
+        term1 = term1 + exp(X_ext(rsk_ix(i),:)*Bhat)*X_ext(rsk_ix(i),:)'*X_ext(rsk_ix(i),:);
+    end;
+    term2 = 0; 
+    for i=1:nties
+        term2 = term2 + exp(X_ext(ties(i),:)*Bhat)*X_ext(ties(i),:)'*X_ext(ties(i),:);
+    end;
+    term3 = sum(exp(X_ext(rsk_ix,:)*Bhat));
+    term4 = sum(exp(X_ext(ties,:)*Bhat));
+    term5 = exp(X_ext(rsk_ix,:)*Bhat)'*X_ext(rsk_ix,:);
+    term6 = exp(X_ext(ties,:)*Bhat)'*X_ext(ties,:);
+    term = 0;  
+    for l=0:nties
+        Z = term5 - l*term6/(nties+1);
+        phi = term3 - l*term4/(nties+1);
+        term = term + (term1-l*term2/(nties+1))/phi - Z'*Z/(phi*phi);                   
+    end;
+    He = He - term;
+end;
+end
+
diff --git a/IQM Tools/IQMlite/tools/survival/IQMcoxPH.m b/IQM Tools/IQMlite/tools/survival/IQMcoxPH.m
new file mode 100644
index 0000000..84cd869
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMcoxPH.m	
@@ -0,0 +1,241 @@
+function [stats,st] = IQMcoxPH(X,d,t,e)
+% [stats,st] = IQMcoxPH(X,d,t,e)
+%
+% Parameter estimation for the Cox proportional hazards model. Survival 
+% time ties are handled using Efron's method.
+%
+% Input
+% X: Design Matrix with the time-independent covariates. (mxp, m # of
+% subjects, p # of covariates). 
+% d: Logical vector (mx1) indicating censorship status (1 if the subject got 
+% the failure event or 0 otherwise).
+% t: Vector (mx1) whose entries are the survival and censored times (ordered 
+% according to X).
+% e: Convergence epsilon (gradient's norm). Default 10^-3;
+%
+% Output
+% stats.Bhat: Estimated vector of the population regression parameters.
+% stats.CovBhat: Estimated covariance matrix of the population regression 
+% parameters.
+% stats.llh: Values of the maximum log-likelihood across the optimization 
+% process.
+% st: Termination state (1 for convergence and 0 otherwise).
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer..
+%   
+if nargin < 3
+    error('Too few inputs');
+elseif nargin < 4
+    e = 0.001;
+end;
+tic;
+[m,p] = size(X);
+if (length(d)~=m) || (length(t)~=m)
+    error(['All, the design matrix X, censorship status vector d and'...
+        ' time vector t must have the same number of rows.']);
+end;
+%Sort the data by time. If there is a tie between a failure time and a
+%censored time then the failure time goes first.
+st_ix = find(d==1);
+t1 = t(st_ix);
+[t1,t1_ix] = sort(t1);
+X1 = X(st_ix(t1_ix),:);
+cs_ix = find(d==0);
+if ~isempty(cs_ix)
+    t2 = t(cs_ix);
+    [t2,t2_ix] = sort(t2);
+    X2 = X(cs_ix(t2_ix),:);
+    count1 = 1; count2 = 1; i = 0;
+    while (count1 <= length(t1)) && (count2 <= length(t2))
+        i = i + 1;
+        if t1(count1) <= t2(count2)
+            X(i,:) = X1(count1,:);
+            d(i) = 1;
+            t(i) = t1(count1);
+            count1 = count1 + 1;
+        else 
+            X(i,:) = X2(count2,:);
+            d(i) = 0;
+            t(i) = t2(count2);
+            count2 = count2 + 1;
+        end;
+    end;
+    if (count1 > length(t1))
+        X(i+1:end,:) = X2(count2:end,:);
+        d(i+1:end) = 0;
+        t(i+1:end) = t2(count2:end);
+    else
+        X(i+1:end,:) = X1(count1:end,:);
+        d(i+1:end) = 1;
+        t(i+1:end) = t1(count1:end);
+    end;
+else
+    X = X1;
+    t = t1;
+end;
+%indices of unique failure times in ft_ix (last index when ties happen)
+st_ix = find(d==1);
+[ft,ft_ix] = unique(t(st_ix),'last');
+ft_ix = st_ix(ft_ix);
+nft = length(ft);
+%handling ties in failure times
+nties = zeros(1,nft);
+for j=1:nft
+    i = 1;
+    while (ft_ix(j)-i>0) && (ft(j)==t(ft_ix(j)-i))
+        i = i + 1;
+    end;
+    nties(j) = i-1;
+end;
+%Starting values
+Bhat = zeros(p,1);
+
+%% Iterations
+nit = 50;
+gnorm = e+1;
+it = 1;
+display('Starting Newton-Raphson iterations');
+while (gnorm>e) && (it<=nit)    
+    gr = SStat_Gradient(X,Bhat,ft_ix,nties);
+    He = SStat_Hessian(X,Bhat,ft_ix,nties);
+    if (cond(He) < 1e+10)
+        invHe = He\eye(p);
+    else
+        [Vtemp,Dtemp] = eig(He);
+        invHe = Vtemp*diag(1./max(diag(Dtemp),1e-5))*Vtemp';
+    end
+    Bhat = Bhat - invHe*gr;
+    %log-likelihood
+    llh = SStat_Likelihood(X,Bhat,ft_ix,nties);
+    display(['Likelihood at iteration ' num2str(it) ' : ' num2str(llh)]);
+    gnorm = norm(gr);
+    display(['Gradient norm: ' num2str(gnorm)]);     
+    it = it+1;
+end;  
+%% Termination
+z_sc = Bhat./sqrt(diag(-invHe));
+pval = 2*(1-normcdf(abs(z_sc),0,1));
+stats = struct('Bhat',Bhat,'zscore',z_sc,'pval',pval,'CovBhat',-invHe,'llh',llh);
+if (gnorm<=e)
+    st = 1;
+else
+    st = 0;
+    display(['Algorithm does not converge after ' num2str(nit)...
+        ' iterations!!!']);
+end;
+et = toc;
+display(['Total elapsed time is ' num2str(et) ' seconds']);
+end
+
+
+
+
+
+
+%% Likelihood, Gradient and Hessian
+
+function llk = SStat_Likelihood(X,Bhat,ft_ix,nties)
+% 
+% Log-likelihood value.
+%
+% Input
+% X: Ordered design Matrix (according to survival time).
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X (last index if any tie).
+% nties: Number of ties for each survival time.
+%
+% Output
+% llk: Log-likelihood value.
+%
+llk = 0;
+nft = length(ft_ix);
+for j=1:nft
+    term = 0;
+    lpr = X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat;
+    aux1 = sum(exp(lpr));
+    aux2 = sum(exp(X(ft_ix(j)-nties(j):end,:)*Bhat));
+    for l=0:nties(j)
+        term = term + log(aux2-l*aux1/(nties(j)+1));
+    end;
+    llk = llk + sum(lpr) - term;
+end;
+end
+
+
+function gr = SStat_Gradient(X,Bhat,ft_ix,nties)
+% 
+% Gradient vector for the log-likelihood.
+%
+% Input
+% X: Ordered design Matrix (according to survival time).
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X (last index if any tie).
+% nties: Number of ties for each survival time.
+%
+% Output
+% gr: Gradient vector.
+%
+p = size(X,2);
+gr = zeros(p,1);
+nft = length(ft_ix);
+for j=1:nft
+    term1 = sum(X(ft_ix(j)-nties(j):ft_ix(j),:),1);
+    term2 = exp(X(ft_ix(j)-nties(j):end,:)*Bhat);
+    term3 = exp(X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat);
+    term4 = term2'*X(ft_ix(j)-nties(j):end,:);
+    term5 = term3'*X(ft_ix(j)-nties(j):ft_ix(j),:);
+    term = 0;  
+    for l=0:nties(j)
+        term = term + (term4-l*term5/(nties(j)+1))/(sum(term2)-l*sum(term3)/(nties(j)+1));
+    end;
+    gr = gr + (term1 - term)';
+end;
+end
+
+
+function He = SStat_Hessian(X,Bhat,ft_ix,nties)
+% 
+% Hessian matrix for the log-likelihood.
+%
+% Input
+% X: Ordered design Matrix (according to survival time).
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X (last index if any tie).
+% nties: Number of ties for each survival time.
+%
+% Output
+% He: Hessian matrix.
+%
+[m,p] = size(X);
+He = zeros(p,p);
+nft = length(ft_ix);
+for j=1:nft
+    term1 = 0; 
+    for i=ft_ix(j)-nties(j):m
+        term1 = term1 + exp(X(i,:)*Bhat)*X(i,:)'*X(i,:);
+    end;
+    term2 = 0; 
+    for i=ft_ix(j)-nties(j):ft_ix(j)
+        term2 = term2 + exp(X(i,:)*Bhat)*X(i,:)'*X(i,:);
+    end;
+    term3 = sum(exp(X(ft_ix(j)-nties(j):end,:)*Bhat));
+    term4 = sum(exp(X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat));
+    term5 = exp(X(ft_ix(j)-nties(j):m,:)*Bhat)'*X(ft_ix(j)-nties(j):m,:);
+    term6 = exp(X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat)'*X(ft_ix(j)-nties(j):ft_ix(j),:);
+    term = 0;  
+    for l=0:nties(j)
+        Z = term5 - l*term6/(nties(j)+1);
+        phi = term3 - l*term4/(nties(j)+1);
+        term = term + (term1-l*term2/(nties(j)+1))/phi - Z'*Z/(phi*phi);                   
+    end;
+    He = He - term;
+end;
+end
+
diff --git a/IQM Tools/IQMlite/tools/survival/IQMcoxStratPH.m b/IQM Tools/IQMlite/tools/survival/IQMcoxStratPH.m
new file mode 100644
index 0000000..c63902d
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMcoxStratPH.m	
@@ -0,0 +1,265 @@
+function [stats,st] = IQMcoxStratPH(X,z,d,t,e)
+% [stats,st] = IQMcoxPH(X,z,d,t,e)
+%
+% Parameter estimation for the Stratified Cox proportional hazards model.  
+% Survival time ties are handled using Efron's method.
+%
+% Input
+% X: Design Matrix with the time-independent covariates. (mxp, m # of
+% subjects, p # of covariates). 
+% z: Vector (mx1) with the strata for the rows of X;
+% d: Logical vector (mx1) indicating censorship status (1 if the subject got 
+% the failure event or 0 otherwise).
+% t: Vector (mx1) whose entries are the survival and censored times (ordered 
+% according to X).
+% e: Convergence epsilon (gradient's norm). Default 10^-3;
+%
+% Output
+% stats.Bhat: Estimated vector of the population regression parameters.
+% stats.CovBhat: Estimated covariance matrix of the population regression 
+% parameters.
+% stats.llh: Values of the maximum log-likelihood across the optimization 
+% process.
+% st: Termination state (1 for convergence and 0 otherwise).
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer..
+%   
+if nargin < 4
+    error('Too few inputs');
+elseif nargin < 5
+    e = 0.001;
+end;
+tic;
+[m,p] = size(X);
+if (length(z)~=m) || (length(d)~=m) || (length(t)~=m) 
+    error(['The design matrix X, strata vector z, censorship status vector d'...
+        ' and time vector t must all have the same number of rows.']);
+end;
+%Sort the data by time. If there is a tie between a failure time and a
+%censored time then the failure time goes first.
+st_ix = find(d==1);
+t1 = t(st_ix);
+[t1,t1_ix] = sort(t1);
+X1 = X(st_ix(t1_ix),:);
+z1 = z(st_ix(t1_ix));
+cs_ix = find(d==0);
+if ~isempty(cs_ix)
+    t2 = t(cs_ix);
+    [t2,t2_ix] = sort(t2);
+    X2 = X(cs_ix(t2_ix),:);
+    z2 = z(cs_ix(t2_ix));
+    count1 = 1; count2 = 1; i = 0;
+    while (count1 <= length(t1)) && (count2 <= length(t2))
+        i = i + 1;
+        if t1(count1) <= t2(count2)
+            X(i,:) = X1(count1,:);
+            z(i) = z1(count1);
+            d(i) = 1;
+            t(i) = t1(count1);
+            count1 = count1 + 1;
+        else 
+            X(i,:) = X2(count2,:);
+            z(i) = z2(count2);
+            d(i) = 0;
+            t(i) = t2(count2);
+            count2 = count2 + 1;
+        end;
+    end;
+    if (count1 > length(t1))
+        X(i+1:end,:) = X2(count2:end,:);
+        z(i+1:end) = z2(count2:end);
+        d(i+1:end) = 0;
+        t(i+1:end) = t2(count2:end);
+    else
+        X(i+1:end,:) = X1(count1:end,:);
+        z(i+1:end) = z1(count1:end);
+        d(i+1:end) = 1;
+        t(i+1:end) = t1(count1:end);
+    end;
+else
+    X = X1;
+    t = t1;
+    z = z1;
+end;
+uz = unique(z);
+nst = length(uz);
+%indices of unique failure times for each stratum in ft_ix (last index when ties happen)
+ft_ix = zeros(nst,sum(d));
+ft = ft_ix;
+nft = zeros(nst,1);
+nties = ft;
+for k=1:nst
+    t_strat = t(z==uz(k));
+    st_ix = find(d(z==uz(k))==1);
+    [ft_aux,ft_ix_aux] = unique(t_strat(st_ix),'last');
+    nft(k) = length(ft_aux);
+    ft_ix(k,1:nft(k)) = st_ix(ft_ix_aux);
+    ft(k,1:nft(k)) = ft_aux;
+    %handling ties in failure times
+    for j=1:nft(k)
+        i = 1;
+        while (ft_ix(k,j)-i>0) && (ft(k,j)==t(ft_ix(k,j)-i))
+            i = i + 1;
+        end;
+        nties(k,j) = i-1;
+    end;
+end;
+%Starting values
+Bhat = zeros(p,1);
+
+%% Iterations
+nit = 50;
+gnorm = e+1;
+it = 1;
+display('Starting Newton-Raphson iterations');
+while (gnorm>e) && (it<=nit)
+    gr = zeros(p,1);
+    He = zeros(p,p);
+    for k=1:length(uz)
+        gr = gr + SStat_Gradient(X(z==uz(k),:),Bhat,ft_ix(k,1:nft(k)),nties(k,1:nft(k)));
+        He = He + SStat_Hessian(X(z==uz(k),:),Bhat,ft_ix(k,1:nft(k)),nties(k,1:nft(k)));
+    end;
+    if (cond(He) < 1e+10)
+        invHe = He\eye(p);
+    else
+        [Vtemp,Dtemp] = eig(He);
+        invHe = Vtemp*diag(1./max(diag(Dtemp),1e-5))*Vtemp';
+    end
+    Bhat = Bhat - invHe*gr;
+    %log-likelihood
+    llh = 0;
+    for k=1:length(uz)
+        llh = llh + SStat_Likelihood(X(z==uz(k),:),Bhat,ft_ix(k,1:nft(k)),nties(k,1:nft(k)));
+    end; 
+    display(['Likelihood at iteration ' num2str(it) ' : ' num2str(llh)]);
+    gnorm = norm(gr);
+    display(['Gradient norm: ' num2str(gnorm)]);     
+    it = it+1;
+end;  
+%% Termination
+z_sc = Bhat./sqrt(diag(-invHe));
+pval = 2*(1-normcdf(abs(z_sc),0,1));
+stats = struct('Bhat',Bhat,'zscore',z_sc,'pval',pval,'CovBhat',-invHe,'llh',llh);
+if (gnorm<=e)
+    st = 1;
+else
+    st = 0;
+    display(['Algorithm does not converge after ' num2str(nit)...
+        ' iterations!!!']);
+end;
+et = toc;
+display(['Total elapsed time is ' num2str(et) ' seconds']);
+end
+
+
+
+
+
+
+%% Likelihood, Gradient and Hessian
+
+function llk = SStat_Likelihood(X,Bhat,ft_ix,nties)
+% 
+% Log-likelihood value.
+%
+% Input
+% X: Ordered design Matrix (according to survival time).
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X (last index if any tie).
+% nties: Number of ties for each survival time.
+%
+% Output
+% llk: Log-likelihood value.
+%
+llk = 0;
+nft = length(ft_ix);
+for j=1:nft
+    term = 0;
+    lpr = X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat;
+    aux1 = sum(exp(lpr));
+    aux2 = sum(exp(X(ft_ix(j)-nties(j):end,:)*Bhat));
+    for l=0:nties(j)
+        term = term + log(aux2-l*aux1/(nties(j)+1));
+    end;
+    llk = llk + sum(lpr) - term;
+end;
+end
+
+
+function gr = SStat_Gradient(X,Bhat,ft_ix,nties)
+% 
+% Gradient vector for the log-likelihood.
+%
+% Input
+% X: Ordered design Matrix (according to survival time).
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X (last index if any tie).
+% nties: Number of ties for each survival time.
+%
+% Output
+% gr: Gradient vector.
+%
+p = size(X,2);
+gr = zeros(p,1);
+nft = length(ft_ix);
+for j=1:nft
+    term1 = sum(X(ft_ix(j)-nties(j):ft_ix(j),:),1);
+    term2 = exp(X(ft_ix(j)-nties(j):end,:)*Bhat);
+    term3 = exp(X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat);
+    term4 = term2'*X(ft_ix(j)-nties(j):end,:);
+    term5 = term3'*X(ft_ix(j)-nties(j):ft_ix(j),:);
+    term = 0;  
+    for l=0:nties(j)
+        term = term + (term4-l*term5/(nties(j)+1))/(sum(term2)-l*sum(term3)/(nties(j)+1));
+    end;
+    gr = gr + (term1 - term)';
+end;
+end
+
+
+function He = SStat_Hessian(X,Bhat,ft_ix,nties)
+% 
+% Hessian matrix for the log-likelihood.
+%
+% Input
+% X: Ordered design Matrix (according to survival time).
+% Bhat: Estimated vector of the population regression parameters.
+% ft_ix: Failure time indices in X (last index if any tie).
+% nties: Number of ties for each survival time.
+%
+% Output
+% He: Hessian matrix.
+%
+[m,p] = size(X);
+He = zeros(p,p);
+nft = length(ft_ix);
+for j=1:nft
+    term1 = 0; 
+    for i=ft_ix(j)-nties(j):m
+        term1 = term1 + exp(X(i,:)*Bhat)*X(i,:)'*X(i,:);
+    end;
+    term2 = 0; 
+    for i=ft_ix(j)-nties(j):ft_ix(j)
+        term2 = term2 + exp(X(i,:)*Bhat)*X(i,:)'*X(i,:);
+    end;
+    term3 = sum(exp(X(ft_ix(j)-nties(j):end,:)*Bhat));
+    term4 = sum(exp(X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat));
+    term5 = exp(X(ft_ix(j)-nties(j):m,:)*Bhat)'*X(ft_ix(j)-nties(j):m,:);
+    term6 = exp(X(ft_ix(j)-nties(j):ft_ix(j),:)*Bhat)'*X(ft_ix(j)-nties(j):ft_ix(j),:);
+    term = 0;  
+    for l=0:nties(j)
+        Z = term5 - l*term6/(nties(j)+1);
+        phi = term3 - l*term4/(nties(j)+1);
+        term = term + (term1-l*term2/(nties(j)+1))/phi - Z'*Z/(phi*phi);                   
+    end;
+    He = He - term;
+end;
+end
+
diff --git a/IQM Tools/IQMlite/tools/survival/IQMhr.m b/IQM Tools/IQMlite/tools/survival/IQMhr.m
new file mode 100644
index 0000000..018d5d3
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMhr.m	
@@ -0,0 +1,41 @@
+function [hr,pval,CI] = IQMhr(x1,x2,stats)
+% [hr,pval,CI] = IQMhr(x1,x2,stats)
+%
+% Hazard ratio estimate for Cox models.
+%
+% Input
+%
+% x1: Row vector with the covariate values for the first group.
+% x2: Row vector with the covariate values for the second group.
+% stats: Structure containing statistiscs obtained with any of IQMcoxPH,
+% IQMcoxStratPH and IQMcoxExt.
+%
+% Output
+% hr: Hazard ratio value.
+% pval: P-value for the hr value.
+% CI: 95% confidence interval for the hazard ratio estimate.
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer..
+%   
+if nargin < 3
+    error('Too few inputs');
+end;
+p = length(stats.Bhat);
+if (length(x1)~=p) || (length(x2)~=p)
+    error(['Vectors x1, x2 and stats.Bhat must have the same length.']);
+end;
+d = x1-x2;
+lrp = d*stats.Bhat;
+hr = exp(lrp);
+lrp_std = (d'*d).*stats.CovBhat;
+lrp_std = sqrt(sum(lrp_std(:)));
+CI.low = exp(lrp-1.96*lrp_std);
+CI.high = exp(lrp+1.96*lrp_std);
+pval = 2*(1-normcdf(abs(lrp/lrp_std),0,1));
\ No newline at end of file
diff --git a/IQM Tools/IQMlite/tools/survival/IQMkm.m b/IQM Tools/IQMlite/tools/survival/IQMkm.m
new file mode 100644
index 0000000..9a0e5b8
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMkm.m	
@@ -0,0 +1,59 @@
+function [km] = IQMkm(z,d,t,ptype)
+% [km] = IQMkm(z,d,t,ptype)
+%
+% Kaplan-Meier curves estimation and plot.
+%
+% Input
+% z: Discrete covariate (mx1, m # of subjects) with the strata categories.
+% d: Logical vector (mx1) indicating censorship status (1 if the subject got 
+% the failure event or 0 otherwise).
+% t: Vector (mx1) whose entries are the survival and censored times (ordered 
+% according to X).
+% ptype: Plot type string. It can only be either 'km' to plot the KM curves
+% or 'll' to plot the -log(-log(KM)) curves.
+%
+% Output
+% km: Structure array with the Kaplan-Meier estimates for each category of
+% z.
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer.
+%   
+if nargin < 3
+    error('Too few inputs');
+elseif nargin < 4
+    ptype = 'km';
+end;
+uz = unique(z);
+nuz = length(uz);
+km(1:nuz) = struct('f',[],'t',[]);
+if strcmpi(ptype,'km')
+    figure('Name','KM plot');
+elseif strcmpi(ptype,'ll')
+    figure('Name','-log(-log(KM)) plot');
+else
+    error('The only posible values for ptype are ''km'' or ''ll''.');
+end;
+hold on
+colors = {'b','k','g','c','m','r','y'};
+for i=1:length(uz)
+    t_strat = t(z==uz(i));
+    d_strat = d(z==uz(i));
+    [km(i).f,km(i).t] = ecdf(t_strat,'censoring',~d_strat);
+    km(i).f = 1 - km(i).f;
+    if strcmpi(ptype,'km')
+        stairs(km(i).t,km(i).f,colors{mod(i,7)+1},'LineWidth',2);
+    else
+        stairs(km(i).t,-log(-log(km(i).f)),colors{mod(i,7)+1},'LineWidth',2);
+    end;
+end;
+legend(num2str(uz));
+hold off
+
+
diff --git a/IQM Tools/IQMlite/tools/survival/IQMphTest.m b/IQM Tools/IQMlite/tools/survival/IQMphTest.m
new file mode 100644
index 0000000..2c427c4
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMphTest.m	
@@ -0,0 +1,131 @@
+function [pval,rho] = IQMphTest(X,d,t,stats_PH)
+% [pval,rho] = IQMphTest(X,d,t,stats_PH)
+%
+% Schoenfeld residuals test for the proportional hazards assumption.
+%
+% Input
+% X: Design Matrix with the time-independent covariates. (mxp, m # of
+% subjects, p # of covariates). 
+% d: Logical vector (mx1) indicating censorship status (1 if the subject got 
+% the failure event or 0 otherwise).
+% t: Vector (mx1) whose entries are the survival and censored times (ordered 
+% according to X).
+% stats_PH: Structure obtained from IQMcoxPH
+%
+% Output
+% pval: P-values indicating the probability of the PH assumption for each 
+% covariate.
+% rho: Correlations between Schoenfeld residuals and ranked failure times.
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer..
+%   
+if nargin < 4
+    error('Too few inputs');
+end;
+[m,p] = size(X);
+if (length(d)~=m) || (length(t)~=m)
+    error(['All, the design matrix X, censorship status vector d and'...
+        ' time vector t must have the same number of rows.']);
+end;
+if length(stats_PH.Bhat)~=p
+    error(['The vector stats.Bhat must have the same length as the number'...
+        ' of colums of X.']);
+end;
+%Sort the data by time. If there is a tie between a failure time and a
+%censored time then the failure time goes first.
+st_ix = find(d==1);
+t1 = t(st_ix);
+[t1,t1_ix] = sort(t1);
+X1 = X(st_ix(t1_ix),:);
+cs_ix = find(d==0);
+if ~isempty(cs_ix)
+    t2 = t(cs_ix);
+    [t2,t2_ix] = sort(t2);
+    X2 = X(cs_ix(t2_ix),:);
+    count1 = 1; count2 = 1; i = 0;
+    while (count1 <= length(t1)) && (count2 <= length(t2))
+        i = i + 1;
+        if t1(count1) <= t2(count2)
+            X(i,:) = X1(count1,:);
+            d(i) = 1;
+            t(i) = t1(count1);
+            count1 = count1 + 1;
+        else 
+            X(i,:) = X2(count2,:);
+            d(i) = 0;
+            t(i) = t2(count2);
+            count2 = count2 + 1;
+        end;
+    end;
+    if (count1 > length(t1))
+        X(i+1:end,:) = X2(count2:end,:);
+        d(i+1:end) = 0;
+        t(i+1:end) = t2(count2:end);
+    else
+        X(i+1:end,:) = X1(count1:end,:);
+        d(i+1:end) = 1;
+        t(i+1:end) = t1(count1:end);
+    end;
+else
+    X = X1;
+    t = t1;
+end;
+%indices of unique failure times in ft_ix (last index when ties happen)
+st_ix = find(d==1);
+[ft,ft_ix] = unique(t(st_ix),'last');
+ft_ix = st_ix(ft_ix);
+nft = length(ft);
+%handling ties in failure times by substracting a very small random number
+rand('state',sum(100*clock));
+for j=1:nft
+    i = 1;
+    while (ft_ix(j)-i>0) && (ft(j)==t(ft_ix(j)-i))
+        i = i + 1;
+    end;
+    nties = i-1;
+    tt = t(ft_ix(j)-nties:ft_ix(j)) - 1e-5*(1 + rand(nties+1,1));
+    tX = X(ft_ix(j)-nties:ft_ix(j),:);
+    [stt,stt_ix] = sort(tt);
+    t(ft_ix(j)-nties:ft_ix(j)) = stt;
+    X(ft_ix(j)-nties:ft_ix(j),:) = tX(stt_ix,:);
+end;
+nft = length(st_ix);
+r = zeros(nft,p);
+for i=1:nft
+    lprv = exp(X(st_ix(i):end,:)*stats_PH.Bhat);
+    r(i,:) = X(st_ix(i),:) - (lprv'*X(st_ix(i):end,:))./sum(lprv);
+end;
+[rho,pval] = corr(r,[1:nft]');
+
+% Plot Schoenfeld residuals over Ranked failure times for eye inspection.
+figure;
+nall = size(r,2);
+ncol = ceil(sqrt(nall));
+nrow = ceil(nall/ncol);
+for k=1:nall,
+    subplot(nrow,ncol,k);
+    plot([1:nft],r(:,k),'o');
+    ylabel('Schoenfeld residuals');
+    xlabel('Ranked failure times');
+    title(sprintf('beta_%d',k),'Interpreter','none');
+    grid on
+    set(gca,'XLim',[1 nft])
+    % Add loess line
+    hold on
+    rsmooth = smoothIQM([1:nft],r(:,k),0.5,'loess');
+    plot([1:nft],rsmooth,'k-','LineWidth',2);
+    % Plot zero line
+    plot(get(gca,'XLim'),[0 0],'k--');
+    % Add legend
+    h = legend(['Residuals over time ' sprintf('\n(corr=%1.2g, p=%1.2g)',rho(k),pval(k))],'Loess smoother','Zero line','Location','best');
+    set(h,'Interpreter','none')
+    axis square
+end
+
diff --git a/IQM Tools/IQMlite/tools/survival/IQMxext.m b/IQM Tools/IQMlite/tools/survival/IQMxext.m
new file mode 100644
index 0000000..ae3fa25
--- /dev/null
+++ b/IQM Tools/IQMlite/tools/survival/IQMxext.m	
@@ -0,0 +1,114 @@
+function [sID_ext,X_ext,d_ext,t_ext] = IQMxext(sID,X,d,t)
+% [sID_ext,X_ext,d_ext,t_ext] = IQMxext(sID,X,d,t)
+%
+% Extension (by adding new rows) of a design matrix comprising only time-
+% independent covariates to a design matrix for which time-dependent 
+% covariates can be easily added.
+%
+% Input
+% sID: Subjects' IDs (for each row of X).
+% X: Design Matrix with the time-independent covariates. (mxp, m # of
+% subjects, p # of covariates). 
+% d: Logical vector (mx1) indicating censorship status (1 if the subject got 
+% the failure event or 0 otherwise).
+% t: Vector (mx1) whose entries are the survival and censored times (ordered 
+% according to X).
+%
+% Output
+% sID_ext: Extended subjects' IDs.
+% X_ext: Extended design matrix.
+% d_ext: Extended censorship status vector.
+% t_ext: Extended survival time vector.
+%
+% $Revision: 1.1.1.1 $  $Date: 2013/27/03 11:25:52 $
+% Original Author: Jorge Luis Bernal Rusiel 
+% CVS Revision Info:
+%    $Author: jbernal$
+%    $Date: 2013/27/03 11:25:52 $
+%    $Revision: 1.1 $
+% References: Kleinbaum, D.G., Klein, M., 2005. Survival analysis. A self-
+% learning approach, second edition. New York: Springer..
+%   
+if nargin < 4
+    error('Too few inputs');
+end;
+[m,p] = size(X);
+if (length(sID)~=m) || (length(d)~=m) || (length(t)~=m)
+    error(['All, the design matrix X, censorship status vector d, '...
+        'time vector t and subject ID vector must have the same number of rows.']);
+end;
+%Sort the data by time. If there is a tie between a failure time and a
+%censored time then the failure time goes first.
+st_ix = find(d==1);
+t1 = t(st_ix);
+[t1,t1_ix] = sort(t1);
+X1 = X(st_ix(t1_ix),:);
+sID1 = sID(st_ix(t1_ix));
+cs_ix = find(d==0);
+if ~isempty(cs_ix)
+    t2 = t(cs_ix);
+    [t2,t2_ix] = sort(t2);
+    X2 = X(cs_ix(t2_ix),:);
+    sID2 = sID(cs_ix(t2_ix));
+    count1 = 1; count2 = 1; i = 0;
+    while (count1 <= length(t1)) && (count2 <= length(t2))
+        i = i + 1;
+        if t1(count1) <= t2(count2)
+            sID(i) = sID1(count1);
+            X(i,:) = X1(count1,:);
+            d(i) = 1;
+            t(i) = t1(count1);
+            count1 = count1 + 1;
+        else 
+            sID(i) = sID2(count2);
+            X(i,:) = X2(count2,:);
+            d(i) = 0;
+            t(i) = t2(count2);
+            count2 = count2 + 1;
+        end;
+    end;
+    if (count1 > length(t1))
+        sID(i+1:end) = sID2(count2:end);
+        X(i+1:end,:) = X2(count2:end,:);
+        d(i+1:end) = 0;
+        t(i+1:end) = t2(count2:end);
+    else
+        sID(i+1:end) = sID1(count1:end);
+        X(i+1:end,:) = X1(count1:end,:);
+        d(i+1:end) = 1;
+        t(i+1:end) = t1(count1:end);
+    end;
+else
+    sID = sID1;
+    X = X1;
+    t = t1;
+end;
+%indices of unique failure times in ft_ix (last index when ties happen)
+st_ix = find(d==1);
+[ft,ft_ix] = unique(t(st_ix),'last');
+ft_ix = st_ix(ft_ix);
+nft = length(ft);
+n = 0;
+for j=1:nft
+    n = n + sum(t>t(ft_ix(j)));
+end;
+n = n + m;
+X_ext = zeros(n,p);
+d_ext = zeros(n,1);
+t_ext = zeros(n,1);
+count = 1;
+for i=1:m
+    ni = sum(t(ft_ix) < t(i));
+    X_ext(count:count+ni,:) = kron(ones(ni+1,1),X(i,:));
+    sID_ext(count:count+ni) = sID(i);
+    d_ext(count:count+ni-1) = 0;
+    d_ext(count+ni) = d(i);
+    t_ext(count:count+ni-1) = t(ft_ix(t(ft_ix)<t(i)));
+    t_ext(count+ni) = t(i);
+    count = count + ni + 1;
+end;
+
+
+
+
+
diff --git a/IQM Tools/IQMlite/tools/templates/scriptTemplateIQM.m b/IQM Tools/IQMlite/tools/templates/scriptTemplateIQM.m
index 4aec74e..eedba36 100644
--- a/IQM Tools/IQMlite/tools/templates/scriptTemplateIQM.m	
+++ b/IQM Tools/IQMlite/tools/templates/scriptTemplateIQM.m	
@@ -1,43 +1,45 @@
-%% In this section the purpose of the script should be described.
-% Purpose of activity:
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% SCRIPT_NAME
 %
-% Required previous scripts to be run:
+% [PURPOSE]
+% 
+% 
+% [AUTHOR]
 %
-% Author:
 %
-% Date:
+% [DATE]
+% 
 %
+% [DEPENDENCIES]
+% 
+%
+% [INPUT]
+% 
+%   
+%
+% [OUTPUT]
+%
+% [OTHER]
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%% Installation of IQM Tools
-% This block should always be on the top of every analysis script with IQM
-% Tools. It might only be ommitted in the case that a central installation
-% of IQM Tools is present on the computer system and the IQM Tools are
-% automatically loaded during the startup of MATLAB.
-clc;                        % Clear command window
-clear all;                  % Clear workspace from all defined variables
-close all;                  % Close all figures
-fclose all;                 % Close all open files
-restoredefaultpath();       % Clear all user installed toolboxes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Clear all - install needed scripts
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+clc;
+clear all;
+close all;
+fclose all;
+restoredefaultpath;
 
 % In the next line, please enter the path to your IQM Tools folder. It can
 % be a relative or an absolute path.
 PATH_IQM            = 'D:\IQM Tools Suite'; 
-oldpath             = pwd(); cd(PATH_IQM); installIQMtoolsInitial; cd(oldpath);
-
-%% "Initialize the compliance mode". 
-% IQM Tools allows to automatically generate logfiles for all output that
-% is generated using the functions "IQMprintFigure" and
-% "IQMwriteText2File". These logfiles contain the username, the name of the
-% generated file (including the path), and the scripts and functions that
-% have been called to generate the output file. In order to ensure this is
-% working correctly, the only thing that needs to be done is to execute the
-% following command at the start of each analysis script. 
-
-% The input argument to the "IQMinitializeCompliance" function needs to be
-% the name of the script file.
-IQMinitializeCompliance('TEMPLATE_SCRIPT_NAME');
-
-%% Here your code starts
-
+oldpath             = pwd(); cd(PATH_IQM); installIQMtools; cd(oldpath);
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Intialize compliance mode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+IQMinitializeCompliance('SCRIPT_NAME.m');
 
diff --git a/IQM Tools/IQMpro/Contents.m b/IQM Tools/IQMpro/Contents.m
index 25a52d1..c013ffb 100644
--- a/IQM Tools/IQMpro/Contents.m	
+++ b/IQM Tools/IQMpro/Contents.m	
@@ -1,5 +1,5 @@
 % IQM Tools Pro
-% Version 1.2.1 (R2015B) 30.04.2016
+% Version 1.2.2 (R2015B) 02.01.2017
 % 
 % IQMpro
 % =======
diff --git a/IQM Tools/IQMpro/SETUP_PATHS_TOOLS_IQMPRO.m b/IQM Tools/IQMpro/SETUP_PATHS_TOOLS_IQMPRO.m
index 8cb8931..4fed825 100644
--- a/IQM Tools/IQMpro/SETUP_PATHS_TOOLS_IQMPRO.m	
+++ b/IQM Tools/IQMpro/SETUP_PATHS_TOOLS_IQMPRO.m	
@@ -13,16 +13,17 @@
 % assumed that the command that runs a NONMEM or MONOLIX job via the queue
 % returns the jobID as a number. It is also assumed that this number
 % appears when the queue status command is called:
-PATH_SYSTEM_QUEUE_STATUS_UNIX               = 'squeue';
+PATH_SYSTEM_QUEUE_STATUS_UNIX               = '';
 % If no queuing system used then keep this variable empty ('')
 
 % NONMEM (currently tested version: 7.2 and 7.3)
 PATH_SYSTEM_NONMEM_WINDOWS                  = 'nmfe73';
-PATH_SYSTEM_NONMEM_UNIX                     = 'qnmfe -n -t 1440 -x';               % Define UNIX path for Mac
+PATH_SYSTEM_NONMEM_UNIX                     = 'nmfe73';                            
 
 % NONMEM PARALLEL
 PATH_SYSTEM_NONMEM_PARALLEL_WINDOWS         = 'nmfe73par';
-PATH_SYSTEM_NONMEM_PARALLEL_UNIX            = 'qnmfe -n -t 1440 -x -c';            % Define UNIX path for Mac
+PATH_SYSTEM_NONMEM_PARALLEL_UNIX            = 'nmfe73par';                         
+
 % nmfe73par is assumed to be a shell script with the following calling
 % syntax:   "nmfe73par NRNODES controlfile outputfile". If you do not have
 % one available, please ask your sysadmin to generate on for you
diff --git a/IQM Tools/IQMpro/auxiliary/data/checkDataColumnsIQM.m b/IQM Tools/IQMpro/auxiliary/data/checkDataColumnsIQM.m
index c973bef..71b739a 100644
--- a/IQM Tools/IQMpro/auxiliary/data/checkDataColumnsIQM.m	
+++ b/IQM Tools/IQMpro/auxiliary/data/checkDataColumnsIQM.m	
@@ -33,8 +33,10 @@ end
 colnamestable = data.Properties.VariableNames;
 errorText = '';
 for k=1:length(COLNAMES),
-    if isempty(strmatchIQM(COLNAMES{k},colnamestable,'exact')), 
-        errorText = sprintf('%sThe dataset does not contain the column "%s".\n',errorText,COLNAMES{k}); 
+    if ~isempty(COLNAMES{k}),
+        if isempty(strmatchIQM(COLNAMES{k},colnamestable,'exact')),
+            errorText = sprintf('%sThe dataset does not contain the column "%s".\n',errorText,COLNAMES{k});
+        end
     end
 end
 
diff --git a/IQM Tools/IQMpro/release.txt b/IQM Tools/IQMpro/release.txt
index 42c36a4..7ab71b9 100644
--- a/IQM Tools/IQMpro/release.txt	
+++ b/IQM Tools/IQMpro/release.txt	
@@ -1,6 +1,11 @@
 Release Notes IQM Tools Pro
 ===========================
 
+Version 1.2.2 (02.01.2017)
+--------------------------
+- Minor big fixes
+- Improved graphical output
+
 Version 1.2.1 (30.04.2016)
 --------------------------
 - Minor bug fixes
diff --git a/IQM Tools/IQMpro/tools/01-MEXmodels/CVODEMEX/lib/CVODEmex25.a b/IQM Tools/IQMpro/tools/01-MEXmodels/CVODEMEX/lib/CVODEmex25.a
new file mode 100644
index 0000000000000000000000000000000000000000..fd4d2f3c6a2cac80df2cee1ca4437312bc150e7a
GIT binary patch
literal 371730
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%0AnVUQ
z@yC2j<JUL`*%cah&|?NDA3<z~XNow;A_S1TL8S{M5rIn}0q}(fpZFtME-Qdz0AB8#
z=nViZfdp;j0Z-Y3HbO%}0v2Kd;0qBTyGmf27GOI}BS86mE7bF!KJiDMYd*jPDF#3b
z;Uf_a!k33&tuat%1(bV09)QduM?yO>g3aJDJ!nIx6kNZ9hxec&;A{f!C%p!3HUO&z
znFdk=G7U6U*6q5W+gqmjCu4~)xYTO?$;97U!^^<%(hsy45}YHU-Hj6d=G~yC8>1ut
zlw+>^+rAxd1`W`GE0bm)=+GSK0Avryk)Rmk3mhKJ&EUZc(E69nETEBa{{F4d1rCuE
zjTuPI1`XNrcN9WREe4Gr$}_zDCkom!1a4o0CJn%e5X6AxCJ+ruQIPrl*Jj`qy#$ut
zyxs>&Wsr;`2u_zC&CML(iAc!#r=V^gv?B`2$w-YGu>H_;AVGCDC_WL#NP@Q{U<4jK
z+k!QN_pyNHeBrGgGf@Tx$fPU!dIb8<@`0*a=rRS!N}rcAL_iU+8Pvgn`WyG0ANT-#
z4@hqa>{(FkfWjGc@F}Q+0SR7M#(*jjm<mz?s_a1-|7A01-70*L2-39y_i`Y;U?LY3
zy_6II9h-$`T@s2bkUL8!U%H5Z*6jSR(}Ah^#2*RHDu{Fw2TnJz^$4JB1WFE28XV)u
z%Z9*(Vj6$w=`_T$A#jNd%FUqqHjQ8J27eQ1=+(9Lf2k8_!H_bnD<}mz5&@LPL0KL&
z!Vb>oFK0lGc>>oXpq2wdrj8RFW#FM9)W`r2(1TMT=mb@$1^g|L5l8eDScUUIZ3jWH
z9*C8yoS@|+;KdFzK>4%fA*jI)TJRtTawDjA`@|1wz(S%ljURNx1!x)@wNL>qYXOB8
zsOR%P7^zUHNNPP$p8<AX)F05PB4~q<kVOTP!E>kG1Qs=&oCYdTDpWx8IK1F<*W_Io
z7+%Zm0*$-AjOJiq*af<%^kpE3b?yKE|1aG^EbtVoEr<mw7GD~JSfG;er6vccLkx-r
zkOZtm6^53m{8J9`Z@bhv6(kSp<$@A>=Tz`%IM5Xmol{SMI*Q#8*LO}m@bCZs<{xY&
z+>m9p%|AFw*&w9=baJdDzWD`v^AE-{OONhmP*2#S^+1U(X!QfAZ`piE#KZDJt?VcM
z7;psv&P$M?0{Gr4Hb>C?1q{u*4}g?_o3k$bt`9aax$wKbcrAz0g8`*nk52HqH;5_F
zC<BcG<EsZMxgY_`#SW?s>bM|*`iG5yp?NPTFc?Z=p({pwAd93BW62Ps(Z`Y@xg5T<
zi)kt-8Y{VWfujg?)fs4k*Di20fi7Bf1s%Hy8f`!<NC6E_dvv#g0vL2_6zF6laL{*x
zmZJ26;>4%B6?ATo3wYJj|H;TpQjRx+0}C{`3QqH&{uLREQYyK2ffuBF1}{;m<JtvI
zLr+052g#A3It(0V9*~5L2xCxOL5|afg<ur4s;CQuBoIV30V*9q%P^2k1FuAYuDbvY
z5rL#(#TeK^q$0j%>v3=?ggr$c;NNzj6D)tcxdP;V@bDRAFauOlg9<~)poU;CsNoB(
zf<Y}6XxmC~Do7n@;1QG`x?z<FsJH>;e^BKKYh8n#hNwD0X#=DL+&)6vZsG%Loj@n<
zCxZ$)=%hX9W)jdUBhaKhtWpOxRszAz3Z!X!KNiro5%6j#{uW0T28Ndc{Gc=os)`sO
zB_cG``TM;1a8=OY6||5@054>r;(7(-Xo4*mgu7@zFKi<dXq@NZ1JE8?P^k(EYVa5@
z&c%ZK9d69voQjx`2d$HYmO1<_X3Pu>FIhnzZa%{3V!aqVJ~!*7A1}O0fgQL3s@p+L
zWN3Zw(fJE<LJ7F?1NBm%Q3`7mL0b@@+zE?xxGGQ&8Dtiy?**zwUgy(q$>B>TUOcru
z$Tgq%<Dj)HWc4AatOO-aC=K>7a%~UYS`&H>xweNI1RmK*<JbGZ-vpXx1J(9s&3nPA
zt^~9~5R?^5Ks$-SSE_yD7n}^L*I&mXh0tuUh&N)|0u-{~z=kytU<P8&>mb%wPo9RT
z-4V+=z-8V`ThJz0(4xl9-Jp!`V!azw-IpkU*EU*$s(MhqhF0}kK|TZd2x*N6=;U>H
zl6nj}L4FfAC;@?IMnQQSX`?+xD*#rdfHp9-BCls%2%ao~=2_6~#xG;Ik@9TIZ*Y?V
z)H*=aHP9vl#7^`k16o}(tq)w+u!HNG*Ve5E(kAft>HP-HlR?%`ibDNV!t?SG7X!mC
z(6Zat!r;p2H4nImf6WT606Rk$c=U#D@#qEJWz!29Jq86DXrLK1Mjg5wRP{6Sx4eA`
zVleTywsJ5qc=U#D0BP{)1zj!E3mRkw4JCjg8(FjBJ&+z&{+10dL9XR*_2gh+01esl
zw}9?lLmiKYP8Nfv8!$pV!lM~{l?3B1@Ko`Eio#vo44|T+J_9;K;Q^T}1|@YI-5`*`
zAZbuZj?@hTo%QVjohpNz>5Y-&!3hn2FzGD=`IMQz<=6`lgNeU24z!sQG_RTD(Y+Zw
zuL+q-0VjUQ*o<Iv252C@H*^U!EO&Tx_kxD#k;Cxr9gu;n{4F^zAYsS~Icx&7LMR?|
zZYpTo!CufIcMPSx&3i$!APoF1lNr&cJ3zr+!hRew>4Dl{0+q&~kin9=cYs@<lh{CE
zUB`3Wbphy*<(Chi|NjrQs#F5f1oP?5T>vfe>kVH{2enB$@4t9==KudrS5W#|1M;Fr
zcQ0tp0oi+Bmw*mZbLo5rN^EbhfR%&liC&(gpyI`Yxf^tNzsJD`Odg$wJea|AGBEwn
zmEfC}fI^4~a#yE|CAb=>U;A3D`3Ez9iy6qNKbZLC9T@mqPl0E(!7)%$(hLbS@Vqm4
z9vM;IteXfaZ$MidJbFV{fZXoW>w3VWyB9P|0!r#2DVRGzPB*&^T1U|QgO$JK@U#E_
zK?iSu8oQvWOVCPi(Al=2`;DM$p+H-6JHbnXo52S+gBHs|l5I2SP#DOtQD-ygR^QiB
zy&j-}x8#o=-CI6`hK@Wsw;Tr1ohO=qFxEeWjHok~ig+~tVyxo>?Y9AqhjuoDCY?RH
z!NWHmoz0*@YR}Gl;O$wUkbSKS+D{0&-T_)ELiQ1Y2F#E;&ET*CRqx3A2#<l&k}G&0
zF2X2Cu?3kf1aGV(&M4UA3g|=(NUO}Jb1SHh0Zps8dUQ8K8ipnYpv`=c<_mb&A9%_F
zn@d6Gfx23+0iPpSw;!}|&lNU{q6j(x9yIvKQ1KkPmCK`hF32)SWA*g}&|C_5oeX%E
z6*R8^TENhH7(8+an$5HX&(!g^Yy_q78K6Z9phf~L2>C(#qM(Pzg9C|}`BX>-g7(r%
zEneG$(m$x3MDF})H*Agvv?8G!yqKU9yvY=t8bPVG=q{+DZ~#psLN3?<kDfzP5>vhO
zOEE^+`i)+X|B#;9F3@}p=&+V4%%Ib(Jvyf_gO02A=$^t1Iu0Ae2a9)4VFn$F4dR2v
zyQeUNP6Y??!Q!xEZnwRj=fc1KQS%{2%Tsk<9XpS@@~?l>8^Gwuzy9hceyu~GVGKxp
z5(oAUs0jy(DOghiysHot_TVH6x|aCtC;mv#&ZJ&&-37Vf5ISuET1x>+>TtDZK*x=L
zf}HQ#400bVFT=ztAgAVlyA&|71~yozSb}Hq`FqZRYWW{b{C(#^j03Ee;M~mL13DWA
z6wYOfKt&TXf8Tm=0s<vHaKZx3`GQK^2Jo!ez#k?L+T8;>H0U+bLGqYuAypjE(m7~E
z2s}Iwy|@OP<mI6?GOQzqt_U@`>%2Bb9R|gz4XKTP7Mxr?8jpZh0wA66fS8a+ZCXHU
zJ=Cdw$UHu%{Ca8o094*XR*Ztu8K{Q{YXyL&MIbFmLD+Nvbd+8Y-g5+{%a`oWL6_p8
zj{ZXY`cm%|ND9`a1U34Q3NDz3!D$ns0a}sr_b+%2)(Gk}LW3Tx3gkwRo8Vn2_)f&k
zZjes|!LuZI1~SpCX?P9NB`_B>2m<QXfc>-lHK>US+582`Otk1tLA~J937U9o1@)^y
z`DRfU$U%bODHF)HE_jgie*#GfY=y*;Ah<>U^5v)h{~>e3kizQatGAf941$ivcRk?Q
z`OUNQI*G?4ew7DJ9sX|KF90esaUFN~611)vl%T+ov;)L_xf`q#+?e-h{f0~DD^#5z
z?#o7yPTVKjfz*Jr0mL#8_obga14HMjUdR8<KbXsK9MK9=h^|izv{L33bMr68a_8p#
z;Mq}9TzXv&v~L--Dg<0da2;<4u|WX=n(BcK8vbN16$Vv6;57popwmsjHz~Swt_Gc?
z2Ce=|3Y&L>U00If(G4D50xeYl)wOUQXyDnSb2n%yk4N)vP)W;BisR%|kY7DI?}H6Q
z3MO@sdz(Q^3PA3Kt=-{oWfTPUP866+1mSi&J9u<Pd%U*rXs&i3)tUpc;BKS`tj2=e
zkOR3&ETg$vftf^S7s%qeG8~6L?PWp!31BD*2e0jlK&<qGEQ7iKqI4ptPf<cz@V$_M
z7+cDI+&Kpv%dj>a=n5FfATx8RRr7982s4rB$!-}?puvXsL2W-!d2o;%cRGOGDZ|9y
z>IyQnc{gaFjnqi|Ee&!{^9;~vXzKy~mR}%#=l%Z|K%BSIxMBo!urq4P1Btv`D-BvA
z3R%vD{ai*+e+#4$lrkYn79{erL>k-!!x2%S)2Kn3K#>8_1QK~^FAa$({uXe546+z|
z0eE;5cJv^4iPryMc>lWfKqY9*1T2i*fuIgJ$S#BfK_V|NOW||i1JL>dl#B=xc{xuC
zG_VO>#RtmJh~an8=p<tJ9W)B-(TzU*4(@SuLe_D&)q+woA;*IT=20CF5_u_x*YQ^|
z91jwC`A`xPmk+>8-~_?_EZB5L6;p{HXv6-2Py8|9Qz1c3Q`p+LV&f_t@rWZImrH`z
zf`W@f{#IoU1_u5vS;*}rpnhcxIJV$cv+=jQV@J|39W*xH>%#EA({%<oaex*KgHFI^
z1~EW)Q-k%xr8a;IX((5~cLQkONEv9CE<)LB(2^MVfqIdyp!F=E9mJsBhQ2%a+w;If
z6tHFIg02&Mx)+06J>AWq@js7F(5MkO33_xM1KR|;YY{rF;M4i+f3Sm3=QG%aUOt_V
zz$=>|i=jNaYe8-X2L@E@Zb<Sdg&bQ0Q4UfDmWG)E^6Uao1C_sJF{rU#ox{N20zR~>
z8?s!wGjxMTcQa^|$fMJB1@wM5g!?vw%gpZ34WRPKwg=QME8XA$y~W!DEPf5vX7uQ;
zU4hc9^XT3U$#<nIz>b2d2dRVdYd3%yAXjbxooTtC92~|Azyi?9k-r7BK>|J#dIVf8
zLe>v}23fi{LyF5oAQ$%cfEJ2^CYu;sI&<f|YyoYQNX}gWJ(v@u(yQABbmt``)I7RF
z7kG8sXo1$Afr=4GC?a_XJ<y@2dLS7A(Sjx5<3U%33%YJ-c3r{P?YhDmd~G0P%HE|r
zcMd4M?LaKg7X%GzMY@7Q0UXI?pb=&;3v{db22g;2Qm^ZTPyCUtJK&)Pa-Z*nG=4qb
z9py?OMH`O0g6`^KIPMAxdWKK@TB$QW@e8IlyetCEr_|2)UkaKDhMFt@I-LT%93PyK
zUxJRpfS#-?2wo5Nay1J$zk~dONZFvw;@j|vKhhWEFy9r>GwGmZ6{sf!S(^bJcNcJl
z#6L7bOX8uCSrP_q-`4p;n&z+}fbPkVL1FNEdQhZ+*VA`*LyAY#b@ULUkyi)ogpTt;
z@*ezj$rYdYBfyy%WkQ?3BajI?(F{5&hEEJqd6amA8xO9~;aSMe0&GSh*CAZ{z?DKa
zGXn#3pq9UXuPD5*FUf%UJ04>p4#dBZnP<p!BPe~qo$LWCLLkL{e>u3==h_D@$A3dN
z?}A6UU;03n<3KzQ*{Ou%T5b>cS`SrF+W*8Km%0L!R91L&{sUbv0ZwF~vZKTS92i!J
zJ90s33u(;_daeft7v%JJNc6yBz77@wrLdUKL5+EE83{hM19s>>Xk-sOVP+zL+eTC!
z$TlM<j9G{_DJXal{*wXwPYlsggm~coi~JhUh!M1^Ru=|EC0G}Ki<B^^g#>G{fu|`t
z@4t9Z^Z)<L|3VB5`@rp&L`DXNecwQ*@%-ZCZwUtR?t^*U{4K7G3=9t2t~CGR;co@q
zQTWmXl4pEDg#zeK0^c35s<TW6Rw9Ac@FGpg3A&zm4c_?<(&LIKOF^XqXrw$2sXUQ@
znE|TVz$*>--CXB%y3T2?UBFmpgOCLsK78l`=tSYz6KVV*w?O5=hBW@rD{1^;paq-Y
z?ZO99OmJPm*j&4SwM4_C8&psTfb13oU7Y87;<#%MsLk~9)NgPH7E)lq+y^UB1X4jo
z*n=`QP_lc?3u;5`_{0ygUgKahsK|n!JPTUl37SI#4I94}+V>RFNO_S_{{R0=H$iYw
z1un_Ju>=}S18o_GH4@4|VFg|L3tCAk2xUWtK%iO#7DIPOrh@AA2W6lYMqndBr7Nu9
z6#yM{0^4W`I@p{a(h`F165wx{4c??8Fd4E_0MhhL<JSNk5ez!Z9BgqKzsBQF{E-jS
z`1QaUkZ=nL6p~<P?f|u!UWN*QJRETldeIBWz2FkJ40Ie0w1fwpZVlU%8wp<53<^5X
zC>(@_?2-fpDd?C+5DnVL0WHE|6GpJ?YX!@-hOk_F1)e=^Kr1rA0R__q&U(;^iL2mp
zL>$^8fLRYy2|W^(zps=DdTI+~D+=iBXXLFYpmSAgo`7_NCT&2D1sz5U4iQl7fRYv1
z1yB(j$9sb|HnM|q?`FvHuHYsa$WV}B&?AVCLyi*%&$jWmE(M<;0J5EdzwaVw>U9sO
z#60c_x~CY_(tw_2=9zpIcC0tQ0LuliGh8|!r16J8N#oZ$0vV+NE%0&S_j&-DUx1z!
zTXW2%J9h_op$zDBV~|@wCq-lP6FlWX_V$9?OW;U<tqfYj4b=uZ8Xq-Pqa;{xAc3kw
zkdI-(h^WLN4NF+CfD;nfD;NO>n?eH_0}VLnIqa<mN{ivKIv=$A77|vlbaTX`({%?l
ztUS6yK}{QIc!5rH2JJp8m9CP6p56;maGV9y?_oIZdIFRQz)1^o(s|9M=GqesC3Y`2
z@Pcv!B&%WX#DUI|M(qcIL|*cNR!%_I^YZrzLx#Y?zW&4y%07ai;tXOgI2b_D0&*}o
z6rmy!kmeg`Al~%^+~YOOpv$!v*RX?@FFfIINd{MB;N=#eI0gk9c=a!+=?Y3vBn2>k
zs|GKqLV_ksc97ZN4P4lB4ct+n!!M3QPR@4eOkDwq5tq)~4Zg{5pfLhIE*r8z5gr{9
zRbtTSa5~NcI^mGvxGT64K#q$&F5RgsT)J~NG}rE6;BSE?W>9X01{AoRi<UHZKo*xr
za>H)i1ud3@q-2OnSOE?`2OS(UpxcK)6(M>e25mbB6>QM^h-QOq{=^>%y0#O%!m~&P
zI?E24{05B)fZ9f&JtIg{Sg%E(S%H$c>ETA2iUtqGy$<q7cHIH#Wr2_W_vj7<^_Sr3
z9(pdhdX=h2x9bY<<S#S$`1@uHM*bEikb$7t9MFb7P#$P@-ND%Hx&wLy|6*`lG}mrm
zC}jm(*ZhOARNA8(eB`ueC%Z>yGiVFM4$w}Umoi+4tO7cK9wY;fA5b6c1b-X2kJWkq
z#qqhIc4le7@n%pG2BlEP=0A-5t)MN0po_lvTR|&iK>bJXJ-aYVJRoC!ki|ye=mHxK
zcGk-UoD2*gx2Zx51^EPrE6cztzm$T9W<Ys`q+D$Q(hc3T7YWL3kfb2c4XKi2Kus)Y
zH4G_ANv?jcae&s^{$=EE1vL;6R>XjYCm<ULU<sGM3AEV@)T9Spxg`j?jtd+eKG3U;
zz%sB>05rx{1smwV?q^W-k6My}L|(c;T*Oog8ioP)bueSM%!su3`T$zd0SQO`mT!<|
z4cur@Sc2mg)MNv-KTZ^ZuGRu?kc9aS;jI#IOoHNpBwyu$D{HWsNC_E~a9#$3hg=|K
zGiZGR$UTq?2_hzg+A)yLBdAxBl$n68XFyyR5h?tMKLR?r1=>3Txo8@(OANBp7*b3k
z78Zccn1C%<xBx18;T6bnP_fb-jBNlMGV}r&1c#*;B7@?!K8YHLjb+C@;G{Dfv`C~n
zfB|xgIk-PmgXj-|M}a!;zp$<X6$m9sv~>$V$Ssi3^%9UHpzBn?0|A})U#y~wBf3}^
z7<{Z3PheqSs3G8A=n*O45*VBth!1;^)|c|2^-z$>MrhFqHU->d#^{>DqT)&}ylYwl
zS}6)Dol8JnShUdc%>#A3!0njk53Gn0(y}uAkqEl68l{LK)>9y3K^8$49}0pkb=(6o
z?j>mHD&kU0!Nm||kn9Ut90u8R4Q~I{R#kU5dw`MxXnQ}1VciV6@}(Y>6Tl@m_N<c(
z8X)Yv53cFJ;RrDWqPbKZza~&9f;E9kt*Qgy)Na)Y-nY(@`TxIT=MiFq;iV^dFEY4w
zR#yZvu5ub^Sp;LL8lIZZ5p>!i!%JR}-XC8|tw4cELe=NE2i&4P2kN4L?&Qn{=?4|K
zpZKxVN<}{4dIxmQ6#g2i8@%wNvl(2_bvJ`bR*%kRP!R|z7GK7KJ4oR9PyUvlkV*pF
zEBV9^YSjsXdLNKz1_v&v1q~WQL~cPt8-`HFf=hd-S^?0YK?HbQ1T<W!ccRDy<SkHH
zk6y=kbb~b_stHJ!>m_K13rG*dbVwV3M)gGVU#1dH&*meHFVFu34VQ!KN`!-;863TB
zL@0z|J@6#hL}R4Kaqw}}pako29DKF`h}pdvv>d$kTb-p(H{?vp?%klJgy6OpctxjY
zHxGjcV>hV1>(R}_?!nj%Iu`-7G_Uyphvl{U`!1aiJerSWAT2O~j;Eq_3&H+E9ZKyC
zc=G@MOQ9$K|2NmpVc>7&c?V)GVBv37dHetW%fD~ITqgd$7jORmfBEqZ=(1vP^U$Lg
zoLD@1!PW3SP=y34dO#imrvb=tM;heb0dR{JdoG4)1hoy2H0l!62+B1e8xa~oA}>M9
zN}FAK7@KQ*SovGOzWD$DrS*U45{od$P{)v9N6@;8t0b<g0F5|<uU}Kax2^(o^DH>p
zAU*+cUy6fH2kv$I-~5A#l$8z-7#SEkH-k2o;<+pk6nIGXfw(W1gYxx1X8u;tL7UC{
zK?g%J@V9~vfjHg{;()@-<9Ivh$PiFuc_i-#B|ndY&zZoE_ULQ|NqHP^2BkrW3h-Is
z9tWQ@!&HEzJdT4CD-IPBplRsl-5{eFN)$Yr!6}-dL=3duN)S>4K?kPljbA5WPa1C^
zBZWvF1c|&nhO(6r+`{NKVe;&*VP!xW)CPBQp<`L+J&rfufbO>OINtmM!35<bupf>$
zgN_%0GC^4l$^@OI3t~Dp|6?w-gF3p-6znR{Nf3~`)*vCmA_!9H(cKO9{&5Jm`2eFO
zcp|C(!trKMw*wRdVC~TS3cEBl_JL1l>I<LF+z&pTr9V8H-za#Jb7%5B@S@t^t=}NQ
z?85K)th*glr@2@@D5+^ZP*>s6y&p7;28qq%;EpZC-Mb^$p=&}tj)QMdf(nCfYJ#Z-
zv7y4CQ45$bhz%0%ZU$M^E8+mUc}H_{0Vo~J@X&0oU<D7TlxiIZD*!14r6ABMZBXTZ
zycu+1AV?G(GA|`Tr?7Tz1_`=!Zw49ZYWa-66?E$(Sb>k_YS1l${4Jo0&A0U}q=W0x
zy_;qpbId-*>;du#$V<M--+VMTgZzX&>4I`1sBi*#2pmF?;?S9ifx)K}>~gR#UK%km
zFt~Is2Kmpo^(~1jP`)z4P4hs+qHppSzg`{i9a}z~@4=RXwjhE!WUU8Eb+Ee^l(9hV
z9gur>fH*I~ZB|4gKr#xHMm$;%lzQL@ZM-&sy$yC0#2Q0T&+9n&Dlm}UNY;ST8OWM=
z9M*VrV@<6j*}fT)^k8Y%tJh{L$Q5Asd31sYazIWfCd~;R-Mc}KhnRxow_a=&Cn&H{
zQwm7rwTyEwONz$~55{Ila(m*#xEPe&z~Sf7Eu-Sooub0w)19Lt;L}~AA^|Bw97BRT
ze>--5>2>}O+T&`BJupCC1fK^4HVo`cFze+@a8>1^LYC$=ObiVBJK*I<>j7K~^WfGa
z*_;n*JpX3g1qz{^plzu9E*Co^BwRWZWIzWjGB6wmoyxGm#^bmH2S~riaR&h??Es}c
zz;rjHRnpm^!3J6g*#J6X$O9_a&FRtEVZp}0&^ZCLK;Gkc1E{C?1+)RB0n|$YpE%h7
zUTe<4zyKQkVeshe0Iizw=<EQ^FnM%#faa!-H-I}Tpb_#0&=xMxX+y^wmas4|fJ(FD
z4J%j}7$9bW4uP39bLPzB4J9lL3^Ql$wD&mP04kxtZav-r%1TfsD8)dTu;l1*ya80k
zK}A7DA&7ar0aRLmSq=dp%Hz001e8ty(Z?OYYu%1Ffa)5MfJbKoXvvaCH+VSJqjLu6
zj&%eNv`q1M11JT6DyHKNpm`Dq>jnb@c=Qq!3gDd50A9ohVS?vTAWTrH46^8W12{^-
z0RuX@7!)ub#~Z+n0EkLZH3?D)@){_v!AjpSFff2B<jx5{SV58V2TU@6BJg+vDEWiD
z<#D_Ll>SY?I(R^hFfa?e%oWTMfs0ANSu${z0-ObIz%ei|L_5YnGflW7q+#gM{6@pE
z^LuCL9?#BmB(@JzK;>)a@78biB&=rD2i=1UZvA(=?rDC(NMaKaw5y@pbx&tIq?LFQ
zSB3*sMxf}0?0<&TL|Z_6$!qs8^S7=8g&ww+p-=KNuU?y_py&ceD`v|ObbSSE)sjai
zxWNdj)1eWIBm-^^!CHg-@YWzJsBpE$UPysTLCkXTB`9q`+OZ&ad3LjTbh;k!I1b*Q
z4HD^wv{hk?wK~BP9-!e_&`~TN$H51PBPr}Ig`VZ!36=plNF353^XT3UTHyiq`b&P$
zaL@5((5@crnn5xk&6=2+;Ub_>9*A+EbE!OzgI7RcHx9fwq4hwiHC!{?EpQRIac~ik
zBOn&UgW7<{!S|<Nw*Y(}OzVLXzUJMavXG%N=%p@bD-Ad`B6}TfI3DZZYCz70IN%;=
ze6=(71bi2l=kXR5P+J{~b38jCQlMyRodnu{LM2zg-39V3*j=uzZ~6P2K-C<mlw*J?
z0Il-d0dgH!5vb$f(d>GH!`1Rl&7GIRAmz<R8KE1?K*7b|2kM`C9B+mfg2|9{htx*`
zNr8O?TDk|b2$7`VA|!<?To>F&(D>u;$YBKCOn3*fKMbPIvwIIX%%Q$Q@j~65msXIr
z7p(O5fcpX769h?t{jidzu>$o&g)Tg`5aWK2?%kj;273-EDqg2`PX_mBlTUecp7&th
z4XQyPd&_zY*!b6919eO~uX*sV-y8tyob;NQdvtCFDe_?M230X0{Oc!!mS1@EiU@ji
zP6i2eHiK#-NPh|vz_06@cY}J<3?;6h{VptsZWFw=gN)+9oCmM@x_5(0Lzpm#4ayQE
z6@s86R}uRS6}-D`Ku27Hi(Rm}pk)f6)aq*azWzGpJ>TZqJ<KIy;E^bBHR1uDWCfk!
z@!AY50G9IT?gshM<2Vbb@xXxS1cSNI!74|~>-E=OZ}I5v1|_Xd7D12hZcrq8beaT0
zj<#cQv^-vaAJI`h-VCa+L1uuh@@PJy0qr(B#$&0!JvvKwkiKgs8eCfa_UH{g;L%%p
z!l&~;I2=8?T~By)HYb3RNw@0(kIv={5c7C5XqPlN)?f-d!9t*{(()LRt3b<h(UgFM
zKy`$mNB3@!31B;3Zic7_?e0cX4-x{Ymqk_&TIRz9O>HmBA$mbe-_Z1egg|30{E(F2
zdZ1G8<tb1b49RL_qd;SvaAOs~MG0aDE~xAV^#_sd02SIGF^~geaXAp#ROm`Xu&2Sr
zFeuePvXp1{K9EshDNx}HI*<}{cIxw&pfM~^YKHg%l%^dmkMj3r|NsBLvl-MDfJihS
zVD*>*+IG#qelj?=7$E}>{Ochx#t0sM0NsNJ?lS*J87K1S22JrhM|d0u@7xD@(&KnD
z=p0%Q^SE;WDDfR{2DK_dEO0V>jlUlaRs;49xR*;H(MouBegzG$AMotF?$`-B-q81i
zZ|5-*TcDuB@W3OK;3hGywjgM$7n18h+?Rcz#sX>kx1yOD7#w@SJw=j6HI>0uk+i!E
zG{DpRlbOHe76Su=FYaz7)>bZf$AbW9**|2ZMzKK^3GH*x(l*fQiBdt(Q9x;q{CaHs
z;7tmz#b7%Op=)hUK*U=Qkhnt$(zf`+RASe>8{DbkZvh=%?$KRs0Zu-k#XX=RM-w~@
z0J;ht!UI)G$D6@A7#J8{he36h`g$C9wg4qtcoEj=YymR_GL`@{1d=BphJe!bac58i
z2sDHWT014^tnpger860{ED_2FhXg0M$?a_LTFSBc4^yd#M|ZJ>Pv>`(4CT|A%>kLE
z;ui!@IUEOXMF(2~J`NqUpapWt1B3;-Q~=~?=v5{ihaHYLgH99xi9t#TpU%ag;|5^X
zfY!f(CL)g`&Xwv0@410{`#AV;FOUHq$HAv7LYbhWr=d*HxzkW4=$Jw%6Lf_dh<O}5
zj|pOd+7{rt6?A<7{5}fEYD18`Pv>ILI!vF=#h}@><KP)LkT__z2Q(l6yVVX<-Z6l7
zmwSMEww+U$1E6#Sh;BZh;9(2uikIHmz(C-tRu7NPQqU@X*BPFj*E@apfUcfd-~-wV
z()u4)#(#~vaTCOSc^G7I=Wh}x7<xgQ%gO1lhJdUCFLxp#56Xiybvto*G+Qu~M0qq<
z2r!fcdo))VFqHUsG*?)F8eq*84h$uB9?caV3?=3s%@qL*B?cbN6%h<2njXy+2@EAl
z9?caQ3?<SY%@q|4B_bZpI~qVSRKn%ayaUvECUvh}7ifwb)O!XON*>L%D;RKvJGNrU
z8@!obz;yv^tr2O(5)Z_7#!?Ybu>@Lpmd3Bg04af9i^I3-P*^lAV_{(M>~`nyXs(c8
zC=o($8@(3rfUc$WIPMA_7J{~xz>R81YYE(nKHd!46b=e*c;@T`3xQip380qOaqwm<
zG$r8uSFHz1L9Hc_3E=YZCFqiDP%j=-n1D74AsS$y?E#?12&lCLR}X5NGs0R+ppib%
zPywc1&^lEdttF7LV5>d4cVjnpE|%63=(q=D|A1OcATf{wL9HdMCP6oMz-$9K3d{z#
zmdrux1NMN-^z7aTG72n(Xf3^|dHzxuq^9{OBcxG;(prMFkoea(gQEvh6F`)~Wx%lo
zsTG=Q_b~Cdf=-6QTA#EYC{4l@9JoBu3>jyrD1!I#K)q8WkD&HWAHDV@uG)flqO%z^
zbl4rbr!yE_V}W*~IcqfkVk~udjbjTVjsd3ipeA*9=n9W+CXY^MgV)lauqYJ;)pMYn
z1*?I;p%2<R;nC>~uIxZNwrE?~c^n6C?gb?Q(AW{QO7b|~yaK`8fM9~J^Z||S4a++6
zcr&P(3(Cph+R_85PsqT)6|GvVpjsTOprBgJ#Q-L`AcC$zLH<DyaRmhiE-nV=u>6!%
z2Inw;7uR5h<g)yf)cD-gTm@SNzfd0^h0L6s)bzw0J&3a4)V$)5{PgskRR6Rzh)`f@
zVoFe|XI^FrgzuhO0#fCYU1`XWl3j^mjwi%Gg|ft)(o}`C{33;HJqAp{%wnjO2=hS3
zIbxUxcD{RR3CJBT*_CidfY_D!r6m{|N{Ui31+h4wB(XRf<OYz}G81!xQ%gz<7@WgE
zo(sw-W^fJ*O3p}4&NhUzjNvRJh%3NKAwg3aY=GeqM}^$f-29?Sg`(8L($wM-g|x)X
zoYWMMo%t!LLHYS5AgdYDF*Jg`>|B(ZSOSW-{FGFXMZSqSIr+&9e!&Vhwh9Jl@dgSU
zr~<HNXoOW_Iw}prw#203lKdPD;iA+WkgyGgT~K>KnUsOSu|xqB*s3|{3W<3s3K<Hv
z3aUBjItnEjsS2q@MfpVvB?zA@6r~n`Je87DsgPf!P@Y+mp-_`iqhPC$k(-&P2Qm?#
zdCB=jMXAXp`9%uJ`FUljMd_(|$*E+U4{>8LDApB<@=HrH^HQM^q>!1XkeH`Xnpc#X
zoL`n&l$ey0s*szQmzP=ub|b1gq2}c0l%-O^oTAM1j1t`pP*@gcrjTwTBK#okLN^bR
z1i?O3!1SJuLQ-joLS8;hs!}1dSfL=lxHvN@Cl%~>g!!<zgsBCG5{7l9dC4W2`FW7E
zP^^cPUZC#F&o4>K%uC74OD8Gx5bl7OQ&^gqQj}OyT9m4Q?go+~mjrVu3QB}MSi=#I
zchb;<6qFn>!nHUxuQ;<Lvn;culA-`XxDyi2_{^m!K)}90E>EzA3tsE71xyL3hA7F;
zS4hsuFHTh`$yX>b0FlKdiA5y}nRz9t=|zd46beq=4DgC7v7{t5x1a>1G&wORM<FRS
zEx#yL0mKF+Rd6ATD0C4O95MP3r8z<$qP8s2gB7Tm#R_@(B??KYCFQB9c?u=Tr9}$5
z3K^x4G8SCkg2li^F4X;w*xe0wFQnjxD9i-aehRh<&SCL>{z1NuKJg*JA^riNVi`%w
z-_JEZIK(voDhVnaN{UPJ3lz!|A#N*9ErFO<0INUBGg9*uN{c~(1Pa}vyu=&@mq2hk
z06Fr4Jc1Eb7y|=CCaA6fJ15)?RtUM4mjtJlD8Lgu$kKwM{IbjxP$ddUFd-SK3Z=!V
zMY>Q41$0f2L<w;uXjNTaW=UpZjzVgAi9$wVu|jfwZb5!tYF>#(v8F<5VQFFxD9Wo+
zi}DpTpiLu9kY-R#4b>M&ibhzw1LSu-g`$jNa7bhpgW6xtVe!Esj_&TRL9Q-_AWKl)
z7fgyhpm4~^%u7uyQYZ#hMMdhx5C*(d%`65t_@MS+Q=gfaSprv%7H%N*1Pa!~5^$}b
zmRVF>0?sHPt3dkj6lQ2;Ggc$O5e+g26oy2WX*dnaFo5J6P_dv3Dho36lJoP5GmA@7
z^FT=%lDspE6_QdjGV@Xtl1qz<QuE-AoXkA1A5$_x4G~bimY;@Nh=dg7mx7uL;Iv<m
zpOaVu$_XInfNX^1R0VjUl$Kbekd&C54XTfEnF;njM)^)`nny0b6A`IhAwLbC1(H&e
z^K(<dtxDAT8B;wZ>7!_XI1j~rnED_|nUKERisF*g0tFCJtWc7eotg(Lc8gLIlQTd8
z2?{w-vO=*BRJ`YwCTA!lCMTB`B__ig+=ya=!85NU6<ij<3Rh4I3))&$NGwWKC<Yl&
zk^zb-1#NIUwnQNx65DyH6(wL-=_!DdAvk|2lxODTfEuDDnR%tD3W<4@<%yMg3?K!G
zN%>`|3gwAKc_1f)N|_{3`JGu@T$-AqkXw<Fmzkqbl9`)Y3{Hz+gCGUH0#r?6dSYgt
z0;um)k^yRg73C-8q~?M=4(c^1q~(|9r6?qpfVG#U7F8;MGd?K)g32gRI>x6C8U!HY
z;PoA%{>d!P)l={R^$8(exMEQ7Sb-{vU{BvrpAbhsSO3sp9k2kb^a48sTXBZP{G8le
zNH~J~ok(_oOmuW{^bLlY=H%iAb|WZ>!OBr2cb23U;Wo%E)XzD@)8Eh02WFa|Yj}vi
zAIv~UP-hBU@q@AgqE`$n_ORKPpM%@JU}%Vh>A>s@2Rk0xxdJ7Eywvo>lFYJHL@or?
zIViOZ1A`;DvzS?wnxaq!>FeYdq(WLKptd+DnPlb`<fP`N=9M5NZ%_~oLHxlU;^+rZ
z`on(is(c<s2AKE-sQ3^2-FvU!ykB$M)~d(gQD3F2UGLki3%(zlU<c990bU`=z!2&1
zXXVFBzDWU4eF9K%28U{qb?y(VTI^%`4}H~$c@LEraR4n{1T9)L27}8`aR~>A`5WvY
z@+YC<Dp2zTz@xzo3=H5gcCZ`Vot>=|G~E3{H5E+sO!UkZj0_Bo42%tp6*PiUQxrTB
zOCaL9hK8C93=AS*O$-c-RY44l6#|UXJnS5x(NGx%1_lrYNxOpxM?QfzCTCtYCMO<t
z4h9Ad1_lNjkT?Sa187kp157@knZ1Xtm$i?jpPA`8SSi??45(Tc5Dio7(ac=V!_J|=
zz`y`oK-q{a@72uG!^~6!G6iJc8ju_V1A`@KEDB~uTt9OkOD}5=TQfVe7$Zn21IRqk
zdP<OTDbT`5m|FK{W@bKSuo{rx{(uxPFfh1+XqXx%2e`Zp$Q}j;1|4Mibg(po3dsLZ
z`BG$gzh<@`)?SuAW~L;NN{~G%P<3j^>JmY+5VKpL^1`4IMVLDhko+ad!o|bR;mFMZ
z3HL2f^`PD5Si`*)Vm2tuKzmz2)=mTIftigIN6d|oFaxRO0ZkDyFff3wR>Ed3GY3R1
zD10rTYQal}VdnbxFgLR>Z3fv6QWFDJ^A6+ym>M^5oIZxBX@IKvf~n>uNDatcOQ34h
zK{U)9WIqTofs}&d1hfYaWE5!f0?7~1IAN9ssRYFxX#NnS4jjiYGh_Rhds%u|o7tFt
zfeZxM4LVaDq;58@@N0vF3CK(zP+DVPU?@da8xAv*ITEB26fPxDb+14M!|e8GW@fqz
zvK11?po;=Q(&s^u4pS41$Xm?YxxtD-Zae}t544d3?&nY>wf{lBhM4;Ss`d)VaG1GB
zVac=~Y%Dm>%79i1GcYg+Bdhg8$lE~W!Q0Z{W<lgZ?uvoRuSSkHWOq%3xC@j=Kui5V
z)?l*>WEN<lH%Pt$msxQTvp{OEK<)hrni7V)3n@IFu!9{5QVUu~1u{1kwALM)+5ir)
zT2L9F1InKa3=Dd>)K;*=^C?I@=&XN`*(|u+;l~D74@wt3Q1f4b+z)dLI8QNOV}X{F
zuvrK2+&N4QxSV9xWaVM!0NHy5YL2-Q=yo$`xs9B51Qp=+g4DA>7i=dhBB@7?CrgBS
zP&zk(s-K4(7hbS(kGUTd6CialP<1ZI{z2pi4Va%=pz2IPX%prrS5P^@tPLuyLGiQ#
zs^$Q$uw0FZ(<@N5Tan!tf)xLAKrV#j2k<@u1_lO0WH%z^2WA<ND<S2y4#;j${DWwi
zJ0p?I6@a(_6z2?j#g(}wiAfB4#U(`$Is?WkO3g{sD@m;=VbDuSEJ<Y0ODZmA&@0LZ
zaX`uq^$bzD77Th|JrE^ux#Z#!kPJj$a&d{F8G~MOelDm<#-Nv%Uy`cl?iZ?CT#}fa
z4K*M&BR;JtF*g<LLW&4bdIc48(4dB!1#Orx$Uzq_!X&_3NMIZW1_o*9Mg$}wF!Ka>
zHx&azMFp740MZAt2bASNA`&2ifq?;3mx9DWNd_terV`NX1q))a3zY6bW|FJl5V~K(
z2xbA4hS}c)N_$W-5Cw88G7SnRkQloD7tj`619)={NCyOi+zMiW^nmCPsQqZxFl3wq
z$ucm&+DZ@}WYY(X4Wj+Agb7I8ArE2$2Pi)<Fo44!l-yzV!@@rXYQGRj6B3pHU3$R4
zzyMlliX_Yc(+{IFap->l)enkyWc@Hcj4p@jH$Yazz`*bUsvp+Bf=NSs#Q@%80}=x@
zm|<cdJ`Br&7R$moNHn_IsZjgT!(RcaAGX~HW(3UNFg|E03^a&gLSWjX2x3zJR1)N0
zP*Q;DhlM|A_bYnZ1sPCr9YiuPfDRRduplJFR0tbHg81le2Z_(P10oq1IKUM#0|Uq&
z&>kjq`$1PvVzYn2dx(C}o-hatLW1mru<(;0bu0`YLANqvC}f7m9;y^G12&g1FffC+
zI-#lsZ5CrfG6&qZfwpl#;xInAPXlTTGcYiK#En4?V_;wa_g|n!GQ%1VP(F-eW<W0$
zA$1MN97Cv6!Tl1b24+|#1m%M$(8@xPdeHSKAU>$P0@0pO_w0dM0q%P+Fff411CV+{
zP-caek0AA+q8=p90!l;-3=H6Y00RR<KGd99d>~cOHa`OcLnTx^2NdxP3=H6QIRgVj
z8&o_2n&H81aRvs4$x!h;Nr*Y%wl4z%186}D$lk|N5OHu@mw|y{6;%CMPzAuizyNOF
zGB7Y~f{H(fW@vERje&syv<wGi&I3?@FfcHH+i46844?(pAaPemi22|)83O|Ys9g&Z
zF9rn^sEmV#$9<^z<=}mM3=H5l76StV=xkAt`ovI(IpB5`0|Nsn0fNM5MnS~EZ7B$o
zftdl6`k@>oiW$5W5lH~bWM%+uvxIVxC}sv|q#%j0fzuhZ0f!{c4Hbt*7hDE(>I4G=
zD+9O<4i{x$5QVA-wVjZJ8Kl7C(8PlzArBU3Wza?v12I*g;-LBt#D`%`us9n7G&o_x
z40=#;&@M>0AOiyfB>%86{6H3j_2n7Z7#zU*5R&#_J{tpQECM0QzyLZImVtqd;R9G6
zA>$3^voV1CeF$NOK&Uvl-+&|@4i$&>7hzJMqgp`bTR`(EOgtH?z5`7>6Ds}yO*|he
z4lBoD=0NfX8v|$)EKCeUSA*5FGC-3#NC=D@q2fVc9)f5Gi*v&3RhUdKR2;^K(UZX9
zpwbT}0--^h0T>uK!Sy^u1VYXOtLJ2Z)i)4P28JbIaaIOUxdIad(W}7XYz&~=)j@n1
z-T)To1dqwU#6a{ms5pB11Yh{ez{vnD20%)|_z+Y*dia3PyJX;G0JW#U3ZVq(j31D{
zz+07}Vj$`Y)ExA5dkZQK-rfsR2*r@`6HW%uzF4Rbn0f|P4;$A43xdYNpyCBE0Vw?m
zDh_SdLPZ%Een7=R?Gd;j0|Uc9usACNtbB*bv4AUWHU`)-YM3||SezAHPQ%1Nv;b5b
zJXQn}fMPMIIOq;4s1TTv0gJOSz>eYo3o<Y;D1pUU8IHmPpfu>raZvel70QQEdQkPS
zavvsc0u}!S6M)iIU~x_cP`d~!1g0FI;;`{Supk2igBw&F)HZ>MfoLD7IB0n{h!4X-
zP;v0#_b@>Q28IZzIC^;%2Nefz;6PHJ0v2aun1EJ9XMx3886f31LPG&mTpApo2=Owg
zxB;4Y4OpCw0k)(NrUTNSU}FGZ9tsl#jhjN%gBH3Y2{ZJ8#aS6ZS85`QPXUXwF@UZu
zLl&O}6$f3<hAa-+W(q0~U!YYP%b@CE8{}bnKt~gR)Wde(!^Ag1)q_qgfQf-<$o76V
zh8@s)8YBk7`=IJypot%WiYvexq#(th_5fI%l_3HxJR#*f8$$+~`fFhIYz!OF#P2}G
zFQAD(0*iApK)Yv9TNxNYr>TO{e-fI#@4)I=89-Y_;fg`+DX=&jg8*6+;ulmr15F&#
zv}I!eoePR=4jZ_>VPm*}rk)2X&Vg3c3qi#l(8NJ!n}Xu20!>^Fs(uBUxC&HU05mR%
z<RC4mcmbL?=)Osi`7_YOL1*28!mSJ~+-$(+urh#_q$3&6-~<+DV>p0jjt5wr6{DTt
z2Nj3ZR|u0rq2l0crVzpmF;MZ-Xzob{i?cB(pf%yLz~Zb7chS@rg2mYwGSJjlK*e{U
ziPwY0Ss7lUnbQUp|A{8v3l)cy_XrP6fr?9k(-A^^HdI^<O?(kpoQ>fIntN7)#aS6F
z(bR8%ihHApZ-<H}p^5JUi?cB(pfz!ig2h=GAmtyzooB$}YzzTt>Om@)8PFn~fq~&N
zGXsMV10w@yTP8>ic;1MCfdSMG1NE6fV#xR#Gh{3SSq#Mf2Q>#$4@2jc7#J9MS+J`Y
z!67b<LtKRg;!ba9`3atDVqjn}$D!UCsy-ZA?t$lo7#J8p?MQ6?3d3PeGSr+bX#B$J
z|9l+kLDyu1!gD)6C{!32!1Fqw`UPrE9n^C0Tn+;R!$chBfDUPaDuoyXB|%5FU=s&j
zpn^?&6V%>z=maIKT@Tv7hE4rZ9PYUdHD|jR#3A7M9?*T>IMjcEs=q7_Q4gN?0ky|)
zsApz{#P1w+h<flG3}{}J6?^)TfvVrC1yK*`uYy>hxdl-8cS1X0(BT&bOQ`xeP;pp4
z&mAhh5h@OzV_{%m2#1QtKnK8J=A=Ny^P%Ff{t#$0KDO|z#Nqx%s5uvEK(1zB0M8jP
zFfg>^P~V3`d?wT!<9QHsz;g)<3=AuAs0Yn^fWqe@v|$IHQ($0V*atO76nuCJ0|R&t
z0n{FVihDsDeBgNl1_p*(ILv<sRnG-&2!iJhK=F=4Jv$rr_yuj10J(ENXg~utuK=1$
zXM?1Z58ELA)r015$VP}_y<`UGFvpyd;L==_rT?HMnn4-Gptb)ViFqkGscwmxIi*FQ
z<@lggpP>aQi6yCi`9&~YNK6#Dpw!}$e6Y5l)Z*mC9GC%+Rf<q6;T(uner`F5>0qf6
z*OEjA=dj|OlvL2>3&?&1&@KeWl&sR?691x<)FP0=lJp|K9MF!1;F9zrLkQC)-xaj{
zJ|wjmq&1)@wIH!5)i1T8B)B9Myv+eb>G?PtGU)j@8-WO85Mcr$OhJShh%g5c79heB
zL>L-?Nw6M6uqH#WE<><3L$E&3Y>1DuAy}s&SgRpeuMt?U5m>JgSg#RSuMt=;L=tR(
z5!hxUumMJ31B}217=zUqgAFhS8(<7Jz!+?RF<7rLSg$cyuQ6D!F<7q&Sg#3KuL)SM
z30SWQSg#3KuL)SM30SWQSg#3KuPIosDOj&5Sg$Eqmnql;Q?OoBuwGNJUQ@7MQ?On$
zur4#OE;F!tGq7GWur4#OE;Fz$Gq5f*ur713jpksz=3u?%V7=yGz2;!O=3u?%V7=yG
zz2;!O7GS*=V7(S#y%u1-7GS*=V7(S#y%u1-7GS*=V7-=Ly_R6TmSDY>V7-=Ly_R6T
zmSDY>V7-=Ly_R6Th6Z5Gh6Z5Wh6Z5mh6Z5$h6Z2*3=P007#e_$Ff;(`HZ*`}hb1kD
zc4*>)rY>mmf~GHM0)wV7Na8XyGGK5Hb1f=@WT7I4cy}LvCr6)ne>b;a*O2%SM<*ZG
zc!sosqRhM!(8i{KqWt94;$m<fVJI$1Ni8a3NGmVOEJ<Z3D~79rZoNV5i1LdM3opto
zM#}D>Qo<#WAt<=8sD!~UKFkNa2p6S1aR~%T1Vgibeo88+2!Za<aSns#e!uuI$E0GA
zLdTR8=lr~4uxY-Tc_1OryfVa&Be$Z|RE9JV;TIp~l3H9+lwTPJUMuEURFnwaAO*4l
ztPr6FVggt&2xJv_O*mrrl_5h=Kz?~@ktakQLIQ=4!T}YJ`6;PbHfMpXhbsl`)bfiD
zgLn#JNf1O5<TsbhG7#mPSOE=HXrMy_C>OHr3G7(VqDIg{Y=~xD8>HgHoOAN?Qn3aJ
zWC=XTzTkqy<Wvv?tQcY<)Jm{jP?g7^{Qyui8#GP-2Xr+0|Ns9lK*d4RMW8kwO#C5K
z9Hbt!3;-tn8Y+&iel|!U18BsIfng2<0|QL`N~k!9QbrQr1`+^`uQM<(AlrKkhxje1
zIEVtR4S<<{A0z-ZXD*WYkp3`a-V)SAfT{Nc_Y**KG7R8e0ZbgWrUqmj=(;GFcr}uG
zH6-(!ki<bvH<<c~P;pTBfNrURiLZr<gUknwS;EA(Ac-TJzZ*#$+5A&badh)RC&_|Z
z1|ai6>+)dcKZU9Xi6fi;21y**{NGS<bn`){s=>?$H9cYGi-8n^=SCoN>M(IxBynW(
zb)e!P3ORg0XGX%z2Q^7y=D33tVlm$jNgUbySg1INLN>n;BmgxBG#3UlAJlJw*^3-L
z^+@WG&F_PXgD7P47l8zz=IbJ*la)x~$mWC2sD#;zZ2o?zdJu(d{$-E=)O=7A9OnL8
zNaD!mKSUBoHXnAV21pv&d=}_<Bq*KeBe|a&NgUaHAtZ5R^A(}u=;oV3#X;tS#^zz}
zw?Ps|Hs2XZ9NGLJs5rX$X;5*H`JlNbnEAO#;>hNgAc-TJ-wYK;H-9=*9ArLd%>~T-
zc}U{O<}XDOM>c;8R2<#>6HsxG`Nl}$e;!F3+5Brr;>hMdg^Ht_{|zb*G9Pp>C(QkS
zk;IYBhpp)XsYf<n7&;DtZa(bzPLO(2B=;*r)q}*5&DTN_M>gLQDvoY`I8+>Djv12q
zaY*9kNaCqT;>hNgK*iC`UxFkK>LS9z=MD~WR%rhVWDc_WX-MLWklZs5Dh_f#XbuWy
z{x_&Nx;aA7@ndxLI!NM{NalMYi6fi835WQ0s5r=8(AC9o_dvx#_F5sCF9;nc28kn^
zF9sDyHzyD(4pMK8WKJBCII{VLP;qo~nxWz#bCA`~LlQ@J&tj-Jx;e+8;vjR7-E##=
z9NGNmP;qo~f}!Kt=;kCKi6fg+0u@I$rx_{^G6&iH{ZMgq^$Vfm=<3%Yi6h&45Gsyt
z&Sj`L$Q)$#uc6}T>J_0wr|9afq2lQ3y`bVC^~nATgNmc8UjY?ISHBi2j;{V4R2*IX
zXQ(*3dPnH^CAxYys5rX%2T0<eH7Kxr5d<Aq2AKoew*V85LJ~*zZ#+~S-TXaJaddNz
zAc-TJa}p|!ZjK3bAqToSHb~;g<~Tyd(am{*Bn}z^gZYaEI*tock1TGEL;NaK9ONG4
z^7#&uxGhpS@EA!PxqSW(6$jai+&<xh4l;tw2W^&txl<HL9NBysBynW(wV~qZ=DR?}
zLFOZen<rEpq#ijORwIdnh6rKq*^eZSto|~RIOv2{nELxj;-IxnF!47~agckE%lZFM
zagcjfBZa3BbiEZw9N9g(P;rns$o?{dii6Z6m;ZK1;>hmthKhsCL3U3ZR2*auvU}zr
zi6gsb1Cls$_#8nJM-HD0NaD!uxeFCXch3i?IJ$e7q3g~-;>hk%go=aAK@J}^s5nSH
za`+e_i6gtm9x4tp2RVF#pyD8Nki&-+I<O8BM-B%E9O8LM;>hlAMG{9gXCaa}a(J#q
z5=VCbRU~m_cd|q0PeATOwpRx#4)QN@xEVslLF$pi%@#=<+1?~1ab$b<Ac?O<O6Qkx
zh`+)iE&-kJ0J#Trd^#+DY2gsJ!6EL4Lp%Y8cq0z+SxDl@{@RE`Tn9Sugzo-KBynVO
zz9Wf)rXpbeWrog2fy_Y`=f@!~jYHfNhj;@HaTe$TFm!tbafr*|5ZA^b?utWvG7j<G
zNaCQiOR(@cj3f?P`wkQTiX@I4&V11Isvv(Mi>u=hcfcVYf<v4Gy6zQZK4>Zk<{mky
zI4IwNHgm$nGoj+>>Z_pQAoZX%ZZP$2IK-Dg#nH|A4HXBO16nc*GshXa4i{a0JX9Q{
z9=UwT#vxt>6-PIx3beTkI_}|wR1Q2x5=Zve9~|PG;0rY%<AKQG86yW8g@KF*IwP5%
zha?VKvkmiaH<CDLE*>Vn1}cv3{;N2|??S~v;e+fiebB}j=y)cwJI$fu=;|*)#nJ7(
z1r<kE{{=}Lx&1Ez8WhG7&KgMKZb;#?1}ctj?`^0!$X?J|cv$$zfCiDF<|Bt&98?_L
zoHVF7$Q<PG=|B=kc7Ho)a2ZRuy@iT{%t20vo}fWwsC$szxdTZYwDuF`{vSx<$m)AR
zgT+|voeC8P*^BIcHqaml)Lvxwiy?_4tJgphM|Mvhk~p&Z$w=bJ{+*8`4qDm{^VcOL
zapZjT87ht*FTbJU=>B2{HL{`pLbg{1DvoZB3RE0qju%q8vO^O0MiM`aB#zv_IE5tc
zgQWf<k~oM7^X~%?2O3|<{foa)agcj_k<4KM4c0^bg={`Ik~l~!%zP=RILN=q<{Lo8
zLFW4*nQx9Hj%>aik~p&YzEE*=^RuAhAoD?cvtaHiL=s0fzXC}d+59f3IJ)_3pyD9&
zL2I93=5Iz4M>c;Kk~p&YXQ1Nf=HG*ggUm-RXTCtiLF$pqLk`d+2Q(g$#WkSfAaju0
z;U-Ap$oZ}YNgP>yE0TC1QhfCwi6i@WGLks5f0shVLGDLR55J(|Aa^3?7k$v=3e;c7
z?fDQSapZP&E>s-doJmk|kiA=w+&>pd9NGLkP;rns$ocCrk~nA&0W98MA&DdV_a9Uo
zWG}LRH9?a)(0mk(<Q@Ygab)w&k;IYBcY}(fo1cax4!SB1=FVwI;-CxTVB)Kh#F5os
zg^Htx!yP1X&|WE+IggRVk=^+TDvs_>9?;|yG#rq}F@%xCk<FJv5=S;)6Dp2wzCBbN
z<bLFG#tlgv*?eClab)vjpyKG}S3<=><|CIg4M^h1=C>n>Bbz@HDvoacYN$BKeB^TA
zAXFTr9yz~X!6E(`Dh@ISIbZ)r5=Slv+(46d(0D;s?~f#oTn>aGi6i?r7D*i0zxhyc
zko%GI#b&5D$eqaLz<sDVNIh~s{evWqTn>nWCIzAHM>fY2Dh@ISxg2mo5=S;a6G<Gj
zcLA2pCqu<S?nEvhW+91#w!p#EFGLbY4u=g;agckE!{H=U9ArLny1jrTj%@yQBynW(
zpFzdZ&1VKpYC^*YIo)z0i6fgYh$N0|zA{uC-F#E1ILQ6T>DC)64pNVtZsTx>S3<=>
z<{+oTRwQxcbbAI#99jJ>Byr?)`w&SS*}pH4#F72`3n~tBKXQE8fhKXG;fb8yvY_H1
z^~mX}9Z4KH-7bKNgZztZ&Jn0M$Q<N!dmc#~*?bkyq%RitXhOw7<{+z&f{KIeMGm(r
zBynW-)I-J5&6$fN4!Si0mj0h0i6h7RHyq;Zph;z@`;pU698?@+FS0osafpA0ii7-x
z?EYTRq%yQ!fo#qhs5rX%Z%E?E^JTH1$zv?$q(a3(<{+!@fQqBLe+E<>q&^I(J+J^t
zJRC`U6_Plz`46Gu=;ptKii6BYR?h>PoW|mQ8K^i&J+i%ONaD!uG(ZwZHa`z44ss82
zdU%5*jvW49pyD8Vk<+0)sF20t&QmzVYe19VSk(W<A$|gsIH2m0-5CaQ1XO%CQuvqP
z5Z{bL{3583f~IE>6P7RTfH+WbkP~3y5250qa6>L1j6i`4RS!}EQ*VnTj%<z-R2<!$
z<xp`@I3t_02}vB;ob6C?baVPalYdb6AgiB^Bo1Q2+-U`xl)|Fk4M`kXy&sY|vOBw=
z;vn}Rmt!ZO;vjz^yXP!a9HbsOJb6HkPH6lho8tu)M>oeGDvoZ>ZX|JJbC^Jbl34u9
z4i!f?hYvL909B9dUr8i!WPiy)#nH{lhl+#Tk8DmAk~p$C^-ytibDluO(am{}B#vy(
z7pOS8Ih>$D8E7~o=c59sILLhDcrS&Dqnk4UNgO$xcS6NM<{-Q05L6u994^q{CN!Lp
z?G-{2M>a<sDvoYWF;pDg-U_HVNIkMUCqczQ>Op&>Vfo?!k~p%x7jcMx1r5St2~T0r
zU?S9C$mU2u#nIh!2`Ub953>5}P;roY<ov<_s*IuLBZnI+R2*IX6R0@4`EQ}(=<3Bl
zgNab{k=-K?6-QTZ2^9yKj~t%qNaD!mRNxTT0}Z-i3C|L!ILLft|5if9(cLozNgO%e
z_d>-%<{-Q07*rhHoaaz+ka}c$-y?}5oAU)Kj&2S=XwVSqFXVMuMo@8(`N-y&L&ZVn
zAiLiMDh^VQ9L_~Z;>hMS;}QoA5<%UATn;RRii6BYHfI@B9Nj&^pg~D2=_CRw4pNVt
zZX2QEAoG#KvkfYauAUv#>4LfwIowpC;vjR7-Khr^M>i)NDvqu`0V<BJJ{KwuQjZ+Y
zvysG+?OlUId@*QH5=;18g^GjhMQ(T9g^Gjh1yxP3a>*FfS%R7qiPZkFMiNJMj|Ws7
zWIpJu8JIZ%P;rp?pd(;l;t@#V$mTRd#X;sEyK_EN9Apl1`|}u799{iws5rX%cR0kw
zL4$74ct^I^ABT83R2*b}Gy?;}Z|FXP7Bq2~f6qe2(cO6uDh@IS*<Y`4h_itP4Y9a0
z7l(KqR2<#>E*#>^pyKH6^Z*U+K<z~?AC}_~w*Ymjv8XSGii6yP9PhW0#F5k6V<d58
z^&g<(Aa^3Cw;xb(kom~zjR6$6(DaOKP61RLWDatEe*_f=nS<<}S4iT>=6r{WgUms8
z&wr>m$Q)$%u!A~RSlp8U6$hDv+~3cIii6BSZr9C55=VB=0;o919OUwFGm<#6e_uky
zLFOZy^BF3RZcYKHkiz2rDyTTR`jb#`koll9?_l}jB9b_=z4xHvAajtz^BGheWDat8
zzC#j6Hpdwhc~EyE&)0uI5=U156)Fz07df5FgDiuZgREW!Dvqwc2r3S8C$jo-s5rWM
z4^W^$%?EWQVd2w_B#vy(6sS1J9OU?Y4;4qZ_XkuQU43dSV%{Iw{5+^Qy85Z{*wz2V
zAugMUP>)>yYU2=Jjzj!7k~nhu_e(;UkL><_s5r>|$mRJN9O9p$;^^Tfos8Xlcc?hJ
z`7Ka!kU7ZyU4bNy?9LldaddMSQn1_Wf<rtIdXN;z9OU*@3l8x!P;qp3UWAH+%t209
zFObBM^95@fc6ahY#nH`)f{LTt8xIvnS6_uBj%@E@s5r<R<nUYr6-PJcHdGv>9ywkf
zBZ(uM^8zZ4Zq9Ecapdw-G97z3$U((H<{-O28Y+(No@69(WcOr1#X;sE$IE=EILI7i
z^-G}QAoa-h9)^m8)PsslSUK|@NgUZ64(P#LAoa-N9Z+$Q`N-jrnuR?avY_H1^~m|L
z0xAwNAK5)}IS_L|>XFm42~-@U9@#yXP;roYWdG(Mi6fiS1r<j(rynYgZjNd$#69Th
zwV>i4^~mw!4HXBeM^0}6P;qqi%z4<&=YWc%t2cy-qnmFA6-QTp9Z4KHzP>=kLFOQb
z=U=Eex;avy123WV6ta3{s5rX%aHu%C`3X>QboHH3adh>QpyKH2H$ufh>XFmWQzUU@
zcYebmo&`N<4rD%Z_*^bR#0zpf-hhgO)Fa3Hdn9q>bjVYTFbCN^qEK;kbJCH-k=-Lu
zhQl1FIJ!B}P;pTBAlsV&6-QUU3o4GTem_(kUA-IV0AVcY!5b<LQjZ)C`A~6m^Gl%O
z=;}8?#nIJohl-=C-vK=s5G0NqZclKCPXHa%3hk#LmrHA);^_A7z#)DdDh{$2*&Mwp
z?D1s>6$hzD4xeDCIJ&*bP;qqiT~Kj!^|PSj=<0>4vAahLNgO$y`$NS+<{+1!#ZYmO
zy~ygTk;IYHTLV-aWDatES%xHz9AA&1;vn;p&3O(L2bqH$ZmQ68bU@<B<~Tvc(arIO
zii6Z6yC(xGj;_8CDvqxH3sfAW9yBEdt51I;iG!93!o-<s5#f(Kzbpt92bqsNzpMup
z2bm9QlEcg~MG{9g-v&t>*?e!PIJ)^6P;rp?aY*Al`AFi(=9eLfBb(m}6-PIJHdGvB
zKB$WTbN?bFab)vXB8elLzXK|cZvJJcILLg^*`hG>Zy|{zoBt3=9NGL2P;qqgh3XLT
z1?qyp%$GzGM>bypNgUaHeW*CP`IDgHply~*kivffk~s4IyZumckbgm47MOdEA&Dcq
z=PZ&qvU~1B#nIivR}b+o$UV!E+@l5+2iXhivcT-sMG^;fO<>|CNaD!$x<SR!?Ja|f
zgUknYHDKn{B8elL--0BLZ2mN;IJ)`Eq2eI(K}~p=`RkCxk<H(VB#vzUai}=D`TwBe
zAoD>@X_)z}&;w~f;>hOnAc-TJF9#JzH$NIG4l)PS^oE(Agd~n^ekPJQvia3eadh*S
zLB&DlgYFc7nZFiE9NGLWNaD!mAA^dcoBtXr4l*Cq<cFF62}vB;{GUkT$mVlH4=6-8
z-x4YgGCvzB-8vwNBb)DzB#vx;Bvc&T{3570$b8U}Mwt66k;IYnT?3LhviXys;^^it
zhl+#D2X#SU=C4B%M>c;ek~p&Y$D!ir<_kAL@-@hO&{8It`BF&Y$mS~|i6fhD3>8N=
z-vcTRG9T2%ftl}*B#vx;7?L=$`591gbn`Dj#X;tSmiEBRzm6mh>axJZ?;(jJoBshS
zj&43{Ga`IIT?CjpJV@fm<_jZ<Bb%=Z6-PJU9V!lTKl1oq3J&pnBymvJ1m>PHByr^M
ztVI$>c27T49Nj$&q2lQ7IfO&}5)SbvP;rp?$nD<$IK=r{AmNOzUJZx15f1Sns5r>|
zpebco_*6i}LFOax)0~1Nj=aBe5mX#x4sttl9g;X`2p?wtW~eyGeB^fHVI*;6doLl0
zgRazpnR5$Cd_PioCDDoqA7pdPk;IYR?*<h|cYhF)II{c0q2lQ7Pe&3*wznKf9NGO1
zNaD!u|A{1yYz`;r;tOa$3)%hRP;qqkD<g>`yI%t;j_!UNBynVWy^+L`-5-o3j_m$M
zs5r<y$o5V~5=Txab8(1ogNlRPiG2Racc?hXeB^O#opwmPgTz7eiLi7MizJS0Z#q;Q
zWIl2_+yNB_nS-qU5L6sp{Y&V9@F4Zb{kV@v;>hNFgNmb@!`g{(KeBphs5nSHa(~SM
zDvoZi2a-6lIlfSFkU7ZyO+*q$Hh&XT9Nqj~NaD!m?}v(`n|~Wg9NGNeNaD!-&G}u3
za6sN)wi1W<HmEqrUgUIg28Z}#s5r=9prv`Rbn+HS9NAv(ZtU)<LlQ?eXBCn-a{9au
z6$iN!xtxCv6$iNoIXt;~AoilG*T*5=1{DXHgIqsOL=rDVDko<ki6hs8^O3}n>%oms
zagckE``728;^_9?L=p!L>A}MJDUvv{e-(NW{zXnFVK~GaaEKp95=Rc_t2o4;LB&Dt
zN3I8B`Vj6xHfJRc@m)}HkU7ZZ-Vq$)51`_p@I*FWsUKo5$Q<PGQHP3y)FbEL9wc#O
zb8bMzLFRzAGQh(BK9V?Sh!iIN3`rb0-hV*FLG~iYy9D%t43PQA;id-_2dPJPj{^?z
z4kU5p^~2H=A>n{-P9_fVY8>JdpyKH6T!AExoL@E}i6iIVS4iT>>NzJt+zB!tIllOy
z;vn}U$CnC{II@3Rki?P0tp_R&G9SfW(1lmf_5iZ_M5s7OJ+gb!pyD9+Am^`jP;roY
z<aDwXNxTH9+}ML8j+{=;LB&DlBc~JADTwevcE13UIC8lpjwFs;F3BN@Bim~L6-T!>
z5h@Py7qY#5P;roY<nUhv6$hyY-E{-Y7b}s(k=?TaNgUZdhoIsh^O3{hIg&VXd<lXs
z@WV3xF9sC{nS&f(PDtX&=A<HtBm1iYDh~1&ayZu`i6i@~4M`l?Uo)WMAon2q>n&6q
zWIl2@|3(r=F8|r5A<_eK`fNrL2Thg0!oLei9NC={k;IYRxfm*r?#?YxagaMfQy(z%
zcO!`-n|}yN9NGLUP;qqgzeB}A<|F&-4^$ka9yuNzrX#`uG_?YAk2{h$vU~iH#F5>T
z02K$Bj~p+}P;qqkbU?*H>XF@Z6e<o<51NXBx#tX$II?>#BZ(us=P6ViWInQcIG`6K
zfy_q^A6}?9NIkN944~p5^`NO3n0w5T#F5=&ha`^do&cyg$b4k?6hp;9<|DhO0xAwt
zkL;dlNaD!t)h|$SbaPl|BH|Y`<pOg*50W^t`-PFjk=?Hf6$iNo+5H|+addlqq2eI*
z$nGzJileLFha?V~a)G(?D3Um`JI^4ABfIk+R2*b4vO7OR#X<IhrU+o>|3VT+HlGo6
zh%>Z2L^fX-DvoZxKU5rKK5{&UK*d4ok;7pnR2-xpxxU+gB#vC)ZATJEcF#$uILLft
z|9*#xgUm-R4;4U)p!GF!`5Xlm2dPJHM-@QDLFOZu^G!I!=im@Oi6o9}uPEqnZD=?n
zyHgoS9J$=qM-oR4=UN=%O;B-=`;o)H0d%-F)LzgO3M@UeBZ(uoOZ$+-k;8uhR2*bJ
z$cr#@c0$EL;R%{jfQcVK5(f>9!^Dpxi6fhT6Dp2w{wJt7$b97V^AkxN*?b1jq2W;f
zBAYJ+6-PJU2PzISA9+4B7)cy7L=AI)6p}cy`I%60bo1Mw;vn-uOZZ{t^dgBPn?D6f
z9NGNEP;qqg_d>-%=7WZcVdft}5=S=wG?F;7`M03r=;nWeii6At4Uxjk|BED!Y(5M0
z0%DMQWb=ig;^^i_Ac-GDYWG&*5TAoX{0dYYWG`r_66Vg^NaD!ue1s&9?9MMxaddae
zf+`_sx<by6N>Fi-dgOff9V!lT4|2Ntha?UfdW5-?6*OrIH6PhMB2aOV`N;Xs14$hD
z9J6>F;$=9*dvS;>f(Cb><tMWF7C6NHafqkk5buYIgTe<i#0U$AX-MM8;WHOW965Z}
zL&ed<=Ppzn-TWs=;>hN|MiNIh|1VS=-FzKTCleYz$m!M|Dh{$2IUTwoi6h(VizJS0
zZxmD<-QIE}ab$b@k;IYXYavt|-90Oi#F5>z9!VV8JqMxU=<d0PB#!K!Z%E?E?%@S3
z8i0lyvba1{9NnF2NaD!u)I}0UcBeg59NnFXNaD!utV9w=cFzPH;>&S}?}Un@yZ-=^
zII{bXBZ(us|0Yx%-TgYC!UbABfQH6l`NbGX95mDo6SqPVM>gLNDvoY`CR7~ce$Y@c
z%$x!wab)w$k;IYB?}mz_n?D~(969_~L&ZV%f`)`)_HIHFN49q-k~p%xC!pf!_R21U
z^b0`iLqJ^znE6IX;-IDzOxzN*hy;2c3MeXI;_gV|pdu3{o&%b^fyN7RIbVz<4jOWX
zsjos3M|OWFR2<#?3!&nm@Bt0w!pvELB#vzUdL(gV^Y=l;(anDV6$hD*+<thDB#vzU
zJ0x*r^Z!D{(ao0u9byX&ALRCfGLks5`C3Tg$mUx@#nH_#LJ~(#R}*lEufidI5h@M}
z2jp`529h|kJMSZjBfIk>R2<!%s-VMjq2(UvE@fCe`r{DKMG{9o|F#E79NC;zNaD!q
z_uvq}jU<k2&QBz9WOKMdlb}%dBa6%85Vt`RM>anLNgUanDjecHIK=1S5I>D1j%@Ec
zBynVW89;}|V)2&{4sjJ6;$}F+qj8AOLlQ?$w+E2Kk==O-hxij5;@@zHbAT#2EdDjb
zA)bUJj_l4BBynVSPQxL-0*Cl69O7qih=0T(&IfV?)L$Sau>3U*hxl3?;zw|ZUxSLH
zmk)Q5#F5K~CrIMR<-<3qIC}XY4m#8rT23POFJz$NAoZXs4(2Z{&|%O}^~m*(A(A*~
zstu;z0!bX%J?>C(kom~{ixebr(4DX_b9#})PayTzHsBCHfg}!M!pwO9;y~jI*_<Cp
z;vgnWJ<CQ&Jq~gwvbYSAII=m;NaD!q{c(s#;}CB^5=S<FCXzU^`Acz#Z^R+K7l-%_
z9OAB^!6|6GBc~HDs5mHmkkd&!R2)6s_92NQr<18j;>hV_IaC~EK5{yF2NegIkDLy_
zB8h{hUSaY02T2^+d~VQTj?nagY`z9m9ArN7dUAavab)w&ki?PAcZG_hyFVH#4l*A!
z^$K%m5|TKw`I$)K$mUl-#nH{53>62N51M*~nLi6j9NGMZNaD!mZ-9!Un|}-{4l*A!
zWePL@ERr~~`B#v{k<EV$6-PIp3ACvjn%+QDqcHP1k;IYB7eEq6HeVhpj&8mgR2<}f
z<Z)3)ByrGGC(K?CBynVW{gK3x?Tv$qqubk#Bo1owz|3C&6$iNoG=&HgUydY>Z0|ZG
zab$ZBK*iDReTF2CTyCg?4mpLUf8=sz8dMzQ9_0K!8!8SmA34AOg^HuAmxJCvjILgB
zJEU9%sYlMg8c5=xsYO^g=p%_E`_~RC4l*A(|As@wLFOapuQ()eWb;#z#F5P}fr_J>
zKLIKZG9NjAO-B+(Hh&(HII{U`q2lP~ABBp8%ty{&XOP5^&A*H!j%@xTs5rX$;h@7h
zq4^6mbqNdSI3#go^HY(;k<BlMildu96DkgJKXU$EfFzD={&FO7Wb?N{#nH__3l#^M
zkDPyRAc-UA-}^}7$o4)%5=XZ8D^wiaUZtIobPEzk&cD`BagckE^RE+<II_K-NaD!$
zMnlCx<|C))1|)IhcF}Gmape4a4~O_SByr?&fDbfjgryu%LlQ?;Z-hhK3rQT=J%vc(
z$mZ1I5bwkxz79zo+5F>3;>hM-#vy(mhxlt8;%uNzebDehHoqK69N9fRNaD!qXW$TD
zf<t@*4)OCi#En3QfI#y#@_2$Jk~nfYbU+eEPKQBIarAUp4;2TcbL4uV1u70wk6bUj
zf{LT7ciM}{N66|SqLBMFKzjB<@0$df3z7qgf$)2%IQ05K29OvC$3yR<g<i`B7oP!D
z54{cxE}jlm54{cuE}jh)hhFCb7te=^L$3{iix)%1q1R==#mk}M(CZ-J;;?&yp~uz3
z#p|K!p~p_c#lxWPhaP7O7w?9OLys>-h(pZ*#SwD28A8>A)-WTBPll?89#052XF60I
zdYm3yd^S`ZbjJj;If>BwFQLbh!PPH@s)rt<1s7iq6^9;=1Q%Zo6$kBAM>c;wR2+It
z3tatXs5oeEBeMGKP;t<nCS-BgeaWCbV#wnAq3S_<i;%?+L&ZUROpwKoL&ZUB36RB4
zL&ZUBevrk_L&ZUBFp$MBL&ZUJ%E;o^q2i#tj4bX0jYrTJHM00SXhs2z*&>T8L)C-Y
zD#+r`q2`0?EM)PMP;)?I*T~{?pyHshYh>|!s5o?*5gsq!q2`0ew2{@@LDfTtZ{g}W
zq2lQI2&5N;(bFgNxIzZ>_%epxJB}U><xp`@nG7-yRAzwi52*MZkRY`D1c@6$-Om7(
z2Z@2OH#D6qpovd_iaVf*?}3VEpotqo?{n=y6Ay=q??4mJf);E~(8O7w_dW`M9Earo
zS<w3$ZP3KGL+?#YKohTn7LYAy;yKWJ@>ZaUCqVD3yMiX(4lPjspowpX-Z!QK4Ofsf
z2w#TY2Nr-Po(H|}ssc^?G4y_^IcVZ%q4z?aKog$>s@xbD7`~v1Z-w4Jp#V*HAh&>U
zCus8`0|Nu{J>wwpIZ*KgH1!*y;yq~MF`&gG3=9lw(8Tkh;y2L5pF<0H<omTj_CA0X
z<Oa}u3=#ujSI}Wy3=9kjXyV17%?%6;3=`1A%b^7@>|SY*86cbpJrC{%n);d0bGSI5
z=@+CHgfBn~FbgzsW9a&f1T^uB(1M`@O<WXI`Gdj-P23AwFx)^B=YnQj7HIwexdnvx
zL&tXv(8NDL`=7~W`6;Qz@x=v6$?3&<`TB+?rWO{4=B8$*3JS)imgZ&(hK82r3JQh>
z24-d^3JMnHMivTSkib>%>f^@52+eQ|3=E76cCg|AT3SG;8PGfk;z7zO2L?d~K88?_
z&Zog1&2Kn7y65j;Wnl2=o(%Gx$8l$Hq<S282G?>P$DP5E<8j;>T&sE<cLtl{aoibP
zOL-i32G?%jo=I~x3qy&ANAqrQ0bOd~)5{97)}t5f29I9w^?>_8hb_JUi63u1z`(%p
z_y7O@J3wNu-94IjgR27msR#JC9q4Qa#ji*6ZgA+9ih4kr6&{_<AOVlg-5@)=oeesf
zAO?Yq1PL*CG#}xJK6x1ALyzwI2(Vocu4A}km}9782-xGEoqruWzdLqb^Jx8FYK+^h
zpdDrmV1vOXf!+FYHxmPcXXhV}?siZi>Cx@L;n7@Cz)-4(-5jtdK@Nl%0ph-_U;>4D
z`vy?pw;m{A`hUTrmo@d@|NowyEh?a<p+_$(=!SF<cL7LIFDs}40^+WKa08h^j%ZN<
z8L=PK&<C6D(RtXT^+2g1c9($q)IOchk^BP^dHI@=f#Eo~!gJ}YU~z5z21*kQF8qEU
zTsn&ljyp@tnmKdkac7yCGgsPs9B+nZ90rf$&EObgU;r_}(GFsw#FS6xYLIP+NOC;h
zq5_IqP<S{t|7R}4;Z#s4p*j^L@)A^wc^r2x0BQH^-lGDF0I0{E3qU?M!RvFV()(a~
z2iWuPKyE(n3~m;on^*xd(Uu4kyQ>SpMtXE28x892dvsS9eBu`X=LLw8?&<=M&VOJw
znE1pm=q%vby#?$Sm(K5CL6F7Hq*&ZtT>;UE?1I-K9-YmgobA~;M+FqAptyi!5yu$E
zSjRZWcu3yx=#0JL)0z6fr!)73PiN@|pU&DJ9?fqI96P@`c3uVL5q<2AnGMRopvVAQ
z?zjiUe+gQV=-K(lr@NkGKd3tamV>5D9Oi(c!l&~;*nME-j(b2tuR}eKJAivs9>*QP
z4FM0(SOX}*Ie<Gt9>*QP4KvS97nKN)URIVrpe*E~lHk($%BAz0Pv?J#X`M$}50r4g
zqQ|B4fk$`j4WI7R2R_}oFMPU7KlpUl{(y(Y2cOPVkpBgs<)cscVo)f8;u36}2Q0LG
zI-f%XprP*3Eu-Sooua}4HwrUY8{dF(jc4Z{&(5!&o!2}&&--+`Zh+e4(G89-k51Pe
zpZEowB|h;-wr^l&U;rf&1&_{aKArEu7JlLv@K#9U*E><9>e#$Tr2<rG^Y>LSGBEgb
zzE9&1KLAz*4$hb9VA0*6hP+3&>jsa`W>6a)WW2&B{zzv5kl7j_FTwSJ<TPBmomo7(
zgDX6GT@QG4x~Ld<^tv7aF*H1ST~B}*3h+|dMMVOME#T8xqQc?RX`<rW`Ov5HrBCNG
zkM7zXU?(|t9s^nB)A<fHS0uY0@nCfJ@JMz&;KAq|;M)3)zvT!hYc@MaFuHVZ2Gtgh
z&BvG>oBy%%w}S>yT|2*dK<XH;WRVRXy(~=sAAlRDuPYHj0<KJ6XMoG?*NNEE@W226
z|DzT);2H@>tpF;9u&8DQhc)(8g(&^NieBFY*G|~8T!2UCZ^zE>9-W~lJUV?3_;w!i
z?L6z#y&RN#Kk*B+8?b;9LtMKBn2td%SDH_-Ffe$u9w^cC><&?}@Mu0{<Y9TCUcs^X
zKVvCR8owS`aTQY$pJVfXCP)4$$6fii{eR8oxF6J#aP747?QT&474Dz-1-e1@xVHZ1
zpK^$Q+oezZ0?h)<pc>0n0u=Ea9^I}29-S;IzM#nc=+Rwzz@xkNgya7yDxkFO*m<<|
zKqZdw17&NEPRQsdBt;x=Q31s+NW!)CZ5<D&iU0|Koa@^9ztqmLo2~UgiI8Wri;4rI
zM>p7?pbT#TQwb`7TsmK14}HhuY#{%=KES|GP?TCyS&*urXsZwq<mw#n=kMpLqmWcu
zq7V@5?-S;#V5{I4>f@u3S*(zmlardBm;-4PJ1P{V7M5lfrKTv9r6!l;7b)Zyq!uNX
zWaj6A)aK=vC}idq<fP`N=9Q$T=rMRgG%J)P=9H!?q~#YWKyB7j@Bx_$ktkM3EJ{Uo
z2-r<Nu5KYZ5YZq{caIPqg~YrR2;a#+!~^W0kc?CXuf*j1q|C%Tg$kIPit<ZKGV@Xu
z(h@UsQd1N%^Ar;E6iV}oQj_z`Qi~Fka#9s?6Z7&?i@;`p!VF|i0Z2YCB@^VC)FOrA
z{G75>1rm+IW=?8JX#pwbIEMv;n!=uWnI#O)VZi}T&h8AJc_pdoMTwvQ&rQwEFRBEE
zHYkSlKuSQ$85|X$GN2erEiQrjUXLNUEHNc3J~uTN9;uK>fopYwnGp=~GMoc)Hz;g~
z#~<uL?W379PuerMJ3Ct`Xt?`@YATrMndq4-7#SEE85kQHD`*6zrYLwMmO#XH4Glrp
zCqlcV42)Gl42%^5jM6;p91|EB7(i7TY&`D~$RUn=0&Psrylg(r%uE+~*g-WSNFLl8
zXJB9ecb#Esydd(RiWl5EXJBBE0rfFq@&V24J#4+KeJuUV%<Rly#UQn?aS0w!W`U`V
z?q}{}>1FL<Yi4J916B%l8@L!_U|;}W830oo+{4_=QVdoE8Y_g2TgZSqLohXQ2=ka<
zFmmy*b2xG{Fff4BgY9KtU?{_3KeI1FJ%e6xWo}7g5`$iGNfCt3fU$~Fa}xDRQY%Ur
z^imQ_5*hT8ii;Wait<4mka9yk3skNlgC1B9L<w9jxwyoFK`%K!7nG?P^z!mcQuW;Z
zLUoHv5|gu`T2eFO(~1&vLC0Q!Vu@l5ig%Frp<PV4d9Zl?28wvNDC90^BrXGJr~%Xx
zKo$eB3&3q91_nq|3X)zx_P~sTN;81=LxIFW$pxejhAlvgMqwNz8r?2XJc7(5S3l@#
zF_8VBbAphpVSw2`2PBCk0kR9kg$aYg3B*R%e}xOAih%*Nz5~L7kRY`n7K{ds`GVM>
zBnuLU;S^9JWq{;Mm>7sg_dn=fK6EjVx(%R+Wnf?c)oLI<D8GV+1z_%ng+FKv8Du|n
z2n(bXj60zAgImC05eNa(52Hcne}VKvhio8<7#J94K=s25ey9vcEr<!DLHn*?Y>+q%
zAA{<L@nJN&TF`oIkQjRSoq+1M07=3$GcYi~+zk@~t-Hk*eg)7wxj~I^kXlgqfrcGn
z`eES*8WKcLdm!};;4ugW2GG1Um=7h;oC6+1L3cYy=?##<3=9mAZX5#xC>}u9c%$17
z$|l(Ce*qn1Y(cXSjSI30D+Z}!VfgqTn<O*X)tEBO4A@-4z`)FaErdbhp!OCvbI?m8
z1_n@YFd^9suA>+j7(iFlgT!HcP&|Q51Py6|#2Y|~9#+OPFff3wb_0p0K&=MX6$}gv
zpt&88xFl2@T+e_EVgR`lY6z4MqnH^$p%3FBXl4dz;zJ05S<DQe6a;3%3Giqa1JqKu
zC<6mzC=xRqAVZOC7$$+v%Vc0+V}RA~Fry%IK5Pv7FaanH%C`&*tPJ4MH>enh0-ak1
zG6xh+AU+I(_9=qYgGb?Df(#4{;6V&5;Q-qI3Ni=cKZFL*I&_dY=v+U9C<6m%-vh{e
z(6AD+IH=nNQV+2oAp@Gf1*sPRB~*kk18BVf0|O^UJ_qd^0I82aQxDl%z{b#kWCo1M
z%m6LKVFC;c450O`puC7A1ZExv<y9~XmAHgM9F$(Mne&{1fkB9Yk>MlM7;rm^fq~&Y
z4s*WY5C>&kZ02(@Ldp`T@o-8QhqxRLaTOfm28<B*^Fp&ctc_)fL%lN&aeo}*u{gxD
zafpN3cG$w99*24c)IsuOSR)<QNdWZ#+=^0D5lwk;>mAyaKxx;5lriY}I2(WnLl9vE
zB8)+V35YNS5oRF50z_DX2t$Z!uyRANQbVv>L$G2)uxdkduu2Ptcy}LvCr6)ne>b;a
z*O2%SM<*ZGcn0UNfTH~5)Z${-qN4mFum>`8id_P|N-}d(iy6|2Qd7Z#Ny+I9xrsSB
z`N<4^@nOz6`FW`zhD&O3Nl|_!i0Pc4S6l*Oxa5}v6y>Kd1O*osl`w#NO}-GFP>(x7
z1i@bRiw_Gg$}RTGFUkemlbKT-fC!k(oMK0aL%_yBB>dvTf|C<-QW=6AlOQ=AbS^3=
zaf0ebQ2c?q>Yy<aNcjX=8v&{lVB(;2OknCkZ5fz2XkRo)9F!cD85kH~;?Sjf;F1fp
zE&(R~8l)Jy#zhrLJt%*Gq(JTwMiQ5TmM0)_P}vJJM-fRJ**&IEadh`YL&ZVnfaWb=
z<|HABBb%RzB#vx8Xgm(&PIU9HLDhrALDPUR^PfV+LH2^03^4IGNaD!$ent{UwwD!T
z05sf?!#N%*4yq}U!+8Q!97KVpJz@4v2MIvuZjtSsha`?{?*^zi$Y03zo<|Y~^)+GU
z--n8WC}jUW0|{WU_brk*vc12c;^_7=L7PAzapd%)h$N2e9@yME$T(#8SU}Z-#F4|n
z9!VV8Jw8xzkiE#^5Q-!Y>i@&SAr?s-*`2U8JRo~PZCsdo*xWP7d{Em8Cf<T%4ruxp
zCf<o84(g-9#OEQ2gRW(ViLZi+gX~2PhmA<$$l<U9NgO#GjzYyj?nDlUb4cRI;Q(7(
z0#c7GejiCaa`>2o6hhMpXj&fTe%M+Lko!T?@-T5%B=yMd41tP+C}ejQfCQlV2sxkD
zL&ZVnBZp5Lk~p%xy-4E7_RfcjgD7Ns-+~07_JaE4F!%pK5=RaP8)%aiB#j(yt~kVf
zk;Fl5QJDFmNaD!m??Vy?^(|rQpCE}Nr$ZTNQyJtQWO3LU6;SyD>g&VI35Ti&iG%v?
zF!6GzILI8(b>1-XPN+C2{E_oTA5<Kq9<=@prv5Zk9Hbu9>W7K{MiK{&oxsGIpj`}*
zdeAr<Oq>%*9627Pq2eHWk>gPlDh@IS)Hi~egS;jH*?e;(^~mOXLdDU|KMfTJnU5R}
z7og%G^`PsyVfOxjii6b4A=R6i(2gufTpmfh07)D)gaI?B97!D6ot;o|kiE#^0ICB)
z7-T*Ot3llXQim-52O1wxW583=AoV|?;-I)gR-XVh2h=7(7XJWM4=SUO#ot23L1Bd~
z{t+q;iVI}%uTXK2-;u>ZY!C+ZQ$aMyjUWu_M}YW{ejcP<1QLh!A3&2MAbF4&2*cXt
z&?TvG|HAsc4?v2c<r_#nte*_)XMw~(7}l?bH<vSWKuby#2(2kGGzBj$QBY7Ieoe^*
zSm1%yB7xoKz#zcD3tm&=(fmfhv-7uS=O@R`6CT~|ph+vA?hfdjQh>%Met~|_#F9t%
z2GA6wNB0g;Pw$f>e0s^Fz@w8##iR40Pv@oo6F^G}@JysOze(`utUch-S-RsBzo6?0
z&(7<fo##N)Wu1pTL5ngvT{rl4Cq#I5Z<qm|0zK~dKfs{%KnadHXi$sRqq}wkcyt>)
zH3gYARQK)nQBm;do(wTXN5!}EgHPwrPy7O|Cp@}KcX)Ky9&r3GqJn+;3C~<#0od6v
zKR}%SiC@rn!zX^h&=szoM}0a^dv-f=cyzih@a;~F@a*0Qal(1W|AB-(0@>Ms<PkfM
z?%f~*AhUNaDjc5Opo!Z~78Tddm!J3rLRWm^7x3Kx@t#L_=nl}t9@v|X|3g#+NcG>5
z1{D7}f};oQKa@CHK}H;{K#wDPP#j4h{0E+<6o7lwr&C7-<~NtlpBR4Qz~i^p|E1d4
zCyqf02E!rHWDi=vp@v->XucT|D<IZu-tGp_xNs*M*eGavC(Tkjk}c)&=yu5Ppue37
z17K&w0NCj<0ColpfSnGQcH&qChb6PTybfC60jVZH`9+hM{PGfX4v}Z)fo_iGpG+k_
z%|Dq-vcNf~`6nZPE9hhy$8HCMUJq7}<ddGACw%zVw+FB?Fu3%3usHIsKj<;Tv)6@z
z(W8^igMWR01ZXW?Cl^@%Yafqpuu_j+mIEO9?sl*=n8yTBq6t^R)8Ns|0*Yl1m@=3M
zL@8PM*q7vdEbY;G(4!N)=N#-pkJfJ`>>iyHK^&+PI)8xHZ{aAyK<l-@YaAg35{UcS
z&!fAZ!=u|H!lU&huA*-i%DS%|Ant21k4{66&Oil^&O;vEpk^ln*ifi5NGs7oNDc`l
zkIv&Bof|++ERRlb(*YC)3?8kQKmpPZYJ)&sLUMpafda&*+abcY^#CaWqU70Gz~R{$
zAmG{QApwf0ZqQ&71NOinA=`kqMvxpnNw5V##ky5E5(8*y6FAVo@wNlReXX6wuW{lN
z{~_=U8cP~~$iYwi0$^{X@rRyD;}1LWiC@q|0;~-hzPMu=l)S(yAr^qRuQ@@13+5Bl
zj-?2BU5OMBIJ^a_Ws%Z2i2K^9*@6*QRD%4C<Vq0twNUG~U7*e`zu%|M0t2utLFa<J
z2UZF8-3|~Jt8Yn&dC<yABo7nUz{qa4U@XBAHXzR-xe>&DZQUF8zxfwq83|fAItw_!
z#!xL#a9EBl31pERA{Nd6m`U^=3l+VGedS+*XXk&9&e8**M)MAj&d?1WoxUr4JJ0!a
z9`@~C0qRP5c5f(PWPp^apZEp9S@IKq94H6+o^S+rB7HhPd32X<fXVuF{s*_;!70$A
zJ6HhJqW9_i4ien)KbXU_*)@Z)^+1V1>w!x4U7)~y9So8?@rgeYl-xn<PF+tpHXmVh
zZ2rSsx^Ne0z`6B6y&i1w<|qC**Ap<?()hzqcyxyz@aQgG;n8^=Y$<s6YUc$!?Q86z
zVc^;M9lSdB4}4{8H>A%v8Qf>&7ib5qNc8FUF7WAY21Sk!c)9QY$)F7aj-5w6nw=9E
zTMv}#fV!70DxhvBvO9e`KS4CWd;)eY&P9ZvUL1JiK<DrMppg@>>gL~n`CCA15}JSi
ztygLOJ)6Jf9s>hI^Y1_WEuhm4nt#vYZxv@`VBnW`V0a0dOl<!Bzr>*V_kVtQh8myN
z+x)FR89+<#LF?U)JFs~A1jiqD;0O+Nc0TUF;~E^y@bWPhd0$uG_~Q;dpmlJ^90V9%
zg37kzpvj#8gc&}*uD-_|c;fv+ebSCQ2>39(1RZ;fuFBKL2V|0`UqC2GRS3iDGIS+S
z%iJ72eL$AI4n<es=;8&k$<;UB@3@0NsE-fBYeRH3P}exc`+@E8@j2!o#PFKyI0I+_
z<}n8r$ddGvhn*5r6iUGBB{TC%Qi}@mbHHmX^%$JP9E%GwbBetZlS4rBW?`w|xxfHV
zpJ2FLKv8NkWC9DO8Y}{y5hSpXFf*svJ+;IqvAD!7Co!GDCo?ZK5xNwz2)4d3vlzTK
z6y%m*kW<`KOZ-Z6gEER;%Mx>nLBWp@g-q^Yk#Nq>D|1WCL|5;Vnde!OT7+f_*!iHf
ziCDzZ%?{5m$__3_OiqP4BsjGMDX`q~2&{+9%qd3K0hv^VNPwJ@4__pTWCyAQRxSB?
zsYS>VE~z;s3@NEOB?>kQ28eaGpt(zkWgrE}8hjHga*(V9agn9ngF`9{ko^r2Kvn{B
zC7L3bkP~<ai-7@eq=S=WNk*zdQetv;d14W0aV=zJYG!^ObWxROUUGhJL1IZJXq{~i
zN(ut4IfklYz_K<ty%?+jb7`=zzl*1vr>jf6doXwru(OY2aImMdqffkhFdp-$yVe*M
zKC@<mz)E`v{{xi10Hq<K3=Bw1H>k807BnUc!XO(WK?H0qDN_h|ttn{!4z_n3R1z}4
z<TDU!O_?Tvl`??T!q&`y$5yea-HcERYG{M31g~Yqrgl9<Ey#VKF&vOu@Z2{{EmHwl
z0Z1Nf9|HpecwaVLJ|8X*TTX>b9=5L+mpo`^6v%#D@(G}-8;|`B1mqV$<-udmF!wWa
zGlDz-^4|fdJa|nJOrEI@B+USle*l#Str3LB5mOUf9z6KXz`y`H`xGJH3YS*^4RkXw
zFn~5yA>{ku@(xh>v!FnL+kXNs58GD^POvcfDzG%zeGO3k;A7@s@=UA13PA2(0F}q3
z{{U3}8jAgp#o8eK51{h6^uw0xfjX)P|ILQmuK=9`#ik#Wt{tHAe4ucKxgUA`_B*gq
z;5?86RSP;V25uL!+AfG%(7eYCsM<7SbKRSnnWMl_&p_E)Y|!FstV^>Y%da78vh|XS
zOF)Zl=(-pi<adylp;JJhSOsIy8e<T{1vcpf;$T_#B@Lawg-XMz7odq`&{|;7#2Etv
z186%u$R6077i@Y3H17)%hXy}fe+!zuFbUXP8jKH`=LeZdu71$`EXaP)d@RgN5Dl}x
z6q=qvVjv7si%f&U2_%NDp8>RBhk=1X6eJ1K0L37;f|xL2&{}E`8yZX?DKM6RPU?Z;
z2P^<3VESP+uC>$-Q2pq^2;;+O(3(h){h;}7s1;x;0IDBe0fR+Bd$1u4kRA{Vv~mi@
z2JvCI4yqr<htcS2L7g3t7+NqhG(h#k)?C2!!~6~7gUVs_Gy#%Z0lHj_fq|g|YA`7M
zfmX=E^uy90XgwEt+5zdefGPl;p#|c@FvzViHi!oCp;mynaC`w&7&0(0oPf^Vg4PIw
z=JwI;2dxFbX8#P(!X*X<2H3d_FoQw%!Pxj{kh;ONmKx+%W(H_rfH+8)8Dr%vL=xLt
zSda|1wa$?A4DQT>l)y1~43B}80km!gF37;Z09v;KTAK@64}>fZS{DEk2M_EbNkF25
zl>v6{2}}yK4h5th+-8FbGB7Ye@(nAb9fTwfN&_JE;PwHMIAl#UD+Bac2DpqZn8nHf
zJ$4Gr0}+r0JuAZ%5C;i^PcUF$Wq_?Igh}~<8LSLQ$0>kCKzl(z?vVr~7_bP0fUNmu
zWdN<Mg@`~%$X+W}1{XB-pgZe9=ER_hL(Yd`h3t2N7y%|hdoVz2tic>40<yN7m7yQa
z9MD}hAoEwCi9^okVP!akCJt_2F|ab+MiU1OoHJlahoH0gK<2+fQx7?BhaDq@f~IFc
z>i?jr2aS_}#CgyP1;{bLYz(0K0?E4!paB$+dTBKE-~lBDRt9Y}aY*}{jRDrahnaN@
z%wT1Joi_vKGB7Zl0W(+`{Lsv~1Qut59QpueLx>w-ij^S|O+9GD2NZ6Qd<IqoCZ2#v
zb_Qs13Fd)_S0Dl-)WCua*!D1dfUZG@s9<1#<)?p8aTp)m_W_CFSWB&eL);v?MqC0K
zU$B0PCsZ8$93s%#SkRhy*!eo({tg2JLmpJUC$!K8_d^&M7(jboK<f9RiO+?qH-uJF
zF!fuY;!DxQPeH|DYhz&QA3?<-Tfw3ID+UIJpHOi|Xaf%1Z((3y;AMiWi5G+xxuALy
z6t=2R@hMPoSUF?|6_<uqP>}q?zz_}<UkVim_e&TU7z&}{usv(w{s^dJ3>9aEZeswq
z<3Z=)K*e34;^6)V0|Uc+sQ727I86O|sJIcR(q>>_0QWaQ?MbLO2Xv7XO#LOOxI0uF
z+`nL8V0a1@e-0Igss9NTR|5|(GcbVr6QFw_n6d9w5XB*`#0&{%6Ho(#fq?<s*I-~^
zFo25RgNlRu6$}gvpmc+thd}Xy*aHAs)RYWbY;OP}3_%3WHT>X3`4%80m<##Ang}lE
z*Yj~U1nV^dTW18Z53JV+ycNI*ycNI*ycNL63}lrN*j6L3wMJmQ#$dh1V7<m*y~bd@
z#$dh1V7<m*y~bd@#ul)FF8CsS%z@8%;x-yUG=j#taE*#Whun~dJ`qAgYH$<kY$^|7
zf(9aC@e!O_0^%Z%DuM<gk)%OfWNFASB$5J%0J0KL<lr2ag!&1-RRnn_hhKacWRN<z
z6uzwkx{(8_%{{dwD7B=tC=WEE?FZVU4BcG<D_=m>7^nz=t?7gwO9dW=0Tl@_ap<v_
zU~y290299e&YX}v$jIj<!}dI&n-ALK1JVK#2W5SjIc?B-2PBSc{!FMis2V^vKNzGC
zx+W6Y{ZUBbpgsl6d{})Al14Va1SA0Mqa&LS8>azDgUTbAInO}?P<ugrBbfL*BynW(
z|3byl-7gNU2SL)HzAelgIV5pp^Hq_=k<HhKildtk+hYJSAKCpeQ1u{jP!}9#Z!(fN
zviU_&adh*0pyD8NklhbEuM;GWZ2l}H^~mNgfr_J>e-bJVG6&iH7m&n3U0|5|VS5HZ
z>XFTV233!4K5Y9dNIkOq*+B}S@r!IeACfq-`4UiZ5QUt6Y(WB0bCBKdf+P;=d%@iA
zjU<k2eiT$3L?N4B0uq3lkL><xBynW(n~=nj&4--}2$DuNe<Mf$YCf|2cOZ!)?|Imd
zB#vzUIjA^@LN@;eNC0X+visj7i6fi;4M`l?eAqT!kTkOSs?e@3D1MRMuY)9xyvNBH
zNgUaHC#X2O`H&-bAZxpk-Jc9q53(28{46AKWb;d);^^kjgo=aAL3Tgr6gXJ<3F=e8
z($8`v^~mOLgNmb@e*r2EG9TIf*OA1L&A*2vj%@x5s5rX$ywLVG$b4k?iy(=E#vEYo
zmqrptHeU-Wj&8m?R2*bJvitpz#F5PpMG{9gKOQQMZoVwE{SPu9+5IX=;-E1SnESPn
z#F5Rnf{LS?9|9EznUC!LXe4oD^OKOok<HJ6ildvq7%C1jA2bFHbLT1~anKMPOnf7f
zII{T%pyKG}--e2V%tzkS@(4*B+5DGC;>hO1_M)JhF97XNfyV!k_wa~9#X;&pM~uSU
zuMQOlxd%DE^pM0sD>h*2O_9Wr-Qxlk2bqstp2R`LLFOaJS1OV?viUhk;>hNgLB-L{
z-vSi}nU5S_yOG2}V{b6`A3_pGHvb}29NqjkP;rp?$no_VNgOnm4m1B3k~p&YoS+E7
z(q2-7ii0T7IR!9tbU^~3ej@_|_*?^+xDiww<W6U#y+$rjagaNa<Ix*Q9CQo_%$y)3
zab$NULd8MmBgbPMR2*bJay+&oi6fiegCve@{xqmKy7^0?;vn-uXM@1pxdBNWc~8`K
zBynVW_aTWR+j|x&j&AP*s5s2t-=I}o|NsAgizE&jqlLLg5IUX!QjeV8B#^|B_x{Nv
zi6gs54=RrC9y=s)SETq2fQp0cMULNaByrH37tEb;NaD!$=0e5M?QMsOgUm;c-##R9
zWb>yYi6fi81S*bh{&uK1$b8Tg9?YHlki?PAKZ+!dY(DHPB6RcrBdJG@7dB8Q2ijf&
z&GW+S<wX)lHeUuRj&8mVk~nCr9%hamR2<|l<alvK5(kat!_@mAi6h$^4HZYXw*o2-
zG9Ni!>XF2e&2K{zM>c-~R2<#>#ZYmO`N;9I3P~K<{EbNB$mSn_ildu<4Jr;YA9*k9
zT_ka2^PeDzBb)yjDvoZx2&l6SjbG$=mqrpt-pj3oB#vypAygdQd`Bd4&=K6QcnpS$
zgZzaY?@>tNpgCli`a~pgWP1ys;^_8vLB&DlBggwhBynW(XCR3qo4*Juj&A-|s5r=c
z&|DSFoqLePk<CAhB#vzUC8#*M`JbWUAoG#q<rk7TXf6w8FC)lMXgq?LFmcE-UCeP3
z1&|_WeF{3?2&O(8NgOmc1rslZii6yPyk~nN4)J+Vage`2bLlX1E<wdX=78q5Vd9^V
z#F5Sak0cIS697{$3>w6Nx*ys6<xp{u`N-<`Ac-TJe-J8;?#}l};z3CD2&k<B>j#1C
z0I@+BHh%;X17X;_2xOiO(q99K!{#|an@d6ZKw=;ao96%>I*Tk0o9BSc=OD}hjaP%z
zu|UVEKxTk2Y@P#jCJ#s+BnHB;c@Eh8AV>^^Ve=d*Xy(A?IY9F#$mYQ2IhLTQhs|>w
zK@*3~bD-bP0GsDv0XYJiZb3}gJckO1gCq`{=Wsz2hs|@OpozogIneKIfX#C(K~oQ#
z=Qx5U4x8tAf+h}|=U{=3^MIs57&gy=exCzup2G!AJ#3z%08Jb=Z-IWF18m+x-w=8n
zKln_31%i96EzHdfAWDhfYrO!P_dxLvN#CRA_m7_6kK_D)Q2HG`zaM;x{tHls@#u6O
zJ->hS{C?2JsnPTMN6+tv-9Q7{;y8MK|LFPsqv!V{t^%Oe`TZqng}FtZuoL`4+yZ@r
z2%X^%)<W(n{$S0J1r=Z>Y@thV0fY<Q`v+<Z5QRt2@dw{AFnW$ZQK<!=BG4EGs2dKQ
zVuUM&^x+s7$UVn@0%&3ubnX^(js~>O1!NDD3twvr8ixjngSrH8%R%!n&^ZBQF%TOx
z_5z||7&LAMGLu~Wpm86N{pfo?U}FW8p5s3g=1?dNvJ1q7(V(^4AU0?`03;5>1<)~A
zQ2fBeKs37lLE~BIVjy)Fpc)}-jUo3afTlM=VFi+hMh^q7y(h3SY|wZsNIeY0^uuV-
zdEg-TgU07zYC!Y?sQW?Vjvzh^gVci9FdDRm9L5HT!|*w%ei$D{qpJn2eFcf3hu;OL
zesa(8p8%TZVqjo^tObXJA80rg=5JW|f!05vr#+BcIiTYq<euaI0Aw&|uNHLe0w^9p
zb9LzUgR%)W`#*pdrZ6xtz}BXL+yug)umaJ9Fi72C+Is>Tmj|7*4|6x{{6bJN2Z_V@
zpmGMJ1~hI95{I2P2s+OjByI;DCuC%Rolgim$KMw!4jan^jdO$4gD~zrFQCu|sX)cp
z_O^gjFk_s)&%h83l7KA`0<$3mWRC`Vsm#Ctxxj@DycZ9m5<-IZfPwa6z|ti|lz|~1
z%wS`H>{$VGzyxGXI_5e4m0(#m2FRWjFb7P)_HLl>S%9ob#|#J1o-mMm!oa!_L?4*R
z#sIz+5zK}Vkp0W74Cv?h&jL%cF;s(T1OZta&dLB=D-V-d24-NM<G%(h&dPv(j{hdG
zI2&XyFPM!Wu<cy}9p3@UiwIQ^);UmKg)mXbyEw$(;t>A?+82T49REK!)HCDQD*-w`
zADcTtXMA822kqI$Ca#Ucd_x@K_Rzfyu=7Ge?f?ad7Y_AdIK)Bcmt%7e=u{bO;&nL8
z>Bb>G1&26d4L`VDt_ME61JXu^^%fvJ(2@1X?Rjtm9<-tvtPibu4^j+Tb`M@-4_;z#
z1mc1h*qeY@;N|t;)%D;d`QR1#bUe}@>}GNg^#^N4I@TY|2OaDWW`MnpydWGDM!1jm
z2kU`^9_Hcx3=9mT=leqz&4BU;C|`lvJ;-Z-N6+_%gwN>t{*Z7OJ>MS^4x{J$L&9P7
ze1AwdjGpfg35U`1{Xw-TWX%(Z1*%U$c=UXK$oe5ze;Bsc8Wc7l4C_C``d=V15Qg=)
z^^MISOGuz3!Snr%3{8!|YDrjg0@}O+iZswTBbatz;Ah~0obTVw?$ONvIve>o6KE_0
zdfF#Q)Ik8oVe@FVV5np9=&XPXv3qn2cyxORc(h)s69#qmK<7%b9Q0^D!02Ilq4X0>
zE4xQGhevmXfJZl*M|XjMM>ms4cYuIL>&ZG<s4fAP<Dd8=S&n_;7i2jE(SM@!1&R9O
z@aPwS+YfQB3d~~gkP+lC+&G@&pZEoN;O>8kWIwuo8JK>Mo(RxUorLv)?qLT7l>&%?
ztUr?H;3xhFtoCw%Lh2L00Fy`aPsTcF@I~mK_yu?led3Qjk;bn9)pVlt6_R670=xBO
zUCbwb0e09q!BtEpuHeHKU@ia;zNPVpUwSR-(JOKklr}!`3$Pqd<JUV>#Z)4Z#;<Yn
z6Mx)|PyB*1Vvx8wSbz03J6Qi~R<M&GmIr%uv-xy0_<)iGDDi+|oCy@;U^QS%eOnLk
z_koVPP2&$gi8yjt<EAI{z>g31j$nnK_ys`A)fqnV3xJk^GNkcqeDvwO{fS=yJlf*X
zc@Y#>*FY}4p2n|tu!^a~0p#Lxwlsdd2W6t49Qh+zPNwne-6+!V>6AI=(s|*vd>X&r
zQLus^Wx{X;AIjK0APPL14>9^!9x7cF4e^f$$P*ks-45`S+j_Dt1?Fn7|G{^xr}2m1
zcH9XHIFHUlpx8N<#;<p}im61k^?#`l=%7-T3!nJo4uah$_!?xj07S&4^ZaX;G=2?O
znlIr?<JY+GdI#+EQe=0)Q*eL)EG|pcs#HMPr~>R3P*@!L#2*35OUT*ibtFuE74w7=
z9<W-E)|2&WuN^>|t-%6N%`q67WgwX&5}eRM=}wRb=GxLHQ1^9yNaNQ7ry~dcDaZI{
zA9PUoSR&+Md8m}vqx0Aci~s-szdXUjzyNcHBmb0xj{LI^xGJ0|k@T?qRVw1q`Ol;C
zI4D8C-~y?h#l*ni+H!!u1#})&%gGXFk8X31Za$ChG67Ig1ujfrr3imt4if_d+!x2N
z1i?!$n0cV{AUr{btN(*JnZHYriGiVn|0Nd_14GNnl3>rypB|mZz=ahDDD`@FGeW{1
zVc~B^R0}bJ?d45Ium?(5JvtA*=4&}w66n$S6BLx7^US*q;eKI9HyU&xAJ{Kx{2CWO
z@kfe){38M?nM4rb{<4Y@5t^m!RbX4hU_L4ht|HbpBbY~!Y>UCL4Ky$X%4DTp6RO<t
z#sp|+8SHv+Hu%IJ0ZKNJ;PMg4^`JA2Kf%u%55JhkuXmx;t;z+j(V*E2WTRuS8T~p1
zW=0((p`cVZ?qL0C{2Dht@kh#lk{djPFMr|}L<I1i*D|oQ%HL)B@Be@PmPdd8gU<JT
zss8W(|C4EY{PK{Kcn*V(5caVAS84)FFyNYvzwagkB8h;q4O$?)d<k+3%#u=*DkDf~
z14#~$db0H-e;?>PE|5wFk8Y9U9-Sh`ASLjL()X{c;JWRqY{0r9wK24oZM{?%0oDmS
z9~qRz52o>l9|YC1P;)MnzI+X_8E*{-aXhrLxljtN86CqN!yH2$!AmzKK<8VZ@aSgu
z>9+9c&H$B|KHUWZzODc3+#zRJe{$v*aCr(p=Gqr@{QL<fP?m=|FpWRt1gIiP;}1QQ
z#vgX@lQX{{%QMgBBaFV5&+GSlG#`<Oc8qb1b&PY2hm<^U+rbuV_;e=-__n^S=LXfV
zAP3!etpjI*D;RKLd<VRc@DqQ8E2vU)z2VV(n9<YnZv7+B8QC}B)<CU*dr<&vi2=xW
zzOCPoEwO=Hg6Y*Xem&P4WrC=_7j(S=@z%5Y%P>m?pngNO78IZcAb)}D)(ipP)^BwR
z7+!JY7j(JH0P)AY`ll!+!BPgOHf94g*FcU1wL?@u3|I;QXC_cPB=RJ3TjVJ?s31-P
z8-%D1LFR#LcaSllio^uO0GkJ@#J~kW8o%Bta8)b7bKny{xDG)!|3vA{PagbQCqb1X
zx<vx;oZuk<GMH!=gG@YyW+M2EZ;#I39^LHC6&#GEA|S)THhOe3dmMKFkCJ<ITSJ77
zgC_|+x~n;$d}r`XqDSX_2*3FV2egF%P5+*q{~SBNwtlOV^XU8yNdhp#K!>b*G#}=0
zwR~Ft+Nbk7*aX!0>5P5h)0z6gr!)75NAnv6&(6P4BU=CSw}AEu><2jytkJXch)3%I
z{ua=wO#4C8KVVUh&cmR4R)l>zpM&`j?Jq$`J$ZJ!a)4Utox&d70UREk!Qcj^M<?jW
z_y7ry&R_|T?f?ak&R_+P?f?ys&R`9X?f?Ui&R_$N?f?sq&R`3V?f?gm&R_?R?f?&u
z&R`FZ?tlP~&fox#?tlo7&fo}-?tlc3&fo-(?tl!B&fpA>?tlW1&fo%%?tlu9&fp4<
z?g^mzEsxI0V5)lp=$v<tPVjN>9^Df_=aYGKP6kum;QKv1IwylRad>o30L@!@bWR3S
z-4j5w%O0JR!BqDI&~fk{o#0d9J-R1=Qk_TVWH1G}cgdr(88n^0A2i1Y4ir!bNx-5I
zHKblEd3J{~cytSSbP61IfW$R4O?Y;)sCah9sBrjnKJe&{ec{uc`oX6=_XjjbbjE)0
z=}ZMhn}BEMABa8R$SAS$>}FB%=(g}^{a>f&aqu}aM6&fjDL>2+;9UG#(4$-UxDy8>
z_|6<*k4`56kIow&-7+dZ-6<*@aC>g}bf!M=>CAoM(^>k#r?VDhr-5VVAJ5M3j{87O
z&({BSp&rTq;Z}Ke9`k5DP~zy(dDszr*oy}wS^ISUhd8B^85ATUj=iP-Vd)ZL(raGF
z=A(>|MEj=xgiq%O(vSHcc$dMd1`f~8znB>aG^Ir_1LZR^FnDx>dx##L%y5=72ZAYp
zU`imE3J9hKf@y$YS|FGX2&M;u8Gv9$AeadVW(I;;fM8a@naz;g26cQhIMczr(hSLM
zFgZwWgYh7_4aS4yHW&|_>ENb7avMyJ_}nJ#)2V?kn}Lc~P&E%v`|v#G0lI|n3nclr
z9w-s>XuVx0=+P~3+zFCty9InYlLRm`58ME>Olt1i`lQattJmf!C<npJB`1eMD*|u}
z0oDwu(*WmipI-3Unvj-<Pv>`VXBc7^wB7M!KWLLMSO{J-s2UpTS>&XHBtUM1V%YiY
zP%gs{=<#kppvMG0fbt*ghm2UhhhEM70V)sEN89t<!OLl2XH^ICu!AB8ban*nJa=$U
z5hm|}kO!@=0=W=$&Jg_kYCnX04M>uK0esdqTs|2g4>`M%0dnRf%=~JEJgD0NG6K9_
z4~snbJb2jn7#4ZZx&n}X@Y$s>`C^3mGN3{nkA54dJUBhT^h1u42cK0AJ4>_{WC={3
zsRC>PXzfl7RR0BJ`J85ErukqcU^777N02lq`@_SCsTr&Q6bG>L+(FqKA&)qZ9Cn^N
zBd84oa|81yCXfLj{on(`7#JA7gDio`GkpR{gX0Buo_iCrd_*&Q4_hy5A4@+oQz}>~
z1L*7mAJ8Bu0|P@cvReOU)*hB#W+s1xI@p<B<;dy+o7s9;ds+IJnG!)NLFUbYn&*YA
z&KIT*5{@80!1f}7_Dv(gzy)LsI1FKX5<%<r5b`N-dDz}W(Ee3~yf0WD6i=`{iV?`}
z@Mvac@&+pb``rT+z6=Zu;JapF;phc(YbjVE$WO5Si@QN_4^tQ1%iP1#%*wnNa#lOY
zPS|<w;5A1ub^blf%`A`$6+mYU?19<|UMB=ogM2<b^xS-q+80Es1-VfKx~TF5vKxIM
z@yNU#;YJ&%I!EMi0lP65>|c;S5}<0pYqwx-1gl{Jmn0zjTA*q|k<Ed}Gm|seFumf+
z+>*p32EF2vA_$!UV-=<5B<hu<R+KR4r6iUlGUz207c=NV52Y_IDKgYUoL@iC2iAka
z1Qe|3tJ}b37y|>t4CvZNP*8v{sH*^?VHmW>9U5FPAu!DW3P=V9h6qsM3_3rR0dm$k
zluK~U@eMS4!G<y*=7wN=Tx*Vr)sJh<F-$-DYC2F@f$WCSpl|}QL2DvG;xPOI>VA+s
zObkTB{12l+YaOxaH-H+59^NoMj0UY)1nEa#^XmZBPiW0A=+0@7evsRcaUN7ZvKWYs
zt`@XL5hMmJ8bM0HxB#ku1zO^O`5UYVdanqY60lSPC}J5H7$l(O1gK62HCAByLH#a}
zLQpV6m4LW#ECHR5f~<*z3&XBUfeT=BJ4iACl(0cVY~c1M<h}(^y93>RQ2M}XKXlD9
z?3_oCnIH_Z4@48fAa%4{^9za|(3;!@P{)JoYpA1`v8;gwNij2^ml7aR1_sjC<bq-n
zq8CPj&Z+{fQHAkgG^7||!#MdGbao0zJuDx<)I-uc8@zmhi9^=hvN3?lJD3=V2Dh~s
z*uZTI5FduYvp@`N4Cwg^a!x!O_-rbeS`ZC78wYfrH;9dleZU-OA_B7!1h#Yf1EFh9
zVX8oB4#ZA`io^Jz`~VUMt;GeMlMOl}3d9GuZ5bFCrb5+&&awiDgX&xm4LT1Wq&^PB
zfwd(W7{KSIgT&{di64TR139l8+V*8&U;wodLF(l|2^F+Q1gZ~o^BhPVw3ZYk1S|i(
zLd}^5RS#~XGB7ZJ*35#`pN5Kq+osTaK0x9g(1HbIAILl{=$ckoxd3j5g8Ts$cYqcq
z;Pxd0149T@+!3_l0@ki%U|;~9n*lQ40-B-0?MVg(@VWZvX$oX-4~{je6QSnsf|>(v
zYcen}EP{&5f(i%*1_p535){r*@hMPoa9fgr0es#*$UXO<;^4L;0|Ubq9QNLVnxhWQ
zO5nC60|UcHsQ3h^IJgZ7syCtMb3cNLgWHY_3=CpS*w5z%ou3bKj}>(92Dlvwif5=f
zbx?6|yODu`!54=)AyD;}&;$!^KZ3#^D!vdZ4sJ7o&V7f9TSL!rfr-P;HNOfK2e$<o
z7#KD|)z5`S8o2Gpz`$@2Dt-?t4sP!;Ffg2liaUcU4h9AWa2t<-f#E(5_dmlS&X8A@
znp~1!6knWLl$n^Lm&_2BSW!?J9}MP#mJt)Nz8HLXH*}FPXoW54CO()6e(_=MsU?m@
zMTwOG`QUpEkz|5#$~foe6_+5X3@FM^LE^e(mLc&x^N@LtDJkf>UGhuN4Dij&Lp2~I
z6~#WV2}Qn%#o0*8d^7U`OY=)IQ}d9W20w}#No8<yVooX&-x+i{UJ+ab`x)jzj!DG~
zptG$F{ql=)k#zeeR-lPECKV&ehx-^I%LfG)7L|Yu3NOkn21%fK115}Qf=g;~Nl`vL
z+S7_sQ$Yqmg~Px}1RRG*dYp6e^HN=N3rgVHpl59R#fO3A(A6RtgQ5+l9!VZat6yq4
zx@zCVY<N)m#fSN&mLsVTD9S`cPXUON#!ygNlAMtU-WLWfpFzbjDC@({b9##;4%(9i
z6K4h~1n=WvU_e&ifFuse`Y`pdzBNc1l*M7<$mjj=Bc1288Ke+uJ}8UB)SE%uGazYD
z7Ke!=pC^qhz7t73vO8ZQiG$ioFmsU4T}D=42(5QO_9Bb_LlQ?eXFs$_08)=Ej_aJ=
zT4>V?q#jhq!`y>>?kuu7P0;!dq#oHlu=80#;>hZsBdJF=zX)2dfxLlyPF@F89Apl%
z`LI2z=;~vk^%}Z(0S@tlIK&m9^%uw-P!|Cf4qZ6J@8A&sgCq`W<H5|~2YCimUxMzO
zKuT}&IK=gFh{qs_gZ96{%r8U|N46Js?jXotptdSZJ@Wa2$l|a)l_2%V<~#*uLa6(Z
z)qg?~M^+Czmk!+=Ur^?RngiO83v*8vk~p&Y<w)Yl{=JGMj;#JGk~p&YoS@7PwHMSk
zhuNEtB#vxOKax1|xxb5%#F5Q;jU<k24kM^=f!d2KE{G(K9B#@`aZoZvwpSNP9NAwM
zNaD!h<BTK@YTLv7>xU!`>dL~zBay^GePEb)3X(XeF8~wIM-oRq-?|D(9QoYnRwQvy
z7Z_&F1SD}#pA05G8%Z4boXcfM;-E26nEH)K;>hO;??DnrJ{S2ok~pZ(2Q%jqk~nAq
zA58oKk~pX@2oryYBo69p!o>d|i6ftv$pxxZpyv>S`c5$Q5=i2p1%xnhH6(FR9}^~S
zf+P+a5`c+2A&G<b62ruUq2i$Yh@1`+ki?PGVFnKIElA?X=PQ50A<hG;6tSd#NhERP
zbejql2bKTGd!8zw;vn~1BbA@sNaCP*8km1UVFl`6fy@D65F3PH{YH=&2!rwlNF1^k
z7qT82Bo0dJAaT$HB!~uyfiSG!3mew}iGeVz-wT>fL{<;$_oA<@hV^@414ke;Kp58V
z1?|;DHV5ACMQRs;)WiC{u={jDVjv9b_rmVc1&M($tlx`%UL&mEi+)}sY#ayuyhd1m
z82!9PSbrG(yhd1mH~{1bX!{Dpg!OMLKpZ4-SpODw&n-wAgkk+#(6UVA@PYMjUw{-L
znFH&`av-(4KuTc!SPe9BSU(oFrwXJNgkk;F5;XO&{wn&pjIe&`0W|fne(4)Daag|;
zc8>?hP7sFmOJU&+5(8mazcdAuA&~qF>z8(*iNpG(#ie;EnTa{Y@kxn!DSG+(gx2hv
z8ylD?fC2Gq_IE(*U{L%(@*85!K4{flugq1D6lflv!K3*d<LeC1&cnXlA_x3?RW5?&
zn|V|`Ef1CO`F4vO^z9T;`Q!*%-tO6X%a2*)zF)75q>tr2AAY}kKD`NyzLt+`)O<Q0
zfY;+W@<%#xd~)QEU^xiV16k7V*?fq@)ADfbU7yYeo}HgOEI-st@M!&3QRE1A0Bk*{
zN9Rp1W}fRlofkYbFL?5M9009+<GJ{WKaLZ$o{#5Z8h`jH&)%Z{9+n^KwLuQnyzJG>
za}#Vae<UNiwI0m}IXo<n)!z4L{`bFx)wA={>p9VmF_6Upo}C{&J1=^4`wMt<hf8>L
zyDNZ}e|8=R&!t0@c=Y;kF?zIqt8?<yyx<32;0{@>?FgQqhdAG-^O6^{$a&B@HUXc`
z8$O+geF&dDn-4O2T7E3O4K=az2h>ImkM4Q}pKb>Uk8T4bE5S=oe0u{KeV9YRn<IjJ
zG*9~Us+<MImapasuU;AOGJB}~;MF<4oe%w(dG335-tc2)x#!z@sZPYF^Mz+O&q2>l
zo&%sopFWlsO5b~emkeAky#QV)0Ci9E8v#%#be{6*c9Zbv_LuPJE>i#pMyH61N4K~K
z_5g7M2M7<uDd0GSEWP*XJmtkKavT&CQa+s*KnwW}ed32K0fjH(ed*bJfYH<PL+M4R
zBM1cwC<=5v4nATA+XP$k>Ct)7gBi5;P=FD%?C=x6AS1}H9+n>vi_3pN;<jD^EtHW~
zpIUf!{`KfA-Qdv~y27K=_kd5Q>jK203XkU64GjE!py_{)<F24(a||Bct{Xg>Uod)f
zy6*7lPCen<`OHVV^Z?jxKKvdZd^?}}FxRf|v8>(U!|zwS1GMZ?4V+v&Aj>&Cdch;m
zU=84?hb_Lm?`!$5-rR>db%C$u7te!Fn0-1wdv?3rW%%U8FTkPz(+8@45c-<maClnY
zuf2}!X4eyp9^I}dJS<%|@b^dj|NkFZ@`wdE0U%bwdJqbK#1cq*h`o^IV6eq#9-vh>
zkf;PpV=xi=>lMH%u;@fA2yT1>8u<0>{O{4Z736l0&fbLo|Nr}RwibXX-wvP710I?e
zJUS0~v>vGA2QOjsXx<A_%TO=r(LEK!@@Rg==mCn-)=TxKFY}lf7{KdT!13VI-3n6T
z+0FAE<o8Y)`0C`(9?i!XeJqcaK7PI3qq`Smp+~3h0*}rU9tR&VdvvyD{Qv*oqtmy+
z<GAY#&^j59<F25UO$;90z8gHddCq%u`cCldJmbT>6r|F#*F}ZHqqDUFq^o-_$QvHa
zu^T)rV^?_a`^ByR6|^iW;2;4lIX>ah9l8Oulf<Jl^Z>|2k51nm9+sDD?0ve|g3R#j
zyav+Z3RwvaS{{6&Oaw^;Y=}>1=?+h@H$K;}c{U&AczxQVJ9LLfw`+$-r+`PdYl8>l
z1&?mu2_C&H2S4!(Fo5>cfS2eCRe_`rcyxk;=Vdi`4O{3256jRUj{H*(y7F&3>Dqd-
zgx9lMM8%_109?MSz_Q~fNB%e-6%Xs!12rlh-B2%w9spVJi9ZswaGU|`wdMmH9+sDD
zpL=xsF7W7fUEyJQ(6jT955M0<AIs1K{QZz6WmCaH&m20#gE@2uDC>JL`_Aw<_>kG7
z+x38F=TXnjW1ih6$31#&#6Iy0@PnMi@6*e|=i4pe(<u*f83$}jLlskrnUCe?8bhC6
z7d{T3&iCL11Fkb1`6FFSAhneNNDqsFNAqz;kLF_>9+tmr?|_Sw=2sjZ%`Z7TEf3Z9
zdNjLsaCkJkE@1R%&TRk@GZ;O(LsxiMh90Qp_2~9J;L+*3;pO|k|Nn!9VL{#tNp2zM
ze}FSRcug`Sb*1s^v7CY>S$@|G9{k>ipyBTUNu?f*M?m=jEzf#(eneCx?g~EL?h+W)
z7uYV)B2rHH%1(@|>CqXBb$O^KXnE*Y&(3S$3<ENx)T7ttFQ^s*Cs)tT<B+ApC9(d!
zIi`#r$3apIKArD9`Pct}+vnNI4q8dd;o1C$v0m`CA#4RH*woibo(G>Y`*gknFKYuA
z=iHv1JjX%7?!)-X$MQkxEAWEW*c(3GsSkX*b6@y$mwxc+u0^b&#qId-o}E`cJI{e_
z0=eIRKd7$<c0APOwjReFz<m^-&R0I2-(U-SJvyBgK+9Xv7TfasbSnFFR&)4tW()Xq
z7E9oC83Ti=p;57d0*J~<R{+}p4jd!`)}=ub0x@B0^giroaCdgLQqXYs3)NIG(KFFA
zS1>X#G%_$YG*-|EN=;GlNGySf>lzw@`p%$!8ps63svri&3IRrG9(Ilij11s8QBWTp
zB*zA-IAH5yyqj5in3=wT*1Le@A#Fqk25_GXrX~&~%K%>21nZlD=bT{jOptX;ApI~8
zf%?Jlbxko4{h%=gSYHi%P7+Li5M-SXQv^gE$Q*DD%fP?@>W{+B$wJ73<Bx%X0es#O
z%pAz_9<V#Xi=i197_hkmWIpK5V^COt=Z0bWk=EgPfWnA@0dfaAOg;o+KPdfVK;^-A
z;KJkskk+XEgs27C1zIQ!vJ016K=&Gh<UwOAaKCyqGsp6<bAa@N<_AIY;9*6WU2X{T
zzd+rBOI`%jNnv0BuNgx&Kb(i11LPMIs66=INSOJ-2){6kGlMMyxg`Or78I9ov*N+h
z;BbeH{e#A#;PTLL1L=qLA+fm?<dy?a^T7>Tm|Kw7m(7LP1sWHA162#2Kg6aMx)u!-
zb_~>8%VlT=U+4u{*_E81o12<f!l0LzUy`cl?iZ?CT#}fa&7cQfB$k>HpH>9AWfklU
zN(oRY0*Y?vQ~}&LSiVgL4OYTMG1pRo#`{>1<Y7$MTABoCUl`PF1la?f0)Vfzz;%A)
z5;S{Z=AzpLiZ_s%P-|ey7>Lym8s`PM3pDNu*UZ2G*AE@~f=hwaf;cc56iy&EXkG*)
z4#Nka?nl=T<HKmsy(`%CUx4Zdjn~4=1koVBBGb6ma=n1+2aRWf)Wa~yE)W|=<66rl
z2A%5wsYS*xeK0XxYq?-|e8I+^VCrG+hw(w@*rCTMNUj1jzzjMw4VouG=?CN_n0{Ee
zfQAUs;~u2n0HlF|fq~q$T(B|80I1_YQvjeiMz<dn%-HNd0lFBKfq}sfEx^#YAg5x*
zAayJZAOB;MWQGkaqDe9{U~>s*trgT080w)DiWuVPr2#|%HP&o_;tR9}3t}RIgpAd)
zW31T%l`jlf)|P?FEs!`UoDilkFo4F_LE^A@g2{pFLI!pQSiXaagWCfP(1}c#Ae6?o
z)(SLl16tz(Rl)#n`!FytfX<}^iNpBd_6}(O6etbD6eH1~F=dc?O{fRJ?H}m*XdrP=
z9|@!!T*osofX`b5iNnsb1-Ew?7#KkL4<ybF%_k85Fff4DCV|AQpyJ?m4Fdy14|Gk{
z1gJR7{Ap0}jZkrLJBERQVLnv+B~%<-4@1vY1)0wTO>*FN3utW(4*!A<P(TlRkpB)s
z%@=?sQJ8y9L&aft8A0NYf#C`c^FdpiLGFo$ngebRFfcHHcF};u)6m2}Ld}QG!Gqf$
z3=9mQo(M?&RH%Az8-{^_fgQ)1D$q7`koqIgBm^@@47#T31ymdsZpt{!fvr(vgeF{=
z`^}-|@Ib}E?HC3I21ls)NvJru%>oKg)Is26_^KkD2NoJKfQF0RokD_w8JrUHQXnks
zt7bqdt5S>d!3v{543J22enBNz#2Lf@i4=pD<bZ|1i*vv>B&MWzf`uGG43H}Df)V(7
z5il<etOC5O1gr_XI0j6BG=LZdnPp%#pmPZWkl4P7C14#O=ese0m-oPY;|7*U%*n}5
z2I+>boB_!?g2X_kfJ_G~0GkaK1{uh}06YH~l>9;U4{Qz!6px_b1|<_vy#N!3&Dns&
zK~(@u9M&cVi6hU=t_B$lokIhq5t#bpP;n3iN((UYKOh09dQjO26W4*}Ly-B%bD<4T
zaga99bUsXdJCZo4s)UJ8go=aAL7wy64;2TQ1F8#Q>S1@NqpN=aRSyzJcF$iN;@TjE
zP=6uM@j4=jBhPul>Sd5LvN&w72D*4QNC0X+sBDJ0A9iOsNE%f3z{I;i0#NnH=1+xI
znILK8wJj%bh~L5?9tN#qLE#CSPKMe09!VTjUc$s-cOHZ61+|%B;=iHg3rHMPM#99|
zpydKc9Mq48i6h@VjI2HzNj<W7Gm<!RI52`5KG5(%Rxghv4r-gj>@`3VM>Ypik0a)0
zL3s*<VQWW0;RC|3dKJ`O1<8ZNKp0kkLQcLwm;<Xnmw*%_&7r~S&ogM^u=?{2nmDZf
z1eNn3DUh8Y468qNp!GLM41{6zrw^Jqtp3bF6NlBGGtk6g^&xl&3(5Vk`tSytdRV;&
zyIT<C77&KjdlDcHk~y$?&jL*xR_~$Tu?MT)(C^rT)o;ja?m$Mu>M_{9Hjo$y!|JgQ
zAP$myVD*^3DRfE_JTFQ3t~+C63#bO-=P)-w%OFsEg8FZu73w?;oRD+JKyw!1ph+|V
z)Ttft01;%E6KUE(04$7U+QFl{9Bc?!9-<92CD4t{Xt0Do2jn23dI67ah^Yj1eSld4
z8sh9cgksf453p740vMyWD9X@}dHCbm`4#DW0?4@mMzGT;d^+DD4Q2{p8O&q{4`ya_
zKn5|9jwT>=+z}KvxW*nq<31n^QUj_pv5gCX){B7TL3Jlw9%+mVwyzi5UW1MGcr-JE
z#;`zU!}j%p)-}TQBklWz?d!#5KWJhPWIw1bgX>2ckA&^(#ibv%uNUMNxPFl17$D=O
zuzkI_<YD`IvH2h5XV|`8a6ba(f9M`gCa686k8#m+<O(td4JrnqRVFC7!5EUK85m%G
z1PemzDi|9?gW6A^`VquN#t%RZJq8Ab0FdDf3=AMHhzYF<365RC>KJ4*L2PupK=mWY
zOr+unq>O=B{jjks(AqArMkoQ(PiXAN3c9}%strz^0(lnBLom>VL3fvc#GpkvT;T<f
zAOiyfY<&_;0_0a18$^Tlv7m<uNZbI_P-S3XfQ`9>!XMPkf$1kS_7eaNP}se^ATvQ2
z>MRfwj6r;Kw}T`$Kob;f><W~JKz4&LNFHWCs7V903M352CqNRQeTX0n;G&SdtVmp(
zOprF(kNrSBiRKF2V?5A?ERuRqzX#O!g$aSnG6n_)P?-m6yTZg_G-z!iHgQl{4KfF&
z9~9moJ)r$e*wlmW+ySWvm17`vFdDSq4V!w<J|}GAdC)Nc50D`Y3=H71o`Hd(0>>Bw
zXf6t5FKEmaqy^^QZXD`CcVd9lgT^>P>OtWGqCx8hvAG9y_XS8j?9LgO`JjaW*wlmO
zVL|FwfeeM#3n1oU9PR<Nc|q!rffOOBzm7vaXk8;nJ?H>EkQP|Hyu+dX7c@LUcVmFm
zgX<P(KE~#LejH;V4Dd0Gl+?W9RJ~*d7Z42@6~I0)k&>DR9zTGngpCcPq~^hf48SIU
z#6jJ9s5k>i5~2e<CXtew2OgvVtAz|)fE)lG%K(dk$2U?^^S}chU=i>bNJ?rRcu)i^
z;_eC>NJ&Y}gD~J?ZVXT{H>i!Up$CwyAU0@d0<0Q7`T!lMfGL2dPf(c&DidLSD^UL$
z6y6|lP|*n!hwYaHi6i&f!K;Lz^&xWK6Sl7nq#iU*3o{3lPhjSQ@(4^El<r~T$YUL_
zJ{QOw<gpIe`dN@TC~d>cfwhG|;-ESiCjJ~`IMkh>yaN;G1r?A`apW-y*c>d#98kX!
zrrr`sJ+gm6YCu+i>HrW1u|XKtegKJqFvzVSaoAinNDPEw<qoJ^0Lg>IKp0k@z~-hw
zVjv7FH(=oa5(8ma`2fmq$mYPx0oZUqNG%A%@;mxEVpzU*fch7t7KCB>7kwQuET8I|
z8$o+p5DLC-)J#Fa*woV8Ou^95(p*8o(7?dV%tS%K%)o@?`^7b2g$HQgEy$A$4h(z@
z+~7V}>;JmUUibe#y&^|JRV=7jV}PuH^i4hiTB62t3Pi@7;`qcbAj0^GU%-WtBaL6<
z;V1scM``>TuRrlezWBr+^YjzHpbFzB{>aOag+URAKJg2>FmgCHA7JumKEMH5t+=-H
zNAn9t{tnQ%womc_&w~$`y}Cu%K<2YB!4I!gt(JSOh#}qlo)L6hZmCF>Q1b!C*D1~K
znIOw0K?g+o_40t$i3)Ij;*UE4TJyu%>(1DEpw77S2h3wWphMI|*g)&5I6pb@NAfU%
zj=yC5#2*7%#l!+yWe9fTt<E2<|0^57;Q;9bA{MbVzp?17UE|UD*|YOX>q-9B*NhAd
zt^fJ^W->D{K+aS<?h4-L>Ihzz20cA3+oSWG2eS$DCw>7jkM0^~P(ZTqdnEq?xrOHs
zh>ZDzD@fHmx=TPhP=b|(4-}%!hnRdU50ox+Y(CD|?0SL`v?|Q2n?)NOoEo52V>`UM
zU9>qsd>#<r_W)>(5`1YFzd$HR;C33n-sLJb{+8topd(~8AYECI_6?wuD0hInte^M=
zd^e==>zyca|HLm4y5kdn9B37oVCV+WVa1>LBSGg3gBvL@<)AWy0d!1s8o$QjG=7cK
zY5d`!u}+3h{E@yJUfY7qKJbY@&UFXWs>lPM_#;q^fGUqW0b16T#vcxr{KOyWy1}`Z
z#ol8ED580efJm1k93W$NfFuum;*U824F^FU4HwW^#Nn6H`1MY?beEoR;dlMu!teE=
z+x3K{>l*$((DHj%P#kXi_y50VuP=uqI5V(-GXrSe1agk>ON)R1|GRXTu5oOB$LQMn
zt**{9`5b8FTDR+(<`+ypz33Wf9Ou5t??B6}{CaJ)J-gXKG0XyrVb=p5$*yZWx>*i`
zgdmZA0=8tXRJckIIRU%`o#h6Kh7-^@69mPDfa?J$S0Ho;=p0^fjK_kaDi(BXZ|n|G
zgnr_WJd8KGV5uyPKl}tZY9KLw0u<v1Krs%AE8H;-JMS8DI&Gxu4(DDLGb}L<Iz-g<
z1SrNK!2pWz?$R|dFIO>@ut9R6OXmlVW{gF$$XVONqqBAgXw7hE=n==xGoTg29?6G1
zdS#A#bX$9L{sV^!m;gC{LbvOY<`;~eu5-FWkGN<)0+$#3o`*VJS6I3psmt|AuASp~
z@Hw+%=MmrJFP;aVG5d7qZt!LN>e=ne;KTUCqto?-4|C}bk8WenZac8C9^Ij!0A}*&
zwgxEz$Djo)*LZaP^6WN)1q)a`=p<1W%hV(F^UxjW(e1k66TcwntaRTApZFu887TsE
z;P^rQR?zSUf7dq#28Qm?6_%k#`1@WlFfbrod<Bw91YKA7CcgnCGoS9#9lnh3klYFi
zf)hTV;kwWbUd$|7pZEnp#TqP!f>xk{JQHyNl!B_5O6))JM}Q9a73A>fwgwd@pmTk}
z&cfm`aGLzY4=xZ~SAeWq0rM+=f9C)H|3L~?!0L-CrV>4fhXp`o3n=@$!X-h6yN4fm
z%?b`MkM2-VurPt+%A@&+2io#WwAAn$bd+Z2HOJ1gptRuA>AS(P*X@6&>l%;bLq5GK
z$344kR4~%T442MNE}E~vR)CYk4oAyl{C%JqVQ|(2FF1BR;nJPE!!!9Pc>QsA=m}3|
z5q1yo@?aZg&u$aQ;$hIDSWqm24&QXOd{=)SNfX%aZWCtDZWeY(x)I<3or((!QnZ9}
zlo4dWVX!Xblne<sP(q1>MxB7~3{Wx8-zLe(z~EwCx}z?;+jR#hu_ou90Hp=5Zcvc}
zcVei(CntVE7A;T(<YHZVqW-#1a_$b0LLbIg9-W~lK<YiZOF?xB6C@TuCDg$O%-+l_
z`k-~h5a&lQfxO!7x}*63W2fs0N6TY%iAVvq!v|`;M|Y?I#N-1IlS4Onbb?O(hxokP
z6}&bXVo|s24kSxJg$>vexKmd{!s8dzd0-Pz0uCaNl=ETX1&&^{6a;QpArnaJK0(3`
z{jjDjtjWqi>bNX1W3o!1_9tviky#de*cxap9;lxWa>i}Ypb1PKd0pUP$hts~TG*K%
ze4qv_Ol>sM8p3yAV;MkWXrO*J$Xq96wMc6xnRS^Ui~K-}$X&MwS(*nukS)2m1hi_8
zj>DY_(6Ku7Q5#r<`a;K?Kwbo4P#*|H!!W2{g)Rn?gPqm30G#<4z&D(Nq7T#%2g$?6
zx<GS|AaPLCfy7~W0-C)radf*t@dPrHT>Y@IPSBVW%nlF@vmX>bAU+I(>;kc2G-!Pe
z$o=U0H$dHwK0X2C!)VZ%Od$Q}W38}teuTzaL49kGevq4x@jIyf$YLNix?0fvuplu|
z5(mk{@CT@VSf3Im4)ZsR4?4>RJx)M!7N8C~0|NuBZwnef02v9>4~u`$cmR6bf%I<x
z4MafCWCQVG801zM8$^Tn=xzszuK*29fX@7bN`gv2P#+!Levq56+0OuS81(Eaka;i+
zvJb|_M}yR{47zo8FyEuPoS6X>3aDa`b#u_nizEfg@7UJCLGlSJ#yU92x;gaHg@FMy
zw+}K0mJX1tz<P!oX#E*z%n+syTo*7fFo4FQK;keyxDH@oU;xz#usjCS1EN9e;joE^
z;~0C4g^oS`g(h-vy}`i10IEl@nNy6z98kpwawj)v!hwN-0bHj**Ue!w2QgNeS&~|m
zSdv)=8n4vzaW(+0yfOq4$Sbb`gNpNW7y^UR5|c|9un%Q|mo7n$74pqb$xO>kO>qwf
z9}omNSP8_0AA`i;oRe5woSB@M15pDRwPav`j~#)s6)4rf#=?Gr5<GO?9h7xp;^H8M
z&@nYo83_|t!y%5m*BjZKP$c!pV}-F$aS#O>3WAwm2oiw02UPaJ#3v((Bbz@1Dh`Tf
zWb<MB06@~n>S6bYg2a){e+4Z}K;p>Z^9xBF*&I%gg;>G|wx=5;jT~-HAOWbqkj-(2
zii0R*_xpncpz4vsCmu;0+5N3Z;>hMBuUkSke-aM$^N_@m&A*EzjvPLE(4qz;jXdUS
zj3kb1Zx@m{vijvvaZvap+q)G>9NAyHpyD8VL1i8+ot#G!M>hWok~p$^UP8q|_JZmf
zm^o(9q7P&~vN=Ieadh<!NaD!u??VztcK>9kILLft_aB6cgUm+`=X*HBUqi(~<{<ma
z4O(7-#F5?ajU<k&eio8Avii$VagckE{dEsX9NAxwq2eHWk^S`pNgUbyzewW9?%{=2
zc_4d{<HZ&#4l*CvoI)gVP~8NJ$FopzkU7Ziyag2pnS<<3eo&xe$#>#N;>hO6K*iC`
z(LfSMcBd|qII@2s^)O<+8mP_#VOV<}<bDu_)t5OSNvJzP;;?!Sw5t^)1rh^cSiJ?G
zLd#7o$v{2}0>_xXktykCLBRHAf$WF48!@I2x>l_7$H5=+ores6X&!35RL=$L*S?m3
zvA~PlKx6gI2N*36)qZXLUnu|^wF3>Kg9cq81K=>xH2#o-5D{?y8p4DP!<2JWv4O^o
zUQ2%B4+M=lo~&Xj;RGuLIR{}Hh6c#s%t_G1DabQm4C^~HFo5=B|Ns9VdT#*(P5R8B
zwG{AmK1^QV{wio~52$?vat^3&fy+a-M}qgq!PYT>>I}F%(mE&DIwny62`--lHXf`W
zwvGurRu1cDL)R&hzWxW%J+?sJ(>BQZ%HT0|P@qCFdb<wPb_V5ds5G3afR-UQpdz61
z5!9T53KLux1RC^&YDJ;Y?ZVYpCRRTvu0iesrx|3MK!RA>y)gH~Xk2||*j=&c;RWNv
zXk2||*nB0qeP#5$R4}hWy#?bk;OZ;G)^mY}&fuyUF!mhb>MI98%W}~A5Ri6I{DXvG
z;RdRQK;ob-DYO|0;=(ZpsDP%RuM9g%TL5YfsGbC2bo)VW!e+k!R3YrVVVJ|v!w)8o
zPJ`49<-Rf~UO;_Wbbo=`1K9SYfyx1pdT6krXv4Nn3RI_q`i?M#;4&S0Hw;J|#)sug
z&>3_fanQOYkREUu&cMI`+KURyOCWI=2CXZ=CJxGPAah`C1W^75>A}~B2B`<#c?(hp
zF8di67~-*%4Ip_$9~a!1K<p`kc5j0M^2<|;JRzHIf?O*KaP(|bD+(AO9ou5ip}7!k
zK@0`?(1Wfa;SFgMfzmLnO$Qm9z!Zm_+YHJM$m&631R!^V#F5)>X&^yp9}bijVCKWt
zUx3tu;s7SzkE9;C?FKpz9VCUWehWwtYCdus5R@)JQXusp3}S;Yq|F5J7f2kIK44>U
zATbbzr4P{91V|r941{6vjlRwV7O(o2(53N^WgQBH)^(UzfL3>a6cfLeJ^|XE2e}L4
z9|s2bTKaBxj{oqRx!pPb2f*%*14#s+$Vfn%avoqA1sKPT<9~n#jN`=dKfnOS0hwk2
z<A7uwkU1VO4#<E2WKIM!Cjpt0fy^m@aX|J|AaTG~1tRl7XQ&|aLHC#;^Fa-CWIiae
zV0<@@|KKYGk@=v-e#m@KWd-BAbNrtG8t8@aq4#@HdeI}+lTHTyt~^`^$PBE@Xwvov
zwIkqdb9Y4B9M<*+)$wq7EO(RPl83eZammBl{<!2}dl+!Z!`AKLl83cdammB>FyNAh
z?P0(r4_n`lOTGrwV1eEvgf0AF>*R6i-$OwE9Rl)y2*}HT3UOGS3+sD9@8bgZ{Rqg%
z5Rk7SAP+k~9o(kCV*efj`tJ~shwW9xWxfowk%~<ow6@X)Di7WZ2y>qo>V0IOx#AS4
zI`AH7m^$P$UZCf;fYeSPQZ4CyUph_(GZ5bUavd5spn4gE(fgR7widb=NZkU^<QoG6
z1E`t-@j>k;P%?(Kfnj|dT=T)OJrf|k$Qa!&Tzy<(^@G~DAa|k9$HMdz>SN;C`{D*o
zAINS8u|al$Xcz{y)j(os!OQ@=LvII~Ik519>BqJA1$JgLY(4`N{-7onOg}9ALG4#G
zD<DRL6f-a|kh}LK0c0WQd<UrEp!P7xZV(1p0J9&|-i9gx3Bxf5bUt@7C~)AS!*A~k
zXdMiw4+ZlgxDJQzeF2HX_~5#Qfq?;ZPB=&$ww4?w4mxuhBo4|?AhTfNpi5Ih;-Eb<
z$l{<r9Y`F~)@ERUsRxZ&fW$#}!y&5&-NOMAj{*t8>Ouwv2G|`?>1g7h^KwAyVSOT)
z`CZWY)kZY+lcC~$XyTx<7-Y_DH1UN{^`M2HASsynYoX#>L4ru`1T}v_=78>$0!hKt
zgNABB;^#qvusRfUR}a*j`)J}IK1lt0H1TIp_5abtVdsN@_NaiQz;zS@1H*5qdU<I2
zhKYmrr-RJbM-vx>p3`BECJxdMQtyu@t_M{g4;2U3eV{uzaqN|e!XXaQ4>Er-)ErQJ
zfc#O6Lwyz0UR!8^22+pd`$I1;(n|(SK!fj`fiu8&#(;RxJ8VGAV9>=xAO_lvL?9uw
ztB62Ch#76r4K<((i9n*Di-bV5OJ*5}g3NCF#fL#J@A1q73&SoU0x5ysJ_KSyZ}I^#
z!=ab+AhSUi^?>-knRy@zdan<N=>xtK2*iS3B?Mx6=9Pi2EdntS_Z5M7NEa1>xX>U#
zx?cy!Xb5=o5y-Qkt9_7_L%03Fq`-lTEDwrChDK<-g6dUJkqsNOKt6v2`J9XENa{i3
zDKPclk;Fk|JWL#R9s<aG<a04#^YtKcWOF7$(+x-*R5!rPS&Af%Y!0zwBCv84eM|&a
zj-ro=z{*ijHyadCAnQRGR*u5jH6Sq%hLxk}dv9RnDEi(TSUCzC%LbVN!mx4_eeVsd
z97W%I11m>idt^aofH15ah25D95(8maISRWg86*b6uyPc3M>0qZgkj|<>~3U`7zo44
zQP`cxATbbzm7@+I4$?d$sN4jFBkY_;kTeLx%2C)HAV>^^VdW^S{Q?pLVOTi|JC6}0
z2Ew3n5M=%X5C_R#SUCzi(hMXG!mx5w0owQgiGeVz9Cbhw2bF^$^E1%IVddf!G;vt@
zr*CM8GI&OC?99Z}3^a14pg{cC*$!x14dgyZIz-H$f{rFn2339xKHV&bJS`8D2>Eo2
z9Q5mDIS4+ASmvN_rvT_cThOuOcV1igbh8}y=nY`>u)J2M=Fxcpw55j!v^Bx!;t$X+
zql2(rM$jXvkJaDx=)CZn6JkZL-+!OZQ$Cg_YPS2fo~-kMoJH^1dBLOG<T^+@=&XE}
zYoGW9SuT3CUaC{|={x~CgZ&tI8xv@$J?O;e81ObGs09~F?}3iWF5TtP&HjlWbd-7=
z1L!Dq$k<gd$P^<-@FBWjVkamN{JL50gFG(a(Rl-Q#5~A<pJ7ML-;0K8KUrsrq}{Ju
z<i1}w&pnW_A|9PLe7ji=`F27s3GhH1Qh&Pi8q@@kLJP<yGl*xsx_OR+?3RLh?I7%U
zd8mIrltPb}zfgJw;s}sxJ#hHJW~V)%NBMg&iyZ&NFTeynJ|49Bj1lCI`w)%Di~J=#
zJO6lemLBlzyoPj^I`l+%AIO339?i7}80xKG`+9b>+yU*$VA1gD{12Wy2TyLpj(LB8
zWCCb~IrOOZ19c*xqv9X=bVHWUgTwpvW@N=jB+&LDAdWa8;beAXe_42T{`c(s;?Wtp
z1ANeV>m~j^&^;#}$6dii7Wjm2=uQOCk=CBwGS|V!cz1?w@aZmH;n{iB$MR9FA=taG
z!QKSz!Z-lte}?h}K-<amPWbY>fAwrW%IItPrvAJS=oI~K*9Cr^B?o?Z^_qY#5e1z@
zegJeLwlQdv8ECt+k9Fya5?yfQd4eLoSH#ex+sdcg^@LY952HsXmuI)gaj#ArNYq)o
z?kK$hkK}I9Zl5?FW*^Jc4YkssQ~N<V<S=L*11N(W2IWdm%OmwK!KbcUhVH0K03XnD
z&9hqs<UH_}MiJ0vL(n7vLlskrCfF!t570g_jZ>faBY6&kj64L(v)~&JKt?|BXg<j3
zVd=Z0ely5kk51PWFE{=B{~vK$Jm?Amj6FtRe}c}cMnACIqciq_PiN{2pU&J5KAojM
zJeuDqfUhn13`*Rr9<BfDIUK>mfUk=@dTqdA2@ZSEG3lL0Ku2&#K~L!R=)CXAzy2@M
z3EgZUX%3I(-;DJ_uZ?{=zk_u`jZ+5i&p;f}?a9oe;@Qb_3>0{v%@vk6N?-bPKJe(4
zQSs?cQQ`3E&QTHY=`K-`IC)sr&<M-<*B|U@v6lf{|G~zTm~MdwXTf80pz?}=fdSM{
zgO4q`H8Yn$&sc`7%K+c~3)An`%v=tYhmFlTgUo@+*MW^kS(jmnEDtgqI-dxR6b1%{
z#mMqVdmfnj5N3hHodLR*7iJgIdC;(PHb8xSgkK=~L1SjHebqBTZAF-VB)gbfAbT-D
z;R3ol7vv;x`wXTQdR{YVOs@oF1_J{Fcnt<jKD>{)m!*fbnT=^4*j94)XcU(e8R{7#
zuRO6}(4*hD9H>nT@*Z@F9w->V7*e-0FepIR9)bm-^Mo)qh{iQ0cLF-50y`rN)FuYm
z18T2>^ufktKy6=;IJ8Lvk^<udG<(5<SnS6&CP%D(*q9t>{u*Wnh=%Ehxfdh`!XURI
z)1YtyiNWT_L2@9R0d+sDuMH9dVVHR^8q{V7=|>+Etbpn#G$sf-BNe0{WHvHh2Gx%&
z24bVD&4%vL0kua#@-Vytsvj1AFmaf>VSLd1G^qas<HP6#sK;UX6cqoUJ{C+rEdFtg
z2|7UAnWZoTp)|VtL40(#gOpl;3kC*;3s6bW7z_xb+YfRRdfEf&hm8rs`d%P05C+)?
zq6uM;x}m)81hT~j^FDe|c?nuyg6@A%KN;J46p%V>>rO!V9yHbik_TaModvz?03;6M
zgX<~=1_sdGejst!eRSYD3R;(e#9@6^aNPtw!x$tE>obAtB+&U-(6KPsJQ%nxf{r~y
zlPt(Na11&R2Aeo&`3E-fI;i>e&~yjci^9OrhBV#>HypH;7^;3HR6R7=GQiF@-U1Z|
z*JIGLjj`DaI==+uUtefu1lMH@3=E*Dd2H&pL+yo~wFs`;Kn{a1!Yu}k>446Xfo=|g
zE}Q{x6M-HJ6AU^ZrV4bVF6@9Akb3ahGoS-tKxgK{54pj<aRhepGWZ~zG>~!NAto>Z
zJ@E!~#thUx=oz^nvtg&tfE<~h4AKZW3U@0g<3ao6pu7zm)A<V(2L%sk92_Rj0}Wpg
zg*+yu0}_DNH=rgjOuaplII=l8IK=yr#6fuqX3jhu;_GmT3quPjko!T$%)`u4#vzV;
z4>WQ(Anzdor8Ss2$Y;=k@;FR<KFC67I3SB3#36nYNgUa~pmqi*d4aqK!XP#XgX&KZ
z4H5%kSiVOeJA>tW^szHozDFNBgXMcz`3*7~gkkv}{mfKYenmes6_zj2&rF5o%Lr(?
z0+|iMu>4nnCJxJI`i92lkTDksNob75+|Uww&<*ipG#@|-85F2k&aHuWl3V|mxO;Th
zbATJ#9^KWD^E*Adt0iC}(Cf*%t2JOEkjwczx~nZ9BAxdkbn_7o=nw^>JKgvO)MxhS
zES=%e8M?ru)Axi+Cuo<sV5<l0=CbZuhaI4G>K?8C`CI(h7#O<QJ6m1A*MqrpKyH-F
z7w`bx=G5uB0&)+Z>jt0hbPb>Gas!X<cninl;8uc1x2px@%B61C1I;fOn}0wq$K!W$
zJ<#cTz@xi#fd{lF2U|s7Dp@7&(G5CBq82nL1a9nr{qouYaz9w<0*~(68UI5SS`U=)
zwjSW`>}6$OcsY%gfdMR!ymubWgyz}<%=}XhHP;?s<ezeY^Fs3j#?IE5|NsA&XzT<f
z3ZKqbP@6mchiW)Bvop3HC{YAiVF<Fqk(GhLr}LdhckK??mIJWEJeq4I82G0i;NNzj
zvo+`c|NpHAN`ydefhdN=+G`Pz(LSB;QMH0R3Jriy{DQ5ZtJlD0f;bl7@OCu-og)D5
zbARF&=mkX)_&kH=?JNuo;8101{=vvU4Pt!=NKbRE0Ng#GE4?7@Ky!3==?V;=H17q)
zF#~@eX#d!8SMW}FP!u*ZFhVb`D-rVOyyekdD&Wywy8`Ue*CHOB_dq-pk2UWFxrCv_
z+NblIN9TPMxt*Zg=+Su#B-LGu6x4j6pgzXTz%b$ERc26Fe}Whdjck69H0YMuv<WYl
zGczzW?*+vjLy0;#@~|1G0Mb#)%)s!nm6?ITqw}6m=XVsRH17q)7ek4lPbbtaXlx0C
z9Eav^Xas_N4IVv$2tWoRKu3Upj+6l%cmf(nf*cJ58nXf4*@YVISORkc*jQL#f)1BJ
zq<mOlTKRN7!yTB<JWv7?oHZ($7#Lo5GJ(SK5lUDJgF+^R33NV^ybA-v%Wx*F;fZD@
zI6PHBW|}fV!}B?=@Pyij2u}>B`*c2oo&O68&J&;b4}ty60t(9$Y5XCe{12+(8PfPe
z52f*kfd+(KPk;`$K<JAD4W9|Ro`57v(BVxdpotNB><{RS6pzk(@bR|J>!6)G;Lrx0
zx&k`31#BxQ$AK;{1mCju479_?qq`P09>50{zXxjt6ChVNcyvQ@C~D>et=oho4~Tk@
z>EOEp!O0$^7GxLHrC|G^CJKOWbNs{~2fj@b<U&xY0{I$r@8><xFfw`}((F2gvD<Zu
zCAfg*@7u`006HfJd<`YYT2Ptt((KRw|Bm1lXt1;=01g;XPVT%8wi}kpOkw#GTsotq
zDYn)Fm71?@z!GSg!?F1fBcu#`t+)f!(s(TeUbOOBc*np0|Np<{*#XM+uUU8e1(i^Z
zM?h5&(kL-x91j#Opi(c5U(dIJzdaD7@p!05=TjWZHv=3&!`+`jr(Hb;-2w?MNj*D{
zdbA$kZ#fSZgVcncoyR~2ObhvRLLvk_Z2fW*ii+bP6;d!2upvf>$_^xzprejJN|n%+
zqTCz!G89$I0gx7LTv|N3YayprL97EERs%l=ywi0DNUsS&y&m1Qkh88JhJbE2K{8|m
z$PioN4FOdT;FJL|4b)HC4{8*G#UPgxmfDeF94KFb&3J9*(y8FnnZe=HSs>ukSs?+Q
zVgTK1*zJ12qtjW#quX_dN2jv^WOUlu;x#MSDUjp9vD~%@ZCSx6*q*x&;KS=cM+n1Y
zs5Q0=YCD74-XL>9`yJrpogU51OhMq$NAQ_4pkM>3*$W!XbL10fV{+zYD?mDbCYOzi
zhn>R_)b0n3krsdygVy<gG7U^U(i%i&ZYGG~<c@6)^7CihK^-G#7=S4BezG*Q-vg3E
z#wS37R-iLtq3vwY*cPZ|hd#Ch8sh+oL%V2jBRbIRg-L)4G#DF1;~Lu}RzGZP6MbwF
zrXMy22eJ!<VeW^~xc1a7fVv+&ykLA74cg-a@<006ChYtgLSvh_&Y!slwIAeWWDK$k
znU8Bv-2<q8&^8BT^)P?K#6auQ(BlLocL9_z7#J8pdz(OfQ2c|8gz1NcD=3+u$2~}W
z1vK5j)>(kWKp5TqAU-H-g5;2K0d#B~wq5}=t_c!Cw;$vtZ1xL)9LB)F0NeWmGaF<d
zjE#>5sT;~;o1lGB*v2p+@y3d=w-U0~4D<XM(48=(jCq3Y-T{r#!NL|?mNPIgfbuCU
z&%oqBv^$P5L(qCkZ0bRK$Ux@9%mvp23=9lOILyh#Azp?<9JJ07o4uejm9dF~&H~0J
z4$5~Rcglc!?+gsu&_oUz!^EZ@w9XQnIAWb&aY0gYda+(I=;#`ZLu`UUlAvR>aV%={
ziw}b?fP);a4OSnVpHr3!UK@uv!3MsR4`tyWc)cHFiy+9P%rXYB0ltv&NZ5)v2IxQ~
zC|)6ZHyIc}Wedn(u(3AKxzHeaba7B!jZGYsZm@}i)`?>ihmDP+n-40dv8e~0Sq~Ej
z6&Wyh{s##{>qbysf{BCfn*&LKq7zj1z{I6N1qO6X7F6`X#9`~vK<+^vOASO)4{EEx
z)W;%;Bb$>16$hCE>dC>>!|oIYxd&N2xF-*FKeD~|kjw$a5zL(TP;qo~V0R9K>_s*Q
zwtfvHjvPL`AOoQGB9Dz`Ld8K8vODuY0#NnH=GQ^RK@_t3W{?0D_1lreL1i4wUnijA
zAPU)>vmgO1<~)IlgD7P6uzR9F{zZ0YKD6>dS6>1ZM_1p2B#s>ZbD-kr<}8GYqnoo9
zNgO%+_u&w~0u=|D530*y;qweh9NE9Gq2eHWk<%LsNB|mc$l)vs6$hD*Y>pIE97G|9
z8|=O;boFK+g;4X6)$fOjqpLpx6$eqs>hFLApynWl^Bbr*x;Y=A;vfpyoIfA|s5!{t
z%n2T9fb0<ll>@&)gS`L$|CdG*M-B%Qs5r<tWOE=VS3}B4<Zw=dsz-Nc5mX#x4zl`s
zs5nSHa{SIk5=VB=BB(gJIct%`k=?loNgO#}-$fEfR{tL=4ss8&y)2-98#FwT-ERUF
zM^|qN6-Rd`?3^c%IC47N30047&OWF(NIi1=dO_=FkT~+3QydQQJS1`CdaVIT9NC-+
zNaD!qXW$TDg(Qw_&Tb@eWOEMV5I>DW{4SC>via|j#F5SahC}=x4smv91058e$mU2Q
zi6h&qg(Qxw-Ux@d6%KJ{9O6DW#N&{}k=>JzB#!K!avb9IIK(?}h)={JJ`0EVIwWyW
zmkd^J??VztcIPo1;^%OPU&kT-0EhTX9O9pFh=ay;VC^MPo&>Q$7`A@~BnHB;_B^b=
z2oeKfSo>Mu5Vnq+xH&}&LlfvaapLC`CxAMbAjcuiDe^LKf$zdVO!_sy;Q%egZ2ezS
z<kD^L(_Jp$+WNmj6*BJXnS8{vSLT>Uw>5ZN&f_?^8U-Cu?rQnG_91K})U&%5GMw+(
zT??6cbnGo>^z5#MOjUYz*Fq*HJ-cfm^O3N@K@ZS0q+^U@tYe&GJo>8T#y6nJEsxI9
z2_BuH4W6B6TsjZCboOR|k3|=31&xz;hYBF3BZD}=(~+)Ae886?`U`k;`tE?vMb7Z(
z_E+%e>;=twd33vLcyzV~fX17<>kT|QYfpG|`vx2bHyJ&;U7;&YTQ7mEX8;{-4jw@7
zb^Z^ZrF6d0>--OCb`3OH<k4KK0iRt159xQ8HegI*N>qt?beEp+=|r6$d2J6m9NYt>
zqq}y(|4;+i9A*qV1H;Q=cJLhL38eGC(G6(+4Vt=a{tcSPgic_V{Qv*ov)c?bfQ&X5
z1Cn7V(FQlFLH0saN&FAB@aPT=Xl8;>Z$4#XV0ihC4P<-i3D0gj6mvY9YZc%gPJvEu
zdUk{T=K+iI*CG(ZK~py1Iux9cJiG1C&yxqwF?)3TI)GO1gG2rkzW_Lr)A;qklKjmD
zV3+I#MIz_`Hn343RiL>~(3}hSx`mG8tq%YHgF8Hs%SpOjmo&d%^y$?B-*f><*e|`o
z)53y2ohqQU*Bm~UFG@c&A7-??U(5Mgyt{UZPq*ui*8g>HJdzK4_VOI?==|{d0#X2g
zE_djFd7-&>2}3;(bjA5g&~|u;#m8O2OBrB+26EvFpU$<Qi40IOYi3|{>CQa>I`qDI
zFDSt<ln8rw+t`6(#G|_ul967ELWD|D0}wVp>E@Yy6p}-YG2$6AUDF+U!lN4`i5k7&
zSwJ?>>@`0t0|V@U{!Z5op1m?`9^JyAMCt)gih`h7!HX;m4E*vA3@@LsfaV0z6A`j4
zz5&gQ@I<tLg@NJaN)|{Wf?SG#ND0k*K`Dm;G%pUb6H-=y=EXtIM)x-;`!khV`hss{
z*a4aV@L^_Q^62gb=jToy6`yY36WzW`Tp)Ayup+AUK#AT<Sr!HcG>zC)^0$6rW?<;{
zJ>bzDIs-IW=K`G@YCTZG1)jWm3F>En=HOO%bo<T#?M`v2<N(Jn=w6l%Xu=c(Eo5*7
zC1~)x8>qla<JWUNQ0xu5#-bZkIE8NT=w=awrw}LpI2H?7vhr*`&f#L2yQE&&we!7C
zH#pru6WMDim(JV+FSq^u{~tvTRD^+?)#1?%F5f^a1YBGH*C~K^aez0!cy!MNhg9+f
zk4~P;%?B7AEsxiJgoPj6!~em40DBnJ7kK%ViGcxRQX+Vw<#;P75rgU$m(JP^KHYmk
zM*4KFHTeJkKjeBK&u$wz(B>c(d5`X?pbU#tc7crsC3}zN!yq4SsK4ma4KfC-zqxh=
z1AogT22dJ<<_ee*-K82H@JUHfnafb3kCe){g6-+9MNR3dptK7*1LGxVf*O*p!9@rx
z)WOd2=nicF$zhug2A4)JKQl5gboYYRL0I;J3K;$t&|nBCOk7+#L7ShziQ1!kD<~{L
z$-*P~Lh}nokK`L32Ooo`u6ZOuleC}s1$nM{^o9ui|HL23a<TP5>GhYZKof$H7=tW|
zIqty1!0^EybX`x!W<~~vmvccXk}r7lid+Q8?<f99&<zhv(D-`-76f|)lnOf_<*P^c
zRFGRhTZF(;Ah$a12Bi_7&fE<?-D^RzpyE0CFz9*?&u$y=rBN=d3?7}IU;zQv*?gGM
z(ei%nWzfwo&EVpdu^Su+mf!%Xkp!oTeV_yZDh&BMcm4YR|K*uq|Nnz$cVT5TIQ8?l
ztt2vTH3-J7T<d{Km)8NHi1X+sF;YR{@LF*PDAry}L1w0fcYxZXuX(_8(XUy-6Vx7!
zM?mq9G$jqqE1-G`oZG=64pPGam3bNT4{~!0q9B0B2sB#?Fo47L<@$gB|Kpj*PH^n}
z>)H7YG>@$Ux_PVDm9f)xPv>#4X3(}A@N_mOXbnrU>mE=fdUU!j@IWXy0GpB)?=IZ~
zT2%nn39SP`hj(};U-jq=-Qd}I9dw5eI2t{Y4}+>8pI((ip2t~0yD1o8^Vgo8EGnSM
zVxQLAbs9e1sR!Vh9deNiOg$)bdo~~8aJ0Nz^9WQifvv^j1kg$oaN@dK+X0&X^*H#P
z1+3Py6Flke32~}t@)3}eJbGmgVQq^(t-XuSmUoPxg)WfwI3A$oWvvHF17UumiVZ!W
z{MlW*0PJ>;PFL`hdK7%xovL<$iXB+B2AyqB28A8OZrDseRjmXK=kK>*V1T4rPw<wk
z(j@p2g6>+#DkV(+f{O&t<YPEv?---2<yRcB_uA5>6ExMo!n4ywg#%=SXJ?3tfNy7w
z3TQ>Z0g$i)XeAX$Si`e3M#bPY8zefxd%9w8_;jZ}@afKd;nQ9E!Kb_S2kOzgpyG-F
zX)S=ev$K_ghPz*=rh<u{iJrNFk%6I+fw7^nf<{nkih@UC2}E4i&`^_sfdMq`0y2WJ
zDu{uxLV!`4hn-^rBLf3y>>oDw4?f=jHcyYVmx-wrGEEPfFNV!YegpM6VQP`@plRbk
zSpxt&7c>{t8H20uXYOO^W$j^WW@q+gh8RxS8UVU&Xae=AL4`4NNDCCCU<_Lu@fS1z
z2o`}5pz#3+3qpd%5kTWJ5FUaQ01cFa?%4$mXfiM`faWDY_JD#JqzW|72BLAz`8$9n
zX+a9mFuGl!I0TsqiVkF@#Oepl34z>&KIae94|6BXY>-_bHjIYN`J>O-M?l?AXwDuq
zX9=<&WF|6hgX%{X1F_N7g7zSS#6aU4AbA+>fa-^>^M;AT+zsP{=0MTI6eQOHom_+E
z4^aGp^nx%*9u_X3c`o#@2gz$d$3H;(oj`mT2Duf+2GJlsy4ykG7eEFxFfbTE4F@Gd
z5JtBjl)RuyK-v%(G$0JR*BxX5LKJq?1Cj`KCP>@B&Dlc-MA4kaj4{*BzyL|Npmr3h
zV$ircXwDuMUNBim*@!te50Ynw9X<@=Krv{a5@_xj%4GnTsh~AbIOe=T=e44j5g@&8
zIMjpEFE;g{vo=8X!t4W=&kPI<ptFv!sjtOhK4^U$Hua!0jj)M>&fvf%4m#5an>gs6
zUTor^^`6+o_u_Ep2^`{}Gdr-E16oChP5c&gpAziOEO0%=z`y`H0|}dY(0$(6#2Im%
zA%wh!AU(GTa|uCkL3(Zxp49{3txBMY|J34=qWntaLvIkG3}92pT~h!)y9c}$A+rqS
z@*JeQcA(eufG^^KT-XD)5^WU%vg@D=65tCIK&hI60d%$(hy^M`K}8;@4+EOM^8*P&
z=cbUwLFFw-3SB*H{|>r%E=V!d9MG|SF!MocPC!y1^`Q8JiNh{1Ko@TZDTbPZ?4ANp
zK?fBFl_fB9koV(&$`F`%H&i{S%m$UcFmX`Z3uFbzUgWvEgGlO;=kCrRi6fhH5h@Nc
z2h_%cnGZX|2;E-T`I{j1$o9haouR9D0SQ3;i>w~DrT}CPsOo^(TLo1QqLAGQ+y4Yo
zk8DmCNFmgG<nTn^*9K}D!OTB}q#jge!^Dx#xIwnp7h2h&+Y4JG05T3){YoVDpgJ37
z{%)u^y7~i9adh+VL&ee6KY@y)t8W1bK-aJ!yQdQ>4x*65Z4pQS8g9tpzZoiyZZCMu
z0ID9@9OSuo(4J11e_?a!Amfnd=**y1CrBLBmW8QLMiK|rnJ{tCjwVn#M|aN>B=yMd
zQHM6HLFR+j#lg&}g^Ht_(*zX<sYg!#usei6;>hvH18pjxn<EGn2dPJPk0MkYUA-<;
z9HbuE-bko8y82sCagciC@cD`)j%+V%ZWi4feNf>7jYnjA=OT$C`}ZMK9NnB}P;roZ
zknM%F8_?A=ff6MadvlP)k^R+<B#vzU5hQU?lNlDjPm#nyeJq&xKO}MF^4uI$I6~cn
ztUeq`9J$;s#Ub8^B#vzULL_ly^A913Bb$F4hxl_Oab)v<A&G<9j4=OlgE|gSe<7Q%
zf<xREhqxz_II_L5NaD!;%107Mt{=;h#F5=I0f+cX9O7G%#F5=|0!bV>9Bv|sBis83
zNgUaouaLx%)iZ-SL0H0528Xx?k~p$EZIQ&0!_5~-9N9f#NaD!uiANGgR-cX}j;y``
zhxkk!;!Balk=+k+Gprm2<!ulfgkftlL1G{b>p#HG;sJ?)Fsyy7Z)gsk+gAVsLi>vi
z4NT1;hrkiP7T^LXU_g#TS_{C(zztptfV{sro#g$+`#@fS4n4v)8FyDZz(hP?i~tA&
z|NdjpGGmX<-yWT%3p_iod31vJyt#HB0S&Ql@agoO;nSUqv;jGvi-E!MxGUISpzWxT
z$rHz37Zvzay$iqd0}qf<kiBg1&BQWQQXbvK93I`^nOBslpw~_w-N787eV*O53y`)G
zKj&m%c=??ZG>=)#fiy#c%?!upKg|474uChmO*sUakaz7V(emgHb^zH6oq7jtSJrTB
zc4YufmMVcJsyacIbVDq0@aV3F-!%^jKG2S0NB*hDUHP~DcWwP&A`Eh>M|ZJ<2W$z(
zYf+H-9^KUrD4qft1)Ep|g=PcTJkT~k(1a>%uOfIB1GLL>17s^PAIKrdyM{q?n5_rE
z)`DFJ+VKlE32ZG`2*p~*<~K~>K!9#Tu7NBQu=nULR>0y$aNsCFr+rWY2RvV$!@<Dt
zGLHik1HlSVUn9qmD@Z<+gMp#BwugZqw0{*I;tDuJTpXkcw4MuMV6_5@2Vj8=vktP(
z1?*dF9sq4gtLE_NHb61Nqr2Dw6anah8dwCYCE!aNnynf5`&O_+c5Q;92^4WFj<<qm
z%o!LMj<@<i7dpTu>pt-dg6F|OMt~H9HXXZ8K$Zo~T!OMnGXo<u4j^lEK#|@6x(x3V
zzaV0pGKjOoqdQmts@4L{2O#eTaCmeV3xG}-fY}4zN87v?lwKH0L_E4dDl0fVIzd;^
zL(VN|-U~_$44@+oK*<-P0GIg=IMYM~Xo*S`cwq=A^?-~i;P8OwT=0HoT{ifBW^*=3
z>L}5JxC!if2W*K$4U`>!fmTTT0k0K-nT(dPKnX+~lC5DXpo^hiOF~i<NVozmAA`dK
zVmBz{cX)K81}$V3!=-a6XiD3)^+{;~#JQj#{0Gi(U;>nXL6f);N%+bEs9Yp?vJuJ=
zblu_6T@1Pt(f7nB{>YP`_#=HMfMN|?lEwKRKneQS7FZPvU{ws7-UYb=l;S{#3Ha{#
z#2@Fo0+e`8fYQPz{>X!$_#?pG6R2whz+=Op^afEN08$<ab{Qzmf_b20MZw2UxK02$
z#;5ZWX!A8>r+zCa9fQpREk^s~$ggz-%mYoxu7H(hppb<YWZ^8J6rgvoTobgK2$Yxj
zo1QR&mKcBnn32B~bZ~JuIA>Wh^S7P^OF<H^5F~O-1z>Y-pp_}b4iI-B`~*wRW**(a
z9-xTFl4AK=H-e^W!Nqm82TFj$bRkkMxWp?4ol(#XI@17LqA|eBGY@P@7F>h4gS2?!
zvImr0L6rvBiKvx^2S$P1ycb-+l$L<X(-K{e?%)8ZwOc_eGa$!p!0RvYLW`52LjX>L
z4gu&c4!~A3LJBR=5DUmDph`Hvqw^EoB?xIquor_|6#y$)(1NVm0am4fBOgn=$1^c7
zI5z)b;&0vX2Q()y*b0hoNOl1g6V<TNPtX;VXk8mXY50IgcQ7dZ3qaIWaDdVsn$^Xi
zvKx{e1VDKQl%WLRCkudOEx?%tlF~t`9PCC|kqC+dP<5$+S%YezSOrU0WLBA$pw%PR
z;Mr-cRi+R~9(4OFD2mf2z|$A*`tmsg1H;RgpuLokbWCx5S%FbsHiI)FBRoI$ZH63O
z0E#0)*M^tYKmY%S1tdS{gpO`R?u3Px0Vw@|^B|-pHv@cf3%I3Kss~ExKAqoC0vg;*
z0Uy?aSPlXjS;ANj0&1ipEeC;|p70X190`$31;Hy#A*DEc2@I&%0Tn->B*@=x4LZbN
z1D?en1&BioVnNxt^&5Xn2#A4pngM8>4mK5!{WJs6iBkv_;Dr@9PBZuk%DJ#MdZ+6N
z&|(h)rx_eW)k4x~2B4uzkIsAh5q$`9k2C-sC=T-?Z2g53Y?(2v<c6(@fUgySFIWKg
zV$jYtcniukh_F}z3JY&?jf5}I057q5IT6+D1t7CSC^j3uzz1Rp=m0FFFqr|eB$j%X
zfT}8RnFg^9wA5pN1Z<56bYV&y4XguIJ79ZX`;mA|1o$-QPG<*?ZqOnrXAh5V*BKt2
z&H*GIAA!7P1l;#zfE{s0wR_t@V+)|MKala@`4reX577A$MUdqkpmhhZH4;pqu^O0~
zV5IXS)^MS$9f6%6u@qFY!PFz4AJIycwIhfNng`jP%xa(k98jP_G19OISOhfw4jR7&
zbC3uP&;T$41H%KT2GEcYs0{-h@+EjDa|W8dFr(4!0>vrFOi=W|)PQJW_2XJg0@Dxm
z2FOS-2H6E-z-ZW7641O6NF0V6pzeoyA12HI<HKms*cT{V(AT0&fa)i-76sS&5&NL}
z;TA&~AiJPUFoo;<hyzglpt>8Z5K6%O4dpW6IzNH~wBQTW=7A~%#Xo2m9i|@^uAn6&
z=y3<q5&;b$*nS|87zm@gAH)Y$h9Eg)8~~b_0F|v!Nl^C*G^UAeKgdnk?6&|->@hGf
zyhAn=dX6xf5LPb8T?4lk1v(*x<}z$+Q9w$V89<=`Vj(aj_`tn2gdhV0189B@+Zq))
zuqw<oDxkY=NI5?Ov=$Jwh6HRJ0|NuNEN5U~Fu}3b0(4&+G^xO}fN4;^z$Okl3mTg^
zsGJAc3$qVgKQJ&b;98>sx?UEWIk?V)n1{pt%W#OV!66Q6*kiL7bnZOJ{f(e{je&sy
zTwgITFr30+&Sf0ppw0?5^O4t(l%y46TScPh<7~_jTmY8EvzP>F#R!6lyl4Zw+5~D2
zxywnQ7gIr2l|aoxTPFfqYy!S63)ybyf)NG=(0o5AA%W@}P<X)R#z6Ch*u+8U7MnPz
ze!(V=>--AX+C7lHpt2EWZy?AJ=o}KVdtmn-fz%_5!|swt7l++VjV=x=XF=kix(sG7
z><n3uIH*j3iGP8*2UNU*N)MPgH>lu)t|0(TFT%tHpyD8Nkk<+z-^&C_x-j*ydxJpc
zBbx)e#{gswD2`z2mqE=(SHBu64pNV7?>QuKP*D#v2l>7xWP6_?sYf>FBa%3B`20o^
z2i0{j^Ibs>gvKMNEQN`Kj*SEbDM%XGUf5l-=<aU;DZ~=apd%_l=Af&G-M<OahHSnp
zwDLn&Z;T|496qj4addOMpyKG}fI8wJ_n@m!!lAwhDvqwc94d}(emhhgT|M$S8_4lB
z6RI9$4)U6k(@=4cImqeoC6YLDxUqr^fW{+oyh}sHLFRzkJh1pRK@vwc#}X<IqL9;b
zAV>g9{6;~=K@_t3a*zPjJ;>>53RE2A9%OrGLd8K8a`;$6t9*3zc2IG2^^ieo$oUn>
z=_C)T9^IT`s5rVg{ZMgq^;4kYAoa-p-G(HN9R9nJ#F6veB_wfV_1BTak<~xJA<hqN
zTA{mB1S*d1P8+B=x_U>bIJ){=s5rX%BB(e>J+eEipyKH2k<Yt84!1K<_2}jpAguvH
zPCt%Nadh+DpyD8Nkkb$B91L{ztvJ-bfQqB5e+v~yH=h~WfCq^qr#DfkIJ!AfP;roY
zWOrsl#nIJ+CQCu(6}tLfsCtk%vc0RJ;vjR7%Z<%Q;>h`K2UHwn4syI4K@vw!pC^&T
zk>i~iROv$VJF<E`s5r<y$o3jT#nJ5z#37yn6-PHG7b=c!4)R(n<n%KWsvg~(c~EhX
zImq#{9V(8leh*X}UA+g$lUT}0U#K{``eY<=<amUw%|f@g3Q0Y(JA0wx=;|jy#nJ6O
zha`?1KCpfUx;gBi!~~6BWP5|4;vn@PCaiwh0pdW_gT}#N;%9J(-$4>bZa2O|5=S=Y
zACfq-dNxoc2elVjTmnfP*&IzIab)#|IK(Y+h<hW6Bby(CB#vx;3J&oc9O9)o#Cwp$
zk=KUKMG{B07kModviMpY>bKz#-;YE5B9b_AI6OiUN4EDB4)ISo#DC)uX8{eUV2O7j
zByr^aiwcrBvO7(Y#F5=;i$mNMhqxaOameZMkoF0(`Kd_ik=>bxB#x}U0ZAO${S%SI
zk=4({A-)iY_$nOYn{kLAL=s1K|0yJKWcOUgA^sFe9NAyrki?PA`G-TC4K%ohB|Y%t
z5SPFqu7)Iz>@R&Jab)*c;1GAjAs&h(4jQw9m6NGR;>hOb;t(&zAzp_=yd8)5R3vd^
x|IR}aM|RJ09O4^ri0{N94w^3kwR1rA2nd7NAdG%46Kp&THa-AS3&OB*CIEl!Jg)!%

literal 0
HcmV?d00001

diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMaddNLMEinfo2data.m b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMaddNLMEinfo2data.m
index 5a9fc43..c82ed91 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMaddNLMEinfo2data.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMaddNLMEinfo2data.m	
@@ -6,7 +6,10 @@ function [dataOut] = IQMaddNLMEinfo2data(data,DOSENAMES,OBSNAMES,FLAG_EXPAND_REP
 %
 % Repeated doses, defined by entries in columns INTERVAL and NRDOSES are
 % NOT expanded by default. Expansion can be done by setting input argument 
-% FLAG_EXPAND_REPEATED_DOSES = 1 (default: 0).
+% FLAG_EXPAND_REPEATED_DOSES = 1 (default: 0). Note that NRDOSES codes for
+% ADDITIONAL doses, in the same way (identical) as the ADDL column in
+% NONMEM and MONOLIX. This means that NRDOSES=1 codes for 2 doses, spaced
+% by INTERVAL.
 %
 % The following columns are added (if already present they are overwritten):
 %
@@ -93,6 +96,9 @@ function [dataOut] = IQMaddNLMEinfo2data(data,DOSENAMES,OBSNAMES,FLAG_EXPAND_REP
 %                   INTERVAL and NRDOSES are NOT expanded by default.
 %                   Expansion can be done by setting input argument
 %                   FLAG_EXPAND_REPEATED_DOSES = 1 (default: 0). 
+%                   NOTE THAT NRDOSES has the same meaning as ADDL in
+%                   NONMEM and MONOLIX ... so it is the number of
+%                   ADDITIONAL doses. 
 %
 % [OUTPUT]
 % dataOut:          Dataset with added NLME information.
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormat.m b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormat.m
index 9ed29d7..bf040ae 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormat.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormat.m	
@@ -61,8 +61,11 @@ function [data] = IQMcheckGeneralDataFormat(data,silent)
 %                                                       or the value of other readouts. The values need to be in the units, defined in the UNIT column.
 %                                                       Specific cases:
 %                                                           - For concomitant medications the dose will be given
-%                                                           - For BLOQ values, 0 will be used
 % 										                    - Severity levels for adverse events
+%                                                           - For BLOQ records: any value can be entered that is lower than the actual LLOQ. 
+%                                                             It is not acceptable to set this value to �NaN� or �NA� since then no discrimination 
+%                                                             can be made between �missing� and �<LLOQ�. For PK records on untransformed data �0� 
+%                                                             is suggested. On log transformed data 0 should not be used but log(LLOQ/2) would be acceptable.
 %                                                       Should not be populated if VALUETXT is populated
 % VALUETXT                                  string		Text version of value (if available and useful)
 %                                                       Character value as given in the CRF.
@@ -72,7 +75,9 @@ function [data] = IQMcheckGeneralDataFormat(data,silent)
 % LLOQ               	                    numeric		Lower limit of quantification of event defined by NAME     
 % ROUTE              	                    string		Route of administration (iv, subcut, intramuscular, intraarticular, oral, inhaled, topical, rectal)
 % INTERVAL                                  numeric		Interval of dosing, if single row should define multiple dosings
-% NRDOSES                                   numeric 	Number of doses given with the specified interval, if single row should define multiple dosings
+% NRDOSES                                   numeric 	Number of ADDITIONAL doses given within the specified interval, 
+%                                                       NRDOSES=N codes for a total of N+1 doses with an interval as defined in the 
+%                                                       column "INTERVAL" starting at the time defined in the dose record.
 % COMMENT                                   string 		Additional information for the observation/event
 %                                                       For example:
 %                                                           - For PK: concatenation of DMPK flag to exclude or not the PK from the 
@@ -443,6 +448,21 @@ for k=1:length(check_1),
     end
 end
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Checking NRDOSES and warning if used so that user can check if it was
+% done correctly.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Check if NRDOSES somewhere different from NaN
+NRDOSES = data.NRDOSES(~isnan(data.NRDOSES));
+if ~isempty(NRDOSES),
+    fprintf('\nThe NRDOSES column has been defined in the dataset. Please consider expansion of these dose records to individual dose records when\n');
+    fprintf('generating the task dataset. The function IQMconvertGeneral2TaskDataset allows the definition of a flag to do this expansion automatically.\n');
+    fprintf('The expansion is beneficial since the VPC functions in IQM tools require definition of single dose records. Parameter estimation in NONMEM\n');
+    fprintf('and Monolix will not be affected by your choice. Also note that NRDOSES is equivalent to the ADDL column in NONMEM and MONOLIX and should\n');
+    fprintf('be defined accordingly (NRDOSES=N codes for 1 dose and N additional doses => N+1 total doses).\n');
+end
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Final message
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormatHeader.m b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormatHeader.m
index bef0f50..52cc7a5 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormatHeader.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcheckGeneralDataFormatHeader.m	
@@ -53,8 +53,11 @@ function [data] = IQMcheckGeneralDataFormatHeader(data)
 %                                                       or the value of other readouts. The values need to be in the units, defined in the UNIT column.
 %                                                       Specific cases:
 %                                                           - For concomitant medications the dose will be given
-%                                                           - For BLOQ values, 0 will be used
 % 										                    - Severity levels for adverse events
+%                                                           - For BLOQ records: any value can be entered that is lower than the actual LLOQ. 
+%                                                             It is not acceptable to set this value to �NaN� or �NA� since then no discrimination 
+%                                                             can be made between �missing� and �<LLOQ�. For PK records on untransformed data �0� 
+%                                                             is suggested. On log transformed data 0 should not be used but log(LLOQ/2) would be acceptable.
 %                                                       Should not be populated if VALUETXT is populated
 % VALUETXT                                  string		Text version of value (if available and useful)
 %                                                       Character value as given in the CRF.
@@ -64,7 +67,9 @@ function [data] = IQMcheckGeneralDataFormatHeader(data)
 % LLOQ               	                    numeric		Lower limit of quantification of event defined by NAME     
 % ROUTE              	                    string		Route of administration (iv, subcut, intramuscular, intraarticular, oral, inhaled, topical, rectal)
 % INTERVAL                                  numeric		Interval of dosing, if single row should define multiple dosings
-% NRDOSES                                   numeric 	Number of doses given with the specified interval, if single row should define multiple dosings
+% NRDOSES                                   numeric 	Number of ADDITIONAL doses given within the specified interval, 
+%                                                       NRDOSES=N codes for a total of N+1 doses with an interval as defined in the 
+%                                                       column "INTERVAL" starting at the time defined in the dose record.
 % COMMENT                                   string 		Additional information for the observation/event
 %                                                       For example:
 %                                                           - For PK: concatenation of DMPK flag to exclude or not the PK from the 
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcreateGeneralDataset.m b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcreateGeneralDataset.m
index fc26fd9..3becfc9 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcreateGeneralDataset.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/IQMcreateGeneralDataset.m	
@@ -1 +1 @@
-function [dataGeneral] = IQMcreateGeneralDataset(varargin)
% The IQM Tools' workflow functions assume a general dataset format that is
% independent of modeling activities and tools. This function here allows
% to generate an empty dataset with this structure. Additionally, in this 
% help text here the format of this dataset is defined.
%
% [SYNTAX]
% [data] = IQMcreateGeneralDataset()
% [data] = IQMcreateGeneralDataset(NROWS)
%
% [INPUT]
% NRROWS:	Number of rows in the generated (empty) dataset (default: 1)
%
% [OUTPUT]
% Empty dataset in the general dataset format
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Specification of general dataset format:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COLUMN NAME                               TYPE 		DESCRIPTION
% -------------------------------------------------------------------------
% IXGDF                                     numeric     Column containing numeric indices for each record (1,2,3,4,5, ...) 
%                                                       to allow for matching records in case of postprocessing the general dataset format
% IGNORE                                    string		Reason/comment related to exclusion of the sample/observation from the analysis
% USUBJID                                   string  	Unique subject identifier
% COMPOUND                                  string		Name of the investigational compound 
% STUDY                                     string		Study number
% STUDYDES                                  string		Study description
% PART                                      string		Part of study as defined per protocol (1 if only one part)
% EXTENS                	                numeric 	Extension of the core study (0 if not extension, 1 if extension)   
% CENTER                                    numeric		Center number
% SUBJECT                                   string      Subject identifier (within a center - typically not unique across whole dataset)
% INDNAME                                   string		Indication name   
% TRTNAME               	                string		Name of actual treatment given
% TRTNAMER                                  string 		Name of treatment to which individual was randomized
% VISIT                                     numeric		Visit number
% VISNAME                                   string		Visit name
% BASE                                      numeric		Flag indicating assessments at baseline 
%                                                       (=0 for non-baseline, =1 for first baseline, =2 for second baseline, etc.)
% SCREEN                                    numeric 	Flag indicating assessments at screening
%                                                       (=0 for non-screening, =1 for first screening, =2 for second screening, etc.)
% DATEDAY                                   string		Start date of event ('01-JUL-2015')
% DATETIME                                  string		Start time of event ('09:34')   
% DURATION                                  numeric		Duration of event in same time units as TIMEUNIT
% NT                                        numeric 	Planned time of event. Based on protocol, in the time unit defined in TIMEUNIT column
% TIME                                      numeric 	Actual time of event relative to first administration, in the time unit defined in TIMEUNIT column
% TIMEUNIT                                  string 		Unit of all numerical time definitions in the dataset ('hours','days','weeks','minutes')
% TYPENAME                                  string		Unique type of event
% NAME                                      string 		Unique name for the event 
% VALUE                                     numeric  	Value of the event, defined by NAME. E.g., the given dose, the observed PK concentration, 
%                                                       or the value of other readouts. The values need to be in the units, defined in the UNIT column.
%                                                       Specific cases:
%                                                           - For concomitant medications the dose will be given
%                                                           - For BLOQ values, 0 will be used
% 										                    - Severity levels for adverse events
%                                                       Should not be populated if VALUETXT is populated
% VALUETXT                                  string		Text version of value (if available and useful)
%                                                       Character value as given in the CRF.
%                                                       Should not be populated if VALUE is populated
% UNIT              	                    string		Unit of the value reported in the VALUE column. For same event the same unit has to be used across the dataset.
% ULOQ          		                    numeric		Upper limit of quantification of event defined by NAME     
% LLOQ               	                    numeric		Lower limit of quantification of event defined by NAME     
% ROUTE              	                    string		Route of administration (iv, subcut, intramuscular, intraarticular, oral, inhaled, topical, rectal)
% INTERVAL                                  numeric		Interval of dosing, if single row should define multiple dosings
% NRDOSES                                   numeric 	Number of doses given with the specified interval, if single row should define multiple dosings
% COMMENT                                   string 		Additional information for the observation/event
%                                                       For example:
%                                                           - For PK: concatenation of DMPK flag to exclude or not the PK from the 
%                                                                     DMPK analysis and comment for each sample (e.g., if the sample is 
%                                                                     flagged as 'Excluded' than this word should be a prefix to the comment)
%                                                           - For adverse events concatenation of the seriousness and if the AE is drug related or not
%                                                           - For an imputation, it should mention 'Imputed'.
%
% The general data format might also contain the following columns, which
% are numeric equivalents to some string columns. If not provided, then
% these can be generated automatically by using the command
% IQMconvertGeneral2TaskDataset.
%
% IND:              Numeric indication flag (unique for each entry in INDNAME)
% STUDYN:           Numeric study flag (unique for each entry in STUDY)
% TRT:              Numeric actual treatment flag (unique for each entry in TRTNAME)
% TRTR:             Numeric randomized treatment flag (unique for each entry in TRTNAMER)

% <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>

NROWS = 1;
if nargin==1,
    NROWS = varargin{1};
end

% Create standard dataset structure
dataGeneral                        = table();
% Indices
dataGeneral.IXGDF                  = [1:NROWS]';
% General
dataGeneral.IGNORE                 = cell(NROWS,1); dataGeneral.IGNORE(1:end) = {''};
% Unique subject identifier
dataGeneral.USUBJID                = cell(NROWS,1); dataGeneral.USUBJID(1:end) = {''};
% Study information
dataGeneral.COMPOUND               = cell(NROWS,1); dataGeneral.COMPOUND(1:end) = {''};
dataGeneral.STUDY                  = cell(NROWS,1); dataGeneral.STUDY(1:end) = {''};
dataGeneral.STUDYDES               = cell(NROWS,1); dataGeneral.STUDYDES(1:end) = {''};
dataGeneral.PART                   = cell(NROWS,1); dataGeneral.PART(1:end) = {''};
dataGeneral.EXTENS                 = zeros(NROWS,1);
dataGeneral.CENTER                 = NaN(NROWS,1);
dataGeneral.SUBJECT                = cell(NROWS,1); dataGeneral.SUBJECT(1:end) = {''};
dataGeneral.INDNAME                = cell(NROWS,1); dataGeneral.INDNAME(1:end) = {''};
% Treatment group information
dataGeneral.TRTNAME                = cell(NROWS,1); dataGeneral.TRTNAME(1:end) = {''};
dataGeneral.TRTNAMER               = cell(NROWS,1); dataGeneral.TRTNAMER(1:end) = {''};
% Visit information
dataGeneral.VISIT                  = NaN(NROWS,1);
dataGeneral.VISNAME                = cell(NROWS,1); dataGeneral.VISNAME(1:end) = {''};
dataGeneral.BASE                   = zeros(NROWS,1);
dataGeneral.SCREEN                 = zeros(NROWS,1);
% Event time information
dataGeneral.DATEDAY                = cell(NROWS,1); dataGeneral.DATEDAY(1:end) = {''};
dataGeneral.DATETIME               = cell(NROWS,1); dataGeneral.DATETIME(1:end) = {''};
dataGeneral.DURATION               = zeros(NROWS,1);
dataGeneral.NT                     = NaN(NROWS,1);
dataGeneral.TIME                   = NaN(NROWS,1);
dataGeneral.TIMEUNIT              = cell(NROWS,1); dataGeneral.TIMEUNIT(1:end) = {''};
% Event value information
dataGeneral.TYPENAME              = cell(NROWS,1); dataGeneral.TYPENAME(1:end) = {''};
dataGeneral.NAME                   = cell(NROWS,1); dataGeneral.NAME(1:end) = {''};
dataGeneral.VALUE                  = NaN(NROWS,1);
dataGeneral.VALUETXT             = cell(NROWS,1); dataGeneral.VALUETXT(1:end) = {''};
dataGeneral.UNIT                   = cell(NROWS,1); dataGeneral.UNIT(1:end) = {''};
dataGeneral.ULOQ                   = NaN(NROWS,1);
dataGeneral.LLOQ                   = NaN(NROWS,1);
dataGeneral.ROUTE                  = cell(NROWS,1); dataGeneral.ROUTE(1:end) = {''};
dataGeneral.INTERVAL               = NaN(NROWS,1);
dataGeneral.NRDOSES               = NaN(NROWS,1);
% Comment
dataGeneral.COMMENT                = cell(NROWS,1); dataGeneral.COMMENT(1:end) = {''};
\ No newline at end of file
+function [dataGeneral] = IQMcreateGeneralDataset(varargin)
% The IQM Tools' workflow functions assume a general dataset format that is
% independent of modeling activities and tools. This function here allows
% to generate an empty dataset with this structure. Additionally, in this 
% help text here the format of this dataset is defined.
%
% [SYNTAX]
% [data] = IQMcreateGeneralDataset()
% [data] = IQMcreateGeneralDataset(NROWS)
%
% [INPUT]
% NRROWS:	Number of rows in the generated (empty) dataset (default: 1)
%
% [OUTPUT]
% Empty dataset in the general dataset format
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Specification of general dataset format:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% COLUMN NAME                               TYPE 		DESCRIPTION
% -------------------------------------------------------------------------
% IXGDF                                     numeric     Column containing numeric indices for each record (1,2,3,4,5, ...) 
%                                                       to allow for matching records in case of postprocessing the general dataset format
% IGNORE                                    string		Reason/comment related to exclusion of the sample/observation from the analysis
% USUBJID                                   string  	Unique subject identifier
% COMPOUND                                  string		Name of the investigational compound 
% STUDY                                     string		Study number
% STUDYDES                                  string		Study description
% PART                                      string		Part of study as defined per protocol (1 if only one part)
% EXTENS                	                numeric 	Extension of the core study (0 if not extension, 1 if extension)   
% CENTER                                    numeric		Center number
% SUBJECT                                   string      Subject identifier (within a center - typically not unique across whole dataset)
% INDNAME                                   string		Indication name   
% TRTNAME               	                string		Name of actual treatment given
% TRTNAMER                                  string 		Name of treatment to which individual was randomized
% VISIT                                     numeric		Visit number
% VISNAME                                   string		Visit name
% BASE                                      numeric		Flag indicating assessments at baseline 
%                                                       (=0 for non-baseline, =1 for first baseline, =2 for second baseline, etc.)
% SCREEN                                    numeric 	Flag indicating assessments at screening
%                                                       (=0 for non-screening, =1 for first screening, =2 for second screening, etc.)
% DATEDAY                                   string		Start date of event ('01-JUL-2015')
% DATETIME                                  string		Start time of event ('09:34')   
% DURATION                                  numeric		Duration of event in same time units as TIMEUNIT
% NT                                        numeric 	Planned time of event. Based on protocol, in the time unit defined in TIMEUNIT column
% TIME                                      numeric 	Actual time of event relative to first administration, in the time unit defined in TIMEUNIT column
% TIMEUNIT                                  string 		Unit of all numerical time definitions in the dataset ('hours','days','weeks','minutes')
% TYPENAME                                  string		Unique type of event
% NAME                                      string 		Unique name for the event 
% VALUE                                     numeric  	Value of the event, defined by NAME. E.g., the given dose, the observed PK concentration, 
%                                                       or the value of other readouts. The values need to be in the units, defined in the UNIT column.
%                                                       Specific cases:
%                                                           - For concomitant medications the dose will be given
% 										                    - Severity levels for adverse events
%                                                           - For BLOQ records: any value can be entered that is lower than the actual LLOQ. 
%                                                             It is not acceptable to set this value to �NaN� or �NA� since then no discrimination 
%                                                             can be made between �missing� and �<LLOQ�. For PK records on untransformed data �0� 
%                                                             is suggested. On log transformed data 0 should not be used but log(LLOQ/2) would be acceptable.
%                                                       Should not be populated if VALUETXT is populated
% VALUETXT                                  string		Text version of value (if available and useful)
%                                                       Character value as given in the CRF.
%                                                       Should not be populated if VALUE is populated
% UNIT              	                    string		Unit of the value reported in the VALUE column. For same event the same unit has to be used across the dataset.
% ULOQ          		                    numeric		Upper limit of quantification of event defined by NAME     
% LLOQ               	                    numeric		Lower limit of quantification of event defined by NAME     
% ROUTE              	                    string		Route of administration (iv, subcut, intramuscular, intraarticular, oral, inhaled, topical, rectal)
% INTERVAL                                  numeric		Interval of dosing, if single row should define multiple dosings
% NRDOSES                                   numeric 	Number of ADDITIONAL doses given within the specified interval, 
%                                                       NRDOSES=N codes for a total of N+1 doses with an interval as defined in the 
%                                                       column "INTERVAL" starting at the time defined in the dose record.
% COMMENT                                   string 		Additional information for the observation/event
%                                                       For example:
%                                                           - For PK: concatenation of DMPK flag to exclude or not the PK from the 
%                                                                     DMPK analysis and comment for each sample (e.g., if the sample is 
%                                                                     flagged as 'Excluded' than this word should be a prefix to the comment)
%                                                           - For adverse events concatenation of the seriousness and if the AE is drug related or not
%                                                           - For an imputation, it should mention 'Imputed'.
%
% The general data format might also contain the following columns, which
% are numeric equivalents to some string columns. If not provided, then
% these can be generated automatically by using the command
% IQMconvertGeneral2TaskDataset.
%
% IND:              Numeric indication flag (unique for each entry in INDNAME)
% STUDYN:           Numeric study flag (unique for each entry in STUDY)
% TRT:              Numeric actual treatment flag (unique for each entry in TRTNAME)
% TRTR:             Numeric randomized treatment flag (unique for each entry in TRTNAMER)

% <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>

NROWS = 1;
if nargin==1,
    NROWS = varargin{1};
end

% Create standard dataset structure
dataGeneral                        = table();
% Indices
dataGeneral.IXGDF                  = [1:NROWS]';
% General
dataGeneral.IGNORE                 = cell(NROWS,1); dataGeneral.IGNORE(1:end) = {''};
% Unique subject identifier
dataGeneral.USUBJID                = cell(NROWS,1); dataGeneral.USUBJID(1:end) = {''};
% Study information
dataGeneral.COMPOUND               = cell(NROWS,1); dataGeneral.COMPOUND(1:end) = {''};
dataGeneral.STUDY                  = cell(NROWS,1); dataGeneral.STUDY(1:end) = {''};
dataGeneral.STUDYDES               = cell(NROWS,1); dataGeneral.STUDYDES(1:end) = {''};
dataGeneral.PART                   = cell(NROWS,1); dataGeneral.PART(1:end) = {''};
dataGeneral.EXTENS                 = zeros(NROWS,1);
dataGeneral.CENTER                 = NaN(NROWS,1);
dataGeneral.SUBJECT                = cell(NROWS,1); dataGeneral.SUBJECT(1:end) = {''};
dataGeneral.INDNAME                = cell(NROWS,1); dataGeneral.INDNAME(1:end) = {''};
% Treatment group information
dataGeneral.TRTNAME                = cell(NROWS,1); dataGeneral.TRTNAME(1:end) = {''};
dataGeneral.TRTNAMER               = cell(NROWS,1); dataGeneral.TRTNAMER(1:end) = {''};
% Visit information
dataGeneral.VISIT                  = NaN(NROWS,1);
dataGeneral.VISNAME                = cell(NROWS,1); dataGeneral.VISNAME(1:end) = {''};
dataGeneral.BASE                   = zeros(NROWS,1);
dataGeneral.SCREEN                 = zeros(NROWS,1);
% Event time information
dataGeneral.DATEDAY                = cell(NROWS,1); dataGeneral.DATEDAY(1:end) = {''};
dataGeneral.DATETIME               = cell(NROWS,1); dataGeneral.DATETIME(1:end) = {''};
dataGeneral.DURATION               = zeros(NROWS,1);
dataGeneral.NT                     = NaN(NROWS,1);
dataGeneral.TIME                   = NaN(NROWS,1);
dataGeneral.TIMEUNIT              = cell(NROWS,1); dataGeneral.TIMEUNIT(1:end) = {''};
% Event value information
dataGeneral.TYPENAME              = cell(NROWS,1); dataGeneral.TYPENAME(1:end) = {''};
dataGeneral.NAME                   = cell(NROWS,1); dataGeneral.NAME(1:end) = {''};
dataGeneral.VALUE                  = NaN(NROWS,1);
dataGeneral.VALUETXT             = cell(NROWS,1); dataGeneral.VALUETXT(1:end) = {''};
dataGeneral.UNIT                   = cell(NROWS,1); dataGeneral.UNIT(1:end) = {''};
dataGeneral.ULOQ                   = NaN(NROWS,1);
dataGeneral.LLOQ                   = NaN(NROWS,1);
dataGeneral.ROUTE                  = cell(NROWS,1); dataGeneral.ROUTE(1:end) = {''};
dataGeneral.INTERVAL               = NaN(NROWS,1);
dataGeneral.NRDOSES               = NaN(NROWS,1);
% Comment
dataGeneral.COMMENT                = cell(NROWS,1); dataGeneral.COMMENT(1:end) = {''};
\ No newline at end of file
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/auxiliary/expandGeneralNR_DOSES_intervalIQM.m b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/auxiliary/expandGeneralNR_DOSES_intervalIQM.m
index 636a758..fbabc01 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/auxiliary/expandGeneralNR_DOSES_intervalIQM.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/01-GeneralDataFormat/auxiliary/expandGeneralNR_DOSES_intervalIQM.m	
@@ -5,6 +5,9 @@ function [dataOut] = expandGeneralNR_DOSES_intervalIQM(data,DOSENAME)
 % VIST, VISNAME, DATEDAY/TIME and DURATION entries are kept on the
 % original dose definitions, as well as IXGDF. TIME and NT will be adjusted.
 %
+% NOTE THAT NRDOSES codes for ADDITIONAL doses ... so NRDOSES=1 codes for 2
+% doses, etc. Spacing of doses is defined by the column INTERVAL.
+%
 % [SYNTAX]
 % [dataOut] = expandGeneralNR_DOSES_intervalIQM(data,DOSENAME)
 %
@@ -27,16 +30,19 @@ end
 dataDOSES = data(strcmp(data.NAME,DOSENAME),:);
 dataOTHER = data(~strcmp(data.NAME,DOSENAME),:);
 % Expand doses if both INTERVAL and NRDOSES defined
+% NRDOSES+1 DOSES need to be created if expansion is done...
 dataDOSES_expanded = table();
 for k=1:height(dataDOSES),
     datak = dataDOSES(k,:);
     if ~isnan(datak.INTERVAL) && ~isnan(datak.NRDOSES),
-        dataexp = datak(ones(1,datak.NRDOSES),:);
-        dataexp.TIME            = dataexp.TIME+[0:datak.INTERVAL:datak.INTERVAL*(datak.NRDOSES-1)]';
-        dataexp.NT    = dataexp.NT+[0:datak.INTERVAL:datak.INTERVAL*(datak.NRDOSES-1)]';
+        NREXPANDED_DOSES = datak.NRDOSES + 1;
+        
+        dataexp = datak(ones(1,NREXPANDED_DOSES),:);
+        dataexp.TIME            = dataexp.TIME+[0:datak.INTERVAL:datak.INTERVAL*(NREXPANDED_DOSES-1)]';
+        dataexp.NT              = dataexp.NT+[0:datak.INTERVAL:datak.INTERVAL*(NREXPANDED_DOSES-1)]';
         dataexp.INTERVAL(1:end) = NaN;
-        dataexp.NRDOSES(1:end) = NaN;
-        dataDOSES_expanded = [dataDOSES_expanded; dataexp];
+        dataexp.NRDOSES(1:end)  = NaN;
+        dataDOSES_expanded      = [dataDOSES_expanded; dataexp];
     elseif isnan(datak.INTERVAL) && isnan(datak.NRDOSES),
         % Nothing to expand (single dose definition)
         dataDOSES_expanded = [dataDOSES_expanded; datak];
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/03-TaskDataset/IQMconvertGeneral2TaskDataset.m b/IQM Tools/IQMpro/tools/03-ClinicalData/03-TaskDataset/IQMconvertGeneral2TaskDataset.m
index 1dc6360..37e04cd 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/03-TaskDataset/IQMconvertGeneral2TaskDataset.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/03-TaskDataset/IQMconvertGeneral2TaskDataset.m	
@@ -75,11 +75,11 @@ function [dataOut] = IQMconvertGeneral2TaskDataset(data,DOSENAMES,OBSNAMES,covar
 % DOSE:             Time dependent DOSE amount (carry forward imputation)
 %                   This column is only present in the case that a single
 %                   element in DOSENAMES is defined.
-% DOSE_"name"       where "name" is generated from the DOSENAMES entries.
+% DOSE"name"       where "name" is generated from the DOSENAMES entries.
 %                   These columns are only present if DOSENAMES contains
 %                   multiple entries. 
 %
-% For DOSE and DOSE_"name" columns. Prior to the first dose the entries are
+% For DOSE and DOSE"name" columns. Prior to the first dose the entries are
 % NaN, since dose undefined.
 %
 % [SYNTAX]
@@ -234,7 +234,7 @@ if length(DOSENAMES)==1,
     dataOut.DOSE(isnan(dataOut.DOSE)) = 0;
 else
     for k=1:length(DOSENAMES),
-        colname_dose = sprintf('DOSE_%s',makeVariableNameIQM(DOSENAMES{k}));
+        colname_dose = sprintf('DOSE%s',makeVariableNameIQM(DOSENAMES{k}));
         dataOut = IQMdataAddTimeDependentCovariate(dataOut,{DOSENAMES{k} colname_dose},FLAG_CARRY_FIRST_NON_NAN_BACKWARD);
         
         % Handle cases where a subject has not received any dose in the dataset (DOSE values are NaN) ... set these to 0, since
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreBLLOQdata.m b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreBLLOQdata.m
index 391b94b..a14041c 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreBLLOQdata.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreBLLOQdata.m	
@@ -32,7 +32,7 @@ if nargin<2,
     filename = '';
 end
 
-% Find all NAMEs which have LLOQ information
+% Find all NAMEs which have LLOQ information (only observations considered)
 NAMES_BLLOQ_present = unique(data.NAME(~isnan(data.LLOQ) & data.EVID==0));
 
 % Find all records that are BLOQ for all names that have LLOQ information
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivData.m b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivData.m
index 3f78104..7d95310 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivData.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivData.m	
@@ -193,6 +193,26 @@ if ~isempty(titlefontsize),
     options.titlefontsize = titlefontsize;
 end
 
+%% Handle case of BLOQ data present
+BLLOQdataPresent = 0;
+% Check if dataPlot contains LLOQ information and if yes then check if BLLOQ data are present
+if sum(~isnan(dataPlot.LLOQ)) > 0,
+    % LLOQ information present
+    if sum(dataPlot.DV<dataPlot.LLOQ) > 0,
+        % BLLOQ data present
+        BLLOQdataPresent = 1;
+    end
+end
+
+if BLLOQdataPresent,
+    dataPlot.isBLLOQ            = double(dataPlot.DV<dataPlot.LLOQ);
+    options.nameColorGroup      = 'isBLLOQ';
+    options.linecolorsCustom    = [0.2 0.2 0.2; 0.8500    0.3250    0.0980];
+    options.linetypesCustom     = {'.','x'};
+    options.showmarkers         = 1;
+    options.markersize          = 12;
+end
+
 %% Do the plotting
 IQMplottrellis(dataPlot,nameGroup,nameX,nameY,options)
 
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivDataRelation.m b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivDataRelation.m
index 7b21f45..1757e08 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivDataRelation.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreIndivDataRelation.m	
@@ -3,8 +3,9 @@ function [] = IQMexploreIndivDataRelation(data,OBSNAMES,GROUP,options)
 % dataset used in IQM Tools.
 % 
 % [SYNTAX]
-% [] = IQMexploreIndivData(data,OBSNAMES,GROUP)
-% [] = IQMexploreIndivData(data,OBSNAMES,GROUP,options)
+% [] = IQMexploreIndivDataRelation(data,OBSNAMES)
+% [] = IQMexploreIndivDataRelation(data,OBSNAMES,GROUP)
+% [] = IQMexploreIndivDataRelation(data,OBSNAMES,GROUP,options)
 %
 % [INPUT]
 % data:         MATLAB PKPD dataset in general standard data format.
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexplorePKdataWrapper.m b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexplorePKdataWrapper.m
index c1c9cf4..201ea4f 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexplorePKdataWrapper.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexplorePKdataWrapper.m	
@@ -183,6 +183,7 @@ IQMexploreDataContents(data,DOSENAME,OBSNAME,[outputPath '/00_Data_Contents']);
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Summary plot individual data on linear Y axis
+% Show BLLOQ data by different marker and color
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 options                 = [];
 options.logY            = 0;
@@ -197,6 +198,7 @@ IQMexploreIndivData(data,OBSNAME,'',options)
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Summary plot individual data on logarithmic Y axis
+% Show BLLOQ data by different marker and color
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 options                 = [];
 options.logY            = 1;
@@ -211,6 +213,7 @@ IQMexploreIndivData(data,OBSNAME,'',options)
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Plot individual data - 1 page per ID - linear Y axis
+% Show BLLOQ data by different marker and color
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 options                 = [];
 options.logY            = 0;
@@ -224,6 +227,7 @@ IQMexploreIndivData(data,OBSNAME,DOSENAME,options)
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Plot individual data - 1 page per ID - log Y axis
+% Show BLLOQ data by different marker and color
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 options                 = [];
 options.logY            = 1;
@@ -236,7 +240,8 @@ options.filename        = [outputPath '/04_Individual_Single_Log'];
 IQMexploreIndivData(data,OBSNAME,DOSENAME,options)
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Assessment of data availability TRT/STUDY
+%% Assessment of data availability TRT/STUDY
+% Show BLLOQ data by different marker and color
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 filename    = [outputPath '/05_Summary_Study_Treatment'];
 IQMstartNewPrintFigure(filename);
@@ -267,13 +272,35 @@ options.maxlegendentries    = 20;
 options.titlefontsize       = 8;
 options.labeltextsize       = 8;
 options.ticklabeltextsize   = 8;
+
+% Handle case of BLOQ data present
+BLLOQdataPresent = 0;
+% Check if dataPlot contains LLOQ information and if yes then check if BLLOQ data are present
+if sum(~isnan(dataPlot.LLOQ)) > 0,
+    % LLOQ information present
+    if sum(dataPlot.DV<dataPlot.LLOQ) > 0,
+        % BLLOQ data present
+        BLLOQdataPresent = 1;
+    end
+end
+if BLLOQdataPresent,
+    dataPlot.isBLLOQ            = double(dataPlot.DV<dataPlot.LLOQ);
+    options.nameColorGroup      = 'isBLLOQ';
+    options.linecolorsCustom    = [0.2 0.2 0.2; 0.8500    0.3250    0.0980];
+    options.linetypesCustom     = {'.-','x-'};
+    options.showmarkers         = 1;
+    options.markersize          = 12;
+end
+
+% Plot
 IQMplotfacetgrid(dataPlot,nameX,nameY,nameGroupX,nameGroupY,options)
 IQMprintFigure(gcf,filename);
 close(gcf);
 IQMconvert2pdf(filename);
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Dose normalized plots - over TIME
+%% Dose normalized plots - over TIME
+% Not considering BLOQ data (remove it prior to dose-normalization)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 filename    = [outputPath '/06_Dose_Normalized_TIME'];
@@ -283,6 +310,9 @@ IQMstartNewPrintFigure(filename);
 % Linear
 %%%%%%%%%
 dataPlot    = subsetIQM(data,'NAME',OBSNAME);
+% Remove BLLOQ data
+dataPlot(dataPlot.DV<dataPlot.LLOQ,:) = [];
+
 % Dose normalize the PK data
 DOSE = dataPlot.DOSE; DOSE(DOSE==0) = 1;
 dataPlot.DVnorm = dataPlot.DV./DOSE;
@@ -299,7 +329,7 @@ options.linewidth = 1;
 options.nameSubGroup    = 'USUBJID';
 options.nameColorGroup  = 'TRTNAME';
 options.xlabelText = sprintf('Time [%s]',dataPlot.TIMEUNIT{1});
-options.ylabelText = sprintf('(DOSE NORMALIZED) %s',dataPlot.NAME{1});
+options.ylabelText = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlot.NAME{1});
 options.ylabelfirstonly = 1;
 options.logY            = 0;
 options.showmedian       = 1;
@@ -323,6 +353,9 @@ close(gcf);
 % Log
 %%%%%%%%%
 dataPlot    = subsetIQM(data,'NAME',OBSNAME);
+% Remove BLLOQ data
+dataPlot(dataPlot.DV<dataPlot.LLOQ,:) = [];
+
 % Dose normalize the PK data
 DOSE = dataPlot.DOSE; DOSE(DOSE==0) = 1;
 dataPlot.DVnorm = dataPlot.DV./DOSE;
@@ -339,7 +372,7 @@ options.linewidth = 1;
 options.nameSubGroup    = 'USUBJID';
 options.nameColorGroup  = 'TRTNAME';
 options.xlabelText = sprintf('Time [%s]',dataPlot.TIMEUNIT{1});
-options.ylabelText = sprintf('(DOSE NORMALIZED) %s',dataPlot.NAME{1});
+options.ylabelText = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlot.NAME{1});
 options.ylabelfirstonly = 1;
 options.logY            = 1;
 options.showmedian       = 1;
@@ -363,7 +396,8 @@ IQMconvert2pdf(filename);
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Dose normalized plots - over TAD
+%% Dose normalized plots - over TAD
+% Not considering BLOQ data (remove it prior to dose-normalization)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 filename    = [outputPath '/07_Dose_Normalized_TAD'];
@@ -373,6 +407,9 @@ IQMstartNewPrintFigure(filename);
 % Linear
 %%%%%%%%%
 dataPlot    = subsetIQM(data,'NAME',OBSNAME);
+% Remove BLLOQ data
+dataPlot(dataPlot.DV<dataPlot.LLOQ,:) = [];
+
 % Dose normalize the PK data
 DOSE = dataPlot.DOSE; DOSE(DOSE==0) = 1;
 dataPlot.DVnorm = dataPlot.DV./DOSE;
@@ -389,7 +426,7 @@ options.linewidth = 1;
 options.nameSubGroup    = 'USUBJID';
 options.nameColorGroup  = 'TRTNAME';
 options.xlabelText = sprintf('TAD [%s]',dataPlot.TIMEUNIT{1});
-options.ylabelText = sprintf('(DOSE NORMALIZED) %s',dataPlot.NAME{1});
+options.ylabelText = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlot.NAME{1});
 options.ylabelfirstonly = 1;
 options.logY            = 0;
 options.showmedian       = 1;
@@ -413,6 +450,9 @@ close(gcf);
 % Log
 %%%%%%%%%
 dataPlot    = subsetIQM(data,'NAME',OBSNAME);
+% Remove BLLOQ data
+dataPlot(dataPlot.DV<dataPlot.LLOQ,:) = [];
+
 % Dose normalize the PK data
 DOSE = dataPlot.DOSE; DOSE(DOSE==0) = 1;
 dataPlot.DVnorm = dataPlot.DV./DOSE;
@@ -429,7 +469,7 @@ options.linewidth = 1;
 options.nameSubGroup    = 'USUBJID';
 options.nameColorGroup  = 'TRTNAME';
 options.xlabelText = sprintf('TAD [%s]',dataPlot.TIMEUNIT{1});
-options.ylabelText = sprintf('(DOSE NORMALIZED) %s',dataPlot.NAME{1});
+options.ylabelText = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlot.NAME{1});
 options.ylabelfirstonly = 1;
 options.logY            = 1;
 options.showmedian       = 1;
@@ -452,7 +492,7 @@ close(gcf);
 IQMconvert2pdf(filename);
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Summary statistics covariates
+%% Summary statistics covariates
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 if ~isempty(covNames) || ~isempty(catNames),
     filename    = [outputPath '/08_Summary_Statistics'];
@@ -470,9 +510,13 @@ end
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Graphical exploration of potential covariate effect on PK
 % We only look at dose normalized information
+% Not considering BLOQ data (remove it prior to dose-normalization)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 dataPlot    = subsetIQM(data,'NAME',OBSNAME);
+% Remove BLLOQ data
+dataPlot(dataPlot.DV<dataPlot.LLOQ,:) = [];
+
 % Dose normalize the PK data
 DOSE = dataPlot.DOSE; DOSE(DOSE==0) = 1;
 dataPlot.DVnorm = dataPlot.DV./DOSE;
@@ -520,7 +564,7 @@ if ~isempty(covNames),
             options.nameSubGroup    = 'USUBJID';
             options.nameColorGroup  = newCatCovNames{k};
             options.xlabelText      = sprintf('TAD [%s]',dataPlotCov.TIMEUNIT{1});
-            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s',dataPlotCov.NAME{1});
+            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlotCov.NAME{1});
             options.ylabelfirstonly = 1;
             options.logY            = 0;
             options.showmedian      = 1;
@@ -549,7 +593,7 @@ if ~isempty(covNames),
             options.nameSubGroup    = 'ID';
             options.nameColorGroup  = newCatCovNames{k};
             options.xlabelText      = sprintf('TAD [%s]',dataPlotCov.TIMEUNIT{1});
-            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s',dataPlotCov.NAME{1});
+            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlotCov.NAME{1});
             options.ylabelfirstonly = 1;
             options.logY            = 1;
             options.showmedian      = 1;
@@ -598,7 +642,7 @@ if ~isempty(catNames),
             options.nameSubGroup    = 'ID';
             options.nameColorGroup  = catNames{k};
             options.xlabelText      = sprintf('TAD [%s]',dataPlotCov.TIMEUNIT{1});
-            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s',dataPlotCov.NAME{1});
+            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlotCov.NAME{1});
             options.ylabelfirstonly = 1;
             options.logY            = 0;
             options.showmedian      = 1;
@@ -627,7 +671,7 @@ if ~isempty(catNames),
             options.nameSubGroup    = 'ID';
             options.nameColorGroup  = catNames{k};
             options.xlabelText      = sprintf('TAD [%s]',dataPlotCov.TIMEUNIT{1});
-            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s',dataPlotCov.NAME{1});
+            options.ylabelText      = sprintf('(DOSE NORMALIZED) %s - BLLOQ data not considered',dataPlotCov.NAME{1});
             options.ylabelfirstonly = 1;
             options.logY            = 1;
             options.showmedian      = 1;
diff --git a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreSummaryStats.m b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreSummaryStats.m
index 26fec43..521a0ff 100644
--- a/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreSummaryStats.m	
+++ b/IQM Tools/IQMpro/tools/03-ClinicalData/04-DataExploration/IQMexploreSummaryStats.m	
@@ -1,8 +1,10 @@
 function [continuousTable,categoricalTable] = IQMexploreSummaryStats(data,covNames,catNames,filename)
 % This function produces summary statistics for the provided dataset
 % and displays the results in a table in the MATLAB window. If a filename
-% is provdided, the results are also exported to this file. The data need
-% to be provided at least in the general dataset format or in the task
+% is provdided, the results are also exported to separate files for 
+% continuous and categorical covariates. (_continuous and _categorical are 
+% postfixed to the filename).
+% The data need to be provided at least in the general dataset format or in the task
 % specific dataset format. The covariates considered need to be available
 % as columns.
 %
@@ -141,11 +143,13 @@ disp(textDisplay);
 textDisplay = IQMconvertCellTable2ReportTable(categoricalTable,'text');
 disp(textDisplay);
 
-% Convert to report text and export to file if filename defined
+% Convert to report text 
 text1 = IQMconvertCellTable2ReportTable(continuousTable,'report');     
 text2 = IQMconvertCellTable2ReportTable(categoricalTable,'report');     
-text = sprintf('%s\r\n\r\n%s',text1,text2);
-IQMwriteText2File(text,[strrep(filename,'.txt','') '.txt']);
+
+% Export to file if filename defined
+IQMwriteText2File(text1,[strrep(filename,'.txt','') '_continuous' '.txt']);
+IQMwriteText2File(text2,[strrep(filename,'.txt','') '_categorical' '.txt']);
 
 
 
diff --git a/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/02-BLOQhandling/IQMhandleBLOQdata.m b/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/02-BLOQhandling/IQMhandleBLOQdata.m
index 6d28042..7e4b29e 100644
--- a/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/02-BLOQhandling/IQMhandleBLOQdata.m	
+++ b/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/02-BLOQhandling/IQMhandleBLOQdata.m	
@@ -63,7 +63,7 @@ end
 % Copy dataset
 datanew = data;
 
-% Find all NAMEs which have LLOQ information
+% Find all NAMEs which have LLOQ information and are observations
 NAMES_BLLOQ_present = unique(datanew.NAME(~isnan(datanew.LLOQ) & datanew.EVID==0));
 
 % Find all records that are BLOQ for all names that have LLOQ information
diff --git a/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/03-DataNLMEConversion/IQMconvertTask2NLMEdataset.m b/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/03-DataNLMEConversion/IQMconvertTask2NLMEdataset.m
index 875aef4..c1c7903 100644
--- a/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/03-DataNLMEConversion/IQMconvertTask2NLMEdataset.m	
+++ b/IQM Tools/IQMpro/tools/04-NLMEdataPreparation/03-DataNLMEConversion/IQMconvertTask2NLMEdataset.m	
@@ -29,7 +29,8 @@ function [dataNLME] = IQMconvertTask2NLMEdataset(data,DOSENAMES,OBSNAMES,covName
 %   with a more informed dataset
 % - Displaying mapping between ADM and ROUTE, and YTYPE and OBSNAMES
 % - If NRDOSES and INTERVAL not all NaN then an ADDL and II column are
-%   added to the dataNLME dataset
+%   added to the dataNLME dataset. NRDOSES is same as ADDL and INTERVAL
+%   same as II.
 % 
 % [SYNTAX]
 % [dataNLME] = IQMconvertTask2NLMEdataset(data,DOSENAMES,OBSNAMES,covNames,catNames,regressionNames)
@@ -130,7 +131,7 @@ if sum(abs(dataNLME.CENS)) ~= 0,
 end
 
 % Define initial structure of NLME dataset
-varNames = {'IXGDF' 'IGNORE' 'ID' 'USUBJID' 'STUDY' 'STUDYN' 'TRT' 'TRTNAME' 'TIME' 'TIMEPOS' 'NT' 'TIMEUNIT' 'YTYPE' 'NAME' 'DV' 'UNIT' 'CENS' 'MDV' 'EVID' 'AMT' 'ADM' 'INTERVAL' 'NRDOSES' 'ROUTE' 'RATE' 'TINF'};
+varNames = {'IXGDF' 'IGNORE' 'ID' 'USUBJID' 'STUDY' 'STUDYN' 'TRT' 'TRTNAME' 'TIME' 'TIMEPOS' 'NT' 'TAD' 'TIMEUNIT' 'YTYPE' 'NAME' 'DV' 'UNIT' 'CENS' 'MDV' 'EVID' 'AMT' 'ADM' 'INTERVAL' 'NRDOSES' 'ROUTE' 'RATE' 'TINF'};
 
 % Check if DOSE is present in the dataset then add it
 if ~isempty(strmatchIQM('DOSE',dataNLME.Properties.VariableNames,'exact')),
@@ -139,7 +140,7 @@ if ~isempty(strmatchIQM('DOSE',dataNLME.Properties.VariableNames,'exact')),
 else
     % DOSE not present ... might be due to multiple DOSENAMES ... check
     for k=1:length(DOSENAMES),
-        doseNameTest = ['DOSE_' makeVariableNameIQM(DOSENAMES{k})];
+        doseNameTest = ['DOSE' makeVariableNameIQM(DOSENAMES{k})];
         if ~isempty(strmatchIQM(doseNameTest,dataNLME.Properties.VariableNames,'exact')),
             % if only one DOSENAME(S) then rename to DOSE ... otherwise
             % keep changed name
diff --git a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMLXTRANfile.m b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMLXTRANfile.m
index 8c7ba80..2f4ce57 100644
--- a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMLXTRANfile.m	
+++ b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMLXTRANfile.m	
@@ -9,7 +9,7 @@ function [filename, moddosinfo] = IQMcreateMLXTRANfile(model,dosing,varargin)
 % [SYNTAX]
 % [filename] = IQMcreateMLXTRANfile(model,dosing)
 % [filename] = IQMcreateMLXTRANfile(model,dosing,filename)
-% [filename] = IQMcreateMLXTRANfile(model,dosing,filename,SILENT,regressionParameters)
+% [filename] = IQMcreateMLXTRANfile(model,dosing,filename,SILENT,regressionParameters,startTime)
 %
 % [INPUT]
 % model:                IQMmodel (annotated with additional information, see above)
@@ -29,6 +29,8 @@ function [filename, moddosinfo] = IQMcreateMLXTRANfile(model,dosing,varargin)
 %                       in the dataset. Default: {}. If this input argument
 %                       is given, then the regressor information in the
 %                       IQMmodel and IQMdosing scheme is ignored!!!
+% startTime:            Allows to set the start of the integration to a desired time.
+%                       Default: []: do not set.
 %
 % [OUTPUT]
 % filename: constructed from the model name "modelname_MLXTRAN".
@@ -81,17 +83,22 @@ if nargin >= 3,
 end
 
 SILENT = 0;
-if nargin == 4,
+if nargin >= 4,
     SILENT = varargin{2};
 end
 
 regressionParameters = {};
 IGNORE_MODELDEFINED_REGRESSORS = 0;
-if nargin == 5,
+if nargin >= 5,
     regressionParameters = varargin{3};
     IGNORE_MODELDEFINED_REGRESSORS = 1;
 end
 
+startTime = [];
+if nargin>=6,
+    startTime = varargin{4};
+end
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % Start conversion protocol with important information
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -392,6 +399,12 @@ fprintf(fid,'; =============================================\r\n');
 fprintf(fid,'EQUATION:\r\n');
 fprintf(fid,'; =============================================\r\n');
 
+if ~isempty(startTime),
+    fprintf(fid,'\r\n\t; Start time of integration');
+    fprintf(fid,'\r\n\t; -------------------------\r\n');
+    fprintf(fid,'\tt0 = %g\r\n\r\n',startTime);
+end
+
 fprintf(fid,'\r\n\t; Always use stiff solver');
 fprintf(fid,'\r\n\t; -----------------------\r\n');
 fprintf(fid,'\todeType = stiff\r\n\r\n');
diff --git a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMONOLIXproject.m b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMONOLIXproject.m
index 81270ff..ce128ba 100644
--- a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMONOLIXproject.m	
+++ b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/IQMcreateMONOLIXproject.m	
@@ -81,6 +81,7 @@ function IQMcreateMONOLIXproject(model,dosing,data,projectPath,varargin)
 %       options.algorithm.LLsetting:    'linearization' (default) or 'importantsampling'
 %       options.algorithm.FIMsetting:   'linearization' (default) or 'stochasticApproximation'
 %       options.algorithm.INDIVparametersetting: 'conditionalMode' (default) ... others not considered for now. 
+%       options.algorithm.startTime:    start time of integration. default: [] (not set).
 %       options.SILENT:                 =0: do some output in the command window, =1: do no output in command window (default: 0)
 %       options.keepProjectFolder:      =0: remover already existing folder, =1: keep it
 %
@@ -159,6 +160,7 @@ try SILENT                          = options.SILENT;
 try INDIVparametersetting           = options.algorithm.INDIVparametersetting;  catch, INDIVparametersetting = 'conditionalMode';    end
 try LLsetting                       = options.algorithm.LLsetting;              catch, LLsetting = 'linearization';                  end
 try FIMsetting                      = options.algorithm.FIMsetting;             catch, FIMsetting = 'linearization';                 end
+try startTime                       = options.algorithm.startTime;              catch, startTime = [];                               end
 try keepProjectFolder               = options.keepProjectFolder;                catch, keepProjectFolder = 0;                        end   
 try Ntests                          = options.Ntests;                           catch, Ntests = 1;                                   end
 try std_noise_setting               = options.std_noise_setting;                catch, std_noise_setting = 0.5; options.std_noise_setting = 0.5;    end
@@ -372,7 +374,7 @@ ms = struct(model);
 % Provide the correct regression parameter names as ordered in the dataset
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 regressionParametersData = dataCSV.Properties.VariableNames(strmatchIQM('X',explodePCIQM(data.dataHeaderIdent),'exact'));
-[modelFileName, modelInfo] = IQMcreateMLXTRANfile(model,dosing,'model',SILENT,regressionParametersData);
+[modelFileName, modelInfo] = IQMcreateMLXTRANfile(model,dosing,'model',SILENT,regressionParametersData,startTime);
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % If needed, reorder parameters
diff --git a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/auxiliary/sampleMONOLIXpopulationParametersIQM.m b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/auxiliary/sampleMONOLIXpopulationParametersIQM.m
index 576628f..8cdc03c 100644
--- a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/auxiliary/sampleMONOLIXpopulationParametersIQM.m	
+++ b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/01-MONOLIX/auxiliary/sampleMONOLIXpopulationParametersIQM.m	
@@ -343,13 +343,20 @@ COV2informationCategories  = {};
 COV2informationValues  = {};
 
 for k=1:length(COVparameters),
-    if k==1 || isempty(strmatchIQM(COVparameters{k},COV2parameters,'exact')),
+    if k==1,
         COV2parameters{k}               = COVparameters{k};
         COV2covNames{k}                 = COVcovNames{k};
         % Determine reference value
         reference                       = input.covariates.catReference(strmatchIQM(COVcovNames{k},input.covariates.catNames,'exact'));
         COV2informationCategories{k}    = [reference COVcategory(k)];
         COV2informationValues{k}        = [0 COVvalues(k)];
+    elseif isempty(strmatchIQM(COVparameters{k},COV2parameters,'exact')),
+        COV2parameters{end+1}               = COVparameters{k};
+        COV2covNames{end+1}                 = COVcovNames{k};
+        % Determine reference value
+        reference                       = input.covariates.catReference(strmatchIQM(COVcovNames{k},input.covariates.catNames,'exact'));
+        COV2informationCategories{end+1}    = [reference COVcategory(k)];
+        COV2informationValues{end+1}        = [0 COVvalues(k)];
     else
         % No all parameter names are present ... need to check if covariate
         % name already present in this parameter
diff --git a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/modelconversion/checkAndChangeModelSyntax4NONMEMconversionIQM.m b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/modelconversion/checkAndChangeModelSyntax4NONMEMconversionIQM.m
index 067acea..6b8008f 100644
--- a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/modelconversion/checkAndChangeModelSyntax4NONMEMconversionIQM.m	
+++ b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/modelconversion/checkAndChangeModelSyntax4NONMEMconversionIQM.m	
@@ -103,9 +103,12 @@ end
 available_state_numbers = setdiff(1:length(ms.states),input_numbers);
 % Distribute the available_state_numbers to the NaN input values
 input_states(isnan(input_states(:,1)),1) = available_state_numbers;
+
+
 % Column one in input_states defines the new state numbers and second column the old ones
 % Now switch the ODEs
-ms.states(input_states(:,2)) = ms.states(input_states(:,1));
+sort_ix = sortrows(input_states,1);
+ms.states = ms.states(sort_ix(:,2));
 % Need to reassign stateindex in ms.states.input
 for k=1:length(ms.inputs),
     ms.inputs(k).stateindex = input_numbers(k);
diff --git a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/parseNONMEMresultsIQM.m b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/parseNONMEMresultsIQM.m
index c5b2e14..f5a38fc 100644
--- a/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/parseNONMEMresultsIQM.m	
+++ b/IQM Tools/IQMpro/tools/05-NLMEtoolsInterfaces/02-NONMEM/auxiliary/parseNONMEMresultsIQM.m	
@@ -28,6 +28,7 @@ function [ output ] = parseNONMEMresultsIQM( path_to_nonmem_project_folder, tran
 
 % <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>
 
+% Set seed to lead to consistent sampling results
 if nargin == 1,
     transformFlag = 0;
 end
diff --git a/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMcreateNLMEproject.m b/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMcreateNLMEproject.m
index f289856..ccfaeab 100644
--- a/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMcreateNLMEproject.m	
+++ b/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMcreateNLMEproject.m	
@@ -101,6 +101,7 @@ function [] = IQMcreateNLMEproject(TOOL,model,dosing,data,projectPath,options)
 %       options.algorithm.LLsetting:    'linearization' (default) or 'importantsampling'
 %       options.algorithm.FIMsetting:   'linearization' (default) or 'stochasticApproximation'
 %       options.algorithm.INDIVparametersetting: 'conditionalMode' (default) ... others not considered for now. 
+%       options.algorithm.startTime:    start time of integration. default: [] (not set).
 
 % <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>
 
diff --git a/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMgetNLMEfitIndivPopMeanParam.m b/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMgetNLMEfitIndivPopMeanParam.m
index 52f15a2..5d6396d 100644
--- a/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMgetNLMEfitIndivPopMeanParam.m	
+++ b/IQM Tools/IQMpro/tools/06-NMLEprojectHandling/IQMgetNLMEfitIndivPopMeanParam.m	
@@ -47,31 +47,61 @@ elseif isempty(data),
     cd(oldpath);
 end
 
-% Get data with only covariates covNames and catNames and USUBJID
-dataCOV = unique(data(:,{'USUBJID',header.COVARIATENAMES{:}}));
+% process some things
+x = strmatchIQM('',header.CATNAMES);
+header.CATNAMES(x) = [];
+x = strmatchIQM('',header.COVNAMES);
+header.COVNAMES(x) = [];
 
-% Cycle through dataCOV and keep only first entry for a single USUBJID
+% Cycle through data and keep only first entry for a single USUBJID
 % (should not happen anyway)
-allID = unique(dataCOV.USUBJID);
+dataFIRST = data;
+allID = unique(dataFIRST.USUBJID);
 for k=1:length(allID),
-    ix = ixdataIQM(dataCOV,'USUBJID',allID(k));
+    ix = ixdataIQM(dataFIRST,'USUBJID',allID(k));
     if length(ix)>1,
-        dataCOV(ix(2:end),:) = [];
+        dataFIRST(ix(2:end),:) = [];
     end
 end
 
-% Separate dataCOV into continuous and categorical covariates
-dataCAT = dataCOV(:,{'USUBJID' header.CATNAMES{:}});
-dataCOV = dataCOV(:,{'USUBJID' header.COVNAMES{:}});
+% Separate dataFIRST into continuous and categorical covariates
+if ~isempty(header.CATNAMES),
+    if ~isempty(header.CATNAMES{1}),
+        dataCAT = dataFIRST(:,{'USUBJID' header.CATNAMES{:}});
+    end
+else
+    dataCAT = [];
+end
+if ~isempty(header.COVNAMES),
+    if ~isempty(header.COVNAMES{1}),
+        dataCOV = dataFIRST(:,{'USUBJID' header.COVNAMES{:}});
+    end
+else
+    dataCOV = [];
+end
 
 % Sample population parameters from fit
 FLAG_SAMPLE = 3; % Use point estimates of population parameters (do not consider uncertainty)
                  % Return Nsamples sets of population parameters with covariates taken into account.
-NSAMPLES    = height(dataCOV);
-covNames    = dataCOV.Properties.VariableNames(2:end);
-covValues   = table2array(dataCOV(:,2:end));
-catNames    = dataCAT.Properties.VariableNames(2:end);
-catValues   = table2array(dataCAT(:,2:end));
+NSAMPLES    = height(dataFIRST);
+
+if isempty(dataCOV),
+    covNames = {};
+    covValues = [];
+else
+    covNames    = dataCOV.Properties.VariableNames(2:end);
+    covValues   = table2array(dataCOV(:,2:end));
+end
+
+if isempty(dataCAT),
+    catNames = {};
+    catValues = [];
+else
+    catNames    = dataCAT.Properties.VariableNames(2:end);
+    catValues   = table2array(dataCAT(:,2:end));
+end
+
+% Sample parameters
 param       = IQMsampleNLMEfitParam(projectPath,FLAG_SAMPLE,NSAMPLES,covNames,covValues,catNames,catValues);
 
 % Create table out of parameters and names
@@ -79,7 +109,7 @@ popmean_param     = array2table(param.parameterValuesPopulation);
 popmean_param.Properties.VariableNames = param.parameterNames;
 
 % Add USUBJID to table (same order as for covariates)
-popmean_param.USUBJID = dataCOV.USUBJID;
+popmean_param.USUBJID = dataFIRST.USUBJID;
 
 % Reorder to have USUBJID in the front
 popmean_param = popmean_param(:,[end 1:end-1]);
diff --git a/IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisConditionNumber.m b/IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisConditionNumber.m
new file mode 100644
index 0000000..7e726fc
--- /dev/null
+++ b/IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisConditionNumber.m	
@@ -0,0 +1,78 @@
+function [cNfull,cNfebeta,cNreerror,cNcorr] = IQMfitanalysisConditionNumber(projectPath)
+% Determine the condition number for an NLME fit.
+% Several condition numbers will be generated:
+% - condition number for the full covariance matrix (cNfull)
+% - condition number for fixed effects + covariate coefficients (cNfebeta)
+% - condition number for random effects + error model parameters (cNreerror) 
+% - condition number for correlation parameters (cNcorr) 
+%
+% [SYNTAX]
+% [cNfull,cNfebeta,cNreerror,cNcorr] = IQMfitanalysisConditionNumber(projectPath)
+%
+% [INPUT]
+% projectPath:      Path to the project.nmctl NONMEM project file
+%
+% [OUTPUT]
+% Different condition numbers
+
+% <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>
+
+% parse the results
+if isNONMEMprojectIQM(projectPath),
+    x = parseNONMEMresultsIQM(projectPath);
+elseif isMONOLIXprojectIQM(projectPath),
+    x = parseMONOLIXresultsIQM(projectPath);
+else
+    error('Unknown project type.');
+end
+
+cNfull      = NaN;
+cNfebeta    = NaN;
+cNreerror   = NaN;
+cNcorr      = NaN;
+
+if ~isempty(x.parameters.correlationmatrix),   
+    
+    cNfull = cond(x.parameters.correlationmatrix);
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % fE and beta
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    names = [x.rawParameterInfo.fixedEffects.names x.rawParameterInfo.covariate.names];
+    ix_all = [];
+    for k=1:length(names),
+        ix_all(k) = strmatchIQM(names{k},x.parameters.names,'exact');
+    end
+    cNfebeta = cond(x.parameters.correlationmatrix(ix_all,ix_all));
+    
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % omegas and error parameters
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    if isNONMEMprojectIQM(projectPath),
+        names = [strrep(x.rawParameterInfo.randomEffects.names,'omega','omega2') x.rawParameterInfo.errorParameter.names];
+    else
+        names = [x.rawParameterInfo.randomEffects.names x.rawParameterInfo.errorParameter.names];
+    end
+    ix_all = [];
+    for k=1:length(names),
+        ix_all(k) = strmatchIQM(names{k},x.parameters.names,'exact');
+    end
+    cNreerror = cond(x.parameters.correlationmatrix(ix_all,ix_all));
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % Correlation of correlations
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    if isNONMEMprojectIQM(projectPath),
+        names = [strrep(x.rawParameterInfo.correlation.names,'corr(','omega2(')];
+    else
+        names = x.rawParameterInfo.correlation.names;
+    end
+    if length(names) >= 1,
+        ix_all = [];
+        for k=1:length(names),
+            ix_all(k) = strmatchIQM(names{k},x.parameters.names);
+        end
+        cNcorr = cond(x.parameters.correlationmatrix(ix_all,ix_all));
+    end
+end
+
diff --git a/IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisShrinkage.m b/IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisShrinkage.m
new file mode 100644
index 0000000..0833667
--- /dev/null
+++ b/IQM Tools/IQMpro/tools/07-NLMEfitAnalysis/IQMfitanalysisShrinkage.m	
@@ -0,0 +1,31 @@
+function [OMEGAnames,eta_shrinkage_percent] = IQMfitanalysisShrinkage(projectPath)
+% This function determines the ETA shrinkage for the random effects
+% ETA Shrinkage is defined as:
+%
+% eta_shrinkage_percent = 100*(1-std(eta))/OMEGA;
+%
+% [SYNTAX]
+% [OMEGAnames,eta_shrinkage_percent] = IQMfitanalysisShrinkage(projectPath)
+%
+% [INPUT]
+% projectPath:  Path to a NONMEM or MONOLIX project folder. 
+%
+% [OUTPUT]
+% OMEGAnames:               Cell-array with names of all fixed effect parameters
+% eta_shrinkage_percent:    Vector with shrinkage values. NaN if parameter
+%                           was not having a random effect.
+
+% <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>
+
+% Handle NONMEM/MONOLIX
+if isMONOLIXprojectIQM(projectPath),
+    [ dataeta, OMEGA, OMEGAnames ] = parseMONOLIXetasIQM( projectPath );
+elseif isNONMEMprojectIQM(projectPath),
+    [ dataeta, OMEGA, OMEGAnames ] = parseNONMEMetasIQM( projectPath );
+else
+    error('Unknown project type.');
+end
+
+% Determine shrinkage in percent
+eta_shrinkage_percent = 100*(1-std(table2array(dataeta))./OMEGA);
+
diff --git a/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTable.m b/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTable.m
index 1dbb12a..175c7d0 100644
--- a/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTable.m	
+++ b/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTable.m	
@@ -1,11 +1,11 @@
-function [] = IQMfitsummaryTable(projectPaths,filename)
+function [tableCell] = IQMfitsummaryTable(projectPaths,filename)
 % This function creates a typical report-type NLME model parameter table.
 % "projectPaths" defines the NLME projects that are to be reported in this
 % table.
 %
 % [SYNTAX]
-% [] = IQMfitsummaryTable(projectPaths)
-% [] = IQMfitsummaryTable(projectPaths,filename)
+% [tableCell] = IQMfitsummaryTable(projectPaths)
+% [tableCell] = IQMfitsummaryTable(projectPaths,filename)
 %
 % [INPUT]
 % projectPaths:     Cell-array with paths to NLME projects to create the
@@ -110,7 +110,7 @@ end
 
 tableCell                               = {'<TT>' 'Population parameter estimates for considered models'};
 tableCell(end+1,1:2+length(RESULTS))    = {'<TH>' ''          modelsNames_Short{:}};
-tableCell(end+1,1:2)                    = {'<TH>' 'Parameter'};
+tableCell(end+1,1:2)                    = {'<TR>' 'Parameter'};
 for k=1:length(RESULTS),
     tableCell(end,2+k) = {'Value      (RSE%)        (trans)'};
 end
diff --git a/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTableSingle.m b/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTableSingle.m
new file mode 100644
index 0000000..9bd8575
--- /dev/null
+++ b/IQM Tools/IQMpro/tools/08-NLMEfitSummary/IQMfitsummaryTableSingle.m	
@@ -0,0 +1,420 @@
+function [tableCell] = IQMfitsummaryTableSingle(projectPath,filename)
+% This function creates a typical report-type NLME model parameter table.
+% "projectPaths" defines the NLME projects that are to be reported in this
+% table. In contrast to IQMfitsummaryTable this function creates a single
+% table with dedicated columns for value, RSE and trans.
+%
+% [SYNTAX]
+% [tableCell] = IQMfitsummaryTableSingle(projectPath)
+% [tableCell] = IQMfitsummaryTableSingle(projectPath,filename)
+%
+% [INPUT]
+% projectPath:      String with path to NLME project to create the
+%                   fit results table for.
+% filename:         Path and filename where to generate the output file.
+%                   default: '' (no file generated).
+%
+% [OUTPUT]
+% Table shown in command window and if desired also saved to file for
+% reporting purpose.
+
+% <<<COPYRIGHTSTATEMENT - IQM TOOLS PRO>>>
+
+% Handle variable input arguments
+if nargin<2,
+    filename = '';
+end
+
+% Handle cell-array thing
+if ischar(projectPath),
+    projectPath = {projectPath};
+end
+
+% Check projects if NLME
+for k=1:length(projectPath),
+    if ~isNLMEprojectIQM(projectPath{k}),
+        error('Path "%s" does not contain an NLME project.',projectPath{k});
+    end
+end
+
+% Load project results - do not reorder
+order   = '';
+RESULTS = parseSelectedProjectFolderResultsIQM(projectPath,order);
+  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Process the RESULT information somewhat
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Determine all available fixed effect parameters in the models
+ALLfixEffectNames = {};
+for k=1:length(RESULTS),
+    if ~isempty(RESULTS(k).rawParameterInfo),
+        fek = RESULTS(k).rawParameterInfo.fixedEffects.names;
+        ALLfixEffectNames = [ALLfixEffectNames fek];
+    end
+end
+ALLfixEffectNames = unique(ALLfixEffectNames);
+
+% Determine all available random effect parameters in the models
+ALLrandomEffectNames = {};
+for k=1:length(RESULTS),
+    if ~isempty(RESULTS(k).rawParameterInfo),
+        fek = RESULTS(k).rawParameterInfo.randomEffects.names;
+        ALLrandomEffectNames = [ALLrandomEffectNames fek];
+    end
+end
+ALLrandomEffectNames = unique(ALLrandomEffectNames);
+
+% Determine all available correlation parameters in the models
+ALLcorrelationNames = {};
+for k=1:length(RESULTS),
+    if ~isempty(RESULTS(k).rawParameterInfo),
+        fek = RESULTS(k).rawParameterInfo.correlation.names;
+        ALLcorrelationNames = [ALLcorrelationNames fek];
+    end
+end
+ALLcorrelationNames = unique(ALLcorrelationNames);
+
+% Determine all available covariate parameters in the models
+ALLcovariateNames = {};
+for k=1:length(RESULTS),
+    if ~isempty(RESULTS(k).rawParameterInfo),
+        fek = RESULTS(k).rawParameterInfo.covariate.names;
+        ALLcovariateNames = [ALLcovariateNames fek];
+    end
+end
+ALLcovariateNames = unique(ALLcovariateNames);
+
+% Determine all available covariate parameters in the models
+ALLerrorNames = {};
+for k=1:length(RESULTS),
+    if ~isempty(RESULTS(k).rawParameterInfo),
+        fek = RESULTS(k).rawParameterInfo.errorParameter.names;
+        ALLerrorNames = [ALLerrorNames fek];
+    end
+end
+ALLerrorNames = unique(ALLerrorNames);
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Calculate shrinkage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+[shOMEGAnames,sheta_shrinkage_percent] = IQMfitanalysisShrinkage(projectPath{1});
+
+% Need to order sheta_shrinkage_percent according to ALLrandomEffectNames
+eta_shrinkage_ordered = [];
+for k=1:length(ALLrandomEffectNames),
+    xxx = strrep(strrep(ALLrandomEffectNames{k},')',''),'omega(','');
+    % find index in ALLrandomEffectNames
+    ix = strmatchIQM(xxx,shOMEGAnames,'exact');
+    if isempty(ix),
+        error('Check!');
+    end
+    eta_shrinkage_ordered(k) = sheta_shrinkage_percent(ix);    
+end
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Create the table
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Retain last name of model only
+modelsNames_Short = {RESULTS.model};
+for k=1:length(modelsNames_Short),
+    [~,f,e] = fileparts(modelsNames_Short{k});
+    modelsNames_Short{k} = [f e];
+end
+    
+
+
+tableCell                               = {'<TT>' 'Population parameter estimates for considered model' '' '' '' ''};
+tableCell(end+1,:)                      = {'<TH>' 'Parameter' 'Value' 'RSE (%)' 'Transformation' 'Shrinkage (%)'};
+
+
+% FIXED EFFECTs - non-estimated get postfix (FIX).
+FLAG_FOOTER = 0;
+for k0=1:length(ALLfixEffectNames),
+    tableCell(end+1,1:2) = {'<TR>' ALLfixEffectNames{k0}};
+    for k=1:length(RESULTS),
+        % Check if parameter in model
+        ix = strmatchIQM(ALLfixEffectNames{k0},RESULTS(k).rawParameterInfo.fixedEffects.names,'exact');
+        if ~isempty(ix),
+            modelVALUES             = RESULTS(k).rawParameterInfo.fixedEffects.values(ix);
+            modelRSES               = RESULTS(k).rawParameterInfo.fixedEffects.rse(ix);
+            modelESTIMATED          = RESULTS(k).rawParameterInfo.fixedEffects.estimated(ix);
+            if modelESTIMATED,
+                value               = sprintf('%1.3g',modelVALUES);
+                if RESULTS(k).NONMEM,
+                    rse             = sprintf('%1.3g%%*',modelRSES);
+                    FLAG_FOOTER     = 1;
+                else
+                    rse             = sprintf('%1.3g%%',modelRSES);
+                end
+            else
+                if ~isnan(modelVALUES),
+                    value           = sprintf('%1.3g',modelVALUES);
+                    rse             = sprintf('(FIX)');
+                    valuerse        = sprintf('%s %s',postFillCharIQM(value,10,' '),postFillCharIQM(rse,14,' '));
+                else
+                    value           = NaN;
+                    rse             = NaN;
+                end
+            end
+            % Get MU referencing transformation of fixed effect
+            modelTRANS              = RESULTS(k).rawParameterInfo.fixedEffects.distribution_info{ix};
+            if strcmp(modelTRANS,'(psi)'),
+                modelTRANS = 'normal';
+            elseif strcmp(modelTRANS,'log(psi./(1-psi))'),
+                modelTRANS = 'logitnormal';
+            elseif strcmp(modelTRANS,'log(psi)'),
+                modelTRANS = 'lognormal';
+            else
+                error('Unknown transformation of fixed effect.');
+            end
+        else
+            valuerse = '-';
+            value = '-';
+            rse = '-';
+            modelTRANS = '-';
+        end
+        % Add to table
+        tableCell(end,2+k) = {value};
+        tableCell(end,2+k+1) = {rse};
+        tableCell(end,2+k+2) = {modelTRANS};
+    end
+end
+
+% % Add footer if needed
+% if FLAG_FOOTER,
+%     tableCell(end+1,1:2) = {'<TF>' '* Standard errors for NONMEM models approximated by sampling due to MU-Referencing'};    
+% end
+
+% Separator
+tableCell(end+1,1) = {'<TR>'};
+
+% RANDOM EFFECTs - non-estimated get postfix (FIX).
+for k0=1:length(ALLrandomEffectNames),
+    tableCell(end+1,1:2) = {'<TR>' ALLrandomEffectNames{k0}};
+    for k=1:length(RESULTS),
+        % Check if parameter in model
+        ix = strmatchIQM(ALLrandomEffectNames{k0},RESULTS(k).rawParameterInfo.randomEffects.names,'exact');
+        if ~isempty(ix),
+            modelVALUES             = RESULTS(k).rawParameterInfo.randomEffects.values(ix);
+            modelRSES               = RESULTS(k).rawParameterInfo.randomEffects.rse(ix);
+            modelESTIMATED          = RESULTS(k).rawParameterInfo.randomEffects.estimated(ix);
+            if modelESTIMATED==1,
+                value               = sprintf('%1.3g',modelVALUES);
+                rse                 = sprintf('%1.3g%%',modelRSES);
+                valuerse            = sprintf('%s %s',postFillCharIQM(value,10,' '),rse);
+            else
+                if ~isnan(modelVALUES),
+                    value           = sprintf('%1.3g',modelVALUES);
+                    rse             = sprintf('(FIX)',modelRSES);
+                    valuerse        = sprintf('%s %s',postFillCharIQM(value,10,' '),rse);
+                else
+                    value           = NaN;
+                    rse             = NaN;
+                end
+            end
+        else
+            value = '-';
+            rse = '-';
+        end
+        % Add to table
+        tableCell(end,2+k) = {value};
+        tableCell(end,2+k+1) = {rse};
+        % Add shrinkage
+        if isnan(eta_shrinkage_ordered(k0)),
+            tableCell(end,2+k+3) = {'-'};
+        else
+            tableCell{end,2+k+3} = round(eta_shrinkage_ordered(k0),1);
+        end        
+    end
+end
+      
+% Separator
+tableCell(end+1,1) = {'<TR>'};
+
+% CORRELATIONS - non-estimated get postfix (FIX).
+for k0=1:length(ALLcorrelationNames),
+    tableCell(end+1,1:2) = {'<TR>' ALLcorrelationNames{k0}};
+    for k=1:length(RESULTS),
+        % Check if parameter in model
+        ix = strmatchIQM(ALLcorrelationNames{k0},RESULTS(k).rawParameterInfo.correlation.names,'exact');
+        if ~isempty(ix),
+            modelVALUES             = RESULTS(k).rawParameterInfo.correlation.values(ix);
+            modelRSES               = RESULTS(k).rawParameterInfo.correlation.rse(ix);
+            modelESTIMATED          = RESULTS(k).rawParameterInfo.correlation.estimated(ix);
+            if modelESTIMATED,
+                value               = sprintf('%1.3g',modelVALUES);
+                rse                 = sprintf('%1.3g%%',modelRSES);
+                valuerse            = sprintf('%s %s',postFillCharIQM(value,10,' '),rse);
+            else
+                if ~isnan(modelVALUES),
+                    value           = sprintf('%1.3g',modelVALUES);
+                    rse             = sprintf('(FIX)',modelRSES);
+                    valuerse        = sprintf('%s %s',postFillCharIQM(value,10,' '),rse);
+                else
+                    value           = NaN;
+                    rse             = NaN;
+                end
+            end
+        else
+            value = '-';
+            rse = '-';
+        end
+        % Add to table
+        tableCell(end,2+k) = {value};
+        tableCell(end,2+k+1) = {rse};
+    end
+end
+      
+% Separator
+tableCell(end+1,1) = {'<TR>'};
+
+% COVARIATES - non-estimated get postfix (FIX).
+for k0=1:length(ALLcovariateNames),
+    tableCell(end+1,1:2) = {'<TR>' ALLcovariateNames{k0}};
+    for k=1:length(RESULTS),
+        % Check if parameter in model
+        ix = strmatchIQM(ALLcovariateNames{k0},RESULTS(k).rawParameterInfo.covariate.names,'exact');
+        if ~isempty(ix),
+            modelVALUES             = RESULTS(k).rawParameterInfo.covariate.values(ix);
+            modelRSES               = RESULTS(k).rawParameterInfo.covariate.rse(ix);
+            modelESTIMATED          = RESULTS(k).rawParameterInfo.covariate.estimated(ix);
+            if modelESTIMATED,
+                value               = sprintf('%1.3g',modelVALUES);
+                rse                 = sprintf('(%1.3g%%)',modelRSES);
+                valuerse            = sprintf('%s %s',postFillCharIQM(value,10,' '),postFillCharIQM(rse,14,' '));
+            else
+                if ~isnan(modelVALUES),
+                    value           = sprintf('%1.3g',modelVALUES);
+                    rse             = sprintf('(FIX)',modelRSES);
+                    valuerse        = sprintf('%s %s',postFillCharIQM(value,10,' '),postFillCharIQM(rse,14,' '));
+                else
+                    value           = NaN;
+                    rse             = NaN;
+                end
+            end
+            transinfo = getCovCatTransInfo(ALLcovariateNames{k0},RESULTS(k));
+            valuerse = sprintf('%s%s',valuerse,transinfo);
+        else
+            value = '-';
+            rse = '-';
+            transinfo = '-';
+        end
+        % Add to table
+        tableCell(end,2+k) = {value};
+        tableCell(end,2+k+1) = {rse};
+        tableCell(end,2+k+2) = {transinfo};
+    end
+end
+      
+% Separator
+tableCell(end+1,1) = {'<TR>'};
+
+% ERROR PARAMETERS - non-estimated get postfix (FIX).
+for k0=1:length(ALLerrorNames),
+    tableCell(end+1,1:2) = {'<TR>' ALLerrorNames{k0}};
+    for k=1:length(RESULTS),
+        % Check if parameter in model
+        ix = strmatchIQM(ALLerrorNames{k0},RESULTS(k).rawParameterInfo.errorParameter.names,'exact');
+        if ~isempty(ix),
+            modelVALUES             = RESULTS(k).rawParameterInfo.errorParameter.values(ix);
+            modelRSES               = RESULTS(k).rawParameterInfo.errorParameter.rse(ix);
+            modelESTIMATED          = RESULTS(k).rawParameterInfo.errorParameter.estimated(ix);
+            if modelESTIMATED,
+                value               = sprintf('%1.3g',modelVALUES);
+                rse                 = sprintf('(%1.3g%%)',modelRSES);
+                valuerse            = sprintf('%s %s',postFillCharIQM(value,10,' '),rse);
+            else
+                if ~isnan(modelVALUES),
+                    value           = sprintf('%1.3g',modelVALUES);
+                    rse             = sprintf('(FIX)',modelRSES);
+                    valuerse        = sprintf('%s %s',postFillCharIQM(value,10,' '),rse);
+                else
+                    value           = NaN;
+                    rse             = NaN;
+                end
+            end
+        else
+            value = '-';
+            rse = '-';
+        end
+        % Add to table
+        tableCell(end,2+k) = {value};
+        tableCell(end,2+k+1) = {rse};
+    end
+end
+      
+% Separator
+tableCell(end+1,1) = {'<TR>'};
+
+% OBJ, AIC, BIC
+tableCell(end+1,1:3) = {'<TR>' 'OBJ' round(RESULTS.OBJ,2)};
+tableCell(end+1,1:3) = {'<TR>' 'AIC' round(RESULTS.AIC,2)};
+tableCell(end+1,1:3) = {'<TR>' 'BIC' round(RESULTS.BIC,2)};
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Display results and save to file
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Convert to text and display text 
+textDisplay = IQMconvertCellTable2ReportTable(tableCell,'text');
+disp(textDisplay);
+
+% Convert to report text and export to file if filename defined
+IQMconvertCellTable2ReportTable(tableCell,'report',filename);     
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Function to generate transformation and reference value information for
+% covariates ...
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [transinfo] = getCovCatTransInfo(ALLcovariateNamesK0,RESULTS)
+COVNAMES            = RESULTS.projectHeader.COVNAMES;
+CATNAMES            = RESULTS.projectHeader.CATNAMES;
+BETACOVNAMES        = RESULTS.projectHeader.BETACOVNAMES;
+BETACOVTRANS        = RESULTS.projectHeader.BETACOVTRANS;
+BETACATNAMES        = RESULTS.projectHeader.BETACATNAMES;
+BETACATREFERENCE    = RESULTS.projectHeader.BETACATREFERENCE;
+
+% Process covariate name to get parameter and covariate name
+name    = strrep(ALLcovariateNamesK0,'beta_','');
+name    = strrep(name,')','');
+name    = strrep(name,'(',',');
+terms   = explodePCIQM(name);
+pn      = terms{1};
+cn      = terms{2};
+% Check if categorical or continuous
+ctypecont = NaN;
+ix = strmatchIQM(cn,COVNAMES,'exact');
+if ~isempty(ix),
+    ctypecont = 1;
+    cc = '';
+else
+    terms   = explodePCIQM(cn,'_');
+    cn = terms{1};
+    cc = terms{2};
+    ix = strmatchIQM(cn,CATNAMES,'exact');
+    if ~isempty(ix),
+        ctypecont = 0;
+    end
+end
+if isnan(ctypecont),
+    error('Difficulty to decide covariate type.');
+end
+% Handle continuous covariate
+if ctypecont,
+    % Only need to get the covariate transformation
+    ix = strmatchIQM(ALLcovariateNamesK0,BETACOVNAMES,'exact');
+    trans = BETACOVTRANS{ix};
+    trans = strrep(trans,'cov',cn);
+%     transinfo = strrep(sprintf('(%s)',trans),'.','');
+    transinfo = sprintf('%s',trans);
+else
+    % Need to get reference category
+    test = sprintf('beta_%s(%s)',pn,cn);
+    ix = strmatchIQM(test,BETACATNAMES,'exact');
+    trans = BETACATREFERENCE{ix};
+    transinfo = sprintf('Reference group: %s',trans);
+end
+return
diff --git a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcompareModels.m b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcompareModels.m
index 9e719ec..46b17f6 100644
--- a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcompareModels.m	
+++ b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcompareModels.m	
@@ -217,16 +217,16 @@ if ~isempty(data),
     for k=1:length(catNames),
         dataCAT.(catNames{k}) = firstRowData.(catNames{k});
     end
-    NdataSubjects = length(dataCOV);
+    NdataSubjects = height(dataCOV);
     sampleCovariateDosingIX = ceil(NdataSubjects*rand(1,Nsim));
     if ~isempty(dataCOV),
-        COVvaluesSampled = double(dataCOV(sampleCovariateDosingIX,:));
+        COVvaluesSampled = table2array(dataCOV(sampleCovariateDosingIX,:));
     else
         COVvaluesSampled = [];
         covNames = {};
     end
     if ~isempty(dataCAT),
-        CATvaluesSampled = double(dataCAT(sampleCovariateDosingIX,:));
+        CATvaluesSampled = table2array(dataCAT(sampleCovariateDosingIX,:));
     else
         CATvaluesSampled = [];
         catNames = {};
@@ -376,4 +376,4 @@ else
     axis([min(obsTimes) max(obsTimes) get(gca,'YLim')]);
 end
 
-legend(legendText,'Location','NorthWest','Interpreter','none');
\ No newline at end of file
+legend(legendText,'Location','Best','Interpreter','none');
\ No newline at end of file
diff --git a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcovariateAssessmentUncertainty.m b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcovariateAssessmentUncertainty.m
index 9c6e148..686278a 100644
--- a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcovariateAssessmentUncertainty.m	
+++ b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcovariateAssessmentUncertainty.m	
@@ -542,7 +542,7 @@ for k=1:length(covariateInfo.ParameterName),
         tableText{ixRow,ixCol} = sprintf('%1.4g / %1.4g / %1.4g**',quantileIQM(x,0.025),quantileIQM(x,0.5),quantileIQM(x,0.975));
     end
 end
-tableText(end+1,1:2) = {'<TF>' sprintf('*Parameter value and 95%% uncertainty range for reference subject.\n**Values have been normalized by the median of the non-normalized value (reference subject).')};
+tableText(end+1,1:2) = {'<TF>' sprintf('*Parameter value and 95 percent uncertainty range for reference subject.\n**Values have been normalized by the median of the non-normalized value (reference subject).')};
 
 % Convert to text and display text 
 textDisplay = IQMconvertCellTable2ReportTable(tableText,'text');
diff --git a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPC.m b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPC.m
index af69eab..487dc8c 100644
--- a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPC.m	
+++ b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPC.m	
@@ -164,6 +164,21 @@ if ischar(data),
     data = IQMloadCSVdataset(data);
 end
 
+% Check if ADDL present and used - in this case: error
+showErrorADDL = 0;
+try
+    ADDL = data.ADDL;
+    % ADDL exists
+    if sum(ADDL>0) ~= 0,
+        showErrorADDL = 1;
+    end        
+catch
+    % ADDL does not exist - fine :) - so it does not need to be checked
+end
+if showErrorADDL,
+    error('ADDL column in dataset used to define additional doses. This is not handled in the VPC function.');
+end
+
 if ischar(userDosing),
     userDosing = IQMdosing(userDosing);
 end
diff --git a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPCstratified.m b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPCstratified.m
index 554f816..b5bb373 100644
--- a/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPCstratified.m	
+++ b/IQM Tools/IQMpro/tools/09-NLMEtools/IQMcreateVPCstratified.m	
@@ -129,6 +129,21 @@ if ischar(model),
     model = IQMmodel(model);
 end
 
+% Check if ADDL present and used - in this case: error
+showErrorADDL = 0;
+try
+    ADDL = data.ADDL;
+    % ADDL exists
+    if sum(ADDL>0) ~= 0,
+        showErrorADDL = 1;
+    end        
+catch
+    % ADDL does not exist - fine :) - so it does not need to be checked
+end
+if showErrorADDL,
+    error('ADDL column in dataset used to define additional doses. This is not handled in the VPC function.');
+end
+
 % Check GROUP
 checkDataColumnsIQM(data,GROUP);
 
diff --git a/IQM Tools/IQMpro/tools/14-GeneralLinearNLMEmodel/auxiliary/NONMEM/createGeneralLinear_NONMEMprojectIQM.m b/IQM Tools/IQMpro/tools/14-GeneralLinearNLMEmodel/auxiliary/NONMEM/createGeneralLinear_NONMEMprojectIQM.m
index c511f80..ddbc6ee 100644
--- a/IQM Tools/IQMpro/tools/14-GeneralLinearNLMEmodel/auxiliary/NONMEM/createGeneralLinear_NONMEMprojectIQM.m	
+++ b/IQM Tools/IQMpro/tools/14-GeneralLinearNLMEmodel/auxiliary/NONMEM/createGeneralLinear_NONMEMprojectIQM.m	
@@ -246,7 +246,7 @@ try IIVvalues0                      = options.IIVvalues0;
 try errorModels                     = options.errorModels;                      catch, errorModels = '';                             end
 try errorParam0                     = options.errorParam0;                      catch, errorParam0 = [];                             end
 try covarianceModel                 = options.covarianceModel;                  catch, covarianceModel = 'diagonal';                 end
-try covariateModel                  = options.covariateModel;                   catch, covariateModel = '';                          end
+try covariateModel                  = options.covariateModel;                   catch, covariateModel = ''; options.covariateModel = '';  end
 try covariateModelValues            = options.covariateModelValues;             catch, covariateModelValues = {};                    end
 try COVestimate                     = options.COVestimate;                      catch, COVestimate = {};                             end
 
@@ -1850,7 +1850,7 @@ COVARIATENAMES_info = sprintf('; COVARIATENAMES      = ''%s''\r\n',x(1:end-1));
 PROJECT_INFO_TEXT = sprintf('%s%s',PROJECT_INFO_TEXT,COVARIATENAMES_info);
 
 % COVARIATESUSED
-COVARIATESUSED = setdiff(explodePCIQM(strrep(strrep(covariateModel,'{',''),'}','')),parameterNames);
+COVARIATESUSED = setdiff(explodePCIQM(strrep(strrep(options.covariateModel,'{',''),'}','')),parameterNames);
 x = sprintf('%s,',COVARIATESUSED{:});
 COVARIATESUSED_info = sprintf('; COVARIATESUSED      = ''%s''\r\n',x(1:end-1));
 PROJECT_INFO_TEXT = sprintf('%s%s',PROJECT_INFO_TEXT,COVARIATESUSED_info);
-- 
GitLab